Wiktionary thwiktionary https://th.wiktionary.org/wiki/%E0%B8%A7%E0%B8%B4%E0%B8%81%E0%B8%B4%E0%B8%9E%E0%B8%88%E0%B8%99%E0%B8%B2%E0%B8%99%E0%B8%B8%E0%B8%81%E0%B8%A3%E0%B8%A1:%E0%B8%AB%E0%B8%99%E0%B9%89%E0%B8%B2%E0%B8%AB%E0%B8%A5%E0%B8%B1%E0%B8%81 MediaWiki 1.47.0-wmf.3 case-sensitive สื่อ พิเศษ พูดคุย ผู้ใช้ คุยกับผู้ใช้ วิกิพจนานุกรม คุยเรื่องวิกิพจนานุกรม ไฟล์ คุยเรื่องไฟล์ มีเดียวิกิ คุยเรื่องมีเดียวิกิ แม่แบบ คุยเรื่องแม่แบบ วิธีใช้ คุยเรื่องวิธีใช้ หมวดหมู่ คุยเรื่องหมวดหมู่ ภาคผนวก คุยเรื่องภาคผนวก ดัชนี คุยเรื่องดัชนี สัมผัส คุยเรื่องสัมผัส อรรถาภิธาน คุยเรื่องอรรถาภิธาน TimedText TimedText talk มอดูล คุยเรื่องมอดูล Event Event talk ลาว 0 2455 5723248 5723231 2026-05-20T03:29:42Z OctraBot 3198 /* คำแปลภาษาอื่น */ 5723248 wikitext text/x-wiki == ภาษาไทย == {{wp|ประเทศลาว}} [[File:Laos in its region.svg|thumb|ประเทศลาว]] [[File:Flag of Laos.svg|thumb|ธงชาติของประเทศลาว]] === รากศัพท์ === {{unc|th}}; เทียบ{{cog|okz|lahv}}, {{m|okz|lāhv}}, {{m|okz|lāhva}}, {{cog|nod|ᩃᩣ᩠ᩅ}}, {{cog|lo|ລາວ}}, {{cog|khb|ᦟᦱᧁ}}; เป็นไปได้ว่าเกี่ยวข้องกับ{{cog|nod|ᩉᩖᩮᩢ᩵ᩣ}}, {{m|nod|ᩃᩮᩢᩣ}}, {{cog|twh|ꪹꪩꪱ}}, {{cog|th|ละว้า}}, {{m|th|ลัวะ}}<ref>[https://www.silpa-mag.com/history/article_41815 คำว่า “ลาว” มาจากไหน? “คนเมือง” ภาคเหนือ-ล้านนา ถูกเรียกว่าลาวก่อนคนอีสาน-สปป.ลาว?]</ref> === การออกเสียง === {{th-pron}} === คำวิสามานยนาม === {{th-proper noun}} # <!--{{lang|th|([[ประเทศ]]~, [[เมือง]]~)}}--> {{senseid|th|Q819}}{{place|th|ประเทศ|r/เอเชียตะวันออกเฉียงใต้|capital=เวียงจันทน์|official=สาธารณรัฐประชาธิปไตยประชาชนลาว}} # {{lang|th|([[ภาษา]]~)}} ภาษาทางการของประเทศลาว ==== คำแปลภาษาอื่น ==== {{trans-top|id=Q819|ประเทศในเอเชียตะวันออกเฉียงใต้}} * กรีก: {{t+|el|Λάος|n}} * กาตาลา: {{t+|ca|Laos|m}} * เกาหลี: {{t+|ko|^라오스}} * เขมร: {{t+|km|លាវ}}, {{t+|km|ឡាវ}} * คาซัค: {{t+|kk|Лаос}} * คำเมือง: {{t|nod|ᩃᩣ᩠ᩅ}} * คีร์กีซ: {{t+|ky|Лаос}} * เคิร์ด: *: เคิร์ดเหนือ: {{t+|kmr|Laos}} * จ้วง: {{t|za|Laujvoh}} * จอร์เจีย: {{t+|ka|ლაოსი}} * จีน: *: จีนกลาง: {{t+|cmn|老撾}}, {{t+|cmn|寮國}} {{qualifier|ไต้หวัน}} * เช็ก: {{t+|cs|Laos|m}} * เซอร์โบ-โครเอเชีย: *: อักษรซีริลลิก: {{t|sh|Ла̏ос|m}} *: อักษรละติน: {{t|sh|Lȁos|m}} * ญี่ปุ่น: {{t+|ja|ラオス|tr=Raosu}} * ดัตช์: {{t+|nl|Laos|n}} * เดนมาร์ก: {{t|da|Laos|n}} * ตากาล็อก: {{t+|tl|Laos}} * ตาตาร์: {{t|tt|Лаос}} * ตาตาร์แบบไครเมีย: {{t|crh|Laos}} *: ตาตาร์แบบโดบรูจา: {{t|crh|Law}} * ตุรกี: {{t+|tr|Laos}} * เตตุน: {{t|tet|Laos}} * เตลูกู: {{t+|te|లావోస్}} * เติร์กเมน: {{t|tk|Laos}} * ทาจิก: {{t+|tg|Лаос}} * ทิเบต: {{t|bo|ལའོ་སུ}} * ไทลื้อ: {{t|khb|ᦟᦱᧁ}} * ไทใหญ่: {{t|shn|လၢဝ်း}}, {{t|shn|ယူၼ်း}} * นอร์มัน: {{t|nrf|Laos|m}} * นอร์เวย์: *: นอร์เวย์แบบบุ๊กมอล: {{t+|nb|Laos|n}} *: นอร์เวย์แบบนือนอสก์: {{t+|nn|Laos|n}} * นาวาโฮ: {{t|nv|Lááʼos}} * เนปาล: {{t|ne|लाओस}} * บัลแกเรีย: {{t+|bg|Лао́с|m}} * เบงกอล: {{t+|bn|লাওস}} * เบรอตง: {{t|br|Laos}} * เบลารุส: {{t|be|Лао́с|m}} * แบชเคียร์: {{t|ba|Лаос}} * ปาทาน: {{t|ps|لاوس|m|tr=lāwos}} * เปอร์เซีย: *: ดารี: {{t|prs|لَائوس}} *: เปอร์เซียแบบอิหร่าน: {{t+|fa-ira|لائوس}} * โปรตุเกส: {{t+|pt|Laos}} * โปแลนด์: {{t+|pl|Laos|m-in}} * ฝรั่งเศส: {{t+|fr|Laos|m}} * พม่า: {{t|my|လာအို}} * ฟราฟรา: {{t|gur|Laogo}} * ฟินแลนด์: {{t+|fi|Laos}} * แฟโร: {{t|fo|Laos|n}} * ม้ง: *: ม้งเขียว: {{t|hnj|Los Tsuas}}, {{t|hnj|Nplog Teb}} {{qualifier|ไม่ทางการ}} *: ม้งขาว: {{t|mww|Los Tsuas}}, {{t|mww|Nplog Teb}} {{qualifier|ไม่ทางการ}} * มองโกเลีย: *: อักษรซีริลลิก: {{t+|mn|Лаос}} *: อักษรมองโกเลีย: {{t|mn|ᠯᠠᠣᠰ}} * มอลตา: {{t+|mt|Laos}} * มัลดีฟส์: {{t|dv|ލާއޯސް}} * มาซิโดเนีย: {{t+|mk|Лаос|m}} * มาเลเซีย: {{t+|ms|Laos}} * มาวรี: {{t+|mi|Rāoho}} * ยิดดิช: {{t|yi|לאַאָס|n}} * ยูเครน: {{t+|uk|Лао́с|m}} * เยอรมัน: {{t+|de|Laos|n}} * โยรูบา: {{t|yo|Laosi}} * รัสเซีย: {{t+|ru|Лао́с|m}} * โรมาเนีย: {{t+|ro|Laos|n}} * ลัตเวีย: {{t+|lv|Laosa|f}} * ลาว: {{t+|lo|ລາວ}} * ลิทัวเนีย: {{t+|lt|Laosas|m}} * เวียดนาม: {{t+|vi|Lào}}, {{t|vi|[[nước]] [[Lào]]}} * สกอต: {{t|sco|Laos}} * สเปน: {{t+|es|Laos}} * สโลวัก: {{t+|sk|Laos|m}} * สโลวีเนีย: {{t+|sl|Laos|m}} * สวาฮีลี: {{t|sw|Laos}} * สวีเดน: {{t+|sv|Laos|n}} * สันถาลี: {{t|sat|ᱞᱟᱣᱚᱥ}} * สิงหล: {{t|si|ලාඕසය}} * อังกฤษ: {{t+|en|Laos}} * อับคาเซีย: {{t|ab|Лаос}} * อัมฮารา: {{t|am|ላዎስ}} * อัสตูเรียส: {{t+|ast|Laos}} * อัสสัม: {{t|as|লাউচ}} * อาเซอร์ไบจาน: {{t+|az|Laos}} * อาฟรีกานส์: {{t|af|Laos}} * อาร์มีเนีย: {{t+|hy|Լաոս}} * อารามายา: *: อารามายาใหม่แบบอัสซีเรีย: {{t|aii|ܠܵܘܣ|f|tr=laws}} * อาหรับ: {{t|ar|لَاوْس|f}}, {{t|ar|لَاوُس|f|tr=lāwos}} * อิตาลี: {{t+|it|Laos|m}} * อินโดนีเซีย: {{t+|id|Laos}} * อินเทอร์ลิงกวา: {{t|ia|Laos}} * อีโด: {{t+|io|Laos}} * อุซเบก: {{t+|uz|Laos}} * อุยกูร์: {{t|ug|لائوس}} * อูรดู: {{t|ur|لاؤس|m}} * เอสโตเนีย: {{t+|et|Laos}} * เอสเปรันโต: {{t+|eo|Laoso}} * แอลเบเนีย: {{t|sq|Laos|m}} {{qualifier|ไม่ชี้เฉพาะ}}, {{t+|sq|Laosi|m}} {{qualifier|ชี้เฉพาะ}} * ไอซ์แลนด์: {{t+|is|Laos|n}} * ไอริช: {{t|ga|Laos|m}} * ฮังการี: {{t+|hu|Laosz}} * ฮินดี: {{t+|hi|लाओस|m}} * ฮีบรู: {{t|he|לָאוֹס|f|tr=laos}} * เฮาซา: {{t|ha|Laos}} {{trans-bottom}} === คำนาม === {{th-noun|คน}} # {{lang|th|([[คน]]~, [[ชาว]]~)}} บุคคลที่เกิดหรือโตในประเทศลาว #: {{syn|th|มลาว}} ==== คำแปลภาษาอื่น ==== {{trans-top|คนลาว}} * ดัตช์: {{t+|nl|Laotiaan|m|tr=ลาโอชีอาน}}, {{t+|nl|Laotiaanse|f|tr=ลาโอชีอานเซอ}} * ฝรั่งเศส: {{t+|fr|Laotien|m|tr=ลาออซีแย็ง}}, {{t+|fr|Laotienne|f|tr=ลาออซีแยน}} * สเปน: {{t+|es|laosiano|m|tr=ลาโอซีอาโน}}, {{t+|es|laosiana|f|tr=ลาโอซีอานา}} * ลาว: {{t+|lo|ລາວ}} * อังกฤษ: {{t+|en|Lao|tr=ลาว}}, {{t+|en|Laotian|tr=เลโอฌัน}} {{trans-bottom}} === อ้างอิง === {{รายการอ้างอิง}} {{topics|th|ประเทศ}} == ภาษาอีสาน == === การออกเสียง === * {{IPA|tts|/laːw˧˦˩/|a=ขอนแก่น}} * {{IPA|tts|[laːw˧˥]|a=หนองคาย}} * {{คำอ่านไทย|ล่าว<sup>สูง-ตก</sup>}} (ประมาณ) === คำวิสามานยนาม === {{head|tts|คำวิสามานยนาม}} # [[ลาว#ภาษาไทย|ลาว]] === คำนาม === {{tts-noun}} # [[ลาว#ภาษาไทย|ลาว]] === คำสรรพนาม === {{tts-pronoun}} # [[เขา]] {{gl|คำสรรพนามบุรุษที่ 3}} === อ้างอิง === {{รายการอ้างอิง}} * พิณทอง, ป. ''"ลาว" ภาษาอีสาน''. อีสานร้อยแปด. https://esan108.com/dict/view/ลาว * อีสานร้อยแปด , [https://esan108.com/%e0%b8%a0%e0%b8%b2%e0%b8%a9%e0%b8%b2%e0%b8%a5%e0%b8%b2%e0%b8%a7.html ภาษาลาว น่ารัก ๆ] pxl8lotan328kfhygpdvgukx2fyid5w 5723249 5723248 2026-05-20T03:30:23Z OctraBot 3198 /* คำแปลภาษาอื่น */ 5723249 wikitext text/x-wiki == ภาษาไทย == {{wp|ประเทศลาว}} [[File:Laos in its region.svg|thumb|ประเทศลาว]] [[File:Flag of Laos.svg|thumb|ธงชาติของประเทศลาว]] === รากศัพท์ === {{unc|th}}; เทียบ{{cog|okz|lahv}}, {{m|okz|lāhv}}, {{m|okz|lāhva}}, {{cog|nod|ᩃᩣ᩠ᩅ}}, {{cog|lo|ລາວ}}, {{cog|khb|ᦟᦱᧁ}}; เป็นไปได้ว่าเกี่ยวข้องกับ{{cog|nod|ᩉᩖᩮᩢ᩵ᩣ}}, {{m|nod|ᩃᩮᩢᩣ}}, {{cog|twh|ꪹꪩꪱ}}, {{cog|th|ละว้า}}, {{m|th|ลัวะ}}<ref>[https://www.silpa-mag.com/history/article_41815 คำว่า “ลาว” มาจากไหน? “คนเมือง” ภาคเหนือ-ล้านนา ถูกเรียกว่าลาวก่อนคนอีสาน-สปป.ลาว?]</ref> === การออกเสียง === {{th-pron}} === คำวิสามานยนาม === {{th-proper noun}} # <!--{{lang|th|([[ประเทศ]]~, [[เมือง]]~)}}--> {{senseid|th|Q819}}{{place|th|ประเทศ|r/เอเชียตะวันออกเฉียงใต้|capital=เวียงจันทน์|official=สาธารณรัฐประชาธิปไตยประชาชนลาว}} # {{lang|th|([[ภาษา]]~)}} ภาษาทางการของประเทศลาว ==== คำแปลภาษาอื่น ==== {{trans-top|id=Q819|ประเทศในเอเชียตะวันออกเฉียงใต้}} * กรีก: {{t+|el|Λάος|n}} * กาตาลา: {{t+|ca|Laos|m}} * เกาหลี: {{t+|ko|^라오스}} * เขมร: {{t+|km|លាវ}}, {{t+|km|ឡាវ}} * คาซัค: {{t+|kk|Лаос}} * คำเมือง: {{t|nod|ᩃᩣ᩠ᩅ}} * คีร์กีซ: {{t+|ky|Лаос}} * เคิร์ด: *: เคิร์ดเหนือ: {{t+|kmr|Laos}} * จ้วง: {{t|za|Laujvoh}} * จอร์เจีย: {{t+|ka|ლაოსი}} * จีน: *: จีนกลาง: {{t+|cmn|老撾}}, {{t+|cmn|寮國}} {{qualifier|ไต้หวัน}} * เช็ก: {{t+|cs|Laos|m}} * เซอร์โบ-โครเอเชีย: *: อักษรซีริลลิก: {{t|sh|Ла̏ос|m}} *: อักษรละติน: {{t|sh|Lȁos|m}} * ญี่ปุ่น: {{t+|ja|ラオス|tr=Raosu}} * ดัตช์: {{t+|nl|Laos|n}} * เดนมาร์ก: {{t|da|Laos|n}} * ตากาล็อก: {{t+|tl|Laos}} * ตาตาร์: {{t|tt|Лаос}} * ตาตาร์แบบไครเมีย: {{t|crh|Laos}} *: ตาตาร์แบบโดบรูจา: {{t|crh|Law}} * ตุรกี: {{t+|tr|Laos}} * เตตุน: {{t|tet|Laos}} * เตลูกู: {{t+|te|లావోస్}} * เติร์กเมน: {{t|tk|Laos}} * ทาจิก: {{t+|tg|Лаос}} * ทิเบต: {{t|bo|ལའོ་སུ}} * ไทลื้อ: {{t|khb|ᦟᦱᧁ}} * ไทใหญ่: {{t|shn|လၢဝ်း}}, {{t|shn|ယူၼ်း}} * นอร์มัน: {{t|nrf|Laos|m}} * นอร์เวย์: *: นอร์เวย์แบบบุ๊กมอล: {{t+|nb|Laos|n}} *: นอร์เวย์แบบนือนอสก์: {{t+|nn|Laos|n}} * นาวาโฮ: {{t|nv|Lááʼos}} * เนปาล: {{t|ne|लाओस}} * บัลแกเรีย: {{t+|bg|Лао́с|m}} * เบงกอล: {{t+|bn|লাওস}} * เบรอตง: {{t|br|Laos}} * เบลารุส: {{t|be|Лао́с|m}} * แบชเคียร์: {{t|ba|Лаос}} * ปาทาน: {{t|ps|لاوس|m|tr=lāwos}} * เปอร์เซีย: *: ดารี: {{t|prs|لَائوس}} *: เปอร์เซียแบบอิหร่าน: {{t+|fa-ira|لائوس}} * โปรตุเกส: {{t+|pt|Laos}} * โปแลนด์: {{t+|pl|Laos|m-in}} * ฝรั่งเศส: {{t+|fr|Laos|m}} * พม่า: {{t|my|လာအို}} * ฟราฟรา: {{t|gur|Laogo}} * ฟินแลนด์: {{t+|fi|Laos}} * แฟโร: {{t|fo|Laos|n}} * ม้ง: *: ม้งเขียว: {{t|hnj|Los Tsuas}}, {{t|hnj|Nplog Teb}} {{qualifier|ไม่ทางการ}} *: ม้งขาว: {{t|mww|Los Tsuas}}, {{t|mww|Nplog Teb}} {{qualifier|ไม่ทางการ}} * มองโกเลีย: *: อักษรซีริลลิก: {{t+|mn|Лаос}} *: อักษรมองโกเลีย: {{t|mn|ᠯᠠᠣᠰ}} * มอลตา: {{t+|mt|Laos}} * มัลดีฟส์: {{t|dv|ލާއޯސް}} * มาซิโดเนีย: {{t+|mk|Лаос|m}} * มาเลเซีย: {{t+|ms|Laos}} * มาวรี: {{t+|mi|Rāoho}} * ยิดดิช: {{t|yi|לאַאָס|n}} * ยูเครน: {{t+|uk|Лао́с|m}} * เยอรมัน: {{t+|de|Laos|n}} * โยรูบา: {{t|yo|Laosi}} * รัสเซีย: {{t+|ru|Лао́с|m}} * โรมาเนีย: {{t+|ro|Laos|n}} * ลัตเวีย: {{t+|lv|Laosa|f}} * ลาว: {{t+|lo|ລາວ}} * ลิทัวเนีย: {{t+|lt|Laosas|m}} * เวียดนาม: {{t+|vi|Lào}}, {{t|vi|[[nước]] [[Lào]]}} * สกอต: {{t|sco|Laos}} * สเปน: {{t+|es|Laos}} * สโลวัก: {{t+|sk|Laos|m}} * สโลวีเนีย: {{t+|sl|Laos|m}} * สวาฮีลี: {{t|sw|Laos}} * สวีเดน: {{t+|sv|Laos|n}} * สันถาลี: {{t|sat|ᱞᱟᱣᱚᱥ}} * สิงหล: {{t|si|ලාඕසය}} * อังกฤษ: {{t+|en|Laos}} * อับคาเซีย: {{t|ab|Лаос}} * อัมฮารา: {{t|am|ላዎስ}} * อัสตูเรียส: {{t+|ast|Laos}} * อัสสัม: {{t|as|লাউচ}} * อาเซอร์ไบจาน: {{t+|az|Laos}} * อาฟรีกานส์: {{t|af|Laos}} * อาร์มีเนีย: {{t+|hy|Լաոս}} * อารามายา: *: อารามายาใหม่แบบอัสซีเรีย: {{t|aii|ܠܵܘܣ|f|tr=laws}} * อาหรับ: {{t|ar|لَاوْس|f}}, {{t|ar|لَاوُس|f|tr=lāwos}} * อิตาลี: {{t+|it|Laos|m}} * อินโดนีเซีย: {{t+|id|Laos}} * อินเทอร์ลิงกวา: {{t|ia|Laos}} * อีโด: {{t+|io|Laos}} * อุซเบก: {{t+|uz|Laos}} * อุยกูร์: {{t|ug|لائوس}} * อูรดู: {{t|ur|لاؤس|m}} * เอสโตเนีย: {{t+|et|Laos}} * เอสเปรันโต: {{t+|eo|Laoso}} * แอลเบเนีย: {{t|sq|Laos|m}} {{qualifier|ไม่ชี้เฉพาะ}}, {{t+|sq|Laosi|m}} {{qualifier|ชี้เฉพาะ}} * ไอซ์แลนด์: {{t+|is|Laos|n}} * ไอริช: {{t|ga|Laos|m}} * ฮังการี: {{t+|hu|Laosz}} * ฮินดี: {{t+|hi|लाओस|m}} * ฮีบรู: {{t|he|לָאוֹס|f|tr=laos}} * เฮาซา: {{t|ha|Laos}} {{trans-bottom}} {{trans-top|ภาษาลาว}} * ลาว: {{t+|lo|ລາວ}} * อังกฤษ: {{t+|en|Lao}} {{trans-bottom}} === คำนาม === {{th-noun|คน}} # {{lang|th|([[คน]]~, [[ชาว]]~)}} บุคคลที่เกิดหรือโตในประเทศลาว #: {{syn|th|มลาว}} ==== คำแปลภาษาอื่น ==== {{trans-top|คนลาว}} * ดัตช์: {{t+|nl|Laotiaan|m|tr=ลาโอชีอาน}}, {{t+|nl|Laotiaanse|f|tr=ลาโอชีอานเซอ}} * ฝรั่งเศส: {{t+|fr|Laotien|m|tr=ลาออซีแย็ง}}, {{t+|fr|Laotienne|f|tr=ลาออซีแยน}} * สเปน: {{t+|es|laosiano|m|tr=ลาโอซีอาโน}}, {{t+|es|laosiana|f|tr=ลาโอซีอานา}} * ลาว: {{t+|lo|ລາວ}} * อังกฤษ: {{t+|en|Lao|tr=ลาว}}, {{t+|en|Laotian|tr=เลโอฌัน}} {{trans-bottom}} === อ้างอิง === {{รายการอ้างอิง}} {{topics|th|ประเทศ}} == ภาษาอีสาน == === การออกเสียง === * {{IPA|tts|/laːw˧˦˩/|a=ขอนแก่น}} * {{IPA|tts|[laːw˧˥]|a=หนองคาย}} * {{คำอ่านไทย|ล่าว<sup>สูง-ตก</sup>}} (ประมาณ) === คำวิสามานยนาม === {{head|tts|คำวิสามานยนาม}} # [[ลาว#ภาษาไทย|ลาว]] === คำนาม === {{tts-noun}} # [[ลาว#ภาษาไทย|ลาว]] === คำสรรพนาม === {{tts-pronoun}} # [[เขา]] {{gl|คำสรรพนามบุรุษที่ 3}} === อ้างอิง === {{รายการอ้างอิง}} * พิณทอง, ป. ''"ลาว" ภาษาอีสาน''. อีสานร้อยแปด. https://esan108.com/dict/view/ลาว * อีสานร้อยแปด , [https://esan108.com/%e0%b8%a0%e0%b8%b2%e0%b8%a9%e0%b8%b2%e0%b8%a5%e0%b8%b2%e0%b8%a7.html ภาษาลาว น่ารัก ๆ] 3qus5l0qmopduuaohw9kyqcg473s8nf crayon 0 4308 5723265 1997586 2026-05-20T04:00:30Z InternetArchiveBot 12208 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 5723265 wikitext text/x-wiki == ภาษาอังกฤษ == [[File:Crayola 24pack 2005.jpg|thumb|Wax crayons.]] === การออกเสียง === * {{enPR|krāʹän}} * {{IPA|en|/ˈkɹeɪ.ən/|/ˈkɹeɪ.ɒ̃/|a=UK}}<!--[ˈkʰɹeən]?--> * {{IPA|en|/ˈkɹeɪ.ɒn/|[ˈkʰɹeɪ.ɑn]|a=US}}; ''also'' {{IPAchar|/ˈkɹeɪ.ɔn/|lang=en}} {{qualifier|the most common pronunciations, used by 83% of Americans}}<ref name="Harvard Dialect Survey">[https://web.archive.org/web/20200515154334/http://www4.uwm.edu/FLL/linguistics/dialect/staticmaps/q_9.html Harvard Dialect Survey]</ref> * {{IPA|en|/ˈkɹæn/|[ˈkɹeən]|a=US,uncommon,especially Northeastern US,Midwestern US}}<ref name="Harvard Dialect Survey"/> * {{a|US|rare|especially Philadelphia|New Jersey|sometimes Southern US}} {{IPA|en|/ˈkɹaʊn/|[ˈkɹɛɔn]|[ˈkɹæɔn]}}<ref name="Harvard Dialect Survey"/> * {{rhymes|en|aʊn}} === คำนาม === {{en-noun}} # [[ดินสอสี]] # [[สีเทียน]] # [[ชอล์กสี]] === อ่านเพิ่ม === * {{pedia}} === อ้างอิง === <references/> == ภาษาฝรั่งเศส == ===การออกเสียง=== * {{audio|fr|Fr-crayon.ogg}} === คำนาม === {{fr-noun|m}} # [[ดินสอ]] 4h02hkyn1dztuomzt6u4eqlriza5bvo मुहब्बत 0 6400 5723233 795280 2026-05-20T00:23:02Z OctraBot 3198 เก็บกวาด 5723233 wikitext text/x-wiki == ภาษาฮินดี == === รูปแบบอื่น === * {{alter|hi|मोहब्बत}} === รากศัพท์ === {{root|hi|ar|ح ب ب}} {{bor+|hi|fa-cls|محبت|tr=muhabbat}}, จาก{{der|hi|ar|مَحَبَّة||ความชอบ}} === การออกเสียง === * {{hi-IPA}} === คำนาม === {{hi-noun|f|ur=محبت}} # [[ความรัก]] # [[ความชอบ]] ==== การผันรูป ==== {{hi-ndecl|<F>}} ==== คำพ้องความ ==== * {{l|hi|इश्क़}} * {{l|hi|प्रेम}} * {{l|hi|प्यार}} === อ้างอิง === * {{R:hi:McGregor}} * {{R:Platts}} aphj8vks97f4nxu4rs3d8xw7w7gm8d2 Lào 0 13399 5723299 1916133 2026-05-20T06:59:07Z OctraBot 3198 /* ภาษาเวียดนาม */ เก็บกวาด 5723299 wikitext text/x-wiki {{also/auto}} == ภาษาเวียดนาม == {{wp|vi:}} === รากศัพท์ === {{bor+|vi|lo|ລາວ}} === การออกเสียง === {{vi-IPA}} === คำวิสามานยนาม === {{vi-propn|[[牢]], [[𦰤]]}} # {{vi-type|nước}} {{tcl|vi|ลาว|id=Q819}} #: {{ux|vi|Nước '''Lào''' là nước nào?|Which country is Laos?}} ==== ดูเพิ่ม ==== {{col|vi|tông lào|dép lào|thuốc lào|Đông Lào}} ==== ดูเพิ่ม ==== {{list:countries in Asia/vi}} === คำสลับอักษร === * {{anagrams|vi|loà}} a0xranv6za5wpfgaw8ovdswvzimlbzw لاوس 0 13418 5723264 1916236 2026-05-20T03:57:02Z OctraBot 3198 /* ภาษาอาหรับ */ เก็บกวาด 5723264 wikitext text/x-wiki == ภาษาอาหรับ == {{wp|ar:}} === รากศัพท์ === {{bor+|ar|fr|Laos}} === การออกเสียง === {{ar-pr|لَاوْس,lāwos}} === คำวิสามานยนาม === {{ar-proper noun|لَاوْس,لَاوُس|f}} # {{tcl|ar|ลาว|id=Q819}} ==== คำเกี่ยวข้อง ==== * {{l|ar|لَاوْسِيّ}} * {{l|ar|لَاوُسِيّ}} 2jthmjpcxmbb7vaz7jw8ovlujf7vm0j לאוס 0 13435 5723304 1272329 2026-05-20T07:01:44Z OctraBot 3198 /* ภาษาฮีบรู */ เก็บกวาด 5723304 wikitext text/x-wiki == ภาษาฮีบรู == {{wp|he:}} === การออกเสียง === * {{IPA|he|/ˈlaʔos/|a=IL}} * {{audio|he|LL-Q9288 (heb)-Buffer-לאוס.wav}} === คำวิสามานยนาม === {{he-proper noun|wv=לָאוֹס}} # {{tcl|he|ลาว|id=Q819}} hi2sayzhzofznnscps6d4x8yxlouvnk लाओस 0 13462 5723262 1913647 2026-05-20T03:52:54Z OctraBot 3198 /* ภาษาฮินดี */ เก็บกวาด 5723262 wikitext text/x-wiki == ภาษาฮินดี == {{wp|hi:}} === รากศัพท์ === {{bor+|hi|en|Laos}}, จาก{{der|hi|fr|Laos}}, จาก{{der|hi|lo|ລາວ}} === การออกเสียง === * {{hi-IPA}} === คำวิสามานยนาม === {{hi-proper noun|m|ur=لاؤس}} # {{tcl|hi|ลาว|id=Q819}} ==== การผันรูป ==== {{hi-ndecl|<M.sg>}} ==== ลูกคำ ==== * {{l|hi|लाओसी}} ==== ดูเพิ่ม ==== {{list:countries in Asia/hi}} === คำวิสามานยนาม === {{hi-proper noun|f|ur=لاؤس}} # [[ภาษาลาว]] ==== การผันรูป ==== {{hi-ndecl|<F.sg>}} {{topics|hi|ชื่อภาษา}} eal8bd5gmzfj7qlsddr03zxpi8jsuhe 라오스 0 13495 5723250 1434614 2026-05-20T03:32:04Z OctraBot 3198 เก็บกวาด 5723250 wikitext text/x-wiki == ภาษาเกาหลี == === การออกเสียง === {{ko-IPA|cap=y}} === คำวิสามานยนาม === {{ko-pos|proper noun}} # {{tcl|ko|ลาว|id=Q819}} ==== Coordinate terms ==== {{list:countries in Asia/ko}} 3smqywfykx33mwvyqmj5w5c9zk9uil7 ラオス 0 13543 5723255 2234333 2026-05-20T03:42:28Z OctraBot 3198 /* ภาษาญี่ปุ่น */ เก็บกวาด 5723255 wikitext text/x-wiki == ภาษาญี่ปุ่น == {{ja-kanjitab|alt=羅宇:dated,老檛:เลิกใช้}} {{swp|ja:}} === การออกเสียง === {{ja-pron|acc=1}} === คำวิสามานยนาม === {{ja-pos|proper}} # {{tcl|ja|ลาว|id=Q819}} === ดูเพิ่ม === * {{ja-r|ラオス人%民 民%主 共%和%国|^ラオス ^じん%みん ^みん%しゅ ^きょう%わ%こく}} {{cln|ja|exonyms}} ao0o9ehsu5he6klqhdqj1f1bjz9hbgc บัก 0 23472 5723309 1882413 2026-05-20T11:50:11Z OctraBot 3198 /* ภาษาอีสาน */ 5723309 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/bǎk/}} === คำนาม === {{nod-noun}} # [[อวัยวะเพศชาย]] == ภาษาเลอเวือะตะวันตก == === การออกเสียง === * {{IPA|lcp|/bak/}} === คำนาม === {{head|lcp|คำนาม}} # [[กบ]] == ภาษาอีสาน == === รากศัพท์ 1 === ==== คำนาม ==== {{tts-noun}} # [[คำ]][[เรียก]][[ชื่อ]][[ชาย]][[ที่]][[มี]][[อายุ]][[เสมอ]][[กัน]][[หรือ]][[ต่ำ]][[กว่า]] === รากศัพท์ 2 === แผลงมาจาก {{m|tts|หมาก}} ==== คำนาม ==== {{tts-noun}} # [[คำ]][[นำ]][[หน้า]][[ชื่อ]][[ผลไม้]] [[เหมือน]][[กับ]] [[มะ]] [[ใน]][[ภาษาไทย]][[กลาง]] 5r82wmw5zhmlbrb54ksgzm0ovzp7nhf 5723310 5723309 2026-05-20T11:51:34Z OctraBot 3198 /* ภาษาอีสาน */ เก็บกวาด 5723310 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/bǎk/}} === คำนาม === {{nod-noun}} # [[อวัยวะเพศชาย]] == ภาษาเลอเวือะตะวันตก == === การออกเสียง === * {{IPA|lcp|/bak/}} === คำนาม === {{head|lcp|คำนาม}} # [[กบ]] == ภาษาอีสาน == === รากศัพท์ 1 === ==== คำนาม ==== {{tts-noun}} # [[คำ]][[เรียก]][[ชื่อ]][[ชาย]][[ที่]][[มี]][[อายุ]][[เสมอ]][[กัน]][[หรือ]][[ต่ำ]][[กว่า]] === รากศัพท์ 2 === แผลงมาจาก {{m|tts|หมาก}} ==== คำนาม ==== {{tts-noun}} # คำ[[นำ]][[หน้า]]ชื่อ[[ผลไม้]], [[เหมือน]][[กับ]] [[มะ]] [[ใน]][[ภาษาไทย]][[กลาง]] === รากศัพท์ 3 === ==== คำกริยา ==== {{tts-verb}} # [[ฟัน]][[ไม้]][[ให้]][[คอด]]หรือให้[[กิ่ว]] 6vdue92nimgr7tjs3ptg03m455od5t4 5723311 5723310 2026-05-20T11:56:47Z OctraBot 3198 /* รากศัพท์ 3 */ 5723311 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/bǎk/}} === คำนาม === {{nod-noun}} # [[อวัยวะเพศชาย]] == ภาษาเลอเวือะตะวันตก == === การออกเสียง === * {{IPA|lcp|/bak/}} === คำนาม === {{head|lcp|คำนาม}} # [[กบ]] == ภาษาอีสาน == === รากศัพท์ 1 === ==== คำนาม ==== {{tts-noun}} # [[คำ]][[เรียก]][[ชื่อ]][[ชาย]][[ที่]][[มี]][[อายุ]][[เสมอ]][[กัน]][[หรือ]][[ต่ำ]][[กว่า]] === รากศัพท์ 2 === แผลงมาจาก {{m|tts|หมาก}} ==== คำนาม ==== {{tts-noun}} # คำ[[นำ]][[หน้า]]ชื่อ[[ผลไม้]], [[เหมือน]][[กับ]] [[มะ]] [[ใน]][[ภาษาไทย]][[กลาง]] === รากศัพท์ 3 === แผลงมาจาก {{m|tts|บาก}} ==== คำกริยา ==== {{tts-verb}} # [[ฟัน]][[ไม้]][[ให้]][[คอด]]หรือให้[[กิ่ว]] 4vj4q92mrg104uwjztsirw45x56975h ᦟᦱᧁ 0 30536 5723260 1424029 2026-05-20T03:51:28Z OctraBot 3198 /* ภาษาไทลื้อ */ เก็บกวาด 5723260 wikitext text/x-wiki == ภาษาไทลื้อ == === รากศัพท์ === เทียบ{{cog|lo|ລາວ}}, {{cog|th|ลาว}} === การออกเสียง === {{khb-pron}} === คำวิสามานยนาม === {{khb-proper noun}} # {{tcl|khb|ลาว|id=Q819}} 5ciaperb0z27gun3slt79xp5gfnta9k มอดูล:languages/data/3/g 828 36380 5723239 5720757 2026-05-20T03:22:25Z OctraBot 3198 5723239 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} m["gaa"] = { "Ga", 33287, "alv-gda", "Latn", } m["gab"] = { "Gabri", 3441237, "cdc-est", "Latn", } m["gac"] = { "Mixed Great Andamanese", 56329630, "qfa-adn", "Latn", } m["gad"] = { -- not to be confused with gdk, gdg "Gaddang", 3438830, "phi", "Latn", } m["gae"] = { "Warekena", 1091095, "awd-nwk", "Latn", } m["gaf"] = { "Gende", 3100425, "ngf-kag", "Latn", } m["gag"] = { "กากาอุซ", 33457, "trk-ogz", "Latn, Cyrl", ancestors = "trk-oat", dotted_dotless_i = true, sort_key = { Latn = { from = { "i", -- Ensure "i" comes after "ı". "ä", "ç", "ê", "ı", "ö", "ş", "ţ", "ü" }, to = { "i" .. p[1], "a" .. p[1], "c" .. p[1], "e" .. p[1], "i", "o" .. p[1], "s" .. p[1], "t" .. p[1], "u" .. p[1] } }, }, } m["gah"] = { "Alekano", 3441595, "ngf-kag", "Latn", } m["gai"] = { "Borei", 6799756, "paa-ram", "Latn", } m["gaj"] = { "Gadsup", 5516467, "ngf-kag", "Latn", } m["gak"] = { "Gamkonora", 5520226, "paa-nha", "Latn", } m["gal"] = { "Galoli", 35322, "poz-tim", "Latn", } m["gam"] = { "Kandawo", 6361369, "ngf-chw", "Latn", } m["gan"] = { "กั้น", 33475, "zhx", "Hants", ancestors = "ltc", generate_forms = "zh-generateforms", translit = "zh-translit", sort_key = "Hani-sortkey", } m["gao"] = { "Gants", 5521529, "ngf-eso", "Latn", } m["gap"] = { "Gal", 5517742, "ngf-han", "Latn", } m["gaq"] = { "Gata'", 3501920, "mun", "Orya", } m["gar"] = { "Galeya", 5518509, "poz-ocw", "Latn", } m["gas"] = { "Adiwasi Garasia", 12953522, "inc-bhi", "Deva, Gujr", ancestors = "bhb", } m["gat"] = { "Kenati", 4219330, "ngf-kag", "Latn", } m["gau"] = { "Kondekor", 12952433, "dra-pgd", "Telu", } m["gaw"] = { "Nobonob", 11732205, "ngf-han", "Latn", } m["gay"] = { "Gayo", 33286, "poz-nws", "Latn", } m["gbb"] = { "Kaytetye", 6380709, "aus-rnd", "Latn", } m["gbd"] = { "Karadjeri", 3913837, "aus-pam", "Latn", } m["gbe"] = { "Niksek", 56375, "paa-spk", "Latn", } m["gbf"] = { "Gaikundi", 5517032, "paa-ndu", "Latn", } m["gbg"] = { "Gbanziri", 35306, "nic-nkg", "Latn", } m["gbh"] = { "Defi Gbe", 12952446, "alv-gbe", "Latn", } m["gbi"] = { "Galela", 3094570, "paa-nha", "Latn", } m["gbj"] = { "Bodo Gadaba", 3347070, "mun", "Orya", } m["gbk"] = { "Gaddi", 17455500, "him", "Deva, Takr", translit = { Deva = "Deva-translit", }, } m["gbl"] = { "Gamit", 2731717, "inc-bhi", "Deva, Gujr", translit = { Deva = "Deva-translit", Gujr = "Gujr-translit", }, } m["gbm"] = { "Garhwali", 33459, "inc-pah", "Deva", translit = { Deva = "Deva-translit", }, } m["gbn"] = { "Mo'da", 12755683, "csu-bbk", "Latn", } m["gbo"] = { "Northern Grebo", 11157042, "grb", "Latn", } m["gbp"] = { "Gbaya-Bossangoa", 11011295, "gba-wes", "Latn", } m["gbq"] = { "Gbaya-Bozoum", 4952879, "gba-wes", "Latn", } m["gbr"] = { "Gbagyi", 11015105, "alv-ngb", "Latn", } m["gbs"] = { "Gbesi Gbe", 12952448, "alv-pph", "Latn", } m["gbu"] = { "Gagadu", 35677, "aus-arn", "Latn", } m["gbv"] = { "Gbanu", 3914945, "gba-eas", "Latn", } m["gbw"] = { "Gabi", 5515391, "aus-pam", "Latn", } m["gbx"] = { "Eastern Xwla Gbe", 18379975, "alv-pph", "Latn", } m["gby"] = { "Gbari", 3915451, "alv-ngb", "Latn", } m["gcc"] = { "Mali", 6743338, "paa-bng", "Latn", } m["gcd"] = { "Ganggalida", 3913765, "aus-tnk", "Latn", } m["gce"] = { "Galice", 20711, "ath-pco", "Latn", } m["gcf"] = { "Antillean Creole", 3006280, "crp", "Latn", ancestors = "fr", sort_key = s["roa-oil-sortkey"], } m["gcl"] = { "Grenadian Creole English", 4252500, "crp", "Latn", ancestors = "en", } m["gcn"] = { "Gaina", 11732195, "paa-bin", "Latn", } m["gcr"] = { "Guianese Creole", 1363072, "crp", "Latn", ancestors = "fr", sort_key = s["roa-oil-sortkey"], } m["gct"] = { "Colonia Tovar German", 1138351, "gmw-hgm", "Latn", ancestors = "gsw", } m["gdb"] = { "Ollari", 33906, "dra-pgd", "Orya, Telu", translit = { Orya = "Orya-translit", Telu = "Telu-translit" }, } m["gdc"] = { "Gugu Badhun", 10510360, "aus-pam", "Latn", } m["gdd"] = { "Gedaged", 35292, "poz-ocw", "Latn", } m["gde"] = { "Gude", 3441230, "cdc-cbm", "Latn", } m["gdf"] = { "Guduf-Gava", 3441350, "cdc-cbm", "Latn", } m["gdg"] = { -- not to be confused with gad, gdk "Ga'dang", 5515189, "phi", "Latn", } m["gdh"] = { "Gadjerawang", 3913817, "aus-jar", "Latn", } m["gdi"] = { "Gundi", 11137851, "nic-nkb", "Latn", } m["gdj"] = { "Kurtjar", 5619931, "aus-pmn", "Latn", } m["gdk"] = { -- not to be confused with gad, gdg "Gadang", 56256, "cdc-est", "Latn", } m["gdl"] = { "Dirasha", 56809, "cus-eas", "Ethi", } m["gdm"] = { "Laal", 33436, "qfa-dis", -- Chad; unclassified, isolate or grouped with Adamawa or Chadic languages "Latn", } m["gdn"] = { "Umanakaina", 7881084, "ngf-dag", "Latn", } m["gdo"] = { "Godoberi", 56515, "cau-and", "Cyrl", display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, strip_diacritics = {Cyrl = s["cau-Cyrl-stripdiacritics"]}, } m["gdq"] = { "Mehri", 13361, "sem-sar", "Arab, Latn", } m["gdr"] = { "Wipi", 8026711, "paa-etf", "Latn", } m["gds"] = { "Ghandruk Sign Language", 15971577, "sgn", } m["gdt"] = { "Kungardutyi", 6444517, "aus-kar", "Latn", } m["gdu"] = { "Gudu", 3441172, "cdc-cbm", "Latn", } m["gdx"] = { "Godwari", 3540922, "raj", "Deva", translit = { Deva = "Deva-translit", }, } m["gea"] = { "Geruma", 3438789, "cdc-wst", "Latn", } m["geb"] = { "Kire", 11129733, "paa-ram", "Latn", } m["gec"] = { "Gboloo Grebo", 11019342, "grb", "Latn", } m["ged"] = { "Gade", 3914459, "alv-nup", "Latn", } m["geg"] = { "Gengle", 3438345, "alv-mye", "Latn", ancestors = "kow", } m["geh"] = { "Hutterisch", 33385, "gmw-hgm", "Latn", ancestors = "bar", } m["gei"] = { "Gebe", 3100032, "poz-hce", "Latn", } m["gej"] = { "Gen", 33450, "alv-gbe", "Latn", } m["gek"] = { "Gerka", 3441277, "cdc-wst", "Latn", } m["gel"] = { "Fakkanci", 36627, "nic-knn", "Latn", } m["geq"] = { "Geme", 3915851, "znd", "Latn", } m["ges"] = { "Geser-Gorom", 5553579, "poz-cma", "Latn", } m["gev"] = { "Viya", 7937974, "bnt-tso", "Latn", } m["gew"] = { "Gera", 3438725, "cdc-wst", "Latn", } m["gex"] = { "Garre", 56618, "cus-som", "Latn", } m["gey"] = { "Enya", 5381452, "bnt-mbe", "Latn", } m["gez"] = { "กืออึซ", 35667, "sem-eth", "Ethi", translit = "Ethi-translit", } m["gfk"] = { "Patpatar", 3368846, "poz-ocw", "Latn", } m["gft"] = { "Gafat", 56910, "sem-eth", "Ethi, Latn", } m["gga"] = { "Gao", 3095228, "poz-ocw", "Latn", } m["ggb"] = { "Gbii", 3914390, "kro-wkr", "Latn", } m["ggd"] = { "Gugadj", 5615186, "aus-pmn", "Latn", } m["gge"] = { "Guragone", 5619801, "aus-arn", "Latn", } m["ggg"] = { "Gurgula", 5620032, "raj", "Arab", } m["ggk"] = { "Kungarakany", 6444516, "aus-arn", "Latn", } m["ggl"] = { "Ganglau", 5521140, "ngf-yag", "Latn", } m["ggn"] = { "Eastern Gurung", 12952472, "sit-tam", "Gukh, Deva", translit = { Deva = "Deva-translit", }, } m["ggt"] = { "Gitua", 3107865, "poz-ocw", "Latn", } m["ggu"] = { "Gban", 3913317, "dmn-nbe", "Latn", } m["ggw"] = { "Gogodala", 3512161, "ngf-gsu", "Latn", } m["gha"] = { "Ghadames", 56747, "ber", "Latn", -- and other scripts? } m["ghc"] = { "แกลิกคลาสสิก", 5128278, "cel-gae", "Latn, Latg", ancestors = "mga", } m["ghe"] = { "Southern Ghale", 12952453, "sit-tam", "Deva", translit = { Deva = "Deva-translit", }, } m["ghh"] = { "Northern Ghale", 22662104, "sit-tam", "Deva", translit = { Deva = "Deva-translit", }, } m["ghk"] = { "Geko Karen", 5530317, "kar", } m["ghl"] = { "Ghulfan", 16885737, "nub-hil", "Latn", -- and others? } m["ghn"] = { "Ghanongga", 3104772, "poz-ocw", "Latn", } m["gho"] = { "Ghomara", 35315, "ber", "Tfng, Latn", translit = {Tfng = "Tfng-translit"}, } m["ghr"] = { "Ghera", 22808992, "inc-hiw", } m["ghs"] = { "Guhu-Samane", 11732219, "paa-gbi", "Latn", } m["ght"] = { "Kutang Ghale", 6448337, "sit-tam", "Tibt", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["gia"] = { "Kitja", 1284877, "aus-jar", "Latn", } m["gib"] = { "Gibanawa", 12953530, "crp", "Latn", ancestors = "ha", } m["gid"] = { "Gidar", 35265, "cdc-cbm", "Latn", } m["gie"] = { "Guébie", 63140714, "kro-did", "Latn", } m["gig"] = { "Goaria", 33269, "raj", "Arab", } m["gih"] = { "Githabul", 48987680, "aus-pam", "Latn", } m["gii"] = { "Girirra", 5564288, "cus-som", } m["gil"] = { "กิลเบิร์ต", 30898, "poz-mic", "Latn", } m["gim"] = { "Gimi (Papuan)", 11732209, "ngf-kag", "Latn", } m["gin"] = { "Hinukh", 33283, "cau-wts", "Cyrl", translit = "gin-translit", display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, strip_diacritics = {Cyrl = s["cau-Cyrl-stripdiacritics"]}, } m["gip"] = { "Gimi (Austronesian)", 12952457, "poz-ocw", } m["giq"] = { "Green Gelao", 12953525, "gio", "Latn", } m["gir"] = { "Red Gelao", 3100264, "gio", } m["gis"] = { "North Giziga", 3515084, "cdc-cbm", } m["git"] = { "Gitxsan", 3107862, "nai-tsi", "Latn", } m["giu"] = { "Mulao", 11092831, "gio", } m["giw"] = { "White Gelao", 8843040, "gio", } m["gix"] = { "Gilima", 10977716, "nic-nkm", "Latn", } m["giy"] = { "Giyug", 5565906, } m["giz"] = { "South Giziga", 3502232, "cdc-cbm", } m["gji"] = { "Geji", 3914890, "cdc-wst", "Latn", } m["gjk"] = { "Kachi Koli", 12953646, "inc-wes", } m["gjm"] = { "Gunditjmara", 6448731, "aus-pam", "Latn", } m["gjn"] = { "Gonja", 35267, "alv-gng", "Latn", } m["gjr"] = { "Gurindji Kriol", 5620091, "qfa-mix", "Latn", ancestors = "gue, rop" } m["gju"] = { "Gojri", 3241731, "raj", "ur-Arab, Deva, Takr", strip_diacritics = { ["ur-Arab"] = { remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.smallv, from = {"ڵ", "ݩ"}, to = {"ل", "ن"} }, }, translit = { --["ur-Arab"] = "ur-translit", Deva = "Deva-translit", }, } m["gka"] = { "Guya", 11732221, "ngf-fin", "Latn", } m["gkd"] = { "Magɨ", 55621742, "ngf-ais", "Latn", } m["gke"] = { "Ndai", 6983667, "alv-mbm", } m["gkn"] = { "Gokana", 3075137, "nic-ogo", "Latn", } m["gko"] = { "Kok-Nar", 6426526, "aus-pmn", "Latn", } m["gkp"] = { "Guinea Kpelle", 11052867, "dmn-msw", "Latn, Kpel", ancestors = "kpe", } m["glc"] = { "Bon Gula", 289816, "alv-bua", } m["gld"] = { "Nanai", 13303, "tuw-nan", "Cyrl", translit = "gld-translit", strip_diacritics = {remove_diacritics = c.macron}, sort_key = { from = {"ё", "ӈ"}, to = {"е" .. p[1], "н" .. p[1]} }, } m["glh"] = { "Northwest Pashayi", 23713532, "inc-pas", "fa-Arab", } m["glj"] = { "Kulaal", 33360, "alv-bua", } m["glk"] = { "Gilaki", 33657, "ira-csp", "fa-Arab", } m["glo"] = { "Galambu", 2598797, "cdc-wst", "Latn", } m["glr"] = { "Glaro-Twabo", 3915313, "kro-wee", } m["glu"] = { "Gula", 5617176, "csu-bgr", "Latn", } m["glw"] = { "Glavda", 3441285, "cdc-cbm", "Latn", } m["gly"] = { "Gule", 3120736, "ssa-kom", } m["gma"] = { "Gambera", 10502327, "aus-wor", "Latn", } m["gmb"] = { "Gula'alaa", 3120733, "poz-sls", "Latn", } m["gmd"] = { "Mághdì", 3914475, "alv-bwj", } m["gmg"] = { "Magiyi", 16926155, "ngf-sog", "Latn", } m["gmh"] = { "เยอรมันสูงกลาง", 837985, "gmw-hgm", "Latn", strip_diacritics = { remove_diacritics = c.circ .. c.macron, from = {"Ë", "ë", "[ƷȤ]", "[ʒȥ]"}, to = {"E", "e", "Z", "z"} }, } m["gml"] = { "เยอรมันต่ำกลาง", 505674, "gmw-lgm", "Latn", strip_diacritics = {remove_diacritics = c.circ .. c.macron .. c.diaer}, } m["gmm"] = { "Gbaya-Mbodomo", 6799713, "gba-eas", "Latn", } m["gmn"] = { "Gimnime", 11016905, "alv-dur", "Latn", } m["gmr"] = { "Mirning", 6873793, "aus-pam", "Latn", } m["gmu"] = { "Gumalu", 5618027, "ngf-gum", "Latn", } m["gmv"] = { "กาโม", 16116386, "omv-nom", "Latn, Ethi", } m["gmx"] = { "Magoma", 16939552, "bnt-bki", } m["gmy"] = { "กรีกแบบไมซีนี", 668366, "grk", "Linb", translit = "Linb-translit", } m["gmz"] = { "Mgbo", 6826835, "alv-igb", ancestors = "izi", } m["gna"] = { "Kaansa", 56802, "nic-gur", } m["gnb"] = { "Gangte", 12952442, "tbq-kuk", } m["gnc"] = { "Guanche", 35762, "ber", } m["gnd"] = { "Zulgo-Gemzek", 56800, "cdc-cbm", "Latn", } m["gne"] = { "Ganang", 63163361, "nic-plc", ancestors = "izr", } m["gng"] = { "Ngangam", 35888, "nic-grm", } m["gnh"] = { "Lere", 3915319, "nic-jer", } m["gni"] = { "กูนียันดี", 2669219, "aus-bub", "Latn", } m["gnj"] = { "Ngen of Djonkro", 63170838, "dmn-nbe", "Latn", } m["gnk"] = { "ǁGana", 1975199, "khi-kal", "Latn", } m["gnl"] = { "Gangulu", 4916329, "aus-pam", "Latn", } m["gnm"] = { "Ginuman", 11732210, "ngf-dag", "Latn", } m["gnn"] = { "Gumatj", 10510745, "aus-yol", "Latn", } m["gnq"] = { "Gana", 5520523, "poz-san", "Latn", } m["gnr"] = { "Gureng Gureng", 5619998, "aus-pam", "Latn", } m["gnt"] = { "Guntai", 12952475, "paa-yam", "Latn", } m["gnu"] = { "Gnau", 3915810, "paa-tor", "Latn", } m["gnw"] = { "Western Bolivian Guarani", 3775037, "gn", "Latn", } m["gnz"] = { "Ganzi", 11137942, "nic-nkb", "Latn", } m["goa"] = { "Guro", 35251, "dmn-mda", "Latn", } m["gob"] = { "Playero", 3027923, "sai-guh", } m["goc"] = { "Gorakor", 12952463, "poz-ocw", "Latn", } m["god"] = { "Godié", 3914412, "kro-bet", } m["goe"] = { "Gongduk", 2669221, "sit", } m["gof"] = { "โกฟา", 12631584, "omv-nom", "Latn, Ethi", } m["gog"] = { "Gogo", 3272630, "bnt-ruv", "Latn", } m["goh"] = { "เยอรมันสูงเก่า", 35218, "gmw-hgm", "Latn, Runr", strip_diacritics = { remove_diacritics = c.circ .. c.macron .. c.diaer, from = {"[ƷȤ]", "[ʒȥ]"}, to = {"Z", "z"} }, translit = { Runr = "Runr-translit", }, } m["goi"] = { "Gobasi", 5575414, "ngf-est", "Latn", } m["goj"] = { "Gowlan", 12953532, "inc-sou", } -- gok is a spurious language, see [[w:Spurious languages]] m["gol"] = { "Gola", 35482, "alv", "Latn, Vaii", } m["gon"] = { "โคณฑี", 1775361, "dra-gon", "Telu, Gonm, Gong, Deva, Orya", translit = { Telu = "Telu-translit", Gong = "gon-Gong-translit", Gonm = "gon-Gonm-translit", }, } m["goo"] = { "Gone Dau", 3110470, "poz-pcc", "Latn", } m["gop"] = { "Yeretuar", 8052565, "poz-hce", "Latn", } m["goq"] = { "Gorap", 3110816, "crp", "Latn", ancestors = "ms", } m["gor"] = { "Gorontalo", 2501174, "phi", "Latn", } m["got"] = { "กอท", 35722, "gme", "Goth, Runr, Latn", translit = {Goth = "Goth-translit"}, link_tr = true, strip_diacritics = {Latn = {remove_diacritics = c.macron}}, } m["gou"] = { "Gavar", 3441180, "cdc-cbm", } m["gov"] = { "Goo", 16927208, "dmn", "Latn", } m["gow"] = { "Gorwaa", 3437626, "cus-sou", "Latn", } m["gox"] = { "Gobu", 7194986, "bad-cnt", } m["goy"] = { "Goundo", 317636, "alv-kim", } m["goz"] = { "Gozarkhani", 5590235, "xme-ttc", ancestors = "xme-ttc-eas", } m["gpa"] = { "Gupa-Abawa", 3915352, "alv-ngb", "Latn", } m["gpn"] = { "Taiap", 56237, "qfa-dis", -- Papuan; isolate in Glottolog; relationship with Torricelli proposed by Usher "Latn", } m["gqa"] = { "Ga'anda", 56245, "cdc-cbm", "Latn", } m["gqi"] = { "Guiqiong", 3120647, "sit-qia", } m["gqn"] = { -- a variety of 'ter' "Kinikinao", 53386731, "awd", "Latn", } m["gqr"] = { "Gor", 759992, "csu-sar", "Latn", } m["gqu"] = { "Qau", 17284874, "gio", } m["gra"] = { "Rajput Garasia", 21041529, "inc-bhi", "Deva, Gujr", ancestors = "bhb", translit = { Deva = "Deva-translit", Gujr = "Gujr-translit", }, } m["grc"] = { "กรีกโบราณ", 35497, "grk", "Polyt, Cprt", translit = { Cprt = "Cprt-translit", }, override_translit = true, -- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { Polyt = "ΑΆἈἉἊἋἌἍἎἏᾈᾉᾊᾋᾌᾍᾎᾏᾸᾹᾺᾼΒΓΔΕΈἘἙἚἛἜἝῈΖΗΉἨἩἪἫἬἭἮἯᾘᾙᾚᾛᾜᾝᾞᾟῊῌΘΙΊΪἸἹἺἻἼἽἾἿῘῙῚΚΛΜΝΞΟΌὈὉὊὋὌὍΠΡῬΡ̓ΣΤΥΎΫὙὛὝὟῨῩῪΦΧΨΩΏὨὩὪὫὬὭὮὯᾨᾩᾪᾫᾬᾭᾮᾯῸῺῼαάἀἁἂἃἄἅἆἇὰᾀᾁᾂᾃᾄᾅᾆᾇᾰᾱᾲᾳᾴᾶᾷβγδεέἐἑἒἓἔἕὲζηήἠἡἢἣἤἥἦἧὴᾐᾑᾒᾓᾔᾕᾖᾗῂῃῄῆῇθιίϊΐἰἱἲἳἴἵἶἷὶῐῑῒῖῗκλμνξοόὀὁὂὃὄὅὸπρῤῥςστυύϋΰὐὑὒὓὔὕὖὗὺῠῡῢῦῧφχψωώὠὡὢὣὤὥὦὧὼᾠᾡᾢᾣᾤᾥᾦᾧῲῳῴῶῷ·ͺ΄΅᾽᾿῀῁῍῎῏῝῞῟῭`´῾", Cprt = "𐠀𐠁𐠂𐠃𐠄𐠅𐠈𐠊𐠋𐠌𐠍𐠎𐠏𐠐𐠑𐠒𐠓𐠔𐠕𐠖𐠗𐠘𐠙𐠚𐠛𐠜𐠝𐠞𐠟𐠠𐠡𐠢𐠣𐠤𐠥𐠦𐠧𐠨𐠩𐠪𐠫𐠬𐠭𐠮𐠯𐠰𐠱𐠲𐠳𐠴𐠵𐠷𐠸𐠼𐠿", c.punc }, } m["grd"] = { "Guruntum", 3441272, "cdc-wst", "Latn", } m["grg"] = { "Madi", 6727664, "ngf-fin", "Latn", } m["grh"] = { "Gbiri-Niragu", 3913936, "nic-kau", "Latn", } m["gri"] = { "Ghari", 3104782, "poz-sls", "Latn", } m["grj"] = { "Southern Grebo", 3914444, "grb", "Latn", } m["grm"] = { "Kota Marudu Talantang", 6433808, "poz-san", "Latn", } m["gro"] = { "Groma", 56551, "sit-tib", } m["grq"] = { "Gorovu", 56355, "paa-ram", "Latn", } m["grs"] = { "Gresi", 5607612, "paa-nim", "Latn", } m["grt"] = { "กาโร", 36137, "tbq-bdg", "Latn, Beng, Brai", } m["gru"] = { "Kistane", 13273, "sem-eth", "Latn, Ethi", } m["grv"] = { "Central Grebo", 18385114, "grb", "Latn", } m["grw"] = { "Gweda", 5623387, "poz-ocw", "Latn", } m["grx"] = { "Guriaso", 12631954, "qfa-unc", -- no consensus; may be Kwomtari per Baron (1983) and Usher (2020), but no connections accepted by -- Glottolog. "Latn", } m["gry"] = { "Barclayville Grebo", 11157342, "grb", "Latn", } m["grz"] = { "Guramalum", 3120935, "poz-ocw", "Latn", } m["gse"] = { "Ghanaian Sign Language", 35289, "sgn", "Latn", -- when documented } m["gsg"] = { "German Sign Language", 33282, "sgn-gsl", "Sgnw", } m["gsl"] = { "Gusilay", 35439, "alv-jol", "Latn", } m["gsm"] = { "Guatemalan Sign Language", 2886781, "sgn", "Latn", -- when documented } m["gsn"] = { "Gusan", 11732224, "ngf-fin", "Latn", } m["gso"] = { "Southwest Gbaya", 4919322, "gba-sou", "Latn", } m["gsp"] = { "Wasembo", 7971402, "ngf-mad", -- placed in under Rai Coast by Glottolog (under Greater Yaganon) and Pawley-Hammarström "Latn", } m["gss"] = { "Greek Sign Language", 3565084, "sgn", } m["gsw"] = { "เยอรมันแบบอลามันเนีย", 131339, "gmw-hgm", "Latn", wikimedia_codes = "als", ancestors = "gmh", } m["gta"] = { "Guató", 3027940, "qfa-dis", -- isolate or Macro-Jê "Latn", } m["gtu"] = { "Aghu Tharrnggala", 16825981, "aus-pmn", "Latn", } m["gua"] = { "Shiki", 3913946, "nic-jrn", "Latn", } m["gub"] = { "Guajajára", 7699720, "tup-gua", "Latn", } m["guc"] = { "Wayuu", 891085, "awd-taa", "Latn", } m["gud"] = { "Yocoboué Dida", 21074781, "kro-did", "Latn", } m["gue"] = { "Gurindji", 10511016, "aus-pam", "Latn", } m["guf"] = { "Gupapuyngu", 10511004, "aus-yol", "Latn", } m["gug"] = { "กัวรานีแบบปารากวัย", 17478066, "gn", "Latn", wikimedia_codes = "gn", ancestors = "gn-cls", } m["guh"] = { "Guahibo", 2669193, "sai-guh", "Latn", } m["gui"] = { "Eastern Bolivian Guarani", 2963912, "gn", "Latn", } m["guk"] = { "Gumuz", 2396970, "ssa", "Latn, Ethi", } m["gul"] = { "Gullah", 33395, "crp", "Latn", ancestors = "en", } m["gum"] = { "Guambiano", 2744745, "sai-bar", "Latn", } m["gun"] = { "Mbya Guarani", 3915584, "gn", "Latn", } m["guo"] = { "Guayabero", 2980375, "sai-guh", "Latn", } m["gup"] = { "Gunwinggu", 1406574, "aus-gun", "Latn", } m["guq"] = { "Aché", 383701, "tup", "Latn", } m["gur"] = { "ฟราฟรา", 35331, "nic-mre", "Latn", } m["gus"] = { "Guinean Sign Language", 15983937, "sgn", "Latn", -- when documented } m["gut"] = { "Maléku Jaíka", 3915782, "cba", "Latn", } m["guu"] = { "Yanomamö", 8048928, "sai-ynm", "Latn", } m["guv"] = { "Gey", 11137816, "alv-sav", "Latn", } m["guw"] = { "Gun", 3111668, "alv-gbe", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.macron}, } m["gux"] = { "Gourmanchéma", 35474, "nic-grm", "Latn", } m["guz"] = { "Gusii", 33603, "bnt-lok", "Latn", } m["gva"] = { "Kaskihá", 3033534, "sai-mas", "Latn", } m["gvc"] = { "Guanano", 3566001, "sai-tuc", "Latn", } m["gve"] = { "Duwet", 5317647, "poz-ocw", "Latn", } m["gvf"] = { "Golin", 3110291, "ngf-chw", "Latn", } m["gvj"] = { "Guajá", 3915506, "tup", "Latn", } m["gvl"] = { "Gulay", 641737, "csu-sar", "Latn", } m["gvm"] = { "Gurmana", 3913363, "nic-shi", "Latn", } m["gvn"] = { "Kuku-Yalanji", 5621973, "aus-pam", "Latn", } m["gvo"] = { "Gavião do Jiparaná", 5528335, "tup", "Latn", } m["gvp"] = { "Pará Gavião", 3365443, "sai-nje", "Latn", } m["gvr"] = { "Western Gurung", 2392342, "sit-tam", "Gukh, Deva", translit = { Deva = "Deva-translit", }, } m["gvs"] = { "Gumawana", 5618041, "poz-ocw", "Latn", } m["gvy"] = { "Guyani", 10511230, "aus-pam", "Latn", } m["gwa"] = { "Mbato", 3914941, "alv-ptn", "Latn", } m["gwb"] = { "Gwa", 5623219, "nic-jrn", "Latn", } m["gwc"] = { "Kalami", 1675961, "inc-koh", "Arab", strip_diacritics = { ["Arab"] = { -- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif from = {"هٔ", "ۂ", "ٱ"}, to = {"ہ", "ہ", "ا"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.superalef .. u(0x065e) }, }, } m["gwd"] = { "Gawwada", 3032135, "cus-eas", "Latn, Ethi", } m["gwe"] = { "Gweno", 3358211, "bnt-chg", "Latn", } m["gwf"] = { "Gowro", 3812403, "inc-koh", "Arab", } m["gwg"] = { "Moo", 6907057, "alv-bwj", "Latn", } m["gwi"] = { "Gwich'in", 21057, "ath-nor", "Latn", } m["gwj"] = { "Gcwi", 12631978, "khi-kal", "Latn", } m["gwm"] = { "Awngthim", 4830109, "aus-pmn", "Latn", } m["gwn"] = { "Gwandara", 56521, "cdc-wst", "Latn", } m["gwr"] = { "Gwere", 5623559, "bnt-nyg", "Latn", } m["gwt"] = { "Gawar-Bati", 33894, "inc-kun", "Arab", } m["gwu"] = { "Guwamu", 10511225, "aus-pam", "Latn", } m["gww"] = { "Kwini", 10551249, "aus-wor", "Latn", } m["gwx"] = { "Gua", 35422, "alv-gng", "Latn", } m["gxx"] = { "Wè Southern", 19921582, "kro-wee", "Latn", } m["gya"] = { "Northwest Gbaya", 36594, "gba-wes", "Latn", } m["gyb"] = { "Garus", 5524492, "ngf-han", "Latn", } m["gyd"] = { "Kayardild", 3913770, "aus-tnk", "Latn", } m["gye"] = { "Gyem", 5624046, "nic-jer", "Latn", } m["gyf"] = { "Gungabula", 10510783, "aus-pam", "Latn", } m["gyg"] = { "Gbayi", 11137618, "nic-ngd", "Latn", } m["gyi"] = { "Gyele", 35434, "bnt-mnj", "Latn", } m["gyl"] = { "Gayil", 5528771, "omv-aro", "Latn", } m["gym"] = { "Ngäbere", 3915581, "cba", "Latn", } m["gyn"] = { "Guyanese Creole English", 3305477, "crp", "Latn", ancestors = "en", } m["gyo"] = { "Gyalsumdo", 53575940, "sit-kyk", } m["gyr"] = { "Guarayu", 3118779, "tup-gua", "Latn", } m["gyy"] = { "Gunya", 10511001, "aus-pam", "Latn", } m["gza"] = { "Ganza", 5521556, "omv-mao", "Latn", } m["gzn"] = { "Gane", 3095108, "poz-hce", "Latn", } return require("Module:languages").finalizeData(m, "language") ghq1icvl1uuy0yl5vu9n4jwpgwxdn15 มอดูล:languages/data/3/a 828 36386 5723244 5720752 2026-05-20T03:27:52Z OctraBot 3198 5723244 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} m["aaa"] = { "Ghotuo", 35463, "alv-yek", "Latn", } m["aab"] = { "Alumu-Tesu", 35034, "nic-alu", "Latn", } m["aac"] = { "Ari", 1811224, "ngf-gsu", "Latn", } m["aad"] = { "Amal", 56708, "paa-spk", "Latn", } -- "aae" is treated as "sq", see [[WT:LT]] m["aaf"] = { "Aranadan", 3507928, "dra-mal", "Mlym", -- Mlym translit in [[Module:scripts/data]] (NOTE: not present before, presumably an accidental omission) } m["aag"] = { "Ambrak", 4741706, "paa-tor", "Latn", } m["aah"] = { "Abu'", 4670715, "paa-tor", "Latn", } m["aai"] = { "Arifama-Miniafia", 4790560, "poz-ocw", "Latn", } m["aak"] = { "Ankave", 3446690, "ngf-ang", "Latn", } m["aal"] = { "Afade", 56434, "cdc-cbm", "Latn", } m["aan"] = { "Anambé", 3507873, "tup-gua", "Latn", } m["aap"] = { "Arára (Pará)", 56807, "sai-pek", "Latn", } m["aaq"] = { "Penobscot", 3515185, "alg-abp", "Latn", } m["aas"] = { "Aasax", 56620, "cus-sou", "Latn", } -- "aat" is treated as "sq", see [[WT:LT]] m["aau"] = { "Abau", 3073568, "paa-spk", "Latn", } m["aaw"] = { "Solong", 7558834, "poz-ocw", "Latn", } m["aax"] = { "Mandobo Atas", 12636156, "ngf-gaw", "Latn", } m["aaz"] = { "Amarasi", 4740192, "poz-tim", "Latn", } m["aba"] = { "อาเบ", 34833, "alv-lag", "Latn", } m["abb"] = { "Bankon", 34860, "bnt-bsa", "Latn", } m["abc"] = { "Ambala Ayta", 3448896, "phi", "Latn", } m["abd"] = { "Camarines Norte Agta", 3399682, "phi", "Latn", } m["abe"] = { "Abenaki", 17502788, "alg-abp", "Latn", } m["abf"] = { "Abai Sungai", 4663287, "poz-san", "Latn", } m["abg"] = { "Abaga", 3507954, "ngf-kag", "Latn", } m["abh"] = { "อาหรับแบบทาจิกิสถาน", 56833, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["abi"] = { "Abidji", 34781, "alv-lag", "Latn", } m["abj"] = { "Aka-Bea", 2356391, "qfa-ads", "Latn", } m["abl"] = { "Abung", 49215, "poz-lgx", "Latn", } m["abm"] = { "Abanyom", 7502, "nic-eko", "Latn", } m["abn"] = { "Abua", 34835, "nic-cde", "Latn", } m["abo"] = { "Abon", 35121, "nic-tvn", "Latn", } m["abp"] = { "Abenlen Ayta", 3436621, "phi", "Latn", } m["abq"] = { "อาบาซา", 27567, "cau-abz", "Cyrl, Latn", translit = { Cyrl = "abq-translit" }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = s["cau-Cyrl-stripdiacritics"], Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = { "гъв", "гъь", "гӏв", "джв", "джь", "къв", "къь", "кӏв", "кӏь", "хъв", "хӏв", "чӏв", -- 3 chars "гв", "гъ", "гь", "гӏ", "дж", "дз", "ё", "жв", "жь", "кв", "къ", "кь", "кӏ", "ль", "лӏ", "пӏ", "тл", "тш", "тӏ", "фӏ", "хв", "хъ", "хь", "хӏ", "цӏ", "чв", "чӏ", "шв", "шӏ" -- 2 chars }, to = { "г" .. p[3], "г" .. p[4], "г" .. p[7], "д" .. p[2], "д" .. p[3], "к" .. p[3], "к" .. p[4], "к" .. p[7], "к" .. p[8], "х" .. p[3], "х" .. p[6], "ч" .. p[3], "г" .. p[1], "г" .. p[2], "г" .. p[5], "г" .. p[6], "д" .. p[1], "д" .. p[4], "е" .. p[1], "ж" .. p[1], "ж" .. p[2], "к" .. p[1], "к" .. p[2], "к" .. p[5], "к" .. p[6], "л" .. p[1], "л" .. p[2], "п" .. p[1], "т" .. p[1], "т" .. p[2], "т" .. p[3], "ф" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[4], "х" .. p[5], "ц" .. p[1], "ч" .. p[1], "ч" .. p[2], "ш" .. p[1], "ш" .. p[2] } }, }, } -- "abr" Abron is treated as "ak" Akan, see [[WT:LT]] m["abs"] = { "Ambonese Malay", 3124354, "crp", "Latn", ancestors = "ms", } m["abt"] = { "Ambulas", 3508015, "paa-ndu", "Latn", } m["abu"] = { "Abure", 34767, "alv-ptn", "Latn", } m["abv"] = { "อาหรับแบบบาห์เรน", 56576, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["abw"] = { "Pal", 7126121, "ngf-mad", "Latn", } m["abx"] = { "Inabaknon", 2820163, "poz-sbj", "Latn", } m["aby"] = { "Aneme Wake", 3508107, "ngf-yar", "Latn", } m["abz"] = { "Abui", 2822110, "paa-tap", "Latn", } m["aca"] = { "Achagua", 2822982, "awd", "Latn", } m["acb"] = { "Áncá", 11130787, "nic-mom", "Latn", } m["acd"] = { "Gikyode", 35256, "alv-gng", "Latn", } m["ace"] = { "อาเจะฮ์", 27683, "cmc", "Latn, ms-Arab", standard_chars = { Latn = "AaBbCcDdEeÉéÈèËëFfGgHhIiJjKkLlMmNnOoÔôÖöPpQqRrSsTtUuVvWwXxYyZz", -- current orthography (not yet add Arab) c.punc }, } m["ach"] = { "Acholi", 34926, "sdv-los", "Latn", } m["aci"] = { "Aka-Cari", 2670418, "qfa-adn", "Latn", } m["ack"] = { "Aka-Kora", 3433680, "qfa-adn", "Latn", } m["acl"] = { "Akar-Bale", 3436825, "qfa-ads", "Latn", } m["acm"] = { "อาหรับแบบอิรัก", 56232, "sem-arb", "Arab, Hebr", strip_diacritics = { Arab = "ar-stripdiacritics", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["acn"] = { "Achang", 56582, "tbq-brm", "Latn", } m["acp"] = { "Eastern Acipa", 5329945, "nic-kmk", "Latn", } m["acr"] = { "Achi", 34774, "myn", "Latn", } m["acs"] = { "Acroá", 2829146, "sai-cje", "Latn", } m["acu"] = { "Achuar", 2823170, "sai-jiv", "Latn", } m["acv"] = { "Achumawi", 56661, "nai-pal", "Latn", } m["acw"] = { "อาหรับแบบฮิญาซ", 56608, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["acx"] = { "อาหรับแบบโอมาน", 56630, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["acy"] = { "อาหรับแบบไซปรัส", 56416, "sem-arb", "Latn, Grek", ancestors = "acm", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.breve}, }, -- Grek display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { Latn = "AaBbCcDdΔδEeFfGgĠġĊċIiJjKkLlMmNnOoPpΘθRrSsTtUuVvWwXxYyZzŞş", c.punc }, } m["acz"] = { "Acheron", 34769, "alv-tal", "Latn", } m["ada"] = { "Adangme", 35141, "alv-gda", "Latn", } m["adb"] = { "Atauran", 125421255, "poz-cet", "Latn", } m["add"] = { "Dzodinka", 35266, "nic-nka", "Latn", } m["ade"] = { "Adele", 27740, "alv-ntg", "Latn", } m["adf"] = { "Dhofari Arabic", 56565, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["adg"] = { "Andegerebinha", 3508123, "aus-pam", "Latn", } m["adh"] = { "Adhola", 1971400, "sdv-los", "Latn", } m["adi"] = { "Adi", 56440, "sit-tan", "Latn", } m["adj"] = { "Adioukrou", 34738, "alv-lag", "Latn", } m["adl"] = { "Galo", 2857892, "sit-tan", "Latn", } m["adn"] = { "Adang", 3398276, "paa-tap", "Latn", } m["ado"] = { "Abu", 56659, "paa-ram", "Latn", } m["adp"] = { "Adap", 3512402, "sit-tib", "Tibt", ancestors = "dz", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["adq"] = { "Adangbe", 34730, "alv-gda", "Latn", ancestors = "ada", } m["adr"] = { "Adonara", 4684505, "poz-cet", "Latn", } m["ads"] = { "Adamorobe Sign Language", 27709, "sgn", "Latn", -- when documented } m["adt"] = { "Adnyamathanha", 2225391, "aus-psw", "Latn", } m["adu"] = { "Aduge", 34734, "alv-nwd", "Latn", ancestors = "opa", } m["adw"] = { "Amondawa", 12626847, "tup-gua", "Latn", } m["ady"] = { "อะดีเกยา", 27776, "cau-cir", "Cyrl, Latn, Arab", translit = { Cyrl = "cau-cir-translit", Arab = "ar-translit", }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = s["cau-Cyrl-stripdiacritics"], Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = { "кхъу", "къӏу", -- 4 chars "гъу", "джу", "дзу", "жъу", "къу", "кхъ", "къӏ", "кӏу", "кӏь", "лъу", "лӏу", "пӏу", "сӏу", "тӏу", "фӏу", "хъу", "цӏу", "чъу", "чӏу", "шъу", "шӏу", "щӏу", -- 3 chars "гу", "гъ", "гь", "дж", "дз", "ё", "жъ", "жь", "ку", "къ", "кь", "кӏ", "лъ", "ль", "лӏ", "пӏ", "сӏ", "тӏ", "фӏ", "ху", "хъ", "хь", "цу", "цӏ", "чу", "чъ", "чӏ", "шъ", "шӏ", "щӏ", "ӏу", "ӏь" -- 2 chars }, to = { "к" .. p[5], "к" .. p[7], "г" .. p[3], "д" .. p[2], "д" .. p[4], "ж" .. p[2], "к" .. p[3], "к" .. p[4], "к" .. p[6], "к" .. p[10], "к" .. p[11], "л" .. p[2], "л" .. p[5], "п" .. p[2], "с" .. p[2], "т" .. p[2], "ф" .. p[2], "х" .. p[3], "ц" .. p[3], "ч" .. p[3], "ч" .. p[5], "ш" .. p[2], "ш" .. p[4], "щ" .. p[2], "г" .. p[1], "г" .. p[2], "г" .. p[4], "д" .. p[1], "д" .. p[3], "е" .. p[1], "ж" .. p[1], "ж" .. p[3], "к" .. p[1], "к" .. p[2], "к" .. p[8], "к" .. p[9], "л" .. p[1], "л" .. p[3], "л" .. p[4], "п" .. p[1], "с" .. p[1], "т" .. p[1], "ф" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[4], "ц" .. p[1], "ц" .. p[2], "ч" .. p[1], "ч" .. p[2], "ч" .. p[4], "ш" .. p[1], "ш" .. p[3], "щ" .. p[1], "ӏ" .. p[1], "ӏ" .. p[2] } }, }, } m["adz"] = { "Adzera", 3327445, "poz-ocw", "Latn", } m["aea"] = { "Areba", 3509129, "aus-pam", "Latn", } m["aeb"] = { "อาหรับแบบตูนิเซีย", 56240, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["aed"] = { "Argentine Sign Language", 3322073, "sgn", "Latn", -- when documented } m["aee"] = { "Northeast Pashayi", 12642198, "inc-pas", "fa-Arab, Latn", } m["aek"] = { "Haeke", 5638166, "poz-cln", "Latn", } m["ael"] = { "Ambele", 34818, "nic-grf", "Latn", } m["aem"] = { "Arem", 3507920, "mkh-vie", "Latn", } m["aen"] = { "Armenian Sign Language", 3446604, "sgn", } m["aeq"] = { "Aer", 3246741, "inc-wes", "Arab", } m["aer"] = { "Eastern Arrernte", 10728232, "aus-pam", "Latn", } m["aes"] = { "Alsea", 2395641, nil, "Latn", } m["aeu"] = { "Akeu", 4700657, "tbq-sil", "Latn", } m["aew"] = { "Ambakich", 56642, "paa-eke", "Latn", } m["aey"] = { "Amele", 3508025, "ngf-gum", "Latn", } m["aez"] = { "Aeka", 16110528, "paa-bin", "Latn", } m["afb"] = { "Gulf Arabic", 56385, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["afd"] = { "Andai", 4753480, "paa-arf", "Latn", } m["afe"] = { "Putukwam", 3914930, "nic-ben", "Latn", } m["afg"] = { "Afghan Sign Language", 4689093, "sgn", } m["afh"] = { "Afrihili", 384707, "art", "Latn", type = "appendix-constructed", } m["afi"] = { "Akrukay", 57003, "paa-ram", "Latn", } m["afk"] = { "Nanubae", 6964416, "paa-arf", "Latn", } m["afn"] = { "Defaka", 35174, "nic", "Latn", } m["afo"] = { "Eloyi", 3914066, "nic-plt", "Latn", } m["afp"] = { "Tapei", 16887371, "paa-arf", "Latn", } m["afs"] = { "Afro-Seminole Creole", 27867, "crp", "Latn", ancestors = "en", } m["aft"] = { "Afitti", 3400829, "sdv-nyi", "Latn", } m["afu"] = { "Awutu", 34847, "alv-gng", "Latn", } m["afz"] = { "Obokuitai", 7075258, "paa-lkp", "Latn", } m["aga"] = { "Aguano", 3331203, nil, "Latn", } m["agb"] = { "Legbo", 35584, "nic-uce", "Latn", } m["agc"] = { "Agatu", 34732, "alv-ido", "Latn", } m["agd"] = { "Agarabi", 3399642, "ngf-kag", "Latn", } m["age"] = { "Angal", 10951553, "ngf-eng", "Latn", } m["agf"] = { "Arguni", 12473346, "poz-cet", "Latn", } m["agg"] = { "Angor", 3508100, "paa-sng", "Latn", } m["agh"] = { "Ngelima", 7022266, "bnt-bta", "Latn", } m["agi"] = { "Agariya", 663586, "mun", "Deva", translit = "Deva-translit", } m["agj"] = { "Argobba", 29292, "sem-eth", "Ethi", } m["agk"] = { "Isarog Agta", 6078982, "phi", "Latn", } m["agl"] = { "Fembe", 372927, "ngf-est", "Latn", } m["agm"] = { "Angaataha", 3508001, "ngf-ang", "Latn", } m["agn"] = { "อากูตายา", 3399717, "phi-kal", "Latn", } m["ago"] = { "Tainae", 7676186, "ngf-ang", "Latn", } m["agq"] = { "Aghem", 34737, "nic-rnw", "Latn", } m["agr"] = { "Aguaruna", 1526530, "sai-jiv", "Latn", } m["ags"] = { "Esimbi", 35260, "nic-bds", "Latn", } m["agt"] = { "Central Cagayan Agta", 5017296, "phi", "Latn", } m["agu"] = { "Aguacateca", 35091, "myn", "Latn", } m["agv"] = { "Remontado Agta", 3508085, "phi", "Latn", } m["agw"] = { "Kahua", 3191906, "poz-sls", "Latn", } m["agx"] = { "Aghul", 36498, "cau-esm", "Cyrl", translit = "cau-nec-translit", override_translit = true, display_text = s["cau-Cyrl-displaytext"], strip_diacritics = s["cau-Cyrl-stripdiacritics"], sort_key = { from = {"аь", "гъ", "гь", "гӏ", "дж", "ё", "къ", "кь", "кӏ", "оь", "пӏ", "тӏ", "уь", "хъ", "хь", "хӏ", "цӏ", "чӏ"}, to = {"а" .. p[1], "г" .. p[1], "г" .. p[2], "г" .. p[3], "д" .. p[1], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "о" .. p[1], "п" .. p[1], "т" .. p[1], "у" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "ц" .. p[1], "ч" .. p[1]} }, } m["agy"] = { "Southern Alta", 7569611, "phi", "Latn", } m["agz"] = { "Mount Iriga Agta", 6921432, "phi", "Latn", } m["aha"] = { "Ahanta", 34729, "alv-ctn", "Latn", } m["ahb"] = { "Axamb", 2874710, "poz-vnc", "Latn", } m["ahg"] = { "Qimant", 35663, "cus-cen", "Latn", } m["ahh"] = { "Aghu", 3436645, "ngf-gaw", "Latn", } m["ahi"] = { "Tiagba", 3400073, "kro-aiz", "Latn", } m["ahk"] = { "อาข่า", 56643, "tbq-han", "Latn, Mymr, Thai", sort_key = { Thai = { from = {"[%pๆ]", "[็-๎]", "([เแโใไ])([ก-ฮ])"}, to = {"", "", "%2%1"} }, }, } m["ahl"] = { "Igo", 35412, "alv-ktg", "Latn", } m["ahm"] = { "Mobu", 35967, "kro-aiz", "Latn", } m["ahn"] = { "Àhàn", 34723, "alv-aah", "Latn", } m["aho"] = { "อาหม", 34778, "tai-swe", "Ahom", translit = "Ahom-translit", } m["ahp"] = { "Apro", 34810, "alv-kwa", "Latn", } m["ahr"] = { "Ahirani", 15549890, "raj", "Deva", translit = "Deva-translit", } m["ahs"] = { "Ashe", 34823, "nic-plc", "Latn", } m["aht"] = { "Ahtna", 21058, "ath-nor", "Latn", } m["aia"] = { "Arosi", 2863483, "poz-sls", "Latn", } m["aib"] = { "Äynu", 27927, "qfa-mix", "Arab, Latn", ancestors = "ug, fa" } m["aic"] = { "Ainbai", 3332149, "paa-brd", "Latn", } m["aid"] = { "Alngith", 3279409, "aus-pmn", "Latn", } m["aie"] = { "Amara", 2841180, "poz-ocw", "Latn", } m["aif"] = { "Agi", 3331491, "paa-tor", "Latn", } m["aig"] = { "Antigua and Barbuda Creole English", 3244184, "crp", "Latn", ancestors = "en", } m["aih"] = { "Ai-Cham", 2827749, "qfa-kms", "Latn, Hani", sort_key = { Hani = "Hani-sortkey" }, } m["aii"] = { "อารามายาใหม่แบบอัสซีเรีย", 29440, "sem-nna", "Syrc", translit = "aii-translit", strip_diacritics = "Syrc-stripdiacritics", } m["aij"] = { "Lishanid Noshan", 3436467, "sem-nna", "Hebr", -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["aik"] = { "Ake", 34808, "nic-pls", "Latn", } m["ail"] = { "Aimele", 3327418, "ngf-bos", "Latn", } m["aim"] = { "Aimol", 4697175, "tbq-kuk", "Latn, Beng", } m["ain"] = { "ไอนุ", 27969, "qfa-ain", "Kana, Latn, Cyrl", sort_key = { Kana = "Kana-sortkey" }, } m["aio"] = { "อ่ายตน", 3399725, "tai-swe", "Mymr", translit = "aio-phk-translit", display_text = s["aio-displaytext"], strip_diacritics = s["aio-stripdiacritics"], } m["aip"] = { "Burumakok", 5000984, "ngf-okk", "Latn", } m["air"] = { "Airoran", 3321131, "paa-tkw", "Latn", } m["ait"] = { "Arikem", 3446679, "tup", "Latn", } m["aiw"] = { "Aari", 7495, "omv-aro", "Latn", } m["aix"] = { "Aighon", 3504287, "poz-ocw", "Latn", } m["aiy"] = { "Ali", 34814, "gba-eas", "Latn", } m["aja"] = { "Aja", 3237491, "csu-bkr", "Latn", } m["ajg"] = { "Adja", 35035, "alv-gbe", "Latn", } m["aji"] = { "Ajië", 2828867, "poz-cln", "Latn", } m["ajn"] = { "Andajin", 16111302, "aus-wor", "Latn", } m["ajp"] = { "อาหรับแบบลิแวนต์ใต้", 55633582, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["ajw"] = { "Ajawa", 56645, "cdc-wst", "Latn", } m["ajz"] = { "Amri Karbi", 3508092, "tbq-kuk", "Latn", ancestors = "mjw", } m["akb"] = { "Angkola Batak", 2640686, "btk", "Latn, Batk", } m["akc"] = { "Mpur", 3327139, "qfa-iso", -- Papuan; based on Palmer (2018), Ethnologue and Glottolog "Latn", } m["akd"] = { "Ukpet-Ehom", 36618, "nic-ucr", "Latn", } m["ake"] = { "Akawaio", 28059, "sai-pem", "Latn", } m["akf"] = { "Akpa", 34801, "alv-ido", "Latn", } m["akg"] = { "Anakalangu", 4750964, "poz-cet", "Latn", } m["akh"] = { "Angal Heneng", 10950354, "ngf-eng", "Latn", } m["aki"] = { "Aiome", 56735, "paa-ram", "Latn", } m["akj"] = { "Jeru", 2919121, "qfa-adn", "Latn, Deva", translit = { Deva = "Deva-translit", }, } m["akk"] = { "แอกแคด", 35518, "sem-eas", "Xsux, Latn", } m["akl"] = { "อักลัน", 8773, "phi", "Latn", } m["akm"] = { "Aka-Bo", 35361, "qfa-adn", "Latn", } m["ako"] = { "Akurio", 56650, "sai-tar", "Latn", } m["akp"] = { "Siwu", 36470, "alv-ntg", "Latn", } m["akq"] = { "Ak", 56654, "paa-spk", "Latn", } m["akr"] = { "Araki", 2699882, "poz-vnn", "Latn", } m["aks"] = { "Akaselem", 34817, "nic-grm", "Latn", } m["akt"] = { "Akolet", 3330162, "poz-ocw", "Latn", } m["aku"] = { "Akum", 34799, "nic-ykb", "Latn", } m["akv"] = { "Akhvakh", 56423, "cau-and", "Cyrl", translit = "cau-nec-translit", override_translit = true, display_text = s["cau-Cyrl-displaytext"], strip_diacritics = s["cau-Cyrl-stripdiacritics"], } m["akw"] = { "Akwa", 34802, "bnt-mbo", "Latn", } m["akx"] = { "Aka-Kede", 3436816, "qfa-adc", "Latn", } m["aky"] = { "Aka-Kol", 3436784, "qfa-adc", "Latn", } m["akz"] = { "แอละแบมา", 1815020, "nai-mus", "Latn", } m["ala"] = { "Alago", 34813, "alv-ido", "Latn", } m["alc"] = { "Kawésqar", 56544, "aqa", "Latn", } m["ald"] = { "Alladian", 34837, "alv-lag", "Latn", } m["ale"] = { "Aleut", 27210, "esx", "Latn, Cyrl", } m["alf"] = { "Alege", 34815, "nic-ben", "Latn", } m["alh"] = { "Alawa", 2147917, "aus-gun", "Latn", } m["ali"] = { "Amaimon", 3327427, "ngf-mad", "Latn", } m["alj"] = { "Alangan", 3327423, "phi", "Latn", } m["alk"] = { "Alak", 2714690, "mkh", "Latn", } m["all"] = { "Allar", 3393634, "dra-mal", "Mlym", -- Mlym translit in [[Module:scripts/data]] (NOTE: not present before, presumably an accidental omission) } -- "aln" is treated as "sq", see [[WT:LT]] m["alm"] = { "Amblong", 11022615, "poz-vnn", "Latn", } m["alo"] = { "Larike-Wakasihu", 3217929, "poz-cma", "Latn", } m["alp"] = { "Alune", 3327367, "poz-cet", "Latn", } m["alq"] = { "Algonquin", 28092, "alg", "Latn, Cans", ancestors = "oj", } m["alr"] = { "Alutor", 28213, "qfa-ckn", "Cyrl", strip_diacritics = { from = {"['’]"}, to = {"ʼ"} }, sort_key = { from = {"вʼ", "гʼ", "ғ", "ә", "ё", "ӄ", "ӈ"}, to = {"в" .. p[1], "г" .. p[1], "г" .. p[2], "е" .. p[1], "е" .. p[2], "к" .. p[1], "н" .. p[1]} }, } m["alt"] = { "อัลไตใต้", 1991779, "trk-kkp", "Cyrl", translit = "Altai-translit", sort_key = { from = {"ј", "ё", "ҥ", "ӧ", "ӱ"}, to = {"д" .. p[1], "е" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1]} }, } m["alu"] = { "'Are'are", 5160, "poz-sls", "Latn", } m["alw"] = { "Alaba", 56652, "cus-hec", "Latn", } m["alx"] = { "Amol", 3504260, "paa-tor", "Latn", } m["aly"] = { "Alyawarr", 3327389, "aus-pam", "Latn", } m["alz"] = { "Alur", 56507, "sdv-los", "Latn", } m["ama"] = { "Amanayé", 3508053, "tup-gua", "Latn", } m["amb"] = { "Ambo", 3450142, "nic-tvn", "Latn", } m["amc"] = { "Amahuaca", 2669150, "sai-pan", "Latn", } m["ame"] = { "Yanesha'", 3088540, "awd", "Latn", } m["amf"] = { "Hamer-Banna", 35764, "omv-aro", "Latn, Ethi", sort_key = "amf-utilities" } m["amg"] = { "Amurdag", 3360016, "aus-wdj", "Latn", } m["ami"] = { "Amis", 35132, "map", "Latn", } m["amj"] = { "Amdang", 28335, "ssa-fur", "Latn", } m["amk"] = { "Ambai", 1875885, "poz-hce", "Latn", } m["aml"] = { "War-Jaintia", 56321, "aav-khs", "Latn", } m["amm"] = { "Ama", 3446626, "paa-lem", "Latn", } m["amn"] = { "Amanab", 3327399, "paa-brd", "Latn", } m["amo"] = { "Amo", 34826, "nic-kne", "Latn", } m["amp"] = { "Alamblak", 56688, "paa-spk", "Latn", } m["amq"] = { "Amahai", 3327384, "poz-cma", "Latn", } m["amr"] = { "Amarakaeri", 35128, "sai-har", "Latn", } m["ams"] = { "อามามิโอชิมะใต้", 2840986, "jpx-nry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["amt"] = { "Amto", 56517, "paa-amu", "Latn", } m["amu"] = { "Guerrero Amuzgo", 3501942, "omq", "Latn", } m["amv"] = { "Ambelau", 2669214, "poz-cma", "Latn", } m["amw"] = { "Western Neo-Aramaic", 34226, "sem-arw", "Armi, Syrc, Latn", strip_diacritics = { Syrc = "Syrc-stripdiacritics" }, } m["amx"] = { "Anmatyerre", 10412317, "aus-pam", "Latn", } m["amy"] = { "Ami", 10408315, "aus-dal", "Latn", } m["amz"] = { "Atampaya", 3446651, "aus-pam", "Latn", } m["ana"] = { "Andaqui", 2846078, nil, "Latn", } m["anb"] = { "Andoa", 2846171, "sai-zap", "Latn", } m["anc"] = { "Ngas", 35999, "cdc-wst", "Latn", } m["and"] = { "Ansus", 3513300, "poz-hce", "Latn", } m["ane"] = { "คังรังชือ", 3571097, "poz-cln", "Latn", } m["anf"] = { "Animere", 34783, "alv-ktg", "Latn", } m["ang"] = { "อังกฤษเก่า", 42365, "gmw-ang", "Latn, Runr", translit = { Runr = "Runr-translit" }, strip_diacritics = { Latn = { remove_diacritics = c.acute .. c.circ .. c.macron .. c.breve .. c.dotabove .. c.diaer .. c.dotbelow, from = {"[Ƿƿ]"}, to = {{ ["Ƿ"] = "W", ["ƿ"] = "w", }}, }, }, sort_key = { Latn = { remove_diacritics = c.acute .. c.circ .. c.macron .. c.breve .. c.dotabove .. c.diaer .. c.dotbelow, from = {"[æƀꝺðꝼᵹȝłœꞃꞅꞇþꝥꝧƿ]"}, to = {{ ["æ"] = "ae", ["ƀ"] = "b", ["ꝺ"] = "d", ["ð"] = "d" .. p[1], ["ꝼ"] = "f", ["ᵹ"] = "g", ["ȝ"] = "g" .. p[1], ["ł"] = "l", ["œ"] = "oe", ["ꞃ"] = "r", ["ꞅ"] = "s", ["ꞇ"] = "t", ["þ"] = "t" .. p[1], ["ꝥ"] = "t" .. p[1], ["ꝧ"] = "t" .. p[1], ["ƿ"] = "w", }}, }, }, standard_chars = { Latn = "AaÆæBbCcDdÐðEeFfGgHhIiLlMmNnOoŒœPpRrSsTtÞþUuWwXxYy", c.punc, }, } m["anh"] = { "Nend", 6991554, "ngf-wso", "Latn", } m["ani"] = { "Andi", 34849, "cau-and", "Cyrl", translit = "cau-nec-translit", override_translit = true, display_text = s["cau-Cyrl-displaytext"], strip_diacritics = s["cau-Cyrl-stripdiacritics"], } m["anj"] = { "Anor", 56458, "paa-ram", "Latn", } m["ank"] = { "Goemai", 35272, "cdc-wst", "Latn", } m["anl"] = { "Anu", 4777679, "sit-mru", "Latn", } m["anm"] = { "Anāl", 56235, "tbq-kuk", "Latn", } m["ann"] = { "Obolo", 36614, "nic-lcr", "Latn", } m["ano"] = { "Andoque", 2669225, "qfa-iso", "Latn", } m["anp"] = { "Angika", 28378, "inc-bih", "Deva, Kthi", translit = { Deva = "Deva-translit", Kthi = "Kthi-translit", }, } m["anq"] = { "Jarawa", 2475526, "qfa-ong", "Latn", } m["anr"] = { "Andh", 4754314, "inc-sou", "Deva", translit = "Deva-translit", } m["ans"] = { "Anserma", 3446613, "sai-chc", "Latn", } m["ant"] = { "Antakarinya", 921304, "aus-psw", "Latn", } m["anu"] = { "Anuak", 56677, "sdv-lon", "Latn", } m["anv"] = { "Denya", 35187, "nic-mam", "Latn", } m["anw"] = { "Anaang", 2845320, "nic-ief", "Latn", } m["anx"] = { "Andra-Hus", 2846195, "poz-aay", "Latn", } m["any"] = { "Anyi", 28395, "alv-ctn", "Latn", } m["anz"] = { "Anem", 56512, "qfa-dis", -- Papuan; might be an isolate or in a putative West New Britain family "Latn", } m["aoa"] = { "Angolar", 34994, "crp", "Latn", ancestors = "pt", } m["aob"] = { "Abom", 3446647, "paa-ani", "Latn", } m["aoc"] = { "Pemon", 10729616, "sai-pem", "Latn", } m["aod"] = { "Andarum", 3507888, "paa-ram", "Latn", } m["aoe"] = { "Angal Enen", 10951638, "ngf-eng", "Latn", } m["aof"] = { "Bragat", 3507977, "paa-tor", "Latn", } m["aog"] = { "Angoram", 56366, -- cf 6754745 for merged dialect "paa-lsp", "Latn", } m["aoi"] = { "Anindilyakwa", 2714654, "aus-arn", "Latn", } m["aoj"] = { "Mufian", 3507881, "paa-tor", "Latn", } m["aok"] = { "Arhö", 4790086, "poz-cln", "Latn", } m["aol"] = { "Alorese", 3332062, "poz", "Latn", } m["aom"] = { "Ömie", 8078975, "ngf-koi", "Latn", } m["aon"] = { "Bumbita Arapesh", 3508044, "paa-tor", "Latn", } m["aor"] = { "Aore", 12627129, "poz-vnn", "Latn", } m["aos"] = { "Taikat", 7676018, "paa-brd", "Latn", } m["aot"] = { "อะตง", --actual pronounciation 5646, "tbq-bdg", "Latn, Beng", } m["aou"] = { "A'ou", 16109994, "gio", "Latn", -- also Hani? } m["aox"] = { "Atorada", 3507932, "awd", "Latn", } m["aoz"] = { "Uab Meto", 3441962, "poz-tim", "Latn", } m["apb"] = { "Sa'a", 36294, "poz-sls", "Latn", } m["apc"] = { "North Levantine Arabic", 22809485, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["apd"] = { "อาหรับแบบซูดาน", 56573, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["ape"] = { "Bukiyip", 3507895, "paa-tor", "Latn", } m["apf"] = { "Pahanan Agta", 7135432, "phi", "Latn", } m["apg"] = { "Ampanang", 4748035, "poz", "Latn", } m["aph"] = { "Athpare", 3449126, "sit-kie", "Deva, Latn", translit = { Deva = "Deva-translit", }, } m["api"] = { "Apiaká", 3507941, "tup-gua", "Latn", } m["apj"] = { "Jicarilla", 28277, "apa", "Latn", } m["apk"] = { "Plains Apache", 27861, "apa", "Latn", } m["apl"] = { "Lipan", 28269, "apa", "Latn", } m["apm"] = { "Chiricahua", 13368, "apa", "Latn", } m["apn"] = { "Apinayé", 2858311, "sai-nje", "Latn", } m["apo"] = { "Ambul", 12627135, "poz-ocw", "Latn", } m["app"] = { "Apma", 2669188, "poz-vnn", "Latn", } m["apq"] = { "A-Pucikwar", 28466, "qfa-adc", "Latn", } m["apr"] = { "Arop-Lokep", 2863482, "poz-ocw", "Latn", } m["aps"] = { "Arop-Sissano", 12627242, "poz-ocw", "Latn", } m["apt"] = { "Apatani", 56306, "sit-tan", "Latn", } m["apu"] = { "Apurinã", 2859081, "awd", "Latn", } m["apv"] = { "Alapmunte", 16110782, "sai-nmk", "Latn", } m["apw"] = { "อะแพชีตะวันตก", 28060, "apa", "Latn", } m["apx"] = { "Aputai", 12473343, "poz-tim", "Latn", } m["apy"] = { "Apalaí", 2736980, "sai-gui", "Latn", } m["apz"] = { "Safeyoka", 7398693, "ngf-ang", "Latn", } m["aqc"] = { "Archi", 34915, "cau-lzg", "Cyrl", translit = "cau-nec-translit", override_translit = true, display_text = s["cau-Cyrl-displaytext"], strip_diacritics = s["cau-Cyrl-stripdiacritics"], sort_key = { from = { "ккъӏв", "ххьӏв", -- 5 chars "гъӏв", "ёоӏ", "ккъӏ", "ккъв", "къӏв", "ллъв", "ххьӏ", "хъӏв", "хьӏв", "ццӏв", "ччӏв", -- 4 chars "ааӏ", "гӏв", "гъӏ", "гъв", "гьв", "ееӏ", "ёӏ", "ёо", "ииӏ", "кӏв", "ккв", "ккъ", "къӏ", "къв", "кьв", "лӏв", "ллъ", "лъв", "льв", "ооӏ", "пӏв", "ппв", "ссв", "тӏв", "ттв", "ууӏ", "хӏв", "ххв", "хъӏ", "хъв", "хьӏ", "цӏв", "ццӏ", "ццв", "чӏв", "ччӏ", "ээӏ", "юуӏ", "яаӏ", -- 3 chars "аӏ", "аа", "гӏ", "гв", "гъ", "гь", "дв", "еӏ", "ее", "ё", "жв", "зв", "иӏ", "ии", "кӏ", "кв", "кк", "къ", "кь", "лӏ", "лв", "лъ", "ль", "оӏ", "оо", "пӏ", "пв", "пп", "св", "сс", "тӏ", "тв", "тт", "уӏ", "уу", "фв", "хӏ", "хв", "хх", "хъ", "цӏ", "цв", "цц", "чӏ", "чв", "шв", "щв", "эӏ", "ээ", "юӏ", "юу", "яӏ", "яа" -- 2 chars }, to = { "к" .. p[8], "х" .. p[7], "г" .. p[6], "е" .. p[7], "к" .. p[7], "к" .. p[9], "к" .. p[12], "л" .. p[5], "х" .. p[6], "х" .. p[10], "х" .. p[13], "ц" .. p[6], "ч" .. p[5], "а" .. p[3], "г" .. p[2], "г" .. p[5], "г" .. p[7], "г" .. p[9], "е" .. p[3], "е" .. p[5], "е" .. p[6], "и" .. p[3], "к" .. p[2], "к" .. p[5], "к" .. p[6], "к" .. p[11], "к" .. p[13], "к" .. p[15], "л" .. p[2], "л" .. p[4], "л" .. p[7], "л" .. p[9], "о" .. p[3], "п" .. p[2], "п" .. p[5], "с" .. p[3], "т" .. p[2], "т" .. p[5], "у" .. p[3], "х" .. p[2], "х" .. p[5], "х" .. p[9], "х" .. p[11], "х" .. p[12], "ц" .. p[2], "ц" .. p[5], "ц" .. p[7], "ч" .. p[2], "ч" .. p[4], "э" .. p[3], "ю" .. p[3], "я" .. p[3], "а" .. p[1], "а" .. p[2], "г" .. p[1], "г" .. p[3], "г" .. p[4], "г" .. p[8], "д" .. p[1], "е" .. p[1], "е" .. p[2], "е" .. p[4], "ж" .. p[1], "з" .. p[1], "и" .. p[1], "и" .. p[2], "к" .. p[1], "к" .. p[3], "к" .. p[4], "к" .. p[10], "к" .. p[14], "л" .. p[1], "л" .. p[3], "л" .. p[6], "л" .. p[8], "о" .. p[1], "о" .. p[2], "п" .. p[1], "п" .. p[3], "п" .. p[4], "с" .. p[1], "с" .. p[2], "т" .. p[1], "т" .. p[3], "т" .. p[4], "у" .. p[1], "у" .. p[2], "ф" .. p[1], "х" .. p[1], "х" .. p[3], "х" .. p[4], "х" .. p[8], "ц" .. p[1], "ц" .. p[3], "ц" .. p[4], "ч" .. p[1], "ч" .. p[3], "ш" .. p[1], "щ" .. p[1], "э" .. p[1], "э" .. p[2], "ю" .. p[1], "ю" .. p[2], "я" .. p[1], "я" .. p[2] } }, } m["aqd"] = { "Ampari Dogon", 4748057, "nic-dgw", "Latn", } m["aqg"] = { "Arigidi", 34829, "alv-von", "Latn", } m["aqm"] = { "Atohwaim", 11732297, "paa-kay", "Latn", } m["aqn"] = { "Northern Alta", 7058116, "phi", "Latn", } m["aqp"] = { "Atakapa", 10975683, "qfa-iso", "Latn", } m["aqr"] = { "Arhâ", 4790085, "poz-cln", "Latn", } m["aqt"] = { "Angaité", 15736037, "sai-mas", "Latn", } m["aqz"] = { "Akuntsu", 4701960, "tup", "Latn", } m["arc"] = { "อารามายา", -- ใช้แทน แอราเมอิก เพราะซ้ำกับกลุ่มภาษา 28602, "sem-ara", "Hebr, Armi, Syrc, Palm, Nbat, Phnx, Mand, Samr, Hatr, Elym", translit = { Armi = "Armi-translit", Palm = "Palm-translit", }, strip_diacritics = { -- The first three were added by [[User:Wikitiki89]] in 2015 for use with Syriac, which has diacritics that look -- like a diaeresis (syāmē) and macrons above and below (mṭalqānā); see Wikipedia [[w:Syriac alphabet]]. But -- I don't know if they are actually represented using these diacritics. Syrc = {remove_diacritics = c.macron .. c.diaer .. c.macronbelow .. u(0x0730) .. "-" .. u(0x0748)}, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] -- Samr strip_diacritics, sort_key in [[Module:scripts/data]]; previously no sort_key for Samr, presumably a mistake -- Phnx translit in [[Module:scripts/data]] (NOTE: not present before, presumably an accidental omission) } m["ard"] = { "Arabana", 3507959, "aus-kar", "Latn", } m["are"] = { "Western Arrernte", 12645549, "aus-pam", "Latn", } m["arh"] = { "Arhuaco", 2640621, "cba", "Latn", } m["ari"] = { "Arikara", 56539, "cdd", "Latn", strip_diacritics = {remove_diacritics = c.acute}, } m["arj"] = { "Arapaso", 9627356, "sai-tuc", "Latn", } m["ark"] = { "Arikapú", 3446640, "sai-mje", "Latn", } m["arl"] = { "Arabela", 2591221, "sai-zap", "Latn", } m["arn"] = { "Mapudungun", 33730, "sai-ara", "Latn", } m["aro"] = { "Araona", 958414, "sai-tac", "Latn", } m["arp"] = { "Arapaho", 56417, "alg-ara", "Latn", } m["arq"] = { "อาหรับแบบแอลจีเรีย", 56499, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["arr"] = { "Arara-Karo", 35539, "tup", "Latn", } m["ars"] = { "Najdi Arabic", 56574, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["aru"] = { "Arua", 2746221, "auf", "Latn", } m["arv"] = { "Arbore", 56883, "cus-eas", "Latn", } m["arw"] = { "โลโกโน", 2655664, "awd-taa", "Latn", } m["arx"] = { "Aruá", 3507907, "tup", "Latn", } m["ary"] = { "อาหรับแบบโมร็อกโก", 56426, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["arz"] = { "อาหรับแบบอียิปต์", 29919, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["asa"] = { "Pare", 36403, "bnt-par", "Latn", } m["asb"] = { "Assiniboine", 2591288, "sio-dkt", "Latn", } m["asc"] = { "Casuarina Coast Asmat", 11732046, "ngf-ask", "Latn", } m["ase"] = { "มืออเมริกัน", 14759, "sgn", "Sgnw", } m["asf"] = { "Auslan", 29525, "sgn", "Latn", -- when documented } m["asg"] = { "Cishingini", 35199, "nic-kam", "Latn", } m["ash"] = { "Abishira", 2871740, "qfa-dis", -- extinct, poorly documented; isolate or in a proposed Tequiraca-Canichana family by Kaufman (1994) "Latn", } m["asi"] = { "Buruwai", 5001031, "ngf-ask", "Latn", } m["asj"] = { "Nsari", 36418, "nic-bbe", "Latn", } m["ask"] = { "Ashkun", 29379, "nur-sou", "Arab, Latn", } m["asl"] = { "Asilulu", 12473347, "poz-cma", "Latn", } m["asn"] = { "Xingú Asuriní", 8044571, "tup-gua", "Latn", } m["aso"] = { "Dano", 5220979, "ngf-kag", "Latn", } m["asp"] = { "Algerian Sign Language", 3135421, "sgn", } m["asq"] = { "Austrian Sign Language", 36668, "sgn", "Latn", -- when documented } m["asr"] = { "Asuri", 3504321, "mun", "Latn", -- when documented } m["ass"] = { "Ipulo", 35408, "nic-tvc", "Latn", } m["ast"] = { "อัสตูเรียส", 29507, "roa-asl", "Latn", } m["asu"] = { "Tocantins Asurini", 32041490, "tup-gua", "Latn", } m["asv"] = { "Asoa", 56296, "csu-maa", "Latn", } m["asw"] = { "Australian Aboriginal Sign Language", 955216, "sgn", "Latn", -- when documented } m["asx"] = { "Muratayak", 11732766, "ngf-fin", "Latn", } m["asy"] = { "Yaosakor Asmat", 16113158, "ngf-ask", "Latn", } m["asz"] = { "As", 2866218, "poz-hce", "Latn", } m["ata"] = { "Pele-Ata", 56511, "qfa-dis", -- Papuan; possibly in a putative West New Britain family, or an isolate "Latn", } m["atb"] = { "Zaiwa", 56594, "tbq-brm", "Latn, Lisu", -- also Hani? -- Lisu translit, sort_key in [[Module:scripts/data]] } m["atc"] = { "Atsahuaca", 4817730, "sai-pan", "Latn", } m["atd"] = { "Ata Manobo", 12627315, "mno", "Latn", } m["ate"] = { "Atemble", 4813055, "ngf-wso", "Latn", } m["atg"] = { "Okpela", 7082551, "alv-yek", "Latn", } m["ati"] = { "Attié", 34844, "alv-lag", "Latn", } m["atj"] = { "Atikamekw", 56590, "alg", "Latn", ancestors = "cr", } m["atk"] = { "Ati", 3217458, "phi", "Latn", } m["atl"] = { "Mount Iraya Agta", 6921430, "phi", "Latn", } m["atm"] = { "Ata", 4812603, "phi", "Latn", } m["ato"] = { "Atong (Cameroon)", 34824, "nic-grs", "Latn", } m["atp"] = { "Pudtol Atta", 12640726, "phi", "Latn", } m["atq"] = { "Aralle-Tabulahan", 4783889, "poz-ssw", "Latn", } m["atr"] = { "Waimiri-Atroari", 56865, "sai-car", "Latn", } m["ats"] = { "Gros Ventre", 56628, "alg-ara", "Latn", } m["att"] = { "Pamplona Atta", 12639245, "phi", "Latn", } m["atu"] = { "Reel", 7306882, "sdv-dnu", "Latn", } m["atv"] = { "อัลไตเหนือ", 2640863, "trk-ssb", "Cyrl", translit = "Altai-translit", } m["atw"] = { "Atsugewi", 56718, "nai-pal", "Latn", } m["atx"] = { "Arutani", 56609, nil, "Latn", } m["aty"] = { "อาเนตยูม", 2379113, "poz-vns", "Latn", } m["atz"] = { "Arta", 3508067, "phi", "Latn", } m["aua"] = { "Asumboa", 4811870, "poz-tem", "Latn", } m["aub"] = { "Alugu", 12626798, "tbq-urp", "Latn", -- also Hani? } m["auc"] = { "Huaorani", 758570, "qfa-iso", "Latn", } m["aud"] = { "Anuta", 35326, "poz-pnp", "Latn", } m["aug"] = { "Aguna", 34733, "alv-gbe", "Latn", } m["auh"] = { "Aushi", 2872082, "bnt-sbi", "Latn", } m["aui"] = { "Anuki", 3508132, "poz-ocw", "Latn", } m["auj"] = { "Awjila", 56398, "ber", "Latn, Arab, Tfng", } m["auk"] = { "Heyo", 3504295, "paa-tor", "Latn", } m["aul"] = { "Aulua", 427300, "poz-vnc", "Latn", } m["aum"] = { "Asu", 34798, "alv-ngb", "Latn", } m["aun"] = { "Molmo One", 12637224, "paa-tor", "Latn", } m["auo"] = { "Auyokawa", 56247, "cdc-wst", "Latn", } m["aup"] = { "Makayam", 6738863, "paa-ani", "Latn", } m["auq"] = { "Anus", 23855, "poz-ocw", "Latn", } m["aur"] = { "Aruek", 3504279, "paa-tor", "Latn", } m["aut"] = { "Austral", 2669261, "poz-pep", "Latn", } m["auu"] = { "Auye", 4827334, "ngf-pan", "Latn", } m["auw"] = { "Awyi", 3513326, "paa-brd", "Latn", } m["aux"] = { "Aurá", 3507995, "tup-gua", "Latn", } m["auy"] = { "Auyana", 2873211, "ngf-kag", "Latn", } m["auz"] = { "อาหรับแบบอุซเบกิสถาน", 3399507, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["avb"] = { "Avau", 12627412, "poz-ocw", "Latn", } m["avd"] = { "Alviri-Vidari", 3327357, "xme", "fa-Arab", ancestors = "xme-mid", } m["avi"] = { "Avikam", 34840, "alv-lag", "Latn", } m["avk"] = { "โคทาวา", 1377116, "art", "Latn", type = "appendix-constructed", } m["avm"] = { "Angkamuthi", 62603022, "aus-pmn", "Latn", } m["avn"] = { "Avatime", 34796, "alv-ktg", "Latn", } m["avo"] = { "Agavotaguerra", 3508007, "awd", "Latn", } m["avs"] = { "Aushiri", 3409318, "sai-zap", "Latn", } m["avt"] = { "Au", 3446608, "paa-tor", "Latn", } m["avu"] = { "Avokaya", 56685, "csu-mma", "Latn", } m["avv"] = { "Avá-Canoeiro", 4829584, "tup-gua", "Latn", } m["awa"] = { "อวัธ", 29579, "inc-hie", "Deva, Kthi, fa-Arab", ancestors = "inc-oaw", translit = { Deva = "Deva-translit", Kthi = "Kthi-translit", }, } m["awb"] = { "Awa (New Guinea)", 2874650, "ngf-kag", "Latn", } m["awc"] = { "Cicipu", 35193, "nic-kam", "Latn", } m["awe"] = { "Awetí", 4830038, "tup", "Latn", } m["awg"] = { "Anguthimri", 4764288, "aus-pam", "Latn", } m["awh"] = { "Awbono", 3446684, "paa-baw", "Latn", } m["awi"] = { "Aekyom", 3399691, "paa-kae", "Latn", } m["awk"] = { "Awabakal", 3449138, "aus-pam", "Latn", } m["awm"] = { "Arawum", 4784537, "ngf-rai", "Latn", } m["awn"] = { "Awngi", 34934, "cus-cen", "Ethi", } m["awo"] = { "Awak", 3446643, "alv-wjk", "Latn", } m["awr"] = { "Awera", 56379, "paa-lkp", "Latn", } m["aws"] = { "South Awyu", 12633986, "ngf-gaw", "Latn", } m["awt"] = { "Araweté", 4784535, "tup-gua", "Latn", } m["awu"] = { "Central Awyu", 12628801, "ngf-gaw", "Latn", } m["awv"] = { "Jair Awyu", 16110177, "ngf-gaw", "Latn", } m["aww"] = { "Awun", 56369, "paa-spk", "Latn", } m["awx"] = { "Awara", 2874670, "ngf-fin", "Latn", } m["awy"] = { "Edera Awyu", 12630425, "ngf-gaw", "Latn", } m["axb"] = { "Abipón", 11252539, "sai-guc", "Latn", } m["axe"] = { "Ayerrerenge", 16112737, "aus-pam", "Latn", } m["axg"] = { "Arára (Mato Grosso)", 3446660, nil, "Latn", } m["axk"] = { "Aka (Central Africa)", 11010149, "bnt-ngn", "Latn", } m["axl"] = { "Lower Southern Aranda", 6693295, "aus-pam", "Latn", } m["axm"] = { "อาร์มีเนียกลาง", 4438498, "hyx", "Armn", ancestors = "xcl", -- Armn translit in [[Module:scripts/data]] override_translit = true, strip_diacritics = { remove_diacritics = "՞՜՛՟", from = {"եւ", "ՙ", "՚"}, to = {"և", "ʻ", "’"} } } m["axx"] = { "Xârâgurè", 8045635, "poz-cln", "Latn", } m["aya"] = { "Awar", 56876, "paa-ram", "Latn", } m["ayb"] = { "Ayizo", 34841, "alv-pph", "Latn", } m["ayd"] = { "Ayabadhu", 3509164, "aus-pmn", "Latn", } m["aye"] = { "Ayere", 34788, "alv-aah", "Latn", } m["ayg"] = { "Nyanga (Togo)", 35446, "alv-gng", "Latn", } m["ayi"] = { "Leyigha", 3914492, "nic-uce", "Latn", } m["ayk"] = { "Akuku", 3450179, "alv-nwd", "Latn", } m["ayl"] = { "อาหรับแบบลิเบีย", 56503, "sem-arb", "Arab", strip_diacritics = "ar-stripdiacritics", } m["ayn"] = { "อาหรับแบบเยเมน", 1686766, "sem-arb", "Arab, Hebr", strip_diacritics = { Arab = "ar-stripdiacritics", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["ayo"] = { "Ayoreo", 56634, "sai-zam", "Latn", } m["ayp"] = { "อาหรับแบบเมโสโปเตเมียเหนือ", 56577, "sem-arb", "Arab", ancestors = "acm", strip_diacritics = "ar-stripdiacritics", } m["ayq"] = { "Ayi", 56449, "paa-spk", "Latn", } m["ays"] = { "Sorsogon Ayta", 7563752, "phi", "Latn", } m["ayt"] = { "Bataan Ayta", 4921648, "phi", "Latn", } m["ayu"] = { "Ayu", 34786, "alv", "Latn", } m["ayy"] = { "Tayabas Ayta", 7689745, "phi", "Latn", } m["ayz"] = { "Maybrat", 4830892, "paa-mbr", -- either an isolate; grouped with Abun and the West Bird's Head family; or in the putative West Papuan family "Latn", } m["aza"] = { "Azha", 4832486, "tbq-axi", "Latn", } m["azd"] = { "Eastern Durango Nahuatl", 16115449, "azc-dur", "Latn", } m["azg"] = { "San Pedro Amuzgos Amuzgo", 35092, "omq", "Latn", } m["azm"] = { "Ipalapa Amuzgo", 12633013, "omq", "Latn", } m["azn"] = { "Western Durango Nahuatl", 12645553, "azc-dur", "Latn", } m["azo"] = { "Awing", 34856, "nic-nge", "Latn", } m["azt"] = { "Faire Atta", 12630884, "phi", "Latn", } m["azz"] = { "Highland Puebla Nahuatl", 12953754, "azc-nah", "Latn", } return require("Module:languages").finalizeData(m, "language") qdkzeufhnt7uzojn6s2elz1kq9gbvyc มอดูล:en-headword 828 37360 5723288 5647504 2026-05-20T05:20:09Z OctraBot 3198 5723288 Scribunto text/plain local export = {} local pos_functions = {} --[==[ Author from 2020 on: mostly Benwing2, with significant contributions from Theknightwho. Based on a prior version by Rua (by now mostly rewritten), with contributions from Erutuon and others (see history for full attribution). ]==] local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require = require local require_when_needed = require("Module:require when needed") local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local headword_module = "Module:headword" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local JSON_module = "Module:JSON" local labels_module = "Module:labels" local links_module = "Module:links" local parameters_module = "Module:parameters" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local yesno_module = "Module:yesno" local iut = require_when_needed(inflection_utilities_module) local put = require_when_needed(parse_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local add_links_to_multiword_term = require_when_needed(headword_utilities_module, "add_links_to_multiword_term") local add_suffix = require_when_needed(en_utilities_module, "add_suffix") local apply_link_modifiers = require_when_needed(headword_utilities_module, "apply_link_modifiers") local concat = table.concat local deepEquals = require_when_needed(table_module, "deepEquals") local dump = mw.dumpObject local format_categories = require_when_needed(utilities_module, "format_categories") local full_headword = require_when_needed(headword_module, "full_headword") local get_label_info = require_when_needed(labels_module, "get_label_info") local get_link_page = require_when_needed(links_module, "get_link_page") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local insert = table.insert local insertIfNot = require_when_needed(table_module, "insertIfNot") local ipairs = ipairs local is_regular_plural = require_when_needed(en_utilities_module, "is_regular_plural") local list_to_set = require_when_needed(table_module, "listToSet") local pairs = pairs local process_params = require_when_needed(parameters_module, "process") local remove = table.remove local remove_links = require_when_needed(links_module, "remove_links") local replacement_escape = require_when_needed(string_utilities_module, "replacement_escape") local shallowCopy = require_when_needed(table_module, "shallowCopy") local singularize = require_when_needed(en_utilities_module, "singularize") local split = require_when_needed(string_utilities_module, "split") local toJSON = require_when_needed(JSON_module, "toJSON") local toNFD = mw.ustring.toNFD local type = type local ulen = require_when_needed(string_utilities_module, "len") local ulower = require_when_needed(string_utilities_module, "lower") local umatch = require_when_needed(string_utilities_module, "match") local u = require_when_needed(string_utilities_module, "char") local ugsub = require_when_needed(string_utilities_module, "gsub") local lang = require("Module:languages").getByCode("en") local langname = --[[lang:getCanonicalName()]] lang:getCategoryName() local list_param = {list = true, disallow_holes = true} local list_allow_holes = {list = true, allow_holes = true} local boolean_param = {type = "boolean"} local function ine(val) if val == "" then return nil else return val end end local function track(page) require("Module:debug/track")("en-headword/" .. page) return true end ------------------------------------------- UTILITY FUNCTIONS ------------------------------------------ -- Parse and return an inflection not requiring additional processing. The raw arguments come from `args[field]`, which -- is parsed for inline modifiers. local function parse_inflection(args, field, is_head) local argfield = field if type(argfield) == "table" then argfield = argfield[1] end return m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[argfield], splitchar = ",", is_head = is_head, } end -- Insert the parsed inflections in `terms` (as parsed by `parse_inflection`) into `data.inflections`, with label -- `label` and optional accelerator spec `accel`. local function insert_inflection(data, terms, label, accel, no_label) for _, termobj in ipairs(terms) do m_headword_utilities.remove_termobj_field_modifiers(termobj) end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, no_label = no_label, accel = accel and {form = accel} or nil, } end -- Insert a fixed label `label` into the inflections for `data`. If `originating_term` is supplied, copy the qualifiers, -- labels and references from it into the fixed label. local function insert_fixed_inflection(data, label, originating_term) m_headword_utilities.insert_fixed_inflection { headdata = data, originating_term = originating_term, label = label, } end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, -- If we want check_missing support, we need to supply the following: -- check_missing = true, -- lang = lang, -- plpos = plpos, } end -- These functions are used directly in the <> format as well as in the utility functions #2 below. local function compute_double_last_cons_stem(term) local last_cons = term:match("([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ])$") if not last_cons then error("Verb stem '" .. term .. "' must end in a consonant to use ++") end return term .. last_cons end local function compute_plusplus_s_form(term, default_s_form) if term:find("[szx]$") then -- regas -> regasses, derez -> derezzes return compute_double_last_cons_stem(term) .. "es" else return default_s_form end end -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local iparams = { [1] = true, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "Template:en-head" and "interjection" or error("Part of speech must be specified in 1=") poscat = require(headword_module).canonicalize_pos(poscat) end -- หมวดหมู่เป็นภาษาไทย local poscat_th = require("Module:th-utilities").th_pos(poscat) local indexing_poscat = pos_in_1 and "head" or poscat_th local params = { ["head"] = list_param, ["id"] = true, ["json"] = boolean_param, ["sort"] = true, ["splithyph"] = boolean_param, ["nosplithyph"] = boolean_param, ["hyphspace"] = boolean_param, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean_param", alias_of = "nolink"}, ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["nomultiwordcat"] = boolean_param, ["abbr"] = list_param, ["the"] = true, ["def"] = {alias_of = "the"}, ["pagename"] = true, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end local pos_data = pos_functions[indexing_poscat] local pos_func if pos_data then local pos_params = pos_data.params if pos_params then for key, val in pairs(pos_params) do params[key] = val end end pos_func = pos_data.func end local args = process_params(parargs, params) -- Account for unsupported titles, e.g. 'C|N>K' instead of 'Unsupported titles/C through N to K'. local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = parse_inflection(args, "head", "is_head") local heads = user_specified_heads local autohead if args.nolink or not pagename:find("[ '%-]") then autohead = pagename else local en_no_split_apostrophe_words = list_to_set { "one's", "someone's", "he's", "she's", "it's", } local en_include_hyphen_prefixes = list_to_set { -- We don't include things that are also words even though they are often (perhaps mostly) prefixes, e.g. -- "be", "counter", "cross", "extra", "half", "mid", "over", "pan", "under". "acro", "acousto", "Afro", "agro", "anarcho", "angio", "Anglo", "ante", "anti", "arch", "auto", "bi", "bio", "cis", "co", "cryo", "crypto", "de", "demi", "eco", "electro", "Euro", "ex", "Greco", "hemi", "hydro", "hyper", "hypo", "infra", "Indo", "inter", "intra", "Judeo", "macro", "meta", "micro", "mini", "multi", "neo", "neuro", "non", "para", "peri", "post", "pre", "pro", "proto", "pseudo", "re", "semi", "sub", "super", "trans", "un", "vice", } local function is_english(term) local title = mw.title.new(term) if title and title.exists then local content = title:getContent() if content and content:find("== ?ภาษาอังกฤษ ?==\n") then return true end end return false end local function en_split_hyphen_when_space(word) if not word:find("-", nil, true) then return nil end if args.hyphspace then return "[[" .. word:gsub("%-+", " ") .. "|" .. word .. "]]" end if args.nosplithyph then return "[[" .. word .. "]]" end if not args.splithyph then local space_word = word:gsub("%-+", " ") if is_english(space_word) then return "[[" .. space_word .. "|" .. word .. "]]" end if is_english(word) then return "[[" .. word .. "]]" end end return nil end local function en_split_apostrophe(word) local base = word:match("^(.*)'s$") if base then return "[[" .. base .. "]][[-'s|'s]]" end -- Only treat final apostrophe as possessive if preceded by something that looks like a plural ending in /z/. -- In particular we don't want to do it for words like [[truckin']]. base = word:match("^(.*[sxz])'$") if base then if base:find("s$") then local sg = singularize(base) if is_english(sg) then return "[[" .. sg .. "|" .. base .. "]][[-'|']]" end end return "[[" .. base .. "]][[-'|']]" end return "[[" .. word .. "]]" end autohead = add_links_to_multiword_term(pagename, { split_hyphen_when_space = en_split_hyphen_when_space, split_apostrophe = en_split_apostrophe, no_split_apostrophe_words = en_no_split_apostrophe_words, include_hyphen_prefixes = en_include_hyphen_prefixes, }) end if not heads[1] then heads = {{term = autohead}} else for _, headobj in ipairs(heads) do local head = headobj.term if head:find("^~") then head = apply_link_modifiers(autohead, head:sub(2), lang) headobj.term = head elseif head:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. headobj.term = autohead .. head end if head == autohead then track("redundant-head") end end end -- handle the=/def= if args.the == "~" then local newheads = {} for _, headobj in ipairs(heads) do local barehead = shallowCopy(headobj) insert(newheads, barehead) headobj.term = "the " .. headobj.term insert(newheads, headobj) end heads = newheads elseif args.the then local the = require(yesno_module)(args.the) if the then for _, headobj in ipairs(heads) do headobj.term = "the " .. headobj.term end end end local data = { lang = lang, pos_category = poscat_th, categories = {}, heads = heads, user_specified_heads = user_specified_heads, -- We use our own splitting algorithm so the redundant head cat will be inaccurate. no_redundant_head_cat = true, inflections = {}, nomultiwordcat = args.nomultiwordcat, sort_key = args.sort, pagename = pagename, id = args.id, force_cat_output = force_cat, } local function inscat(cat) --insert(data.categories, langname .. " " .. cat) if mw.ustring.find(cat, "^ศัพท์") then insert(data.categories, "ศัพท์" .. langname .. mw.ustring.sub(cat, 6)) else insert(data.categories, cat .. langname) end end local is_suffix = false if args.suffix or not args.nosuffix and pagename:find("^%-") and not pagename:find("^%-%-") and poscat_th ~= "รูปปัจจัย" then is_suffix = true data.pos_category = "ปัจจัย" local singular_poscat = --[[singularize(poscat)]] poscat_th inscat("ปัจจัยสร้าง" .. singular_poscat) insert(data.inflections, {label = "ปัจจัยสร้าง" .. singular_poscat}) end if pos_func then pos_func(args, data, is_suffix) end local extra_categories = {} if pagename:find("[Qq]") then -- Check for q not followed by u. We want to exclude things like [[13q deletion syndrome]] and [[BFOQ]] that -- don't have a lowercase letter on either side, as well as things like [[& seq.]] and [[acq.]] that are -- abbreviations for words containing a following u. -- -- Approximate range of combining diacritics; we want to remove them so the checks below for -- a lowercase letter next to the q aren't tripped up by diacritics on the letter. local u300 = u(0x0300) local u36F = u(0x036F) local pagename_no_diacritics = ugsub(toNFD(pagename), "[" .. u300 .. "-" .. u36F .. "]", "") if pagename_no_diacritics:find("[Qq][a-tv-z]") or pagename_no_diacritics:find("[a-z]q[^u.]") or pagename_no_diacritics:find("[a-z]q$") then inscat("ศัพท์ที่มี Q ไม่ตามด้วย U") end end -- toNFD performs decomposition, so letters that decompose to an ASCII -- vowel and a diacritic, such as é, are counted as vowels and do not do not -- need to be included in the pattern. if not umatch(ulower(toNFD(pagename)), "[aeiouyæœøəªºαεηιουω]") then inscat("ศัพท์ที่ไม่มีสระ") end if pagename:find("yre$") then inscat("ศัพท์ที่ลงท้ายด้วย -yre") end if not pagename:find(" ") and ulen(pagename) >= 25 then insert(extra_categories, "ศัพท์" .. langname .. "ที่มีขนาดยาว") end if pagename:find("^[^aeiou ]*a[^aeiou ]*e[^aeiou ]*i[^aeiou ]*o[^aeiou ]*u[^aeiou ]*$") then inscat("ศัพท์ที่ใช้สระทั้งหมดตามลำดับ") end parse_and_insert_inflection(data, args, "abbr", "คำย่อ") if args.json then return toJSON(data) end return full_headword(data) .. (extra_categories[1] and format_categories(extra_categories, lang, args.sort) or "") end local function make_default_comparative(word) if word == "good" or word == "well" then return {"better"} elseif word == "bad" or word == "badly" then return {"worse"} elseif word == "far" then return {"further", "farther"} else return {add_suffix(word, "r")} end end local function make_default_superlative(word) if word == "good" or word == "well" then return {"best"} elseif word == "bad" or word == "badly" then return {"worst"} elseif word == "far" then return {"furthest", "farthest"} else return {add_suffix(word, "st.superlative")} end end -- This function does the common work between adjectives and adverbs. local function process_comparative_args(data, args, plpos) local pagename = data.pagename local comps = parse_inflection(args, 1) local sups = parse_inflection(args, "sup") local outcomps, outsups if args.componly then if comps[1] then error("Can't specify comparatives of comparative-only " .. plpos) end insert(data.inflections, {label = glossary_link("ขั้นกว่า") .. "เท่านั้น"}) insert(data.categories, plpos .. "ขั้นกว่าเท่านั้น" .. langname) -- Set to empty list so we don't get any comparatives output, but process superlatives if specified. outcomps = {} if not sups[1] then -- Set to empty list so we don't get any superlatives output unless explicitly given. outsups = {} end elseif args.suponly then if comps[1] or sups[1] then error("Can't specify comparatives or superlatives of or superlative-only " .. plpos) end insert(data.inflections, {label = glossary_link("ขั้นสุด") .. "เท่านั้น"}) insert(data.categories, plpos .. "ขั้นสุดเท่านั้น" .. langname) return end -- If the first parameter is ?, then don't show anything, just return. if comps[1] and comps[1].term == "?" then if comps[2] then error("Can't specify additional comparatives along with '?'") end if sups[1] then error("Can't specify superlatives along with '?' for the comparative") end return end if comps[1] and comps[1].term == "-" then local hyphencomp = remove(comps, 1) -- Remove the "-" but retain for qualifiers, labels, references -- Not (generally) comparable; may occasionally have a comparative if comps[1] then insert_fixed_inflection(data, "โดยทั่วไป<<เปรียบเทียบไม่ได้>>", hyphencomp) elseif not sups[1] then insert_fixed_inflection(data, "<<เปรียบเทียบไม่ได้>>", hyphencomp) insert(data.categories, plpos .. "เปรียบเทียบไม่ได้" .. langname) return else -- No comparative, but a superlative. insert_inflection() will correctly generate 'no comparative' if we -- pass in "-" as the value. outcomps = {hyphencomp} end elseif not comps[1] then comps = {{term = "more"}} end if not outcomps then -- not if we set `outcomps` to "-" above or processed a comparative-only term outcomps = {} -- Go over each parameter given and create a comparative and superlative form. for _, compobj in ipairs(comps) do local comp = compobj.term if comp == "-" then error("Comparative of '-' only allowed as first comparative") end if comp == "+" then comp = "+more" elseif comp == "more" and pagename ~= "many" and pagename ~= "much" then comp = "+more" elseif comp == "further" and pagename ~= "far" then comp = "+further" elseif comp == "better" and pagename ~= "good" and pagename ~= "well" then comp = "+better" elseif comp:find("~") then comp = comp:gsub("~", replacement_escape(pagename)) end compobj.origterm = comp if comp == "+more" then comp = "more [[" .. pagename .. "]]" elseif comp == "+further" then comp = {"further [[" .. pagename .. "]]", "farther [[" .. pagename .. "]]"} elseif comp == "+better" then comp = "better [[" .. pagename .. "]]" elseif comp == "er" then -- Add -er. comp = add_suffix(pagename, "r") elseif comp == "ier" then if pagename:sub(-1) ~= "y" then error("Can't specify 'ier' comparative unless the term ends with 'y': " .. pagename) end comp = pagename:gsub("e?y$", "ier") elseif comp:find("^%+") then local special = m_headword_utilities.get_special_indicator(comp, "noerror") if special then comp = m_headword_utilities.handle_multiword(pagename, special, make_default_comparative) end end if type(comp) == "table" and not comp[2] then comp = comp[1] end if type(comp) == "table" then for i = 1, #comp - 1 do local outobj = shallowCopy(compobj) outobj.term = comp[i] insert(outcomps, outobj) end compobj.term = comp[#comp] insert(outcomps, compobj) else compobj.term = comp insert(outcomps, compobj) end end end if sups[1] and sups[1].term == "-" then if sups[2] then error("Can't specify '-' as superlative followed by further values") end -- No superlative. insert_inflection() will correctly generate 'no superlative' if we pass in "-" as the value. outsups = sups else if not sups[1] then sups = {{term = "+"}} end end -- `outsups` will be set if we set `outsups` to "-" above or processed a comparative-only term without superlatives. if not outsups then outsups = {} local function process_sup(sup, special, supobj, compobj) if special then sup = m_headword_utilities.handle_multiword(pagename, special, make_default_superlative) elseif sup == "-" or sup == "+" then error(("Internal error: Superlative value of '%s' should have been handled earlier"):format(sup)) elseif sup == "+most" then sup = "most [[" .. pagename .. "]]" elseif sup == "+furthest" then sup = {"furthest [[" .. pagename .. "]]", "farthest [[" .. pagename .. "]]"} elseif sup == "+best" then sup = "best [[" .. pagename .. "]]" elseif sup == "est" then -- Add -est. sup = add_suffix(pagename, "st.superlative") elseif sup == "iest" then if pagename:sub(-1) ~= "y" then error("Can't specify 'iest' superlative unless the term ends with 'y': " .. pagename) end sup = pagename:gsub("e?y$", "iest") end if type(sup) == "table" and not sup[2] then sup = sup[1] end if compobj then supobj = shallowCopy(supobj) supobj = m_headword_utilities.combine_termobj_qualifiers_labels(supobj, compobj) end if type(sup) == "table" then for i = 1, #sup - 1 do local outobj = shallowCopy(supobj) outobj.term = sup[i] insert(outsups, outobj) end supobj.term = sup[#sup] insert(outsups, supobj) else supobj.term = sup insert(outsups, supobj) end end for _, supobj in ipairs(sups) do local sup = supobj.term if sup == "-" then error("Superlative of '-' only allowed as first superlative") end if sup == "+" then if not comps[1] then error("Superlative of '+' can't be specified when there are no comparatives") end for _, compobj in ipairs(comps) do local comp = compobj.origterm local special if comp == "+more" then sup = "+most" elseif comp == "+further" then sup = "+furthest" elseif comp == "+better" then sup = "+best" elseif comp == "er" then sup = "est" elseif comp == "ier" then sup = "iest" else if comp:find("^%+") then special = m_headword_utilities.get_special_indicator(comp, "noerror") end if not special then -- If the full comparative was given, then derive the superlative by replacing -er with -- -est. if comp:sub(-2) == "er" then sup = comp:sub(1, -3) .. "est" else error(("The superlative cannot be derived automatically from comparative '%s' because it doesn't end in -er"):format(comp)) end end end process_sup(sup, special, supobj, compobj) end else local special = m_headword_utilities.get_special_indicator(sup, "noerror") -- Do some work here rather than in process_sup() so we don't end up double-processing a term with a '~' -- in it or a term that happens to be 'most' or similar after substitution of ~ in the comparative. if not special then if sup == "most" and pagename ~= "many" and pagename ~= "much" then sup = "+most" elseif sup == "furthest" and pagename ~= "far" then sup = "+furthest" elseif sup == "best" and pagename ~= "good" and pagename ~= "well" then sup = "+best" elseif sup:find("~") then sup = sup:gsub("~", replacement_escape(pagename)) end end process_sup(sup, special, supobj) end end end insert_inflection(data, outcomps, "<<ขั้นกว่า>>", "ขั้นกว่า") insert_inflection(data, outsups, "<<ขั้นสุด>>", "ขั้นสุด") end pos_functions["คำคุณศัพท์"] = { params = { [1] = list_param, ["comp_qual"] = {list = "comp\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the comparative value", }, ["sup"] = list_param, ["sup_qual"] = {list = "sup\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the superlative value", }, ["componly"] = boolean_param, ["suponly"] = boolean_param, }, func = function(args, data) -- Process the comparatives and superlatives. process_comparative_args(data, args, "คำคุณศัพท์") end, } pos_functions["คำกริยาวิเศษณ์"] = { params = { [1] = list_param, ["comp_qual"] = {list = "comp\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the comparative value", }, ["sup"] = list_param, ["sup_qual"] = {list = "sup\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the superlative value", }, ["componly"] = boolean_param, ["suponly"] = boolean_param, }, func = function(args, data) -- Process the comparatives and superlatives. process_comparative_args(data, args, "คำกริยาวิเศษณ์") end, } local function escape(str) return (str:gsub("\\([:#])", "\\\\%1") :gsub("[:#]", "\\%0")) end local function canonicalize_plural(pl, pagename, pos) if pl == "+" then return escape(add_suffix(pagename, "s.plural", pos)) elseif pl == "++" then return escape(compute_plusplus_s_form(pagename, add_suffix(pagename, "s.plural", pos))) elseif pl == "*" then return escape(pagename) elseif pl == "ies" then if pagename:sub(-1) == "y" then return escape(pagename:gsub("e?y$", pl)) end error("Can't specify 'ies' plural unless the term ends with 'y'.") elseif pl == "s" or pl == "es" or pl == "'s" then return escape(pagename .. pl) end end local function do_nouns(args, data, pos) local pagename = data.pagename pos = pos or "คำนาม" local plurals = parse_inflection(args, 1) local function insert_plurale_tantum_inflections(is_plural_only, originating_label) if args.sg[1] then insert_fixed_inflection(data, "พหูพจน์ปกติ", originating_label) parse_and_insert_inflection(data, args, "sg", "เอกพจน์") elseif is_plural_only then insert_fixed_inflection(data, "พหูพจน์เท่านั้น", originating_label) end if args.attr[1] then parse_and_insert_inflection(data, args, "attr", "ตัวบอกคุณลักษณะ") end end local function first_pl_term() return plurals[1] and plurals[1].term or nil end if first_pl_term() == "p" then -- plurale tantum if plurals[2] then error("With plurale tantum noun, can't specify more than one plural") end data.genders = {"p"} -- this should auto-insert the correct 'pluralia tantum' category insert_plurale_tantum_inflections("พหูพจน์เท่านั้น", plurals[1]) return end local function inscat(cat) --insert(data.categories, langname .. " " .. cat) if mw.ustring.find(cat, "£") then local catname = mw.ustring.gsub(cat, "£", langname) -- แทรกภาษาตรง £, ต้องการรับเฉพาะ return ค่าแรก insert(data.categories, catname) elseif mw.ustring.find(cat, "^ศัพท์") then insert(data.categories, "ศัพท์" .. langname .. mw.ustring.sub(cat, 6)) else insert(data.categories, cat .. langname) end end local need_default_plural = pos == "คำนาม" if first_pl_term() == "sp" then -- construed as singular or plural sp = remove(plurals, 1) -- Remove the "sp" but retain it for its qualifiers, labels, references inscat("คำนาม£ที่อนุมานว่าเป็นเอกพจน์หรือพหูพจน์") data.genders = {"s", "p"} -- this should auto-insert the correct 'pluralia tantum' category insert_plurale_tantum_inflections(nil, sp) need_default_plural = false elseif first_pl_term() == "-" then -- Uncountable noun; may occasionally have a plural local hyphpl = remove(plurals, 1) -- Remove the "-" but retain for qualifiers, labels, references inscat("คำนามนับไม่ได้") -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert_fixed_inflection(data, "โดยปกติ<<นับไม่ได้>>", hyphpl) else insert_fixed_inflection(data, "<<นับไม่ได้>>", hyphpl) end need_default_plural = false elseif first_pl_term() == "#" then -- Usually countable (e.g., "grilled cheese") local hashpl = remove(plurals, 1) -- Remove the "#" but retain for qualifiers, labels, references insert_fixed_inflection(data, "โดยปกติ<<นับได้>>", hashpl) inscat("คำนามนับไม่ได้") inscat("คำนามนับได้") -- If no plural was given, add a default one now if not plurals[1] then plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end elseif first_pl_term() == "~" then -- Mixed countable/uncountable noun, always has a plural local tildepl = remove(plurals, 1) -- Remove the "~" but retain for qualifiers, labels, references insert_fixed_inflection(data, "<<นับได้>>และ<<นับไม่ได้>>", tildepl) inscat("คำนามนับไม่ได้") inscat("คำนามนับได้") -- If no plural was given, add a default one now if not plurals[1] then plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end end -- Plural is unknown if first_pl_term() == "?" then local questionpl = remove(plurals, 1) -- Remove the "?" but retain for qualifiers, labels, references -- Not desired; see [[Wiktionary:Tea_room/2021/August#"Plural unknown or uncertain"]] -- insert_fixed_inflection(data, "plural unknown or uncertain", questionpl) inscat("nouns with unknown or uncertain plurals") if plurals[1] then error("Can't specify explicit plurals along with '?' for unknown/uncertain plural") end return end -- Plural is not attested if first_pl_term() == "!" then local exclampl = remove(plurals, 1) -- Remove the "!" but retain for qualifiers, labels, references insert_fixed_inflection(data, "plural not attested", exclampl) inscat("nouns with unattested plurals") if plurals[1] then error("Can't specify explicit plurals along with '!' for unattested plural") end return end -- If no plural was given, maybe add a default one, otherwise (when "-" was given or proper noun) return. if not plurals[1] then if not need_default_plural then inscat("คำนามนับไม่ได้") return end plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end -- There are plural forms to show, so show them. inscat("คำนามนับได้") local irregular, indeclinable for i, pl in ipairs(plurals) do local canon_pl = canonicalize_plural(pl.term, pagename, pos) if canon_pl then pl.term = canon_pl end local pl_term = get_link_page(pl.term, lang) if not (pagename:find(" ") or is_regular_plural(pl_term, pagename)) then irregular = true if pl_term == pagename then indeclinable = true end end end if irregular then inscat("คำนาม£ที่มีพหูพจน์ไม่ปรกติ") end if indeclinable then inscat("คำนามผันรูปไม่ได้") end insert_inflection(data, plurals, "พหูพจน์", "p") end -- Return the parameters to be used for nouns and proper nouns. Currently the same. local noun_params = { [1] = list_param, ["pl\1qual"] = {list = true, allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the plural", }, -- The following four only used for pluralia tantum (1=p) ["sg"] = list_param, ["attr"] = list_param, } pos_functions["คำนาม"] = { params = noun_params, func = do_nouns, } pos_functions["คำวิสามานยนาม"] = { params = noun_params, func = function(args, data) return do_nouns(args, data, "คำวิสามานยนาม") end, } local function base_default_verb_forms(verb) return escape(add_suffix(verb, "s.verb")), escape(add_suffix(verb, "ing")), escape(add_suffix(verb, "d")) end local function default_verb_forms(verb) local full_s_form, full_ing_form, full_ed_form = base_default_verb_forms(verb) if verb:find(" ") then local first, rest = verb:match("^(.-)( .*)$") local first_s_form, first_ing_form, first_ed_form = base_default_verb_forms(first) return full_s_form, full_ing_form, full_ed_form, first_s_form .. rest, first_ing_form .. rest, first_ed_form .. rest, first, rest else return full_s_form, full_ing_form, full_ed_form, nil, nil, nil, nil, nil end end local function compute_double_last_cons_stem_of_split_verb(verb, ending) local first, rest = verb:match("^(.-)( .*)$") if not first then error("Verb '" .. verb .. "' must have a space in it to use **") end local last_cons = first:match("([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ])$") if not last_cons then error("First word '" .. first .. "' must end in a consonant to use **") end return first .. last_cons .. ending .. rest end local function check_non_nil_star_form(form, pagename) if form == nil then error("Verb '" .. pagename .. "' must have a space in it to use *, **, *l, *! or *'") end return form end local function sub_tilde(form, pagename) if not form then return nil end if form:find("~") then form = form:gsub("~", replacement_escape(pagename)) end return form end local deprecated_qual_replaced_by_inline_modifier = { list = true, allow_holes = true, replaced_by = false, instead = "use an inline modifier <q:...> or <l:...> on the value" } pos_functions["คำกริยา"] = { params = { [1] = {list = "pres_3sg", disallow_holes = true}, ["pres_3sg\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [2] = {list = "pres_ptc", disallow_holes = true}, ["pres_ptc\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [3] = {list = "past", disallow_holes = true}, ["past\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [4] = {list = "past_ptc", allow_holes = true}, ["past_ptc\1_qual"] = deprecated_qual_replaced_by_inline_modifier, ["noautolinkverb"] = boolean_param, ["angle_bracket"] = boolean_param, }, func = function(args, data) -- Get parameters local par1s local par2s = parse_inflection(args, {2, "pres_ptc"}) local par3s = parse_inflection(args, {3, "past"}) local par4s = parse_inflection(args, {4, "past_ptc"}) local pres_3sgs, pres_ptcs, pasts, past_ptcs local pagename = data.pagename ------------------------------------------- UTILITY FUNCTIONS #2 ------------------------------------------ -- These functions are used in both in the separate-parameter format and in the override params such as past_ptc2=. local full_default_s, full_default_ing, full_default_ed, split_default_s, split_default_ing, split_default_ed local lemma local function set_lemma_and_default_forms(the_lemma) lemma = the_lemma full_default_s, full_default_ing, full_default_ed, split_default_s, split_default_ing, split_default_ed, lemma_first, lemma_rest = default_verb_forms(the_lemma) end local function canonicalize_s_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_s elseif form == "*" then return check_non_nil_star_form(split_default_s, lemma) elseif form == "++" then return compute_plusplus_s_form(lemma, full_default_s) elseif form == "**" then if lemma:find("^[^ ]*[szx] ") then return compute_double_last_cons_stem_of_split_verb(lemma, "es") else return check_non_nil_star_form(split_default_s, lemma) end elseif form == "+!" then return lemma .. "s" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "s" .. lemma_rest elseif form == "+'" then return lemma .. "'s" elseif form == "*'" then return check_non_nil_star_form(lemma_first) .. "'s" .. lemma_rest elseif form == "+l" then if lemma:find("[szx]$") then return {{term = full_default_s, l = {"US"}}, {term = compute_plusplus_s_form(lemma, full_default_s), l = {"UK"}}} else return compute_plusplus_s_form(lemma, full_default_s) end elseif form == "*l" then if lemma:find("^[^ ]*[szx] ") then return {{term = check_non_nil_star_form(split_default_s, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "es"), l = {"UK"}}} else return check_non_nil_star_form(split_default_s, lemma) end else return sub_tilde(form, lemma) end end local function canonicalize_ing_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_ing elseif form == "*" then return check_non_nil_star_form(split_default_ing, lemma) elseif form == "++" then return compute_double_last_cons_stem(lemma) .. "ing" elseif form == "**" then return compute_double_last_cons_stem_of_split_verb(lemma, "ing") elseif form == "+!" then return lemma .. "ing" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "ing" .. lemma_rest elseif form == "+'" then return lemma .. "'ing" elseif form == "*'" then return check_non_nil_star_form(lemma_first) .. "'ing" .. lemma_rest elseif form == "+l" then return {{term = full_default_ing, l = {"US"}}, {term = compute_double_last_cons_stem(lemma) .. "ing", l = {"UK"}}} elseif form == "*l" then return {{term = check_non_nil_star_form(split_default_ing, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "ing"), l = {"UK"}}} else return sub_tilde(form, lemma) end end local function canonicalize_ed_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_ed elseif form == "*" then return check_non_nil_star_form(split_default_ed, lemma) elseif form == "++" then return compute_double_last_cons_stem(lemma) .. "ed" elseif form == "+!" then return lemma .. "ed" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "ed" .. lemma_rest elseif form == "+'" then return {{term = lemma .. "'d"}, {term = lemma .. "'ed"}} elseif form == "*'" then return {{term = check_non_nil_star_form(lemma_first) .. "'d" .. lemma_rest}, {term = check_non_nil_star_form(lemma_first) .. "'ed" .. lemma_rest}} elseif form == "**" then return compute_double_last_cons_stem_of_split_verb(lemma, "ed") elseif form == "+l" then return {{term = full_default_ed, l = {"US"}}, {term = compute_double_last_cons_stem(lemma) .. "ed", l = {"UK"}}} elseif form == "*l" then return {{term = check_non_nil_star_form(split_default_ed, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "ed"), l = {"UK"}}} else return sub_tilde(form, lemma) end end -- FIXME: options should be "+", "*", "++", "**", "+n", "*n", "++n" and "**n", but not "n" local function canonicalize_en_form(form) if form == "n" then track("n4") return add_suffix(lemma, "n") end return canonicalize_ed_form(form) end --------------------------------- MAIN PARSING/CONJUGATING CODE -------------------------------- local is_angle_bracket = args.angle_bracket if is_angle_bracket then if par2s[1] or par3s[1] or par4s[1] then error("Can't specify explicit values for 2=, 3= or 4= along with the angle-bracket format") end elseif is_angle_bracket == nil and not par2s[1] and not par3s[1] and not par4s[1] and not args[1][2] and args[1][1] and args[1][1]:find("<") then if put.term_contains_top_level_html(args[1][1]) then -- Often, term_contains_top_level_html() returns true on the angle-bracket format, which would -- make the pcall() below succeed but leave the angle brackets as-is. Check for this and only do the -- pcall() if term_contains_top_level_html() returns false. is_angle_bracket = true else -- If it's ambiguous whether it's an angle-bracket format or separate params with an inline modifier, -- try to parse as the latter. If an error occurs, treat as the former. local ok ok, par1s = pcall(parse_inflection, args, {1, "pres_3sg"}) if not ok then par1s = nil is_angle_bracket = true end end end if is_angle_bracket then -------------------------- ANGLE-BRACKET FORMAT -------------------------- -- (0) Expand multiword term with angle brackets just on the first word. local arg11 = args[1][1] if arg11:find("^<.*>$") and pagename:find(" ") then local first, rest = pagename:match("^(.-)( .*)$") arg11 = first .. arg11 .. rest end -- (1) Parse the indicator specs inside of angle brackets. local function parse_indicator_spec(angle_bracket_spec) local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) local segments = put.parse_balanced_segment_run(inside, "[", "]") local comma_separated_groups = put.split_alternating_runs(segments, ",") if #comma_separated_groups > 4 then error("Too many comma-separated parts in indicator spec, expected at most 4: " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then error("Extraneous text after bracketed footnotes: '" .. concat(separated_group) .. "'") end if not footnotes then footnotes = {} end insert(footnotes, separated_group[j]) end return footnotes end local function fetch_specs(comma_separated_group) if not comma_separated_group then return {{term = "+"}} end local specs = {} local colon_separated_groups = put.split_alternating_runs(comma_separated_group, ":") for _, colon_separated_group in ipairs(colon_separated_groups) do local form = colon_separated_group[1] if form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then error("*, **, *l, *! and *' not allowed inside of indicator specs: " .. angle_bracket_spec) end if form == "" then form = "+" end local termobj = { term = form } local footnotes = fetch_footnotes(colon_separated_group) if footnotes then for _, footnote in ipairs(footnotes) do m_headword_utilities.add_footnote_to_termobj(termobj, footnote) end end insert(specs, termobj) end return specs end local s_specs = fetch_specs(comma_separated_groups[1]) local ing_specs = fetch_specs(comma_separated_groups[2]) local ed_specs = fetch_specs(comma_separated_groups[3]) local en_specs = fetch_specs(comma_separated_groups[4]) return { forms = {}, s_specs = s_specs, ing_specs = ing_specs, ed_specs = ed_specs, en_specs = en_specs, } end local parse_props = { parse_indicator_spec = parse_indicator_spec, } local alternant_multiword_spec = iut.parse_inflected_text(arg11, parse_props) -- (2) Check for user-specified brackets; remove any links from the lemma, but remember the original -- form so we can use it below in the 'lemma_linked' form. -- Check to see if there are brackets in the pre-text or post-text. If so, use the linked lemma (with the -- verb autolinked unless noautolinkverb is given). Otherwise, use the default headword algorithm. local function check_bracket(val) if val:find("%[%[") then alternant_multiword_spec.saw_bracket = true end end for _, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do check_bracket(alternant_or_word_spec.before_text) if alternant_or_word_spec.alternants then for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do for _, word_spec in ipairs(multiword_spec.word_specs) do check_bracket(word_spec.before_text) end check_bracket(multiword_spec.post_text) end end end check_bracket(alternant_multiword_spec.post_text) iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = pagename end base.orig_lemma = base.lemma base.lemma = remove_links(base.lemma) if args.noautolinkverb or base.orig_lemma:find("%[%[") then base.linked_lemma = base.orig_lemma else base.linked_lemma = "[[" .. base.orig_lemma .. "]]" end end) -- (3) Conjugate the verbs according to the indicator specs parsed above. local all_verb_slots = { lemma = "infinitive", lemma_linked = "infinitive", s_form = "3|s|pres", ing_form = "pres|ptcp", ed_form = "past", en_form = "past|ptcp", } local function conjugate_verb(base) local function process_specs(slot, specs, canon_func, default_values, default_already_formobj) local function insert_termobj_into_slot(termobj) local formobj = m_headword_utilities.convert_termobj_to_formobj(termobj) -- If the form is -, don't insert any forms, which will result in there being no overall forms -- (in fact it will be nil). We check for that down below and substitute a single "-" as the -- form, which in turn gets turned into special labels like "no present participle". if formobj.form == "-" then if formobj.footnotes then error("Unable to preserve footnotes specified on missing form '-': FIXME: " .. dump(formobj.footnotes)) end else iut.insert_form(base.forms, slot, formobj) end end local function canonicalize_and_insert(arg) local canon_arg = canon_func(arg) if type(canon_arg) == "string" then arg.term = canon_arg insert_termobj_into_slot(arg) else for _, canon in ipairs(canon_arg) do m_headword_utilities.combine_termobj_qualifiers_labels(canon, arg) insert_termobj_into_slot(canon) end end end for _, arg in ipairs(specs) do if arg.term == "+" then if default_values then -- will be nil if past tense specified as - and no past ptc given for _, val in ipairs(default_values) do val = shallowCopy(val) if default_already_formobj then local argformobj = m_headword_utilities.convert_termobj_to_formobj(arg) val.footnotes = iut.combine_footnotes(val.footnotes, argformobj.footnotes) iut.insert_form(base.forms, slot, val) else m_headword_utilities.combine_termobj_qualifiers_labels(val, arg) canonicalize_and_insert(val) end end end else canonicalize_and_insert(arg) end end end set_lemma_and_default_forms(base.lemma) local all_part_default_specs = {} local function process_and_canonicalize_s_form(arg) local form = arg.term if form == "+" then error("Internal error: '+' should have been converted to '^' by now") end if form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then error(("Internal error: '%s' should have already thrown an error"):format(form)) end if form == "^" or form == "++" or form == "+l" or form == "+!" or form == "+'" then insert(all_part_default_specs, shallowCopy(arg)) end return canonicalize_s_form(form) end process_specs("s_form", base.s_specs, process_and_canonicalize_s_form, {{term = "^"}}) if not all_part_default_specs[1] then all_part_default_specs[1] = {term = "^"} end process_specs("ing_form", base.ing_specs, function(arg) return canonicalize_ing_form(arg.term) end, all_part_default_specs) process_specs("ed_form", base.ed_specs, function(arg) return canonicalize_ed_form(arg.term) end, all_part_default_specs) process_specs("en_form", base.en_specs, function(arg) return canonicalize_en_form(arg.term) end, base.forms.ed_form, "default already formobj") iut.insert_form(base.forms, "lemma", {form = base.lemma}) -- Add linked version of lemma for use in head=. We write this in a general fashion in case -- there are multiple lemma forms (which isn't possible currently at this level, although it's -- possible overall using the ((...,...)) notation). iut.insert_forms(base.forms, "lemma_linked", iut.map_forms(base.forms.lemma, function(form) if form == base.lemma and base.linked_lemma:find("%[%[") then return base.linked_lemma else return form end end)) end local inflect_props = { slot_table = all_verb_slots, inflect_word_spec = conjugate_verb, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- (4) Fetch the forms and put the conjugated lemmas in data.heads if not explicitly given. local function fetch_termobjs(slot) local forms = alternant_multiword_spec.forms[slot] -- See above. This should only occur if the user explicitly used - for a spec. if not forms or not forms[1] then return {{term = "-"}} end local termobjs = {} for _, formobj in ipairs(forms) do insert(termobjs, m_headword_utilities.convert_formobj_to_termobj(formobj)) end return termobjs end pres_3sgs = fetch_termobjs("s_form") pres_ptcs = fetch_termobjs("ing_form") pasts = fetch_termobjs("ed_form") past_ptcs = fetch_termobjs("en_form") -- Use the "linked" form of the lemma as the head if no head= explicitly given and the user specified -- brackets in one of the lemmas. Otherwise we use the default headword-linking algorithm. if not data.user_specified_heads[1] and alternant_multiword_spec.saw_bracket then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.lemma_linked) do insert(data.heads, m_headword_utilities.convert_formobj_to_termobj(lemma_obj)) end end else -------------------------- SEPARATE-PARAM FORMAT -------------------------- set_lemma_and_default_forms(pagename) par1s = par1s or parse_inflection(args, {1, "pres_3sg"}) pres_3sgs = {} pres_ptcs = {} pasts = {} past_ptcs = {} if not par1s[1] then par1s = {{term = "+"}} end if not par2s[1] then par2s = {{term = "+"}} end if not par3s[1] then par3s = {{term = "+"}} end if not par4s[1] then par4s = {{term = "+"}} end local function process_argument(args, dest, canon_func, default_values, default_already_canonicalized) local function canonicalize_and_insert(arg) local canon_arg = canon_func(arg) if type(canon_arg) == "string" then arg.term = canon_arg m_headword_utilities.insert_termobj_combining_duplicates(dest, arg) else for _, canon in ipairs(canon_arg) do m_headword_utilities.combine_termobj_qualifiers_labels(canon, arg) m_headword_utilities.insert_termobj_combining_duplicates(dest, canon) end end end for _, arg in ipairs(args) do if arg.term == "+" then for _, val in ipairs(default_values) do val = shallowCopy(val) m_headword_utilities.combine_termobj_qualifiers_labels(val, arg) if default_already_canonicalized then m_headword_utilities.insert_termobj_combining_duplicates(dest, val) else canonicalize_and_insert(val) end end else canonicalize_and_insert(arg) end end end local all_part_default_specs = {} local function process_and_canonicalize_s_form(arg) local form = arg.term if form == "+" then error("Internal error: '+' should have been converted to '^' by now") end if form == "^" or form == "++" or form == "+l" or form == "+!" or form == "+'" or form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then insert(all_part_default_specs, shallowCopy(arg)) end return canonicalize_s_form(form) end process_argument(par1s, pres_3sgs, process_and_canonicalize_s_form, {{term = "^"}}) if not all_part_default_specs[1] then all_part_default_specs[1] = {term = "^"} end process_argument(par2s, pres_ptcs, function(arg) return canonicalize_ing_form(arg.term) end, all_part_default_specs) process_argument(par3s, pasts, function(arg) return canonicalize_ed_form(arg.term) end, all_part_default_specs) process_argument(par4s, past_ptcs, function(arg) return canonicalize_en_form(arg.term) end, pasts, "default already canonicalized") end ------------------------------------------- INSERT INFLECTIONS ------------------------------------------ insert_inflection(data, pres_3sgs, "บุรุษที่สามเอกพจน์ปัจจุบันกาลสามัญ", "s-verb-form") insert_inflection(data, pres_ptcs, "รูปกริยาขยายปัจจุบันกาล", "ing-form") if deepEquals(pasts, past_ptcs) then insert_inflection(data, pasts, "อดีตกาลสามัญ และรูปกริยาขยายอดีตกาล", "ed-form", "no simple past or past participle") else insert_inflection(data, pasts, "อดีตกาลสามัญ", "spast") insert_inflection(data, past_ptcs, "รูปกริยาขยายอดีตกาล", "past|part") end if pagename:find(" ") then -- Check for placeholder "it" local words = split(pagename, " ") for _, word in ipairs(words) do if word == "it" or word == "its" or word == "it's" then insert(data.categories, langname .. ' terms with placeholder "it"') break end end -- Check for phrasal verbs local phrasal_adverbs = list_to_set{ -- NOTE: This should only contain common phrasal adverbs, not random words like [[low]], -- [[adrift]], etc. "aback", "about", "above", "across", "after", "against", "ahead", "along", "apart", "around", "as", "aside", "at", "away", "back", "before", "behind", "below", "between", "beyond", "by", "down", "for", "forth", "from", "in", "into", "of", "off", "on", "onto", "out", "over", "past", "round", "through", "to", "together", "towards", "under", "up", "upon", "with", "without", } local allowed_non_adverb_words = list_to_set{ "it", "one", "oneself", "someone", } local base = pagename local seen_adverbs = {} -- Only consider a verb to be phrasal if it consists of a single base verb followed exclusively by either -- adverbs from `phrasal_adverbs` or placeholder words from `allowed_non_adverb_words`, where at -- least one following word is from `phrasal_adverbs` (hence [[can it]] is not a phrasal verb). while true do local prev, word = base:match("^(.+) (.-)$") if not prev then break end if phrasal_adverbs[word] then insert(seen_adverbs, word) elseif allowed_non_adverb_words[word] then -- do nothing else break end base = prev end if not base:find(" ") and seen_adverbs[1] then insert(data.categories, langname .. " phrasal verbs") for i = #seen_adverbs, 1, -1 do insert(data.categories, langname .. ' phrasal verbs formed with "' .. seen_adverbs[i] .. '"') end end end end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["รูปปัจจัย"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, }, func = function(args, data, is_suffix) local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, "ปัจจัยสร้าง" .. typ) end insert(data.inflections, {label = "รูปผันของ " .. m_table.serialCommaJoin(suffix_type, {conj = "หรือ"})}) end, } return export iw3oc1xhkzv1ksn9ksd8rzrfhl37gdm 5723289 5723288 2026-05-20T05:24:08Z OctraBot 3198 5723289 Scribunto text/plain local export = {} local pos_functions = {} --[==[ Author from 2020 on: mostly Benwing2, with significant contributions from Theknightwho. Based on a prior version by Rua (by now mostly rewritten), with contributions from Erutuon and others (see history for full attribution). ]==] local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require = require local require_when_needed = require("Module:require when needed") local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local headword_module = "Module:headword" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local JSON_module = "Module:JSON" local labels_module = "Module:labels" local links_module = "Module:links" local parameters_module = "Module:parameters" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local yesno_module = "Module:yesno" local iut = require_when_needed(inflection_utilities_module) local put = require_when_needed(parse_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local add_links_to_multiword_term = require_when_needed(headword_utilities_module, "add_links_to_multiword_term") local add_suffix = require_when_needed(en_utilities_module, "add_suffix") local apply_link_modifiers = require_when_needed(headword_utilities_module, "apply_link_modifiers") local concat = table.concat local deepEquals = require_when_needed(table_module, "deepEquals") local dump = mw.dumpObject local format_categories = require_when_needed(utilities_module, "format_categories") local full_headword = require_when_needed(headword_module, "full_headword") local get_label_info = require_when_needed(labels_module, "get_label_info") local get_link_page = require_when_needed(links_module, "get_link_page") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local insert = table.insert local insertIfNot = require_when_needed(table_module, "insertIfNot") local ipairs = ipairs local is_regular_plural = require_when_needed(en_utilities_module, "is_regular_plural") local list_to_set = require_when_needed(table_module, "listToSet") local pairs = pairs local process_params = require_when_needed(parameters_module, "process") local remove = table.remove local remove_links = require_when_needed(links_module, "remove_links") local replacement_escape = require_when_needed(string_utilities_module, "replacement_escape") local shallowCopy = require_when_needed(table_module, "shallowCopy") local singularize = require_when_needed(en_utilities_module, "singularize") local split = require_when_needed(string_utilities_module, "split") local toJSON = require_when_needed(JSON_module, "toJSON") local toNFD = mw.ustring.toNFD local type = type local ulen = require_when_needed(string_utilities_module, "len") local ulower = require_when_needed(string_utilities_module, "lower") local umatch = require_when_needed(string_utilities_module, "match") local u = require_when_needed(string_utilities_module, "char") local ugsub = require_when_needed(string_utilities_module, "gsub") local lang = require("Module:languages").getByCode("en") local langname = --[[lang:getCanonicalName()]] lang:getCategoryName() local list_param = {list = true, disallow_holes = true} local list_allow_holes = {list = true, allow_holes = true} local boolean_param = {type = "boolean"} local function ine(val) if val == "" then return nil else return val end end local function track(page) require("Module:debug/track")("en-headword/" .. page) return true end ------------------------------------------- UTILITY FUNCTIONS ------------------------------------------ -- Parse and return an inflection not requiring additional processing. The raw arguments come from `args[field]`, which -- is parsed for inline modifiers. local function parse_inflection(args, field, is_head) local argfield = field if type(argfield) == "table" then argfield = argfield[1] end return m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[argfield], splitchar = ",", is_head = is_head, } end -- Insert the parsed inflections in `terms` (as parsed by `parse_inflection`) into `data.inflections`, with label -- `label` and optional accelerator spec `accel`. local function insert_inflection(data, terms, label, accel, no_label) for _, termobj in ipairs(terms) do m_headword_utilities.remove_termobj_field_modifiers(termobj) end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, no_label = no_label, accel = accel and {form = accel} or nil, } end -- Insert a fixed label `label` into the inflections for `data`. If `originating_term` is supplied, copy the qualifiers, -- labels and references from it into the fixed label. local function insert_fixed_inflection(data, label, originating_term) m_headword_utilities.insert_fixed_inflection { headdata = data, originating_term = originating_term, label = label, } end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, -- If we want check_missing support, we need to supply the following: -- check_missing = true, -- lang = lang, -- plpos = plpos, } end -- These functions are used directly in the <> format as well as in the utility functions #2 below. local function compute_double_last_cons_stem(term) local last_cons = term:match("([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ])$") if not last_cons then error("Verb stem '" .. term .. "' must end in a consonant to use ++") end return term .. last_cons end local function compute_plusplus_s_form(term, default_s_form) if term:find("[szx]$") then -- regas -> regasses, derez -> derezzes return compute_double_last_cons_stem(term) .. "es" else return default_s_form end end -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local iparams = { [1] = true, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "แม่แบบ:en-head" and "คำอุทาน" or error("Part of speech must be specified in 1=") poscat_th = require("Module:th-utilities").th_pos(poscat) --th poscat_th = require(headword_module).canonicalize_pos(poscat_th) --th_pos_to_form is already there else poscat_th = require("Module:th-utilities").th_pos(poscat) --th; initiation is needed end local indexing_poscat = pos_in_1 and "head" or poscat_th local params = { ["head"] = list_param, ["id"] = true, ["json"] = boolean_param, ["sort"] = true, ["splithyph"] = boolean_param, ["nosplithyph"] = boolean_param, ["hyphspace"] = boolean_param, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean_param", alias_of = "nolink"}, ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["nomultiwordcat"] = boolean_param, ["abbr"] = list_param, ["the"] = true, ["def"] = {alias_of = "the"}, ["pagename"] = true, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end local pos_data = pos_functions[indexing_poscat] local pos_func if pos_data then local pos_params = pos_data.params if pos_params then for key, val in pairs(pos_params) do params[key] = val end end pos_func = pos_data.func end local args = process_params(parargs, params) -- Account for unsupported titles, e.g. 'C|N>K' instead of 'Unsupported titles/C through N to K'. local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = parse_inflection(args, "head", "is_head") local heads = user_specified_heads local autohead if args.nolink or not pagename:find("[ '%-]") then autohead = pagename else local en_no_split_apostrophe_words = list_to_set { "one's", "someone's", "he's", "she's", "it's", } local en_include_hyphen_prefixes = list_to_set { -- We don't include things that are also words even though they are often (perhaps mostly) prefixes, e.g. -- "be", "counter", "cross", "extra", "half", "mid", "over", "pan", "under". "acro", "acousto", "Afro", "agro", "anarcho", "angio", "Anglo", "ante", "anti", "arch", "auto", "bi", "bio", "cis", "co", "cryo", "crypto", "de", "demi", "eco", "electro", "Euro", "ex", "Greco", "hemi", "hydro", "hyper", "hypo", "infra", "Indo", "inter", "intra", "Judeo", "macro", "meta", "micro", "mini", "multi", "neo", "neuro", "non", "para", "peri", "post", "pre", "pro", "proto", "pseudo", "re", "semi", "sub", "super", "trans", "un", "vice", } local function is_english(term) local title = mw.title.new(term) if title and title.exists then local content = title:getContent() if content and content:find("== ?ภาษาอังกฤษ ?==\n") then return true end end return false end local function en_split_hyphen_when_space(word) if not word:find("-", nil, true) then return nil end if args.hyphspace then return "[[" .. word:gsub("%-+", " ") .. "|" .. word .. "]]" end if args.nosplithyph then return "[[" .. word .. "]]" end if not args.splithyph then local space_word = word:gsub("%-+", " ") if is_english(space_word) then return "[[" .. space_word .. "|" .. word .. "]]" end if is_english(word) then return "[[" .. word .. "]]" end end return nil end local function en_split_apostrophe(word) local base = word:match("^(.*)'s$") if base then return "[[" .. base .. "]][[-'s|'s]]" end -- Only treat final apostrophe as possessive if preceded by something that looks like a plural ending in /z/. -- In particular we don't want to do it for words like [[truckin']]. base = word:match("^(.*[sxz])'$") if base then if base:find("s$") then local sg = singularize(base) if is_english(sg) then return "[[" .. sg .. "|" .. base .. "]][[-'|']]" end end return "[[" .. base .. "]][[-'|']]" end return "[[" .. word .. "]]" end autohead = add_links_to_multiword_term(pagename, { split_hyphen_when_space = en_split_hyphen_when_space, split_apostrophe = en_split_apostrophe, no_split_apostrophe_words = en_no_split_apostrophe_words, include_hyphen_prefixes = en_include_hyphen_prefixes, }) end if not heads[1] then heads = {{term = autohead}} else for _, headobj in ipairs(heads) do local head = headobj.term if head:find("^~") then head = apply_link_modifiers(autohead, head:sub(2), lang) headobj.term = head elseif head:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. headobj.term = autohead .. head end if head == autohead then track("redundant-head") end end end -- handle the=/def= if args.the == "~" then local newheads = {} for _, headobj in ipairs(heads) do local barehead = shallowCopy(headobj) insert(newheads, barehead) headobj.term = "the " .. headobj.term insert(newheads, headobj) end heads = newheads elseif args.the then local the = require(yesno_module)(args.the) if the then for _, headobj in ipairs(heads) do headobj.term = "the " .. headobj.term end end end local data = { lang = lang, pos_category = poscat_th, categories = {}, heads = heads, user_specified_heads = user_specified_heads, -- We use our own splitting algorithm so the redundant head cat will be inaccurate. no_redundant_head_cat = true, inflections = {}, nomultiwordcat = args.nomultiwordcat, sort_key = args.sort, pagename = pagename, id = args.id, force_cat_output = force_cat, } local function inscat(cat) --insert(data.categories, langname .. " " .. cat) if mw.ustring.find(cat, "^ศัพท์") then insert(data.categories, "ศัพท์" .. langname .. mw.ustring.sub(cat, 6)) else insert(data.categories, cat .. langname) end end local is_suffix = false if args.suffix or not args.nosuffix and pagename:find("^%-") and not pagename:find("^%-%-") and poscat_th ~= "รูปปัจจัย" then is_suffix = true data.pos_category = "ปัจจัย" local singular_poscat = --[[singularize(poscat)]] poscat_th inscat("ปัจจัยสร้าง" .. singular_poscat) insert(data.inflections, {label = "ปัจจัยสร้าง" .. singular_poscat}) end if pos_func then pos_func(args, data, is_suffix) end local extra_categories = {} if pagename:find("[Qq]") then -- Check for q not followed by u. We want to exclude things like [[13q deletion syndrome]] and [[BFOQ]] that -- don't have a lowercase letter on either side, as well as things like [[& seq.]] and [[acq.]] that are -- abbreviations for words containing a following u. -- -- Approximate range of combining diacritics; we want to remove them so the checks below for -- a lowercase letter next to the q aren't tripped up by diacritics on the letter. local u300 = u(0x0300) local u36F = u(0x036F) local pagename_no_diacritics = ugsub(toNFD(pagename), "[" .. u300 .. "-" .. u36F .. "]", "") if pagename_no_diacritics:find("[Qq][a-tv-z]") or pagename_no_diacritics:find("[a-z]q[^u.]") or pagename_no_diacritics:find("[a-z]q$") then inscat("ศัพท์ที่มี Q ไม่ตามด้วย U") end end -- toNFD performs decomposition, so letters that decompose to an ASCII -- vowel and a diacritic, such as é, are counted as vowels and do not do not -- need to be included in the pattern. if not umatch(ulower(toNFD(pagename)), "[aeiouyæœøəªºαεηιουω]") then inscat("ศัพท์ที่ไม่มีสระ") end if pagename:find("yre$") then inscat("ศัพท์ที่ลงท้ายด้วย -yre") end if not pagename:find(" ") and ulen(pagename) >= 25 then insert(extra_categories, "ศัพท์" .. langname .. "ที่มีขนาดยาว") end if pagename:find("^[^aeiou ]*a[^aeiou ]*e[^aeiou ]*i[^aeiou ]*o[^aeiou ]*u[^aeiou ]*$") then inscat("ศัพท์ที่ใช้สระทั้งหมดตามลำดับ") end parse_and_insert_inflection(data, args, "abbr", "คำย่อ") if args.json then return toJSON(data) end return full_headword(data) .. (extra_categories[1] and format_categories(extra_categories, lang, args.sort) or "") end local function make_default_comparative(word) if word == "good" or word == "well" then return {"better"} elseif word == "bad" or word == "badly" then return {"worse"} elseif word == "far" then return {"further", "farther"} else return {add_suffix(word, "r")} end end local function make_default_superlative(word) if word == "good" or word == "well" then return {"best"} elseif word == "bad" or word == "badly" then return {"worst"} elseif word == "far" then return {"furthest", "farthest"} else return {add_suffix(word, "st.superlative")} end end -- This function does the common work between adjectives and adverbs. local function process_comparative_args(data, args, plpos) local pagename = data.pagename local comps = parse_inflection(args, 1) local sups = parse_inflection(args, "sup") local outcomps, outsups if args.componly then if comps[1] then error("Can't specify comparatives of comparative-only " .. plpos) end insert(data.inflections, {label = glossary_link("ขั้นกว่า") .. "เท่านั้น"}) insert(data.categories, plpos .. "ขั้นกว่าเท่านั้น" .. langname) -- Set to empty list so we don't get any comparatives output, but process superlatives if specified. outcomps = {} if not sups[1] then -- Set to empty list so we don't get any superlatives output unless explicitly given. outsups = {} end elseif args.suponly then if comps[1] or sups[1] then error("Can't specify comparatives or superlatives of or superlative-only " .. plpos) end insert(data.inflections, {label = glossary_link("ขั้นสุด") .. "เท่านั้น"}) insert(data.categories, plpos .. "ขั้นสุดเท่านั้น" .. langname) return end -- If the first parameter is ?, then don't show anything, just return. if comps[1] and comps[1].term == "?" then if comps[2] then error("Can't specify additional comparatives along with '?'") end if sups[1] then error("Can't specify superlatives along with '?' for the comparative") end return end if comps[1] and comps[1].term == "-" then local hyphencomp = remove(comps, 1) -- Remove the "-" but retain for qualifiers, labels, references -- Not (generally) comparable; may occasionally have a comparative if comps[1] then insert_fixed_inflection(data, "โดยทั่วไป<<เปรียบเทียบไม่ได้>>", hyphencomp) elseif not sups[1] then insert_fixed_inflection(data, "<<เปรียบเทียบไม่ได้>>", hyphencomp) insert(data.categories, plpos .. "เปรียบเทียบไม่ได้" .. langname) return else -- No comparative, but a superlative. insert_inflection() will correctly generate 'no comparative' if we -- pass in "-" as the value. outcomps = {hyphencomp} end elseif not comps[1] then comps = {{term = "more"}} end if not outcomps then -- not if we set `outcomps` to "-" above or processed a comparative-only term outcomps = {} -- Go over each parameter given and create a comparative and superlative form. for _, compobj in ipairs(comps) do local comp = compobj.term if comp == "-" then error("Comparative of '-' only allowed as first comparative") end if comp == "+" then comp = "+more" elseif comp == "more" and pagename ~= "many" and pagename ~= "much" then comp = "+more" elseif comp == "further" and pagename ~= "far" then comp = "+further" elseif comp == "better" and pagename ~= "good" and pagename ~= "well" then comp = "+better" elseif comp:find("~") then comp = comp:gsub("~", replacement_escape(pagename)) end compobj.origterm = comp if comp == "+more" then comp = "more [[" .. pagename .. "]]" elseif comp == "+further" then comp = {"further [[" .. pagename .. "]]", "farther [[" .. pagename .. "]]"} elseif comp == "+better" then comp = "better [[" .. pagename .. "]]" elseif comp == "er" then -- Add -er. comp = add_suffix(pagename, "r") elseif comp == "ier" then if pagename:sub(-1) ~= "y" then error("Can't specify 'ier' comparative unless the term ends with 'y': " .. pagename) end comp = pagename:gsub("e?y$", "ier") elseif comp:find("^%+") then local special = m_headword_utilities.get_special_indicator(comp, "noerror") if special then comp = m_headword_utilities.handle_multiword(pagename, special, make_default_comparative) end end if type(comp) == "table" and not comp[2] then comp = comp[1] end if type(comp) == "table" then for i = 1, #comp - 1 do local outobj = shallowCopy(compobj) outobj.term = comp[i] insert(outcomps, outobj) end compobj.term = comp[#comp] insert(outcomps, compobj) else compobj.term = comp insert(outcomps, compobj) end end end if sups[1] and sups[1].term == "-" then if sups[2] then error("Can't specify '-' as superlative followed by further values") end -- No superlative. insert_inflection() will correctly generate 'no superlative' if we pass in "-" as the value. outsups = sups else if not sups[1] then sups = {{term = "+"}} end end -- `outsups` will be set if we set `outsups` to "-" above or processed a comparative-only term without superlatives. if not outsups then outsups = {} local function process_sup(sup, special, supobj, compobj) if special then sup = m_headword_utilities.handle_multiword(pagename, special, make_default_superlative) elseif sup == "-" or sup == "+" then error(("Internal error: Superlative value of '%s' should have been handled earlier"):format(sup)) elseif sup == "+most" then sup = "most [[" .. pagename .. "]]" elseif sup == "+furthest" then sup = {"furthest [[" .. pagename .. "]]", "farthest [[" .. pagename .. "]]"} elseif sup == "+best" then sup = "best [[" .. pagename .. "]]" elseif sup == "est" then -- Add -est. sup = add_suffix(pagename, "st.superlative") elseif sup == "iest" then if pagename:sub(-1) ~= "y" then error("Can't specify 'iest' superlative unless the term ends with 'y': " .. pagename) end sup = pagename:gsub("e?y$", "iest") end if type(sup) == "table" and not sup[2] then sup = sup[1] end if compobj then supobj = shallowCopy(supobj) supobj = m_headword_utilities.combine_termobj_qualifiers_labels(supobj, compobj) end if type(sup) == "table" then for i = 1, #sup - 1 do local outobj = shallowCopy(supobj) outobj.term = sup[i] insert(outsups, outobj) end supobj.term = sup[#sup] insert(outsups, supobj) else supobj.term = sup insert(outsups, supobj) end end for _, supobj in ipairs(sups) do local sup = supobj.term if sup == "-" then error("Superlative of '-' only allowed as first superlative") end if sup == "+" then if not comps[1] then error("Superlative of '+' can't be specified when there are no comparatives") end for _, compobj in ipairs(comps) do local comp = compobj.origterm local special if comp == "+more" then sup = "+most" elseif comp == "+further" then sup = "+furthest" elseif comp == "+better" then sup = "+best" elseif comp == "er" then sup = "est" elseif comp == "ier" then sup = "iest" else if comp:find("^%+") then special = m_headword_utilities.get_special_indicator(comp, "noerror") end if not special then -- If the full comparative was given, then derive the superlative by replacing -er with -- -est. if comp:sub(-2) == "er" then sup = comp:sub(1, -3) .. "est" else error(("The superlative cannot be derived automatically from comparative '%s' because it doesn't end in -er"):format(comp)) end end end process_sup(sup, special, supobj, compobj) end else local special = m_headword_utilities.get_special_indicator(sup, "noerror") -- Do some work here rather than in process_sup() so we don't end up double-processing a term with a '~' -- in it or a term that happens to be 'most' or similar after substitution of ~ in the comparative. if not special then if sup == "most" and pagename ~= "many" and pagename ~= "much" then sup = "+most" elseif sup == "furthest" and pagename ~= "far" then sup = "+furthest" elseif sup == "best" and pagename ~= "good" and pagename ~= "well" then sup = "+best" elseif sup:find("~") then sup = sup:gsub("~", replacement_escape(pagename)) end end process_sup(sup, special, supobj) end end end insert_inflection(data, outcomps, "<<ขั้นกว่า>>", "ขั้นกว่า") insert_inflection(data, outsups, "<<ขั้นสุด>>", "ขั้นสุด") end pos_functions["คำคุณศัพท์"] = { params = { [1] = list_param, ["comp_qual"] = {list = "comp\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the comparative value", }, ["sup"] = list_param, ["sup_qual"] = {list = "sup\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the superlative value", }, ["componly"] = boolean_param, ["suponly"] = boolean_param, }, func = function(args, data) -- Process the comparatives and superlatives. process_comparative_args(data, args, "คำคุณศัพท์") end, } pos_functions["คำกริยาวิเศษณ์"] = { params = { [1] = list_param, ["comp_qual"] = {list = "comp\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the comparative value", }, ["sup"] = list_param, ["sup_qual"] = {list = "sup\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the superlative value", }, ["componly"] = boolean_param, ["suponly"] = boolean_param, }, func = function(args, data) -- Process the comparatives and superlatives. process_comparative_args(data, args, "คำกริยาวิเศษณ์") end, } local function escape(str) return (str:gsub("\\([:#])", "\\\\%1") :gsub("[:#]", "\\%0")) end local function canonicalize_plural(pl, pagename, pos) if pl == "+" then return escape(add_suffix(pagename, "s.plural", pos)) elseif pl == "++" then return escape(compute_plusplus_s_form(pagename, add_suffix(pagename, "s.plural", pos))) elseif pl == "*" then return escape(pagename) elseif pl == "ies" then if pagename:sub(-1) == "y" then return escape(pagename:gsub("e?y$", pl)) end error("Can't specify 'ies' plural unless the term ends with 'y'.") elseif pl == "s" or pl == "es" or pl == "'s" then return escape(pagename .. pl) end end local function do_nouns(args, data, pos) local pagename = data.pagename pos = pos or "คำนาม" local plurals = parse_inflection(args, 1) local function insert_plurale_tantum_inflections(is_plural_only, originating_label) if args.sg[1] then insert_fixed_inflection(data, "พหูพจน์ปกติ", originating_label) parse_and_insert_inflection(data, args, "sg", "เอกพจน์") elseif is_plural_only then insert_fixed_inflection(data, "พหูพจน์เท่านั้น", originating_label) end if args.attr[1] then parse_and_insert_inflection(data, args, "attr", "ตัวบอกคุณลักษณะ") end end local function first_pl_term() return plurals[1] and plurals[1].term or nil end if first_pl_term() == "p" then -- plurale tantum if plurals[2] then error("With plurale tantum noun, can't specify more than one plural") end data.genders = {"p"} -- this should auto-insert the correct 'pluralia tantum' category insert_plurale_tantum_inflections("พหูพจน์เท่านั้น", plurals[1]) return end local function inscat(cat) --insert(data.categories, langname .. " " .. cat) if mw.ustring.find(cat, "£") then local catname = mw.ustring.gsub(cat, "£", langname) -- แทรกภาษาตรง £, ต้องการรับเฉพาะ return ค่าแรก insert(data.categories, catname) elseif mw.ustring.find(cat, "^ศัพท์") then insert(data.categories, "ศัพท์" .. langname .. mw.ustring.sub(cat, 6)) else insert(data.categories, cat .. langname) end end local need_default_plural = pos == "คำนาม" if first_pl_term() == "sp" then -- construed as singular or plural sp = remove(plurals, 1) -- Remove the "sp" but retain it for its qualifiers, labels, references inscat("คำนาม£ที่อนุมานว่าเป็นเอกพจน์หรือพหูพจน์") data.genders = {"s", "p"} -- this should auto-insert the correct 'pluralia tantum' category insert_plurale_tantum_inflections(nil, sp) need_default_plural = false elseif first_pl_term() == "-" then -- Uncountable noun; may occasionally have a plural local hyphpl = remove(plurals, 1) -- Remove the "-" but retain for qualifiers, labels, references inscat("คำนามนับไม่ได้") -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert_fixed_inflection(data, "โดยปกติ<<นับไม่ได้>>", hyphpl) else insert_fixed_inflection(data, "<<นับไม่ได้>>", hyphpl) end need_default_plural = false elseif first_pl_term() == "#" then -- Usually countable (e.g., "grilled cheese") local hashpl = remove(plurals, 1) -- Remove the "#" but retain for qualifiers, labels, references insert_fixed_inflection(data, "โดยปกติ<<นับได้>>", hashpl) inscat("คำนามนับไม่ได้") inscat("คำนามนับได้") -- If no plural was given, add a default one now if not plurals[1] then plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end elseif first_pl_term() == "~" then -- Mixed countable/uncountable noun, always has a plural local tildepl = remove(plurals, 1) -- Remove the "~" but retain for qualifiers, labels, references insert_fixed_inflection(data, "<<นับได้>>และ<<นับไม่ได้>>", tildepl) inscat("คำนามนับไม่ได้") inscat("คำนามนับได้") -- If no plural was given, add a default one now if not plurals[1] then plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end end -- Plural is unknown if first_pl_term() == "?" then local questionpl = remove(plurals, 1) -- Remove the "?" but retain for qualifiers, labels, references -- Not desired; see [[Wiktionary:Tea_room/2021/August#"Plural unknown or uncertain"]] -- insert_fixed_inflection(data, "plural unknown or uncertain", questionpl) inscat("nouns with unknown or uncertain plurals") if plurals[1] then error("Can't specify explicit plurals along with '?' for unknown/uncertain plural") end return end -- Plural is not attested if first_pl_term() == "!" then local exclampl = remove(plurals, 1) -- Remove the "!" but retain for qualifiers, labels, references insert_fixed_inflection(data, "plural not attested", exclampl) inscat("nouns with unattested plurals") if plurals[1] then error("Can't specify explicit plurals along with '!' for unattested plural") end return end -- If no plural was given, maybe add a default one, otherwise (when "-" was given or proper noun) return. if not plurals[1] then if not need_default_plural then inscat("คำนามนับไม่ได้") return end plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end -- There are plural forms to show, so show them. inscat("คำนามนับได้") local irregular, indeclinable for i, pl in ipairs(plurals) do local canon_pl = canonicalize_plural(pl.term, pagename, pos) if canon_pl then pl.term = canon_pl end local pl_term = get_link_page(pl.term, lang) if not (pagename:find(" ") or is_regular_plural(pl_term, pagename)) then irregular = true if pl_term == pagename then indeclinable = true end end end if irregular then inscat("คำนาม£ที่มีพหูพจน์ไม่ปรกติ") end if indeclinable then inscat("คำนามผันรูปไม่ได้") end insert_inflection(data, plurals, "พหูพจน์", "p") end -- Return the parameters to be used for nouns and proper nouns. Currently the same. local noun_params = { [1] = list_param, ["pl\1qual"] = {list = true, allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the plural", }, -- The following four only used for pluralia tantum (1=p) ["sg"] = list_param, ["attr"] = list_param, } pos_functions["คำนาม"] = { params = noun_params, func = do_nouns, } pos_functions["คำวิสามานยนาม"] = { params = noun_params, func = function(args, data) return do_nouns(args, data, "คำวิสามานยนาม") end, } local function base_default_verb_forms(verb) return escape(add_suffix(verb, "s.verb")), escape(add_suffix(verb, "ing")), escape(add_suffix(verb, "d")) end local function default_verb_forms(verb) local full_s_form, full_ing_form, full_ed_form = base_default_verb_forms(verb) if verb:find(" ") then local first, rest = verb:match("^(.-)( .*)$") local first_s_form, first_ing_form, first_ed_form = base_default_verb_forms(first) return full_s_form, full_ing_form, full_ed_form, first_s_form .. rest, first_ing_form .. rest, first_ed_form .. rest, first, rest else return full_s_form, full_ing_form, full_ed_form, nil, nil, nil, nil, nil end end local function compute_double_last_cons_stem_of_split_verb(verb, ending) local first, rest = verb:match("^(.-)( .*)$") if not first then error("Verb '" .. verb .. "' must have a space in it to use **") end local last_cons = first:match("([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ])$") if not last_cons then error("First word '" .. first .. "' must end in a consonant to use **") end return first .. last_cons .. ending .. rest end local function check_non_nil_star_form(form, pagename) if form == nil then error("Verb '" .. pagename .. "' must have a space in it to use *, **, *l, *! or *'") end return form end local function sub_tilde(form, pagename) if not form then return nil end if form:find("~") then form = form:gsub("~", replacement_escape(pagename)) end return form end local deprecated_qual_replaced_by_inline_modifier = { list = true, allow_holes = true, replaced_by = false, instead = "use an inline modifier <q:...> or <l:...> on the value" } pos_functions["คำกริยา"] = { params = { [1] = {list = "pres_3sg", disallow_holes = true}, ["pres_3sg\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [2] = {list = "pres_ptc", disallow_holes = true}, ["pres_ptc\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [3] = {list = "past", disallow_holes = true}, ["past\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [4] = {list = "past_ptc", allow_holes = true}, ["past_ptc\1_qual"] = deprecated_qual_replaced_by_inline_modifier, ["noautolinkverb"] = boolean_param, ["angle_bracket"] = boolean_param, }, func = function(args, data) -- Get parameters local par1s local par2s = parse_inflection(args, {2, "pres_ptc"}) local par3s = parse_inflection(args, {3, "past"}) local par4s = parse_inflection(args, {4, "past_ptc"}) local pres_3sgs, pres_ptcs, pasts, past_ptcs local pagename = data.pagename ------------------------------------------- UTILITY FUNCTIONS #2 ------------------------------------------ -- These functions are used in both in the separate-parameter format and in the override params such as past_ptc2=. local full_default_s, full_default_ing, full_default_ed, split_default_s, split_default_ing, split_default_ed local lemma local function set_lemma_and_default_forms(the_lemma) lemma = the_lemma full_default_s, full_default_ing, full_default_ed, split_default_s, split_default_ing, split_default_ed, lemma_first, lemma_rest = default_verb_forms(the_lemma) end local function canonicalize_s_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_s elseif form == "*" then return check_non_nil_star_form(split_default_s, lemma) elseif form == "++" then return compute_plusplus_s_form(lemma, full_default_s) elseif form == "**" then if lemma:find("^[^ ]*[szx] ") then return compute_double_last_cons_stem_of_split_verb(lemma, "es") else return check_non_nil_star_form(split_default_s, lemma) end elseif form == "+!" then return lemma .. "s" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "s" .. lemma_rest elseif form == "+'" then return lemma .. "'s" elseif form == "*'" then return check_non_nil_star_form(lemma_first) .. "'s" .. lemma_rest elseif form == "+l" then if lemma:find("[szx]$") then return {{term = full_default_s, l = {"US"}}, {term = compute_plusplus_s_form(lemma, full_default_s), l = {"UK"}}} else return compute_plusplus_s_form(lemma, full_default_s) end elseif form == "*l" then if lemma:find("^[^ ]*[szx] ") then return {{term = check_non_nil_star_form(split_default_s, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "es"), l = {"UK"}}} else return check_non_nil_star_form(split_default_s, lemma) end else return sub_tilde(form, lemma) end end local function canonicalize_ing_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_ing elseif form == "*" then return check_non_nil_star_form(split_default_ing, lemma) elseif form == "++" then return compute_double_last_cons_stem(lemma) .. "ing" elseif form == "**" then return compute_double_last_cons_stem_of_split_verb(lemma, "ing") elseif form == "+!" then return lemma .. "ing" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "ing" .. lemma_rest elseif form == "+'" then return lemma .. "'ing" elseif form == "*'" then return check_non_nil_star_form(lemma_first) .. "'ing" .. lemma_rest elseif form == "+l" then return {{term = full_default_ing, l = {"US"}}, {term = compute_double_last_cons_stem(lemma) .. "ing", l = {"UK"}}} elseif form == "*l" then return {{term = check_non_nil_star_form(split_default_ing, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "ing"), l = {"UK"}}} else return sub_tilde(form, lemma) end end local function canonicalize_ed_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_ed elseif form == "*" then return check_non_nil_star_form(split_default_ed, lemma) elseif form == "++" then return compute_double_last_cons_stem(lemma) .. "ed" elseif form == "+!" then return lemma .. "ed" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "ed" .. lemma_rest elseif form == "+'" then return {{term = lemma .. "'d"}, {term = lemma .. "'ed"}} elseif form == "*'" then return {{term = check_non_nil_star_form(lemma_first) .. "'d" .. lemma_rest}, {term = check_non_nil_star_form(lemma_first) .. "'ed" .. lemma_rest}} elseif form == "**" then return compute_double_last_cons_stem_of_split_verb(lemma, "ed") elseif form == "+l" then return {{term = full_default_ed, l = {"US"}}, {term = compute_double_last_cons_stem(lemma) .. "ed", l = {"UK"}}} elseif form == "*l" then return {{term = check_non_nil_star_form(split_default_ed, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "ed"), l = {"UK"}}} else return sub_tilde(form, lemma) end end -- FIXME: options should be "+", "*", "++", "**", "+n", "*n", "++n" and "**n", but not "n" local function canonicalize_en_form(form) if form == "n" then track("n4") return add_suffix(lemma, "n") end return canonicalize_ed_form(form) end --------------------------------- MAIN PARSING/CONJUGATING CODE -------------------------------- local is_angle_bracket = args.angle_bracket if is_angle_bracket then if par2s[1] or par3s[1] or par4s[1] then error("Can't specify explicit values for 2=, 3= or 4= along with the angle-bracket format") end elseif is_angle_bracket == nil and not par2s[1] and not par3s[1] and not par4s[1] and not args[1][2] and args[1][1] and args[1][1]:find("<") then if put.term_contains_top_level_html(args[1][1]) then -- Often, term_contains_top_level_html() returns true on the angle-bracket format, which would -- make the pcall() below succeed but leave the angle brackets as-is. Check for this and only do the -- pcall() if term_contains_top_level_html() returns false. is_angle_bracket = true else -- If it's ambiguous whether it's an angle-bracket format or separate params with an inline modifier, -- try to parse as the latter. If an error occurs, treat as the former. local ok ok, par1s = pcall(parse_inflection, args, {1, "pres_3sg"}) if not ok then par1s = nil is_angle_bracket = true end end end if is_angle_bracket then -------------------------- ANGLE-BRACKET FORMAT -------------------------- -- (0) Expand multiword term with angle brackets just on the first word. local arg11 = args[1][1] if arg11:find("^<.*>$") and pagename:find(" ") then local first, rest = pagename:match("^(.-)( .*)$") arg11 = first .. arg11 .. rest end -- (1) Parse the indicator specs inside of angle brackets. local function parse_indicator_spec(angle_bracket_spec) local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) local segments = put.parse_balanced_segment_run(inside, "[", "]") local comma_separated_groups = put.split_alternating_runs(segments, ",") if #comma_separated_groups > 4 then error("Too many comma-separated parts in indicator spec, expected at most 4: " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then error("Extraneous text after bracketed footnotes: '" .. concat(separated_group) .. "'") end if not footnotes then footnotes = {} end insert(footnotes, separated_group[j]) end return footnotes end local function fetch_specs(comma_separated_group) if not comma_separated_group then return {{term = "+"}} end local specs = {} local colon_separated_groups = put.split_alternating_runs(comma_separated_group, ":") for _, colon_separated_group in ipairs(colon_separated_groups) do local form = colon_separated_group[1] if form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then error("*, **, *l, *! and *' not allowed inside of indicator specs: " .. angle_bracket_spec) end if form == "" then form = "+" end local termobj = { term = form } local footnotes = fetch_footnotes(colon_separated_group) if footnotes then for _, footnote in ipairs(footnotes) do m_headword_utilities.add_footnote_to_termobj(termobj, footnote) end end insert(specs, termobj) end return specs end local s_specs = fetch_specs(comma_separated_groups[1]) local ing_specs = fetch_specs(comma_separated_groups[2]) local ed_specs = fetch_specs(comma_separated_groups[3]) local en_specs = fetch_specs(comma_separated_groups[4]) return { forms = {}, s_specs = s_specs, ing_specs = ing_specs, ed_specs = ed_specs, en_specs = en_specs, } end local parse_props = { parse_indicator_spec = parse_indicator_spec, } local alternant_multiword_spec = iut.parse_inflected_text(arg11, parse_props) -- (2) Check for user-specified brackets; remove any links from the lemma, but remember the original -- form so we can use it below in the 'lemma_linked' form. -- Check to see if there are brackets in the pre-text or post-text. If so, use the linked lemma (with the -- verb autolinked unless noautolinkverb is given). Otherwise, use the default headword algorithm. local function check_bracket(val) if val:find("%[%[") then alternant_multiword_spec.saw_bracket = true end end for _, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do check_bracket(alternant_or_word_spec.before_text) if alternant_or_word_spec.alternants then for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do for _, word_spec in ipairs(multiword_spec.word_specs) do check_bracket(word_spec.before_text) end check_bracket(multiword_spec.post_text) end end end check_bracket(alternant_multiword_spec.post_text) iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = pagename end base.orig_lemma = base.lemma base.lemma = remove_links(base.lemma) if args.noautolinkverb or base.orig_lemma:find("%[%[") then base.linked_lemma = base.orig_lemma else base.linked_lemma = "[[" .. base.orig_lemma .. "]]" end end) -- (3) Conjugate the verbs according to the indicator specs parsed above. local all_verb_slots = { lemma = "infinitive", lemma_linked = "infinitive", s_form = "3|s|pres", ing_form = "pres|ptcp", ed_form = "past", en_form = "past|ptcp", } local function conjugate_verb(base) local function process_specs(slot, specs, canon_func, default_values, default_already_formobj) local function insert_termobj_into_slot(termobj) local formobj = m_headword_utilities.convert_termobj_to_formobj(termobj) -- If the form is -, don't insert any forms, which will result in there being no overall forms -- (in fact it will be nil). We check for that down below and substitute a single "-" as the -- form, which in turn gets turned into special labels like "no present participle". if formobj.form == "-" then if formobj.footnotes then error("Unable to preserve footnotes specified on missing form '-': FIXME: " .. dump(formobj.footnotes)) end else iut.insert_form(base.forms, slot, formobj) end end local function canonicalize_and_insert(arg) local canon_arg = canon_func(arg) if type(canon_arg) == "string" then arg.term = canon_arg insert_termobj_into_slot(arg) else for _, canon in ipairs(canon_arg) do m_headword_utilities.combine_termobj_qualifiers_labels(canon, arg) insert_termobj_into_slot(canon) end end end for _, arg in ipairs(specs) do if arg.term == "+" then if default_values then -- will be nil if past tense specified as - and no past ptc given for _, val in ipairs(default_values) do val = shallowCopy(val) if default_already_formobj then local argformobj = m_headword_utilities.convert_termobj_to_formobj(arg) val.footnotes = iut.combine_footnotes(val.footnotes, argformobj.footnotes) iut.insert_form(base.forms, slot, val) else m_headword_utilities.combine_termobj_qualifiers_labels(val, arg) canonicalize_and_insert(val) end end end else canonicalize_and_insert(arg) end end end set_lemma_and_default_forms(base.lemma) local all_part_default_specs = {} local function process_and_canonicalize_s_form(arg) local form = arg.term if form == "+" then error("Internal error: '+' should have been converted to '^' by now") end if form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then error(("Internal error: '%s' should have already thrown an error"):format(form)) end if form == "^" or form == "++" or form == "+l" or form == "+!" or form == "+'" then insert(all_part_default_specs, shallowCopy(arg)) end return canonicalize_s_form(form) end process_specs("s_form", base.s_specs, process_and_canonicalize_s_form, {{term = "^"}}) if not all_part_default_specs[1] then all_part_default_specs[1] = {term = "^"} end process_specs("ing_form", base.ing_specs, function(arg) return canonicalize_ing_form(arg.term) end, all_part_default_specs) process_specs("ed_form", base.ed_specs, function(arg) return canonicalize_ed_form(arg.term) end, all_part_default_specs) process_specs("en_form", base.en_specs, function(arg) return canonicalize_en_form(arg.term) end, base.forms.ed_form, "default already formobj") iut.insert_form(base.forms, "lemma", {form = base.lemma}) -- Add linked version of lemma for use in head=. We write this in a general fashion in case -- there are multiple lemma forms (which isn't possible currently at this level, although it's -- possible overall using the ((...,...)) notation). iut.insert_forms(base.forms, "lemma_linked", iut.map_forms(base.forms.lemma, function(form) if form == base.lemma and base.linked_lemma:find("%[%[") then return base.linked_lemma else return form end end)) end local inflect_props = { slot_table = all_verb_slots, inflect_word_spec = conjugate_verb, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- (4) Fetch the forms and put the conjugated lemmas in data.heads if not explicitly given. local function fetch_termobjs(slot) local forms = alternant_multiword_spec.forms[slot] -- See above. This should only occur if the user explicitly used - for a spec. if not forms or not forms[1] then return {{term = "-"}} end local termobjs = {} for _, formobj in ipairs(forms) do insert(termobjs, m_headword_utilities.convert_formobj_to_termobj(formobj)) end return termobjs end pres_3sgs = fetch_termobjs("s_form") pres_ptcs = fetch_termobjs("ing_form") pasts = fetch_termobjs("ed_form") past_ptcs = fetch_termobjs("en_form") -- Use the "linked" form of the lemma as the head if no head= explicitly given and the user specified -- brackets in one of the lemmas. Otherwise we use the default headword-linking algorithm. if not data.user_specified_heads[1] and alternant_multiword_spec.saw_bracket then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.lemma_linked) do insert(data.heads, m_headword_utilities.convert_formobj_to_termobj(lemma_obj)) end end else -------------------------- SEPARATE-PARAM FORMAT -------------------------- set_lemma_and_default_forms(pagename) par1s = par1s or parse_inflection(args, {1, "pres_3sg"}) pres_3sgs = {} pres_ptcs = {} pasts = {} past_ptcs = {} if not par1s[1] then par1s = {{term = "+"}} end if not par2s[1] then par2s = {{term = "+"}} end if not par3s[1] then par3s = {{term = "+"}} end if not par4s[1] then par4s = {{term = "+"}} end local function process_argument(args, dest, canon_func, default_values, default_already_canonicalized) local function canonicalize_and_insert(arg) local canon_arg = canon_func(arg) if type(canon_arg) == "string" then arg.term = canon_arg m_headword_utilities.insert_termobj_combining_duplicates(dest, arg) else for _, canon in ipairs(canon_arg) do m_headword_utilities.combine_termobj_qualifiers_labels(canon, arg) m_headword_utilities.insert_termobj_combining_duplicates(dest, canon) end end end for _, arg in ipairs(args) do if arg.term == "+" then for _, val in ipairs(default_values) do val = shallowCopy(val) m_headword_utilities.combine_termobj_qualifiers_labels(val, arg) if default_already_canonicalized then m_headword_utilities.insert_termobj_combining_duplicates(dest, val) else canonicalize_and_insert(val) end end else canonicalize_and_insert(arg) end end end local all_part_default_specs = {} local function process_and_canonicalize_s_form(arg) local form = arg.term if form == "+" then error("Internal error: '+' should have been converted to '^' by now") end if form == "^" or form == "++" or form == "+l" or form == "+!" or form == "+'" or form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then insert(all_part_default_specs, shallowCopy(arg)) end return canonicalize_s_form(form) end process_argument(par1s, pres_3sgs, process_and_canonicalize_s_form, {{term = "^"}}) if not all_part_default_specs[1] then all_part_default_specs[1] = {term = "^"} end process_argument(par2s, pres_ptcs, function(arg) return canonicalize_ing_form(arg.term) end, all_part_default_specs) process_argument(par3s, pasts, function(arg) return canonicalize_ed_form(arg.term) end, all_part_default_specs) process_argument(par4s, past_ptcs, function(arg) return canonicalize_en_form(arg.term) end, pasts, "default already canonicalized") end ------------------------------------------- INSERT INFLECTIONS ------------------------------------------ insert_inflection(data, pres_3sgs, "บุรุษที่สามเอกพจน์ปัจจุบันกาลสามัญ", "s-verb-form") insert_inflection(data, pres_ptcs, "รูปกริยาขยายปัจจุบันกาล", "ing-form") if deepEquals(pasts, past_ptcs) then insert_inflection(data, pasts, "อดีตกาลสามัญ และรูปกริยาขยายอดีตกาล", "ed-form", "no simple past or past participle") else insert_inflection(data, pasts, "อดีตกาลสามัญ", "spast") insert_inflection(data, past_ptcs, "รูปกริยาขยายอดีตกาล", "past|part") end if pagename:find(" ") then -- Check for placeholder "it" local words = split(pagename, " ") for _, word in ipairs(words) do if word == "it" or word == "its" or word == "it's" then insert(data.categories, langname .. ' terms with placeholder "it"') break end end -- Check for phrasal verbs local phrasal_adverbs = list_to_set{ -- NOTE: This should only contain common phrasal adverbs, not random words like [[low]], -- [[adrift]], etc. "aback", "about", "above", "across", "after", "against", "ahead", "along", "apart", "around", "as", "aside", "at", "away", "back", "before", "behind", "below", "between", "beyond", "by", "down", "for", "forth", "from", "in", "into", "of", "off", "on", "onto", "out", "over", "past", "round", "through", "to", "together", "towards", "under", "up", "upon", "with", "without", } local allowed_non_adverb_words = list_to_set{ "it", "one", "oneself", "someone", } local base = pagename local seen_adverbs = {} -- Only consider a verb to be phrasal if it consists of a single base verb followed exclusively by either -- adverbs from `phrasal_adverbs` or placeholder words from `allowed_non_adverb_words`, where at -- least one following word is from `phrasal_adverbs` (hence [[can it]] is not a phrasal verb). while true do local prev, word = base:match("^(.+) (.-)$") if not prev then break end if phrasal_adverbs[word] then insert(seen_adverbs, word) elseif allowed_non_adverb_words[word] then -- do nothing else break end base = prev end if not base:find(" ") and seen_adverbs[1] then insert(data.categories, langname .. " phrasal verbs") for i = #seen_adverbs, 1, -1 do insert(data.categories, langname .. ' phrasal verbs formed with "' .. seen_adverbs[i] .. '"') end end end end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["รูปปัจจัย"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, }, func = function(args, data, is_suffix) local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, "ปัจจัยสร้าง" .. typ) end insert(data.inflections, {label = "รูปผันของ " .. m_table.serialCommaJoin(suffix_type, {conj = "หรือ"})}) end, } return export mdz3mlfd1au3ps85pzrtd1r54n9zi99 สะอื้น 0 40511 5723232 1383754 2026-05-19T22:53:25Z Alifshinobi 397 /* ภาษาไทย */ 5723232 wikitext text/x-wiki == ภาษาไทย == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|lo|ສະອຶ້ນ}} === การออกเสียง === {{th-pron|สะ-อื้น}} === คำกริยา === {{th-verb}} # [[ถอนใจ]][[สะท้อน]][[เป็น]][[ระยะ]] ๆ [[เพราะ]][[ร้องไห้]][[มาก]][[เนื่อง]][[จาก]][[เสียใจ]][[ระทมใจ]][[เป็นต้น]] tpihem4mawr1dcratzbg4t9jn6lrsoz លាវ 0 47206 5723251 1914667 2026-05-20T03:35:32Z OctraBot 3198 /* ภาษาเขมร */ เก็บกวาด 5723251 wikitext text/x-wiki == ภาษาเขมร == {{wp|km:}} === รูปแบบอื่น === * {{l|km|ឡាវ}} === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|kxm|เลียว}} === การออกเสียง === {{km-IPA}} === คำวิสามานยนาม === {{km-proper noun}} # {{tcl|km|ลาว|id=Q819}} # [[ภาษาลาว]] #: {{km-x|ភាសា លាវ|Lao (language)}} === คำนาม === {{km-noun}} # [[ชาวลาว]] #: {{km-x|ជាតិ លាវ|Laos (person)}} {{C|km|ชื่อภาษา}} ehresxnsop1pdyx5t46rb2buz81iw3m มอดูล:ar-headword 828 51049 5723267 4933684 2026-05-20T04:32:10Z OctraBot 3198 5723267 Scribunto text/plain -- Author: primarily Benwing2; some work by Fenakhay, Erutuon; early version by Rua local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local ar_translit = require("Module:ar-translit") local ar_verb_module = "Module:ar-verb" local ar_utilities_module = "Module:ar-utilities" local ar = require(ar_utilities_module) local en_utilities_module = "Module:en-utilities" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local links_module = "Module:links" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local require_when_needed = require("Module:utilities/require when needed") local remove_links = require_when_needed(links_module, "remove_links") local m_table = require("Module:table") local m_str_utils = require("Module:string utilities") local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_to_set = m_table.listToSet local rfind = m_str_utils.find local rmatch = m_str_utils.match local rsubn = m_str_utils.gsub local u = m_str_utils.char local rsplit = m_str_utils.split local insert = table.insert local concat = table.concat local unpack = unpack or table.unpack -- Lua 5.2 compatibility local langcode = "ar" local lang = require("Module:languages").getByCode(langcode) local langname = lang:getCategoryName() --th local TEMPCOMMA = u(0xFFF0) local TEMPARCOMMA = u(0xFFF1) local misc_pos_with_gender = list_to_set { "ปัจจับ", "รูปคุณศัพท์", "รูปนาม", "รูปวิสามานยนาม", "รูปสรรพนาม", "รูปตัวกำหนด", } ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local dump = mw.dumpObject -- version of mw.ustring.gsub() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local function ine(val) if val == "" then return nil else return val end end -- Replace comma with a temporary char in comma + whitespace. local function escape_comma_whitespace(run) local escaped = false if run:find("\\,") then run = run:gsub("\\,", "\\" .. TEMPCOMMA) escaped = true end if run:find("\\،") then run = run:gsub("\\،", "\\" .. TEMPARCOMMA) escaped = true end if run:find(",%s") then run = run:gsub(",(%s)", TEMPCOMMA .. "%1") escaped = true end if run:find("،%s") then run = run:gsub("،(%s)", TEMPARCOMMA .. "%1") escaped = true end return run, escaped end -- Undo replacement of comma with a temporary char in comma + whitespace. local function unescape_comma_whitespace(run) return (run:gsub(TEMPCOMMA, ","):gsub(TEMPARCOMMA, "،")) end -- Split an argument on comma or Arabic comma, but not either type of comma followed by whitespace. local function split_on_comma(val) if rfind(val, "[,،]%s") or val:find("\\") then return export.split_escaping(val, "[,،]", false, escape_comma_whitespace, unescape_comma_whitespace) else return rsplit(val, "[,،]") end end local function replace_tr_ending(tr, from, to) if not tr then return nil end local pref = tr:match("^(.*)" .. from .. "$") if not pref then error(("Translit '%s' does not end in -%s, as expected"):format(tr, from)) end return pref .. to end ----------------------------------------------------------------------------------------- -- Tracking functions -- ----------------------------------------------------------------------------------------- local trackfn = require("Module:debug/track") local function track(page) trackfn(langcode .. "-headword/" .. page) return true end --[==[ Examples of what you can find by looking at what links to the given pages: [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized]] all unvocalized pages [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/pl]] all unvocalized pages where the plural is unvocalized, whether specified using pl=, pl2=, etc. [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head]] all unvocalized pages where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/nouns]] all nouns excluding proper nouns, collective nouns, singulative nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/proper]] nouns all proper nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/not]] proper nouns all words that are not proper nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/adjectives]] all adjectives where any parameter is unvocalized; currently only works for heads, so equivalent to .../unvocalized/head/adjectives [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-empty-head]] all pages with an empty head [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-manual-translit]] all unvocalized pages with manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-manual-translit/head/nouns]] all nouns where the head is unvocalized but has manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-no-translit]] all unvocalized pages without manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab]] all pages with any parameter containing i3rab of either -un, -u, -a or -i [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-un]] all pages with any parameter containing an -un i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-un/pl]] all pages where a form specified using pl=, pl2=, etc. contains an -un i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-u/head]] all pages with a head containing an -u i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab/head/proper]] nouns (all proper nouns with a head containing i3rab of either -un, -u, -a or -i) In general, the format is one of the following: Wiktionary:Tracking/ar-headword/FIRSTLEVEL Wiktionary:Tracking/ar-headword/FIRSTLEVEL/ARGNAME Wiktionary:Tracking/ar-headword/FIRSTLEVEL/POS Wiktionary:Tracking/ar-headword/FIRSTLEVEL/ARGNAME/POS FIRSTLEVEL can be one of "unvocalized", "unvocalized-empty-head" or its opposite "unvocalized-specified", "unvocalized-manual-translit" or its opposite "unvocalized-no-translit", "i3rab", "i3rab-un", "i3rab-u", "i3rab-a", or "i3rab-i". ARGNAME is either "head" or an argument such as "pl", "f", "cons", etc. This automatically includes arguments specified as head2=, pl3=, etc. POS is a part of speech, lowercase and singular, e.g. "noun", "adjective", "proper noun", "collective noun", etc. or "not proper noun", which includes all parts of speech but proper nouns. ]==] local function track_form(argname, form, translit, pos) form = ar.reorder_shadda(remove_links(form)) function dotrack(page) track(page) track(page .. "/" .. argname) if pos then track(page .. "/" .. pos) track(page .. "/" .. argname .. "/" .. pos) if pos ~= "คำวิสามานยนาม" then track(page .. "/not proper noun") track(page .. "/" .. argname .. "/not proper noun") end end end function track_i3rab(arabic, tr) if rfind(form, arabic .. "$") then dotrack("i3rab") dotrack("i3rab-" .. tr) end end track_i3rab(ar.UN, "un") track_i3rab(ar.U, "u") track_i3rab(ar.A, "a") track_i3rab(ar.I, "i") if form == "" or not (lang:transliterate(form)) then dotrack("unvocalized") if form == "" then dotrack("unvocalized-empty-head") else dotrack("unvocalized-specified") end if translit then dotrack("unvocalized-manual-translit") else dotrack("unvocalized-no-translit") end end end ----------------------------------------------------------------------------------------- -- Inflection-parsing functions -- ----------------------------------------------------------------------------------------- -- Construct the default construct state or informal form of a term in lemma format. Usually this is the same as the -- lemma but is different for final-weak nouns and adjectives ending in -n in their lemma. NOTE: Input must be -- shadda-reordered for this to work properly. local function default_construct_state_or_informal(term, tr) local pref = term:match("^(.*)" .. ar.HAMZA .. ar.IN .."$") -- Hamza on the line with -in changes to hamza-on-yā with -ī. if pref then return pref .. ar.HAMZA_ON_YA .. ar.II, replace_tr_ending(tr, "in", "ī") end -- Otherwise just change -in to -ī. pref = term:match("^(.*)" .. ar.IN .. "$") if pref then return pref .. ar.II, replace_tr_ending(tr, "in", "ī") end -- Change -an with alif maqṣūra to -ā with alif maqṣūra. pref = term:match("^(.*)" .. ar.AN .. ar.AMAQ .. "$") if pref then return pref .. ar.AAMAQ, replace_tr_ending(tr, "an", "ā") end -- Change -an with tall alif (e.g. عَصًا) to -ā with tall alif. pref = term:match("^(.*)" .. ar.AN .. ar.ALIF .. "$") if pref then return pref .. ar.AA, replace_tr_ending(tr, "an", "ā") end return term, tr end local function generate_construct_state_or_informal_default(data, args) local heads = data.heads local consobjs = {} local different_cons = false for _, headobj in ipairs(data.heads) do local consterm, constr = default_construct_state_or_informal(headobj.term, headobj.tr) different_cons = different_cons or consterm ~= headobj.term or constr ~= headobj.tr local consobj = m_table.shallowCopy(headobj) consobj.term = consterm consobj.tr = constr insert(consobjs, consobj) end if different_cons then return consobjs else return {} end end local noun_field_cons = { field = "cons", label = "<<construct state>>", generate_default = generate_construct_state_or_informal_default, default_when_not_explicit = function(args, data) return true end, } local noun_field_inf = {field = "inf", label = "informal"} local noun_field_obl = {field = "obl", label = "<<oblique>>"} local noun_field_def = {field = "def", label = "<<definite>> state"} local noun_inflections = { noun_field_cons, noun_field_inf, noun_field_obl, noun_field_def, } local adj_field_inf = { field = "inf", label = "informal", generate_default = generate_construct_state_or_informal_default, default_when_not_explicit = function(args, data) return true end, } local adj_field_obl = noun_field_obl local adj_field_def = noun_field_def local adjective_inflections = { adj_field_inf, adj_field_obl, adj_field_def, } local function has_construct_state(data) return data.pos_category ~= "adjectives" end local function parse_nominal_inflection(paramname, val, parse_err) return m_headword_utilities.parse_term_with_modifiers { val = val, paramname = paramname, splitchar = ",", include_mods = {"tr", "g"}, } end local function make_nominal_inflection_param_mod_spec(paramname) return {convert = function(val, parse_err) return parse_nominal_inflection(paramname, val, parse_err) end} end -- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple -- comma-separated values are allowed. local function parse_inflection(data, args, field, is_head) local argfield = field local argpref = field if type(argfield) == "table" then argpref = argfield[2] argfield = argfield[1] end local include_mods if is_head then include_mods = {"tr"} else include_mods = {"tr", "g"} for _, spec in ipairs(has_construct_state(data) and noun_inflections or adjective_inflections) do insert(include_mods, {spec.field, make_nominal_inflection_param_mod_spec(argpref .. "." .. spec.field)}) end end if is_head then local retval if args[argfield] then retval = m_headword_utilities.parse_term_with_modifiers { val = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = include_mods, } end return retval or {} else return m_headword_utilities.parse_term_list_with_modifiers { forms = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = include_mods, } end end local function insert_inflection(data, terms, label, accel, defgender, track_field, no_label, usually_no_label) local track_pos = m_en_utilities.singularize(data.pos_category) for _, termobj in ipairs(terms) do -- If the user supplied a construct state or informal form for the term with a value of "+", substitute the -- default value for the term. If the user supplied a value of "--", they want no value displayed. Otherwise, -- if the user didn't supply any value, we check to see if the default construct state or informal form is -- different from the lemma and display it if so; this applies particularly to terms in '-in' and '-an', where -- the default construct state or informal form is almost always correct. local field = has_construct_state(data) and "cons" or "inf" if not termobj[field] then local defcons, defconstr = default_construct_state_or_informal(termobj.term, termobj.tr) if termobj.term ~= defcons or termobj.tr ~= defconstr then -- We don't want to copy qualifiers, labels, etc. from the term object because we're a subinflection of -- the term object. termobj[field] = {{term = defcons, tr = defconstr}} end elseif termobj[field][1].term == "--" then if termobj[field][2] then error("Can't specify more than one value for <" .. field .. ":...> if first value is '--', meaning \"don't insert anything\"") end termobj[field] = nil else for i, consobj in ipairs(termobj[field]) do if consobj.term == "+" then if consobj.tr then error("Can't specify translit for default value '+'") end consobj.term, consobj.tr = default_construct_state_or_informal(termobj.term, termobj.tr) elseif consobj.term == "~" then if consobj.tr then error("Can't specify translit for term-requesting value '~'") end consobj.term, consobj.tr = termobj.term, termobj.tr end end end if defgender and not termobj.genders then termobj.genders = {{spec = defgender}} end local function insert_nested_inflection(field, label) if termobj[field] then m_headword_utilities.insert_inflection { headdata = data, inflobj = termobj, terms = termobj[field], label = label } end end for _, spec in ipairs(has_construct_state(data) and noun_inflections or adjective_inflections) do insert_nested_inflection(spec.field, spec.label) end track_form(track_field, termobj.term, termobj.tr, track_pos) end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, no_label = no_label, usually_no_label = usually_no_label, } end ----------------------------------------------------------------------------------------- -- Main entry point -- ----------------------------------------------------------------------------------------- function export.show(frame) local iparams = { [1] = true, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "แม่แบบ:" .. langcode .. "-head" and "คำอุทาน" or error("Part of speech must be specified in 1=") poscat = require(headword_module).canonicalize_pos(poscat) end -- หมวดหมู่เป็นภาษาไทย local poscat_th = require("Module:th-utilities").th_pos(poscat) local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat_th] and "head_with_gender" or "head") or poscat_th local params = { ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["id"] = true, ["json"] = boolean_param, ["pagename"] = {}, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end local head_is_head = pos_functions[indexing_poscat] and pos_functions[indexing_poscat].head_is_not_1 local headfield = head_is_head and "head" or pos_in_1 and 2 or 1 params[headfield] = head_is_head and true or {default = "+"} params.head2 = {replaced_by = false, instead = "use multiple comma-separated values in |" .. headfield .. "="} local tr_replaced_by = {replaced_by = false, instead = "use <tr:...> inline modifier on |" .. headfield .. "="} params.tr = tr_replaced_by params.tr2 = tr_replaced_by if pos_functions[indexing_poscat] then for key, val in pairs(pos_functions[indexing_poscat].params()) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local data = { lang = lang, pos_category = poscat_th, orig_pos_category = poscat_th, categories = {}, heads = {}, genders = {}, inflections = {enable_auto_translit = true}, pagename = pagename, id = args.id, sort_key = args.sort, force_cat_output = force_cat, -- We expect a head always so the redundant head cat will be inaccurate. no_redundant_head_cat = true, } data.heads = parse_inflection(data, args, headfield, "is_head") for _, headobj in ipairs(data.heads) do if headobj.term == "+" then headobj.term = pagename end end data.is_suffix = false if args.suffix or ( not args.nosuffix and pagename:find("^%-") and poscat ~= "ปัจจัย" and poscat ~= "รูปปัจจัย" ) then data.is_suffix = true data.pos_category = "ปัจจัย" local singular_poscat = --[[m_en_utilities.singularize(poscat)]] poscat_th insert(data.categories, "ปัจจัยสร้าง" .. singular_poscat .. langname) insert(data.inflections, {label = "ปัจจัยสร้าง" .. singular_poscat}) end if pos_functions[indexing_poscat] then pos_functions[indexing_poscat].func(data, args) end -- Do this after calling pos_functions[poscat].func() as it may modify data.heads (as verbs do). local irreg_translit = false for _, head in ipairs(data.heads) do if ar_translit.irregular_translit(head.term, head.tr) then irreg_translit = true break end end if irreg_translit then insert(data.categories, "ศัพท์" .. langname .. "ที่มีการออกเสียงไม่ปรกติ") end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end ----------------------------------------------------------------------------------------- -- Gender handling -- ----------------------------------------------------------------------------------------- local valid_bare_genders = {false, "m", "f", "mf", "mfbysense", "mfequiv"} local valid_bare_numbers = {false, "d", "p"} local valid_bare_animacies = {false, "pr", "np"} local valid_genders = {} for _, gender in ipairs(valid_bare_genders) do for _, number in ipairs(valid_bare_numbers) do for _, animacy in ipairs(valid_bare_animacies) do local parts = {} local function ins_part(part) if part then insert(parts, part) end end ins_part(gender) ins_part(number) ins_part(animacy) local full_gender = concat(parts, "-") valid_genders[full_gender == "" and "?" or full_gender] = true end end end local function is_masc_sg(g) return g == "m" or g == "m-pr" or g == "m-np" end local function is_fem_sg(g) return g == "f" or g == "f-pr" or g == "f-np" end local function is_masc_fem_sg(g) g = g:gsub("%-pr", ""):gsub("%-np", "") return g == "mf" or g == "mfequiv" or g == "mfbysense" end local function add_gender_params(params, default) params[2] = {type = "genders", default = default or "?", template_default = "m"} params["g2"] = {replaced_by = false, instead = "use comma-separated values in |g="} end -- Handle gender in params 2=, inserting into `data.genders`. Also, if a lemma, insert categories into `data.categories` -- if the gender is unexpected for the form of the noun. (Note: If there are multiple genders, -- [[Module:gender and number]] will automatically insert 'Arabic POS with multiple genders'.) local function handle_gender(data, args, nonlemma, field) if not args[field or 2] then return end for _, gspec in ipairs(args[field or 2]) do if not valid_genders[gspec.spec] then error("Unrecognized gender: " .. gspec.spec) end end data.genders = args[field or 2] if nonlemma then return end for _, gspec in ipairs(data.genders) do local g = gspec.spec if is_masc_sg(g) or is_fem_sg(g) or is_masc_fem_sg(g) then local head = data.heads[1] if head then head = rsub(ar.reorder_shadda(remove_links(head.term)), ar.UNUOPT .. "$", "") local ends_with_tam = rfind(head, "^[^ ]*" .. ar.TAM .. "$") or rfind(head, "^[^ ]*" .. ar.TAM .. " ") if (is_masc_sg(g) or is_masc_fem_sg(g)) and ends_with_tam then insert(data.categories, "ศัพท์เพศชาย" .. langname .. "ที่ลงท้ายด้วยเพศหญิง") elseif (is_fem_sg(g) or is_masc_fem_sg(g)) and not ends_with_tam and not rfind(head, "[" .. ar.ALIF .. ar.AMAQ .. "]$") and not rfind(head, ar.ALIF .. ar.HAMZA .. "$") then insert(data.categories, "ศัพท์เพศหญิง" .. langname .. "ที่ไม่ลงท้ายด้วยเพศหญิง") end end end end end ----------------------------------------------------------------------------------------- -- Inflection handlers -- ----------------------------------------------------------------------------------------- -- Add list parameters to `params` (a structure as passed to [[Module:parameters]]) for a parameter named `argpref`. -- If `argpref` is "*", add the nominal inflection parameters for construct state, definite state, etc. Related -- transliteration and gender parameters are no longer supported in favor of inline modifiers, and error messages are -- output if these parameters are used. local function add_infl_params(params, argpref) params[argpref] = {list = true, disallow_holes = true} params[argpref .. "tr"] = {replaced_by = false, instead = "use <tr:...> inline modifier on |" .. argpref .. "="} params[argpref .. "g"] = {replaced_by = false, instead = "use <g:...> inline modifier on |" .. argpref .. "="} end --[=[ Fetch a list of inflections from the arguments in `args` based on argument `field` (e.g. "pl"). Label with `label` (e.g. "plural"), which will appear in the headword. Insert into `data.inflections`, where `data` is the structure passed to [[Module:headword]]. If `generate_default` is specified, it should be a function of two arguments (`data`, `args`), which should generate the default value if no values are specified or if "+" is explicitly given. If `generate_default` isn't specified and the user gave no values, no inflection will be inserted. ]=] local function handle_infl(data, args, spec) local newinfls = parse_inflection(data, args, spec.field, false) if not newinfls[1] and spec.default_when_not_explicit and spec.default_when_not_explicit(data, args) then newinfls = {{term = "+"}} end if spec.handle then spec.handle(data, args, newinfls) end local default_specs = spec.allowed_defspecs if not default_specs then default_specs = spec.generate_default and {["+"] = true} or {} end local saw_defspec = false for _, newinfl in ipairs(newinfls) do if default_specs[newinfl.term] or newinfl.term == "~" then saw_defspec = true break end end if saw_defspec then local newnewinfls = {} for _, newinfl in ipairs(newinfls) do if default_specs[newinfl.term] then if newinfl.tr then error("Can't specify translit for default value '" .. newinfl.term .. "'") end local definfls = spec.generate_default(data, args, newinfl.term) for _, definfl in ipairs(definfls) do m_headword_utilities.combine_termobj_qualifiers_labels(definfl, newinfl) insert(newnewinfls, definfl) end elseif newinfl.term == "~" then if newinfl.tr then error("Can't specify translit for head-requesting value '~'") end for _, headobj in ipairs(data.heads) do headobj = m_table.shallowCopy(headobj) m_headword_utilities.combine_termobj_qualifiers_labels(headobj, newinfl) insert(newnewinfls, headobj) end else insert(newnewinfls, newinfl) end end newinfls = newnewinfls end if newinfls[1] then if newinfls[1].term == "--" then if newinfls[2] then error("Can't specify more than one term if first term is '--', meaning \"don't insert anything\"") end else insert_inflection(data, newinfls, spec.label, nil, spec.defgender, spec.field, spec.no_label, spec.usually_no_label) end end end local function add_infl_list_params(params, infl_list) for _, infl in ipairs(infl_list) do add_infl_params(params, infl.field) end end local function handle_infl_list_args(data, args, infl_list) for _, infl in ipairs(infl_list) do handle_infl(data, args, infl) end end ----------------------------------------------------------------------------------------- -- Default ending generators -- ----------------------------------------------------------------------------------------- local function make_conditional_default(specs) return function(data, args) local heads = data.heads if not heads[1] then heads = {{term = data.pagename}} end local newobjs = {} for _, headobj in ipairs(heads) do local term = ar.reorder_shadda(headobj.term) local tr = headobj.tr local matched = false for _, spec in ipairs(specs) do local from, fromtr, to, totr = unpack(spec) if from:find("^%^") then pref = rmatch(term, from .. "$") else pref = rmatch(term, "^(.*)" .. from .. "$") end if pref then term = pref .. to tr = replace_tr_ending(tr, fromtr, totr) matched = true headobj = m_table.shallowCopy(headobj) headobj.term = ar.undo_reorder_shadda(term) headobj.tr = tr insert(newobjs, headobj) break end end if not matched then error(("Internal error: No matching spec: head=%s"):format(dump(headobj))) end end return newobjs end end local default_feminine = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AAH, "āh"}, {ar.AN .. ar.ALIF, "an", ar.AAH, "āh"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAH, "iya"}, {ar.IN, "in", ar.IYAH, "iya"}, {"", "", ar.AH, "a"}, } local default_masculine = make_conditional_default { -- tall alif substitutes for alif maqṣūra after a yāʔ {ar.Y .. ar.AAH, "āh", ar.AN .. ar.ALIF, "an"}, {ar.AAH, "āh", ar.AN .. ar.AMAQ, "an"}, -- handle the common case of final-weak feminine active participle with preceding hamza; -- the hamza-on-yāʔ always converts back to hamza on the line when preceded by ā (alif) but -- may not otherwise, so we just leave it alone in that case {ar.ALIF .. ar.HAMZA_ON_YA .. ar.IYAH, "iya", ar.HAMZA .. ar.IN, "in"}, {ar.IYAH, "iya", ar.IN, "in"}, {ar.AH, "a", "", ""}, {"", "", "", ""}, } local default_masculine_plural = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AWN, "awn"}, {ar.AN .. ar.ALIF, "an", ar.AWN, "awn"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_WAW .. ar.UUN, "ūn"}, {ar.IN, "in", ar.UUN, "ūn"}, {"", "", ar.UUN, "ūn"}, } local default_feminine_plural = make_conditional_default { -- صَلَاة pl. صَلَوَات and أَدَاة pl. أَدَوَات and similar; but نَوَاة and وَفَاة with a و in them become نَوَيَات and وَفَيَات; -- and longer terms like مُبَارَاة and كُمَّثْرَاة invariably form their plural in -يَات. {"^([^و]" .. ar.A .. "[^و])" .. ar.AAH, "āh", ar.A .. ar.W .. ar.AAT, "awāt"}, {ar.AAH, "āh", ar.AYAAT, "ayāt"}, {ar.AN .. ar.AMAQ, "an", ar.AYAAT, "ayāt"}, {ar.AN .. ar.ALIF, "an", ar.AYAAT, "ayāt"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAAT, "iyāt"}, {ar.IN, "in", ar.IYAAT, "iyāt"}, {ar.AH, "a", ar.AAT, "āt"}, {"", "", ar.AAT, "āt"}, } local default_masculine_dual = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AYAAN, "ayān"}, {ar.AN .. ar.ALIF, "an", ar.AYAAN, "ayān"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAAN, "iyān"}, {ar.IN, "in", ar.IYAAN, "iyān"}, {"", "", ar.AAN, "ān"}, } local default_feminine_dual = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AATAAN, "ātān"}, {ar.AN .. ar.ALIF, "an", ar.AATAAN, "ātān"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IY .. ar.ATAAN, "iyatān"}, {ar.IN, "in", ar.IY .. ar.ATAAN, "iyatān"}, {"", "", ar.ATAAN, "atān"}, } -- Return whether `term` is a nisba noun or adjective, ending in -iyy or -iyyah. `nisba_val` is the value of -- args.nisba; if non-nil, it overrides any auto-determination based on the shape of the term. local function term_is_nisba(term, nisba_val) if nisba_val ~= nil then return nisba_val end term = ar.reorder_shadda(term) -- necessary to avoid issues with e.g. أُورُوبِّيّ. local pref = rmatch(term, "^(.*)" .. ar.IYY .. ar.UN .. "?$") if not pref then pref = rmatch(term, "^(.*)" .. ar.IYYAH .. ar.UN .. "?$") end -- Avoid false positives for words like قَوِيّ "strong" and صَبِيّ "boy". There may be other false positives -- but this should catch most of them and will avoid very many false negatives. return pref and not rfind(pref, "^[^ا]" .. ar.A .. ".$") end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function is_defaulting_adjective(data, args) return data.orig_pos_category == "คำคุณศัพท์defaulting" end local adj_field_elative = {field = "el", label = "<<elative>>"} local adj_inflections = { adj_field_inf, adj_field_obl, adj_field_def, {field = "f", label = "เพศหญิง", generate_default = default_feminine, default_when_not_explicit = is_defaulting_adjective}, {field = "d", label = "เพศชายทวิพจน์", generate_default = default_masculine_dual}, {field = "fd", label = "เพศหญิงทวิพจน์", generate_default = default_feminine_dual}, {field = "cpl", label = "เพศรวมพหูพจน์"}, {field = "pl", label = "เพศชายพหูพจน์", generate_default = default_masculine_plural, default_when_not_explicit = is_defaulting_adjective}, {field = "fpl", label = "เพศหญิงพหูพจน์", generate_default = default_feminine_plural, default_when_not_explicit = is_defaulting_adjective}, } local function get_adj_params() local params = {} add_infl_list_params(params, adj_inflections) add_infl_params(params, "el") params.nisba = boolean_param return params end local function handle_adj_args(data, args) handle_infl_list_args(data, args, adj_inflections) handle_infl(data, args, adj_field_elative) for _, headobj in ipairs(data.heads) do if term_is_nisba(headobj.term, args.nisba) then insert(data.categories, "คำคุณศัพท์สัมพันธ์ (นิสบะฮ์) " .. langname) break end end end pos_functions["คำคุณศัพท์"] = { params = get_adj_params, func = handle_adj_args, } pos_functions["คำคุณศัพท์defaulting"] = { params = get_adj_params, func = function(data, args) data.pos_category = "คำคุณศัพท์" handle_adj_args(data, args) end, } ----------------------------------------------------------------------------------------- -- Nouns, etc. -- ----------------------------------------------------------------------------------------- local function get_masc_or_feminine_gender(data, default_type) local saw_m, saw_f, saw_mf for _, gender in ipairs(data.genders) do if is_masc_sg(gender.spec) then saw_m = true elseif is_fem_sg(gender.spec) then saw_f = true elseif is_masc_fem_sg(gender.spec) then saw_mf = true end end if saw_mf or saw_m and saw_f then error("Can't generate default for " .. default_type .. " when gender is both masculine and feminine") elseif saw_m then return "m" elseif saw_f then return "f" else error("Can't generate default for " .. default_type .. " when gender is not specified as " .. "masculine or feminine singular") end end local function is_defaulting_noun(data, args) return data.orig_pos_category == "คำนามdefaulting" end local noun_field_dual = { field = "d", label = "ทวิพจน์", generate_default = function(data, args) local gender = get_masc_or_feminine_gender(data, "noun dual") if gender == "m" then return default_masculine_dual(data, args) else return default_feminine_dual(data, args) end end, } local noun_field_plural = { field = "pl", label = "พหูพจน์", generate_default = function(data, args, defspec) local gender = get_masc_or_feminine_gender(data, "noun plural") if gender == "m" then if defspec == "+f" then return default_feminine_plural(data, args) else return default_masculine_plural(data, args) end elseif defspec == "+f" then error("Can't specify '+f' with feminine gender; just use '+'") else return default_feminine_plural(data, args) end end, -- Handle the case where pl=-, indicating an uncountable noun. handle = function(data, args, terms) if terms[1] and terms[1] == "-" then insert(data.categories, "คำนามนับไม่ได้" .. langname) if args.pauc and args.pauc[1] then error("Can't specify paucals when pl=-") end end end, allowed_defspecs = {["+"] = true, ["+f"] = true}, default_when_not_explicit = is_defaulting_noun, no_label = "<<นับไม่ได้>>", usually_no_label = "โดยปกติ<<นับไม่ได้>>", } local noun_field_paucal = { field = "pauc", label = "<<paucal>>", generate_default = default_feminine_plural, } local noun_field_feminine = { field = "f", label = "เพศหญิง", generate_default = default_feminine, default_when_not_explicit = function(data, args) if data.orig_pos_category ~= "คำนามdefaulting" then return nil end local gender = get_masc_or_feminine_gender(data, "defaulting-if-masculine noun feminine") return gender == "m" end, } local noun_field_masculine = { field = "m", label = "เพศชาย", generate_default = default_masculine, default_when_not_explicit = function(data, args) if data.orig_pos_category ~= "คำนามdefaulting" then return nil end local gender = get_masc_or_feminine_gender(data, "defaulting-if-feminine noun masculine") return gender == "f" end, } local noun_basic_inflections = { noun_field_cons, noun_field_inf, noun_field_obl, noun_field_def, } local noun_shared_inflections = { noun_field_dual, noun_field_plural, } local noun_extra_inflections = { noun_field_paucal, noun_field_feminine, noun_field_masculine, } local function get_noun_params() local params = {} add_gender_params(params) add_infl_list_params(params, noun_basic_inflections) add_infl_list_params(params, noun_shared_inflections) add_infl_list_params(params, noun_extra_inflections) params.nisba = boolean_param return params end local function handle_noun_args(data, args) handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl_list_args(data, args, noun_extra_inflections) for _, headobj in ipairs(data.heads) do if term_is_nisba(headobj.term, args.nisba) then insert(data.categories, "คำนามสัมพันธ์ (นิสบะฮ์) " .. langname) break end end end pos_functions["คำนาม"] = { params = get_noun_params, func = handle_noun_args, } pos_functions["คำนามdefaulting"] = { params = get_noun_params, func = function(data, args) data.pos_category = "คำนาม" handle_noun_args(data, args) end, } local noun_field_singulative = {field = "sing", label = "<<คำเอกนาม>>", defgender = "f", generate_default = default_feminine} local noun_field_collective = {field = "coll", label = "<<คำสมุหนาม>>", defgender = "m", generate_default = default_masculine} local function handle_sing_coll_noun_infls(data, args, otherinfl, otherlabel, othergender) -- Handle sing= (corresponding singulative noun) or coll= (corresponding collective noun) and their gender handle_infl(data, args, otherinfl, otherlabel, nil, othergender) handle_infl_list_args(data, args, sing_coll_noun_inflections) end local function get_singulative_collective_noun_params(defgender, otherinfl) local params = {} add_gender_params(params, defgender) add_infl_list_params(params, noun_basic_inflections) add_infl_params(params, otherinfl) add_infl_list_params(params, noun_shared_inflections) add_infl_params(params, "pauc") return params end pos_functions["คำสมุหนาม"] = { params = function() return get_singulative_collective_noun_params("m", "sing") end, func = function(data, args) data.pos_category = "คำนาม" insert(data.categories, "คำสมุหนาม" .. langname) m_headword_utilities.insert_fixed_inflection { headdata = data, label = "<<คำสมุหนาม>>", } handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl(data, args, noun_field_singulative) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_paucal) end } pos_functions["คำเอกนาม"] = { params = function() return get_singulative_collective_noun_params("f", "coll") end, func = function(data, args) data.pos_category = "คำนาม" insert(data.categories, "คำเอกนาม" .. langname) m_headword_utilities.insert_fixed_inflection { headdata = data, label = "<<คำเอกนาม>>", } handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl(data, args, noun_field_collective) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_paucal) end } -- FIXME: Do numerals really behave almost as nouns? They vary by masc/fem. pos_functions["เลข"] = { params = get_noun_params, func = function(data, args) insert(data.categories, "เลขเชิงการนับ" .. langname) handle_noun_args(data, args) end } pos_functions["คำวิสามานยนาม"] = { params = get_noun_params, func = handle_noun_args, } local function get_pronoun_params() local params = {} add_gender_params(params, defgender) add_infl_list_params(params, noun_basic_inflections) add_infl_list_params(params, noun_shared_inflections) add_infl_params(params, "f") return params end pos_functions["คำสรรพนาม"] = { params = get_pronoun_params, func = function(data, args) handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_feminine) end } ----------------------------------------------------------------------------------------- -- Non-lemma forms -- ----------------------------------------------------------------------------------------- local valid_forms = list_to_set( { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "Iq", "IIq", "IIIq", "IVq" }) -- FIXME: Partly duplicated in [[Module:ar-inflections]]. local function handle_conj_form(data, args) local form = args[2] if form then if not valid_forms[form] then error("Invalid verb conjugation form " .. form) end insert(data.inflections, { label = "[[ภาคผนวก:คำกริยาภาษาอาหรับ#รูป " .. form .. "|รูป " .. form .. "]]" }) end end pos_functions["รูปกริยา"] = { params = function() return { [2] = {}, } end, func = function(data, args) handle_conj_form(data, args) end } local function get_participle_params() local params = get_adj_params() params[2] = {} return params end pos_functions["รูปกริยาขยายกรรตุวาจก"] = { params = get_participle_params, func = function(data, args) data.pos_category = "รูปกริยาขยาย" insert(data.categories, "รูปกริยาขยายกรรตุวาจก" .. langname) handle_conj_form(data, args) handle_infl_list_args(data, args, adj_inflections) end } pos_functions["รูปกริยาขยายกรรมวาจก"] = { params = get_participle_params, func = function(data, args) data.pos_category = "รูปกริยาขยาย" insert(data.categories, "รูปกริยาขยายกรรมวาจก" .. langname) handle_conj_form(data, args) handle_infl_list_args(data, args, adj_inflections) end } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["คำกริยา"] = { head_is_not_1 = true, params = function() return { [1] = {}, -- Comma-separated lists with possible inline modifiers ["past"] = {}, ["past1s"] = {}, ["nonpast"] = {}, ["vn"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, } end, func = function(data, args) local ar_verb = require(ar_verb_module) local alternant_multiword_spec = args[1] ~= "-" and ar_verb.do_generate_forms(args, "ar-verb", data.pagename) or nil local function do_slot(slots_to_check, override, label, slot_is_headword) -- Do this even with an override so we can return the correct filled slot. local slot, slotval if alternant_multiword_spec then for _, potential_slot in ipairs(slots_to_check) do slotval = alternant_multiword_spec.forms[potential_slot] if slotval then slot = potential_slot break end end end local function get_slot_values() local terms = {} for _, form in ipairs(slotval) do local term = { term = form.form, id = form.id, genders = form.genders, pos = form.pos, lit = form.lit, } term.tr = form.translit if form.footnotes then local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(form.footnotes) term.q = quals term.refs = refs end insert(terms, term) end return terms end if override then local override_param_mods = { alt = {}, t = { -- [[Module:headword]] expects the gloss in "gloss". item_dest = "gloss", }, gloss = {}, g = { -- [[Module:headword]] expects the genders in "genders". item_dest = "genders", type = "genders", }, pos = {}, lit = {}, id = {}, -- Qualifiers and labels q = { type = "qualifier", }, qq = { type = "qualifier", }, l = { type = "labels", }, ll = { type = "labels", }, ref = { -- [[Module:headword]] expects the references in "refs". item_dest = "refs", type = "references", }, } local function generate_obj(formval, parse_err) if formval == "+" then return {term = "+", underlying_terms = get_slot_values()} end local val, uncertain = formval:match("^(.*)(%?)$") val = val or formval uncertain = not not uncertain local ar, translit = val:match("^(.*)//(.*)$") if not ar then ar = formval end local retval = {term = ar, uncertain = uncertain} retval.tr = translit end local terms if override:find("<") then terms = require(parse_utilities_module).parse_inline_modifiers(override, { paramname = paramname, param_mods = override_param_mods, generate_obj = generate_obj, splitchar = "[,،]", escape_fun = escape_comma_whitespace, unescape_fun = unescape_comma_whitespace, }) else terms = split_on_comma(override) for i, split in ipairs(terms) do terms[i] = generate_obj(split) end end -- See if + was supplied and we have to potentially flatten multiple default terms and harmonize -- default properties with override properties. local saw_underlying_terms = false for _, term in ipairs(terms) do if term.underlying_terms then saw_underlying_terms = true break end end if saw_underlying_terms then -- Flatten any default terms, copying the corresponding override properties over the default -- properties. Non-default terms get inserted directly. local flattened = {} for _, term in ipairs(terms) do if term.underlying_terms then for _, underlying in ipairs(term.underlying_terms) do for k, v in pairs(term) do if k ~= "term" and k ~= "underlying_terms" then if k == "uncertain" then underlying.uncertain = underlying.uncertain or v elseif type(v) ~= "table" or v[1] then -- Don't copy empty lists (which are the default) over possibly non-empty -- lists. underlying[k] = v end end end insert(flattened, underlying) end else insert(flattened, term) end end terms = flattened end if not slot_is_headword then terms.label = label end return terms, slot elseif not alternant_multiword_spec then return nil, slot else if not slotval then if slot_is_headword then -- FIXME, put "uncertain" as qualifier? Does this ever happen? return nil, slot elseif alternant_multiword_spec.slot_uncertain[slot] then return {label = label .. " uncertain"}, slot elseif alternant_multiword_spec.slot_explicitly_missing[slot] then return {label = "no " .. label}, slot else -- just say nothing about this slot return nil, slot end end local terms = get_slot_values() if not slot_is_headword then terms.label = label end return terms, slot end end local gloss_parts = {} for _, vform in ipairs(alternant_multiword_spec.verb_forms) do insert(gloss_parts, "[[Appendix:Arabic verbs#Form " .. vform .. "|" .. vform .. "]]") end if gloss_parts[1] then data.gloss = concat(gloss_parts, ", ") end if data.heads[1] and args.past then error("Can't specify both head= and past= to {{ar-verb}}; prefer past=") end if not alternant_multiword_spec.has_active then insert(data.inflections, {label = "passive-only"}) end -- Do this always so `past_slot` is correctly filled. local past, past_slot = do_slot(ar_verb.potential_lemma_slots, args.past, "-", "slot is headword") if data.heads[1] then -- user specified head=; don't override with past= or slot 'past_3sm' etc. else if past then data.heads = past end end local should_do_past1s = not not args.past1s if not should_do_past1s then local is_form_I = false for _, vform in ipairs(alternant_multiword_spec.verb_forms) do if vform == "I" then is_form_I = true break end end if is_form_I then require(inflection_utilities_module).map_word_specs(alternant_multiword_spec, function(base) if base.verb_form == "I" then for _, vowel_spec in ipairs(base.conj_vowels) do -- For form-I geminate verbs, the final vowel of the past is elided in the citation form. -- We want to display it for all cases other than active a~u and a~i (the most common -- cases). if vowel_spec.weakness == "geminate" then if ar_verb.is_passive_only(base.passive) then should_do_past1s = true break end local past_vowel = ar_verb.rget(vowel_spec.past) local nonpast_vowel = ar_verb.rget(vowel_spec.nonpast) if not (past_vowel == ar.A and (nonpast_vowel == ar.U or nonpast_vowel == ar.I)) then should_do_past1s = true break end end end -- FIXME, provide way of breaking early from map_word_specs(). end end) end end local past1s if should_do_past1s then past1s, _ = do_slot({"past_1s", "past_pass_1s"}, args.past1s, "first-person singular past") if past1s then insert(data.inflections, past1s) end end local nonpast_slots if not past_slot or past_slot:find("^past_") then nonpast_slots = {"ind_3ms", "ind_pass_3ms", "imp_2ms"} else nonpast_slots = {} end local nonpast, _ = do_slot(nonpast_slots, args.nonpast, "non-past") if nonpast then insert(data.inflections, nonpast) end local vn, _ = do_slot({"vn"}, args.vn, "verbal noun") if vn then insert(data.inflections, vn) end -- FIXME: Should we insert categories? Conjugation also does it and is more likely to be accurate. --for _, cat in ipairs(alternant_multiword_spec.categories) do -- insert(data.categories, cat) --end --[=[ -- FIXME: Review this to see if we need to port it. -- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to -- incorporate any links in that head into the 1= specification, use the infinitive generated by -- [[Module:pt-verb]] in place of the user-specified or auto-generated head. This was copied from -- [[Module:it-headword]], where doing this gets accents marked on the verb(s). We don't have accents marked on -- the verb but by doing this we do get any footnotes on the infinitive propagated here. Don't do this if the -- user gave multiple heads or gave a head with a multiword-linked verbal expression such as Italian -- '[[dare esca]] [[al]] [[fuoco]]' (FIXME: give Portuguese equivalent). if not data.user_specified_heads[1] or ( not data.user_specified_heads[2] and alternant_multiword_spec.incorporated_headword_head_into_lemma ) then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.infinitive_linked) do local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes) insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end ]=] end } ----------------------------------------------------------------------------------------- -- Generic parts of speech -- ----------------------------------------------------------------------------------------- pos_functions.head_with_gender = { params = function() return { [3] = {type = "genders"}, } end, func = function(data, args) handle_gender(data, args, "nonlemma", 3) end, } return export qqvjrog585oa6k695287vj09ltrr80j 5723269 5723267 2026-05-20T04:42:31Z OctraBot 3198 5723269 Scribunto text/plain -- Author: primarily Benwing2; some work by Fenakhay, Erutuon; early version by Rua local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local ar_translit = require("Module:ar-translit") local ar_verb_module = "Module:ar-verb" local ar_utilities_module = "Module:ar-utilities" local ar = require(ar_utilities_module) local en_utilities_module = "Module:en-utilities" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local links_module = "Module:links" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local require_when_needed = require("Module:utilities/require when needed") local remove_links = require_when_needed(links_module, "remove_links") local m_table = require("Module:table") local m_str_utils = require("Module:string utilities") local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_to_set = m_table.listToSet local rfind = m_str_utils.find local rmatch = m_str_utils.match local rsubn = m_str_utils.gsub local u = m_str_utils.char local rsplit = m_str_utils.split local insert = table.insert local concat = table.concat local unpack = unpack or table.unpack -- Lua 5.2 compatibility local langcode = "ar" local lang = require("Module:languages").getByCode(langcode) local langname = lang:getCategoryName() --th local TEMPCOMMA = u(0xFFF0) local TEMPARCOMMA = u(0xFFF1) local misc_pos_with_gender = list_to_set { "ปัจจับ", "รูปคุณศัพท์", "รูปนาม", "รูปวิสามานยนาม", "รูปสรรพนาม", "รูปตัวกำหนด", } ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local dump = mw.dumpObject -- version of mw.ustring.gsub() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local function ine(val) if val == "" then return nil else return val end end -- Replace comma with a temporary char in comma + whitespace. local function escape_comma_whitespace(run) local escaped = false if run:find("\\,") then run = run:gsub("\\,", "\\" .. TEMPCOMMA) escaped = true end if run:find("\\،") then run = run:gsub("\\،", "\\" .. TEMPARCOMMA) escaped = true end if run:find(",%s") then run = run:gsub(",(%s)", TEMPCOMMA .. "%1") escaped = true end if run:find("،%s") then run = run:gsub("،(%s)", TEMPARCOMMA .. "%1") escaped = true end return run, escaped end -- Undo replacement of comma with a temporary char in comma + whitespace. local function unescape_comma_whitespace(run) return (run:gsub(TEMPCOMMA, ","):gsub(TEMPARCOMMA, "،")) end -- Split an argument on comma or Arabic comma, but not either type of comma followed by whitespace. local function split_on_comma(val) if rfind(val, "[,،]%s") or val:find("\\") then return export.split_escaping(val, "[,،]", false, escape_comma_whitespace, unescape_comma_whitespace) else return rsplit(val, "[,،]") end end local function replace_tr_ending(tr, from, to) if not tr then return nil end local pref = tr:match("^(.*)" .. from .. "$") if not pref then error(("Translit '%s' does not end in -%s, as expected"):format(tr, from)) end return pref .. to end ----------------------------------------------------------------------------------------- -- Tracking functions -- ----------------------------------------------------------------------------------------- local trackfn = require("Module:debug/track") local function track(page) trackfn(langcode .. "-headword/" .. page) return true end --[==[ Examples of what you can find by looking at what links to the given pages: [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized]] all unvocalized pages [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/pl]] all unvocalized pages where the plural is unvocalized, whether specified using pl=, pl2=, etc. [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head]] all unvocalized pages where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/nouns]] all nouns excluding proper nouns, collective nouns, singulative nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/proper]] nouns all proper nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/not]] proper nouns all words that are not proper nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/adjectives]] all adjectives where any parameter is unvocalized; currently only works for heads, so equivalent to .../unvocalized/head/adjectives [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-empty-head]] all pages with an empty head [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-manual-translit]] all unvocalized pages with manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-manual-translit/head/nouns]] all nouns where the head is unvocalized but has manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-no-translit]] all unvocalized pages without manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab]] all pages with any parameter containing i3rab of either -un, -u, -a or -i [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-un]] all pages with any parameter containing an -un i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-un/pl]] all pages where a form specified using pl=, pl2=, etc. contains an -un i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-u/head]] all pages with a head containing an -u i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab/head/proper]] nouns (all proper nouns with a head containing i3rab of either -un, -u, -a or -i) In general, the format is one of the following: Wiktionary:Tracking/ar-headword/FIRSTLEVEL Wiktionary:Tracking/ar-headword/FIRSTLEVEL/ARGNAME Wiktionary:Tracking/ar-headword/FIRSTLEVEL/POS Wiktionary:Tracking/ar-headword/FIRSTLEVEL/ARGNAME/POS FIRSTLEVEL can be one of "unvocalized", "unvocalized-empty-head" or its opposite "unvocalized-specified", "unvocalized-manual-translit" or its opposite "unvocalized-no-translit", "i3rab", "i3rab-un", "i3rab-u", "i3rab-a", or "i3rab-i". ARGNAME is either "head" or an argument such as "pl", "f", "cons", etc. This automatically includes arguments specified as head2=, pl3=, etc. POS is a part of speech, lowercase and singular, e.g. "noun", "adjective", "proper noun", "collective noun", etc. or "not proper noun", which includes all parts of speech but proper nouns. ]==] local function track_form(argname, form, translit, pos) form = ar.reorder_shadda(remove_links(form)) function dotrack(page) track(page) track(page .. "/" .. argname) if pos then track(page .. "/" .. pos) track(page .. "/" .. argname .. "/" .. pos) if pos ~= "คำวิสามานยนาม" then track(page .. "/not proper noun") track(page .. "/" .. argname .. "/not proper noun") end end end function track_i3rab(arabic, tr) if rfind(form, arabic .. "$") then dotrack("i3rab") dotrack("i3rab-" .. tr) end end track_i3rab(ar.UN, "un") track_i3rab(ar.U, "u") track_i3rab(ar.A, "a") track_i3rab(ar.I, "i") if form == "" or not (lang:transliterate(form)) then dotrack("unvocalized") if form == "" then dotrack("unvocalized-empty-head") else dotrack("unvocalized-specified") end if translit then dotrack("unvocalized-manual-translit") else dotrack("unvocalized-no-translit") end end end ----------------------------------------------------------------------------------------- -- Inflection-parsing functions -- ----------------------------------------------------------------------------------------- -- Construct the default construct state or informal form of a term in lemma format. Usually this is the same as the -- lemma but is different for final-weak nouns and adjectives ending in -n in their lemma. NOTE: Input must be -- shadda-reordered for this to work properly. local function default_construct_state_or_informal(term, tr) local pref = term:match("^(.*)" .. ar.HAMZA .. ar.IN .."$") -- Hamza on the line with -in changes to hamza-on-yā with -ī. if pref then return pref .. ar.HAMZA_ON_YA .. ar.II, replace_tr_ending(tr, "in", "ī") end -- Otherwise just change -in to -ī. pref = term:match("^(.*)" .. ar.IN .. "$") if pref then return pref .. ar.II, replace_tr_ending(tr, "in", "ī") end -- Change -an with alif maqṣūra to -ā with alif maqṣūra. pref = term:match("^(.*)" .. ar.AN .. ar.AMAQ .. "$") if pref then return pref .. ar.AAMAQ, replace_tr_ending(tr, "an", "ā") end -- Change -an with tall alif (e.g. عَصًا) to -ā with tall alif. pref = term:match("^(.*)" .. ar.AN .. ar.ALIF .. "$") if pref then return pref .. ar.AA, replace_tr_ending(tr, "an", "ā") end return term, tr end local function generate_construct_state_or_informal_default(data, args) local heads = data.heads local consobjs = {} local different_cons = false for _, headobj in ipairs(data.heads) do local consterm, constr = default_construct_state_or_informal(headobj.term, headobj.tr) different_cons = different_cons or consterm ~= headobj.term or constr ~= headobj.tr local consobj = m_table.shallowCopy(headobj) consobj.term = consterm consobj.tr = constr insert(consobjs, consobj) end if different_cons then return consobjs else return {} end end local noun_field_cons = { field = "cons", label = "<<construct state>>", generate_default = generate_construct_state_or_informal_default, default_when_not_explicit = function(args, data) return true end, } local noun_field_inf = {field = "inf", label = "informal"} local noun_field_obl = {field = "obl", label = "<<oblique>>"} local noun_field_def = {field = "def", label = "<<definite>> state"} local noun_inflections = { noun_field_cons, noun_field_inf, noun_field_obl, noun_field_def, } local adj_field_inf = { field = "inf", label = "informal", generate_default = generate_construct_state_or_informal_default, default_when_not_explicit = function(args, data) return true end, } local adj_field_obl = noun_field_obl local adj_field_def = noun_field_def local adjective_inflections = { adj_field_inf, adj_field_obl, adj_field_def, } local function has_construct_state(data) return data.pos_category ~= "adjectives" end local function parse_nominal_inflection(paramname, val, parse_err) return m_headword_utilities.parse_term_with_modifiers { val = val, paramname = paramname, splitchar = ",", include_mods = {"tr", "g"}, } end local function make_nominal_inflection_param_mod_spec(paramname) return {convert = function(val, parse_err) return parse_nominal_inflection(paramname, val, parse_err) end} end -- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple -- comma-separated values are allowed. local function parse_inflection(data, args, field, is_head) local argfield = field local argpref = field if type(argfield) == "table" then argpref = argfield[2] argfield = argfield[1] end local include_mods if is_head then include_mods = {"tr"} else include_mods = {"tr", "g"} for _, spec in ipairs(has_construct_state(data) and noun_inflections or adjective_inflections) do insert(include_mods, {spec.field, make_nominal_inflection_param_mod_spec(argpref .. "." .. spec.field)}) end end if is_head then local retval if args[argfield] then retval = m_headword_utilities.parse_term_with_modifiers { val = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = include_mods, } end return retval or {} else return m_headword_utilities.parse_term_list_with_modifiers { forms = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = include_mods, } end end local function insert_inflection(data, terms, label, accel, defgender, track_field, no_label, usually_no_label) local track_pos = m_en_utilities.singularize(data.pos_category) for _, termobj in ipairs(terms) do -- If the user supplied a construct state or informal form for the term with a value of "+", substitute the -- default value for the term. If the user supplied a value of "--", they want no value displayed. Otherwise, -- if the user didn't supply any value, we check to see if the default construct state or informal form is -- different from the lemma and display it if so; this applies particularly to terms in '-in' and '-an', where -- the default construct state or informal form is almost always correct. local field = has_construct_state(data) and "cons" or "inf" if not termobj[field] then local defcons, defconstr = default_construct_state_or_informal(termobj.term, termobj.tr) if termobj.term ~= defcons or termobj.tr ~= defconstr then -- We don't want to copy qualifiers, labels, etc. from the term object because we're a subinflection of -- the term object. termobj[field] = {{term = defcons, tr = defconstr}} end elseif termobj[field][1].term == "--" then if termobj[field][2] then error("Can't specify more than one value for <" .. field .. ":...> if first value is '--', meaning \"don't insert anything\"") end termobj[field] = nil else for i, consobj in ipairs(termobj[field]) do if consobj.term == "+" then if consobj.tr then error("Can't specify translit for default value '+'") end consobj.term, consobj.tr = default_construct_state_or_informal(termobj.term, termobj.tr) elseif consobj.term == "~" then if consobj.tr then error("Can't specify translit for term-requesting value '~'") end consobj.term, consobj.tr = termobj.term, termobj.tr end end end if defgender and not termobj.genders then termobj.genders = {{spec = defgender}} end local function insert_nested_inflection(field, label) if termobj[field] then m_headword_utilities.insert_inflection { headdata = data, inflobj = termobj, terms = termobj[field], label = label } end end for _, spec in ipairs(has_construct_state(data) and noun_inflections or adjective_inflections) do insert_nested_inflection(spec.field, spec.label) end track_form(track_field, termobj.term, termobj.tr, track_pos) end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, no_label = no_label, usually_no_label = usually_no_label, } end ----------------------------------------------------------------------------------------- -- Main entry point -- ----------------------------------------------------------------------------------------- function export.show(frame) local iparams = { [1] = true, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "แม่แบบ:" .. langcode .. "-head" and "คำอุทาน" or error("Part of speech must be specified in 1=") poscat = require(headword_module).canonicalize_pos(poscat) end -- หมวดหมู่เป็นภาษาไทย local poscat_th = require("Module:th-utilities").th_pos(poscat) local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat_th] and "head_with_gender" or "head") or poscat_th local params = { ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["id"] = true, ["json"] = boolean_param, ["pagename"] = {}, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end local head_is_head = pos_functions[indexing_poscat] and pos_functions[indexing_poscat].head_is_not_1 local headfield = head_is_head and "head" or pos_in_1 and 2 or 1 params[headfield] = head_is_head and true or {default = "+"} params.head2 = {replaced_by = false, instead = "use multiple comma-separated values in |" .. headfield .. "="} local tr_replaced_by = {replaced_by = false, instead = "use <tr:...> inline modifier on |" .. headfield .. "="} params.tr = tr_replaced_by params.tr2 = tr_replaced_by if pos_functions[indexing_poscat] then for key, val in pairs(pos_functions[indexing_poscat].params()) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local data = { lang = lang, pos_category = poscat_th, orig_pos_category = poscat_th, categories = {}, heads = {}, genders = {}, inflections = {enable_auto_translit = true}, pagename = pagename, id = args.id, sort_key = args.sort, force_cat_output = force_cat, -- We expect a head always so the redundant head cat will be inaccurate. no_redundant_head_cat = true, } data.heads = parse_inflection(data, args, headfield, "is_head") for _, headobj in ipairs(data.heads) do if headobj.term == "+" then headobj.term = pagename end end data.is_suffix = false if args.suffix or ( not args.nosuffix and pagename:find("^%-") and poscat ~= "ปัจจัย" and poscat ~= "รูปปัจจัย" ) then data.is_suffix = true data.pos_category = "ปัจจัย" local singular_poscat = --[[m_en_utilities.singularize(poscat)]] poscat_th insert(data.categories, "ปัจจัยสร้าง" .. singular_poscat .. langname) insert(data.inflections, {label = "ปัจจัยสร้าง" .. singular_poscat}) end if pos_functions[indexing_poscat] then pos_functions[indexing_poscat].func(data, args) end -- Do this after calling pos_functions[poscat].func() as it may modify data.heads (as verbs do). local irreg_translit = false for _, head in ipairs(data.heads) do if ar_translit.irregular_translit(head.term, head.tr) then irreg_translit = true break end end if irreg_translit then insert(data.categories, "ศัพท์" .. langname .. "ที่มีการออกเสียงไม่ปรกติ") end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end ----------------------------------------------------------------------------------------- -- Gender handling -- ----------------------------------------------------------------------------------------- local valid_bare_genders = {false, "m", "f", "mf", "mfbysense", "mfequiv"} local valid_bare_numbers = {false, "d", "p"} local valid_bare_animacies = {false, "pr", "np"} local valid_genders = {} for _, gender in ipairs(valid_bare_genders) do for _, number in ipairs(valid_bare_numbers) do for _, animacy in ipairs(valid_bare_animacies) do local parts = {} local function ins_part(part) if part then insert(parts, part) end end ins_part(gender) ins_part(number) ins_part(animacy) local full_gender = concat(parts, "-") valid_genders[full_gender == "" and "?" or full_gender] = true end end end local function is_masc_sg(g) return g == "m" or g == "m-pr" or g == "m-np" end local function is_fem_sg(g) return g == "f" or g == "f-pr" or g == "f-np" end local function is_masc_fem_sg(g) g = g:gsub("%-pr", ""):gsub("%-np", "") return g == "mf" or g == "mfequiv" or g == "mfbysense" end local function add_gender_params(params, default) params[2] = {type = "genders", default = default or "?", template_default = "m"} params["g2"] = {replaced_by = false, instead = "use comma-separated values in |g="} end -- Handle gender in params 2=, inserting into `data.genders`. Also, if a lemma, insert categories into `data.categories` -- if the gender is unexpected for the form of the noun. (Note: If there are multiple genders, -- [[Module:gender and number]] will automatically insert 'Arabic POS with multiple genders'.) local function handle_gender(data, args, nonlemma, field) if not args[field or 2] then return end for _, gspec in ipairs(args[field or 2]) do if not valid_genders[gspec.spec] then error("Unrecognized gender: " .. gspec.spec) end end data.genders = args[field or 2] if nonlemma then return end for _, gspec in ipairs(data.genders) do local g = gspec.spec if is_masc_sg(g) or is_fem_sg(g) or is_masc_fem_sg(g) then local head = data.heads[1] if head then head = rsub(ar.reorder_shadda(remove_links(head.term)), ar.UNUOPT .. "$", "") local ends_with_tam = rfind(head, "^[^ ]*" .. ar.TAM .. "$") or rfind(head, "^[^ ]*" .. ar.TAM .. " ") if (is_masc_sg(g) or is_masc_fem_sg(g)) and ends_with_tam then insert(data.categories, "ศัพท์เพศชาย" .. langname .. "ที่ลงท้ายด้วยเพศหญิง") elseif (is_fem_sg(g) or is_masc_fem_sg(g)) and not ends_with_tam and not rfind(head, "[" .. ar.ALIF .. ar.AMAQ .. "]$") and not rfind(head, ar.ALIF .. ar.HAMZA .. "$") then insert(data.categories, "ศัพท์เพศหญิง" .. langname .. "ที่ไม่ลงท้ายด้วยเพศหญิง") end end end end end ----------------------------------------------------------------------------------------- -- Inflection handlers -- ----------------------------------------------------------------------------------------- -- Add list parameters to `params` (a structure as passed to [[Module:parameters]]) for a parameter named `argpref`. -- If `argpref` is "*", add the nominal inflection parameters for construct state, definite state, etc. Related -- transliteration and gender parameters are no longer supported in favor of inline modifiers, and error messages are -- output if these parameters are used. local function add_infl_params(params, argpref) params[argpref] = {list = true, disallow_holes = true} params[argpref .. "tr"] = {replaced_by = false, instead = "use <tr:...> inline modifier on |" .. argpref .. "="} params[argpref .. "g"] = {replaced_by = false, instead = "use <g:...> inline modifier on |" .. argpref .. "="} end --[=[ Fetch a list of inflections from the arguments in `args` based on argument `field` (e.g. "pl"). Label with `label` (e.g. "plural"), which will appear in the headword. Insert into `data.inflections`, where `data` is the structure passed to [[Module:headword]]. If `generate_default` is specified, it should be a function of two arguments (`data`, `args`), which should generate the default value if no values are specified or if "+" is explicitly given. If `generate_default` isn't specified and the user gave no values, no inflection will be inserted. ]=] local function handle_infl(data, args, spec) local newinfls = parse_inflection(data, args, spec.field, false) if not newinfls[1] and spec.default_when_not_explicit and spec.default_when_not_explicit(data, args) then newinfls = {{term = "+"}} end if spec.handle then spec.handle(data, args, newinfls) end local default_specs = spec.allowed_defspecs if not default_specs then default_specs = spec.generate_default and {["+"] = true} or {} end local saw_defspec = false for _, newinfl in ipairs(newinfls) do if default_specs[newinfl.term] or newinfl.term == "~" then saw_defspec = true break end end if saw_defspec then local newnewinfls = {} for _, newinfl in ipairs(newinfls) do if default_specs[newinfl.term] then if newinfl.tr then error("Can't specify translit for default value '" .. newinfl.term .. "'") end local definfls = spec.generate_default(data, args, newinfl.term) for _, definfl in ipairs(definfls) do m_headword_utilities.combine_termobj_qualifiers_labels(definfl, newinfl) insert(newnewinfls, definfl) end elseif newinfl.term == "~" then if newinfl.tr then error("Can't specify translit for head-requesting value '~'") end for _, headobj in ipairs(data.heads) do headobj = m_table.shallowCopy(headobj) m_headword_utilities.combine_termobj_qualifiers_labels(headobj, newinfl) insert(newnewinfls, headobj) end else insert(newnewinfls, newinfl) end end newinfls = newnewinfls end if newinfls[1] then if newinfls[1].term == "--" then if newinfls[2] then error("Can't specify more than one term if first term is '--', meaning \"don't insert anything\"") end else insert_inflection(data, newinfls, spec.label, nil, spec.defgender, spec.field, spec.no_label, spec.usually_no_label) end end end local function add_infl_list_params(params, infl_list) for _, infl in ipairs(infl_list) do add_infl_params(params, infl.field) end end local function handle_infl_list_args(data, args, infl_list) for _, infl in ipairs(infl_list) do handle_infl(data, args, infl) end end ----------------------------------------------------------------------------------------- -- Default ending generators -- ----------------------------------------------------------------------------------------- local function make_conditional_default(specs) return function(data, args) local heads = data.heads if not heads[1] then heads = {{term = data.pagename}} end local newobjs = {} for _, headobj in ipairs(heads) do local term = ar.reorder_shadda(headobj.term) local tr = headobj.tr local matched = false for _, spec in ipairs(specs) do local from, fromtr, to, totr = unpack(spec) if from:find("^%^") then pref = rmatch(term, from .. "$") else pref = rmatch(term, "^(.*)" .. from .. "$") end if pref then term = pref .. to tr = replace_tr_ending(tr, fromtr, totr) matched = true headobj = m_table.shallowCopy(headobj) headobj.term = ar.undo_reorder_shadda(term) headobj.tr = tr insert(newobjs, headobj) break end end if not matched then error(("Internal error: No matching spec: head=%s"):format(dump(headobj))) end end return newobjs end end local default_feminine = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AAH, "āh"}, {ar.AN .. ar.ALIF, "an", ar.AAH, "āh"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAH, "iya"}, {ar.IN, "in", ar.IYAH, "iya"}, {"", "", ar.AH, "a"}, } local default_masculine = make_conditional_default { -- tall alif substitutes for alif maqṣūra after a yāʔ {ar.Y .. ar.AAH, "āh", ar.AN .. ar.ALIF, "an"}, {ar.AAH, "āh", ar.AN .. ar.AMAQ, "an"}, -- handle the common case of final-weak feminine active participle with preceding hamza; -- the hamza-on-yāʔ always converts back to hamza on the line when preceded by ā (alif) but -- may not otherwise, so we just leave it alone in that case {ar.ALIF .. ar.HAMZA_ON_YA .. ar.IYAH, "iya", ar.HAMZA .. ar.IN, "in"}, {ar.IYAH, "iya", ar.IN, "in"}, {ar.AH, "a", "", ""}, {"", "", "", ""}, } local default_masculine_plural = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AWN, "awn"}, {ar.AN .. ar.ALIF, "an", ar.AWN, "awn"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_WAW .. ar.UUN, "ūn"}, {ar.IN, "in", ar.UUN, "ūn"}, {"", "", ar.UUN, "ūn"}, } local default_feminine_plural = make_conditional_default { -- صَلَاة pl. صَلَوَات and أَدَاة pl. أَدَوَات and similar; but نَوَاة and وَفَاة with a و in them become نَوَيَات and وَفَيَات; -- and longer terms like مُبَارَاة and كُمَّثْرَاة invariably form their plural in -يَات. {"^([^و]" .. ar.A .. "[^و])" .. ar.AAH, "āh", ar.A .. ar.W .. ar.AAT, "awāt"}, {ar.AAH, "āh", ar.AYAAT, "ayāt"}, {ar.AN .. ar.AMAQ, "an", ar.AYAAT, "ayāt"}, {ar.AN .. ar.ALIF, "an", ar.AYAAT, "ayāt"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAAT, "iyāt"}, {ar.IN, "in", ar.IYAAT, "iyāt"}, {ar.AH, "a", ar.AAT, "āt"}, {"", "", ar.AAT, "āt"}, } local default_masculine_dual = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AYAAN, "ayān"}, {ar.AN .. ar.ALIF, "an", ar.AYAAN, "ayān"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAAN, "iyān"}, {ar.IN, "in", ar.IYAAN, "iyān"}, {"", "", ar.AAN, "ān"}, } local default_feminine_dual = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AATAAN, "ātān"}, {ar.AN .. ar.ALIF, "an", ar.AATAAN, "ātān"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IY .. ar.ATAAN, "iyatān"}, {ar.IN, "in", ar.IY .. ar.ATAAN, "iyatān"}, {"", "", ar.ATAAN, "atān"}, } -- Return whether `term` is a nisba noun or adjective, ending in -iyy or -iyyah. `nisba_val` is the value of -- args.nisba; if non-nil, it overrides any auto-determination based on the shape of the term. local function term_is_nisba(term, nisba_val) if nisba_val ~= nil then return nisba_val end term = ar.reorder_shadda(term) -- necessary to avoid issues with e.g. أُورُوبِّيّ. local pref = rmatch(term, "^(.*)" .. ar.IYY .. ar.UN .. "?$") if not pref then pref = rmatch(term, "^(.*)" .. ar.IYYAH .. ar.UN .. "?$") end -- Avoid false positives for words like قَوِيّ "strong" and صَبِيّ "boy". There may be other false positives -- but this should catch most of them and will avoid very many false negatives. return pref and not rfind(pref, "^[^ا]" .. ar.A .. ".$") end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function is_defaulting_adjective(data, args) return data.orig_pos_category == "คำคุณศัพท์defaulting" end local adj_field_elative = {field = "el", label = "<<elative>>"} local adj_inflections = { adj_field_inf, adj_field_obl, adj_field_def, {field = "f", label = "เพศหญิง", generate_default = default_feminine, default_when_not_explicit = is_defaulting_adjective}, {field = "d", label = "เพศชายทวิพจน์", generate_default = default_masculine_dual}, {field = "fd", label = "เพศหญิงทวิพจน์", generate_default = default_feminine_dual}, {field = "cpl", label = "เพศรวมพหูพจน์"}, {field = "pl", label = "เพศชายพหูพจน์", generate_default = default_masculine_plural, default_when_not_explicit = is_defaulting_adjective}, {field = "fpl", label = "เพศหญิงพหูพจน์", generate_default = default_feminine_plural, default_when_not_explicit = is_defaulting_adjective}, } local function get_adj_params() local params = {} add_infl_list_params(params, adj_inflections) add_infl_params(params, "el") params.nisba = boolean_param return params end local function handle_adj_args(data, args) handle_infl_list_args(data, args, adj_inflections) handle_infl(data, args, adj_field_elative) for _, headobj in ipairs(data.heads) do if term_is_nisba(headobj.term, args.nisba) then insert(data.categories, "คำคุณศัพท์สัมพันธ์ (นิสบะฮ์) " .. langname) break end end end pos_functions["คำคุณศัพท์"] = { params = get_adj_params, func = handle_adj_args, } pos_functions["คำคุณศัพท์defaulting"] = { params = get_adj_params, func = function(data, args) data.pos_category = "คำคุณศัพท์" handle_adj_args(data, args) end, } ----------------------------------------------------------------------------------------- -- Nouns, etc. -- ----------------------------------------------------------------------------------------- local function get_masc_or_feminine_gender(data, default_type) local saw_m, saw_f, saw_mf for _, gender in ipairs(data.genders) do if is_masc_sg(gender.spec) then saw_m = true elseif is_fem_sg(gender.spec) then saw_f = true elseif is_masc_fem_sg(gender.spec) then saw_mf = true end end if saw_mf or saw_m and saw_f then error("Can't generate default for " .. default_type .. " when gender is both masculine and feminine") elseif saw_m then return "m" elseif saw_f then return "f" else error("Can't generate default for " .. default_type .. " when gender is not specified as " .. "masculine or feminine singular") end end local function is_defaulting_noun(data, args) return data.orig_pos_category == "คำนามdefaulting" end local noun_field_dual = { field = "d", label = "ทวิพจน์", generate_default = function(data, args) local gender = get_masc_or_feminine_gender(data, "noun dual") if gender == "m" then return default_masculine_dual(data, args) else return default_feminine_dual(data, args) end end, } local noun_field_plural = { field = "pl", label = "พหูพจน์", generate_default = function(data, args, defspec) local gender = get_masc_or_feminine_gender(data, "noun plural") if gender == "m" then if defspec == "+f" then return default_feminine_plural(data, args) else return default_masculine_plural(data, args) end elseif defspec == "+f" then error("Can't specify '+f' with feminine gender; just use '+'") else return default_feminine_plural(data, args) end end, -- Handle the case where pl=-, indicating an uncountable noun. handle = function(data, args, terms) if terms[1] and terms[1] == "-" then insert(data.categories, "คำนามนับไม่ได้" .. langname) if args.pauc and args.pauc[1] then error("Can't specify paucals when pl=-") end end end, allowed_defspecs = {["+"] = true, ["+f"] = true}, default_when_not_explicit = is_defaulting_noun, no_label = "<<นับไม่ได้>>", usually_no_label = "โดยปกติ<<นับไม่ได้>>", } local noun_field_paucal = { field = "pauc", label = "<<paucal>>", generate_default = default_feminine_plural, } local noun_field_feminine = { field = "f", label = "เพศหญิง", generate_default = default_feminine, default_when_not_explicit = function(data, args) if data.orig_pos_category ~= "คำนามdefaulting" then return nil end local gender = get_masc_or_feminine_gender(data, "defaulting-if-masculine noun feminine") return gender == "m" end, } local noun_field_masculine = { field = "m", label = "เพศชาย", generate_default = default_masculine, default_when_not_explicit = function(data, args) if data.orig_pos_category ~= "คำนามdefaulting" then return nil end local gender = get_masc_or_feminine_gender(data, "defaulting-if-feminine noun masculine") return gender == "f" end, } local noun_basic_inflections = { noun_field_cons, noun_field_inf, noun_field_obl, noun_field_def, } local noun_shared_inflections = { noun_field_dual, noun_field_plural, } local noun_extra_inflections = { noun_field_paucal, noun_field_feminine, noun_field_masculine, } local function get_noun_params() local params = {} add_gender_params(params) add_infl_list_params(params, noun_basic_inflections) add_infl_list_params(params, noun_shared_inflections) add_infl_list_params(params, noun_extra_inflections) params.nisba = boolean_param return params end local function handle_noun_args(data, args) handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl_list_args(data, args, noun_extra_inflections) for _, headobj in ipairs(data.heads) do if term_is_nisba(headobj.term, args.nisba) then insert(data.categories, "คำนามสัมพันธ์ (นิสบะฮ์) " .. langname) break end end end pos_functions["คำนาม"] = { params = get_noun_params, func = handle_noun_args, } pos_functions["คำนามdefaulting"] = { params = get_noun_params, func = function(data, args) data.pos_category = "คำนาม" handle_noun_args(data, args) end, } local noun_field_singulative = {field = "sing", label = "<<คำเอกนาม>>", defgender = "f", generate_default = default_feminine} local noun_field_collective = {field = "coll", label = "<<คำสมุหนาม>>", defgender = "m", generate_default = default_masculine} local function handle_sing_coll_noun_infls(data, args, otherinfl, otherlabel, othergender) -- Handle sing= (corresponding singulative noun) or coll= (corresponding collective noun) and their gender handle_infl(data, args, otherinfl, otherlabel, nil, othergender) handle_infl_list_args(data, args, sing_coll_noun_inflections) end local function get_singulative_collective_noun_params(defgender, otherinfl) local params = {} add_gender_params(params, defgender) add_infl_list_params(params, noun_basic_inflections) add_infl_params(params, otherinfl) add_infl_list_params(params, noun_shared_inflections) add_infl_params(params, "pauc") return params end pos_functions["คำสมุหนาม"] = { params = function() return get_singulative_collective_noun_params("m", "sing") end, func = function(data, args) data.pos_category = "คำนาม" insert(data.categories, "คำสมุหนาม" .. langname) m_headword_utilities.insert_fixed_inflection { headdata = data, label = "<<คำสมุหนาม>>", } handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl(data, args, noun_field_singulative) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_paucal) end } pos_functions["คำเอกนาม"] = { params = function() return get_singulative_collective_noun_params("f", "coll") end, func = function(data, args) data.pos_category = "คำนาม" insert(data.categories, "คำเอกนาม" .. langname) m_headword_utilities.insert_fixed_inflection { headdata = data, label = "<<คำเอกนาม>>", } handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl(data, args, noun_field_collective) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_paucal) end } -- FIXME: Do numerals really behave almost as nouns? They vary by masc/fem. pos_functions["เลข"] = { params = get_noun_params, func = function(data, args) insert(data.categories, "เลขเชิงการนับ" .. langname) handle_noun_args(data, args) end } pos_functions["คำวิสามานยนาม"] = { params = get_noun_params, func = handle_noun_args, } local function get_pronoun_params() local params = {} add_gender_params(params, defgender) add_infl_list_params(params, noun_basic_inflections) add_infl_list_params(params, noun_shared_inflections) add_infl_params(params, "f") return params end pos_functions["คำสรรพนาม"] = { params = get_pronoun_params, func = function(data, args) handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_feminine) end } ----------------------------------------------------------------------------------------- -- Non-lemma forms -- ----------------------------------------------------------------------------------------- local valid_forms = list_to_set( { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "Iq", "IIq", "IIIq", "IVq" }) -- FIXME: Partly duplicated in [[Module:ar-inflections]]. local function handle_conj_form(data, args) local form = args[2] if form then if not valid_forms[form] then error("Invalid verb conjugation form " .. form) end insert(data.inflections, { label = "[[ภาคผนวก:คำกริยาภาษาอาหรับ#รูป " .. form .. "|รูป " .. form .. "]]" }) end end pos_functions["รูปกริยา"] = { params = function() return { [2] = {}, } end, func = function(data, args) handle_conj_form(data, args) end } local function get_participle_params() local params = get_adj_params() params[2] = {} return params end pos_functions["รูปกริยาขยายกรรตุวาจก"] = { params = get_participle_params, func = function(data, args) data.pos_category = "รูปกริยาขยาย" insert(data.categories, "รูปกริยาขยายกรรตุวาจก" .. langname) handle_conj_form(data, args) handle_infl_list_args(data, args, adj_inflections) end } pos_functions["รูปกริยาขยายกรรมวาจก"] = { params = get_participle_params, func = function(data, args) data.pos_category = "รูปกริยาขยาย" insert(data.categories, "รูปกริยาขยายกรรมวาจก" .. langname) handle_conj_form(data, args) handle_infl_list_args(data, args, adj_inflections) end } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["คำกริยา"] = { head_is_not_1 = true, params = function() return { [1] = {}, -- Comma-separated lists with possible inline modifiers ["past"] = {}, ["past1s"] = {}, ["nonpast"] = {}, ["vn"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, } end, func = function(data, args) local ar_verb = require(ar_verb_module) local alternant_multiword_spec = args[1] ~= "-" and ar_verb.do_generate_forms(args, "ar-verb", data.pagename) or nil local function do_slot(slots_to_check, override, label, slot_is_headword) -- Do this even with an override so we can return the correct filled slot. local slot, slotval if alternant_multiword_spec then for _, potential_slot in ipairs(slots_to_check) do slotval = alternant_multiword_spec.forms[potential_slot] if slotval then slot = potential_slot break end end end local function get_slot_values() local terms = {} for _, form in ipairs(slotval) do local term = { term = form.form, id = form.id, genders = form.genders, pos = form.pos, lit = form.lit, } term.tr = form.translit if form.footnotes then local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(form.footnotes) term.q = quals term.refs = refs end insert(terms, term) end return terms end if override then local override_param_mods = { alt = {}, t = { -- [[Module:headword]] expects the gloss in "gloss". item_dest = "gloss", }, gloss = {}, g = { -- [[Module:headword]] expects the genders in "genders". item_dest = "genders", type = "genders", }, pos = {}, lit = {}, id = {}, -- Qualifiers and labels q = { type = "qualifier", }, qq = { type = "qualifier", }, l = { type = "labels", }, ll = { type = "labels", }, ref = { -- [[Module:headword]] expects the references in "refs". item_dest = "refs", type = "references", }, } local function generate_obj(formval, parse_err) if formval == "+" then return {term = "+", underlying_terms = get_slot_values()} end local val, uncertain = formval:match("^(.*)(%?)$") val = val or formval uncertain = not not uncertain local ar, translit = val:match("^(.*)//(.*)$") if not ar then ar = formval end local retval = {term = ar, uncertain = uncertain} retval.tr = translit end local terms if override:find("<") then terms = require(parse_utilities_module).parse_inline_modifiers(override, { paramname = paramname, param_mods = override_param_mods, generate_obj = generate_obj, splitchar = "[,،]", escape_fun = escape_comma_whitespace, unescape_fun = unescape_comma_whitespace, }) else terms = split_on_comma(override) for i, split in ipairs(terms) do terms[i] = generate_obj(split) end end -- See if + was supplied and we have to potentially flatten multiple default terms and harmonize -- default properties with override properties. local saw_underlying_terms = false for _, term in ipairs(terms) do if term.underlying_terms then saw_underlying_terms = true break end end if saw_underlying_terms then -- Flatten any default terms, copying the corresponding override properties over the default -- properties. Non-default terms get inserted directly. local flattened = {} for _, term in ipairs(terms) do if term.underlying_terms then for _, underlying in ipairs(term.underlying_terms) do for k, v in pairs(term) do if k ~= "term" and k ~= "underlying_terms" then if k == "uncertain" then underlying.uncertain = underlying.uncertain or v elseif type(v) ~= "table" or v[1] then -- Don't copy empty lists (which are the default) over possibly non-empty -- lists. underlying[k] = v end end end insert(flattened, underlying) end else insert(flattened, term) end end terms = flattened end if not slot_is_headword then terms.label = label end return terms, slot elseif not alternant_multiword_spec then return nil, slot else if not slotval then if slot_is_headword then -- FIXME, put "uncertain" as qualifier? Does this ever happen? return nil, slot elseif alternant_multiword_spec.slot_uncertain[slot] then return {label = label .. " uncertain"}, slot elseif alternant_multiword_spec.slot_explicitly_missing[slot] then return {label = "no " .. label}, slot else -- just say nothing about this slot return nil, slot end end local terms = get_slot_values() if not slot_is_headword then terms.label = label end return terms, slot end end local gloss_parts = {} for _, vform in ipairs(alternant_multiword_spec.verb_forms) do insert(gloss_parts, "[[Appendix:Arabic verbs#Form " .. vform .. "|" .. vform .. "]]") end if gloss_parts[1] then data.gloss = concat(gloss_parts, ", ") end if data.heads[1] and args.past then error("Can't specify both head= and past= to {{ar-verb}}; prefer past=") end if not alternant_multiword_spec.has_active then insert(data.inflections, {label = "passive-only"}) end -- Do this always so `past_slot` is correctly filled. local past, past_slot = do_slot(ar_verb.potential_lemma_slots, args.past, "-", "slot is headword") if data.heads[1] then -- user specified head=; don't override with past= or slot 'past_3sm' etc. else if past then data.heads = past end end local should_do_past1s = not not args.past1s if not should_do_past1s then local is_form_I = false for _, vform in ipairs(alternant_multiword_spec.verb_forms) do if vform == "I" then is_form_I = true break end end if is_form_I then require(inflection_utilities_module).map_word_specs(alternant_multiword_spec, function(base) if base.verb_form == "I" then for _, vowel_spec in ipairs(base.conj_vowels) do -- For form-I geminate verbs, the final vowel of the past is elided in the citation form. -- We want to display it for all cases other than active a~u and a~i (the most common -- cases). if vowel_spec.weakness == "geminate" then if ar_verb.is_passive_only(base.passive) then should_do_past1s = true break end local past_vowel = ar_verb.rget(vowel_spec.past) local nonpast_vowel = ar_verb.rget(vowel_spec.nonpast) if not (past_vowel == ar.A and (nonpast_vowel == ar.U or nonpast_vowel == ar.I)) then should_do_past1s = true break end end end -- FIXME, provide way of breaking early from map_word_specs(). end end) end end local past1s if should_do_past1s then past1s, _ = do_slot({"past_1s", "past_pass_1s"}, args.past1s, "บุรุษที่หนึ่งเอกพจน์อดีตกาล") if past1s then insert(data.inflections, past1s) end end local nonpast_slots if not past_slot or past_slot:find("^past_") then nonpast_slots = {"ind_3ms", "ind_pass_3ms", "imp_2ms"} else nonpast_slots = {} end local nonpast, _ = do_slot(nonpast_slots, args.nonpast, "ไม่ใช่อดีตกาล") if nonpast then insert(data.inflections, nonpast) end local vn, _ = do_slot({"vn"}, args.vn, "คำกริยานาม") if vn then insert(data.inflections, vn) end -- FIXME: Should we insert categories? Conjugation also does it and is more likely to be accurate. --for _, cat in ipairs(alternant_multiword_spec.categories) do -- insert(data.categories, cat) --end --[=[ -- FIXME: Review this to see if we need to port it. -- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to -- incorporate any links in that head into the 1= specification, use the infinitive generated by -- [[Module:pt-verb]] in place of the user-specified or auto-generated head. This was copied from -- [[Module:it-headword]], where doing this gets accents marked on the verb(s). We don't have accents marked on -- the verb but by doing this we do get any footnotes on the infinitive propagated here. Don't do this if the -- user gave multiple heads or gave a head with a multiword-linked verbal expression such as Italian -- '[[dare esca]] [[al]] [[fuoco]]' (FIXME: give Portuguese equivalent). if not data.user_specified_heads[1] or ( not data.user_specified_heads[2] and alternant_multiword_spec.incorporated_headword_head_into_lemma ) then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.infinitive_linked) do local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes) insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end ]=] end } ----------------------------------------------------------------------------------------- -- Generic parts of speech -- ----------------------------------------------------------------------------------------- pos_functions.head_with_gender = { params = function() return { [3] = {type = "genders"}, } end, func = function(data, args) handle_gender(data, args, "nonlemma", 3) end, } return export 3uo2x8u0wq876id0qzflro6ici3skhc 5723270 5723269 2026-05-20T04:45:53Z OctraBot 3198 5723270 Scribunto text/plain -- Author: primarily Benwing2; some work by Fenakhay, Erutuon; early version by Rua local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local ar_translit = require("Module:ar-translit") local ar_verb_module = "Module:ar-verb" local ar_utilities_module = "Module:ar-utilities" local ar = require(ar_utilities_module) local en_utilities_module = "Module:en-utilities" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local links_module = "Module:links" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local require_when_needed = require("Module:utilities/require when needed") local remove_links = require_when_needed(links_module, "remove_links") local m_table = require("Module:table") local m_str_utils = require("Module:string utilities") local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_to_set = m_table.listToSet local rfind = m_str_utils.find local rmatch = m_str_utils.match local rsubn = m_str_utils.gsub local u = m_str_utils.char local rsplit = m_str_utils.split local insert = table.insert local concat = table.concat local unpack = unpack or table.unpack -- Lua 5.2 compatibility local langcode = "ar" local lang = require("Module:languages").getByCode(langcode) local langname = lang:getCategoryName() --th local TEMPCOMMA = u(0xFFF0) local TEMPARCOMMA = u(0xFFF1) local misc_pos_with_gender = list_to_set { "ปัจจับ", "รูปคุณศัพท์", "รูปนาม", "รูปวิสามานยนาม", "รูปสรรพนาม", "รูปตัวกำหนด", } ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local dump = mw.dumpObject -- version of mw.ustring.gsub() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local function ine(val) if val == "" then return nil else return val end end -- Replace comma with a temporary char in comma + whitespace. local function escape_comma_whitespace(run) local escaped = false if run:find("\\,") then run = run:gsub("\\,", "\\" .. TEMPCOMMA) escaped = true end if run:find("\\،") then run = run:gsub("\\،", "\\" .. TEMPARCOMMA) escaped = true end if run:find(",%s") then run = run:gsub(",(%s)", TEMPCOMMA .. "%1") escaped = true end if run:find("،%s") then run = run:gsub("،(%s)", TEMPARCOMMA .. "%1") escaped = true end return run, escaped end -- Undo replacement of comma with a temporary char in comma + whitespace. local function unescape_comma_whitespace(run) return (run:gsub(TEMPCOMMA, ","):gsub(TEMPARCOMMA, "،")) end -- Split an argument on comma or Arabic comma, but not either type of comma followed by whitespace. local function split_on_comma(val) if rfind(val, "[,،]%s") or val:find("\\") then return export.split_escaping(val, "[,،]", false, escape_comma_whitespace, unescape_comma_whitespace) else return rsplit(val, "[,،]") end end local function replace_tr_ending(tr, from, to) if not tr then return nil end local pref = tr:match("^(.*)" .. from .. "$") if not pref then error(("Translit '%s' does not end in -%s, as expected"):format(tr, from)) end return pref .. to end ----------------------------------------------------------------------------------------- -- Tracking functions -- ----------------------------------------------------------------------------------------- local trackfn = require("Module:debug/track") local function track(page) trackfn(langcode .. "-headword/" .. page) return true end --[==[ Examples of what you can find by looking at what links to the given pages: [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized]] all unvocalized pages [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/pl]] all unvocalized pages where the plural is unvocalized, whether specified using pl=, pl2=, etc. [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head]] all unvocalized pages where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/nouns]] all nouns excluding proper nouns, collective nouns, singulative nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/proper]] nouns all proper nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/not]] proper nouns all words that are not proper nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/adjectives]] all adjectives where any parameter is unvocalized; currently only works for heads, so equivalent to .../unvocalized/head/adjectives [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-empty-head]] all pages with an empty head [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-manual-translit]] all unvocalized pages with manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-manual-translit/head/nouns]] all nouns where the head is unvocalized but has manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-no-translit]] all unvocalized pages without manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab]] all pages with any parameter containing i3rab of either -un, -u, -a or -i [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-un]] all pages with any parameter containing an -un i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-un/pl]] all pages where a form specified using pl=, pl2=, etc. contains an -un i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-u/head]] all pages with a head containing an -u i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab/head/proper]] nouns (all proper nouns with a head containing i3rab of either -un, -u, -a or -i) In general, the format is one of the following: Wiktionary:Tracking/ar-headword/FIRSTLEVEL Wiktionary:Tracking/ar-headword/FIRSTLEVEL/ARGNAME Wiktionary:Tracking/ar-headword/FIRSTLEVEL/POS Wiktionary:Tracking/ar-headword/FIRSTLEVEL/ARGNAME/POS FIRSTLEVEL can be one of "unvocalized", "unvocalized-empty-head" or its opposite "unvocalized-specified", "unvocalized-manual-translit" or its opposite "unvocalized-no-translit", "i3rab", "i3rab-un", "i3rab-u", "i3rab-a", or "i3rab-i". ARGNAME is either "head" or an argument such as "pl", "f", "cons", etc. This automatically includes arguments specified as head2=, pl3=, etc. POS is a part of speech, lowercase and singular, e.g. "noun", "adjective", "proper noun", "collective noun", etc. or "not proper noun", which includes all parts of speech but proper nouns. ]==] local function track_form(argname, form, translit, pos) form = ar.reorder_shadda(remove_links(form)) function dotrack(page) track(page) track(page .. "/" .. argname) if pos then track(page .. "/" .. pos) track(page .. "/" .. argname .. "/" .. pos) if pos ~= "คำวิสามานยนาม" then track(page .. "/not proper noun") track(page .. "/" .. argname .. "/not proper noun") end end end function track_i3rab(arabic, tr) if rfind(form, arabic .. "$") then dotrack("i3rab") dotrack("i3rab-" .. tr) end end track_i3rab(ar.UN, "un") track_i3rab(ar.U, "u") track_i3rab(ar.A, "a") track_i3rab(ar.I, "i") if form == "" or not (lang:transliterate(form)) then dotrack("unvocalized") if form == "" then dotrack("unvocalized-empty-head") else dotrack("unvocalized-specified") end if translit then dotrack("unvocalized-manual-translit") else dotrack("unvocalized-no-translit") end end end ----------------------------------------------------------------------------------------- -- Inflection-parsing functions -- ----------------------------------------------------------------------------------------- -- Construct the default construct state or informal form of a term in lemma format. Usually this is the same as the -- lemma but is different for final-weak nouns and adjectives ending in -n in their lemma. NOTE: Input must be -- shadda-reordered for this to work properly. local function default_construct_state_or_informal(term, tr) local pref = term:match("^(.*)" .. ar.HAMZA .. ar.IN .."$") -- Hamza on the line with -in changes to hamza-on-yā with -ī. if pref then return pref .. ar.HAMZA_ON_YA .. ar.II, replace_tr_ending(tr, "in", "ī") end -- Otherwise just change -in to -ī. pref = term:match("^(.*)" .. ar.IN .. "$") if pref then return pref .. ar.II, replace_tr_ending(tr, "in", "ī") end -- Change -an with alif maqṣūra to -ā with alif maqṣūra. pref = term:match("^(.*)" .. ar.AN .. ar.AMAQ .. "$") if pref then return pref .. ar.AAMAQ, replace_tr_ending(tr, "an", "ā") end -- Change -an with tall alif (e.g. عَصًا) to -ā with tall alif. pref = term:match("^(.*)" .. ar.AN .. ar.ALIF .. "$") if pref then return pref .. ar.AA, replace_tr_ending(tr, "an", "ā") end return term, tr end local function generate_construct_state_or_informal_default(data, args) local heads = data.heads local consobjs = {} local different_cons = false for _, headobj in ipairs(data.heads) do local consterm, constr = default_construct_state_or_informal(headobj.term, headobj.tr) different_cons = different_cons or consterm ~= headobj.term or constr ~= headobj.tr local consobj = m_table.shallowCopy(headobj) consobj.term = consterm consobj.tr = constr insert(consobjs, consobj) end if different_cons then return consobjs else return {} end end local noun_field_cons = { field = "cons", label = "<<construct state>>", generate_default = generate_construct_state_or_informal_default, default_when_not_explicit = function(args, data) return true end, } local noun_field_inf = {field = "inf", label = "informal"} local noun_field_obl = {field = "obl", label = "<<oblique>>"} local noun_field_def = {field = "def", label = "<<definite>> state"} local noun_inflections = { noun_field_cons, noun_field_inf, noun_field_obl, noun_field_def, } local adj_field_inf = { field = "inf", label = "informal", generate_default = generate_construct_state_or_informal_default, default_when_not_explicit = function(args, data) return true end, } local adj_field_obl = noun_field_obl local adj_field_def = noun_field_def local adjective_inflections = { adj_field_inf, adj_field_obl, adj_field_def, } local function has_construct_state(data) return data.pos_category ~= "adjectives" end local function parse_nominal_inflection(paramname, val, parse_err) return m_headword_utilities.parse_term_with_modifiers { val = val, paramname = paramname, splitchar = ",", include_mods = {"tr", "g"}, } end local function make_nominal_inflection_param_mod_spec(paramname) return {convert = function(val, parse_err) return parse_nominal_inflection(paramname, val, parse_err) end} end -- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple -- comma-separated values are allowed. local function parse_inflection(data, args, field, is_head) local argfield = field local argpref = field if type(argfield) == "table" then argpref = argfield[2] argfield = argfield[1] end local include_mods if is_head then include_mods = {"tr"} else include_mods = {"tr", "g"} for _, spec in ipairs(has_construct_state(data) and noun_inflections or adjective_inflections) do insert(include_mods, {spec.field, make_nominal_inflection_param_mod_spec(argpref .. "." .. spec.field)}) end end if is_head then local retval if args[argfield] then retval = m_headword_utilities.parse_term_with_modifiers { val = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = include_mods, } end return retval or {} else return m_headword_utilities.parse_term_list_with_modifiers { forms = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = include_mods, } end end local function insert_inflection(data, terms, label, accel, defgender, track_field, no_label, usually_no_label) local track_pos = m_en_utilities.singularize(data.pos_category) for _, termobj in ipairs(terms) do -- If the user supplied a construct state or informal form for the term with a value of "+", substitute the -- default value for the term. If the user supplied a value of "--", they want no value displayed. Otherwise, -- if the user didn't supply any value, we check to see if the default construct state or informal form is -- different from the lemma and display it if so; this applies particularly to terms in '-in' and '-an', where -- the default construct state or informal form is almost always correct. local field = has_construct_state(data) and "cons" or "inf" if not termobj[field] then local defcons, defconstr = default_construct_state_or_informal(termobj.term, termobj.tr) if termobj.term ~= defcons or termobj.tr ~= defconstr then -- We don't want to copy qualifiers, labels, etc. from the term object because we're a subinflection of -- the term object. termobj[field] = {{term = defcons, tr = defconstr}} end elseif termobj[field][1].term == "--" then if termobj[field][2] then error("Can't specify more than one value for <" .. field .. ":...> if first value is '--', meaning \"don't insert anything\"") end termobj[field] = nil else for i, consobj in ipairs(termobj[field]) do if consobj.term == "+" then if consobj.tr then error("Can't specify translit for default value '+'") end consobj.term, consobj.tr = default_construct_state_or_informal(termobj.term, termobj.tr) elseif consobj.term == "~" then if consobj.tr then error("Can't specify translit for term-requesting value '~'") end consobj.term, consobj.tr = termobj.term, termobj.tr end end end if defgender and not termobj.genders then termobj.genders = {{spec = defgender}} end local function insert_nested_inflection(field, label) if termobj[field] then m_headword_utilities.insert_inflection { headdata = data, inflobj = termobj, terms = termobj[field], label = label } end end for _, spec in ipairs(has_construct_state(data) and noun_inflections or adjective_inflections) do insert_nested_inflection(spec.field, spec.label) end track_form(track_field, termobj.term, termobj.tr, track_pos) end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, no_label = no_label, usually_no_label = usually_no_label, } end ----------------------------------------------------------------------------------------- -- Main entry point -- ----------------------------------------------------------------------------------------- function export.show(frame) local iparams = { [1] = true, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "แม่แบบ:" .. langcode .. "-head" and "คำอุทาน" or error("Part of speech must be specified in 1=") poscat = require(headword_module).canonicalize_pos(poscat) end -- หมวดหมู่เป็นภาษาไทย local poscat_th = require("Module:th-utilities").th_pos(poscat) local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat_th] and "head_with_gender" or "head") or poscat_th local params = { ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["id"] = true, ["json"] = boolean_param, ["pagename"] = {}, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end local head_is_head = pos_functions[indexing_poscat] and pos_functions[indexing_poscat].head_is_not_1 local headfield = head_is_head and "head" or pos_in_1 and 2 or 1 params[headfield] = head_is_head and true or {default = "+"} params.head2 = {replaced_by = false, instead = "use multiple comma-separated values in |" .. headfield .. "="} local tr_replaced_by = {replaced_by = false, instead = "use <tr:...> inline modifier on |" .. headfield .. "="} params.tr = tr_replaced_by params.tr2 = tr_replaced_by if pos_functions[indexing_poscat] then for key, val in pairs(pos_functions[indexing_poscat].params()) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local data = { lang = lang, pos_category = poscat_th, orig_pos_category = poscat_th, categories = {}, heads = {}, genders = {}, inflections = {enable_auto_translit = true}, pagename = pagename, id = args.id, sort_key = args.sort, force_cat_output = force_cat, -- We expect a head always so the redundant head cat will be inaccurate. no_redundant_head_cat = true, } data.heads = parse_inflection(data, args, headfield, "is_head") for _, headobj in ipairs(data.heads) do if headobj.term == "+" then headobj.term = pagename end end data.is_suffix = false if args.suffix or ( not args.nosuffix and pagename:find("^%-") and poscat ~= "ปัจจัย" and poscat ~= "รูปปัจจัย" ) then data.is_suffix = true data.pos_category = "ปัจจัย" local singular_poscat = --[[m_en_utilities.singularize(poscat)]] poscat_th insert(data.categories, "ปัจจัยสร้าง" .. singular_poscat .. langname) insert(data.inflections, {label = "ปัจจัยสร้าง" .. singular_poscat}) end if pos_functions[indexing_poscat] then pos_functions[indexing_poscat].func(data, args) end -- Do this after calling pos_functions[poscat].func() as it may modify data.heads (as verbs do). local irreg_translit = false for _, head in ipairs(data.heads) do if ar_translit.irregular_translit(head.term, head.tr) then irreg_translit = true break end end if irreg_translit then insert(data.categories, "ศัพท์" .. langname .. "ที่มีการออกเสียงไม่ปรกติ") end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end ----------------------------------------------------------------------------------------- -- Gender handling -- ----------------------------------------------------------------------------------------- local valid_bare_genders = {false, "m", "f", "mf", "mfbysense", "mfequiv"} local valid_bare_numbers = {false, "d", "p"} local valid_bare_animacies = {false, "pr", "np"} local valid_genders = {} for _, gender in ipairs(valid_bare_genders) do for _, number in ipairs(valid_bare_numbers) do for _, animacy in ipairs(valid_bare_animacies) do local parts = {} local function ins_part(part) if part then insert(parts, part) end end ins_part(gender) ins_part(number) ins_part(animacy) local full_gender = concat(parts, "-") valid_genders[full_gender == "" and "?" or full_gender] = true end end end local function is_masc_sg(g) return g == "m" or g == "m-pr" or g == "m-np" end local function is_fem_sg(g) return g == "f" or g == "f-pr" or g == "f-np" end local function is_masc_fem_sg(g) g = g:gsub("%-pr", ""):gsub("%-np", "") return g == "mf" or g == "mfequiv" or g == "mfbysense" end local function add_gender_params(params, default) params[2] = {type = "genders", default = default or "?", template_default = "m"} params["g2"] = {replaced_by = false, instead = "use comma-separated values in |g="} end -- Handle gender in params 2=, inserting into `data.genders`. Also, if a lemma, insert categories into `data.categories` -- if the gender is unexpected for the form of the noun. (Note: If there are multiple genders, -- [[Module:gender and number]] will automatically insert 'Arabic POS with multiple genders'.) local function handle_gender(data, args, nonlemma, field) if not args[field or 2] then return end for _, gspec in ipairs(args[field or 2]) do if not valid_genders[gspec.spec] then error("Unrecognized gender: " .. gspec.spec) end end data.genders = args[field or 2] if nonlemma then return end for _, gspec in ipairs(data.genders) do local g = gspec.spec if is_masc_sg(g) or is_fem_sg(g) or is_masc_fem_sg(g) then local head = data.heads[1] if head then head = rsub(ar.reorder_shadda(remove_links(head.term)), ar.UNUOPT .. "$", "") local ends_with_tam = rfind(head, "^[^ ]*" .. ar.TAM .. "$") or rfind(head, "^[^ ]*" .. ar.TAM .. " ") if (is_masc_sg(g) or is_masc_fem_sg(g)) and ends_with_tam then insert(data.categories, "ศัพท์เพศชาย" .. langname .. "ที่ลงท้ายด้วยเพศหญิง") elseif (is_fem_sg(g) or is_masc_fem_sg(g)) and not ends_with_tam and not rfind(head, "[" .. ar.ALIF .. ar.AMAQ .. "]$") and not rfind(head, ar.ALIF .. ar.HAMZA .. "$") then insert(data.categories, "ศัพท์เพศหญิง" .. langname .. "ที่ไม่ลงท้ายด้วยเพศหญิง") end end end end end ----------------------------------------------------------------------------------------- -- Inflection handlers -- ----------------------------------------------------------------------------------------- -- Add list parameters to `params` (a structure as passed to [[Module:parameters]]) for a parameter named `argpref`. -- If `argpref` is "*", add the nominal inflection parameters for construct state, definite state, etc. Related -- transliteration and gender parameters are no longer supported in favor of inline modifiers, and error messages are -- output if these parameters are used. local function add_infl_params(params, argpref) params[argpref] = {list = true, disallow_holes = true} params[argpref .. "tr"] = {replaced_by = false, instead = "use <tr:...> inline modifier on |" .. argpref .. "="} params[argpref .. "g"] = {replaced_by = false, instead = "use <g:...> inline modifier on |" .. argpref .. "="} end --[=[ Fetch a list of inflections from the arguments in `args` based on argument `field` (e.g. "pl"). Label with `label` (e.g. "plural"), which will appear in the headword. Insert into `data.inflections`, where `data` is the structure passed to [[Module:headword]]. If `generate_default` is specified, it should be a function of two arguments (`data`, `args`), which should generate the default value if no values are specified or if "+" is explicitly given. If `generate_default` isn't specified and the user gave no values, no inflection will be inserted. ]=] local function handle_infl(data, args, spec) local newinfls = parse_inflection(data, args, spec.field, false) if not newinfls[1] and spec.default_when_not_explicit and spec.default_when_not_explicit(data, args) then newinfls = {{term = "+"}} end if spec.handle then spec.handle(data, args, newinfls) end local default_specs = spec.allowed_defspecs if not default_specs then default_specs = spec.generate_default and {["+"] = true} or {} end local saw_defspec = false for _, newinfl in ipairs(newinfls) do if default_specs[newinfl.term] or newinfl.term == "~" then saw_defspec = true break end end if saw_defspec then local newnewinfls = {} for _, newinfl in ipairs(newinfls) do if default_specs[newinfl.term] then if newinfl.tr then error("Can't specify translit for default value '" .. newinfl.term .. "'") end local definfls = spec.generate_default(data, args, newinfl.term) for _, definfl in ipairs(definfls) do m_headword_utilities.combine_termobj_qualifiers_labels(definfl, newinfl) insert(newnewinfls, definfl) end elseif newinfl.term == "~" then if newinfl.tr then error("Can't specify translit for head-requesting value '~'") end for _, headobj in ipairs(data.heads) do headobj = m_table.shallowCopy(headobj) m_headword_utilities.combine_termobj_qualifiers_labels(headobj, newinfl) insert(newnewinfls, headobj) end else insert(newnewinfls, newinfl) end end newinfls = newnewinfls end if newinfls[1] then if newinfls[1].term == "--" then if newinfls[2] then error("Can't specify more than one term if first term is '--', meaning \"don't insert anything\"") end else insert_inflection(data, newinfls, spec.label, nil, spec.defgender, spec.field, spec.no_label, spec.usually_no_label) end end end local function add_infl_list_params(params, infl_list) for _, infl in ipairs(infl_list) do add_infl_params(params, infl.field) end end local function handle_infl_list_args(data, args, infl_list) for _, infl in ipairs(infl_list) do handle_infl(data, args, infl) end end ----------------------------------------------------------------------------------------- -- Default ending generators -- ----------------------------------------------------------------------------------------- local function make_conditional_default(specs) return function(data, args) local heads = data.heads if not heads[1] then heads = {{term = data.pagename}} end local newobjs = {} for _, headobj in ipairs(heads) do local term = ar.reorder_shadda(headobj.term) local tr = headobj.tr local matched = false for _, spec in ipairs(specs) do local from, fromtr, to, totr = unpack(spec) if from:find("^%^") then pref = rmatch(term, from .. "$") else pref = rmatch(term, "^(.*)" .. from .. "$") end if pref then term = pref .. to tr = replace_tr_ending(tr, fromtr, totr) matched = true headobj = m_table.shallowCopy(headobj) headobj.term = ar.undo_reorder_shadda(term) headobj.tr = tr insert(newobjs, headobj) break end end if not matched then error(("Internal error: No matching spec: head=%s"):format(dump(headobj))) end end return newobjs end end local default_feminine = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AAH, "āh"}, {ar.AN .. ar.ALIF, "an", ar.AAH, "āh"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAH, "iya"}, {ar.IN, "in", ar.IYAH, "iya"}, {"", "", ar.AH, "a"}, } local default_masculine = make_conditional_default { -- tall alif substitutes for alif maqṣūra after a yāʔ {ar.Y .. ar.AAH, "āh", ar.AN .. ar.ALIF, "an"}, {ar.AAH, "āh", ar.AN .. ar.AMAQ, "an"}, -- handle the common case of final-weak feminine active participle with preceding hamza; -- the hamza-on-yāʔ always converts back to hamza on the line when preceded by ā (alif) but -- may not otherwise, so we just leave it alone in that case {ar.ALIF .. ar.HAMZA_ON_YA .. ar.IYAH, "iya", ar.HAMZA .. ar.IN, "in"}, {ar.IYAH, "iya", ar.IN, "in"}, {ar.AH, "a", "", ""}, {"", "", "", ""}, } local default_masculine_plural = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AWN, "awn"}, {ar.AN .. ar.ALIF, "an", ar.AWN, "awn"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_WAW .. ar.UUN, "ūn"}, {ar.IN, "in", ar.UUN, "ūn"}, {"", "", ar.UUN, "ūn"}, } local default_feminine_plural = make_conditional_default { -- صَلَاة pl. صَلَوَات and أَدَاة pl. أَدَوَات and similar; but نَوَاة and وَفَاة with a و in them become نَوَيَات and وَفَيَات; -- and longer terms like مُبَارَاة and كُمَّثْرَاة invariably form their plural in -يَات. {"^([^و]" .. ar.A .. "[^و])" .. ar.AAH, "āh", ar.A .. ar.W .. ar.AAT, "awāt"}, {ar.AAH, "āh", ar.AYAAT, "ayāt"}, {ar.AN .. ar.AMAQ, "an", ar.AYAAT, "ayāt"}, {ar.AN .. ar.ALIF, "an", ar.AYAAT, "ayāt"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAAT, "iyāt"}, {ar.IN, "in", ar.IYAAT, "iyāt"}, {ar.AH, "a", ar.AAT, "āt"}, {"", "", ar.AAT, "āt"}, } local default_masculine_dual = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AYAAN, "ayān"}, {ar.AN .. ar.ALIF, "an", ar.AYAAN, "ayān"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAAN, "iyān"}, {ar.IN, "in", ar.IYAAN, "iyān"}, {"", "", ar.AAN, "ān"}, } local default_feminine_dual = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AATAAN, "ātān"}, {ar.AN .. ar.ALIF, "an", ar.AATAAN, "ātān"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IY .. ar.ATAAN, "iyatān"}, {ar.IN, "in", ar.IY .. ar.ATAAN, "iyatān"}, {"", "", ar.ATAAN, "atān"}, } -- Return whether `term` is a nisba noun or adjective, ending in -iyy or -iyyah. `nisba_val` is the value of -- args.nisba; if non-nil, it overrides any auto-determination based on the shape of the term. local function term_is_nisba(term, nisba_val) if nisba_val ~= nil then return nisba_val end term = ar.reorder_shadda(term) -- necessary to avoid issues with e.g. أُورُوبِّيّ. local pref = rmatch(term, "^(.*)" .. ar.IYY .. ar.UN .. "?$") if not pref then pref = rmatch(term, "^(.*)" .. ar.IYYAH .. ar.UN .. "?$") end -- Avoid false positives for words like قَوِيّ "strong" and صَبِيّ "boy". There may be other false positives -- but this should catch most of them and will avoid very many false negatives. return pref and not rfind(pref, "^[^ا]" .. ar.A .. ".$") end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function is_defaulting_adjective(data, args) return data.orig_pos_category == "คำคุณศัพท์defaulting" end local adj_field_elative = {field = "el", label = "<<elative>>"} local adj_inflections = { adj_field_inf, adj_field_obl, adj_field_def, {field = "f", label = "เพศหญิง", generate_default = default_feminine, default_when_not_explicit = is_defaulting_adjective}, {field = "d", label = "เพศชายทวิพจน์", generate_default = default_masculine_dual}, {field = "fd", label = "เพศหญิงทวิพจน์", generate_default = default_feminine_dual}, {field = "cpl", label = "เพศรวมพหูพจน์"}, {field = "pl", label = "เพศชายพหูพจน์", generate_default = default_masculine_plural, default_when_not_explicit = is_defaulting_adjective}, {field = "fpl", label = "เพศหญิงพหูพจน์", generate_default = default_feminine_plural, default_when_not_explicit = is_defaulting_adjective}, } local function get_adj_params() local params = {} add_infl_list_params(params, adj_inflections) add_infl_params(params, "el") params.nisba = boolean_param return params end local function handle_adj_args(data, args) handle_infl_list_args(data, args, adj_inflections) handle_infl(data, args, adj_field_elative) for _, headobj in ipairs(data.heads) do if term_is_nisba(headobj.term, args.nisba) then insert(data.categories, "คำคุณศัพท์สัมพันธ์ (นิสบะฮ์) " .. langname) break end end end pos_functions["คำคุณศัพท์"] = { params = get_adj_params, func = handle_adj_args, } pos_functions["คำคุณศัพท์defaulting"] = { params = get_adj_params, func = function(data, args) data.pos_category = "คำคุณศัพท์" handle_adj_args(data, args) end, } ----------------------------------------------------------------------------------------- -- Nouns, etc. -- ----------------------------------------------------------------------------------------- local function get_masc_or_feminine_gender(data, default_type) local saw_m, saw_f, saw_mf for _, gender in ipairs(data.genders) do if is_masc_sg(gender.spec) then saw_m = true elseif is_fem_sg(gender.spec) then saw_f = true elseif is_masc_fem_sg(gender.spec) then saw_mf = true end end if saw_mf or saw_m and saw_f then error("Can't generate default for " .. default_type .. " when gender is both masculine and feminine") elseif saw_m then return "m" elseif saw_f then return "f" else error("Can't generate default for " .. default_type .. " when gender is not specified as " .. "masculine or feminine singular") end end local function is_defaulting_noun(data, args) return data.orig_pos_category == "คำนามdefaulting" end local noun_field_dual = { field = "d", label = "ทวิพจน์", generate_default = function(data, args) local gender = get_masc_or_feminine_gender(data, "noun dual") if gender == "m" then return default_masculine_dual(data, args) else return default_feminine_dual(data, args) end end, } local noun_field_plural = { field = "pl", label = "พหูพจน์", generate_default = function(data, args, defspec) local gender = get_masc_or_feminine_gender(data, "noun plural") if gender == "m" then if defspec == "+f" then return default_feminine_plural(data, args) else return default_masculine_plural(data, args) end elseif defspec == "+f" then error("Can't specify '+f' with feminine gender; just use '+'") else return default_feminine_plural(data, args) end end, -- Handle the case where pl=-, indicating an uncountable noun. handle = function(data, args, terms) if terms[1] and terms[1] == "-" then insert(data.categories, "คำนามนับไม่ได้" .. langname) if args.pauc and args.pauc[1] then error("Can't specify paucals when pl=-") end end end, allowed_defspecs = {["+"] = true, ["+f"] = true}, default_when_not_explicit = is_defaulting_noun, no_label = "<<นับไม่ได้>>", usually_no_label = "โดยปกติ<<นับไม่ได้>>", } local noun_field_paucal = { field = "pauc", label = "<<ตัวบอกความน้อย>>", generate_default = default_feminine_plural, } local noun_field_feminine = { field = "f", label = "เพศหญิง", generate_default = default_feminine, default_when_not_explicit = function(data, args) if data.orig_pos_category ~= "คำนามdefaulting" then return nil end local gender = get_masc_or_feminine_gender(data, "defaulting-if-masculine noun feminine") return gender == "m" end, } local noun_field_masculine = { field = "m", label = "เพศชาย", generate_default = default_masculine, default_when_not_explicit = function(data, args) if data.orig_pos_category ~= "คำนามdefaulting" then return nil end local gender = get_masc_or_feminine_gender(data, "defaulting-if-feminine noun masculine") return gender == "f" end, } local noun_basic_inflections = { noun_field_cons, noun_field_inf, noun_field_obl, noun_field_def, } local noun_shared_inflections = { noun_field_dual, noun_field_plural, } local noun_extra_inflections = { noun_field_paucal, noun_field_feminine, noun_field_masculine, } local function get_noun_params() local params = {} add_gender_params(params) add_infl_list_params(params, noun_basic_inflections) add_infl_list_params(params, noun_shared_inflections) add_infl_list_params(params, noun_extra_inflections) params.nisba = boolean_param return params end local function handle_noun_args(data, args) handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl_list_args(data, args, noun_extra_inflections) for _, headobj in ipairs(data.heads) do if term_is_nisba(headobj.term, args.nisba) then insert(data.categories, "คำนามสัมพันธ์ (นิสบะฮ์) " .. langname) break end end end pos_functions["คำนาม"] = { params = get_noun_params, func = handle_noun_args, } pos_functions["คำนามdefaulting"] = { params = get_noun_params, func = function(data, args) data.pos_category = "คำนาม" handle_noun_args(data, args) end, } local noun_field_singulative = {field = "sing", label = "<<คำเอกนาม>>", defgender = "f", generate_default = default_feminine} local noun_field_collective = {field = "coll", label = "<<คำสมุหนาม>>", defgender = "m", generate_default = default_masculine} local function handle_sing_coll_noun_infls(data, args, otherinfl, otherlabel, othergender) -- Handle sing= (corresponding singulative noun) or coll= (corresponding collective noun) and their gender handle_infl(data, args, otherinfl, otherlabel, nil, othergender) handle_infl_list_args(data, args, sing_coll_noun_inflections) end local function get_singulative_collective_noun_params(defgender, otherinfl) local params = {} add_gender_params(params, defgender) add_infl_list_params(params, noun_basic_inflections) add_infl_params(params, otherinfl) add_infl_list_params(params, noun_shared_inflections) add_infl_params(params, "pauc") return params end pos_functions["คำสมุหนาม"] = { params = function() return get_singulative_collective_noun_params("m", "sing") end, func = function(data, args) data.pos_category = "คำนาม" insert(data.categories, "คำสมุหนาม" .. langname) m_headword_utilities.insert_fixed_inflection { headdata = data, label = "<<คำสมุหนาม>>", } handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl(data, args, noun_field_singulative) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_paucal) end } pos_functions["คำเอกนาม"] = { params = function() return get_singulative_collective_noun_params("f", "coll") end, func = function(data, args) data.pos_category = "คำนาม" insert(data.categories, "คำเอกนาม" .. langname) m_headword_utilities.insert_fixed_inflection { headdata = data, label = "<<คำเอกนาม>>", } handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl(data, args, noun_field_collective) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_paucal) end } -- FIXME: Do numerals really behave almost as nouns? They vary by masc/fem. pos_functions["เลข"] = { params = get_noun_params, func = function(data, args) insert(data.categories, "เลขเชิงการนับ" .. langname) handle_noun_args(data, args) end } pos_functions["คำวิสามานยนาม"] = { params = get_noun_params, func = handle_noun_args, } local function get_pronoun_params() local params = {} add_gender_params(params, defgender) add_infl_list_params(params, noun_basic_inflections) add_infl_list_params(params, noun_shared_inflections) add_infl_params(params, "f") return params end pos_functions["คำสรรพนาม"] = { params = get_pronoun_params, func = function(data, args) handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_feminine) end } ----------------------------------------------------------------------------------------- -- Non-lemma forms -- ----------------------------------------------------------------------------------------- local valid_forms = list_to_set( { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "Iq", "IIq", "IIIq", "IVq" }) -- FIXME: Partly duplicated in [[Module:ar-inflections]]. local function handle_conj_form(data, args) local form = args[2] if form then if not valid_forms[form] then error("Invalid verb conjugation form " .. form) end insert(data.inflections, { label = "[[ภาคผนวก:คำกริยาภาษาอาหรับ#รูป " .. form .. "|รูป " .. form .. "]]" }) end end pos_functions["รูปกริยา"] = { params = function() return { [2] = {}, } end, func = function(data, args) handle_conj_form(data, args) end } local function get_participle_params() local params = get_adj_params() params[2] = {} return params end pos_functions["รูปกริยาขยายกรรตุวาจก"] = { params = get_participle_params, func = function(data, args) data.pos_category = "รูปกริยาขยาย" insert(data.categories, "รูปกริยาขยายกรรตุวาจก" .. langname) handle_conj_form(data, args) handle_infl_list_args(data, args, adj_inflections) end } pos_functions["รูปกริยาขยายกรรมวาจก"] = { params = get_participle_params, func = function(data, args) data.pos_category = "รูปกริยาขยาย" insert(data.categories, "รูปกริยาขยายกรรมวาจก" .. langname) handle_conj_form(data, args) handle_infl_list_args(data, args, adj_inflections) end } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["คำกริยา"] = { head_is_not_1 = true, params = function() return { [1] = {}, -- Comma-separated lists with possible inline modifiers ["past"] = {}, ["past1s"] = {}, ["nonpast"] = {}, ["vn"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, } end, func = function(data, args) local ar_verb = require(ar_verb_module) local alternant_multiword_spec = args[1] ~= "-" and ar_verb.do_generate_forms(args, "ar-verb", data.pagename) or nil local function do_slot(slots_to_check, override, label, slot_is_headword) -- Do this even with an override so we can return the correct filled slot. local slot, slotval if alternant_multiword_spec then for _, potential_slot in ipairs(slots_to_check) do slotval = alternant_multiword_spec.forms[potential_slot] if slotval then slot = potential_slot break end end end local function get_slot_values() local terms = {} for _, form in ipairs(slotval) do local term = { term = form.form, id = form.id, genders = form.genders, pos = form.pos, lit = form.lit, } term.tr = form.translit if form.footnotes then local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(form.footnotes) term.q = quals term.refs = refs end insert(terms, term) end return terms end if override then local override_param_mods = { alt = {}, t = { -- [[Module:headword]] expects the gloss in "gloss". item_dest = "gloss", }, gloss = {}, g = { -- [[Module:headword]] expects the genders in "genders". item_dest = "genders", type = "genders", }, pos = {}, lit = {}, id = {}, -- Qualifiers and labels q = { type = "qualifier", }, qq = { type = "qualifier", }, l = { type = "labels", }, ll = { type = "labels", }, ref = { -- [[Module:headword]] expects the references in "refs". item_dest = "refs", type = "references", }, } local function generate_obj(formval, parse_err) if formval == "+" then return {term = "+", underlying_terms = get_slot_values()} end local val, uncertain = formval:match("^(.*)(%?)$") val = val or formval uncertain = not not uncertain local ar, translit = val:match("^(.*)//(.*)$") if not ar then ar = formval end local retval = {term = ar, uncertain = uncertain} retval.tr = translit end local terms if override:find("<") then terms = require(parse_utilities_module).parse_inline_modifiers(override, { paramname = paramname, param_mods = override_param_mods, generate_obj = generate_obj, splitchar = "[,،]", escape_fun = escape_comma_whitespace, unescape_fun = unescape_comma_whitespace, }) else terms = split_on_comma(override) for i, split in ipairs(terms) do terms[i] = generate_obj(split) end end -- See if + was supplied and we have to potentially flatten multiple default terms and harmonize -- default properties with override properties. local saw_underlying_terms = false for _, term in ipairs(terms) do if term.underlying_terms then saw_underlying_terms = true break end end if saw_underlying_terms then -- Flatten any default terms, copying the corresponding override properties over the default -- properties. Non-default terms get inserted directly. local flattened = {} for _, term in ipairs(terms) do if term.underlying_terms then for _, underlying in ipairs(term.underlying_terms) do for k, v in pairs(term) do if k ~= "term" and k ~= "underlying_terms" then if k == "uncertain" then underlying.uncertain = underlying.uncertain or v elseif type(v) ~= "table" or v[1] then -- Don't copy empty lists (which are the default) over possibly non-empty -- lists. underlying[k] = v end end end insert(flattened, underlying) end else insert(flattened, term) end end terms = flattened end if not slot_is_headword then terms.label = label end return terms, slot elseif not alternant_multiword_spec then return nil, slot else if not slotval then if slot_is_headword then -- FIXME, put "uncertain" as qualifier? Does this ever happen? return nil, slot elseif alternant_multiword_spec.slot_uncertain[slot] then return {label = label .. " uncertain"}, slot elseif alternant_multiword_spec.slot_explicitly_missing[slot] then return {label = "no " .. label}, slot else -- just say nothing about this slot return nil, slot end end local terms = get_slot_values() if not slot_is_headword then terms.label = label end return terms, slot end end local gloss_parts = {} for _, vform in ipairs(alternant_multiword_spec.verb_forms) do insert(gloss_parts, "[[Appendix:Arabic verbs#Form " .. vform .. "|" .. vform .. "]]") end if gloss_parts[1] then data.gloss = concat(gloss_parts, ", ") end if data.heads[1] and args.past then error("Can't specify both head= and past= to {{ar-verb}}; prefer past=") end if not alternant_multiword_spec.has_active then insert(data.inflections, {label = "passive-only"}) end -- Do this always so `past_slot` is correctly filled. local past, past_slot = do_slot(ar_verb.potential_lemma_slots, args.past, "-", "slot is headword") if data.heads[1] then -- user specified head=; don't override with past= or slot 'past_3sm' etc. else if past then data.heads = past end end local should_do_past1s = not not args.past1s if not should_do_past1s then local is_form_I = false for _, vform in ipairs(alternant_multiword_spec.verb_forms) do if vform == "I" then is_form_I = true break end end if is_form_I then require(inflection_utilities_module).map_word_specs(alternant_multiword_spec, function(base) if base.verb_form == "I" then for _, vowel_spec in ipairs(base.conj_vowels) do -- For form-I geminate verbs, the final vowel of the past is elided in the citation form. -- We want to display it for all cases other than active a~u and a~i (the most common -- cases). if vowel_spec.weakness == "geminate" then if ar_verb.is_passive_only(base.passive) then should_do_past1s = true break end local past_vowel = ar_verb.rget(vowel_spec.past) local nonpast_vowel = ar_verb.rget(vowel_spec.nonpast) if not (past_vowel == ar.A and (nonpast_vowel == ar.U or nonpast_vowel == ar.I)) then should_do_past1s = true break end end end -- FIXME, provide way of breaking early from map_word_specs(). end end) end end local past1s if should_do_past1s then past1s, _ = do_slot({"past_1s", "past_pass_1s"}, args.past1s, "บุรุษที่หนึ่งเอกพจน์อดีตกาล") if past1s then insert(data.inflections, past1s) end end local nonpast_slots if not past_slot or past_slot:find("^past_") then nonpast_slots = {"ind_3ms", "ind_pass_3ms", "imp_2ms"} else nonpast_slots = {} end local nonpast, _ = do_slot(nonpast_slots, args.nonpast, "ไม่ใช่อดีตกาล") if nonpast then insert(data.inflections, nonpast) end local vn, _ = do_slot({"vn"}, args.vn, "คำกริยานาม") if vn then insert(data.inflections, vn) end -- FIXME: Should we insert categories? Conjugation also does it and is more likely to be accurate. --for _, cat in ipairs(alternant_multiword_spec.categories) do -- insert(data.categories, cat) --end --[=[ -- FIXME: Review this to see if we need to port it. -- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to -- incorporate any links in that head into the 1= specification, use the infinitive generated by -- [[Module:pt-verb]] in place of the user-specified or auto-generated head. This was copied from -- [[Module:it-headword]], where doing this gets accents marked on the verb(s). We don't have accents marked on -- the verb but by doing this we do get any footnotes on the infinitive propagated here. Don't do this if the -- user gave multiple heads or gave a head with a multiword-linked verbal expression such as Italian -- '[[dare esca]] [[al]] [[fuoco]]' (FIXME: give Portuguese equivalent). if not data.user_specified_heads[1] or ( not data.user_specified_heads[2] and alternant_multiword_spec.incorporated_headword_head_into_lemma ) then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.infinitive_linked) do local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes) insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end ]=] end } ----------------------------------------------------------------------------------------- -- Generic parts of speech -- ----------------------------------------------------------------------------------------- pos_functions.head_with_gender = { params = function() return { [3] = {type = "genders"}, } end, func = function(data, args) handle_gender(data, args, "nonlemma", 3) end, } return export idzdh0qwqiqtypwwnaedc5b5tjf9vm2 5723290 5723270 2026-05-20T05:25:08Z OctraBot 3198 5723290 Scribunto text/plain -- Author: primarily Benwing2; some work by Fenakhay, Erutuon; early version by Rua local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local ar_translit = require("Module:ar-translit") local ar_verb_module = "Module:ar-verb" local ar_utilities_module = "Module:ar-utilities" local ar = require(ar_utilities_module) local en_utilities_module = "Module:en-utilities" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local links_module = "Module:links" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local require_when_needed = require("Module:utilities/require when needed") local remove_links = require_when_needed(links_module, "remove_links") local m_table = require("Module:table") local m_str_utils = require("Module:string utilities") local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_to_set = m_table.listToSet local rfind = m_str_utils.find local rmatch = m_str_utils.match local rsubn = m_str_utils.gsub local u = m_str_utils.char local rsplit = m_str_utils.split local insert = table.insert local concat = table.concat local unpack = unpack or table.unpack -- Lua 5.2 compatibility local langcode = "ar" local lang = require("Module:languages").getByCode(langcode) local langname = lang:getCategoryName() --th local TEMPCOMMA = u(0xFFF0) local TEMPARCOMMA = u(0xFFF1) local misc_pos_with_gender = list_to_set { "ปัจจับ", "รูปคุณศัพท์", "รูปนาม", "รูปวิสามานยนาม", "รูปสรรพนาม", "รูปตัวกำหนด", } ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local dump = mw.dumpObject -- version of mw.ustring.gsub() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local function ine(val) if val == "" then return nil else return val end end -- Replace comma with a temporary char in comma + whitespace. local function escape_comma_whitespace(run) local escaped = false if run:find("\\,") then run = run:gsub("\\,", "\\" .. TEMPCOMMA) escaped = true end if run:find("\\،") then run = run:gsub("\\،", "\\" .. TEMPARCOMMA) escaped = true end if run:find(",%s") then run = run:gsub(",(%s)", TEMPCOMMA .. "%1") escaped = true end if run:find("،%s") then run = run:gsub("،(%s)", TEMPARCOMMA .. "%1") escaped = true end return run, escaped end -- Undo replacement of comma with a temporary char in comma + whitespace. local function unescape_comma_whitespace(run) return (run:gsub(TEMPCOMMA, ","):gsub(TEMPARCOMMA, "،")) end -- Split an argument on comma or Arabic comma, but not either type of comma followed by whitespace. local function split_on_comma(val) if rfind(val, "[,،]%s") or val:find("\\") then return export.split_escaping(val, "[,،]", false, escape_comma_whitespace, unescape_comma_whitespace) else return rsplit(val, "[,،]") end end local function replace_tr_ending(tr, from, to) if not tr then return nil end local pref = tr:match("^(.*)" .. from .. "$") if not pref then error(("Translit '%s' does not end in -%s, as expected"):format(tr, from)) end return pref .. to end ----------------------------------------------------------------------------------------- -- Tracking functions -- ----------------------------------------------------------------------------------------- local trackfn = require("Module:debug/track") local function track(page) trackfn(langcode .. "-headword/" .. page) return true end --[==[ Examples of what you can find by looking at what links to the given pages: [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized]] all unvocalized pages [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/pl]] all unvocalized pages where the plural is unvocalized, whether specified using pl=, pl2=, etc. [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head]] all unvocalized pages where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/nouns]] all nouns excluding proper nouns, collective nouns, singulative nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/proper]] nouns all proper nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/head/not]] proper nouns all words that are not proper nouns where the head is unvocalized [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized/adjectives]] all adjectives where any parameter is unvocalized; currently only works for heads, so equivalent to .../unvocalized/head/adjectives [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-empty-head]] all pages with an empty head [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-manual-translit]] all unvocalized pages with manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-manual-translit/head/nouns]] all nouns where the head is unvocalized but has manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/unvocalized-no-translit]] all unvocalized pages without manual translit [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab]] all pages with any parameter containing i3rab of either -un, -u, -a or -i [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-un]] all pages with any parameter containing an -un i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-un/pl]] all pages where a form specified using pl=, pl2=, etc. contains an -un i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab-u/head]] all pages with a head containing an -u i3rab ending [[Special:WhatLinksHere/Wiktionary:Tracking/ar-headword/i3rab/head/proper]] nouns (all proper nouns with a head containing i3rab of either -un, -u, -a or -i) In general, the format is one of the following: Wiktionary:Tracking/ar-headword/FIRSTLEVEL Wiktionary:Tracking/ar-headword/FIRSTLEVEL/ARGNAME Wiktionary:Tracking/ar-headword/FIRSTLEVEL/POS Wiktionary:Tracking/ar-headword/FIRSTLEVEL/ARGNAME/POS FIRSTLEVEL can be one of "unvocalized", "unvocalized-empty-head" or its opposite "unvocalized-specified", "unvocalized-manual-translit" or its opposite "unvocalized-no-translit", "i3rab", "i3rab-un", "i3rab-u", "i3rab-a", or "i3rab-i". ARGNAME is either "head" or an argument such as "pl", "f", "cons", etc. This automatically includes arguments specified as head2=, pl3=, etc. POS is a part of speech, lowercase and singular, e.g. "noun", "adjective", "proper noun", "collective noun", etc. or "not proper noun", which includes all parts of speech but proper nouns. ]==] local function track_form(argname, form, translit, pos) form = ar.reorder_shadda(remove_links(form)) function dotrack(page) track(page) track(page .. "/" .. argname) if pos then track(page .. "/" .. pos) track(page .. "/" .. argname .. "/" .. pos) if pos ~= "คำวิสามานยนาม" then track(page .. "/not proper noun") track(page .. "/" .. argname .. "/not proper noun") end end end function track_i3rab(arabic, tr) if rfind(form, arabic .. "$") then dotrack("i3rab") dotrack("i3rab-" .. tr) end end track_i3rab(ar.UN, "un") track_i3rab(ar.U, "u") track_i3rab(ar.A, "a") track_i3rab(ar.I, "i") if form == "" or not (lang:transliterate(form)) then dotrack("unvocalized") if form == "" then dotrack("unvocalized-empty-head") else dotrack("unvocalized-specified") end if translit then dotrack("unvocalized-manual-translit") else dotrack("unvocalized-no-translit") end end end ----------------------------------------------------------------------------------------- -- Inflection-parsing functions -- ----------------------------------------------------------------------------------------- -- Construct the default construct state or informal form of a term in lemma format. Usually this is the same as the -- lemma but is different for final-weak nouns and adjectives ending in -n in their lemma. NOTE: Input must be -- shadda-reordered for this to work properly. local function default_construct_state_or_informal(term, tr) local pref = term:match("^(.*)" .. ar.HAMZA .. ar.IN .."$") -- Hamza on the line with -in changes to hamza-on-yā with -ī. if pref then return pref .. ar.HAMZA_ON_YA .. ar.II, replace_tr_ending(tr, "in", "ī") end -- Otherwise just change -in to -ī. pref = term:match("^(.*)" .. ar.IN .. "$") if pref then return pref .. ar.II, replace_tr_ending(tr, "in", "ī") end -- Change -an with alif maqṣūra to -ā with alif maqṣūra. pref = term:match("^(.*)" .. ar.AN .. ar.AMAQ .. "$") if pref then return pref .. ar.AAMAQ, replace_tr_ending(tr, "an", "ā") end -- Change -an with tall alif (e.g. عَصًا) to -ā with tall alif. pref = term:match("^(.*)" .. ar.AN .. ar.ALIF .. "$") if pref then return pref .. ar.AA, replace_tr_ending(tr, "an", "ā") end return term, tr end local function generate_construct_state_or_informal_default(data, args) local heads = data.heads local consobjs = {} local different_cons = false for _, headobj in ipairs(data.heads) do local consterm, constr = default_construct_state_or_informal(headobj.term, headobj.tr) different_cons = different_cons or consterm ~= headobj.term or constr ~= headobj.tr local consobj = m_table.shallowCopy(headobj) consobj.term = consterm consobj.tr = constr insert(consobjs, consobj) end if different_cons then return consobjs else return {} end end local noun_field_cons = { field = "cons", label = "<<construct state>>", generate_default = generate_construct_state_or_informal_default, default_when_not_explicit = function(args, data) return true end, } local noun_field_inf = {field = "inf", label = "informal"} local noun_field_obl = {field = "obl", label = "<<oblique>>"} local noun_field_def = {field = "def", label = "<<definite>> state"} local noun_inflections = { noun_field_cons, noun_field_inf, noun_field_obl, noun_field_def, } local adj_field_inf = { field = "inf", label = "informal", generate_default = generate_construct_state_or_informal_default, default_when_not_explicit = function(args, data) return true end, } local adj_field_obl = noun_field_obl local adj_field_def = noun_field_def local adjective_inflections = { adj_field_inf, adj_field_obl, adj_field_def, } local function has_construct_state(data) return data.pos_category ~= "adjectives" end local function parse_nominal_inflection(paramname, val, parse_err) return m_headword_utilities.parse_term_with_modifiers { val = val, paramname = paramname, splitchar = ",", include_mods = {"tr", "g"}, } end local function make_nominal_inflection_param_mod_spec(paramname) return {convert = function(val, parse_err) return parse_nominal_inflection(paramname, val, parse_err) end} end -- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple -- comma-separated values are allowed. local function parse_inflection(data, args, field, is_head) local argfield = field local argpref = field if type(argfield) == "table" then argpref = argfield[2] argfield = argfield[1] end local include_mods if is_head then include_mods = {"tr"} else include_mods = {"tr", "g"} for _, spec in ipairs(has_construct_state(data) and noun_inflections or adjective_inflections) do insert(include_mods, {spec.field, make_nominal_inflection_param_mod_spec(argpref .. "." .. spec.field)}) end end if is_head then local retval if args[argfield] then retval = m_headword_utilities.parse_term_with_modifiers { val = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = include_mods, } end return retval or {} else return m_headword_utilities.parse_term_list_with_modifiers { forms = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = include_mods, } end end local function insert_inflection(data, terms, label, accel, defgender, track_field, no_label, usually_no_label) local track_pos = m_en_utilities.singularize(data.pos_category) for _, termobj in ipairs(terms) do -- If the user supplied a construct state or informal form for the term with a value of "+", substitute the -- default value for the term. If the user supplied a value of "--", they want no value displayed. Otherwise, -- if the user didn't supply any value, we check to see if the default construct state or informal form is -- different from the lemma and display it if so; this applies particularly to terms in '-in' and '-an', where -- the default construct state or informal form is almost always correct. local field = has_construct_state(data) and "cons" or "inf" if not termobj[field] then local defcons, defconstr = default_construct_state_or_informal(termobj.term, termobj.tr) if termobj.term ~= defcons or termobj.tr ~= defconstr then -- We don't want to copy qualifiers, labels, etc. from the term object because we're a subinflection of -- the term object. termobj[field] = {{term = defcons, tr = defconstr}} end elseif termobj[field][1].term == "--" then if termobj[field][2] then error("Can't specify more than one value for <" .. field .. ":...> if first value is '--', meaning \"don't insert anything\"") end termobj[field] = nil else for i, consobj in ipairs(termobj[field]) do if consobj.term == "+" then if consobj.tr then error("Can't specify translit for default value '+'") end consobj.term, consobj.tr = default_construct_state_or_informal(termobj.term, termobj.tr) elseif consobj.term == "~" then if consobj.tr then error("Can't specify translit for term-requesting value '~'") end consobj.term, consobj.tr = termobj.term, termobj.tr end end end if defgender and not termobj.genders then termobj.genders = {{spec = defgender}} end local function insert_nested_inflection(field, label) if termobj[field] then m_headword_utilities.insert_inflection { headdata = data, inflobj = termobj, terms = termobj[field], label = label } end end for _, spec in ipairs(has_construct_state(data) and noun_inflections or adjective_inflections) do insert_nested_inflection(spec.field, spec.label) end track_form(track_field, termobj.term, termobj.tr, track_pos) end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, no_label = no_label, usually_no_label = usually_no_label, } end ----------------------------------------------------------------------------------------- -- Main entry point -- ----------------------------------------------------------------------------------------- function export.show(frame) local iparams = { [1] = true, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "แม่แบบ:" .. langcode .. "-head" and "คำอุทาน" or error("Part of speech must be specified in 1=") poscat_th = require("Module:th-utilities").th_pos(poscat) --th poscat_th = require(headword_module).canonicalize_pos(poscat_th) --th_pos_to_form is already there else poscat_th = require("Module:th-utilities").th_pos(poscat) --th; initiation is needed end local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat_th] and "head_with_gender" or "head") or poscat_th local params = { ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["id"] = true, ["json"] = boolean_param, ["pagename"] = {}, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end local head_is_head = pos_functions[indexing_poscat] and pos_functions[indexing_poscat].head_is_not_1 local headfield = head_is_head and "head" or pos_in_1 and 2 or 1 params[headfield] = head_is_head and true or {default = "+"} params.head2 = {replaced_by = false, instead = "use multiple comma-separated values in |" .. headfield .. "="} local tr_replaced_by = {replaced_by = false, instead = "use <tr:...> inline modifier on |" .. headfield .. "="} params.tr = tr_replaced_by params.tr2 = tr_replaced_by if pos_functions[indexing_poscat] then for key, val in pairs(pos_functions[indexing_poscat].params()) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local data = { lang = lang, pos_category = poscat_th, orig_pos_category = poscat_th, categories = {}, heads = {}, genders = {}, inflections = {enable_auto_translit = true}, pagename = pagename, id = args.id, sort_key = args.sort, force_cat_output = force_cat, -- We expect a head always so the redundant head cat will be inaccurate. no_redundant_head_cat = true, } data.heads = parse_inflection(data, args, headfield, "is_head") for _, headobj in ipairs(data.heads) do if headobj.term == "+" then headobj.term = pagename end end data.is_suffix = false if args.suffix or ( not args.nosuffix and pagename:find("^%-") and poscat ~= "ปัจจัย" and poscat ~= "รูปปัจจัย" ) then data.is_suffix = true data.pos_category = "ปัจจัย" local singular_poscat = --[[m_en_utilities.singularize(poscat)]] poscat_th insert(data.categories, "ปัจจัยสร้าง" .. singular_poscat .. langname) insert(data.inflections, {label = "ปัจจัยสร้าง" .. singular_poscat}) end if pos_functions[indexing_poscat] then pos_functions[indexing_poscat].func(data, args) end -- Do this after calling pos_functions[poscat].func() as it may modify data.heads (as verbs do). local irreg_translit = false for _, head in ipairs(data.heads) do if ar_translit.irregular_translit(head.term, head.tr) then irreg_translit = true break end end if irreg_translit then insert(data.categories, "ศัพท์" .. langname .. "ที่มีการออกเสียงไม่ปรกติ") end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end ----------------------------------------------------------------------------------------- -- Gender handling -- ----------------------------------------------------------------------------------------- local valid_bare_genders = {false, "m", "f", "mf", "mfbysense", "mfequiv"} local valid_bare_numbers = {false, "d", "p"} local valid_bare_animacies = {false, "pr", "np"} local valid_genders = {} for _, gender in ipairs(valid_bare_genders) do for _, number in ipairs(valid_bare_numbers) do for _, animacy in ipairs(valid_bare_animacies) do local parts = {} local function ins_part(part) if part then insert(parts, part) end end ins_part(gender) ins_part(number) ins_part(animacy) local full_gender = concat(parts, "-") valid_genders[full_gender == "" and "?" or full_gender] = true end end end local function is_masc_sg(g) return g == "m" or g == "m-pr" or g == "m-np" end local function is_fem_sg(g) return g == "f" or g == "f-pr" or g == "f-np" end local function is_masc_fem_sg(g) g = g:gsub("%-pr", ""):gsub("%-np", "") return g == "mf" or g == "mfequiv" or g == "mfbysense" end local function add_gender_params(params, default) params[2] = {type = "genders", default = default or "?", template_default = "m"} params["g2"] = {replaced_by = false, instead = "use comma-separated values in |g="} end -- Handle gender in params 2=, inserting into `data.genders`. Also, if a lemma, insert categories into `data.categories` -- if the gender is unexpected for the form of the noun. (Note: If there are multiple genders, -- [[Module:gender and number]] will automatically insert 'Arabic POS with multiple genders'.) local function handle_gender(data, args, nonlemma, field) if not args[field or 2] then return end for _, gspec in ipairs(args[field or 2]) do if not valid_genders[gspec.spec] then error("Unrecognized gender: " .. gspec.spec) end end data.genders = args[field or 2] if nonlemma then return end for _, gspec in ipairs(data.genders) do local g = gspec.spec if is_masc_sg(g) or is_fem_sg(g) or is_masc_fem_sg(g) then local head = data.heads[1] if head then head = rsub(ar.reorder_shadda(remove_links(head.term)), ar.UNUOPT .. "$", "") local ends_with_tam = rfind(head, "^[^ ]*" .. ar.TAM .. "$") or rfind(head, "^[^ ]*" .. ar.TAM .. " ") if (is_masc_sg(g) or is_masc_fem_sg(g)) and ends_with_tam then insert(data.categories, "ศัพท์เพศชาย" .. langname .. "ที่ลงท้ายด้วยเพศหญิง") elseif (is_fem_sg(g) or is_masc_fem_sg(g)) and not ends_with_tam and not rfind(head, "[" .. ar.ALIF .. ar.AMAQ .. "]$") and not rfind(head, ar.ALIF .. ar.HAMZA .. "$") then insert(data.categories, "ศัพท์เพศหญิง" .. langname .. "ที่ไม่ลงท้ายด้วยเพศหญิง") end end end end end ----------------------------------------------------------------------------------------- -- Inflection handlers -- ----------------------------------------------------------------------------------------- -- Add list parameters to `params` (a structure as passed to [[Module:parameters]]) for a parameter named `argpref`. -- If `argpref` is "*", add the nominal inflection parameters for construct state, definite state, etc. Related -- transliteration and gender parameters are no longer supported in favor of inline modifiers, and error messages are -- output if these parameters are used. local function add_infl_params(params, argpref) params[argpref] = {list = true, disallow_holes = true} params[argpref .. "tr"] = {replaced_by = false, instead = "use <tr:...> inline modifier on |" .. argpref .. "="} params[argpref .. "g"] = {replaced_by = false, instead = "use <g:...> inline modifier on |" .. argpref .. "="} end --[=[ Fetch a list of inflections from the arguments in `args` based on argument `field` (e.g. "pl"). Label with `label` (e.g. "plural"), which will appear in the headword. Insert into `data.inflections`, where `data` is the structure passed to [[Module:headword]]. If `generate_default` is specified, it should be a function of two arguments (`data`, `args`), which should generate the default value if no values are specified or if "+" is explicitly given. If `generate_default` isn't specified and the user gave no values, no inflection will be inserted. ]=] local function handle_infl(data, args, spec) local newinfls = parse_inflection(data, args, spec.field, false) if not newinfls[1] and spec.default_when_not_explicit and spec.default_when_not_explicit(data, args) then newinfls = {{term = "+"}} end if spec.handle then spec.handle(data, args, newinfls) end local default_specs = spec.allowed_defspecs if not default_specs then default_specs = spec.generate_default and {["+"] = true} or {} end local saw_defspec = false for _, newinfl in ipairs(newinfls) do if default_specs[newinfl.term] or newinfl.term == "~" then saw_defspec = true break end end if saw_defspec then local newnewinfls = {} for _, newinfl in ipairs(newinfls) do if default_specs[newinfl.term] then if newinfl.tr then error("Can't specify translit for default value '" .. newinfl.term .. "'") end local definfls = spec.generate_default(data, args, newinfl.term) for _, definfl in ipairs(definfls) do m_headword_utilities.combine_termobj_qualifiers_labels(definfl, newinfl) insert(newnewinfls, definfl) end elseif newinfl.term == "~" then if newinfl.tr then error("Can't specify translit for head-requesting value '~'") end for _, headobj in ipairs(data.heads) do headobj = m_table.shallowCopy(headobj) m_headword_utilities.combine_termobj_qualifiers_labels(headobj, newinfl) insert(newnewinfls, headobj) end else insert(newnewinfls, newinfl) end end newinfls = newnewinfls end if newinfls[1] then if newinfls[1].term == "--" then if newinfls[2] then error("Can't specify more than one term if first term is '--', meaning \"don't insert anything\"") end else insert_inflection(data, newinfls, spec.label, nil, spec.defgender, spec.field, spec.no_label, spec.usually_no_label) end end end local function add_infl_list_params(params, infl_list) for _, infl in ipairs(infl_list) do add_infl_params(params, infl.field) end end local function handle_infl_list_args(data, args, infl_list) for _, infl in ipairs(infl_list) do handle_infl(data, args, infl) end end ----------------------------------------------------------------------------------------- -- Default ending generators -- ----------------------------------------------------------------------------------------- local function make_conditional_default(specs) return function(data, args) local heads = data.heads if not heads[1] then heads = {{term = data.pagename}} end local newobjs = {} for _, headobj in ipairs(heads) do local term = ar.reorder_shadda(headobj.term) local tr = headobj.tr local matched = false for _, spec in ipairs(specs) do local from, fromtr, to, totr = unpack(spec) if from:find("^%^") then pref = rmatch(term, from .. "$") else pref = rmatch(term, "^(.*)" .. from .. "$") end if pref then term = pref .. to tr = replace_tr_ending(tr, fromtr, totr) matched = true headobj = m_table.shallowCopy(headobj) headobj.term = ar.undo_reorder_shadda(term) headobj.tr = tr insert(newobjs, headobj) break end end if not matched then error(("Internal error: No matching spec: head=%s"):format(dump(headobj))) end end return newobjs end end local default_feminine = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AAH, "āh"}, {ar.AN .. ar.ALIF, "an", ar.AAH, "āh"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAH, "iya"}, {ar.IN, "in", ar.IYAH, "iya"}, {"", "", ar.AH, "a"}, } local default_masculine = make_conditional_default { -- tall alif substitutes for alif maqṣūra after a yāʔ {ar.Y .. ar.AAH, "āh", ar.AN .. ar.ALIF, "an"}, {ar.AAH, "āh", ar.AN .. ar.AMAQ, "an"}, -- handle the common case of final-weak feminine active participle with preceding hamza; -- the hamza-on-yāʔ always converts back to hamza on the line when preceded by ā (alif) but -- may not otherwise, so we just leave it alone in that case {ar.ALIF .. ar.HAMZA_ON_YA .. ar.IYAH, "iya", ar.HAMZA .. ar.IN, "in"}, {ar.IYAH, "iya", ar.IN, "in"}, {ar.AH, "a", "", ""}, {"", "", "", ""}, } local default_masculine_plural = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AWN, "awn"}, {ar.AN .. ar.ALIF, "an", ar.AWN, "awn"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_WAW .. ar.UUN, "ūn"}, {ar.IN, "in", ar.UUN, "ūn"}, {"", "", ar.UUN, "ūn"}, } local default_feminine_plural = make_conditional_default { -- صَلَاة pl. صَلَوَات and أَدَاة pl. أَدَوَات and similar; but نَوَاة and وَفَاة with a و in them become نَوَيَات and وَفَيَات; -- and longer terms like مُبَارَاة and كُمَّثْرَاة invariably form their plural in -يَات. {"^([^و]" .. ar.A .. "[^و])" .. ar.AAH, "āh", ar.A .. ar.W .. ar.AAT, "awāt"}, {ar.AAH, "āh", ar.AYAAT, "ayāt"}, {ar.AN .. ar.AMAQ, "an", ar.AYAAT, "ayāt"}, {ar.AN .. ar.ALIF, "an", ar.AYAAT, "ayāt"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAAT, "iyāt"}, {ar.IN, "in", ar.IYAAT, "iyāt"}, {ar.AH, "a", ar.AAT, "āt"}, {"", "", ar.AAT, "āt"}, } local default_masculine_dual = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AYAAN, "ayān"}, {ar.AN .. ar.ALIF, "an", ar.AYAAN, "ayān"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IYAAN, "iyān"}, {ar.IN, "in", ar.IYAAN, "iyān"}, {"", "", ar.AAN, "ān"}, } local default_feminine_dual = make_conditional_default { {ar.AN .. ar.AMAQ, "an", ar.AATAAN, "ātān"}, {ar.AN .. ar.ALIF, "an", ar.AATAAN, "ātān"}, -- e.g. مُحْيًا {ar.HAMZA .. ar.IN, "in", ar.HAMZA_ON_YA .. ar.IY .. ar.ATAAN, "iyatān"}, {ar.IN, "in", ar.IY .. ar.ATAAN, "iyatān"}, {"", "", ar.ATAAN, "atān"}, } -- Return whether `term` is a nisba noun or adjective, ending in -iyy or -iyyah. `nisba_val` is the value of -- args.nisba; if non-nil, it overrides any auto-determination based on the shape of the term. local function term_is_nisba(term, nisba_val) if nisba_val ~= nil then return nisba_val end term = ar.reorder_shadda(term) -- necessary to avoid issues with e.g. أُورُوبِّيّ. local pref = rmatch(term, "^(.*)" .. ar.IYY .. ar.UN .. "?$") if not pref then pref = rmatch(term, "^(.*)" .. ar.IYYAH .. ar.UN .. "?$") end -- Avoid false positives for words like قَوِيّ "strong" and صَبِيّ "boy". There may be other false positives -- but this should catch most of them and will avoid very many false negatives. return pref and not rfind(pref, "^[^ا]" .. ar.A .. ".$") end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function is_defaulting_adjective(data, args) return data.orig_pos_category == "คำคุณศัพท์defaulting" end local adj_field_elative = {field = "el", label = "<<elative>>"} local adj_inflections = { adj_field_inf, adj_field_obl, adj_field_def, {field = "f", label = "เพศหญิง", generate_default = default_feminine, default_when_not_explicit = is_defaulting_adjective}, {field = "d", label = "เพศชายทวิพจน์", generate_default = default_masculine_dual}, {field = "fd", label = "เพศหญิงทวิพจน์", generate_default = default_feminine_dual}, {field = "cpl", label = "เพศรวมพหูพจน์"}, {field = "pl", label = "เพศชายพหูพจน์", generate_default = default_masculine_plural, default_when_not_explicit = is_defaulting_adjective}, {field = "fpl", label = "เพศหญิงพหูพจน์", generate_default = default_feminine_plural, default_when_not_explicit = is_defaulting_adjective}, } local function get_adj_params() local params = {} add_infl_list_params(params, adj_inflections) add_infl_params(params, "el") params.nisba = boolean_param return params end local function handle_adj_args(data, args) handle_infl_list_args(data, args, adj_inflections) handle_infl(data, args, adj_field_elative) for _, headobj in ipairs(data.heads) do if term_is_nisba(headobj.term, args.nisba) then insert(data.categories, "คำคุณศัพท์สัมพันธ์ (นิสบะฮ์) " .. langname) break end end end pos_functions["คำคุณศัพท์"] = { params = get_adj_params, func = handle_adj_args, } pos_functions["คำคุณศัพท์defaulting"] = { params = get_adj_params, func = function(data, args) data.pos_category = "คำคุณศัพท์" handle_adj_args(data, args) end, } ----------------------------------------------------------------------------------------- -- Nouns, etc. -- ----------------------------------------------------------------------------------------- local function get_masc_or_feminine_gender(data, default_type) local saw_m, saw_f, saw_mf for _, gender in ipairs(data.genders) do if is_masc_sg(gender.spec) then saw_m = true elseif is_fem_sg(gender.spec) then saw_f = true elseif is_masc_fem_sg(gender.spec) then saw_mf = true end end if saw_mf or saw_m and saw_f then error("Can't generate default for " .. default_type .. " when gender is both masculine and feminine") elseif saw_m then return "m" elseif saw_f then return "f" else error("Can't generate default for " .. default_type .. " when gender is not specified as " .. "masculine or feminine singular") end end local function is_defaulting_noun(data, args) return data.orig_pos_category == "คำนามdefaulting" end local noun_field_dual = { field = "d", label = "ทวิพจน์", generate_default = function(data, args) local gender = get_masc_or_feminine_gender(data, "noun dual") if gender == "m" then return default_masculine_dual(data, args) else return default_feminine_dual(data, args) end end, } local noun_field_plural = { field = "pl", label = "พหูพจน์", generate_default = function(data, args, defspec) local gender = get_masc_or_feminine_gender(data, "noun plural") if gender == "m" then if defspec == "+f" then return default_feminine_plural(data, args) else return default_masculine_plural(data, args) end elseif defspec == "+f" then error("Can't specify '+f' with feminine gender; just use '+'") else return default_feminine_plural(data, args) end end, -- Handle the case where pl=-, indicating an uncountable noun. handle = function(data, args, terms) if terms[1] and terms[1] == "-" then insert(data.categories, "คำนามนับไม่ได้" .. langname) if args.pauc and args.pauc[1] then error("Can't specify paucals when pl=-") end end end, allowed_defspecs = {["+"] = true, ["+f"] = true}, default_when_not_explicit = is_defaulting_noun, no_label = "<<นับไม่ได้>>", usually_no_label = "โดยปกติ<<นับไม่ได้>>", } local noun_field_paucal = { field = "pauc", label = "<<ตัวบอกความน้อย>>", generate_default = default_feminine_plural, } local noun_field_feminine = { field = "f", label = "เพศหญิง", generate_default = default_feminine, default_when_not_explicit = function(data, args) if data.orig_pos_category ~= "คำนามdefaulting" then return nil end local gender = get_masc_or_feminine_gender(data, "defaulting-if-masculine noun feminine") return gender == "m" end, } local noun_field_masculine = { field = "m", label = "เพศชาย", generate_default = default_masculine, default_when_not_explicit = function(data, args) if data.orig_pos_category ~= "คำนามdefaulting" then return nil end local gender = get_masc_or_feminine_gender(data, "defaulting-if-feminine noun masculine") return gender == "f" end, } local noun_basic_inflections = { noun_field_cons, noun_field_inf, noun_field_obl, noun_field_def, } local noun_shared_inflections = { noun_field_dual, noun_field_plural, } local noun_extra_inflections = { noun_field_paucal, noun_field_feminine, noun_field_masculine, } local function get_noun_params() local params = {} add_gender_params(params) add_infl_list_params(params, noun_basic_inflections) add_infl_list_params(params, noun_shared_inflections) add_infl_list_params(params, noun_extra_inflections) params.nisba = boolean_param return params end local function handle_noun_args(data, args) handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl_list_args(data, args, noun_extra_inflections) for _, headobj in ipairs(data.heads) do if term_is_nisba(headobj.term, args.nisba) then insert(data.categories, "คำนามสัมพันธ์ (นิสบะฮ์) " .. langname) break end end end pos_functions["คำนาม"] = { params = get_noun_params, func = handle_noun_args, } pos_functions["คำนามdefaulting"] = { params = get_noun_params, func = function(data, args) data.pos_category = "คำนาม" handle_noun_args(data, args) end, } local noun_field_singulative = {field = "sing", label = "<<คำเอกนาม>>", defgender = "f", generate_default = default_feminine} local noun_field_collective = {field = "coll", label = "<<คำสมุหนาม>>", defgender = "m", generate_default = default_masculine} local function handle_sing_coll_noun_infls(data, args, otherinfl, otherlabel, othergender) -- Handle sing= (corresponding singulative noun) or coll= (corresponding collective noun) and their gender handle_infl(data, args, otherinfl, otherlabel, nil, othergender) handle_infl_list_args(data, args, sing_coll_noun_inflections) end local function get_singulative_collective_noun_params(defgender, otherinfl) local params = {} add_gender_params(params, defgender) add_infl_list_params(params, noun_basic_inflections) add_infl_params(params, otherinfl) add_infl_list_params(params, noun_shared_inflections) add_infl_params(params, "pauc") return params end pos_functions["คำสมุหนาม"] = { params = function() return get_singulative_collective_noun_params("m", "sing") end, func = function(data, args) data.pos_category = "คำนาม" insert(data.categories, "คำสมุหนาม" .. langname) m_headword_utilities.insert_fixed_inflection { headdata = data, label = "<<คำสมุหนาม>>", } handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl(data, args, noun_field_singulative) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_paucal) end } pos_functions["คำเอกนาม"] = { params = function() return get_singulative_collective_noun_params("f", "coll") end, func = function(data, args) data.pos_category = "คำนาม" insert(data.categories, "คำเอกนาม" .. langname) m_headword_utilities.insert_fixed_inflection { headdata = data, label = "<<คำเอกนาม>>", } handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl(data, args, noun_field_collective) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_paucal) end } -- FIXME: Do numerals really behave almost as nouns? They vary by masc/fem. pos_functions["เลข"] = { params = get_noun_params, func = function(data, args) insert(data.categories, "เลขเชิงการนับ" .. langname) handle_noun_args(data, args) end } pos_functions["คำวิสามานยนาม"] = { params = get_noun_params, func = handle_noun_args, } local function get_pronoun_params() local params = {} add_gender_params(params, defgender) add_infl_list_params(params, noun_basic_inflections) add_infl_list_params(params, noun_shared_inflections) add_infl_params(params, "f") return params end pos_functions["คำสรรพนาม"] = { params = get_pronoun_params, func = function(data, args) handle_gender(data, args) handle_infl_list_args(data, args, noun_basic_inflections) handle_infl_list_args(data, args, noun_shared_inflections) handle_infl(data, args, noun_field_feminine) end } ----------------------------------------------------------------------------------------- -- Non-lemma forms -- ----------------------------------------------------------------------------------------- local valid_forms = list_to_set( { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "Iq", "IIq", "IIIq", "IVq" }) -- FIXME: Partly duplicated in [[Module:ar-inflections]]. local function handle_conj_form(data, args) local form = args[2] if form then if not valid_forms[form] then error("Invalid verb conjugation form " .. form) end insert(data.inflections, { label = "[[ภาคผนวก:คำกริยาภาษาอาหรับ#รูป " .. form .. "|รูป " .. form .. "]]" }) end end pos_functions["รูปกริยา"] = { params = function() return { [2] = {}, } end, func = function(data, args) handle_conj_form(data, args) end } local function get_participle_params() local params = get_adj_params() params[2] = {} return params end pos_functions["รูปกริยาขยายกรรตุวาจก"] = { params = get_participle_params, func = function(data, args) data.pos_category = "รูปกริยาขยาย" insert(data.categories, "รูปกริยาขยายกรรตุวาจก" .. langname) handle_conj_form(data, args) handle_infl_list_args(data, args, adj_inflections) end } pos_functions["รูปกริยาขยายกรรมวาจก"] = { params = get_participle_params, func = function(data, args) data.pos_category = "รูปกริยาขยาย" insert(data.categories, "รูปกริยาขยายกรรมวาจก" .. langname) handle_conj_form(data, args) handle_infl_list_args(data, args, adj_inflections) end } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["คำกริยา"] = { head_is_not_1 = true, params = function() return { [1] = {}, -- Comma-separated lists with possible inline modifiers ["past"] = {}, ["past1s"] = {}, ["nonpast"] = {}, ["vn"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, } end, func = function(data, args) local ar_verb = require(ar_verb_module) local alternant_multiword_spec = args[1] ~= "-" and ar_verb.do_generate_forms(args, "ar-verb", data.pagename) or nil local function do_slot(slots_to_check, override, label, slot_is_headword) -- Do this even with an override so we can return the correct filled slot. local slot, slotval if alternant_multiword_spec then for _, potential_slot in ipairs(slots_to_check) do slotval = alternant_multiword_spec.forms[potential_slot] if slotval then slot = potential_slot break end end end local function get_slot_values() local terms = {} for _, form in ipairs(slotval) do local term = { term = form.form, id = form.id, genders = form.genders, pos = form.pos, lit = form.lit, } term.tr = form.translit if form.footnotes then local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(form.footnotes) term.q = quals term.refs = refs end insert(terms, term) end return terms end if override then local override_param_mods = { alt = {}, t = { -- [[Module:headword]] expects the gloss in "gloss". item_dest = "gloss", }, gloss = {}, g = { -- [[Module:headword]] expects the genders in "genders". item_dest = "genders", type = "genders", }, pos = {}, lit = {}, id = {}, -- Qualifiers and labels q = { type = "qualifier", }, qq = { type = "qualifier", }, l = { type = "labels", }, ll = { type = "labels", }, ref = { -- [[Module:headword]] expects the references in "refs". item_dest = "refs", type = "references", }, } local function generate_obj(formval, parse_err) if formval == "+" then return {term = "+", underlying_terms = get_slot_values()} end local val, uncertain = formval:match("^(.*)(%?)$") val = val or formval uncertain = not not uncertain local ar, translit = val:match("^(.*)//(.*)$") if not ar then ar = formval end local retval = {term = ar, uncertain = uncertain} retval.tr = translit end local terms if override:find("<") then terms = require(parse_utilities_module).parse_inline_modifiers(override, { paramname = paramname, param_mods = override_param_mods, generate_obj = generate_obj, splitchar = "[,،]", escape_fun = escape_comma_whitespace, unescape_fun = unescape_comma_whitespace, }) else terms = split_on_comma(override) for i, split in ipairs(terms) do terms[i] = generate_obj(split) end end -- See if + was supplied and we have to potentially flatten multiple default terms and harmonize -- default properties with override properties. local saw_underlying_terms = false for _, term in ipairs(terms) do if term.underlying_terms then saw_underlying_terms = true break end end if saw_underlying_terms then -- Flatten any default terms, copying the corresponding override properties over the default -- properties. Non-default terms get inserted directly. local flattened = {} for _, term in ipairs(terms) do if term.underlying_terms then for _, underlying in ipairs(term.underlying_terms) do for k, v in pairs(term) do if k ~= "term" and k ~= "underlying_terms" then if k == "uncertain" then underlying.uncertain = underlying.uncertain or v elseif type(v) ~= "table" or v[1] then -- Don't copy empty lists (which are the default) over possibly non-empty -- lists. underlying[k] = v end end end insert(flattened, underlying) end else insert(flattened, term) end end terms = flattened end if not slot_is_headword then terms.label = label end return terms, slot elseif not alternant_multiword_spec then return nil, slot else if not slotval then if slot_is_headword then -- FIXME, put "uncertain" as qualifier? Does this ever happen? return nil, slot elseif alternant_multiword_spec.slot_uncertain[slot] then return {label = label .. " uncertain"}, slot elseif alternant_multiword_spec.slot_explicitly_missing[slot] then return {label = "no " .. label}, slot else -- just say nothing about this slot return nil, slot end end local terms = get_slot_values() if not slot_is_headword then terms.label = label end return terms, slot end end local gloss_parts = {} for _, vform in ipairs(alternant_multiword_spec.verb_forms) do insert(gloss_parts, "[[Appendix:Arabic verbs#Form " .. vform .. "|" .. vform .. "]]") end if gloss_parts[1] then data.gloss = concat(gloss_parts, ", ") end if data.heads[1] and args.past then error("Can't specify both head= and past= to {{ar-verb}}; prefer past=") end if not alternant_multiword_spec.has_active then insert(data.inflections, {label = "passive-only"}) end -- Do this always so `past_slot` is correctly filled. local past, past_slot = do_slot(ar_verb.potential_lemma_slots, args.past, "-", "slot is headword") if data.heads[1] then -- user specified head=; don't override with past= or slot 'past_3sm' etc. else if past then data.heads = past end end local should_do_past1s = not not args.past1s if not should_do_past1s then local is_form_I = false for _, vform in ipairs(alternant_multiword_spec.verb_forms) do if vform == "I" then is_form_I = true break end end if is_form_I then require(inflection_utilities_module).map_word_specs(alternant_multiword_spec, function(base) if base.verb_form == "I" then for _, vowel_spec in ipairs(base.conj_vowels) do -- For form-I geminate verbs, the final vowel of the past is elided in the citation form. -- We want to display it for all cases other than active a~u and a~i (the most common -- cases). if vowel_spec.weakness == "geminate" then if ar_verb.is_passive_only(base.passive) then should_do_past1s = true break end local past_vowel = ar_verb.rget(vowel_spec.past) local nonpast_vowel = ar_verb.rget(vowel_spec.nonpast) if not (past_vowel == ar.A and (nonpast_vowel == ar.U or nonpast_vowel == ar.I)) then should_do_past1s = true break end end end -- FIXME, provide way of breaking early from map_word_specs(). end end) end end local past1s if should_do_past1s then past1s, _ = do_slot({"past_1s", "past_pass_1s"}, args.past1s, "บุรุษที่หนึ่งเอกพจน์อดีตกาล") if past1s then insert(data.inflections, past1s) end end local nonpast_slots if not past_slot or past_slot:find("^past_") then nonpast_slots = {"ind_3ms", "ind_pass_3ms", "imp_2ms"} else nonpast_slots = {} end local nonpast, _ = do_slot(nonpast_slots, args.nonpast, "ไม่ใช่อดีตกาล") if nonpast then insert(data.inflections, nonpast) end local vn, _ = do_slot({"vn"}, args.vn, "คำกริยานาม") if vn then insert(data.inflections, vn) end -- FIXME: Should we insert categories? Conjugation also does it and is more likely to be accurate. --for _, cat in ipairs(alternant_multiword_spec.categories) do -- insert(data.categories, cat) --end --[=[ -- FIXME: Review this to see if we need to port it. -- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to -- incorporate any links in that head into the 1= specification, use the infinitive generated by -- [[Module:pt-verb]] in place of the user-specified or auto-generated head. This was copied from -- [[Module:it-headword]], where doing this gets accents marked on the verb(s). We don't have accents marked on -- the verb but by doing this we do get any footnotes on the infinitive propagated here. Don't do this if the -- user gave multiple heads or gave a head with a multiword-linked verbal expression such as Italian -- '[[dare esca]] [[al]] [[fuoco]]' (FIXME: give Portuguese equivalent). if not data.user_specified_heads[1] or ( not data.user_specified_heads[2] and alternant_multiword_spec.incorporated_headword_head_into_lemma ) then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.infinitive_linked) do local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes) insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end ]=] end } ----------------------------------------------------------------------------------------- -- Generic parts of speech -- ----------------------------------------------------------------------------------------- pos_functions.head_with_gender = { params = function() return { [3] = {type = "genders"}, } end, func = function(data, args) handle_gender(data, args, "nonlemma", 3) end, } return export 1e744v5mn6bda9swd4kpefhlgwvbes6 มอดูล:category tree/รูปผัน 828 51422 5723277 5688013 2026-05-20T04:54:48Z OctraBot 3198 5723277 Scribunto text/plain local labels = {} local raw_categories = {} local en_utilities_module = "Module:en-utilities" local th_utilities_module = "Module:th-utilities" --th local unpack = unpack or table.unpack -- Lua 5.2 compatibility ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["รูปผัน"] = { description = "{{{langname}}} inflected forms of other [[Wiktionary:Lemmas|lemmas]], categorized by their part of speech.", umbrella_parents = "มูลฐาน", parents = {{name = "{{{langcat}}}", raw = true}}, } labels["non-lemma forms"] = labels["รูปผัน"] -- Handle specific types of non-lemma forms. Each spec is of the form {POS, PARENT_POS} where POS is the singular form -- of a part of speech for which non-lemma forms exist (e.g. 'determiner' is listed because 'determiner forms' exist), -- and PARENT_POS is the singular form of the parent category to add the category to. For example, the spec -- {"circumfix", "morpheme"} means that 'circumfix forms' categories have the corresponding 'morpheme forms' categories -- as their first parent. The second parent is the POS itself; e.g. 'morpheme forms' has 'morphemes' as its second -- parent, with a sort key that places 'morpheme forms' at the beginning of the child categories. If PARENT_POS is -- 'false', only the second parent appears as the parent. If a spec is a single string POS, the PARENT_POS defaults to -- "non-lemma"; e.g. if the spec is "adjective", then 'adjective forms' categories have the corresponding -- 'non-lemma forms' category as their first parent. for _, spec in ipairs { "คำคุณศัพท์", "คำกริยาวิเศษณ์", {"คำกำกับนาม", "ตัวกำหนด"}, {"หน่วยคำเติมคร่อม", "หน่วยคำเติม"}, "คำลักษณนาม", {"คำคุณศัพท์ขั้นกว่า", false}, {"คำกริยาวิเศษณ์ขั้นกว่า", false}, {"ตัวกำหนดขั้นกว่า", false}, {"คำสรรพนามขั้นกว่า", false}, "คำสันธาน", "ตัวกำหนด", {"คำคุณศัพท์ขั้นเท่า", false}, {"คำกริยาวิเศษณ์ขั้นเท่า", false}, {"exaggerated adjective", false}, {"คำคุณศัพท์ขั้นเกิน", false}, {"รูปกริยากลาง", false}, "คำอุทาน", "หน่วยคำเติม", "คำนาม", "เลข", "รูปกริยาขยาย", "คำอนุภาค", {"รูปกริยาขยายอดีตกาล", "รูปกริยาขยาย"}, "predicative", {"อุปสรรค", "หน่วยคำเติม"}, "คำวิสามานยนาม", "คำปัจฉบท", "คำบุพบท", "คำสรรพนาม", {"ปัจจัย", "หน่วยคำเติม"}, "คำกริยา", {"คำคุณศัพท์ขั้นสุด", false}, {"คำกริยาวิเศษณ์ขั้นสุด", false}, {"ตัวกำหนดขั้นสุด", false}, {"คำสรรพนามขั้นสุด", false}, } do local pos, parent_pos if type(spec) == "table" then pos, parent_pos = unpack(spec) else pos = spec parent_pos = "รูปผัน" end local plpos = --[[require(en_utilities_module).pluralize(pos)]] pos local parents = {} if parent_pos ~= false then --table.insert(parents, parent_pos .. " forms") local parent_pos_form = require(th_utilities_module).th_pos_to_form(parent_pos) table.insert(parents, parent_pos_form) end table.insert(parents, {name = plpos, sort = "**"}) local pos_form = require(th_utilities_module).th_pos_to_form(plpos) --labels[pos .. " forms"] = { labels[pos_form] = { description = ("{{{langname}}} %s that are inflected to display grammatical relations other than the main form."):format(plpos), parents = parents, } end labels["รูปกริยาขยายกรรตุวาจก"] = { description = "{{{langname}}} participles that express an agent actively performing an action.", parents = {"รูปกริยาขยาย"}, } labels["active participles"] = labels["รูปกริยาขยายกรรตุวาจก"] labels["รูปกริยาขยายเชิงคุณศัพท์กรรตุวาจก"] = { description = "{{{langname}}} participles that function as adjectives and express an agent actively performing an action.", parents = {"รูปกริยาขยาย", "คำคุณศัพท์"}, } labels["active adjectival participles"] = labels["รูปกริยาขยายเชิงคุณศัพท์กรรตุวาจก"] labels["รูปกริยาขยายเชิงคุณศัพท์"] = { description = "{{{langname}}} participles that function as adjectives.", parents = {"รูปกริยาขยาย", "คำคุณศัพท์"}, } labels["adjectival participles"] = labels["รูปกริยาขยายเชิงคุณศัพท์"] labels["adjective construct forms"] = { description = "{{{langname}}} adjectives that are inflected to modify a noun in a genitive construction.", parents = {{name = "รูปคุณศัพท์", sort = "construct"}}, } labels["รูปคุณศัพท์ชี้เฉพาะ"] = { description = "{{{langname}}} adjectives that are inflected to give attributes to specific and identifiable nouns.", parents = {{name = "รูปคุณศัพท์", sort = "ชี้เฉพาะ"}}, } labels["adjective definite forms"] = labels["รูปคุณศัพท์ชี้เฉพาะ"] labels["รูปคุณศัพท์ทวิพจน์"] = { description = "{{{langname}}} adjectives that are inflected to be quantified as two.", parents = {{name = "รูปคุณศัพท์", sort = "ทวิพจน์"}}, } labels["adjective dual forms"] = labels["รูปคุณศัพท์ทวิพจน์"] labels["รูปคุณศัพท์เพศหญิง"] = { description = "{{{langname}}} adjectives that are inflected to give attributes to nouns associated to female beings.", parents = {{name = "รูปคุณศัพท์", sort = "หญิง"}}, } labels["adjective feminine forms"] = labels["รูปคุณศัพท์เพศหญิง"] labels["รูปกริยาขยายเชิงกริยาวิเศษณ์"] = { description = "{{{langname}}} participles that function as adverbs.", parents = {"รูปกริยาขยาย", "คำกริยาวิเศษณ์"}, } labels["adverbial participles"] = labels["รูปกริยาขยายเชิงกริยาวิเศษณ์"] labels["agent participles"] = { description = "{{{langname}}} participles that express an agent by who something is done.", parents = {"รูปกริยาขยาย"}, } labels["anterior adverbial participles"] = { description = "{{{langname}}} participles that function as adverbs and express an action completed before the one expressed by the primary verb.", parents = {"รูปกริยาขยาย", "คำกริยาวิเศษณ์"}, } labels["รูปลักษณนามเอกพจน์"] = { description = "{{{langname}}} classifiers that are inflected for singular number.", parents = {"รูปลักษณนาม"}, } labels["classifier singular forms"] = labels["รูปลักษณนามเอกพจน์"] labels["collective plurals"] = { description = "{{{langname}}} nominal plural forms with specifically collective semantics.", parents = {"รูปนาม"}, } labels["elative adjectives"] = { description = "{{{langname}}} adjectives that express attributes in a relatively higher degree, or in the highest possible degree.", parents = {"รูปคุณศัพท์"}, } labels["contemporary adverbial participles"] = { description = "{{{langname}}} participles that function as adverbs and express an action occuring simultaneously with the one expressed by the primary verb.", parents = {"รูปกริยาขยาย", "คำกริยาวิเศษณ์"}, } labels["converbs"] = { description = "{{{langname}}} verb forms that build clauses which function as adverbials.", parents = {"รูปกริยา"}, } for _, pos in ipairs { "คำคุณศัพท์", "คำกริยาวิเศษณ์", "ตัวกำหนด", "คำสรรพนาม" } do local plpos = pos --.. "s" local pos_form = require(th_utilities_module).th_pos_to_form(plpos) labels[plpos .. "ขั้นกว่า"] = { description = "{{{langname}}} " .. plpos .. " that express attributes in a relatively higher degree, or serve to set apart one thing from another.", parents = {pos_form}, } end labels["determiner comparative forms"] = { description = "{{{langname}}} determiners that are inflected to display relative degrees of given qualities between nouns.", parents = {{name = "รูปตัวกำหนด", sort = "รูปขั้นกว่า"}}, } labels["รูปกริยาเป็นนามบอกความเล็ก"] = { description = "{{{langname}}} diminutives of gerunds.", parents = {"รูปกริยา"}, } labels["diminutive gerunds"] = labels["รูปกริยาเป็นนามบอกความเล็ก"] labels["คำคุณศัพท์ขั้นเท่า"] = { description = "{{{langname}}} adjectives that express similar degrees of given qualities between nouns, i.e. '''A''' is as ''(insert adjective)'' as '''B'''.", parents = {"รูปคุณศัพท์"}, } labels["equative adjectives"] = labels["คำคุณศัพท์ขั้นเท่า"] labels["คำกริยาวิเศษณ์ขั้นเท่า"] = { description = "{{{langname}}} adverbs that express similar degrees of given qualities between verbs, i.e. '''A''' as ''(insert adverb)'' as '''B'''.", parents = {"รูปกริยาวิเศษณ์"}, } labels["equative adverbs"] = labels["คำกริยาวิเศษณ์ขั้นเท่า"] labels["exaggerated adjectives"] = { description = "{{{langname}}} adjectives that express attributes in an even more magnified degree than the superlative forms.", parents = {"รูปคุณศัพท์"}, } labels["คำคุณศัพท์ขั้นเกิน"] = { description = "{{{langname}}} adjectives that express attributes in an excessive degree.", parents = {"รูปคุณศัพท์"}, } labels["excessive adjectives"] = labels["คำคุณศัพท์ขั้นเกิน"] labels["คำกริยาวิเศษณ์ขั้นเกิน"] = { description = "{{{langname}}} adverbs that express attributes in an excessive degree.", parents = {"รูปกริยาวิเศษณ์"}, } labels["excessive adverbs"] = labels["คำกริยาวิเศษณ์ขั้นเกิน"] labels["รูปคุณศัพท์ขยาย"] = { parents = {"รูปคุณศัพท์"}, } labels["extended adjective forms"] = labels["รูปคุณศัพท์ขยาย"] labels["รูปกริยาขยายกรรตุวาจกอนาคตกาล"] = { description = "{{{langname}}} participles that express an agent actively performing an action in future time.", parents = {"รูปกริยาขยาย"}, } labels["future active participles"] = labels["รูปกริยาขยายกรรตุวาจกอนาคตกาล"] labels["รูปกริยาขยายอนาคตกาล"] = { description = "{{{langname}}} participles that indicate future events.", parents = {"รูปกริยาขยาย"}, } labels["future participles"] = labels["รูปกริยาขยายอนาคตกาล"] labels["รูปกริยาขยายกรรมวาจกอนาคตกาล"] = { description = "{{{langname}}} participles that express a patient having an action performed on it in future time.", parents = {"รูปกริยาขยาย"}, } labels["future passive participles"] = labels["รูปกริยาขยายกรรมวาจกอนาคตกาล"] local function gerund_description(data) local default_text = "{{{langname}}} verbs that are conjugated to indicate ongoing events at unspecified moments." if not data.lang then -- This happens e.g. in [[:Category:Gerunds by language]]. return default_text else local langcode = data.lang:getCode() if langcode == "sq" or langcode == "kmr" or langcode == "liv" or data.lang:inFamily("gem", "itc") then return "{{{langname}}} forms that generally act as an action noun for the verb that they are formed from." elseif langcode == "sa" or langcode == "pi" then return "{{{langname}}} verb forms used in a clause to indicate a prior action by the subject of the sentence." else return default_text end end end labels["รูปกริยาเป็นนาม"] = { description = gerund_description, additional = "{{small|[Edit function gerund_description() in [[Module:category tree/non-lemma forms]] to change this description.]}}", parents = {"รูปกริยา"}, } labels["gerunds"] = labels["รูปกริยาเป็นนาม"] labels["imperfect participles"] = { description = "{{{langname}}} participles that express an ongoing or continuous action.", parents = {"รูปกริยาขยาย"}, } labels["รูปกริยากลาง"] = { description = "{{{langname}}} non-finite verb forms of various kinds.", parents = {"รูปกริยา"}, } labels["infinitives"] = labels["รูปกริยากลาง"] labels["intensive adjectives"] = { description = "{{{langname}}} adjectives that are derived from a base word to express a stronger concept than the base word.", parents = {"รูปคุณศัพท์"}, } labels["manuscript forms"] = { description = "{{{langname}}} words as they appear in original manuscripts.", parents = {"รูปผัน"}, } labels["รูปกลาย"] = { description = "{{{langname}}} terms whose initial consonant is mutated due to the effect of the preceding word.", parents = {"รูปผัน"}, } labels["mutated forms"] = labels["รูปกลาย"] local inflected_pos_for_mutation = { "คำคุณศัพท์", "คำกริยาวิเศษณ์", "ตัวกำหนด", "คำอุทาน", "คำนาม", "เลข", "รูปกริยาขยาย", "คำอนุภาค", "คำอุปสรรค", "คำบุพบท", "คำสรรพนาม", "คำวิสามานยนาม", "คำกริยา", } for _, pos in ipairs(inflected_pos_for_mutation) do local plpos = --[[require("Module:string utilities").pluralize(pos)]] pos local pos_form = require(th_utilities_module).th_pos_to_form(plpos) labels[pos_form .. "กลาย"] = { description = "{{{langname}}} " .. plpos .. " whose initial consonant is mutated due to the effect of the preceding word.", parents = {pos_form, {name = "รูปกลาย", sort = pos}}, } end local mutation_types = { -- FIXME, we should add these terms to [[Appendix:Glossary]] and link to them. ["eclipsed"] = "[[Appendix:Irish mutations#Eclipsis|eclipsis]]", ["lenited"] = "[[Appendix:Irish mutations#Lenition|lenition]]", ["h-prothesized"] = "[[h-prothesis]]", ["t-prothesized"] = "[[t-prothesis]]", ["aspirate-mutation"] = "[[aspirate mutation]]", ["hard-mutation"] = "[[hard mutation]]", ["mixed-mutation"] = "[[mixed mutation]]", ["nasal-mutation"] = "[[nasal mutation]]", ["soft-mutation"] = "[[soft mutation]]", } for muttype, desc in pairs(mutation_types) do labels["รูปกลาย" .. muttype] = { description = "{{{langname}}} terms whose initial consonant is mutated through " .. desc .. ", due to the effect of the preceding word.", parents = {"รูปกลาย"}, } end labels["negative participles"] = { description = "{{{langname}}} participles that express lack of an action being performed.", parents = {"รูปกริยาขยาย"}, } labels["รูปกริยาขยายเชิงนาม"] = { description = "{{{langname}}} participles that function as nouns.", parents = {"รูปกริยาขยาย", "คำนาม"}, } labels["nominal participles"] = labels["รูปกริยาขยายเชิงนาม"] labels["noun construct forms"] = { description = "{{{langname}}} nouns that are inflected to modify a noun in a genitive construction.", parents = {{name = "รูปนาม", sort = "construct"}}, } labels["รูปนามชี้เฉพาะ"] = { description = "{{{langname}}} nouns that are inflected to designate an identified object.", parents = {{name = "รูปนาม", sort = "ชี้เฉพาะ"}}, } labels["noun definite forms"] = labels["รูปนามชี้เฉพาะ"] labels["รูปนามเพศหญิง"] = { description = "{{{langname}}} nouns that are inflected to be associated to female beings.", parents = {{name = "รูปนาม", sort = "หญิง"}}, } labels["noun feminine forms"] = labels["รูปนามเพศหญิง"] labels["รูปนามไม่ชี้เฉพาะ"] = { description = "{{{langname}}} nouns that are inflected to designate an unidentified object.", parents = {{name = "รูปนาม", sort = "ไม่ชี้เฉพาะ"}}, } labels["noun indefinite forms"] = labels["รูปนามไม่ชี้เฉพาะ"] labels["รูปนามเพศชาย"] = { description = "{{{langname}}} nouns that are inflected to be associated to male beings.", parents = {{name = "รูปนาม", sort = "masculine"}}, } labels["noun masculine forms"] = labels["รูปนามเพศชาย"] labels["รูปนามบอกความน้อย"] = { description = "{{{langname}}} nouns that are inflected to be quantified as between two (or three in some languages with dual number) and ten.", parents = {{name = "รูปนาม", sort = "ตัวบอกความน้อย"}}, } labels["noun paucal forms"] = labels["รูปนามบอกความน้อย"] labels["noun possessive forms"] = { description = "{{{langname}}} nouns that are inflected to indicate possession.", parents = {{name = "รูปนาม", sort = "possessive"}}, } labels["รูปกริยาขยาย"] = { description = "{{{langname}}} verbal forms that behave syntactically like adjectives (or sometimes adverbs), and in some languages are often used in compound conjugations and/or reduced relative clauses.", parents = {"รูปกริยา"}, } labels["participles"] = labels["รูปกริยาขยาย"] labels["รูปกริยาขยายกรรมวาจก"] = { description = "{{{langname}}} participles that express a patient having an action performed on it.", parents = {"รูปกริยาขยาย"}, } labels["passive participles"] = labels["รูปกริยาขยายกรรมวาจก"] labels["รูปกริยาขยายเชิงคุณศัพท์กรรมวาจก"] = { description = "{{{langname}}} participles that function as adjectives and express a patient having an action performed on it.", parents = {"รูปกริยาขยาย", "คำคุณศัพท์"}, } labels["passive adjectival participles"] = labels["รูปกริยาขยายเชิงคุณศัพท์กรรมวาจก"] labels["past active aorist participles"] = { description = "{{{langname}}} participles that express completed events in past time.", parents = {"รูปกริยาขยาย"}, } labels["past active imperfect participles"] = { description = "{{{langname}}} participles that express ongoing events in past time.", parents = {"รูปกริยาขยาย"}, } labels["รูปกริยาขยายกรรตุวาจกอดีตกาล"] = { description = "{{{langname}}} participles that express an agent actively performing an action in past time.", parents = {"รูปกริยาขยาย"}, } labels["past active participles"] = labels["รูปกริยาขยายกรรตุวาจกอดีตกาล"] labels["รูปกริยาขยายเชิงกริยาวิเศษณ์อดีตกาล"] = { description = "{{{langname}}} participles that function as adverbs and express actions in past time.", parents = {"รูปกริยาขยายเชิงกริยาวิเศษณ์", "คำกริยาวิเศษณ์"}, } labels["past adverbial participles"] = labels["รูปกริยาขยายเชิงกริยาวิเศษณ์อดีตกาล"] labels["รูปกริยาขยายอดีตกาล"] = { description = "{{{langname}}} participles that express actions in past time.", parents = {"รูปกริยาขยาย"}, } labels["past participles"] = labels["รูปกริยาขยายอดีตกาล"] labels["รูปกริยาขยายกรรมวาจกอดีตกาล"] = { description = "{{{langname}}} participles that express a patient having an action performed on it in past time.", parents = {"รูปกริยาขยาย"}, } labels["past passive participles"] = labels["รูปกริยาขยายกรรมวาจกอดีตกาล"] labels["perfect participles"] = { description = "{{{langname}}} participles that express having completed or undergone an action.", parents = {"รูปกริยาขยาย"}, } labels["perfect active participles"] = { description = "{{{langname}}} participles that express an agent having completed an action.", parents = {"รูปกริยาขยาย"}, } labels["prepositional pronouns"] = { description = "{{{langname}}} pronouns that are combined with a preposition.", umbrella_parents = "Lemmas subcategories by language", parents = {"รูปสรรพนาม", {name = "คำบุพบท", sort = "คำสรรพนาม"}}, } labels["รูปกริยาขยายกรรตุวาจกปัจจุบันกาล"] = { description = "{{{langname}}} participles that express an agent actively performing an action in present time.", parents = {"รูปกริยาขยาย"}, } labels["present active participles"] = labels["รูปกริยาขยายกรรตุวาจกปัจจุบันกาล"] labels["รูปกริยาขยายเชิงกริยาวิเศษณ์ปัจจุบันกาล"] = { description = "{{{langname}}} participles that function as adverbs and express actions in present time.", parents = {"รูปกริยาขยายเชิงกริยาวิเศษณ์", "คำกริยาวิเศษณ์"}, } labels["present adverbial participles"] = labels["รูปกริยาขยายเชิงกริยาวิเศษณ์ปัจจุบันกาล"] labels["present middle participles"] = { description = "{{{langname}}} participles that express an agent performing an action in present time in middle voice.", parents = {"รูปกริยาขยาย"}, } labels["รูปกริยาขยายปัจจุบันกาล"] = { description = "{{{langname}}} participles that express actions occurring in the present time.", parents = {"รูปกริยาขยาย"}, } labels["present participles"] = labels["รูปกริยาขยายปัจจุบันกาล"] labels["รูปกริยาขยายกรรมวาจกปัจจุบันกาล"] = { description = "{{{langname}}} participles that express a patient having an action performed on it in present time.", parents = {"รูปกริยาขยาย"}, } labels["present passive participles"] = labels["รูปกริยาขยายกรรมวาจกปัจจุบันกาล"] labels["pronoun possessive forms"] = { description = "{{{langname}}} pronouns that are inflected to indicate possession.", parents = {{name = "รูปสรรพนาม", sort = "possessive"}}, } labels["pronunciation variants"] = { description = "{{{langname}}} words that have alternative pronunciation-based spellings.", parents = {"รูปผัน"}, } labels["singulatives"] = { description = "{{{langname}}} plural nouns that are inflected for singular number.", parents = {"รูปนาม"}, } for _, pos in ipairs { "คำคุณศัพท์", "คำกริยาวิเศษณ์", "ตัวกำหนด", "คำสรรพนาม" } do local plpos = pos --.. "s" local pos_form = require(th_utilities_module).th_pos_to_form(plpos) labels[plpos .. "ขั้นสุด"] = { description = "{{{langname}}} " .. plpos .. " that express attributes in their highest possible degrees.", parents = {pos_form}, } end labels["verb causative forms"] = { description = "{{{langname}}} verbs that are conjugated to express actions caused by external conditions.", parents = {{name = "รูปกริยา", sort = "causative"}}, } labels["verb irregular forms"] = { description = "{{{langname}}} verb forms that don't follow standard patterns of conjugation.", parents = {{name = "รูปกริยา", sort = "irregular"}}, } labels["verb negative forms"] = { description = "{{{langname}}} verbs that are conjugated to express negation.", parents = {{name = "รูปกริยา", sort = "negative"}}, } labels["verb passive forms"] = { description = "{{{langname}}} verbs that are conjugated to direct the action to the grammatical subject, by means of passive voice.", parents = {{name = "รูปกริยา", sort = "passive"}}, } labels["verb simple past forms"] = { description = "{{{langname}}} verbs that are conjugated to indicate events before the current moment.", parents = {{name = "รูปกริยา", sort = "simple past"}}, } local labels2 = {} -- Add "reconstructed" subcategories; add 'umbrella_parents' key if not -- already present. for key, data in pairs(labels) do labels2[key] = data if not data.umbrella_parents then data.umbrella_parents = "หมวดหมู่ย่อยของรูปผันแบ่งตามภาษา" end labels2[key .. "ที่สืบสร้าง"] = { description = "{{{langname}}} " .. key .. " that have been linguistically [[Wiktionary:Reconstructed terms|reconstructed]].", umbrella_parents = "หมวดหมู่ย่อยของรูปผันแบ่งตามภาษา", parents = {key, {name = "ศัพท์ที่สืบสร้าง", sort = key}} } end -- These are top-level; don't (for the moment at least) add 'reconstructed alternative forms'. -- These are created by setting the altform= parameter to {{head}} or full_headword() in [[Module:headword]]. See -- [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] for discussion. labels2["รูปแบบอื่น"] = { description = "{{{langname}}} alternative forms of [[Wiktionary:Lemmas|lemmas]], i.e. variant forms or spellings that are attested but secondary, and typically not in common use.", additional = "Such terms may be uncommon spelling variants; dialectal forms; historical, archaic or obsolete spellings; spellings in less-used scripts; or the like. " .. "They are kept out of the lemma category to avoid cluttering it. Commonly used variants should not be placed in this category, but should be treated as lemmas.", umbrella_parents = "มูลฐาน", parents = {{name = "{{{langcat}}}", raw = true}}, } labels2["alternative forms"] = labels2["รูปแบบอื่น"] ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["หมวดหมู่ย่อยของรูปผันแบ่งตามภาษา"] = { description = "Umbrella categories covering topics related to non-lemma forms.", additional = "{{{umbrella_meta_msg}}}", parents = { "หมวดหมู่ใหญ่รวมหัวข้อ", {name = "รูปผัน", is_label = true, sort = " "}, }, } return {LABELS = labels2, RAW_CATEGORIES = raw_categories} ekzhivlf4s8y3gchzga1x354rf8792u แม่แบบ:ar-root 10 144345 5723268 511731 2026-05-20T04:38:06Z OctraBot 3198 5723268 wikitext text/x-wiki {{#invoke:sem-arb-utilities|root|lang=ar|plain=true}}<noinclude>{{documentation}}</noinclude> iikovjqcrd38omyf9t2xqjiby9j55kt มอดูล:ar-utilities 828 144346 5723266 1608771 2026-05-20T04:01:56Z OctraBot 3198 5723266 Scribunto text/plain local export = {} local m_utilities = require("Module:utilities") local lang = require("Module:languages").getByCode("ar") local sc = require("Module:scripts").getByCode("Arab") local rfind = mw.ustring.find local rsubn = mw.ustring.gsub local u = require("Module:string/char") local consonants = "[بتثجحخدذرزسشصضطظعغقفلكمنهويء]" -- version of rsubn() that discards all but the first return value function export.rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local rsub = export.rsub -- synthesize a frame so that exported functions meant to be called from -- templates can be called from the debug console. function export.debug_frame(parargs, args) return { args = args, getParent = function() return { args = parargs } end } end function export.catfix() return m_utilities.catfix(lang, sc) end --------------------------- diacritics, letters and combinations ------------------------------ -- hamza variants local HAMZA = u(0x0621) -- hamza on the line (stand-alone hamza) = ء local HAMZA_ON_ALIF = u(0x0623) local HAMZA_ON_WAW = u(0x0624) local HAMZA_UNDER_ALIF = u(0x0625) local HAMZA_ON_YA = u(0x0626) local HAMZA_PH = u(0xFFF0) -- hamza placeholder export.HAMZA = HAMZA export.HAMZA_ON_ALIF = HAMZA_ON_ALIF export.HAMZA_ON_WAW = HAMZA_ON_WAW export.HAMZA_UNDER_ALIF = HAMZA_UNDER_ALIF export.HAMZA_ON_YA = HAMZA_ON_YA export.HAMZA_PH = HAMZA_PH -- diacritics local A = u(0x064E) -- fatḥa local AN = u(0x064B) -- fatḥatān (fatḥa tanwīn) local U = u(0x064F) -- ḍamma local UN = u(0x064C) -- ḍammatān (ḍamma tanwīn) local I = u(0x0650) -- kasra local IN = u(0x064D) -- kasratān (kasra tanwīn) local SK = u(0x0652) -- sukūn = no vowel local SH = u(0x0651) -- šadda = gemination of consonants local DAGGER_ALIF = u(0x0670) -- Pattern matching any diacritics that may be on a consonant other than shadda local DIACRITIC_ANY_BUT_SH = "[" .. A .. I .. U .. AN .. IN .. UN .. SK .. DAGGER_ALIF .. "]" -- Pattern matching short vowels local AIU = "[" .. A .. I .. U .. "]" -- Pattern matching any diacritics that may be on a consonant local DIACRITIC = SH .. "?" .. DIACRITIC_ANY_BUT_SH export.A = A export.AN = AN export.U = U export.UN = UN export.I = I export.IN = IN export.SK = SK export.SH = SH export.DAGGER_ALIF = DAGGER_ALIF -- Pattern matching any diacritics that may be on a consonant other than shadda export.DIACRITIC_ANY_BUT_SH = DIACRITIC_ANY_BUT_SH -- Pattern matching short vowels export.AIU = AIU -- Pattern matching any diacritics that may be on a consonant export.DIACRITIC = DIACRITIC -- various letters and signs local ALIF = u(0x0627) -- ʾalif = ا local ALIF_WASLA = u(0x0671) -- ʾalif waṣla = hamzatu l-waṣl = ٱ local AMAQ = u(0x0649) -- ʾalif maqṣūra = ى local AMAD = u(0x0622) -- ʾalif madda = آ local TAM = u(0x0629) -- tāʾ marbūṭa = ة local WAW = u(0x0648) -- wāw = و local W = WAW local YA = u(0x064A) -- yā = ي local Y = YA local T = u(0x062A) -- tāʾ = ت local HYPHEN = u(0x0640) local N = u(0x0646) -- nūn = ن local LRM = u(0x200E) -- left-to-right mark export.ALIF = ALIF export.ALIF_WASLA = ALIF_WASLA export.AMAQ = AMAQ export.AMAD = AMAD export.TAM = TAM export.WAW = WAW export.W = W export.YA = YA export.Y = Y export.T = T export.HYPHEN = HYPHEN export.N = N export.LRM = LRM -- common combinations local AW = A .. W -- diphthong, construct state of some final-weak nouns, 3sm past of some final-weak verbs, etc. local AY = A .. Y -- diphthong, construct state of most final-weak nouns, 3sm past of most final-weak verbs, etc. local IY = I .. Y -- equivalent to long ī local UW = U .. W -- equivalent to long ū local AA = A .. ALIF -- long ā local AAMAQ = A .. AMAQ -- vocalized ʾalif maqṣūra local II = IY -- long ī local IIN = IY .. N -- short strong masculine oblique plural ending local IINA = IIN .. A -- full strong msaculine oblique plural ending local UU = UW -- long ū local UUN = UU .. N -- short strong masculine nominative plural ending local UUNA = UUN .. A -- full strong masculine nominative plural ending local AWN = AW .. SK .. N -- short verbal ending of some final-weak verbs local AWNA = AWN .. A -- full verbal ending of some final-weak verbs local AYN = AY .. SK .. N -- short oblique dual ending, verbal ending of some final-weak verbs local AYNI = AYN .. I -- full oblique dual ending local AYNA = AYN .. A -- full verbal ending of some final-weak verbs local AAN = AA .. N -- short nominative dual ending local AANI = AAN .. I -- full nominative dual ending local UNU = "[" .. UN .. U .. "]" -- matches nominative singular of strong masculine triptotes and diptotes local UNUOPT = UNU .. "?" -- optional equivalent of UNU, for short forms local AH = A .. TAM -- feminine ending local AAH = AA .. TAM -- final-weak feminine ending local AAT = AA .. T -- short strong feminine plural ending local AATUN = AAT .. UN -- full strong nominative feminine plural ending local IYAH = I .. Y .. AH -- ending of some final-weak feminines local AYAAT = AY .. AAT -- final-weak plural ending local AYAAN = AY .. AAN -- final-weak dual ending local IYAAT = IY .. AAT -- final-weak plural ending local IYAAN = IY .. AAN -- final-weak dual ending local IYY = IY .. SH -- masculine nisba ending local IYYAH = IY .. SH .. AH -- feminine nisba ending local ATAAN = A .. T .. AAN -- feminine dual ending local AATAAN = AAT .. AAN -- final-weak feminine dual ending -- other possibilities (currently found in verb module): -- AT, AYSK, AWSK, N, NA, NI, M, MA, MU, TA, TU, _I = ALIF .. I, _U = ALIF .. U export.AW = AW export.AY = AY export.IY = IY export.UW = UW export.AA = AA export.AAMAQ = AAMAQ export.II = II export.IIN = IIN export.IINA = IINA export.UU = UU export.UUN = UUN export.UUNA = UUNA export.AWN = AWN export.AWNA = AWNA export.AYN = AYN export.AYNI = AYNI export.AYNA = AYNA export.AAN = AAN export.AANI = AANI export.UNU = UNU export.UNUOPT = UNUOPT export.AH = AH export.AAH = AAH export.AAT = AAT export.AATUN = AATUN export.IYAH = IYAH export.AYAAT = AYAAT export.AYAAN = AYAAN export.IYAAT = IYAAT export.IYAAN = IYAAN export.IYY = IYY export.IYYAH = IYYAH export.ATAAN = ATAAN export.AATAAN = AATAAN function export.reorder_shadda(text) -- shadda+short-vowel (including tanwīn vowels, i.e. -an -in -un) gets -- replaced with short-vowel+shadda during NFC normalisation, which -- MediaWiki does for all Unicode strings; however, it makes the -- detection process inconvenient, so undo it. (For example, the code in -- remove_in would fail to detect the -in in مُتَرَبٍّ because the shadda -- would come after the -in.) text = rsub(text, "(" .. DIACRITIC_ANY_BUT_SH .. ")" .. SH, SH .. "%1") return text end function export.undo_reorder_shadda(text) return mw.ustring.toNFC(text) end --------------------------- hamza processing ------------------------------ local hamza_subs = { --------------------------- handle initial hamza -------------------------- -- put initial hamza on a seat according to following vowel. { "^" .. HAMZA_PH .. "([" .. I .. YA .. "])", HAMZA_UNDER_ALIF .. "%1" }, { " " .. HAMZA_PH .. "([" .. I .. YA .. "])", " " .. HAMZA_UNDER_ALIF .. "%1" }, { "^" .. HAMZA_PH, HAMZA_ON_ALIF }, -- if no vowel, assume a { " " .. HAMZA_PH, " " .. HAMZA_ON_ALIF }, -- if no vowel, assume a ----------------------------- handle final hamza -------------------------- -- "final" hamza may be followed by a short vowel or tanwīn sequence -- use a previous short vowel to get the seat { "(" .. AIU .. ")(" .. HAMZA_PH .. ")(" .. DIACRITIC .. "?)$", function(v, ham, diacrit) ham = v == I and HAMZA_ON_YA or v == U and HAMZA_ON_WAW or HAMZA_ON_ALIF return v .. ham .. diacrit end }, { "(" .. AIU .. ")(" .. HAMZA_PH .. ")(" .. DIACRITIC .. "? )", function(v, ham, diacrit) ham = v == I and HAMZA_ON_YA or v == U and HAMZA_ON_WAW or HAMZA_ON_ALIF return v .. ham .. diacrit end }, -- else hamza is on the line { HAMZA_PH .. "(" .. DIACRITIC .. "?)$", HAMZA .. "%1" }, ---------------------------- handle medial hamza -------------------------- -- if long vowel or diphthong precedes, we need to ignore it. { "([" .. AMAD .. ALIF .. WAW .. YA .. "]" .. SK .. "?)(" .. HAMZA_PH .. ")(" .. SH .. "?)([^ ])", function(prec, ham, shad, v2) ham = (v2 == I or v2 == YA) and HAMZA_ON_YA or (v2 == U or v2 == WAW) and HAMZA_ON_WAW or rfind(prec, YA) and HAMZA_ON_YA or HAMZA return prec .. ham .. shad .. v2 end }, -- otherwise, seat of medial hamza relates to vowels on one or both sides. { "([^ ])(" .. HAMZA_PH .. ")(" .. SH .. "?)(" .. AN .. "?[^ ])", function(v1, ham, shad, v2) ham = (v1 == I or v2 == I or v2 == YA) and HAMZA_ON_YA or (v1 == U or v2 == U or v2 == WAW) and HAMZA_ON_WAW or -- special exception for the accusative ending, in words like -- جُزْءًا (juzʾan). By the rules of Thackston pp. 281-282 a -- hamza-on-alif should appear, but that would result in -- two alifs in a row, which is generally forbidden. -- According to Haywood/Nahmad pp. 114-115, after sukūn before -- the accusative ending (including when a pronominal suffix -- follows) hamza is written on yāʾ if the previous letter -- is connecting, else on the line. The only examples they -- give involve preceding non-connecting z (جُزْءًا juzʾan and -- (جُزْءَهُ juzʾahu) and preceding diphthongs, with the only -- connecting letter being yāʾ, where we have hamza-on-yāʾ -- anyway by the preceding regexp. Haywood/Nahmad's rule seems -- too complicated, and since it conflicts with Thackston, -- we only implement the case where otherwise two alifs would -- appear with the indefinite accusative ending. v2 == AN .. ALIF and HAMZA or HAMZA_ON_ALIF return v1 .. ham .. shad .. v2 end }, --------------------------- handle alif madda ----------------------------- { HAMZA_ON_ALIF .. A .. "?" .. ALIF, AMAD }, ----------------------- catch any remaining hamzas ------------------------ { HAMZA_PH, HAMZA } } function export.process_hamza(term) -- convert HAMZA_PH into appropriate hamza seat for _, sub in ipairs(hamza_subs) do term = rsub(term, sub[1], sub[2]) end -- sequence of hamza-on-wāw + wāw is problematic and leads to a preferred -- alternative with some other type of hamza, as well as the original -- sequence; sequence of wāw + hamza-on-wāw + wāw is especially problematic -- and leads to two different alternatives with the original sequence not -- one of them if rfind(term, WAW .. "ؤُو") then return { rsub(term, WAW .. "ؤُو", WAW .. "ئُو"), rsub(term, WAW .. "ؤُو", WAW .. "ءُو") } elseif rfind(term, YA .. "ؤُو") then return { rsub(term, YA .. "ؤُو", YA .. "ئُو"), term } elseif rfind(term, ALIF .. "ؤُو") then -- Here John Mace "Arabic Verbs" is inconsistent. In past-tense parts, -- the preferred alternative has hamza on the line, whereas in -- non-past parts the preferred alternative has hamza-on-yāʾ even -- though the sequence of vowels is identical. It's too complicated to -- propagate information about tense through to here so pick one. return { rsub(term, ALIF .. "ؤُو", ALIF .. "ئُو"), term } -- no alternative spelling in sequence of U/A + hamza-on-wāw + U + wāw; -- sequence of I + hamza-on-wāw + U + wāw does not occur (has -- hamza-on-yāʾ instead) else return { term } end end ----------------------------------- misc junk --------------------------------- -- Used in {{ar-adj-in}} so that we can specify a full lemma rather than -- requiring the user to truncate the -in ending. FIXME: Move ar-adj-in -- into Lua. function export.remove_in(frame) local lemma = frame.args[1] or error("Lemma required.") return rsub(export.reorder_shadda(lemma), IN .. "$", "") end -- Used in {{ar-adj-an}} so that we can specify a full lemma rather than -- requiring the user to truncate the -an ending. FIXME: Move ar-adj-an -- into Lua. function export.remove_an(frame) local lemma = frame.args[1] or error("Lemma required.") return rsub(export.reorder_shadda(lemma), AN .. AMAQ .. "$", "") end -- Compare two words and find the alternation pattern (vowel changes, prefixes, suffixes etc.) -- Still a WIP, doesn't work correctly yet. function export.find_pattern(word1, word2) return nil end function export.etymology(frame) local text, categories = {}, {} local linkText local frame_params = { [1] = { required = true }, } local frame_args = require("Module:parameters").process(frame.args, frame_params) local anchor = frame_args[1] local data = { ["color adjective"] = { anchor = "Color or defect adjectives", text = "color adjective", categories = { "color/defect adjectives" }, }, ["defect adjective"] = { anchor = "Color or defect adjectives", text = "defect adjective", categories = { "color/defect adjectives" }, }, } local params = { [1] = {}, ["nocat"] = { type = "boolean", default = false }, ["lc"] = { type = "boolean", default = false }, ["nocap"] = { alias_of = "lc" }, ["notext"] = { type = "boolean", default = false }, } local args = require("Module:parameters").process(frame:getParent().args, params) if anchor and data[anchor] then local data = data[anchor] anchor = data.anchor or error('The data table does not include an anchor for "' .. anchor .. '".') linkText = data.text or error('The data table does not include link text for "' .. anchor .. '".') if not args.lc then linkText = rsubn(linkText, "^%a", function(a) return mw.ustring.upper(a) end) end if not args.notext then table.insert(text, "[[Appendix:Arabic nominals#" .. anchor .. "|" .. linkText .. "]]") end if not args.nocat then table.insert(categories, m_utilities.format_categories(data.categories, lang)) end else error('The anchor "' .. tostring(anchor) .. '" is not found in the list of anchors.') end return table.concat(text) .. table.concat(categories) end return export b5yp8g0vr2gkhegct05upo1dfcwoet9 มอดูล:headword/data 828 162970 5723273 5686952 2026-05-20T04:48:34Z OctraBot 3198 5723273 Scribunto text/plain local headword_page_module = "Module:headword/page" local list_to_set = require("Module:table").listToSet local data = {} ------ 1. Lists which are converted into sets. ------ --[==[ var: Large pages where we disable label tracking, red link checking and similar. ]==] data.large_pages = list_to_set { -- pages that consistently hit timeouts "a", -- pages that sometimes hit timeouts "A", "baba", "de", "e", "i", "lima", "o", "u", "и", "山", "子", "月", "一", "人", } --[==[ var: Map from singular to plural, and from plural to itself, for recognized parts of speech with irregular plurals. Most of these are invariable plurals, e.g. `kanji` is its own plural; but we also have `mora` plural `morae`. ]==] data.irregular_plurals = list_to_set({ "ชมาโว", --cmavo "ชเมเน", --cmene "ฟูฮิฝลา", --fu'ivla "กิสมู", --gismu "ฮั้นถื่อ", --Han tu "ฮันจา", --hanja "ฮั่นจื้อ", --hanzi "ยฺหวืดเพ็ง", --jyutping "คานะ", --kana "คันจิ", --kanji "ลุฌโว", --lujvo "หนังสือวลี", --phrasebook "พินอิน", --pinyin "รัฟซี", --rafsi }, function(_, item) return item end) local irregular_plurals = data.irregular_plurals -- Irregular non-zero plurals AND any regular plurals where the singular ends in "s", -- because the module assumes that inputs ending in "s" are plurals. The singular and -- plural both need to be added, as the module will generate a default plural if -- the input doesn't match a key in this table. for sg, pl in next, { mora = "morae" } do irregular_plurals[sg], irregular_plurals[pl] = pl, pl end --[==[ var: Recognized lemmas. If the part of speech in {{tl|head}} is set to one of these or its singular equivalent, the category 'LANG lemmas' will automatically be added. If the part of speech is not a singular or plural lemma or non-lemma form and is not an abbreviation that expands to a recognized lemma or non-lemma form, the page will be added to various tracking categories: * [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] * [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANG]] * [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/pos/POS]] * [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/pos/POS/LANG]] ]==] data.lemmas = list_to_set{ "คำย่อ", --abbreviations "อักษรย่อรวมพยางค์", --acronyms "คำคุณศัพท์", --adjectives "adnominals", "adpositions", "คำกริยาวิเศษณ์", --adverbs "หน่วยคำเติม", --affixes "ambipositions", "คำกำกับนาม", --articles "หน่วยคำเติมคร่อม", --circumfixes "circumpositions", "คำลักษณนาม", --classifiers "ชมาโว", --cmavo "cmavo clusters", "ชเมเน", --cmene "combining forms", "คำสันธาน", --conjunctions "คำลักษณนาม", --counters = classifiers "ตัวกำหนด", --determiners "diacritical marks", "ทวิอักษร", --digraphs "equative adjectives", "ฟูฮิฝลา", --fu'ivla "กิสมู", --gismu "อักษรจีน", --Han characters "ฮั้นถื่อ", --Han tu "ฮันจา", --hanja "ฮั่นจื้อ", --hanzi "ideophones", "สำนวน", --idioms "อาคม", --infixes "อักษรย่อ", --initialisms "เครื่องหมายซ้ำ", --iteration marks "หน่วยคำเติมเชื่อม", --interfixes "คำอุทาน", --interjections "คานะ", --kana "คันจิ", --kanji "ตัวอักษร", --letters "ตัวอักษรควบ", --ligatures "logograms", "ลุฌโว", --lujvo "morae", "หน่วยคำ", --morphemes "non-constituents", "คำนาม", --nouns "จำนวน", --numbers "ตัวเลข", --numeral symbols "เลข", --numerals "คำอนุภาค", --particles "วลี", --phrases "คำปัจฉบท", --postpositions "postpositional phrases", "predicatives", "อุปสรรค", --prefixes "prepositional phrases", "คำบุพบท", --prepositions "คำกริยาเติมหน้า", --preverbs "pronominal adverbs", "คำสรรพนาม", --pronouns "คำวิสามานยนาม", --proper nouns "สุภาษิต", --proverbs "เครื่องหมายวรรคตอน", --punctuation marks "relatives", "ราก", --roots "ต้นเค้าศัพท์", --stems "ปัจจัย", --suffixes "พยางค์", --syllables "สัญลักษณ์", --symbols "คำกริยา", --verbs } --[==[ var: Recognized non-lemma forms. If the part of speech in {{tl|head}} is set to one of these or its singular equivalent, the category 'LANG non-lemma forms' will automatically be added. If the part of speech is not a singular or plural lemma or non-lemma form and is not an abbreviation that expands to a recognized lemma or non-lemma form, the page will be added to various tracking categories; see the documentation of `data.lemmas`. ]==] data.nonlemmas = list_to_set{ "รูปผันรูปกริยาขยายกรรตุวาจก", --active participle forms "รูปกริยาขยายกรรตุวาจก", --active participles "รูปกริยาขยายเชิงคุณศัพท์", --adjectival participles "adjective case forms", "รูปคุณศัพท์", --adjective forms "adjective feminine forms", "รูปคุณศัพท์พหูพจน์", --adjective plural forms "รูปกริยาวิเศษณ์", --adverb forms "รูปกริยาขยายเชิงกริยาวิเศษณ์", --adverbial participles "agent participles", "รูปกำกับนาม", --article forms "รูปหน่วยคำเติมคร่อม", --circumfix forms "combined forms", "รูปคุณศัพท์ขั้นกว่า", --comparative adjective forms "คำคุณศัพท์ขั้นกว่า", --comparative adjectives "รูปกริยาวิเศษณ์ขั้นกว่า", --comparative adverb forms "คำกริยาวิเศษณ์ขั้นกว่า", --comparative adverbs "รูปสันธาน", --conjunction forms "รูปหดย่อ", --contractions "converbs", "รูปตัวกำหนดขั้นกว่า", --determiner comparative forms "รูปตัวกำหนด", --determiner forms "รูปตัวกำหนดขั้นสุด", --determiner superlative forms "คำนามบอกความเล็ก", --diminutive nouns "elative adjectives", "รูปคุณศัพท์ขั้นเท่า", --equative adjective forms "คำคุณศัพท์ขั้นเท่า", --equative adjectives "รูปกริยาขยายอนาคตกาล", --future participles "รูปกริยาเป็นนาม", --gerunds "infinitive forms", "infinitives", "รูปอุทาน", --interjection forms "ยฺหวืดเพ็ง", --jyutping "รูปสะกดผิด", --misspellings "negative participles", "nominal participles", "noun case forms", "noun construct forms", "รูปนามทวิพจน์", --noun dual forms "รูปนาม", --noun forms "รูปนามบอกความน้อย", --noun paucal forms "รูปนามพหูพจน์", --noun plural forms "noun possessive forms", "noun singulative forms", "รูปผันเลข", --numeral forms "รูปกริยาขยาย", --participles "รูปผันรูปกริยาขยาย", --participle forms "รูปอนุภาค", --particle forms "รูปกริยาขยายกรรมวาจก", --passive participles "รูปกริยาขยายกรรตุวาจกอดีตกาล", --past active participles "past adverbial participles", "รูปกริยาขยายอดีตกาล", --past participles "รูปผันรูปกริยาขยายอดีตกาล", --past participle forms "รูปกริยาขยายกรรมวาจกอดีตกาล", --past passive participles "perfect active participles", "perfect participles", "perfect passive participles", "พินอิน", --pinyin "พหูพจน์", --plurals "รูปปัจฉบท", --postposition forms "รูปอุปสรรค", --prefix forms "preposition contractions", "รูปบุพบท", --preposition forms "prepositional pronouns", "รูปกริยาขยายกรรตุวาจกปัจจุบันกาล", --present active participles "present adverbial participles", "รูปกริยาขยายปัจจุบันกาล", --present participles "รูปกริยาขยายกรรมวาจกปัจจุบันกาล", --present passive participles "preverb forms", "รูปสรรพนาม", --pronoun forms "pronoun possessive forms", "รูปวิสามานยนาม", --proper noun forms "รูปวิสามานยนามพหูพจน์", --proper noun plural forms "รัฟซี", --rafsi "การถอดเป็นอักษรโรมัน", --romanizations "root forms", "singulatives", "รูปปัจจัย", --suffix forms "รูปคุณศัพท์ขั้นสุด", --superlative adjective forms "คำคุณศัพท์ขั้นสุด", --superlative adjectives "รูปกริยาวิเศษณ์ขั้นสุด", --superlative adverb forms "คำกริยาวิเศษณ์ขั้นสุด", --superlative adverbs "รูปกริยา", --verb forms "คำกริยานาม", --verbal nouns } --[==[ var: List of languages that will not have links to separate parts of the headword. ]==] data.no_multiword_links = list_to_set{ "zh", } --[==[ var: List of languages that will not have `LANG multiword terms` categories added. There are various reasons why languages are in this list: (a) words are written without spaces between them; (b) syllables are written with spaces between them; (c) variant reconstructions are notated with a tilde surrounded by spaces; (d) the language is a sign language, where pagenames are multiword descriptions of the gesture(s) required to make an individual sign; (e) some other weirdnesses. ]==] data.no_multiword_cat = list_to_set{ -------- Languages without spaces between words (sometimes spaces between phrases) -------- "blt", -- Tai Dam "ja", -- Japanese "khb", -- Lü "km", -- Khmer "lo", -- Lao "mnw", -- Mon "my", -- Burmese "nan", -- Min Nan (some words in Latin script; hyphens between syllables) "nan-hbl", -- Hokkien (some words in Latin script; hyphens between syllables) "nod", -- Northern Thai "ojp", -- Old Japanese "shn", -- Shan "sou", -- Southern Thai "tdd", -- Tai Nüa "th", -- Thai "tts", -- Isan "twh", -- Tai Dón "txg", -- Tangut "zh", -- Chinese (all varieties with Chinese characters) "zkt", -- Khitan -------- Languages with spaces between syllables -------- "ahk", -- Akha "aou", -- A'ou "atb", -- Zaiwa "byk", -- Biao "cdy", -- Chadong --"duu", -- Drung; not sure --"hmx-pro", -- Proto-Hmong-Mien --"hnj", -- Green Hmong; not sure "huq", -- Tsat "ium", -- Iu Mien --"lis", -- Lisu; not sure "mtq", -- Muong --"mww", -- White Hmong; not sure "onb", -- Lingao --"sit-gkh", -- Gokhy; not sure --"swi", -- Sui; not sure "tbq-lol-pro", -- Proto-Loloish "tdh", -- Thulung "ukk", -- Muak Sa-aak "vi", -- Vietnamese "yig", -- Wusa Nasu "zng", -- Mang -------- Languages with ~ with surrounding spaces used to separate variants -------- "mkh-ban-pro", -- Proto-Bahnaric "sit-pro", -- Proto-Sino-Tibetan; listed above -------- Other weirdnesses -------- "mul", -- Translingual; gestures, Morse code, etc. "aot", -- Atong (India); bullet is a letter -------- All sign languages -------- "ads", "aed", "aen", "afg", "ase", "asf", "asp", "asq", "asw", "bfi", "bfk", "bog", "bqn", "bqy", "bvl", "bzs", "cds", "csc", "csd", "cse", "csf", "csg", "csl", "csn", "csq", "csr", "doq", "dse", "dsl", "ecs", "esl", "esn", "eso", "eth", "fcs", "fse", "fsl", "fss", "gds", "gse", "gsg", "gsm", "gss", "gus", "hab", "haf", "hds", "hks", "hos", "hps", "hsh", "hsl", "icl", "iks", "ils", "inl", "ins", "ise", "isg", "isr", "jcs", "jhs", "jls", "jos", "jsl", "jus", "kgi", "kvk", "lbs", "lls", "lsl", "lso", "lsp", "lst", "lsy", "lws", "mdl", "mfs", "mre", "msd", "msr", "mzc", "mzg", "mzy", "nbs", "ncs", "nsi", "nsl", "nsp", "nsr", "nzs", "okl", "pgz", "pks", "prl", "prz", "psc", "psd", "psg", "psl", "pso", "psp", "psr", "pys", "rms", "rsl", "rsm", "sdl", "sfb", "sfs", "sgg", "sgx", "slf", "sls", "sqk", "sqs", "ssp", "ssr", "svk", "swl", "syy", "tse", "tsm", "tsq", "tss", "tsy", "tza", "ugn", "ugy", "ukl", "uks", "vgt", "vsi", "vsl", "vsv", "xki", "xml", "xms", "ygs", "ysl", "zib", "zsl", } --[==[ var: List of languages where a hyphen is not considered a word separator for the `LANG multiword terms` category. There are numerous reasons why languages are in this list; by each language should be listed the reason for inclusion. ]==] data.hyphen_not_multiword_sep = list_to_set{ "akk", -- Akkadian; hyphens between syllables "akl", -- Aklanon; hyphens for mid-word glottal stops "ber-pro", -- Proto-Berber; morphemes separated by hyphens "ceb", -- Cebuano; hyphens for mid-word glottal stops "cnk", -- Khumi Chin; hyphens used in single words "cpi", -- Chinese Pidgin English; Chinese-derived words with hyphens between syllables "de", -- German; too many false positives "esx-esk-pro", -- hyphen used to separate morphemes "fi", -- Finnish; hyphen used to separate components in compound words if the final and initial vowels match, respectively "gd", -- Scottish Gaelic; too many false positives like [[a-chianaibh]], [[a-nìos]], [[an-dè]] and other adverbs in a- and an- "hil", -- Hiligaynon; hyphens for mid-word glottal stops "hnn", -- Hanunoo; too many false positives "ilo", -- Ilocano; hyphens for mid-word glottal stops "kne", -- Kankanaey; hyphens for mid-word glottal stops "lcp", -- Western Lawa; dash as syllable joiner "lwl", -- Eastern Lawa; dash as syllable joiner "mfa", -- Pattani Malay in Thai script; dash as syllable joiner "mkh-vie-pro", -- Proto-Vietic; morphemes separated by hyphens "msb", -- Masbatenyo; too many false positives "tl", -- Tagalog; too many false positives "war", -- Waray-Waray; too many false positives "yo", -- Yoruba; hyphens used to show lengthened nasal vowels } --[==[ var: List of languages that will not have `LANG masculine nouns` and similar categories added. Generally, these languages are lacking gender but use the gender field for other purposes. (This is a massive hack and should be changed.) ]==] data.no_gender_cat = list_to_set{ -- Languages without gender but which use the gender field for other purposes "ja", "th", } --[==[ var: List of languages where [[Module:headword]] should not attempt to generate a transliteration even if the term is written in a non-Latin script. FIXME: Notate reasons why each language is in this list. ]==] data.notranslit = list_to_set{ "ams", "az", "bbc", "bug", "cdo", "cia", "cjm", "cjy", "cmn", "cnp", "cpi", "cpx", "csp", "czh", "czo", "gan", "hak", "hnm", "hsn", --"ja", "kzg", "lad", "ltc", "luh", "lzh", "mnp", "ms", "mul", "mvi", "nan", "nan-dat", "nan-hbl", "nan-hlh", "nan-lnx", "nan-tws", "nan-zhe", "nan-zsh", "och", "oj", "okn", "ryn", "rys", "ryu", "sh", "sjc", "tgt", --"th", "tkn", "tly", "txg", "und", --"vi", "wuu", "xug", "yoi", "yox", "yue", "za", "zh", "zhx-sic", "zhx-tai", -- ภาษาที่ใช้ Thai อย่างเดียว หรือ Thai/Latin นอกนั้นไปกำหนดใน languages "th", --ไทย "bzi", --บีซู "cbn", --ญัฮกุร "lcp", --เลอเวือะตะวันตก "lwl", --เลอเวือะตะวันออก "nyw", --ญ้อ "skb", --แสก "sou", --ปักษ์ใต้ "thm", --ทะวืง "tts", --อีสาน "ugo", --กฺ๋อง "urk", --อูรักลาโวยจ } --[==[ var: List of languages that will default to `sccat` being true, i.e. categories like `LANG POS in SCRIPT script` will automatically be generated. This can be overridden using {{para|sccat|0}} in {{tl|head}} or setting `sccat` to `false` in Lua. ]==] data.default_sccat = list_to_set{ "inc-apa", "inc-ash", "kfr", "ks", "mr", "mwr", "inc-oaw", "inc-ohi", "omr", "inc-opa", "phr", "pi", "pra", "sa", "skr", "sd", } --[==[ var: List of script codes for which a script-tagged display title will be added. ]==] data.toBeTagged = list_to_set{ "Ahom", "Arab", "fa-Arab", "glk-Arab", "kk-Arab", "ks-Arab", "ku-Arab", "mzn-Arab", "ms-Arab", "ota-Arab", "pa-Arab", "ps-Arab", "sd-Arab", "tt-Arab", "ug-Arab", "ur-Arab", "Armi", "Armn", "Avst", "Bali", "Bamu", "Batk", "Beng", "as-Beng", "Bopo", "Brah", "Brai", "Bugi", "Buhd", "Cakm", "Cans", "Cari", "Cham", "Cher", "Copt", "Cprt", "Cyrl", "Cyrs", "Deva", "Dsrt", "Egyd", "Egyp", "Ethi", "Geok", "Geor", "Glag", "Goth", "Grek", "Polyt", "polytonic", "Gujr", "Guru", "Hang", "Hani", "Hano", "Hebr", "Hira", "Hluw", "Ital", "Java", "Kali", "Kana", "Khar", "Khmr", "Knda", "Kthi", "Lana", "Laoo", "Latn", "Latf", "Latg", "Latnx", "Latinx", "pjt-Latn", "Lepc", "Limb", "Linb", "Lisu", "Lyci", "Lydi", "Mand", "Mani", "Marc", "Merc", "Mero", "Mlym", "Mong", "mnc-Mong", "sjo-Mong", "xwo-Mong", "Mtei", "Mymr", "Narb", "Nkoo", "Nshu", "Ogam", "Olck", "Orkh", "Orya", "Osma", "Ougr", "Palm", "Phag", "Phli", "Phlv", "Phnx", "Plrd", "Prti", "Rjng", "Runr", "Samr", "Sarb", "Saur", "Sgnw", "Shaw", "Shrd", "Sinh", "Sora", "Sund", "Sylo", "Syrc", "Tagb", "Tale", "Talu", "Taml", "Tang", "Tavt", "Telu", "Tfng", "Tglg", "Thaa", "Thai", "Tibt", "Ugar", "Vaii", "Xpeo", "Xsux", "Yiii", "Zmth", "Zsym", "Ipach", "Music", "Rumin", } --[==[ var: Parts of speech which will not be categorised in categories like `English terms spelled with É` if the term is the character in question (e.g. the letter entry for English [[é]]). This contrasts with entries like the French adjective [[m̂]], which is a one-letter word spelled with the letter. ]==] data.pos_not_spelled_with_self = list_to_set{ "diacritical marks", "อักษรจีน", --Han characters "ฮั้นถื่อ", --Han tu "ฮันจา", --hanja "ฮั่นจื้อ", --hanzi "iteration marks", "คานะ", --kana "คันจิ", --kanji "ตัวอักษร", --letters "ตัวอักษรควบ", --ligatures "logograms", "morae", "ตัวเลข", --numeral symbols "เลข", --numerals "เครื่องหมายวรรคตอน", --punctuation marks "พยางค์", --syllables "สัญลักษณ์", --symbols } ------ 2. Lists not converted into sets. ------ --[==[ var: Recognized aliases for parts of speech (param 2=). Key is the short form and value is the canonical singular (not pluralized) form. It is singular so the same table can be used in [[Module:form of]] for the {{para|p}}/{{para|POS}} param and [[Module:links]] for the pos= param. Note that any part of speech, abbreviated or not, can be suffixed with `f` to generate the corresponding non-lemma form part of speech, such as `adjf`, `af` or `adjectivef` for `adjective form`, and `nounf` or `nf` for `noun form`. This expansion happens even when it does not make sense for the given part of speech (e.g. `pclf` expands to `particle form` and `symf` expands to `symbol form`), and currently also, at least in [[Module:headword]] (but not [[Module:links]]), even if the part before the `f` is not a recognized part of speech or abbreviation (hence `nerf` expands to `ner form`). ]==] data.pos_aliases = { a = "คำคุณศัพท์", adj = "คำคุณศัพท์", adv = "คำกริยาวิเศษณ์", art = "คำกำกับนาม", aug = "ตัวบอกความใหญ่", cls = "คำลักษณนาม", compadj = "คำคุณศัพท์ขั้นกว่า", compadv = "คำกริยาวิเศษณ์ขั้นกว่า", conj = "คำสันธาน", contr = "รูปหดย่อ", conv = "converb", det = "ตัวกำหนด", dim = "ตัวบอกความเล็ก", int = "คำอุทาน", interj = "คำอุทาน", intj = "คำอุทาน", n = "คำนาม", -- the next two support Algonquian languages; see also vii/vai/vti/vta below na = "คำนามมีชีวิต", ni = "คำนามไม่มีชีวิต", num = "เลข", pastpart = "รูปกริยาขยายอดีตกาล", part = "รูปกริยาขยาย", pcl = "คำอนุภาค", phr = "วลี", pn = "คำวิสามานยนาม", postp = "คำปัจฉบท", pref = "อุปสรรค", prep = "คำบุพบท", prepphr = "prepositional phrase", prespart = "รูปกริยาขยายปัจจุบันกาล", pron = "คำสรรพนาม", prop = "คำวิสามานยนาม", proper = "คำวิสามานยนาม", propn = "คำวิสามานยนาม", rom = "การถอดเป็นอักษรโรมัน", romanisation = "การถอดเป็นอักษรโรมัน", romanisations = "การถอดเป็นอักษรโรมัน", suf = "ปัจจัย", supadj = "คำคุณศัพท์ขั้นสุด", supadv = "คำกริยาวิเศษณ์ขั้นสุด", sym = "สัญลักษณ์", v = "คำกริยา", vb = "คำกริยา", vi = "คำอกรรมกริยา", vm = "modal verb", vt = "คำสกรรมกริยา", -- the next four support Algonquian languages vii = "คำอกรรมกริยาไม่มีชีวิต", vai = "คำอกรรมกริยามีชีวิต", vti = "คำสกรรมกริยาไม่มีชีวิต", vta = "คำสกรรมกริยามีชีวิต", } --[==[ var: Map of parts of speech for which categories like `German masculine nouns` or `Russian imperfective verbs` will be generated if the headword is of the appropriate gender/number. The map is used to canonicalize parts of speech for categorization purposes; specifically, proper nouns categorizes like nouns. ]==] data.pos_for_gender_number_cat = { ["nouns"] = "nouns", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ var: Lower limit for a "long" word in a particular language. Used to categorize terms into e.g. [[:Category:Long English words]] automatically. Languages with no mapping here do not get categorized. ]==] data.long_word_thresholds = { ["af"] = 20, ["bg"] = 20, ["cy"] = 25, ["de"] = 20, ["en"] = 25, ["es"] = 20, ["fr"] = 20, ["ka"] = 20, ["sv"] = 20, ["tl"] = 25, } ------ 3. Page-wide processing (so that it only needs to be done once per page). ------ data.page = require(headword_page_module).process_page() -- Set some page properties directly on `data` for ease of use. data.pagename = data.page.pagename data.encoded_pagename = data.page.encoded_pagename return data e8b0hiatmefluxjkj82i0l83d4vdq5e มอดูล:languages/code to canonical name 828 174988 5723242 5720547 2026-05-20T03:24:28Z OctraBot 3198 5723242 Scribunto text/plain return { ["aa"] = "อาฟาร์", ["aaa"] = "Ghotuo", ["aab"] = "Alumu-Tesu", ["aac"] = "Ari", ["aad"] = "Amal", ["aaf"] = "Aranadan", ["aag"] = "Ambrak", ["aah"] = "Abu'", ["aai"] = "Arifama-Miniafia", ["aak"] = "Ankave", ["aal"] = "Afade", ["aan"] = "Anambé", ["aap"] = "Arára (Pará)", ["aaq"] = "Penobscot", ["aas"] = "Aasax", ["aau"] = "Abau", ["aav-khs-pro"] = "คาเซียนดั้งเดิม", ["aav-nic-pro"] = "นิโคบารีสดั้งเดิม", ["aav-pkl-pro"] = "ปนัร-คาซี-ลึงงัมดั้งเดิม", ["aav-pro"] = "ออสโตรเอเชียติกดั้งเดิม", ["aaw"] = "Solong", ["aax"] = "Mandobo Atas", ["aaz"] = "Amarasi", ["ab"] = "อับคาเซีย", ["aba"] = "อาเบ", ["abb"] = "Bankon", ["abc"] = "Ambala Ayta", ["abd"] = "Camarines Norte Agta", ["abe"] = "Abenaki", ["abf"] = "Abai Sungai", ["abg"] = "Abaga", ["abh"] = "อาหรับแบบทาจิกิสถาน", ["abi"] = "Abidji", ["abj"] = "Aka-Bea", ["abl"] = "Abung", ["abm"] = "Abanyom", ["abn"] = "Abua", ["abo"] = "Abon", ["abp"] = "Abenlen Ayta", ["abq"] = "อาบาซา", ["abs"] = "Ambonese Malay", ["abt"] = "Ambulas", ["abu"] = "Abure", ["abv"] = "อาหรับแบบบาห์เรน", ["abw"] = "Pal", ["abx"] = "Inabaknon", ["aby"] = "Aneme Wake", ["abz"] = "Abui", ["aca"] = "Achagua", ["acb"] = "Áncá", ["acd"] = "Gikyode", ["ace"] = "อาเจะฮ์", ["ach"] = "Acholi", ["aci"] = "Aka-Cari", ["ack"] = "Aka-Kora", ["acl"] = "Akar-Bale", ["acm"] = "อาหรับแบบอิรัก", ["acn"] = "Achang", ["acp"] = "Eastern Acipa", ["acr"] = "Achi", ["acs"] = "Acroá", ["acu"] = "Achuar", ["acv"] = "Achumawi", ["acw"] = "อาหรับแบบฮิญาซ", ["acx"] = "อาหรับแบบโอมาน", ["acy"] = "อาหรับแบบไซปรัส", ["acz"] = "Acheron", ["ada"] = "Adangme", ["adb"] = "Atauran", ["add"] = "Dzodinka", ["ade"] = "Adele", ["adf"] = "Dhofari Arabic", ["adg"] = "Andegerebinha", ["adh"] = "Adhola", ["adi"] = "Adi", ["adj"] = "Adioukrou", ["adl"] = "Galo", ["adn"] = "Adang", ["ado"] = "Abu", ["adp"] = "Adap", ["adq"] = "Adangbe", ["adr"] = "Adonara", ["ads"] = "Adamorobe Sign Language", ["adt"] = "Adnyamathanha", ["adu"] = "Aduge", ["adw"] = "Amondawa", ["ady"] = "อะดีเกยา", ["adz"] = "Adzera", ["ae"] = "อเวสตะ", ["aea"] = "Areba", ["aeb"] = "อาหรับแบบตูนิเซีย", ["aed"] = "Argentine Sign Language", ["aee"] = "Northeast Pashayi", ["aek"] = "Haeke", ["ael"] = "Ambele", ["aem"] = "Arem", ["aen"] = "Armenian Sign Language", ["aeq"] = "Aer", ["aer"] = "Eastern Arrernte", ["aes"] = "Alsea", ["aeu"] = "Akeu", ["aew"] = "Ambakich", ["aey"] = "Amele", ["aez"] = "Aeka", ["af"] = "อาฟรีกานส์", ["afa-pro"] = "แอฟโฟรเอเชียติกดั้งเดิม", ["afb"] = "Gulf Arabic", ["afd"] = "Andai", ["afe"] = "Putukwam", ["afg"] = "Afghan Sign Language", ["afh"] = "Afrihili", ["afi"] = "Akrukay", ["afk"] = "Nanubae", ["afn"] = "Defaka", ["afo"] = "Eloyi", ["afp"] = "Tapei", ["afs"] = "Afro-Seminole Creole", ["aft"] = "Afitti", ["afu"] = "Awutu", ["afz"] = "Obokuitai", ["aga"] = "Aguano", ["agb"] = "Legbo", ["agc"] = "Agatu", ["agd"] = "Agarabi", ["age"] = "Angal", ["agf"] = "Arguni", ["agg"] = "Angor", ["agh"] = "Ngelima", ["agi"] = "Agariya", ["agj"] = "Argobba", ["agk"] = "Isarog Agta", ["agl"] = "Fembe", ["agm"] = "Angaataha", ["agn"] = "อากูตายา", ["ago"] = "Tainae", ["agq"] = "Aghem", ["agr"] = "Aguaruna", ["ags"] = "Esimbi", ["agt"] = "Central Cagayan Agta", ["agu"] = "Aguacateca", ["agv"] = "Remontado Agta", ["agw"] = "Kahua", ["agx"] = "Aghul", ["agy"] = "Southern Alta", ["agz"] = "Mount Iriga Agta", ["aha"] = "Ahanta", ["ahb"] = "Axamb", ["ahg"] = "Qimant", ["ahh"] = "Aghu", ["ahi"] = "Tiagba", ["ahk"] = "อาข่า", ["ahl"] = "Igo", ["ahm"] = "Mobu", ["ahn"] = "Àhàn", ["aho"] = "อาหม", ["ahp"] = "Apro", ["ahr"] = "Ahirani", ["ahs"] = "Ashe", ["aht"] = "Ahtna", ["aia"] = "Arosi", ["aib"] = "Äynu", ["aic"] = "Ainbai", ["aid"] = "Alngith", ["aie"] = "Amara", ["aif"] = "Agi", ["aig"] = "Antigua and Barbuda Creole English", ["aih"] = "Ai-Cham", ["aii"] = "Assyrian Neo-Aramaic", ["aij"] = "Lishanid Noshan", ["aik"] = "Ake", ["ail"] = "Aimele", ["aim"] = "Aimol", ["ain"] = "ไอนุ", ["aio"] = "อ่ายตน", ["aip"] = "Burumakok", ["air"] = "Airoran", ["ait"] = "Arikem", ["aiw"] = "Aari", ["aix"] = "Aighon", ["aiy"] = "Ali", ["aja"] = "Aja", ["ajg"] = "Adja", ["aji"] = "Ajië", ["ajn"] = "Andajin", ["ajp"] = "อาหรับแบบลิแวนต์ใต้", ["ajw"] = "Ajawa", ["ajz"] = "Amri Karbi", ["ak"] = "อาคัน", ["akb"] = "Angkola Batak", ["akc"] = "Mpur", ["akd"] = "Ukpet-Ehom", ["ake"] = "Akawaio", ["akf"] = "Akpa", ["akg"] = "Anakalangu", ["akh"] = "Angal Heneng", ["aki"] = "Aiome", ["akj"] = "Jeru", ["akk"] = "แอกแคด", ["akl"] = "อักลัน", ["akm"] = "Aka-Bo", ["ako"] = "Akurio", ["akp"] = "Siwu", ["akq"] = "Ak", ["akr"] = "Araki", ["aks"] = "Akaselem", ["akt"] = "Akolet", ["aku"] = "Akum", ["akv"] = "Akhvakh", ["akw"] = "Akwa", ["akx"] = "Aka-Kede", ["aky"] = "Aka-Kol", ["akz"] = "แอละแบมา", ["ala"] = "Alago", ["alc"] = "Kawésqar", ["ald"] = "Alladian", ["ale"] = "Aleut", ["alf"] = "Alege", ["alg-aga"] = "Agawam", ["alg-pro"] = "แอลกองเคียนดั้งเดิม", ["alh"] = "Alawa", ["ali"] = "Amaimon", ["alj"] = "Alangan", ["alk"] = "Alak", ["all"] = "Allar", ["alm"] = "Amblong", ["alo"] = "Larike-Wakasihu", ["alp"] = "Alune", ["alq"] = "Algonquin", ["alr"] = "Alutor", ["alt"] = "อัลไตใต้", ["alu"] = "'Are'are", ["alv-ama"] = "Amasi", ["alv-bgu"] = "Baïnounk Gubëeher", ["alv-bua-pro"] = "Proto-Bua", ["alv-cng-pro"] = "Proto-Cangin", ["alv-edk-pro"] = "Proto-Edekiri", ["alv-edo-pro"] = "Proto-Edoid", ["alv-fli-pro"] = "Proto-Fali", ["alv-gbe-pro"] = "กเบดั้งเดิม", ["alv-gng-pro"] = "Proto-Guang", ["alv-gtm-pro"] = "Proto-Central Togo", ["alv-gwa"] = "Gwara", ["alv-hei-pro"] = "Proto-Heiban", ["alv-ido-pro"] = "Proto-Idomoid", ["alv-igb-pro"] = "Proto-Igboid", ["alv-kwa-pro"] = "Proto-Kwa", ["alv-mum-pro"] = "Proto-Mumuye", ["alv-nup-pro"] = "Proto-Nupoid", ["alv-pro"] = "แอตแลนติก-คองโกดั้งเดิม", ["alv-von-pro"] = "วอลตา-ไนเจอร์ดั้งเดิม", ["alv-yor-pro"] = "โยรูบาดั้งเดิม", ["alv-yrd-pro"] = "โยรูบอยด์ดั้งเดิม", ["alw"] = "Alaba", ["alx"] = "Amol", ["aly"] = "Alyawarr", ["alz"] = "Alur", ["am"] = "อัมฮารา", ["ama"] = "Amanayé", ["amb"] = "Ambo", ["amc"] = "Amahuaca", ["ame"] = "Yanesha'", ["amf"] = "Hamer-Banna", ["amg"] = "Amurdag", ["ami"] = "Amis", ["amj"] = "Amdang", ["amk"] = "Ambai", ["aml"] = "War-Jaintia", ["amm"] = "Ama", ["amn"] = "Amanab", ["amo"] = "Amo", ["amp"] = "Alamblak", ["amq"] = "Amahai", ["amr"] = "Amarakaeri", ["ams"] = "อามามิโอชิมะใต้", ["amt"] = "Amto", ["amu"] = "Guerrero Amuzgo", ["amv"] = "Ambelau", ["amw"] = "Western Neo-Aramaic", ["amx"] = "Anmatyerre", ["amy"] = "Ami", ["amz"] = "Atampaya", ["an"] = "อารากอน", ["ana"] = "Andaqui", ["anb"] = "Andoa", ["anc"] = "Ngas", ["and"] = "Ansus", ["ane"] = "คังรังชือ", ["anf"] = "Animere", ["ang"] = "อังกฤษเก่า", ["anh"] = "Nend", ["ani"] = "Andi", ["anj"] = "Anor", ["ank"] = "Goemai", ["anl"] = "Anu", ["anm"] = "Anāl", ["ann"] = "Obolo", ["ano"] = "Andoque", ["anp"] = "Angika", ["anq"] = "Jarawa", ["anr"] = "Andh", ["ans"] = "Anserma", ["ant"] = "Antakarinya", ["anu"] = "Anuak", ["anv"] = "Denya", ["anw"] = "Anaang", ["anx"] = "Andra-Hus", ["any"] = "Anyi", ["anz"] = "Anem", ["aoa"] = "Angolar", ["aob"] = "Abom", ["aoc"] = "Pemon", ["aod"] = "Andarum", ["aoe"] = "Angal Enen", ["aof"] = "Bragat", ["aog"] = "Angoram", ["aoi"] = "Anindilyakwa", ["aoj"] = "Mufian", ["aok"] = "Arhö", ["aol"] = "Alorese", ["aom"] = "Ömie", ["aon"] = "Bumbita Arapesh", ["aor"] = "Aore", ["aos"] = "Taikat", ["aot"] = "อะตง", ["aou"] = "A'ou", ["aox"] = "Atorada", ["aoz"] = "Uab Meto", ["apa-pro"] = "Proto-Apachean", ["apb"] = "Sa'a", ["apc"] = "North Levantine Arabic", ["apd"] = "อาหรับแบบซูดาน", ["ape"] = "Bukiyip", ["apf"] = "Pahanan Agta", ["apg"] = "Ampanang", ["aph"] = "Athpare", ["api"] = "Apiaká", ["apj"] = "Jicarilla", ["apk"] = "Plains Apache", ["apl"] = "Lipan", ["apm"] = "Chiricahua", ["apn"] = "Apinayé", ["apo"] = "Ambul", ["app"] = "Apma", ["apq"] = "A-Pucikwar", ["apr"] = "Arop-Lokep", ["aps"] = "Arop-Sissano", ["apt"] = "Apatani", ["apu"] = "Apurinã", ["apv"] = "Alapmunte", ["apw"] = "อะแพชีตะวันตก", ["apx"] = "Aputai", ["apy"] = "Apalaí", ["apz"] = "Safeyoka", ["aqc"] = "Archi", ["aqd"] = "Ampari Dogon", ["aqg"] = "Arigidi", ["aql-pro"] = "แอลจิกดั้งเดิม", ["aqm"] = "Atohwaim", ["aqn"] = "Northern Alta", ["aqp"] = "Atakapa", ["aqr"] = "Arhâ", ["aqt"] = "Angaité", ["aqz"] = "Akuntsu", ["ar"] = "อาหรับ", ["arc"] = "อารามายา", ["ard"] = "Arabana", ["are"] = "Western Arrernte", ["arh"] = "Arhuaco", ["ari"] = "Arikara", ["arj"] = "Arapaso", ["ark"] = "Arikapú", ["arl"] = "Arabela", ["arn"] = "Mapudungun", ["aro"] = "Araona", ["arp"] = "Arapaho", ["arq"] = "อาหรับแบบแอลจีเรีย", ["arr"] = "Arara-Karo", ["ars"] = "Najdi Arabic", ["art-adu"] = "Adûni", ["art-bel"] = "Belter Creole", ["art-blk"] = "Bolak", ["art-bsp"] = "แบล็กสปีช", ["art-com"] = "Communicationssprache", ["art-dtk"] = "Dothraki", ["art-elo"] = "Eloi", ["art-gld"] = "Goa'uld", ["art-lap"] = "Lapine", ["art-man"] = "Mandalorian", ["art-mun"] = "Mundolinco", ["art-nav"] = "Naʼvi", ["art-vlh"] = "High Valyrian", ["aru"] = "Arua", ["arv"] = "Arbore", ["arw"] = "โลโกโน", ["arx"] = "Aruá", ["ary"] = "อาหรับแบบโมร็อกโก", ["arz"] = "อาหรับแบบอียิปต์", ["as"] = "อัสสัม", ["asa"] = "Pare", ["asb"] = "Assiniboine", ["asc"] = "Casuarina Coast Asmat", ["ase"] = "มืออเมริกัน", ["asf"] = "Auslan", ["asg"] = "Cishingini", ["ash"] = "Abishira", ["asi"] = "Buruwai", ["asj"] = "Nsari", ["ask"] = "Ashkun", ["asl"] = "Asilulu", ["asn"] = "Xingú Asuriní", ["aso"] = "Dano", ["asp"] = "Algerian Sign Language", ["asq"] = "Austrian Sign Language", ["asr"] = "Asuri", ["ass"] = "Ipulo", ["ast"] = "อัสตูเรียส", ["asu"] = "Tocantins Asurini", ["asv"] = "Asoa", ["asw"] = "Australian Aboriginal Sign Language", ["asx"] = "Muratayak", ["asy"] = "Yaosakor Asmat", ["asz"] = "As", ["ata"] = "Pele-Ata", ["atb"] = "Zaiwa", ["atc"] = "Atsahuaca", ["atd"] = "Ata Manobo", ["ate"] = "Atemble", ["atg"] = "Okpela", ["ath-nic"] = "Nicola", ["ath-pro"] = "Proto-Athabaskan", ["ati"] = "Attié", ["atj"] = "Atikamekw", ["atk"] = "Ati", ["atl"] = "Mount Iraya Agta", ["atm"] = "Ata", ["ato"] = "Atong (Cameroon)", ["atp"] = "Pudtol Atta", ["atq"] = "Aralle-Tabulahan", ["atr"] = "Waimiri-Atroari", ["ats"] = "Gros Ventre", ["att"] = "Pamplona Atta", ["atu"] = "Reel", ["atv"] = "อัลไตเหนือ", ["atw"] = "Atsugewi", ["atx"] = "Arutani", ["aty"] = "อาเนตยูม", ["atz"] = "Arta", ["aua"] = "Asumboa", ["aub"] = "Alugu", ["auc"] = "Huaorani", ["aud"] = "Anuta", ["auf-pro"] = "Proto-Arawa", ["aug"] = "Aguna", ["auh"] = "Aushi", ["aui"] = "Anuki", ["auj"] = "Awjila", ["auk"] = "Heyo", ["aul"] = "Aulua", ["aum"] = "Asu", ["aun"] = "Molmo One", ["auo"] = "Auyokawa", ["aup"] = "Makayam", ["auq"] = "Anus", ["aur"] = "Aruek", ["aus-alu"] = "Alungul", ["aus-and"] = "Andjingith", ["aus-ang"] = "Angkula", ["aus-arn-pro"] = "Proto-Arnhem", ["aus-bra"] = "Barranbinya", ["aus-brm"] = "Barunggam", ["aus-cww-pro"] = "Proto-Central New South Wales", ["aus-dal-pro"] = "Proto-Daly", ["aus-guw"] = "Guwar", ["aus-lsw"] = "Little Swanport", ["aus-mbi"] = "Mbiywom", ["aus-ngk"] = "Ngkoth", ["aus-nyu-pro"] = "Proto-Nyulnyulan", ["aus-pam-pro"] = "Proto-Pama-Nyungan", ["aus-tul"] = "Tulua", ["aus-uwi"] = "Uwinymil", ["aus-wdj-pro"] = "Proto-Iwaidjan", ["aus-won"] = "Wong-gie", ["aus-wul"] = "Wulguru", ["aus-ynk"] = "Yangkaal", ["aut"] = "Austral", ["auu"] = "Auye", ["auw"] = "Awyi", ["aux"] = "Aurá", ["auy"] = "Auyana", ["auz"] = "อาหรับแบบอุซเบกิสถาน", ["av"] = "อะวาร์", ["avb"] = "Avau", ["avd"] = "Alviri-Vidari", ["avi"] = "Avikam", ["avk"] = "โคทาวา", ["avm"] = "Angkamuthi", ["avn"] = "Avatime", ["avo"] = "Agavotaguerra", ["avs"] = "Aushiri", ["avt"] = "Au", ["avu"] = "Avokaya", ["avv"] = "Avá-Canoeiro", ["awa"] = "อวัธ", ["awb"] = "Awa (New Guinea)", ["awc"] = "Cicipu", ["awd-ama"] = "Amarizana", ["awd-amc-pro"] = "Proto-Amuesha-Chamicuro", ["awd-ana"] = "Anauyá", ["awd-apo"] = "Apolista", ["awd-cab"] = "Cabre", ["awd-gnu"] = "Guinau", ["awd-kar"] = "Cariay", ["awd-kaw"] = "Kawishana", ["awd-kmp-pro"] = "Proto-Kampa", ["awd-kus"] = "Kustenau", ["awd-man"] = "Manao", ["awd-mar"] = "Marawan", ["awd-mpr"] = "Maipure", ["awd-mrt"] = "Mariaté", ["awd-nwk-pro"] = "Proto-Nawiki", ["awd-pai"] = "Paikoneka", ["awd-pas"] = "Pasé", ["awd-pro"] = "Proto-Arawak", ["awd-prw-pro"] = "Proto-Paresi-Waura", ["awd-she"] = "Shebayo", ["awd-taa-pro"] = "Proto-Ta-Arawak", ["awd-wai"] = "Wainumá", ["awd-yum"] = "Yumana", ["awe"] = "Awetí", ["awg"] = "Anguthimri", ["awh"] = "Awbono", ["awi"] = "Aekyom", ["awk"] = "Awabakal", ["awm"] = "Arawum", ["awn"] = "Awngi", ["awo"] = "Awak", ["awr"] = "Awera", ["aws"] = "South Awyu", ["awt"] = "Araweté", ["awu"] = "Central Awyu", ["awv"] = "Jair Awyu", ["aww"] = "Awun", ["awx"] = "Awara", ["awy"] = "Edera Awyu", ["axb"] = "Abipón", ["axe"] = "Ayerrerenge", ["axg"] = "Arára (Mato Grosso)", ["axk"] = "Aka (Central Africa)", ["axl"] = "Lower Southern Aranda", ["axm"] = "อาร์มีเนียกลาง", ["axx"] = "Xârâgurè", ["ay"] = "ไอย์มารา", ["aya"] = "Awar", ["ayb"] = "Ayizo", ["ayd"] = "Ayabadhu", ["aye"] = "Ayere", ["ayg"] = "Nyanga (Togo)", ["ayi"] = "Leyigha", ["ayk"] = "Akuku", ["ayl"] = "อาหรับแบบลิเบีย", ["ayn"] = "อาหรับแบบเยเมน", ["ayo"] = "Ayoreo", ["ayp"] = "อาหรับแบบเมโสโปเตเมียเหนือ", ["ayq"] = "Ayi", ["ays"] = "Sorsogon Ayta", ["ayt"] = "Bataan Ayta", ["ayu"] = "Ayu", ["ayy"] = "Tayabas Ayta", ["ayz"] = "Maybrat", ["az"] = "อาเซอร์ไบจาน", ["aza"] = "Azha", ["azc-caz"] = "Cazcan", ["azc-cup-pro"] = "Proto-Cupan", ["azc-ktn"] = "Kitanemuk", ["azc-nah-pro"] = "นาวันดั้งเดิม", ["azc-num-pro"] = "Proto-Numic", ["azc-pro"] = "ยูโต-แอซเทกันดั้งเดิม", ["azc-tak-pro"] = "Proto-Takic", ["azc-tat"] = "Tataviam", ["azd"] = "Eastern Durango Nahuatl", ["azg"] = "San Pedro Amuzgos Amuzgo", ["azm"] = "Ipalapa Amuzgo", ["azn"] = "Western Durango Nahuatl", ["azo"] = "Awing", ["azt"] = "Faire Atta", ["azz"] = "Highland Puebla Nahuatl", ["ba"] = "แบชเคียร์", ["baa"] = "Babatana", ["bab"] = "Bainouk-Gunyuño", ["bac"] = "Baduy", ["bae"] = "Baré", ["baf"] = "Nubaca", ["bag"] = "Tuki", ["bah"] = "Bahamian Creole", ["baj"] = "Barakai", ["bal"] = "บาโลจ", ["ban"] = "บาหลี", ["bao"] = "Waimaha", ["bap"] = "Bantawa", ["bar"] = "บาวาเรีย", ["bas"] = "Basaa", ["bau"] = "Badanchi", ["bav"] = "Babungo", ["baw"] = "Bambili-Bambui", ["bax"] = "Bamum", ["bay"] = "Batuley", ["bba"] = "Baatonum", ["bbb"] = "Barai", ["bbc"] = "Toba Batak", ["bbd"] = "Bau", ["bbe"] = "Bangba", ["bbf"] = "Baibai", ["bbg"] = "Barama", ["bbh"] = "Bugan", ["bbi"] = "Barombi", ["bbj"] = "Ghomala'", ["bbk"] = "Babanki", ["bbl"] = "บัตส์", ["bbm"] = "Babango", ["bbn"] = "Uneapa", ["bbo"] = "Konabéré", ["bbp"] = "West Central Banda", ["bbq"] = "Bamali", ["bbr"] = "Girawa", ["bbs"] = "Bakpinka", ["bbt"] = "Mburku", ["bbu"] = "Bakulung", ["bbv"] = "Karnai", ["bbw"] = "Baba", ["bbx"] = "Bubia", ["bby"] = "Befang", ["bca"] = "Central Bai", ["bcb"] = "Bainouk-Samik", ["bcd"] = "North Babar", ["bce"] = "Bamenyam", ["bcf"] = "Bamu", ["bcg"] = "Baga Pokur", ["bch"] = "Bariai", ["bci"] = "Baoule", ["bcj"] = "Bardi", ["bck"] = "Bunaba", ["bcl"] = "บีโคลตอนกลาง", ["bcm"] = "Banoni", ["bcn"] = "Bibaali", ["bco"] = "Kaluli", ["bcp"] = "Bali", ["bcq"] = "Bench", ["bcr"] = "Babine-Witsuwit'en", ["bcs"] = "Kohumono", ["bct"] = "Bendi", ["bcu"] = "Biliau", ["bcv"] = "Shoo-Minda-Nye", ["bcw"] = "Bana", ["bcy"] = "Bacama", ["bcz"] = "Bainouk-Gunyaamolo", ["bda"] = "Bayot", ["bdb"] = "Basap", ["bdc"] = "Emberá-Baudó", ["bdd"] = "Bunama", ["bde"] = "Bade", ["bdf"] = "Biage", ["bdg"] = "Bonggi", ["bdh"] = "Tara Baka", ["bdi"] = "Burun", ["bdj"] = "Bai (South Sudan)", ["bdk"] = "Budukh", ["bdl"] = "บาเจาแบบอินโดนีเซีย", ["bdm"] = "Buduma", ["bdn"] = "Baldemu", ["bdo"] = "Morom", ["bdp"] = "Bende", ["bdq"] = "บะห์นัร", ["bdr"] = "บาเจาแบบเวสต์โคสต์", ["bds"] = "Burunge", ["bdt"] = "Bokoto", ["bdu"] = "Oroko", ["bdv"] = "Bodo Parja", ["bdw"] = "Baham", ["bdx"] = "Budong-Budong", ["bdy"] = "Bandjalang", ["bdz"] = "Badeshi", ["be"] = "เบลารุส", ["bea"] = "Beaver", ["beb"] = "Bebele", ["bec"] = "Iceve-Maci", ["bed"] = "Bedoanas", ["bee"] = "Byangsi", ["bef"] = "Benabena", ["beg"] = "Belait", ["beh"] = "Biali", ["bei"] = "Bekati'", ["bej"] = "Beja", ["bek"] = "Bebeli", ["bem"] = "Bemba", ["beo"] = "Beami", ["bep"] = "Besoa", ["beq"] = "Beembe", ["ber-fog"] = "Fogaha", ["ber-pro"] = "เบอร์เบอร์ดั้งเดิม", ["ber-zuw"] = "Zuwara", ["bes"] = "Besme", ["bet"] = "Guiberoua Bété", ["beu"] = "บลาการ์", ["bev"] = "Daloa Bété", ["bew"] = "เบอตาวี", ["bex"] = "Jur Modo", ["bey"] = "Akuwagel", ["bez"] = "Kibena", ["bfa"] = "Bari", ["bfb"] = "Pauri Bareli", ["bfc"] = "Panyi Bai", ["bfd"] = "Bafut", ["bfe"] = "Betaf", ["bff"] = "Bofi", ["bfg"] = "Busang Kayan", ["bfh"] = "Blafe", ["bfi"] = "British Sign Language", ["bfj"] = "Bafanji", ["bfk"] = "Ban Khor Sign Language", ["bfl"] = "Banda-Ndélé", ["bfm"] = "Mmen", ["bfn"] = "Bunak", ["bfo"] = "Malba Birifor", ["bfp"] = "Beba", ["bfq"] = "พทคะ", ["bfr"] = "Bazigar", ["bfs"] = "Southern Bai", ["bft"] = "บัลติ", ["bfu"] = "Gahri", ["bfw"] = "Bondo", ["bfx"] = "Bantayanon", ["bfy"] = "Bagheli", ["bfz"] = "Mahasu Pahari", ["bg"] = "บัลแกเรีย", ["bga"] = "Gwamhi-Wuri", ["bgb"] = "Bobongko", ["bgc"] = "Haryanvi", ["bgd"] = "Rathwi Bareli", ["bge"] = "Bauria", ["bgf"] = "Bangandu", ["bgg"] = "Bugun", ["bgi"] = "Giangan", ["bgj"] = "Bangolan", ["bgk"] = "Bit", ["bgl"] = "Bo", ["bgo"] = "Baga Koga", ["bgq"] = "Bagri", ["bgr"] = "Bawm Chin", ["bgs"] = "Tagabawa", ["bgt"] = "Bughotu", ["bgu"] = "Mbongno", ["bgv"] = "Warkay-Bipim", ["bgw"] = "Bhatri", ["bgx"] = "Balkan Gagauz Turkish", ["bgy"] = "Benggoi", ["bgz"] = "Banggai", ["bh"] = "พิหาร", ["bha"] = "Bharia", ["bhb"] = "Bhili", ["bhc"] = "Biga", ["bhd"] = "Bhadrawahi", ["bhe"] = "Bhaya", ["bhf"] = "Odiai", ["bhg"] = "Binandere", ["bhh"] = "Bukhari", ["bhi"] = "Bhilali", ["bhj"] = "Bahing", ["bhl"] = "Bimin", ["bhm"] = "Bathari", ["bhn"] = "Bohtan Neo-Aramaic", ["bho"] = "โภชปุระ", ["bhp"] = "Bima", ["bhq"] = "Tukang Besi South", ["bhs"] = "Buwal", ["bht"] = "Bhattiyali", ["bhu"] = "Bhunjia", ["bhv"] = "Bahau", ["bhw"] = "Biak", ["bhx"] = "Bhalay", ["bhy"] = "Bhele", ["bhz"] = "Bada", ["bi"] = "บิสลามา", ["bia"] = "Badimaya", ["bib"] = "Bissa", ["bic"] = "Bikaru", ["bid"] = "Bidiyo", ["bie"] = "Bepour", ["bif"] = "Biafada", ["big"] = "Biangai", ["bij"] = "Kwanka", ["bil"] = "Bile", ["bim"] = "Bimoba", ["bin"] = "Edo", ["bio"] = "Nai", ["bip"] = "Bila", ["biq"] = "Bipi", ["bir"] = "Bisorio", ["bit"] = "Berinomo", ["biu"] = "Biete", ["biv"] = "Southern Birifor", ["biw"] = "Kol (Cameroon)", ["bix"] = "Bijori", ["biy"] = "Birhor", ["biz"] = "Baloi", ["bja"] = "Budza", ["bjb"] = "Barngarla", ["bjc"] = "Bariji", ["bje"] = "Biao-Jiao Mien", ["bjf"] = "Barzani Jewish Neo-Aramaic", ["bjg"] = "Bidyogo", ["bjh"] = "Bahinemo", ["bji"] = "Burji", ["bjj"] = "Kannauji", ["bjk"] = "Barok", ["bjl"] = "Bulu (New Guinea)", ["bjm"] = "Bajelani", ["bjn"] = "บันจาร์", ["bjo"] = "Mid-Southern Banda", ["bjp"] = "Fanamaket", ["bjr"] = "Binumarien", ["bjs"] = "Bajan", ["bjt"] = "Balanta-Ganja", ["bju"] = "Busuu", ["bjv"] = "Bedjond", ["bjw"] = "Bakwé", ["bjx"] = "Banao Itneg", ["bjy"] = "Bayali", ["bjz"] = "Baruga", ["bka"] = "Kyak", ["bkc"] = "Baka", ["bkd"] = "บีนูกิด", ["bkf"] = "Beeke", ["bkg"] = "Buraka", ["bkh"] = "Bakoko", ["bki"] = "Baki", ["bkj"] = "Pande", ["bkk"] = "Brokskat", ["bkl"] = "Berik", ["bkm"] = "Kom (Cameroon)", ["bkn"] = "Bukitan", ["bko"] = "Kwa'", ["bkp"] = "Iboko", ["bkq"] = "Bakairí", ["bkr"] = "Bakumpai", ["bks"] = "Masbate Sorsogon", ["bkt"] = "Boloki", ["bku"] = "Buhid", ["bkv"] = "Bekwarra", ["bkw"] = "Bekwel", ["bkx"] = "Baikeno", ["bky"] = "Bokyi", ["bkz"] = "Bungku", ["bla"] = "Blackfoot", ["blb"] = "Bilua", ["blc"] = "Bella Coola", ["bld"] = "Bolango", ["ble"] = "Balanta-Kentohe", ["blf"] = "Buol", ["blg"] = "Balau", ["blh"] = "Kuwaa", ["bli"] = "Bolia", ["blj"] = "Bulungan", ["blk"] = "กะเหรี่ยงปะโอ", ["bll"] = "Biloxi", ["blm"] = "Beli", ["bln"] = "Southern Catanduanes Bicolano", ["blo"] = "Anii", ["blp"] = "Blablanga", ["blq"] = "Baluan-Pam", ["blr"] = "Blang", ["bls"] = "Balaesang", ["blt"] = "ไทดำ", ["blv"] = "Kibala", ["blw"] = "Balangao", ["blx"] = "Mag-Indi Ayta", ["bly"] = "Notre", ["blz"] = "Balantak", ["bm"] = "บัมบารา", ["bma"] = "Lame", ["bmb"] = "Bembe", ["bmc"] = "Biem", ["bmd"] = "Baga Manduri", ["bme"] = "Limassa", ["bmf"] = "Bom", ["bmg"] = "Bamwe", ["bmh"] = "Kein", ["bmi"] = "Bagirmi", ["bmj"] = "Bote-Majhi", ["bmk"] = "Ghayavi", ["bml"] = "Bomboli", ["bmn"] = "Bina", ["bmo"] = "Bambalang", ["bmp"] = "Bulgebi", ["bmq"] = "Bomu", ["bmr"] = "Muinane", ["bmt"] = "Biao Mon", ["bmu"] = "Somba-Siawari", ["bmv"] = "Bum", ["bmw"] = "Bomwali", ["bmx"] = "Baimak", ["bmz"] = "Baramu", ["bn"] = "เบงกอล", ["bna"] = "Bonerate", ["bnb"] = "Bookan", ["bnd"] = "Banda", ["bne"] = "Bintauna", ["bnf"] = "Masiwang", ["bng"] = "Benga", ["bni"] = "Bangi", ["bnj"] = "Eastern Tawbuid", ["bnk"] = "Bierebo", ["bnl"] = "Boon", ["bnm"] = "Batanga", ["bnn"] = "Bunun", ["bno"] = "อาซี", ["bnp"] = "Bola", ["bnq"] = "Bantik", ["bnr"] = "Butmas-Tur", ["bns"] = "Bundeli", ["bnt-bal"] = "Balong", ["bnt-bon"] = "Boma Nkuu", ["bnt-boy"] = "Boma Yumu", ["bnt-bwa"] = "Bwala", ["bnt-cmw"] = "Chimwiini", ["bnt-ind"] = "Indanga", ["bnt-lal"] = "Lala (South Africa)", ["bnt-mpi"] = "Mpiin", ["bnt-mpu"] = "Mpuono", ["bnt-ngu-pro"] = "งูนีดั้งเดิม", ["bnt-phu"] = "Phuthi", ["bnt-pro"] = "แบนทูดั้งเดิม", ["bnt-sab-pro"] = "Proto-Sabaki", ["bnt-sbo"] = "South Boma", ["bnt-sts-pro"] = "Proto-Sotho-Tswana", ["bnu"] = "Bentong", ["bnv"] = "Beneraf", ["bnw"] = "Bisis", ["bnx"] = "Bangubangu", ["bny"] = "Bintulu", ["bnz"] = "Beezen", ["bo"] = "ทิเบต", ["boa"] = "Bora", ["bob"] = "Aweer", ["boe"] = "Mundabli", ["bof"] = "Bolon", ["bog"] = "Bamako Sign Language", ["boh"] = "North Boma", ["boi"] = "Barbareño", ["boj"] = "Anjam", ["bok"] = "Bonjo", ["bol"] = "โบล", ["bom"] = "Berom", ["bon"] = "Bine", ["boo"] = "Tiemacèwè Bozo", ["bop"] = "Bonkiman", ["boq"] = "Bogaya", ["bor"] = "Borôro", ["bot"] = "Bongo", ["bou"] = "Bondei", ["bov"] = "Tuwuli", ["bow"] = "Rema", ["box"] = "Buamu", ["boy"] = "Bodo (Central Africa)", ["boz"] = "Tiéyaxo Bozo", ["bpa"] = "Daakaka", ["bpd"] = "Banda-Banda", ["bpg"] = "Bonggo", ["bph"] = "Botlikh", ["bpi"] = "Bagupi", ["bpj"] = "Binji", ["bpk"] = "Orowe", ["bpl"] = "Broome Pearling Lugger Pidgin", ["bpm"] = "Biyom", ["bpn"] = "Dzao Min", ["bpo"] = "Anasi", ["bpp"] = "Kaure", ["bpq"] = "Banda Malay", ["bpr"] = "Koronadal Blaan", ["bps"] = "Sarangani Blaan", ["bpt"] = "Barrow Point", ["bpu"] = "Bongu", ["bpv"] = "Bian Marind", ["bpx"] = "Palya Bareli", ["bpy"] = "Bishnupriya Manipuri", ["bpz"] = "Bilba", ["bqa"] = "Tchumbuli", ["bqb"] = "Bagusa", ["bqc"] = "Boko", ["bqd"] = "Bung", ["bqf"] = "Baga Kaloum", ["bqg"] = "Bago-Kusuntu", ["bqh"] = "Baima", ["bqi"] = "Bakhtiari", ["bqj"] = "Bandial", ["bqk"] = "Banda-Mbrès", ["bql"] = "Bilakura", ["bqm"] = "Wumboko", ["bqn"] = "Bulgarian Sign Language", ["bqo"] = "Balo", ["bqp"] = "Busa", ["bqq"] = "Biritai", ["bqr"] = "Burusu", ["bqs"] = "Bosngun", ["bqt"] = "Bamukumbit", ["bqu"] = "Boguru", ["bqv"] = "Begbere-Ejar", ["bqw"] = "Buru (Nigeria)", ["bqx"] = "Baangi", ["bqy"] = "Bengkala Sign Language", ["bqz"] = "Bakaka", ["br"] = "เบรอตง", ["bra"] = "พรัช", ["brb"] = "Lave", ["brc"] = "Berbice Creole Dutch", ["brd"] = "Baraamu", ["brf"] = "Bera", ["brg"] = "Baure", ["brh"] = "บราฮุอี", ["bri"] = "Mokpwe", ["brj"] = "Bieria", ["brk"] = "Birgid", ["brl"] = "Birwa", ["brm"] = "Barambu", ["brn"] = "Boruca", ["bro"] = "Brokkat", ["brp"] = "Barapasi", ["brq"] = "Breri", ["brr"] = "Birao", ["brs"] = "Baras", ["brt"] = "Bitare", ["bru"] = "บรูตะวันออก", ["brv"] = "บรูตะวันตก", ["brw"] = "Bellari", ["brx"] = "โบโด", ["bry"] = "Burui", ["brz"] = "Bilbil", ["bsa"] = "Abinomn", ["bsb"] = "Brunei Bisaya", ["bsc"] = "Bassari", ["bse"] = "Wushi", ["bsf"] = "Bauchi", ["bsg"] = "Bashkardi", ["bsh"] = "Kamkata-viri", ["bsi"] = "Bassossi", ["bsj"] = "Bangwinji", ["bsk"] = "Burushaski", ["bsl"] = "Basa-Gumna", ["bsm"] = "Busami", ["bsn"] = "Barasana", ["bso"] = "Buso", ["bsp"] = "Baga Sitemu", ["bsq"] = "Bassa", ["bsr"] = "Bassa-Kontagora", ["bss"] = "Akoose", ["bst"] = "Basketo", ["bsu"] = "Bahonsuai", ["bsv"] = "Baga Sobané", ["bsw"] = "Baiso", ["bsx"] = "Yangkam", ["bsy"] = "Sabah Bisaya", ["bta"] = "Bata", ["btc"] = "Bati (Cameroon)", ["btd"] = "Dairi Batak", ["bte"] = "Gamo-Ningi", ["btf"] = "Birgit", ["btg"] = "Gagnoa Bété", ["bth"] = "Biatah Bidayuh", ["bti"] = "Burate", ["btj"] = "Bacanese Malay", ["btk-pro"] = "Proto-Batak", ["btm"] = "Mandailing Batak", ["btn"] = "Ratagnon", ["bto"] = "Iriga Bicolano", ["btp"] = "Budibud", ["btq"] = "Batek", ["btr"] = "Baetora", ["bts"] = "Simalungun Batak", ["btt"] = "Bete-Bendi", ["btu"] = "Batu", ["btv"] = "Bateri", ["btw"] = "Butuanon", ["btx"] = "Karo Batak", ["bty"] = "Bobot", ["btz"] = "Alas-Kluet Batak", ["bua"] = "บูร์ยัต", ["bub"] = "Bua", ["bud"] = "Ntcham", ["bue"] = "Beothuk", ["buf"] = "Bushoong", ["bug"] = "บูกิส", ["buh"] = "Younuo Bunu", ["bui"] = "Bongili", ["buj"] = "Basa-Gurmana", ["buk"] = "Bukawa", ["bum"] = "Bulu (Cameroon)", ["bun"] = "Sherbro", ["buo"] = "Terei", ["bup"] = "Busoa", ["buq"] = "Brem", ["bus"] = "Bokobaru", ["but"] = "Bungain", ["buu"] = "Budu", ["buv"] = "Bun", ["buw"] = "Bubi", ["bux"] = "Boghom", ["buy"] = "Mmani", ["bva"] = "Barein", ["bvb"] = "Bube", ["bvc"] = "Baelelea", ["bvd"] = "Baeggu", ["bve"] = "Berau Malay", ["bvf"] = "Boor", ["bvg"] = "Bonkeng", ["bvh"] = "Bure", ["bvi"] = "Belanda Viri", ["bvj"] = "Baan", ["bvk"] = "Bukat", ["bvl"] = "Bolivian Sign Language", ["bvm"] = "Bamunka", ["bvn"] = "Buna", ["bvo"] = "Bolgo", ["bvp"] = "Bumang", ["bvq"] = "Birri", ["bvr"] = "Burarra", ["bvt"] = "Bati (Indonesia)", ["bvu"] = "Bukit Malay", ["bvv"] = "Baniva", ["bvw"] = "Boga", ["bvx"] = "Babole", ["bvy"] = "Baybayanon", ["bvz"] = "Bauzi", ["bwa"] = "Bwatoo", ["bwb"] = "Namosi-Naitasiri-Serua", ["bwc"] = "Bwile", ["bwd"] = "Bwaidoka", ["bwe"] = "Bwe Karen", ["bwf"] = "Boselewa", ["bwg"] = "Barwe", ["bwh"] = "Bishuo", ["bwi"] = "Baniwa", ["bwj"] = "Láá Láá Bwamu", ["bwk"] = "Bauwaki", ["bwl"] = "Bwela", ["bwm"] = "Biwat", ["bwn"] = "Wunai Bunu", ["bwo"] = "Shinasha", ["bwp"] = "Mandobo Bawah", ["bwq"] = "Southern Bobo", ["bwr"] = "Bura", ["bws"] = "Bomboma", ["bwt"] = "Bafaw", ["bwu"] = "Buli (Ghana)", ["bww"] = "Bwa", ["bwx"] = "Bu-Nao Bunu", ["bwy"] = "Cwi Bwamu", ["bwz"] = "Bwisi", ["bxa"] = "Bauro", ["bxb"] = "Belanda Bor", ["bxc"] = "Molengue", ["bxd"] = "Pela", ["bxe"] = "Ongota", ["bxf"] = "Bilur", ["bxg"] = "Bangala", ["bxh"] = "Buhutu", ["bxi"] = "Pirlatapa", ["bxj"] = "Bayungu", ["bxk"] = "Bukusu", ["bxl"] = "Jalkunan", ["bxn"] = "Burduna", ["bxo"] = "Barikanchi", ["bxp"] = "Bebil", ["bxq"] = "Beele", ["bxs"] = "Busam", ["bxv"] = "Berakou", ["bxw"] = "Banka", ["bxz"] = "Binahari", ["bya"] = "Palawan Batak", ["byb"] = "Bikya", ["byc"] = "Ubaghara", ["byd"] = "Benyadu'", ["bye"] = "Pouye", ["byf"] = "Bete", ["byg"] = "Baygo", ["byh"] = "Bujhyal", ["byi"] = "Buyu", ["byj"] = "Binawa", ["byk"] = "Biao", ["byl"] = "Bayono", ["bym"] = "Bidyara", ["byn"] = "Blin", ["byo"] = "Biyo", ["byp"] = "Bumaji", ["byq"] = "Basay", ["byr"] = "Baruya", ["bys"] = "Burak", ["byt"] = "Berti", ["byv"] = "Medumba", ["byw"] = "Belhariya", ["byx"] = "Qaqet", ["byz"] = "Banaro", ["bza"] = "Bandi", ["bzb"] = "Andio", ["bzd"] = "Bribri", ["bze"] = "Jenaama Bozo", ["bzf"] = "Boikin", ["bzg"] = "Babuza", ["bzh"] = "Mapos Buang", ["bzi"] = "บีซู", ["bzj"] = "Belizean Creole", ["bzk"] = "Nicaraguan Creole", ["bzl"] = "Boano (Sulawesi)", ["bzm"] = "Bolondo", ["bzn"] = "Boano (Maluku)", ["bzo"] = "Bozaba", ["bzp"] = "Kemberano", ["bzq"] = "Buli (Indonesia)", ["bzr"] = "Biri", ["bzs"] = "Brazilian Sign Language", ["bzu"] = "Burmeso", ["bzv"] = "Bebe", ["bzw"] = "Basa", ["bzx"] = "Hainyaxo Bozo", ["bzy"] = "Obanliku", ["bzz"] = "Evant", ["ca"] = "กาตาลา", ["caa"] = "Ch'orti'", ["cab"] = "Garifuna", ["cac"] = "Chuj", ["cad"] = "Caddo", ["cae"] = "Laalaa", ["caf"] = "Southern Carrier", ["cag"] = "Nivaclé", ["cah"] = "Cahuarano", ["caj"] = "Chané", ["cak"] = "Kaqchikel", ["cal"] = "Carolinian", ["cam"] = "Cèmuhî", ["can"] = "Chambri", ["cao"] = "Chácobo", ["cap"] = "Chipaya", ["caq"] = "คาร์นิโคบาร์", ["car"] = "Kari'na", ["cas"] = "Tsimané", ["cau-abz-pro"] = "Proto-Abkhaz-Abaza", ["cau-and-pro"] = "Proto-Andian", ["cau-ava-pro"] = "Proto-Avaro-Andian", ["cau-cir-pro"] = "Proto-Circassian", ["cau-drg-pro"] = "Proto-Dargwa", ["cau-lzg-pro"] = "Proto-Lezghian", ["cau-nec-pro"] = "คอเคเซียนตะวันออกเฉียงเหนือดั้งเดิม", ["cau-nkh-pro"] = "นัคดั้งเดิม", ["cau-nwc-pro"] = "คอเคเซียนตะวันตกเฉียงเหนือดั้งเดิม", ["cau-tsz-pro"] = "Proto-Tsezian", ["cav"] = "Cavineña", ["caw"] = "Kallawaya", ["cax"] = "Chiquitano", ["cay"] = "Cayuga", ["caz"] = "Canichana", ["cba-ata"] = "Atanques", ["cba-cat"] = "Catío Chibcha", ["cba-dor"] = "Dorasque", ["cba-dui"] = "Duit", ["cba-hue"] = "Huetar", ["cba-nut"] = "Nutabe", ["cba-pro"] = "Proto-Chibchan", ["cbb"] = "Cabiyarí", ["cbc"] = "Carapana", ["cbd"] = "Carijona", ["cbg"] = "Chimila", ["cbi"] = "Chachi", ["cbj"] = "Ede Cabe", ["cbk"] = "ชาบากาโน", ["cbl"] = "Bualkhaw Chin", ["cbn"] = "ญัฮกุร", ["cbo"] = "Izora", ["cbq"] = "Tsucuba", ["cbr"] = "Cashibo-Cacataibo", ["cbs"] = "Cashinahua", ["cbt"] = "Chayahuita", ["cbu"] = "Candoshi-Shapra", ["cbv"] = "Cacua", ["cbw"] = "Kinabalian", ["cby"] = "Carabayo", ["cca"] = "Cauca", ["ccc"] = "Chamicuro", ["ccd"] = "Cafundó", ["cce"] = "Chopi", ["ccg"] = "Chamba Daka", ["cch"] = "Atsam", ["ccj"] = "Kasanga", ["ccl"] = "Cutchi-Swahili", ["ccm"] = "Malaccan Creole Malay", ["cco"] = "Comaltepec Chinantec", ["ccp"] = "จักมา", ["ccr"] = "Cacaopera", ["ccs-gzn-pro"] = "จอร์เจียน-แซนดั้งเดิม", ["ccs-pro"] = "คาร์ทเวเลียนดั้งเดิม", ["cda"] = "Choni", ["cdc-cbm-pro"] = "ชาดิกตอนกลางดั้งเดิม", ["cdc-mas-pro"] = "Proto-Masa", ["cdc-pro"] = "ชาดิกดั้งเดิม", ["cdd-pro"] = "Proto-Caddoan", ["cde"] = "Chenchu", ["cdf"] = "Chiru", ["cdh"] = "Chambeali", ["cdi"] = "Chodri", ["cdj"] = "Churahi", ["cdm"] = "Chepang", ["cdn"] = "Chaudangsi", ["cdo"] = "หมิ่นตะวันออก", ["cdr"] = "Cinda-Regi-Tiyal", ["cds"] = "Chadian Sign Language", ["cdy"] = "Chadong", ["cdz"] = "Koda", ["ce"] = "เชเชน", ["cea"] = "Lower Chehalis", ["ceb"] = "เซบัวโน", ["ceg"] = "Chamacoco", ["cel-bry-pro"] = "บริทอนิกดั้งเดิม", ["cel-gal"] = "Gallaecian", ["cel-gau"] = "กอล", ["cel-pro"] = "เคลติกดั้งเดิม", ["cen"] = "Cen", ["cet"] = "Centúúm", ["cfa"] = "Dijim-Bwilim", ["cfd"] = "Cara", ["cfg"] = "Como Karim", ["cfm"] = "Falam Chin", ["cga"] = "Changriwa", ["cgc"] = "Kagayanen", ["cgg"] = "Rukiga", ["cgk"] = "Chocangaca", ["ch"] = "ชามอร์โร", ["chb"] = "Chibcha", ["chc"] = "Catawba", ["chd"] = "Highland Oaxaca Chontal", ["chf"] = "Chontal Maya", ["chg"] = "ชากาทาย", ["chh"] = "Chinook", ["chi-pro"] = "Proto-Chimakuan", ["chj"] = "Ojitlán Chinantec", ["chk"] = "Chuukese", ["chl"] = "Cahuilla", ["chm-pro"] = "Proto-Mari", ["chn"] = "Chinook Jargon", ["cho"] = "Choctaw", ["chp"] = "Chipewyan", ["chq"] = "Quiotepec Chinantec", ["chr"] = "เชโรกี", ["cht"] = "Cholón", ["chw"] = "Chuabo", ["chx"] = "Chantyal", ["chy"] = "เชเยนน์", ["chz"] = "Ozumacín Chinantec", ["cia"] = "Cia-Cia", ["cib"] = "Ci Gbe", ["cic"] = "Chickasaw", ["cid"] = "Chimariko", ["cie"] = "Cineni", ["cih"] = "Chinali", ["cik"] = "Chitkuli Kinnauri", ["cim"] = "Cimbrian", ["cin"] = "Cinta Larga", ["cip"] = "Chiapanec", ["cir"] = "Tinrin", ["ciy"] = "Chaima", ["cja"] = "จามตะวันตก", ["cje"] = "Chru", ["cjh"] = "Upper Chehalis", ["cji"] = "Chamalal", ["cjk"] = "Chokwe", ["cjm"] = "จามตะวันออก", ["cjn"] = "Chenapian", ["cjo"] = "Ashéninka Pajonal", ["cjp"] = "Cabécar", ["cjs"] = "โชร์", ["cjv"] = "Chuave", ["cjy"] = "จิ้น", ["ckb"] = "เคิร์ดตอนกลาง", ["ckh"] = "Chak", ["ckl"] = "Cibak", ["ckn"] = "Kaang Chin", ["cko"] = "Anufo", ["ckq"] = "Kajakse", ["ckr"] = "Kairak", ["cks"] = "Tayo", ["ckt"] = "ชุกชี", ["cku"] = "Koasati", ["ckv"] = "กบาลัน", ["ckx"] = "Caka", ["cky"] = "Cakfem-Mushere", ["ckz"] = "Kaqchikel-K'iche' Mixed Language", ["cla"] = "Ron", ["clc"] = "Chilcotin", ["cld"] = "Chaldean Neo-Aramaic", ["cle"] = "Lealao Chinantec", ["clh"] = "Chilisso", ["cli"] = "Chakali", ["clj"] = "Laitu Chin", ["clk"] = "Idu", ["cll"] = "Chala", ["clm"] = "Klallam", ["clo"] = "Lowland Oaxaca Chontal", ["clt"] = "Lutuv", ["clu"] = "Caluyanun", ["clw"] = "Chulym", ["cly"] = "Eastern Highland Chatino", ["cma"] = "หมะ", ["cmc-pro"] = "จามิกดั้งเดิม", ["cme"] = "Cerma", ["cmg"] = "มองโกเลียคลาสสิก", ["cmi"] = "Emberá-Chamí", ["cml"] = "Campalagian", ["cmm"] = "Michigamea", ["cmn"] = "จีนกลาง", ["cmo"] = "มนองตอนกลาง", ["cmr"] = "Mro Chin", ["cms"] = "Messapic", ["cmt"] = "Camtho", ["cna"] = "Changthang", ["cnb"] = "Chinbon Chin", ["cnc"] = "Cốông", ["cng"] = "Northern Qiang", ["cnh"] = "Lai", ["cni"] = "Asháninka", ["cnk"] = "Khumi Chin", ["cnl"] = "Lalana Chinantec", ["cno"] = "Con", ["cnp"] = "ผิงเหนือ", ["cns"] = "Central Asmat", ["cnt"] = "Tepetotutla Chinantec", ["cnu"] = "Chenoua", ["cnw"] = "Ngawn Chin", ["cnx"] = "Middle Cornish", ["co"] = "คอร์ซิกา", ["coa"] = "Cocos Islands Malay", ["cob"] = "Chicomuceltec", ["coc"] = "Cocopa", ["cod"] = "Cocama", ["coe"] = "Koreguaje", ["cof"] = "Tsafiki", ["cog"] = "ชอง", ["coh"] = "Chichonyi-Chidzihana-Chikauma", ["coj"] = "Cochimi", ["cok"] = "Santa Teresa Cora", ["col"] = "Columbia-Wenatchi", ["com"] = "Comanche", ["con"] = "Cofán", ["coo"] = "Comox", ["cop"] = "คอปติก", ["coq"] = "Coquille", ["cot"] = "Caquinte", ["cou"] = "Wamey", ["cov"] = "เฉ่าเหมียว", ["cow"] = "Cowlitz", ["cox"] = "Nanti", ["coy"] = "Coyaima", ["coz"] = "Chochotec", ["cpa"] = "Palantla Chinantec", ["cpb"] = "Ucayali-Yurúa Ashéninka", ["cpc"] = "Ajyíninka Apurucayali", ["cpg"] = "Cappadocian Greek", ["cpi"] = "Chinese Pidgin English", ["cpn"] = "Cherepon", ["cpo"] = "Kpee", ["cps"] = "Capiznon", ["cpu"] = "Pichis Ashéninka", ["cpx"] = "ผูเซียน", ["cpy"] = "South Ucayali Ashéninka", ["cqd"] = "Chuanqiandian Cluster Miao", ["cr"] = "ครี", ["cra"] = "Chara", ["crb"] = "Kalinago", ["crc"] = "Lonwolwol", ["crd"] = "Coeur d'Alene", ["crf"] = "Caramanta", ["crg"] = "Michif", ["crh"] = "ตาตาร์แบบไครเมีย", ["cri"] = "Sãotomense", ["crj"] = "Southern East Cree", ["crk"] = "Plains Cree", ["crl"] = "Northern East Cree", ["crm"] = "Moose Cree", ["crn"] = "Cora", ["cro"] = "Crow", ["crp-bip"] = "Basque-Icelandic Pidgin", ["crp-gep"] = "West Greenlandic Pidgin", ["crp-kia"] = "Kiautschou German Pidgin", ["crp-mar"] = "Maroon Spirit Language", ["crp-mpp"] = "Macau Pidgin Portuguese", ["crp-rsn"] = "Russenorsk", ["crp-slb"] = "Solombala English", ["crp-spp"] = "Samoan Plantation Pidgin", ["crp-tpr"] = "Taimyr Pidgin Russian", ["crq"] = "Iyo'wujwa Chorote", ["crr"] = "Carolina Algonquian", ["crs"] = "Seychellois Creole", ["crt"] = "Iyojwa'ja Chorote", ["crv"] = "Chaura", ["crw"] = "Chrau", ["crx"] = "Carrier", ["cry"] = "Cori", ["crz"] = "Cruzeño", ["cs"] = "เช็ก", ["csa"] = "Chiltepec Chinantec", ["csb"] = "คาชุบ", ["csc"] = "Catalan Sign Language", ["csd"] = "Chiangmai Sign Language", ["cse"] = "Czech Sign Language", ["csf"] = "Cuban Sign Language", ["csg"] = "Chilean Sign Language", ["csh"] = "Asho Chin", ["csi"] = "Coast Miwok", ["csj"] = "Songlai Chin", ["csk"] = "Jola-Kasa", ["csl"] = "Chinese Sign Language", ["csm"] = "Central Sierra Miwok", ["csn"] = "Colombian Sign Language", ["cso"] = "Sochiapam Chinantec", ["csp"] = "ผิงใต้", ["csq"] = "Croatian Sign Language", ["csr"] = "Costa Rican Sign Language", ["css"] = "Southern Ohlone", ["cst"] = "Northern Ohlone", ["csu-bba-pro"] = "Proto-Bongo-Bagirmi", ["csu-maa-pro"] = "Proto-Mangbetu", ["csu-pro"] = "Proto-Central Sudanic", ["csu-sar-pro"] = "Proto-Sara", ["csv"] = "Sumtu Chin", ["csw"] = "Swampy Cree", ["csx"] = "Cambodian Sign Language", ["csy"] = "Siyin Chin", ["csz"] = "Coos", ["cta"] = "Tataltepec Chatino", ["ctc"] = "Chetco-Tolowa", ["ctd"] = "Tedim Chin", ["cte"] = "Tepinapa Chinantec", ["ctg"] = "Chittagonian", ["cth"] = "Thaiphum Chin", ["ctl"] = "Tlacoatzintepec Chinantec", ["ctm"] = "Chitimacha", ["ctn"] = "Chhintange", ["cto"] = "Emberá-Catío", ["ctp"] = "Western Highland Chatino", ["cts"] = "Northern Catanduanes Bicolano", ["ctt"] = "Wayanad Chetti", ["ctu"] = "Chol", ["ctz"] = "Zacatepec Chatino", ["cu"] = "สลาวอนิกคริสตจักรเก่า", ["cua"] = "Cua", ["cub"] = "Cubeo", ["cuc"] = "Usila Chinantec", ["cug"] = "Cung", ["cuh"] = "Chuka", ["cui"] = "Cuiba", ["cuj"] = "Mashco Piro", ["cuk"] = "Kuna", ["cul"] = "Culina", ["cuo"] = "Cumanagoto", ["cup"] = "Cupeño", ["cuq"] = "จุน", ["cur"] = "Chhulung", ["cus-ash"] = "Ashraaf", ["cus-hec-pro"] = "Proto-Highland East Cushitic", ["cus-pro"] = "Proto-Cushitic", ["cus-som-pro"] = "โซมาลอยด์ดั้งเดิม", ["cus-sou-pro"] = "Proto-South Cushitic", ["cut"] = "Teutila Cuicatec", ["cuu"] = "Tai Ya", ["cuv"] = "Cuvok", ["cuw"] = "Chukwa", ["cux"] = "Tepeuxila Cuicatec", ["cuy"] = "Cuitlatec", ["cv"] = "ชูวัช", ["cvg"] = "Chug", ["cvn"] = "Valle Nacional Chinantec", ["cwa"] = "Kabwa", ["cwb"] = "Maindo", ["cwd"] = "Woods Cree", ["cwe"] = "Kwere", ["cwg"] = "Chewong", ["cwt"] = "Kuwaataay", ["cy"] = "เวลส์", ["cya"] = "Nopala Chatino", ["cyb"] = "Cayubaba", ["cyo"] = "Cuyunon", ["czh"] = "Huizhou", ["czk"] = "Knaanic", ["czn"] = "Zenzontepec Chatino", ["czo"] = "หมิ่นตอนกลาง", ["czt"] = "Zotung Chin", ["da"] = "เดนมาร์ก", ["daa"] = "Dangaléat", ["dac"] = "Dambi", ["dad"] = "Marik", ["dae"] = "Duupa", ["dag"] = "Dagbani", ["dah"] = "Gwahatike", ["dai"] = "Day", ["daj"] = "Dar Fur Daju", ["dak"] = "ดาโคตา", ["dal"] = "Dahalo", ["dam"] = "Damakawa", ["dao"] = "Daai Chin", ["daq"] = "Dandami Maria", ["dar"] = "Dargwa", ["das"] = "Daho-Doo", ["dau"] = "Dar Sila Daju", ["dav"] = "Taita", ["daw"] = "Davawenyo", ["dax"] = "Dayi", ["daz"] = "Dao", ["dba"] = "Bangime", ["dbb"] = "Deno", ["dbd"] = "Dadiya", ["dbe"] = "Dabe", ["dbf"] = "Edopi", ["dbg"] = "Dogul Dom", ["dbi"] = "Doka", ["dbj"] = "อีดาอัน", ["dbl"] = "Dyirbal", ["dbm"] = "Duguri", ["dbn"] = "Duriankere", ["dbo"] = "Dulbu", ["dbp"] = "Duwai", ["dbq"] = "Daba", ["dbr"] = "Dabarre", ["dbt"] = "Ben Tey", ["dbu"] = "Bondum Dom Dogon", ["dbv"] = "Dungu", ["dbw"] = "Bankan Tey Dogon", ["dby"] = "Dibiyaso", ["dcc"] = "Deccani", ["dcr"] = "เนเกอร์ฮอลันดส์", ["dda"] = "Dadi Dadi", ["ddd"] = "Dongotono", ["dde"] = "Doondo", ["ddg"] = "Fataluku", ["ddi"] = "Diodio", ["ddj"] = "Jaru", ["ddn"] = "Dendi", ["ddo"] = "Tsez", ["ddr"] = "Dhudhuroa", ["dds"] = "Donno So Dogon", ["ddw"] = "Dawera-Daweloor", ["de"] = "เยอรมัน", ["dec"] = "Dagik", ["ded"] = "Dedua", ["dee"] = "Dewoin", ["def"] = "Dezfuli", ["deg"] = "Degema", ["deh"] = "Dehwari", ["dei"] = "Demisa", ["dem"] = "Dem", ["dep"] = "Pidgin Delaware", ["der"] = "Deori", ["des"] = "Desano", ["dev"] = "Domung", ["dez"] = "Dengese", ["dga"] = "Southern Dagaare", ["dgb"] = "Bunoge", ["dgc"] = "Casiguran Dumagat Agta", ["dgd"] = "Dagaari Dioula", ["dge"] = "Degenan", ["dgg"] = "Doga", ["dgh"] = "Dghwede", ["dgi"] = "Northern Dagara", ["dgk"] = "Dagba", ["dgn"] = "Dagoman", ["dgo"] = "Hindi Dogri", ["dgr"] = "Dogrib", ["dgs"] = "Dogoso", ["dgt"] = "Ntra'ngith", ["dgw"] = "Daungwurrung", ["dgx"] = "Doghoro", ["dgz"] = "Daga", ["dhd"] = "Dhundhari", ["dhg"] = "Dhangu", ["dhi"] = "Dhimal", ["dhl"] = "Dhalandji", ["dhm"] = "Zemba", ["dhn"] = "Dhanki", ["dho"] = "Dhodia", ["dhr"] = "Tharrgari", ["dhs"] = "Dhaiso", ["dhu"] = "Dhurga", ["dhv"] = "Drehu", ["dhw"] = "Danuwar", ["dhx"] = "Dhungaloo", ["dia"] = "Dia", ["dib"] = "South Central Dinka", ["dic"] = "Lakota Dida", ["did"] = "Didinga", ["dif"] = "Dieri", ["dig"] = "Digo", ["dii"] = "Dimbong", ["dij"] = "Dai", ["dik"] = "Southwestern Dinka", ["dil"] = "Dilling", ["dim"] = "Dime", ["din"] = "Dinka", ["dio"] = "Dibo", ["dip"] = "Northeastern Dinka", ["dir"] = "Dirim", ["dis"] = "Dimasa", ["diu"] = "Gciriku", ["diw"] = "Northwestern Dinka", ["dix"] = "Dixon Reef", ["diy"] = "Diuwe", ["diz"] = "Ding", ["dja"] = "Djadjawurrung", ["djb"] = "Djinba", ["djc"] = "Dar Daju Daju", ["djd"] = "Jaminjung", ["dje"] = "Zarma", ["djf"] = "Djangun", ["dji"] = "Djinang", ["djj"] = "Ndjébbana", ["djk"] = "Aukan", ["djl"] = "Djiwarli", ["djm"] = "Jamsay", ["djn"] = "Djauan", ["djo"] = "Jangkang", ["djr"] = "Djambarrpuyngu", ["dju"] = "Kapriman", ["djw"] = "Djawi", ["dka"] = "Dakpa", ["dkk"] = "Dakka", ["dkr"] = "Kuijau", ["dks"] = "Southeastern Dinka", ["dkx"] = "Mazagway", ["dlg"] = "Dolgan", ["dlk"] = "Dahalik", ["dlm"] = "แดลเมเชีย", ["dln"] = "Darlong", ["dma"] = "Duma", ["dmb"] = "Mombo Dogon", ["dmc"] = "Gavak", ["dmd"] = "Madhi Madhi", ["dme"] = "Dugwor", ["dmf"] = "Medefaidrin", ["dmg"] = "กีนาบาตางันตอนบน", ["dmk"] = "Domaaki", ["dml"] = "Dameli", ["dmm"] = "Dama (Nigeria)", ["dmn-dam"] = "Dama (Sierra Leone)", ["dmn-mdw-pro"] = "Proto-Western Mande", ["dmn-pro"] = "Proto-Mande", ["dmo"] = "Kemezung", ["dmr"] = "East Damar", ["dms"] = "Dampelas", ["dmu"] = "Dubu", ["dmv"] = "Dumpas", ["dmw"] = "Mudburra", ["dmx"] = "Dema", ["dmy"] = "Demta", ["dna"] = "Upper Grand Valley Dani", ["dnd"] = "Daonda", ["dne"] = "Ndendeule", ["dng"] = "ดุงกาน", ["dni"] = "Lower Grand Valley Dani", ["dnj"] = "Dan", ["dnk"] = "Dengka", ["dnn"] = "Dzuun", ["dno"] = "Ndrulo", ["dnr"] = "Danaru", ["dnt"] = "Mid Grand Valley Dani", ["dnu"] = "Danau", ["dnv"] = "Danu", ["dnw"] = "Western Dani", ["dny"] = "Dení", ["doa"] = "Dom", ["dob"] = "Dobu", ["doc"] = "ต้งเหนือ", ["doe"] = "Doe", ["dof"] = "Domu", ["doh"] = "Dong", ["doi"] = "Dogri", ["dok"] = "Dondo", ["dol"] = "Doso", ["don"] = "Doura", ["doo"] = "Dongo", ["dop"] = "Lukpa", ["doq"] = "Dominican Sign Language", ["dor"] = "Dori'o", ["dos"] = "Dogosé", ["dot"] = "Dass", ["dov"] = "Toka-Leya", ["dow"] = "Doyayo", ["dox"] = "Bussa", ["doy"] = "Dompo", ["doz"] = "Dorze", ["dpp"] = "Papar", ["dra-bry"] = "Beary", ["dra-cen-pro"] = "ดราวิเดียนตอนกลางดั้งเดิม", ["dra-mkn"] = "Middle Kannada", ["dra-nor-pro"] = "ดราวิเดียนเหนือดั้งเดิม", ["dra-okn"] = "Old Kannada", ["dra-ote"] = "Old Telugu", ["dra-pro"] = "ดราวิเดียนดั้งเดิม", ["dra-sdo-pro"] = "ดราวิเดียนใต้ที่หนึ่งดั้งเดิม", ["dra-sdt-pro"] = "ดราวิเดียนใต้ที่สองดั้งเดิม", ["dra-sou-pro"] = "ดราวิเดียนใต้ดั้งเดิม", ["drb"] = "Dair", ["drc"] = "Minderico", ["drd"] = "Darmiya", ["drg"] = "Rungus", ["dri"] = "Lela", ["drl"] = "Baagandji", ["drn"] = "West Damar", ["dro"] = "Daro-Matu Melanau", ["drq"] = "Dura", ["drs"] = "Gedeo", ["dru"] = "Rukai", ["dru-pro"] = "Proto-Rukai", ["dry"] = "Darai", ["dsb"] = "ซอร์บตอนล่าง", ["dse"] = "Dutch Sign Language", ["dsh"] = "Daasanach", ["dsi"] = "Disa", ["dsl"] = "Danish Sign Language", ["dsn"] = "Dusner", ["dso"] = "Desiya", ["dsq"] = "Tadaksahak", ["dta"] = "Daur", ["dtb"] = "Labuk-Kinabatangan Kadazan", ["dtd"] = "Ditidaht", ["dth"] = "Adithinngithigh", ["dti"] = "Ana Tinga Dogon", ["dtk"] = "Tene Kan Dogon", ["dtm"] = "Tomo Kan Dogon", ["dto"] = "Tommo So", ["dtp"] = "ดูซุนตอนกลาง", ["dtr"] = "Lotud", ["dts"] = "Toro So Dogon", ["dtt"] = "Toro Tegu Dogon", ["dtu"] = "Tebul Ure Dogon", ["dty"] = "Doteli", ["dua"] = "Duala", ["dub"] = "Dubli", ["duc"] = "Duna", ["due"] = "Umiray Dumaget Agta", ["duf"] = "Dumbea", ["dug"] = "Chiduruma", ["duh"] = "Dungra Bhil", ["dui"] = "Dumun", ["duk"] = "Uyajitaya", ["dul"] = "Alabat Island Agta", ["dum"] = "ดัตช์กลาง", ["dun"] = "Dusun Deyah", ["duo"] = "Dupaningan Agta", ["dup"] = "Duano", ["duq"] = "Dusun Malang", ["dur"] = "Dii", ["dus"] = "Dumi", ["duu"] = "Drung", ["duv"] = "Duvle", ["duw"] = "Dusun Witu", ["dux"] = "Duun", ["duy"] = "Dicamay Agta", ["duz"] = "Duli", ["dv"] = "มัลดีฟส์", ["dva"] = "Duau", ["dwa"] = "Diri", ["dwr"] = "เดาโร", ["dwu"] = "Dhuwal", ["dww"] = "Dawawa", ["dwy"] = "Dhuwaya", ["dwz"] = "Dewas Rai", ["dya"] = "Dyan", ["dyb"] = "Dyaberdyaber", ["dyd"] = "Dyugun", ["dyg"] = "Villa Viciosa Agta", ["dyi"] = "Djimini", ["dym"] = "Yanda Dogon", ["dyn"] = "Dyangadi", ["dyo"] = "Jola-Fonyi", ["dyu"] = "Dyula", ["dyy"] = "Dyaabugay", ["dz"] = "ซองคา", ["dza"] = "Tunzu", ["dzg"] = "Dazaga", ["dzl"] = "Dzala", ["dzn"] = "Dzando", ["ebg"] = "Ebughu", ["ebk"] = "Eastern Bontoc", ["ebr"] = "Ebrié", ["ebu"] = "Embu", ["ecr"] = "Eteocretan", ["ecs"] = "Ecuadorian Sign Language", ["ecy"] = "Eteocypriot", ["ee"] = "เอเว", ["eee"] = "E", ["efa"] = "Efai", ["efe"] = "Efe", ["efi"] = "Efik", ["ega"] = "Ega", ["egl"] = "เอมีเลีย", ["ego"] = "Eggon", ["egx-dem"] = "Demotic Egyptian", ["egy"] = "อียิปต์", ["ehu"] = "Ehueun", ["eip"] = "Eipomek", ["eit"] = "Eitiep", ["eiv"] = "Askopan", ["eja"] = "Ejamat", ["eka"] = "Ekajuk", ["eke"] = "Ekit", ["ekg"] = "Ekari", ["eki"] = "Eki", ["ekl"] = "Kolhe", ["ekm"] = "Elip", ["eko"] = "Koti", ["ekp"] = "Ekpeye", ["ekr"] = "Yace", ["eky"] = "กะยาตะวันออก", ["el"] = "กรีก", ["ele"] = "Elepi", ["elh"] = "El Hugeirat", ["eli"] = "Nding", ["elk"] = "Elkei", ["elm"] = "Eleme", ["elo"] = "El Molo", ["elu"] = "Elu", ["elx"] = "Elamite", ["ema"] = "Emai", ["emb"] = "Embaloh", ["eme"] = "Emerillon", ["emg"] = "Eastern Meohang", ["emi"] = "Mussau-Emira", ["emk"] = "Eastern Maninkakan", ["emm"] = "Mamulique", ["emn"] = "Eman", ["emp"] = "Northern Emberá", ["ems"] = "อาลูตีก", ["emu"] = "Eastern Muria", ["emw"] = "Emplawas", ["emx"] = "Erromintxela", ["emy"] = "Epigraphic Mayan", ["en"] = "อังกฤษ", ["ena"] = "Apali", ["enb"] = "Markweeta", ["enc"] = "En", ["end"] = "Ende", ["enf"] = "Forest Enets", ["enh"] = "Tundra Enets", ["enl"] = "Enlhet", ["enm"] = "อังกฤษกลาง", ["enn"] = "Engenni", ["eno"] = "Enggano", ["enq"] = "Enga", ["enr"] = "Emem", ["enu"] = "Enu", ["env"] = "Enwan", ["enw"] = "Enwang", ["enx"] = "Enxet", ["eo"] = "เอสเปรันโต", ["eot"] = "Eotile", ["epi"] = "Epie", ["era"] = "Eravallan", ["erg"] = "Sie", ["erh"] = "Eruwa", ["eri"] = "Ogea", ["erk"] = "South Efate", ["ero-gsz"] = "Geshiza", ["ero-nya"] = "Nyagrong Minyag", ["ero-tau"] = "Stau", ["err"] = "Erre", ["ers"] = "Ersu", ["ert"] = "Eritai", ["erw"] = "Erokwanas", ["es"] = "สเปน", ["ese"] = "Ese Ejja", ["esh"] = "เอชเตฮาร์ด", ["esl"] = "Egyptian Sign Language", ["esm"] = "Esuma", ["esn"] = "Salvadoran Sign Language", ["eso"] = "Estonian Sign Language", ["esq"] = "Esselen", ["ess"] = "Central Siberian Yupik", ["esu"] = "ยุปปิก", ["esx-esk-pro"] = "เอสกิโมดั้งเดิม", ["esx-ink"] = "Inuktun", ["esx-inq"] = "Inuinnaqtun", ["esx-inu-pro"] = "อินุอิตดั้งเดิม", ["esx-pro"] = "Proto-Eskimo-Aleut", ["esx-tut"] = "Tunumiisut", ["esy"] = "Eskayan", ["et"] = "เอสโตเนีย", ["etb"] = "Etebi", ["etc"] = "Etchemin", ["eth"] = "Ethiopian Sign Language", ["etn"] = "Eton (Vanuatu)", ["eto"] = "Eton (Cameroon)", ["etr"] = "Edolo", ["ets"] = "Yekhee", ["ett"] = "อีทรัสคัน", ["etu"] = "Ejagham", ["etx"] = "Eten", ["etz"] = "Semimi", ["eu"] = "บาสก์", ["euq-pro"] = "บาสก์ดั้งเดิม", ["eve"] = "เอเว็น", ["evh"] = "Uvbie", ["evn"] = "เอเวนค์", ["ewo"] = "Ewondo", ["ext"] = "เอซเตรมาดูรา", ["eya"] = "Eyak", ["eyo"] = "Keiyo", ["eza"] = "Ezaa", ["eze"] = "Uzekwe", ["fa"] = "เปอร์เซีย", ["faa"] = "Fasu", ["fab"] = "Annobonese", ["fad"] = "Wagi", ["faf"] = "Fagani", ["fag"] = "Finongan", ["fah"] = "Baissa Fali", ["fai"] = "Faiwol", ["faj"] = "Faita", ["fak"] = "Fang (Beboid)", ["fal"] = "South Fali", ["fam"] = "Fam", ["fan"] = "Fang (Bantu)", ["fap"] = "Palor", ["far"] = "Fataleka", ["fau"] = "Fayu", ["fax"] = "ฟาลา", ["fay"] = "Southwestern Fars", ["faz"] = "Northwestern Fars", ["fbl"] = "West Albay Bikol", ["fcs"] = "Quebec Sign Language", ["fer"] = "Feroge", ["ff"] = "ฟูลา", ["ffi"] = "Foia Foia", ["fgr"] = "Fongoro", ["fi"] = "ฟินแลนด์", ["fia"] = "Nobiin", ["fie"] = "Fyer", ["fip"] = "Fipa", ["fir"] = "Firan", ["fit"] = "Meänkieli", ["fiw"] = "Fiwaga", ["fj"] = "ฟีจี", ["fkk"] = "Kirya-Konzel", ["fkv"] = "Kven", ["fla"] = "Montana Salish", ["flh"] = "Foau", ["fli"] = "Fali", ["fll"] = "North Fali", ["fln"] = "Flinders Island", ["flr"] = "Fuliiru", ["fly"] = "Tsotsitaal", ["fmp"] = "Fe'fe'", ["fmu"] = "Far Western Muria", ["fng"] = "Fanagalo", ["fni"] = "Fania", ["fo"] = "แฟโร", ["fod"] = "Foodo", ["foi"] = "Foi", ["fom"] = "Foma", ["fon"] = "Fon", ["for"] = "Fore", ["fos"] = "Siraya", ["fpe"] = "Pichinglis", ["fqs"] = "Fas", ["fr"] = "ฝรั่งเศส", ["frd"] = "Fordata", ["frm"] = "ฝรั่งเศสกลาง", ["fro"] = "ฝรั่งเศสเก่า", ["frp"] = "ฟร็องโก-พรอว็องส์", ["frq"] = "Forak", ["frr"] = "ฟรีเชียเหนือ", ["frt"] = "Fortsenal", ["fse"] = "Finnish Sign Language", ["fsl"] = "French Sign Language", ["fss"] = "Finnish-Swedish Sign Language", ["fud"] = "East Futuna", ["fuj"] = "Ko", ["fum"] = "Fum", ["fun"] = "Fulniô", ["fur"] = "ฟรียูลี", ["fut"] = "Futuna-Aniwa", ["fuu"] = "Furu", ["fuy"] = "Fuyug", ["fvr"] = "Fur", ["fwa"] = "Fwâi", ["fwe"] = "Fwe", ["fy"] = "ฟรีเชียตะวันตก", ["ga"] = "ไอริช", ["gaa"] = "Ga", ["gab"] = "Gabri", ["gac"] = "Mixed Great Andamanese", ["gad"] = "Gaddang", ["gae"] = "Warekena", ["gaf"] = "Gende", ["gag"] = "กากาอุซ", ["gah"] = "Alekano", ["gai"] = "Borei", ["gaj"] = "Gadsup", ["gak"] = "Gamkonora", ["gal"] = "Galoli", ["gam"] = "Kandawo", ["gan"] = "กั้น", ["gao"] = "Gants", ["gap"] = "Gal", ["gaq"] = "Gata'", ["gar"] = "Galeya", ["gas"] = "Adiwasi Garasia", ["gat"] = "Kenati", ["gau"] = "Kondekor", ["gaw"] = "Nobonob", ["gay"] = "Gayo", ["gba-pro"] = "Proto-Gbaya", ["gbb"] = "Kaytetye", ["gbd"] = "Karadjeri", ["gbe"] = "Niksek", ["gbf"] = "Gaikundi", ["gbg"] = "Gbanziri", ["gbh"] = "Defi Gbe", ["gbi"] = "Galela", ["gbj"] = "Bodo Gadaba", ["gbk"] = "Gaddi", ["gbl"] = "Gamit", ["gbm"] = "Garhwali", ["gbn"] = "Mo'da", ["gbo"] = "Northern Grebo", ["gbp"] = "Gbaya-Bossangoa", ["gbq"] = "Gbaya-Bozoum", ["gbr"] = "Gbagyi", ["gbs"] = "Gbesi Gbe", ["gbu"] = "Gagadu", ["gbv"] = "Gbanu", ["gbw"] = "Gabi", ["gbx"] = "Eastern Xwla Gbe", ["gby"] = "Gbari", ["gcc"] = "Mali", ["gcd"] = "Ganggalida", ["gce"] = "Galice", ["gcf"] = "Antillean Creole", ["gcl"] = "Grenadian Creole English", ["gcn"] = "Gaina", ["gcr"] = "Guianese Creole", ["gct"] = "Colonia Tovar German", ["gd"] = "แกลิกแบบสกอตแลนด์", ["gdb"] = "Ollari", ["gdc"] = "Gugu Badhun", ["gdd"] = "Gedaged", ["gde"] = "Gude", ["gdf"] = "Guduf-Gava", ["gdg"] = "Ga'dang", ["gdh"] = "Gadjerawang", ["gdi"] = "Gundi", ["gdj"] = "Kurtjar", ["gdk"] = "Gadang", ["gdl"] = "Dirasha", ["gdm"] = "Laal", ["gdn"] = "Umanakaina", ["gdo"] = "Godoberi", ["gdq"] = "Mehri", ["gdr"] = "Wipi", ["gds"] = "Ghandruk Sign Language", ["gdt"] = "Kungardutyi", ["gdu"] = "Gudu", ["gdx"] = "Godwari", ["gea"] = "Geruma", ["geb"] = "Kire", ["gec"] = "Gboloo Grebo", ["ged"] = "Gade", ["geg"] = "Gengle", ["geh"] = "Hutterisch", ["gei"] = "Gebe", ["gej"] = "Gen", ["gek"] = "Gerka", ["gel"] = "Fakkanci", ["gem-pro"] = "เจอร์แมนิกดั้งเดิม", ["geq"] = "Geme", ["ges"] = "Geser-Gorom", ["gev"] = "Viya", ["gew"] = "Gera", ["gex"] = "Garre", ["gey"] = "Enya", ["gez"] = "กืออึซ", ["gfk"] = "Patpatar", ["gft"] = "Gafat", ["gga"] = "Gao", ["ggb"] = "Gbii", ["ggd"] = "Gugadj", ["gge"] = "Guragone", ["ggg"] = "Gurgula", ["ggk"] = "Kungarakany", ["ggl"] = "Ganglau", ["ggn"] = "Eastern Gurung", ["ggt"] = "Gitua", ["ggu"] = "Gban", ["ggw"] = "Gogodala", ["gha"] = "Ghadames", ["ghc"] = "แกลิกคลาสสิก", ["ghe"] = "Southern Ghale", ["ghh"] = "Northern Ghale", ["ghk"] = "Geko Karen", ["ghl"] = "Ghulfan", ["ghn"] = "Ghanongga", ["gho"] = "Ghomara", ["ghr"] = "Ghera", ["ghs"] = "Guhu-Samane", ["ght"] = "Kutang Ghale", ["gia"] = "Kitja", ["gib"] = "Gibanawa", ["gid"] = "Gidar", ["gie"] = "Guébie", ["gig"] = "Goaria", ["gih"] = "Githabul", ["gii"] = "Girirra", ["gil"] = "กิลเบิร์ต", ["gim"] = "Gimi (Papuan)", ["gin"] = "Hinukh", ["gip"] = "Gimi (Austronesian)", ["giq"] = "Green Gelao", ["gir"] = "Red Gelao", ["gis"] = "North Giziga", ["git"] = "Gitxsan", ["giu"] = "Mulao", ["giw"] = "White Gelao", ["gix"] = "Gilima", ["giy"] = "Giyug", ["giz"] = "South Giziga", ["gji"] = "Geji", ["gjk"] = "Kachi Koli", ["gjm"] = "Gunditjmara", ["gjn"] = "Gonja", ["gjr"] = "Gurindji Kriol", ["gju"] = "Gojri", ["gka"] = "Guya", ["gkd"] = "Magɨ", ["gke"] = "Ndai", ["gkn"] = "Gokana", ["gko"] = "Kok-Nar", ["gkp"] = "Guinea Kpelle", ["gl"] = "กาลิเซีย", ["glc"] = "Bon Gula", ["gld"] = "Nanai", ["glh"] = "Northwest Pashayi", ["glj"] = "Kulaal", ["glk"] = "Gilaki", ["glo"] = "Galambu", ["glr"] = "Glaro-Twabo", ["glu"] = "Gula", ["glw"] = "Glavda", ["gly"] = "Gule", ["gma"] = "Gambera", ["gmb"] = "Gula'alaa", ["gmd"] = "Mághdì", ["gme-bur"] = "Burgundian", ["gme-cgo"] = "กอทแบบไครเมีย", ["gmg"] = "Magiyi", ["gmh"] = "เยอรมันสูงกลาง", ["gml"] = "เยอรมันต่ำกลาง", ["gmm"] = "Gbaya-Mbodomo", ["gmn"] = "Gimnime", ["gmq-gut"] = "Gutnish", ["gmq-jmk"] = "Jamtish", ["gmq-mno"] = "นอร์เวย์กลาง", ["gmq-oda"] = "เดนมาร์กเก่า", ["gmq-ogt"] = "Old Gutnish", ["gmq-osw"] = "สวีเดนเก่า", ["gmq-pro"] = "นอร์สดั้งเดิม", ["gmq-scy"] = "Scanian", ["gmr"] = "Mirning", ["gmu"] = "Gumalu", ["gmv"] = "กาโม", ["gmw-bgh"] = "Bergish", ["gmw-cfr"] = "ฟรังโกเนียตอนกลาง", ["gmw-ecg"] = "เยอรมันตอนกลางตะวันออก", ["gmw-fin"] = "Fingallian", ["gmw-gts"] = "Gottscheerish", ["gmw-jdt"] = "Jersey Dutch", ["gmw-msc"] = "Middle Scots", ["gmw-pro"] = "เจอร์แมนิกตะวันตกดั้งเดิม", ["gmw-rfr"] = "ฟรังโกเนียแบบไรน์", ["gmw-stm"] = "Sathmar Swabian", ["gmw-tsx"] = "Transylvanian Saxon", ["gmw-vog"] = "เยอรมันแบบว็อลกา", ["gmw-zps"] = "เยอรมันแบบซิพเซอร์", ["gmx"] = "Magoma", ["gmy"] = "กรีกแบบไมซีนี", ["gmz"] = "Mgbo", ["gn-cls"] = "กัวรานีคลาสสิก", ["gna"] = "Kaansa", ["gnb"] = "Gangte", ["gnc"] = "Guanche", ["gnd"] = "Zulgo-Gemzek", ["gne"] = "Ganang", ["gng"] = "Ngangam", ["gnh"] = "Lere", ["gni"] = "กูนียันดี", ["gnj"] = "Ngen of Djonkro", ["gnk"] = "ǁGana", ["gnl"] = "Gangulu", ["gnm"] = "Ginuman", ["gnn"] = "Gumatj", ["gnq"] = "Gana", ["gnr"] = "Gureng Gureng", ["gnt"] = "Guntai", ["gnu"] = "Gnau", ["gnw"] = "Western Bolivian Guarani", ["gnz"] = "Ganzi", ["goa"] = "Guro", ["gob"] = "Playero", ["goc"] = "Gorakor", ["god"] = "Godié", ["goe"] = "Gongduk", ["gof"] = "โกฟา", ["gog"] = "Gogo", ["goh"] = "เยอรมันสูงเก่า", ["goi"] = "Gobasi", ["goj"] = "Gowlan", ["gol"] = "Gola", ["gon"] = "โคณฑี", ["goo"] = "Gone Dau", ["gop"] = "Yeretuar", ["goq"] = "Gorap", ["gor"] = "Gorontalo", ["got"] = "กอท", ["gou"] = "Gavar", ["gov"] = "Goo", ["gow"] = "Gorwaa", ["gox"] = "Gobu", ["goy"] = "Goundo", ["goz"] = "Gozarkhani", ["gpa"] = "Gupa-Abawa", ["gpn"] = "Taiap", ["gqa"] = "Ga'anda", ["gqi"] = "Guiqiong", ["gqn"] = "Kinikinao", ["gqr"] = "Gor", ["gqu"] = "Qau", ["gra"] = "Rajput Garasia", ["grc"] = "กรีกโบราณ", ["grd"] = "Guruntum", ["grg"] = "Madi", ["grh"] = "Gbiri-Niragu", ["gri"] = "Ghari", ["grj"] = "Southern Grebo", ["grk-cal"] = "Calabrian Greek", ["grk-ita"] = "Italiot Greek", ["grk-mar"] = "Mariupol Greek", ["grk-pro"] = "เฮลเลนิกดั้งเดิม", ["grm"] = "Kota Marudu Talantang", ["gro"] = "Groma", ["grq"] = "Gorovu", ["grs"] = "Gresi", ["grt"] = "กาโร", ["gru"] = "Kistane", ["grv"] = "Central Grebo", ["grw"] = "Gweda", ["grx"] = "Guriaso", ["gry"] = "Barclayville Grebo", ["grz"] = "Guramalum", ["gse"] = "Ghanaian Sign Language", ["gsg"] = "German Sign Language", ["gsl"] = "Gusilay", ["gsm"] = "Guatemalan Sign Language", ["gsn"] = "Gusan", ["gso"] = "Southwest Gbaya", ["gsp"] = "Wasembo", ["gss"] = "Greek Sign Language", ["gsw"] = "เยอรมันแบบอลามันเนีย", ["gta"] = "Guató", ["gtu"] = "Aghu Tharrnggala", ["gu"] = "คุชราต", ["gua"] = "Shiki", ["gub"] = "Guajajára", ["guc"] = "Wayuu", ["gud"] = "Yocoboué Dida", ["gue"] = "Gurindji", ["guf"] = "Gupapuyngu", ["gug"] = "กัวรานีแบบปารากวัย", ["guh"] = "Guahibo", ["gui"] = "Eastern Bolivian Guarani", ["guk"] = "Gumuz", ["gul"] = "Gullah", ["gum"] = "Guambiano", ["gun"] = "Mbya Guarani", ["guo"] = "Guayabero", ["gup"] = "Gunwinggu", ["guq"] = "Aché", ["gur"] = "ฟราฟรา", ["gus"] = "Guinean Sign Language", ["gut"] = "Maléku Jaíka", ["guu"] = "Yanomamö", ["guv"] = "Gey", ["guw"] = "Gun", ["gux"] = "Gourmanchéma", ["guz"] = "Gusii", ["gv"] = "แมงซ์", ["gva"] = "Kaskihá", ["gvc"] = "Guanano", ["gve"] = "Duwet", ["gvf"] = "Golin", ["gvj"] = "Guajá", ["gvl"] = "Gulay", ["gvm"] = "Gurmana", ["gvn"] = "Kuku-Yalanji", ["gvo"] = "Gavião do Jiparaná", ["gvp"] = "Pará Gavião", ["gvr"] = "Western Gurung", ["gvs"] = "Gumawana", ["gvy"] = "Guyani", ["gwa"] = "Mbato", ["gwb"] = "Gwa", ["gwc"] = "Kalami", ["gwd"] = "Gawwada", ["gwe"] = "Gweno", ["gwf"] = "Gowro", ["gwg"] = "Moo", ["gwi"] = "Gwich'in", ["gwj"] = "Gcwi", ["gwm"] = "Awngthim", ["gwn"] = "Gwandara", ["gwr"] = "Gwere", ["gwt"] = "Gawar-Bati", ["gwu"] = "Guwamu", ["gww"] = "Kwini", ["gwx"] = "Gua", ["gxx"] = "Wè Southern", ["gya"] = "Northwest Gbaya", ["gyb"] = "Garus", ["gyd"] = "Kayardild", ["gye"] = "Gyem", ["gyf"] = "Gungabula", ["gyg"] = "Gbayi", ["gyi"] = "Gyele", ["gyl"] = "Gayil", ["gym"] = "Ngäbere", ["gyn"] = "Guyanese Creole English", ["gyo"] = "Gyalsumdo", ["gyr"] = "Guarayu", ["gyy"] = "Gunya", ["gza"] = "Ganza", ["gzn"] = "Gane", ["ha"] = "เฮาซา", ["haa"] = "Hän", ["hab"] = "Hanoi Sign Language", ["hac"] = "Gurani", ["had"] = "Hatam", ["haf"] = "Haiphong Sign Language", ["hag"] = "Hanga", ["hah"] = "Hahon", ["hai"] = "Haida", ["haj"] = "ฮาชอง", ["hak"] = "แคะ", ["hal"] = "Halang", ["ham"] = "Hewa", ["hao"] = "Hakö", ["hap"] = "Hupla", ["har"] = "Harari", ["has"] = "Haisla", ["hav"] = "Havu", ["haw"] = "ฮาวาย", ["hax"] = "Southern Haida", ["hay"] = "Haya", ["hba"] = "Hamba", ["hbb"] = "Huba", ["hbn"] = "Heiban", ["hbu"] = "Habu", ["hca"] = "Andaman Creole Hindi", ["hch"] = "Huichol", ["hdn"] = "Northern Haida", ["hds"] = "Honduras Sign Language", ["hdy"] = "Hadiyya", ["he"] = "ฮีบรู", ["hea"] = "Northern Qiandong Miao", ["hed"] = "Herdé", ["heg"] = "Helong", ["heh"] = "Hehe", ["hei"] = "Heiltsuk", ["hem"] = "Hemba", ["hgm"] = "Haiǁom", ["hgw"] = "Haigwai", ["hhi"] = "Hoia Hoia", ["hhr"] = "Kerak", ["hhy"] = "Hoyahoya", ["hi"] = "ฮินดี", ["hia"] = "Lamang", ["hib"] = "Hibito", ["hid"] = "Hidatsa", ["hif"] = "ฮินดีแบบฟีจี", ["hig"] = "Kamwe", ["hih"] = "Pamosu", ["hii"] = "Hinduri", ["hij"] = "Hijuk", ["hik"] = "Seit-Kaitetu", ["hil"] = "ฮีลีไกโนน", ["hio"] = "Tshwa", ["hir"] = "Himarimã", ["hit"] = "Hittite", ["hiw"] = "Hiw", ["hix"] = "Hixkaryana", ["hji"] = "Haji", ["hka"] = "Kahe", ["hke"] = "Hunde", ["hkh"] = "Pogali", ["hkk"] = "Hunjara-Kaina Ke", ["hkn"] = "Mel-Khaonh", ["hks"] = "Hong Kong Sign Language", ["hla"] = "Halia", ["hlb"] = "Halbi", ["hld"] = "Halang Doan", ["hle"] = "Hlersu", ["hlt"] = "Nga La", ["hma"] = "Southern Mashan Hmong", ["hmb"] = "Humburi Senni", ["hmc"] = "Central Huishui Hmong", ["hmd"] = "A-Hmao", ["hme"] = "Eastern Huishui Hmong", ["hmf"] = "Hmong Don", ["hmg"] = "Southwestern Guiyang Hmong", ["hmh"] = "Southwestern Huishui Hmong", ["hmi"] = "Northern Huishui Hmong", ["hmj"] = "Ge", ["hmk"] = "Yemaek", ["hml"] = "Luopohe Hmong", ["hmm"] = "Central Mashan Hmong", ["hmn-pro"] = "ม้งดั้งเดิม", ["hmp"] = "Northern Mashan Hmong", ["hmq"] = "Eastern Qiandong Miao", ["hmr"] = "Hmar", ["hms"] = "Southern Qiandong Miao", ["hmt"] = "Hamtai", ["hmu"] = "Hamap", ["hmv"] = "Hmong Dô", ["hmw"] = "Western Mashan Hmong", ["hmx-mie-pro"] = "เมี่ยนดั้งเดิม", ["hmx-pro"] = "ม้ง-เมี่ยนดั้งเดิม", ["hmy"] = "Southern Guiyang Hmong", ["hmz"] = "Hmong Shua", ["hna"] = "Mina", ["hnd"] = "Southern Hindko", ["hne"] = "Chhattisgarhi", ["hnh"] = "ǁAni", ["hni"] = "Hani", ["hnj"] = "ม้งเขียว", ["hnm"] = "ไหหลำ", ["hnn"] = "ฮานูโนโอ", ["hno"] = "Northern Hindko", ["hns"] = "ฮินดูสตานีแบบแคริบเบียน", ["hnu"] = "Hung", ["ho"] = "ฮีรีโมตู", ["hoa"] = "Hoava", ["hob"] = "Austronesian Mari", ["hoc"] = "Ho", ["hod"] = "Holma", ["hoe"] = "Horom", ["hoh"] = "Hobyót", ["hoi"] = "Holikachuk", ["hoj"] = "Hadoti", ["hol"] = "Holu", ["hom"] = "Homa", ["hoo"] = "Holoholo", ["hop"] = "Hopi", ["hor"] = "Horo", ["hos"] = "Ho Chi Minh City Sign Language", ["hot"] = "Hote", ["hov"] = "Hovongan", ["how"] = "Honi", ["hoy"] = "Holiya", ["hoz"] = "Hozo", ["hpo"] = "Hpon", ["hps"] = "Hawai'i Pidgin Sign Language", ["hra"] = "Hrangkhol", ["hrc"] = "Niwer Mil", ["hre"] = "Hrê", ["hrk"] = "Haruku", ["hrm"] = "Horned Miao", ["hro"] = "Haroi", ["hrp"] = "Nhirrpi", ["hrt"] = "Hértevin", ["hru"] = "Hruso", ["hrw"] = "Warwar Feni", ["hrx"] = "ฮุนสริก", ["hrz"] = "Harzani", ["hsb"] = "ซอร์บตอนบน", ["hsh"] = "Hungarian Sign Language", ["hsl"] = "Hausa Sign Language", ["hsn"] = "เซียง", ["hss"] = "Harsusi", ["ht"] = "ครีโอลเฮติ", ["hti"] = "Hoti", ["hto"] = "Minica Huitoto", ["hts"] = "Hadza", ["htu"] = "Hitu", ["hu"] = "ฮังการี", ["hub"] = "Huambisa", ["huc"] = "ǂHoan", ["hud"] = "Huaulu", ["huf"] = "Humene", ["hug"] = "Huachipaeri", ["huh"] = "Huilliche", ["hui"] = "Huli", ["huj"] = "Northern Guiyang Hmong", ["huk"] = "Hulung", ["hul"] = "Hula", ["hum"] = "Hungana", ["huo"] = "Hu", ["hup"] = "Hupa", ["huq"] = "Tsat", ["hur"] = "Halkomelem", ["hus"] = "Wastek", ["huu"] = "Murui Huitoto", ["huv"] = "Huave", ["huw"] = "Hukumina", ["hux"] = "Nüpode Huitoto", ["huy"] = "Hulaulá", ["huz"] = "Hunzib", ["hvc"] = "Haitian Vodoun Culture Language", ["hvk"] = "Haveke", ["hvn"] = "Sabu", ["hwa"] = "Wané", ["hwc"] = "Hawaiian Creole", ["hwo"] = "Hwana", ["hy"] = "อาร์มีเนีย", ["hya"] = "Hya", ["hyx-pro"] = "อาร์มีเนียนดั้งเดิม", ["hz"] = "เฮเรโร", ["ia"] = "อินเทอร์ลิงกวา", ["iai"] = "Iaai", ["ian"] = "Iatmul", ["iar"] = "Purari", ["iba"] = "อีบัน", ["ibb"] = "Ibibio", ["ibd"] = "Iwaidja", ["ibe"] = "Akpes", ["ibg"] = "Ibanag", ["ibh"] = "Bih", ["ibl"] = "Ibaloi", ["ibm"] = "Agoi", ["ibn"] = "Ibino", ["ibr"] = "Ibuoro", ["ibu"] = "Ibu", ["iby"] = "Ibani", ["ica"] = "Ede Ica", ["ich"] = "Etkywan", ["icl"] = "Icelandic Sign Language", ["icr"] = "Islander Creole English", ["id"] = "อินโดนีเซีย", ["ida"] = "Idakho-Isukha-Tiriki", ["idb"] = "Indo-Portuguese", ["idc"] = "Idon", ["idd"] = "Ede Idaca", ["ide"] = "Idere", ["idi"] = "Idi", ["idr"] = "Indri", ["ids"] = "Idesa", ["idt"] = "Idaté", ["idu"] = "Idoma", ["ie"] = "อินเทร์ลิงเกว", ["ifa"] = "Amganad Ifugao", ["ifb"] = "Batad Ifugao", ["ife"] = "Ifè", ["iff"] = "Ifo", ["ifk"] = "Tuwali Ifugao", ["ifm"] = "Teke-Fuumu", ["ifu"] = "Mayoyao Ifugao", ["ify"] = "Keley-I Kallahan", ["ig"] = "อิกโบ", ["igb"] = "Ebira", ["ige"] = "Igede", ["igg"] = "Igana", ["igl"] = "Igala", ["igm"] = "Kanggape", ["ign"] = "Ignaciano", ["igo"] = "Isebe", ["igs"] = "Glosa", ["igw"] = "Igwe", ["ihb"] = "Pidgin Iha", ["ihi"] = "Ihievbe", ["ihp"] = "Iha", ["ii"] = "นอซู", ["iir-nur-pro"] = "Proto-Nuristani", ["iir-pro"] = "อินโด-อิเรเนียนดั้งเดิม", ["ijc"] = "Izon", ["ije"] = "Biseni", ["ijj"] = "Ede Ije", ["ijn"] = "Kalabari", ["ijo-pro"] = "Proto-Ijoid", ["ijs"] = "Southeast Ijo", ["ik"] = "Inupiaq", ["ike"] = "Eastern Canadian Inuktitut", ["iki"] = "Iko", ["ikk"] = "Ika", ["ikl"] = "Ikulu", ["iko"] = "Olulumo-Ikom", ["ikp"] = "Ikpeshi", ["ikr"] = "Ikaranggal", ["iks"] = "Inuit Sign Language", ["ikt"] = "Inuvialuktun", ["ikv"] = "Iku-Gora-Ankwa", ["ikw"] = "Ikwere", ["ikx"] = "Ik", ["ikz"] = "Ikizu", ["ila"] = "Ile Ape", ["ilb"] = "Ila", ["ilg"] = "Ilgar", ["ili"] = "Ili Turki", ["ilk"] = "Ilongot", ["ill"] = "อีรานุน", ["ilo"] = "อีโลกาโน", ["ils"] = "International Sign", ["ilu"] = "Ili'uun", ["ilv"] = "Ilue", ["ima"] = "Mala Malasar", ["imi"] = "Anamgura", ["iml"] = "Miluk", ["imn"] = "Imonda", ["imo"] = "Imbongu", ["imr"] = "Imroing", ["ims"] = "Marsian", ["imy"] = "Milyan", ["inb"] = "Inga", ["inc-apa"] = "Apabhramsa", ["inc-ash"] = "ปรากฤตแบบอโศก", ["inc-dng-pro"] = "Proto-Dangari", ["inc-kam"] = "กามรูป", ["inc-kho"] = "Kholosi", ["inc-krd-pro"] = "Proto-Kamta", ["inc-mas"] = "อัสสัมกลาง", ["inc-mbn"] = "เบงกอลกลาง", ["inc-mgu"] = "คุชราตกลาง", ["inc-mor"] = "โอริยากลาง", ["inc-oas"] = "อัสสัมช่วงต้น", ["inc-oaw"] = "Old Awadhi", ["inc-obn"] = "เบงกอลเก่า", ["inc-ogu"] = "คุชราตเก่า", ["inc-ohi"] = "ฮินดีเก่า", ["inc-oor"] = "โอริยาเก่า", ["inc-opa"] = "ปัญจาบเก่า", ["inc-pro"] = "อินโด-อารยันดั้งเดิม", ["ine-ana-pro"] = "อานาโตเลียนดั้งเดิม", ["ine-bsl-pro"] = "บอลโต-สลาวิกดั้งเดิม", ["ine-kal"] = "Kalašma", ["ine-pae"] = "Paeonian", ["ine-pro"] = "อินโด-ยูโรเปียนดั้งเดิม", ["ine-toc-pro"] = "โทแคเรียนดั้งเดิม", ["ing"] = "Deg Xinag", ["inh"] = "อิงกุช", ["inj"] = "Jungle Inga", ["inl"] = "มืออินโดนีเซีย", ["inm"] = "Minaean", ["inn"] = "Isinai", ["ino"] = "Inoke-Yate", ["inp"] = "Iñapari", ["ins"] = "มืออินเดีย", ["int"] = "Intha", ["inz"] = "Ineseño", ["io"] = "อีโด", ["ior"] = "Inor", ["iou"] = "Tuma-Irumu", ["iow"] = "Chiwere", ["ipi"] = "Ipili", ["ipo"] = "Ipiko", ["iqu"] = "Iquito", ["iqw"] = "Ikwo", ["ira-kms-pro"] = "Proto-Komisenian", ["ira-mny-pro"] = "Proto-Munji-Yidgha", ["ira-mpr-pro"] = "Proto-Medo-Parthian", ["ira-pat-pro"] = "ปาทานดั้งเดิม", ["ira-pro"] = "อิเรเนียนดั้งเดิม", ["ira-sgc-pro"] = "ซอกดิกดั้งเดิม", ["ira-sgi-pro"] = "Proto-Sanglechi-Ishkashimi", ["ira-shr-pro"] = "Proto-Shughni-Roshani", ["ira-shy-pro"] = "Proto-Shughni-Yazghulami", ["ira-sym-pro"] = "Proto-Shughni-Yazghulami-Munji", ["ira-wnj"] = "Vanji", ["ira-zgr-pro"] = "Proto-Zaza-Gorani", ["ire"] = "Iresim", ["irh"] = "Irarutu", ["iri"] = "Rigwe", ["irk"] = "Iraqw", ["irn"] = "Irantxe", ["iro-ere"] = "Erie", ["iro-min"] = "Mingo", ["iro-nor-pro"] = "Proto-North Iroquoian", ["iro-pro"] = "Proto-Iroquoian", ["irr"] = "Ir", ["iru"] = "Irula", ["irx"] = "Kamberau", ["iry"] = "Iraya", ["is"] = "ไอซ์แลนด์", ["isa"] = "Isabi", ["isc"] = "Isconahua", ["isd"] = "Isnag", ["ise"] = "Italian Sign Language", ["isg"] = "Irish Sign Language", ["ish"] = "Esan", ["isi"] = "Nkem-Nkum", ["isk"] = "Ishkashimi", ["ism"] = "Masimasi", ["isn"] = "Isanzu", ["iso"] = "Isoko", ["isr"] = "Israeli Sign Language", ["ist"] = "อิสเตรีย", ["isu"] = "Isu", ["isv"] = "Interslavic", ["it"] = "อิตาลี", ["itb"] = "Binongan Itneg", ["itc-pro"] = "อิตาลิกดั้งเดิม", ["itc-psa"] = "Pre-Samnite", ["itd"] = "Southern Tidung", ["ite"] = "Itene", ["iti"] = "Inlaod Itneg", ["itk"] = "Judeo-Italian", ["itl"] = "Itelmen", ["itm"] = "Itu Mbon Uzo", ["ito"] = "Itonama", ["itr"] = "Iteri", ["its"] = "Itsekiri", ["itt"] = "Maeng Itneg", ["itv"] = "Itawit", ["itw"] = "Ito", ["itx"] = "Itik", ["ity"] = "Moyadan Itneg", ["itz"] = "Itza'", ["iu"] = "อินุกติตุต", ["ium"] = "เมี่ยน", ["ivb"] = "Ibatan", ["ivv"] = "Ivatan", ["iwk"] = "I-Wak", ["iwm"] = "Iwam", ["iwo"] = "Iwur", ["iws"] = "Sepik Iwam", ["ixc"] = "Ixcatec", ["ixl"] = "Ixil", ["iya"] = "Iyayu", ["iyo"] = "Mesaka", ["iyx"] = "Yaa", ["izh"] = "อิงเกรีย", ["izi"] = "Izi-Ezaa-Ikwo-Mgbo", ["izr"] = "Izere", ["izz"] = "Izi", ["ja"] = "ญี่ปุ่น", ["jaa"] = "Jamamadí", ["jab"] = "Hyam", ["jac"] = "Jakaltek", ["jad"] = "Jahanka", ["jae"] = "Jabem", ["jaf"] = "Jara", ["jah"] = "Jah Hut", ["jaj"] = "Zazao", ["jal"] = "Yalahatan", ["jam"] = "ครีโอลจาเมกา", ["jan"] = "Janday", ["jao"] = "Yanyuwa", ["jaq"] = "Yaqay", ["jas"] = "ชวาแบบนิวแคลิโดเนีย", ["jat"] = "Jakati", ["jau"] = "Yaur", ["jax"] = "Jambi Malay", ["jay"] = "Yan-nhangu", ["jaz"] = "Jawe", ["jbj"] = "Arandai", ["jbk"] = "Barikewa", ["jbn"] = "Nefusa", ["jbo"] = "โลจบาน", ["jbr"] = "Jofotek-Bromnya", ["jbt"] = "Jabutí", ["jbu"] = "Jukun Takum", ["jbw"] = "Yawijibaya", ["jcs"] = "Jamaican Country Sign Language", ["jct"] = "Krymchak", ["jda"] = "Jad", ["jdg"] = "Jadgali", ["jdt"] = "Judeo-Tat", ["jeb"] = "Jebero", ["jee"] = "Jerung", ["jeg"] = "Jeng", ["jeh"] = "Jeh", ["jei"] = "Yei", ["jek"] = "Jeri Kuo", ["jel"] = "Yelmek", ["jen"] = "Dza", ["jer"] = "Jere", ["jet"] = "Manem", ["jeu"] = "Jonkor Bourmataguil", ["jgb"] = "Ngbee", ["jgk"] = "Gwak", ["jgo"] = "Ngomba", ["jhi"] = "Jehai", ["jhs"] = "Jhankot Sign Language", ["jia"] = "Jina", ["jib"] = "Jibu", ["jic"] = "Tol", ["jid"] = "Bu", ["jie"] = "Jilbe", ["jig"] = "Jingulu", ["jih"] = "Shangzhai", ["jii"] = "Jiiddu", ["jil"] = "Jilim", ["jim"] = "Jimjimen", ["jio"] = "เจียเม่า", ["jiq"] = "Khroskyabs", ["jit"] = "Jita", ["jiu"] = "Youle Jino", ["jiv"] = "Shuar", ["jiy"] = "Buyuan Jino", ["jje"] = "เชจู", ["jjr"] = "Zhár", ["jka"] = "Kaera", ["jko"] = "Kubo", ["jkp"] = "Paku Karen", ["jkr"] = "Koro (India)", ["jku"] = "Labir", ["jle"] = "Ngile", ["jls"] = "Jamaican Sign Language", ["jma"] = "Dima", ["jmb"] = "Zumbun", ["jmc"] = "Machame", ["jmd"] = "Yamdena", ["jmi"] = "Jimi", ["jml"] = "Jumli", ["jmn"] = "Makuri Naga", ["jmr"] = "Kamara", ["jmw"] = "Mouwase", ["jmx"] = "Western Juxtlahuaca Mixtec", ["jna"] = "Jangshung", ["jnd"] = "Jandavra", ["jng"] = "Yangman", ["jni"] = "Janji", ["jnj"] = "Yemsa", ["jnl"] = "Rawat", ["jns"] = "Jaunsari", ["job"] = "Joba", ["jod"] = "Wojenaka", ["jor"] = "Jorá", ["jos"] = "Jordanian Sign Language", ["jow"] = "Jowulu", ["jpr"] = "Judeo-Persian", ["jpx-hcj"] = "Hachijō", ["jpx-pro"] = "แจพอนิกดั้งเดิม", ["jpx-ryu-pro"] = "Proto-Ryukyuan", ["jqr"] = "Jaqaru", ["jra"] = "Jarai", ["jrr"] = "Jiru", ["jru"] = "Japrería", ["jsl"] = "Japanese Sign Language", ["jua"] = "Júma", ["jub"] = "Wannu", ["juc"] = "จูร์เชน", ["jud"] = "Worodougou", ["juh"] = "Hone", ["jui"] = "Ngadjuri", ["juk"] = "Wapan", ["jul"] = "Jirel", ["jum"] = "Jumjum", ["jun"] = "Juang", ["juo"] = "Jiba", ["jup"] = "Hupdë", ["jur"] = "Jurúna", ["jus"] = "Jumla Sign Language", ["jut"] = "Jutish", ["juu"] = "Ju", ["juw"] = "Wãpha", ["juy"] = "Juray", ["jv"] = "ชวา", ["jvd"] = "Javindo", ["jvn"] = "ชวาแบบแคริบเบียน", ["jwi"] = "Jwira-Pepesa", ["jyy"] = "Jaya", ["ka"] = "จอร์เจีย", ["kaa"] = "การากัลปัก", ["kab"] = "กะไบล์", ["kac"] = "จิ่งเผาะ", ["kad"] = "Kadara", ["kae"] = "Ketangalan", ["kaf"] = "Katso", ["kag"] = "Kajaman", ["kah"] = "Fer", ["kai"] = "Karekare", ["kaj"] = "Jju", ["kak"] = "Kayapa Kallahan", ["kam"] = "Kamba", ["kao"] = "Kassonke", ["kap"] = "Bezhta", ["kaq"] = "Capanahua", ["kar-pro"] = "กะเหรี่ยงดั้งเดิม", ["kaw"] = "ชวาเก่า", ["kax"] = "Kao", ["kay"] = "Kamayurá", ["kba"] = "Kalarko", ["kbb"] = "Kaxuyana", ["kbc"] = "Kadiwéu", ["kbd"] = "คาบาร์เดีย", ["kbe"] = "Kanju", ["kbh"] = "Camsá", ["kbi"] = "Kaptiau", ["kbj"] = "Kari", ["kbk"] = "Grass Koiari", ["kbm"] = "Iwal", ["kbn"] = "Kare (Central Africa)", ["kbo"] = "Keliko", ["kbp"] = "Kabiyé", ["kbq"] = "Kamano", ["kbr"] = "Kafa", ["kbs"] = "Kande", ["kbt"] = "Gabadi", ["kbu"] = "Kabutra", ["kbv"] = "Kamberataro", ["kbw"] = "Kaiep", ["kbx"] = "Ap Ma", ["kbz"] = "Duhwa", ["kca-eas"] = "Eastern Khanty", ["kca-nor"] = "Northern Khanty", ["kca-pro"] = "Proto-Khanty", ["kca-sou"] = "Southern Khanty", ["kcb"] = "Kawacha", ["kcc"] = "Lubila", ["kcd"] = "Ngkâlmpw Kanum", ["kce"] = "Kaivi", ["kcf"] = "Ukaan", ["kcg"] = "Tyap", ["kch"] = "Vono", ["kci"] = "Kamantan", ["kcj"] = "Kobiana", ["kck"] = "Kalanga", ["kcl"] = "Kala", ["kcm"] = "Tar Gula", ["kcn"] = "Nubi", ["kco"] = "Kinalakna", ["kcp"] = "Kanga", ["kcq"] = "Kamo", ["kcr"] = "Katla", ["kcs"] = "Koenoem", ["kct"] = "Kaian", ["kcu"] = "Kikami", ["kcv"] = "Kete", ["kcw"] = "Kabwari", ["kcx"] = "Kachama-Ganjule", ["kcy"] = "Korandje", ["kcz"] = "Konongo", ["kda"] = "Worimi", ["kdc"] = "Kutu", ["kdd"] = "Yankunytjatjara", ["kde"] = "Makonde", ["kdf"] = "Mamusi", ["kdg"] = "Seba", ["kdh"] = "Tem", ["kdi"] = "Kumam", ["kdj"] = "Karamojong", ["kdk"] = "Numèè", ["kdl"] = "Tsikimba", ["kdm"] = "Kagoma", ["kdn"] = "Kunda", ["kdp"] = "Kaningdon-Nindem", ["kdq"] = "Koch", ["kdr"] = "Karaim", ["kdt"] = "กูย", ["kdu"] = "Kadaru", ["kdv"] = "Kado", ["kdw"] = "Koneraw", ["kdx"] = "Kam", ["kdy"] = "Keder", ["kdz"] = "Kwaja", ["kea"] = "ครีโอลกาบูเวร์ดี", ["keb"] = "Kélé", ["kec"] = "Keiga", ["ked"] = "Kerewe", ["kee"] = "Eastern Keres", ["kef"] = "Kpessi", ["keg"] = "Tese", ["keh"] = "Keak", ["kei"] = "Kei", ["kej"] = "Kadar", ["kek"] = "Q'eqchi", ["kel"] = "Kela-Yela", ["kem"] = "Kemak", ["ken"] = "Kenyang", ["keo"] = "Kakwa", ["kep"] = "Kaikadi", ["keq"] = "Kamar", ["ker"] = "Kera", ["kes"] = "Kugbo", ["ket"] = "Ket", ["keu"] = "Akebu", ["kev"] = "Kanikkaran", ["kew"] = "Kewa", ["kex"] = "Kukna", ["key"] = "Kupia", ["kez"] = "Kukele", ["kfa"] = "Kodava", ["kfb"] = "Kolami", ["kfc"] = "Konda-Dora", ["kfd"] = "Korra Koraga", ["kfe"] = "Kota (India)", ["kff"] = "Koya", ["kfg"] = "Kudiya", ["kfh"] = "Kurichiya", ["kfi"] = "Kannada Kurumba", ["kfj"] = "Kemiehua", ["kfk"] = "Kinnauri", ["kfl"] = "Kung", ["kfn"] = "Kuk", ["kfo"] = "Koro (West Africa)", ["kfp"] = "Korwa", ["kfq"] = "Korku", ["kfr"] = "กัจฉ์", ["kfs"] = "Bilaspuri", ["kft"] = "Kanjari", ["kfu"] = "Katkari", ["kfv"] = "Kurmukar", ["kfw"] = "Kharam Naga", ["kfx"] = "Kullu Pahari", ["kfy"] = "Kumaoni", ["kfz"] = "Koromfé", ["kg"] = "คองโก", ["kga"] = "Koyaga", ["kgb"] = "Kawe", ["kgd"] = "Kataang", ["kge"] = "Komering", ["kgf"] = "Kube", ["kgg"] = "Kusunda", ["kgi"] = "Selangor Sign Language", ["kgj"] = "Gamale Kham", ["kgk"] = "Kaiwá", ["kgl"] = "Kunggari", ["kgn"] = "Karingani", ["kgo"] = "Krongo", ["kgp"] = "Kaingang", ["kgq"] = "Kamoro", ["kgr"] = "Abun", ["kgs"] = "Kumbainggar", ["kgt"] = "Somyev", ["kgu"] = "Kobol", ["kgv"] = "Karas", ["kgw"] = "Karon Dori", ["kgx"] = "Kamaru", ["kgy"] = "Kyerung", ["kha"] = "คาซี", ["khb"] = "ไทลื้อ", ["khc"] = "Tukang Besi North", ["khd"] = "Bädi Kanum", ["khe"] = "Korowai", ["khf"] = "Khuen", ["khh"] = "Kehu", ["khi-kho-pro"] = "Proto-Khoe", ["khi-kun"] = "ǃKung", ["khj"] = "Kuturmi", ["khl"] = "Lusi", ["khn"] = "Khandeshi", ["kho"] = "โคตาน", ["khp"] = "Kapauri", ["khq"] = "Koyra Chiini", ["khr"] = "Kharia", ["khs"] = "Kasua", ["kht"] = "คำตี้", ["khu"] = "Nkhumbi", ["khv"] = "Khvarshi", ["khw"] = "Khowar", ["khx"] = "Kanu", ["khy"] = "Ekele", ["khz"] = "Keapara", ["ki"] = "เกโกโย", ["kia"] = "Kim", ["kib"] = "Koalib", ["kic"] = "Kickapoo", ["kid"] = "Koshin", ["kie"] = "Kibet", ["kif"] = "Eastern Parbate Kham", ["kig"] = "Kimaama", ["kih"] = "Kilmeri", ["kii"] = "Kitsai", ["kij"] = "Kilivila", ["kil"] = "Kariya", ["kim"] = "โตฟา", ["kio"] = "Kiowa", ["kip"] = "Sheshi Kham", ["kiq"] = "Kosadle", ["kis"] = "Kis", ["kit"] = "Agob", ["kiv"] = "Kimbu", ["kiw"] = "Northeast Kiwai", ["kix"] = "Khiamniungan Naga", ["kiy"] = "Kirikiri", ["kiz"] = "Kisi", ["kj"] = "Kwanyama", ["kja"] = "Mlap", ["kjb"] = "Q'anjob'al", ["kjc"] = "Coastal Konjo", ["kjd"] = "Southern Kiwai", ["kje"] = "Kisar", ["kjg"] = "ขมุ", ["kjh"] = "คาคัส", ["kji"] = "Zabana", ["kjj"] = "Khinalug", ["kjk"] = "Highland Konjo", ["kjl"] = "Western Parbate Kham", ["kjm"] = "Kháng", ["kjn"] = "Kunjen", ["kjo"] = "Harijan Kinnauri", ["kjp"] = "กะเหรี่ยงโปตะวันออก", ["kjq"] = "Western Keres", ["kjr"] = "Kurudu", ["kjs"] = "East Kewa", ["kjt"] = "กะเหรี่ยงโปแพร่", ["kju"] = "Kashaya", ["kjx"] = "Ramopa", ["kjy"] = "Erave", ["kjz"] = "Bumthangkha", ["kk"] = "คาซัค", ["kka"] = "Kakanda", ["kkb"] = "Kwerisa", ["kkc"] = "Odoodee", ["kkd"] = "Kinuku", ["kke"] = "Kakabe", ["kkf"] = "Kalaktang Monpa", ["kkg"] = "Mabaka Valley Kalinga", ["kkh"] = "เขิน", ["kki"] = "Kagulu", ["kkj"] = "Kako", ["kkk"] = "Kokota", ["kkl"] = "Kosarek Yale", ["kkm"] = "Kiong", ["kkn"] = "Kon Keu", ["kko"] = "Karko", ["kkp"] = "Koko-Bera", ["kkq"] = "Kaiku", ["kkr"] = "Kir-Balar", ["kks"] = "Kirfi", ["kkt"] = "Koi", ["kku"] = "Tumi", ["kkv"] = "Kangean", ["kkw"] = "Teke-Kukuya", ["kkx"] = "Kohin", ["kky"] = "Guugu Yimidhirr", ["kkz"] = "Kaska", ["kl"] = "กรีนแลนด์", ["kla"] = "Klamath-Modoc", ["klb"] = "Kiliwa", ["klc"] = "Kolbila", ["kld"] = "Gamilaraay", ["kle"] = "Kulung", ["klf"] = "Kendeje", ["klg"] = "กาลากันแบบตากาเกาลู", ["klh"] = "Weliki", ["kli"] = "Kalumpang", ["klj"] = "Khalaj", ["klk"] = "Kono (Nigeria)", ["kll"] = "กาลากันแบบกากัน", ["klm"] = "Kolom", ["kln"] = "Kalenjin", ["klo"] = "Kapya", ["klp"] = "Kamasa", ["klq"] = "Rumu", ["klr"] = "Khaling", ["kls"] = "Kalasha", ["klt"] = "Nukna", ["klu"] = "Klao", ["klv"] = "Maskelynes", ["klw"] = "ลินดู", ["klx"] = "Koluwawa", ["kly"] = "Kalao", ["klz"] = "Kabola", ["km"] = "เขมร", ["kma"] = "Konni", ["kmb"] = "Kimbundu", ["kmc"] = "ต้งใต้", ["kmd"] = "Madukayang Kalinga", ["kme"] = "Bakole", ["kmf"] = "Kare (New Guinea)", ["kmg"] = "Kâte", ["kmh"] = "Kalam", ["kmi"] = "Kami", ["kmj"] = "Kumarbhag Paharia", ["kmk"] = "Limos Kalinga", ["kml"] = "Tanudan Kalinga", ["kmm"] = "Kom (India)", ["kmn"] = "Awtuw", ["kmo"] = "Kwoma", ["kmp"] = "Gimme", ["kmq"] = "Kwama", ["kmr"] = "เคิร์ดเหนือ", ["kms"] = "Kamasau", ["kmt"] = "Kemtuik", ["kmu"] = "Kanite", ["kmv"] = "Karipúna Creole French", ["kmw"] = "Kumu", ["kmx"] = "Waboda", ["kmy"] = "Koma", ["kmz"] = "Khorasani Turkish", ["kn"] = "กันนฑะ", ["kna"] = "Kanakuru", ["knb"] = "Lubuagan Kalinga", ["knd"] = "Konda", ["kne"] = "กันกานาอือ", ["knf"] = "Mankanya", ["kni"] = "Kanufi", ["knj"] = "Akatek", ["knk"] = "Kuranko", ["knl"] = "Keninjal", ["knm"] = "Kanamari", ["kno"] = "Kono (Sierra Leone)", ["knp"] = "Kwanja", ["knq"] = "Kintaq", ["knr"] = "Kaningra", ["kns"] = "Kensiu", ["knt"] = "Katukina", ["knu"] = "Kono (Guinea)", ["knv"] = "Tabo", ["knx"] = "Kendayan", ["kny"] = "Kanyok", ["knz"] = "Kalamsé", ["ko"] = "เกาหลี", ["ko-ear"] = "เกาหลีใหม่ช่วงต้น", ["koa"] = "Konomala", ["koc"] = "Kpati", ["kod"] = "Kodi", ["koe"] = "Kacipo-Balesi", ["kof"] = "Kubi", ["kog"] = "Cogui", ["koh"] = "Koyo", ["koi"] = "Komi-Permyak", ["kok"] = "กงกัณ", ["kol"] = "Kol (New Guinea)", ["koo"] = "Konzo", ["kop"] = "Waube", ["koq"] = "Kota (Gabon)", ["kos"] = "Kosraean", ["kot"] = "Lagwan", ["kou"] = "Koke", ["kov"] = "Kudu-Camo", ["kow"] = "Kugama", ["koy"] = "Koyukon", ["koz"] = "Korak", ["kpa"] = "Kutto", ["kpb"] = "Mullu Kurumba", ["kpc"] = "Curripaco", ["kpd"] = "Koba", ["kpe"] = "Kpelle", ["kpf"] = "Komba", ["kpg"] = "Kapingamarangi", ["kph"] = "Kplang", ["kpi"] = "Kofei", ["kpj"] = "Karajá", ["kpk"] = "Kpan", ["kpl"] = "Kpala", ["kpm"] = "เกอฮอ", ["kpn"] = "Kepkiriwát", ["kpo"] = "Ikposo", ["kpq"] = "Korupun-Sela", ["kpr"] = "Korafe-Yegha", ["kps"] = "Tehit", ["kpt"] = "Karata", ["kpu"] = "Kafoa", ["kpv"] = "Komi-Zyrian", ["kpw"] = "Kobon", ["kpx"] = "Mountain Koiari", ["kpy"] = "Koryak", ["kpz"] = "Kupsabiny", ["kqa"] = "Mum", ["kqb"] = "Kovai", ["kqc"] = "Doromu-Koki", ["kqd"] = "Koy Sanjaq Surat", ["kqe"] = "กาลากัน", ["kqf"] = "Kakabai", ["kqg"] = "Khe", ["kqh"] = "Kisankasa", ["kqi"] = "Koitabu", ["kqj"] = "Koromira", ["kqk"] = "Kotafon Gbe", ["kql"] = "Kyenele", ["kqm"] = "Khisa", ["kqn"] = "Kaonde", ["kqo"] = "Eastern Krahn", ["kqp"] = "Kimré", ["kqq"] = "Krenak", ["kqr"] = "Kimaragang", ["kqs"] = "Northern Kissi", ["kqt"] = "Klias River Kadazan", ["kqu"] = "Seroa", ["kqv"] = "Okolod", ["kqw"] = "Kandas", ["kqx"] = "Mser", ["kqy"] = "Koorete", ["kqz"] = "Korana", ["kr"] = "กานูรี", ["kra"] = "Kumhali", ["krb"] = "Karkin", ["krc"] = "Karachay-Balkar", ["krd"] = "Kairui-Midiki", ["kre"] = "Panará", ["krf"] = "Koro (Vanuatu)", ["krh"] = "Kurama", ["kri"] = "Krio", ["krj"] = "Kinaray-a", ["krk"] = "Kerek", ["krl"] = "คาเรเลีย", ["krm"] = "Krim", ["krn"] = "Sapo", ["kro-pro"] = "Proto-Kru", ["krp"] = "Korop", ["krr"] = "Kru'ng", ["krs"] = "Kresh", ["kru"] = "กุรุข", ["krv"] = "Kavet", ["krw"] = "Western Krahn", ["krx"] = "Karon", ["kry"] = "Kryts", ["krz"] = "Sota Kanum", ["ks"] = "แคชเมียร์", ["ksa"] = "Shuwa-Zamani", ["ksb"] = "Shambala", ["ksc"] = "Southern Kalinga", ["ksd"] = "Tolai", ["kse"] = "Kuni", ["ksf"] = "Bafia", ["ksg"] = "Kusaghe", ["ksi"] = "Krisa", ["ksj"] = "Uare", ["ksk"] = "Kansa", ["ksl"] = "Kumalu", ["ksm"] = "Kumba", ["ksn"] = "Kasiguranin", ["kso"] = "Kofa", ["ksp"] = "Kaba", ["ksq"] = "Kwaami", ["ksr"] = "Borong", ["kss"] = "Southern Kissi", ["kst"] = "Winyé", ["ksu"] = "Khamyang", ["ksv"] = "Kusu", ["ksw"] = "กะเหรี่ยงสะกอ", ["ksx"] = "Kedang", ["ksy"] = "Kharia Thar", ["ksz"] = "Kodaku", ["kta"] = "Katua", ["ktb"] = "Kambaata", ["ktc"] = "Kholok", ["ktd"] = "Kokata", ["ktf"] = "Kwami", ["ktg"] = "Kalkatungu", ["kth"] = "Karanga", ["kti"] = "North Muyu", ["ktj"] = "Plapo Krumen", ["ktk"] = "Kaniet", ["ktl"] = "Koroshi", ["ktm"] = "Kurti", ["ktn"] = "Karitiâna", ["kto"] = "Kuot", ["ktp"] = "Kaduo", ["ktq"] = "Katabaga", ["ktr"] = "Kota Marudu Tinagas", ["kts"] = "South Muyu", ["ktt"] = "Ketum", ["ktu"] = "Kituba", ["ktv"] = "กะตูตะวันออก", ["ktw"] = "Kato", ["ktx"] = "Kaxararí", ["kty"] = "Kango", ["ktz"] = "Juǀ'hoan", ["ku-pro"] = "เคอร์ดิชดั้งเดิม", ["kub"] = "Kutep", ["kuc"] = "Kwinsu", ["kud"] = "Auhelawa", ["kue"] = "Kuman", ["kuf"] = "กะตูตะวันตก", ["kug"] = "Kupa", ["kuh"] = "Kushi", ["kui"] = "Kuikúro", ["kuj"] = "Kuria", ["kuk"] = "Kepo'", ["kul"] = "Kulere", ["kum"] = "คูมุก", ["kun"] = "Kunama", ["kuo"] = "Kumukio", ["kup"] = "Kunimaipa", ["kuq"] = "Karipuna", ["kus"] = "Kusaal", ["kut"] = "Ktunaxa", ["kuu"] = "Upper Kuskokwim", ["kuv"] = "Kur", ["kuw"] = "Kpagua", ["kux"] = "Kukatja", ["kuy"] = "Kuuku-Ya'u", ["kuz"] = "Kunza", ["kva"] = "Bagvalal", ["kvb"] = "Kubu", ["kvc"] = "Kove", ["kvd"] = "Kui (Indonesia)", ["kve"] = "Kalabakan", ["kvf"] = "Kabalai", ["kvg"] = "Kuni-Boazi", ["kvh"] = "Komodo", ["kvi"] = "Kwang", ["kvj"] = "Psikye", ["kvk"] = "Korean Sign Language", ["kvl"] = "Brek Karen", ["kvm"] = "Kendem", ["kvn"] = "Border Kuna", ["kvo"] = "Dobel", ["kvp"] = "Kompane", ["kvq"] = "Geba Karen", ["kvr"] = "Kerinci", ["kvt"] = "Lahta Karen", ["kvu"] = "Yinbaw Karen", ["kvv"] = "Kola", ["kvw"] = "Wersing", ["kvx"] = "Parkari Koli", ["kvy"] = "Yintale Karen", ["kvz"] = "Tsakwambo", ["kw"] = "คอร์นวอลล์", ["kwa"] = "Dâw", ["kwb"] = "Baa", ["kwc"] = "Likwala", ["kwd"] = "Kwaio", ["kwe"] = "Kwerba", ["kwf"] = "Kwara'ae", ["kwg"] = "Sara Kaba Deme", ["kwh"] = "Kowiai", ["kwi"] = "Awa-Cuaiquer", ["kwj"] = "Kwanga", ["kwk"] = "Kwak'wala", ["kwl"] = "Kofyar", ["kwm"] = "Kwambi", ["kwn"] = "Kwangali", ["kwo"] = "Kwomtari", ["kwp"] = "Kodia", ["kwq"] = "Kwak", ["kwr"] = "Kwer", ["kws"] = "Kwese", ["kwt"] = "Kwesten", ["kwu"] = "Kwakum", ["kwv"] = "Sara Kaba Náà", ["kww"] = "Kwinti", ["kwx"] = "Khirwar", ["kwz"] = "Kwadi", ["kxa"] = "Kairiru", ["kxb"] = "Krobu", ["kxc"] = "Konso", ["kxd"] = "มลายูแบบบรูไน", ["kxe"] = "Kakihum", ["kxf"] = "Manumanaw Karen", ["kxh"] = "Karo", ["kxi"] = "Keningau Murut", ["kxj"] = "Kulfa", ["kxk"] = "Zayein Karen", ["kxl"] = "Nepali Kurux", ["kxm"] = "เขมรเหนือ", ["kxn"] = "Kanowit", ["kxo"] = "Kanoé", ["kxp"] = "Wadiyara Koli", ["kxq"] = "Smärky Kanum", ["kxr"] = "Manus Koro", ["kxs"] = "Kangjia", ["kxt"] = "Koiwat", ["kxu"] = "Kui (India)", ["kxv"] = "Kuvi", ["kxw"] = "Konai", ["kxx"] = "Likuba", ["kxy"] = "Kayong", ["kxz"] = "Kerewo", ["ky"] = "คีร์กีซ", ["kya"] = "Kwaya", ["kyb"] = "Butbut Kalinga", ["kyc"] = "Kyaka", ["kyd"] = "Karey", ["kye"] = "Krache", ["kyf"] = "Kouya", ["kyg"] = "Keyagana", ["kyh"] = "Karok", ["kyi"] = "Kiput", ["kyj"] = "กาเรา", ["kyk"] = "Kamayo", ["kyl"] = "Kalapuya", ["kym"] = "Kpatili", ["kyn"] = "Karolanos", ["kyo"] = "Kelon", ["kyp"] = "Kang", ["kyq"] = "Kenga", ["kyr"] = "Kuruáya", ["kys"] = "Baram Kayan", ["kyt"] = "Kayagar", ["kyu"] = "กะยาตะวันตก", ["kyv"] = "Kayort", ["kyw"] = "Kudmali", ["kyx"] = "Rapoisi", ["kyy"] = "Kambaira", ["kyz"] = "Kayabí", ["kza"] = "Western Karaboro", ["kzb"] = "Kaibobo", ["kzc"] = "Bondoukou Kulango", ["kzd"] = "Kadai", ["kzf"] = "Da'a Kaili", ["kzg"] = "Kikai", ["kzh"] = "Dongolawi", ["kzi"] = "Kelabit", ["kzj"] = "กาดาซันชายฝั่ง", ["kzk"] = "Kazukuru", ["kzl"] = "Kayeli", ["kzm"] = "Kais", ["kzn"] = "Kokola", ["kzo"] = "Kaningi", ["kzp"] = "Kaidipang", ["kzq"] = "Kaike", ["kzr"] = "Karang", ["kzs"] = "Sugut Dusun", ["kzt"] = "Tambunan Dusun", ["kzu"] = "Kayupulau", ["kzv"] = "Komyandaret", ["kzw"] = "Kariri", ["kzx"] = "Kamarian", ["kzy"] = "Kango-Sua", ["kzz"] = "Kalabra", ["la"] = "ละติน", ["laa"] = "Lapuyan Subanun", ["lab"] = "Linear A", ["lac"] = "Lacandon", ["lad"] = "ลาดิโน", ["lae"] = "Pattani", ["laf"] = "Lafofa", ["lag"] = "Langi", ["lah"] = "Lahnda", ["lai"] = "Lambya", ["laj"] = "Lango (Uganda)", ["lak"] = "Laka", ["lam"] = "Lamba", ["lan"] = "Laru", ["lap"] = "Kabba-Laka", ["laq"] = "Qabiao", ["lar"] = "Larteh", ["las"] = "Gur Lama", ["lau"] = "Laba", ["law"] = "Lauje", ["lax"] = "Tiwa", ["lay"] = "Lama Bai", ["laz"] = "Aribwatsa", ["lb"] = "ลักเซมเบิร์ก", ["lbb"] = "Label", ["lbc"] = "ลักเกีย", ["lbe"] = "ลัก", ["lbf"] = "Tinani", ["lbg"] = "Laopang", ["lbi"] = "La'bi", ["lbj"] = "ลาดัก", ["lbk"] = "Central Bontoc", ["lbl"] = "Libon Bikol", ["lbm"] = "Lodhi", ["lbn"] = "Lamet", ["lbo"] = "Laven", ["lbq"] = "Wampar", ["lbr"] = "Northern Lorung", ["lbs"] = "Libyan Sign Language", ["lbt"] = "Lachi", ["lbu"] = "Labu", ["lbv"] = "Lavatbura-Lamusong", ["lbw"] = "Tolaki", ["lbx"] = "Lawangan", ["lby"] = "Lamu-Lamu", ["lbz"] = "Lardil", ["lcc"] = "Legenyem", ["lcd"] = "Lola", ["lce"] = "Loncong", ["lcf"] = "Lubu", ["lch"] = "Luchazi", ["lcl"] = "Lisela", ["lcm"] = "Tungag", ["lcp"] = "เลอเวือะตะวันตก", ["lcq"] = "Luhu", ["lcs"] = "Lisabata-Nuniali", ["lda"] = "Kla", ["ldb"] = "Idun", ["ldd"] = "Luri (Nigeria)", ["ldg"] = "Lenyima", ["ldh"] = "Lamja-Dengsa-Tola", ["ldj"] = "Lemoro", ["ldk"] = "Leelau", ["ldl"] = "Kaan", ["ldm"] = "Landoma", ["ldn"] = "Láadan", ["ldo"] = "Loo", ["ldp"] = "Tso", ["ldq"] = "Lufu", ["lea"] = "Lega-Shabunda", ["leb"] = "Lala-Bisa", ["lec"] = "Leco", ["led"] = "Lendu", ["lee"] = "Lyélé", ["lef"] = "Lelemi", ["leh"] = "Lenje", ["lei"] = "Lemio", ["lej"] = "Lengola", ["lek"] = "Leipon", ["lel"] = "Lele (Congo)", ["lem"] = "Nomaande", ["len"] = "Honduran Lenca", ["leo"] = "Mengisa", ["lep"] = "Lepcha", ["leq"] = "Lembena", ["ler"] = "Lenkau", ["les"] = "Lese", ["let"] = "Lesing-Gelimi", ["leu"] = "Kara (New Guinea)", ["lev"] = "Lamma", ["lew"] = "Ledo Kaili", ["lex"] = "Luang", ["ley"] = "Lemolang", ["lez"] = "เลซกี", ["lfa"] = "Lefa", ["lfn"] = "Lingua Franca Nova", ["lg"] = "ลูกันดา", ["lga"] = "Lungga", ["lgb"] = "Laghu", ["lgg"] = "Lugbara", ["lgh"] = "Laghuu", ["lgi"] = "Lengilu", ["lgk"] = "Neverver", ["lgl"] = "Wala", ["lgm"] = "Lega-Mwenga", ["lgn"] = "Opuuo", ["lgq"] = "Logba", ["lgr"] = "Lengo", ["lgs"] = "Guinea-Bissau Sign Language", ["lgt"] = "Pahi", ["lgu"] = "Longgu", ["lgz"] = "Ligenza", ["lha"] = "Laha (Vietnam)", ["lhh"] = "Laha (Indonesia)", ["lhi"] = "Lahu Shi", ["lhl"] = "Lahul Lohar", ["lhn"] = "Lahanan", ["lhp"] = "Lhokpu", ["lhs"] = "Mlahsö", ["lht"] = "Lo-Toga", ["lhu"] = "Lahu", ["li"] = "ลิมเบิร์ก", ["lia"] = "West-Central Limba", ["lib"] = "Likum", ["lic"] = "ไหล", ["lid"] = "Nyindrou", ["lie"] = "Likila", ["lif"] = "ลิมบู", ["lig"] = "Ligbi", ["lih"] = "Lihir", ["lii"] = "Lingkhim", ["lij"] = "ลีกูเรีย", ["lik"] = "Lika", ["lil"] = "Lillooet", ["lio"] = "Liki", ["lip"] = "Sekpele", ["liq"] = "Libido", ["lir"] = "Liberian Kreyol", ["lis"] = "ลีสู่", ["liu"] = "Logorik", ["liv"] = "ลีโวเนีย", ["liw"] = "Col", ["lix"] = "Liabuku", ["liy"] = "Banda-Bambari", ["liz"] = "Libinza", ["lja"] = "Golpa", ["lje"] = "Rampi", ["lji"] = "Laiyolo", ["ljl"] = "Li'o", ["ljp"] = "Lampung Api", ["ljw"] = "Yirandali", ["ljx"] = "Yuru", ["lka"] = "Lakalei", ["lkb"] = "Kabras", ["lkc"] = "Kucong", ["lkd"] = "Lakondê", ["lke"] = "Kenyi", ["lkh"] = "Lakha", ["lki"] = "Laki", ["lkj"] = "Remun", ["lkl"] = "Laeko-Libuat", ["lkm"] = "Kalaamaya", ["lkn"] = "Lakon", ["lko"] = "Khayo", ["lkr"] = "Päri", ["lks"] = "Kisa", ["lkt"] = "Lakota", ["lku"] = "Kungkari", ["lky"] = "Lokoya", ["lla"] = "Lala-Roba", ["llb"] = "Lolo", ["llc"] = "Lele (Guinea)", ["lld"] = "ลาดิน", ["lle"] = "Lele (New Guinea)", ["llf"] = "Hermit", ["llg"] = "Lole", ["llh"] = "Lamu", ["lli"] = "Teke-Laali", ["llj"] = "Ladji-Ladji", ["llk"] = "Lelak", ["lll"] = "Lilau", ["llm"] = "Lasalimu", ["lln"] = "Lele (Chad)", ["llo"] = "Khlor", ["llp"] = "North Efate", ["llq"] = "Lolak", ["lls"] = "Lithuanian Sign Language", ["llu"] = "Lau", ["llx"] = "Lauan", ["lma"] = "East Limba", ["lmb"] = "Merei", ["lmc"] = "Limilngan", ["lmd"] = "Lumun", ["lme"] = "Pévé", ["lmf"] = "South Lembata", ["lmg"] = "Lamogai", ["lmh"] = "Lambichhong", ["lmi"] = "Lombi", ["lmj"] = "West Lembata", ["lmk"] = "Lamkang", ["lml"] = "Raga", ["lmn"] = "Lambadi", ["lmo"] = "ลอมบาร์ด", ["lmp"] = "Limbum", ["lmq"] = "Lamatuka", ["lmr"] = "Lamalera", ["lmu"] = "Lamenu", ["lmv"] = "Lomaiviti", ["lmw"] = "Lake Miwok", ["lmx"] = "Laimbue", ["lmy"] = "ลัมโบยา", ["lmz"] = "Lumbee", ["ln"] = "ลิงกาลา", ["lna"] = "Langbashe", ["lnb"] = "Mbalanhu", ["lnd"] = "Lun Bawang", ["lnh"] = "Lanoh", ["lni"] = "Daantanai'", ["lnj"] = "Linngithigh", ["lnl"] = "South Central Banda", ["lnm"] = "Langam", ["lnn"] = "Lorediakarkar", ["lno"] = "Lango (Sudan)", ["lns"] = "Lamnso'", ["lnu"] = "Longuda", ["lnw"] = "Lanima", ["lo"] = "ลาว", ["loa"] = "Loloda", ["lob"] = "Lobi", ["loc"] = "Inonhan", ["lod"] = "เบอราวัน", ["loe"] = "Saluan", ["lof"] = "Logol", ["log"] = "Logo", ["loh"] = "Narim", ["loi"] = "Lomakka", ["loj"] = "Lou", ["lok"] = "Loko", ["lol"] = "Mongo", ["lom"] = "Loma", ["lon"] = "Malawi Lomwe", ["loo"] = "Lombo", ["lop"] = "Lopa", ["loq"] = "Lobala", ["lor"] = "Téén", ["los"] = "Loniu", ["lot"] = "Lotuko", ["lou"] = "ครีโอลลุยเซียนา", ["lov"] = "Lopi", ["low"] = "Tampias Lobu", ["lox"] = "Loun", ["loz"] = "Lozi", ["lpa"] = "Lelepa", ["lpe"] = "Lepki", ["lpn"] = "Long Phuri Naga", ["lpo"] = "Lipo", ["lpx"] = "Lopit", ["lra"] = "Rara Bakati'", ["lrc"] = "Northern Luri", ["lre"] = "Laurentian", ["lrg"] = "Laragia", ["lri"] = "Marachi", ["lrk"] = "Loarki", ["lrl"] = "Larestani", ["lrm"] = "Marama", ["lrn"] = "Lorang", ["lro"] = "Laro", ["lrr"] = "Southern Lorung", ["lrt"] = "Larantuka Malay", ["lrv"] = "Larëvat", ["lrz"] = "Lemerig", ["lsa"] = "Lasgerdi", ["lsd"] = "Lishana Deni", ["lse"] = "Lusengo", ["lsh"] = "Lish", ["lsi"] = "Lashi", ["lsl"] = "Latvian Sign Language", ["lsm"] = "Saamia", ["lsn"] = "Tibetan Sign Language", ["lso"] = "Laos Sign Language", ["lsp"] = "Panamanian Sign Language", ["lsr"] = "Aruop", ["lss"] = "Lasi", ["lst"] = "Trinidad and Tobago Sign Language", ["lsv"] = "Sivia Sign Language", ["lsy"] = "Mauritian Sign Language", ["lt"] = "ลิทัวเนีย", ["ltc"] = "จีนยุคกลาง", ["ltg"] = "ลัตเกล", ["lti"] = "Leti", ["ltn"] = "Latundê", ["lto"] = "Olutsotso", ["lts"] = "Lutachoni", ["ltu"] = "Latu", ["lu"] = "Luba-Katanga", ["lua"] = "Luba-Kasai", ["luc"] = "Aringa", ["lud"] = "Ludian", ["lue"] = "Luvale", ["luf"] = "Laua", ["luh"] = "หล่อยแอว๋", ["lui"] = "Luiseño", ["luj"] = "Luna", ["luk"] = "Lunanakha", ["lul"] = "Olu'bo", ["lum"] = "Luimbi", ["lun"] = "Lunda", ["luo"] = "Luo", ["lup"] = "Lumbu", ["luq"] = "Lucumí", ["lur"] = "Laura", ["lus"] = "มีโซ", ["lut"] = "Lushootseed", ["luu"] = "Lumba-Yakkha", ["luv"] = "Luwati", ["luy"] = "Luhya", ["luz"] = "Southern Luri", ["lv"] = "ลัตเวีย", ["lva"] = "Maku'a", ["lvi"] = "Lawi", ["lvk"] = "Lavukaleve", ["lvl"] = "Lwel", ["lvu"] = "Levuka", ["lwa"] = "Lwalu", ["lwe"] = "Lewo Eleng", ["lwg"] = "Wanga", ["lwh"] = "White Lachi", ["lwl"] = "เลอเวือะตะวันออก", ["lwm"] = "Laomian", ["lwo"] = "Luwo", ["lws"] = "Malawian Sign Language", ["lwt"] = "Lewotobi", ["lwu"] = "Lawu", ["lww"] = "Lewo", ["lya"] = "Layakha", ["lyg"] = "ลึงงัม", ["lyn"] = "Luyana", ["lzh"] = "จีนวรรณกรรม", ["lzl"] = "Litzlitz", ["lzn"] = "Leinong Naga", ["lzz"] = "ลัซ", ["maa"] = "San Jerónimo Tecóatl Mazatec", ["mab"] = "Yutanduchi Mixtec", ["mad"] = "Madurese", ["mae"] = "Bo-Rukul", ["maf"] = "Mafa", ["mag"] = "มคหะ", ["mai"] = "ไมถิลี", ["maj"] = "Jalapa de Díaz Mazatec", ["mak"] = "มากัซซาร์", ["mam"] = "Mam", ["man"] = "Mandingo", ["map-ata-pro"] = "Proto-Atayalic", ["map-bms"] = "Banyumasan", ["map-pro"] = "ออสโตรนีเซียนดั้งเดิม", ["maq"] = "Chiquihuitlán Mazatec", ["mas"] = "มาไซ", ["mat"] = "Matlatzinca", ["mau"] = "Huautla Mazatec", ["mav"] = "Sateré-Mawé", ["maw"] = "Mampruli", ["max"] = "North Moluccan Malay", ["maz"] = "Central Mazahua", ["mba"] = "Higaonon", ["mbb"] = "Western Bukidnon Manobo", ["mbc"] = "Macushi", ["mbd"] = "Dibabawon Manobo", ["mbe"] = "Molale", ["mbf"] = "Baba Malay", ["mbh"] = "Mangseng", ["mbi"] = "Ilianen Manobo", ["mbj"] = "Nadëb", ["mbk"] = "Malol", ["mbl"] = "Maxakalí", ["mbm"] = "Ombamba", ["mbn"] = "Macaguán", ["mbo"] = "Mbo (Cameroon)", ["mbp"] = "Wiwa", ["mbq"] = "Maisin", ["mbr"] = "Nukak Makú", ["mbs"] = "Sarangani Manobo", ["mbt"] = "Matigsalug Manobo", ["mbu"] = "Mbula-Bwazza", ["mbv"] = "Mbulungish", ["mbw"] = "Maring", ["mbx"] = "Sepik Mari", ["mby"] = "Memoni", ["mbz"] = "Amoltepec Mixtec", ["mca"] = "Maca", ["mcb"] = "Machiguenga", ["mcc"] = "Bitur", ["mcd"] = "Sharanahua", ["mce"] = "Itundujia Mixtec", ["mcf"] = "Matsés", ["mcg"] = "Mapoyo", ["mch"] = "Ye'kwana", ["mci"] = "Mese", ["mcj"] = "Mvanip", ["mck"] = "Mbunda", ["mcl"] = "Macaguaje", ["mcm"] = "Kristang", ["mcn"] = "Masana", ["mco"] = "Coatlán Mixe", ["mcp"] = "Makaa", ["mcq"] = "Ese", ["mcr"] = "Menya", ["mcs"] = "Mambai", ["mcu"] = "Cameroon Mambila", ["mcw"] = "Mawa", ["mcx"] = "Mpiemo", ["mcy"] = "South Watut", ["mcz"] = "Mawan", ["mda"] = "Mada (Nigeria)", ["mdb"] = "Morigi", ["mdc"] = "Male", ["mdd"] = "Mbum", ["mde"] = "Bura Mabang", ["mdf"] = "มอกชา", ["mdg"] = "Massalat", ["mdh"] = "มากินดาเนา", ["mdi"] = "Mamvu", ["mdj"] = "Mangbetu", ["mdk"] = "Mangbutu", ["mdl"] = "Maltese Sign Language", ["mdm"] = "Mayogo", ["mdn"] = "Mbati", ["mdp"] = "Mbala", ["mdq"] = "Mbole", ["mdr"] = "Mandar", ["mds"] = "Maria", ["mdt"] = "Mbere", ["mdu"] = "Mboko", ["mdv"] = "Santa Lucía Monteverde Mixtec", ["mdw"] = "Mbosi", ["mdx"] = "Dizin", ["mdy"] = "Maale", ["mdz"] = "Suruí Do Pará", ["mea"] = "Menka", ["meb"] = "Ikobi-Mena", ["mec"] = "Mara", ["med"] = "Melpa", ["mee"] = "Mengen", ["mef"] = "Megam", ["meh"] = "Southwestern Tlaxiaco Mixtec", ["mei"] = "Midob", ["mej"] = "Meyah", ["mek"] = "Mekeo", ["mel"] = "Central Melanau", ["mem"] = "Mangala", ["men"] = "Mende", ["meo"] = "มลายูแบบเกอดะฮ์", ["mep"] = "Miriwung", ["meq"] = "Merey", ["mer"] = "Meru", ["mes"] = "Masmaje", ["met"] = "Mato", ["meu"] = "Motu", ["mev"] = "Mano", ["mew"] = "Maaka", ["mey"] = "Hassaniya Arabic", ["mez"] = "Menominee", ["mfa"] = "มลายูแบบปัตตานี", ["mfb"] = "Bangka", ["mfc"] = "Mba", ["mfd"] = "Mendankwe-Nkwen", ["mfe"] = "ครีโอลมอริเชียส", ["mff"] = "Naki", ["mfg"] = "Mixifore", ["mfh"] = "Matal", ["mfi"] = "Wandala", ["mfj"] = "Mefele", ["mfk"] = "North Mofu", ["mfl"] = "Putai", ["mfm"] = "Marghi South", ["mfn"] = "Cross River Mbembe", ["mfo"] = "Mbe", ["mfp"] = "Makassar Malay", ["mfq"] = "Moba", ["mfr"] = "Marrithiyel", ["mfs"] = "Mexican Sign Language", ["mft"] = "Mokerang", ["mfu"] = "Mbwela", ["mfv"] = "Mandjak", ["mfw"] = "Mulaha", ["mfx"] = "Melo", ["mfy"] = "Mayo", ["mfz"] = "Mabaan", ["mg"] = "มาลากาซี", ["mga"] = "ไอริชกลาง", ["mgb"] = "Mararit", ["mgc"] = "Morokodo", ["mgd"] = "Moru", ["mge"] = "Mango", ["mgf"] = "Maklew", ["mgg"] = "Mpongmpong", ["mgh"] = "Makhuwa-Meetto", ["mgi"] = "Jili", ["mgj"] = "Abureni", ["mgk"] = "Mawes", ["mgl"] = "Maleu-Kilenge", ["mgm"] = "Mambae", ["mgn"] = "Mbangi", ["mgo"] = "Meta'", ["mgp"] = "Eastern Magar", ["mgq"] = "Malila", ["mgr"] = "Mambwe-Lungu", ["mgs"] = "Manda (Tanzania)", ["mgt"] = "Mongol", ["mgu"] = "Mailu", ["mgv"] = "Matengo", ["mgw"] = "Matumbi", ["mgy"] = "Mbunga", ["mgz"] = "Mbugwe", ["mh"] = "มาร์แชลล์", ["mha"] = "Manda (India)", ["mhb"] = "Mahongwe", ["mhc"] = "Mocho", ["mhd"] = "Mbugu", ["mhe"] = "Besisi", ["mhf"] = "Mamaa", ["mhg"] = "Marrgu", ["mhi"] = "Ma'di", ["mhj"] = "Mogholi", ["mhk"] = "Mungaka", ["mhl"] = "Mauwake", ["mhm"] = "Makhuwa-Moniga", ["mhn"] = "โมเชโน", ["mho"] = "Mashi", ["mhp"] = "Balinese Malay", ["mhq"] = "Mandan", ["mhr"] = "Eastern Mari", ["mhs"] = "Buru (Indonesia)", ["mht"] = "Mandahuaca", ["mhu"] = "Taraon", ["mhw"] = "Mbukushu", ["mhx"] = "Lhao Vo", ["mhy"] = "Ma'anyan", ["mhz"] = "Mor (Austronesian)", ["mi"] = "มาวรี", ["mia"] = "Miami", ["mib"] = "Atatláhuca Mixtec", ["mic"] = "Mi'kmaq", ["mid"] = "Mandaic", ["mie"] = "Ocotepec Mixtec", ["mif"] = "Mofu-Gudur", ["mig"] = "San Miguel el Grande Mixtec", ["mih"] = "Chayuco Mixtec", ["mii"] = "Chigmecatitlán Mixtec", ["mij"] = "Mungbam", ["mik"] = "Mikasuki", ["mil"] = "Peñoles Mixtec", ["mim"] = "Alacatlatzala Mixtec", ["min"] = "มีนังกาเบา", ["mio"] = "Pinotepa Nacional Mixtec", ["mip"] = "Apasco-Apoala Mixtec", ["miq"] = "Miskito", ["mir"] = "Isthmus Mixe", ["mis-hkl"] = "Kelantan Peranakan Hokkien", ["mis-idn"] = "Idiom Neutral", ["mis-isa"] = "Isaurian", ["mis-jie"] = "Jie", ["mis-jzh"] = "Jizhao", ["mis-kas"] = "Kassite", ["mis-mmd"] = "Mimi of Decorse", ["mis-mmn"] = "Mimi of Nachtigal", ["mis-phi"] = "Philistine", ["mis-rou"] = "Rouran", ["mis-tdl"] = "Turdulian", ["mis-tdt"] = "Turdetanian", ["mis-tnw"] = "Tangwang", ["mis-tuh"] = "Tuyuhun", ["mis-tuo"] = "Tuoba", ["mis-wuh"] = "Wuhuan", ["mis-xbi"] = "Xianbei", ["mis-xnu"] = "Xiongnu", ["mit"] = "Southern Puebla Mixtec", ["miu"] = "Cacaloxtepec Mixtec", ["miw"] = "Akoye", ["mix"] = "Mixtepec Mixtec", ["miy"] = "Ayutla Mixtec", ["miz"] = "Coatzospan Mixtec", ["mjb"] = "Makalero", ["mjc"] = "San Juan Colorado Mixtec", ["mjd"] = "Northwest Maidu", ["mje"] = "Muskum", ["mjg-mgl"] = "Mongghul", ["mjg-mgr"] = "Mangghuer", ["mji"] = "Kim Mun", ["mjj"] = "Mawak", ["mjk"] = "Matukar", ["mjl"] = "Mandeali", ["mjm"] = "Medebur", ["mjn"] = "Mebu", ["mjo"] = "Malankuravan", ["mjp"] = "Malapandaram", ["mjq"] = "Malaryan", ["mjr"] = "Malavedan", ["mjs"] = "Miship", ["mjt"] = "Sawriya Paharia", ["mju"] = "Manna-Dora", ["mjv"] = "Mannan", ["mjw"] = "Karbi", ["mjx"] = "Mahali", ["mjy"] = "Mahican", ["mjz"] = "Majhi", ["mk"] = "มาซิโดเนีย", ["mka"] = "Mbre", ["mkb"] = "Mal Paharia", ["mkc"] = "Siliput", ["mke"] = "Mawchi", ["mkf"] = "Miya", ["mkg"] = "Mak (China)", ["mkh-asl-pro"] = "Proto-Aslian", ["mkh-ban-pro"] = "Proto-Bahnaric", ["mkh-kat-pro"] = "Proto-Katuic", ["mkh-khm-pro"] = "ขมุอิกดั้งเดิม", ["mkh-kmr-pro"] = "เขมรดั้งเดิม", ["mkh-mmn"] = "มอญกลาง", ["mkh-mnc-pro"] = "มอญดั้งเดิม", ["mkh-mvi"] = "เวียดนามกลาง", ["mkh-pal-pro"] = "ปะหล่องดั้งเดิม", ["mkh-pea-pro"] = "Proto-Pearic", ["mkh-pkn-pro"] = "Proto-Pakanic", ["mkh-pro"] = "มอญ-เขมรดั้งเดิม", ["mkh-vie-pro"] = "เวียตติกดั้งเดิม", ["mki"] = "Dhatki", ["mkj"] = "โมกิล", ["mkk"] = "Byep", ["mkl"] = "Mokole", ["mkm"] = "Moklen", ["mkn"] = "Kupang Malay", ["mko"] = "Mingang Doso", ["mkp"] = "Moikodi", ["mkq"] = "Bay Miwok", ["mkr"] = "Malas", ["mks"] = "Silacayoapan Mixtec", ["mkt"] = "Vamale", ["mku"] = "Konyanka Maninka", ["mkv"] = "Mav̋ea", ["mkx"] = "Cinamiguin Manobo", ["mky"] = "Taba", ["mkz"] = "Makasae", ["ml"] = "มลยาฬัม", ["mla"] = "Tamambo", ["mlb"] = "Mbule", ["mlc"] = "Caolan", ["mle"] = "Manambu", ["mlf"] = "มัล", ["mlh"] = "Mape", ["mli"] = "Malimpung", ["mlj"] = "Miltu", ["mlk"] = "Ilwana", ["mll"] = "Malua Bay", ["mlm"] = "Mulam", ["mln"] = "Malango", ["mlo"] = "Mlomp", ["mlp"] = "Bargam", ["mlq"] = "Western Maninkakan", ["mlr"] = "Vame", ["mls"] = "Masalit", ["mlu"] = "To'abaita", ["mlv"] = "Mwotlap", ["mlw"] = "Moloko", ["mlx"] = "Malfaxal", ["mlz"] = "Malaynon", ["mma"] = "Mama", ["mmb"] = "Momina", ["mmc"] = "Michoacán Mazahua", ["mmd"] = "Maonan", ["mme"] = "Tirax", ["mmf"] = "Mundat", ["mmg"] = "North Ambrym", ["mmh"] = "Mehináku", ["mmi"] = "Musar", ["mmj"] = "Majhwar", ["mmk"] = "Mukha-Dora", ["mml"] = "Man Met", ["mmm"] = "Maii", ["mmn"] = "Mamanwa", ["mmo"] = "Mangga Buang", ["mmp"] = "Musan", ["mmq"] = "Aisi", ["mmr"] = "Western Xiangxi Miao", ["mmt"] = "Malalamai", ["mmu"] = "Mmaala", ["mmv"] = "Miriti", ["mmw"] = "Emae", ["mmx"] = "Madak", ["mmy"] = "Migaama", ["mmz"] = "Mabaale", ["mn"] = "มองโกเลีย", ["mna"] = "Mbula", ["mnb"] = "Muna", ["mnc"] = "แมนจู", ["mnd"] = "Mondé", ["mne"] = "Naba", ["mnf"] = "Mundani", ["mng"] = "Eastern Mnong", ["mnh"] = "Mono (Congo)", ["mni"] = "มณีปุระ", ["mnj"] = "Munji", ["mnk"] = "Mandinka", ["mnl"] = "Tiale", ["mnm"] = "Mapena", ["mnn"] = "มนองใต้", ["mnp"] = "หมิ่นเหนือ", ["mnq"] = "Minriq", ["mnr"] = "Mono (California)", ["mns-cen"] = "Central Mansi", ["mns-nor"] = "Northern Mansi", ["mns-pro"] = "Proto-Mansi", ["mns-sou"] = "Southern Mansi", ["mnt"] = "Maykulan", ["mnu"] = "Mer", ["mnv"] = "Rennellese", ["mnw"] = "มอญ", ["mnw-tha"] = "มอญแบบไทย", ["mnx"] = "Manikion", ["mny"] = "Manyawa", ["mnz"] = "Moni", ["moa"] = "Mwan", ["moc"] = "Mocoví", ["mod"] = "Mobilian", ["moe"] = "มงตาแญ", ["mog"] = "Mongondow", ["moh"] = "Mohawk", ["moi"] = "Mboi", ["moj"] = "Monzombo", ["mok"] = "Morori", ["mom"] = "Monimbo", ["moo"] = "Monom", ["mop"] = "Mopan Maya", ["moq"] = "Mor (Papuan)", ["mor"] = "Moro", ["mos"] = "Moore", ["mot"] = "Barí", ["mou"] = "Mogum", ["mov"] = "Mojave", ["mow"] = "Moi (Congo)", ["mox"] = "Molima", ["moy"] = "Shekkacho", ["moz"] = "Mukulu", ["mpa"] = "Mpoto", ["mpb"] = "Mullukmulluk", ["mpc"] = "Mangarayi", ["mpd"] = "Machinere", ["mpe"] = "Majang", ["mpg"] = "Marba", ["mph"] = "Maung", ["mpi"] = "Mpade", ["mpj"] = "Martu Wangka", ["mpk"] = "Mbara (Chad)", ["mpl"] = "Middle Watut", ["mpm"] = "Yosondúa Mixtec", ["mpn"] = "Mindiri", ["mpo"] = "Miu", ["mpp"] = "Migabac", ["mpq"] = "Matís", ["mpr"] = "Vangunu", ["mps"] = "Dadibi", ["mpt"] = "Mian", ["mpu"] = "Makuráp", ["mpv"] = "Mungkip", ["mpw"] = "Mapidian", ["mpx"] = "Misima-Paneati", ["mpy"] = "Mapia", ["mpz"] = "Mpi", ["mqa"] = "Maba", ["mqb"] = "Mbuko", ["mqc"] = "Mangole", ["mqe"] = "Matepi", ["mqf"] = "Momuna", ["mqg"] = "Kota Bangun Kutai Malay", ["mqh"] = "Tlazoyaltepec Mixtec", ["mqi"] = "Mariri", ["mqj"] = "Mamasa", ["mqk"] = "Rajah Kabunsuwan Manobo", ["mql"] = "Mbelime", ["mqm"] = "South Marquesan", ["mqn"] = "Moronene", ["mqo"] = "Modole", ["mqp"] = "Manipa", ["mqq"] = "Minokok", ["mqr"] = "Mander", ["mqs"] = "West Makian", ["mqt"] = "Mok", ["mqu"] = "Mandari", ["mqv"] = "Mosimo", ["mqw"] = "Murupi", ["mqx"] = "Mamuju", ["mqy"] = "Manggarai", ["mqz"] = "Malasanga", ["mr"] = "มราฐี", ["mra"] = "Mlabri", ["mrb"] = "Sungwadia", ["mrc"] = "Maricopa", ["mrd"] = "Western Magar", ["mre"] = "Martha's Vineyard Sign Language", ["mrf"] = "Elseng", ["mrg"] = "Mising", ["mrh"] = "Mara Chin", ["mrj"] = "Western Mari", ["mrk"] = "Hmwaveke", ["mrl"] = "Mortlockese", ["mrm"] = "Mwerlap", ["mrn"] = "Cheke Holo", ["mro"] = "Mru", ["mrp"] = "Morouas", ["mrq"] = "North Marquesan", ["mrr"] = "Hill Maria", ["mrs"] = "Maragus", ["mrt"] = "Margi", ["mru"] = "Mono (Cameroon)", ["mrv"] = "Mangarevan", ["mrw"] = "มาราเนา", ["mrx"] = "Dineor", ["mry"] = "Karaga Mandaya", ["mrz"] = "Marind", ["ms"] = "มาเลเซีย", ["msb"] = "มัสบาเต", ["msc"] = "Sankaran Maninka", ["msd"] = "Yucatec Maya Sign Language", ["mse"] = "Musey", ["msf"] = "Mekwei", ["msg"] = "Moraid", ["msi"] = "Sabah Malay", ["msj"] = "Ma", ["msk"] = "Mansaka", ["msl"] = "Molof", ["msm"] = "Agusan Manobo", ["msn"] = "Vurës", ["mso"] = "Mombum", ["msp"] = "Maritsauá", ["msq"] = "Caac", ["msr"] = "Mongolian Sign Language", ["mss"] = "West Masela", ["msu"] = "Musom", ["msv"] = "Maslam", ["msw"] = "Mansoanka", ["msx"] = "Moresada", ["msy"] = "Aruamu", ["msz"] = "Momare", ["mt"] = "มอลตา", ["mta"] = "Cotabato Manobo", ["mtb"] = "Anyin Morofo", ["mtc"] = "Munit", ["mtd"] = "Mualang", ["mte"] = "Alu", ["mtf"] = "Murik (New Guinea)", ["mtg"] = "Una", ["mth"] = "Munggui", ["mti"] = "Maiwa (New Guinea)", ["mtj"] = "Moskona", ["mtk"] = "Mbe'", ["mtl"] = "Montol", ["mtm"] = "Mator", ["mtn"] = "Matagalpa", ["mto"] = "Totontepec Mixe", ["mtp"] = "Wichí Lhamtés Nocten", ["mtq"] = "เหมื่อง", ["mtr"] = "เมวาร์", ["mts"] = "Yora", ["mtt"] = "Mota", ["mtu"] = "Tututepec Mixtec", ["mtv"] = "Asaro'o", ["mtw"] = "Magahat", ["mtx"] = "Tidaá Mixtec", ["mty"] = "Nabi", ["mua"] = "Mundang", ["mub"] = "Mubi", ["muc"] = "Mbu'", ["mud"] = "Mednyj Aleut", ["mue"] = "Media Lengua", ["mug"] = "Musgu", ["muh"] = "Mündü", ["mui"] = "มูซี", ["muj"] = "Mabire", ["mul"] = "ร่วม", ["mum"] = "Maiwala", ["mun-pro"] = "มุนดาดั้งเดิม", ["muo"] = "Nyong", ["mup"] = "Malvi", ["muq"] = "Eastern Xiangxi Miao", ["mur"] = "Murle", ["mus"] = "Creek", ["mut"] = "Western Muria", ["muu"] = "Yaaku", ["muv"] = "Muthuvan", ["mux"] = "Bo-Ung", ["muy"] = "Muyang", ["muz"] = "Mursi", ["mva"] = "Manam", ["mvb"] = "Mattole", ["mvd"] = "Mamboru", ["mvg"] = "Yucuañe Mixtec", ["mvh"] = "Mire", ["mvi"] = "มิยาโกะ", ["mvk"] = "Mekmek", ["mvl"] = "Mbara (Australia)", ["mvm"] = "Muya", ["mvn"] = "Minaveha", ["mvo"] = "Marovo", ["mvp"] = "Duri", ["mvq"] = "Moere", ["mvr"] = "Marau", ["mvs"] = "Massep", ["mvt"] = "Mpotovoro", ["mvu"] = "Marfa", ["mvv"] = "Tagal Murut", ["mvw"] = "Machinga", ["mvx"] = "Meoswar", ["mvy"] = "Indus Kohistani", ["mvz"] = "Mesqan", ["mwa"] = "Mwatebu", ["mwb"] = "Juwal", ["mwc"] = "Are", ["mwe"] = "Mwera", ["mwf"] = "Murrinh-Patha", ["mwg"] = "Aiklep", ["mwh"] = "Mouk-Aria", ["mwi"] = "Labo", ["mwk"] = "Kita Maninkakan", ["mwl"] = "มีรังดา", ["mwm"] = "Sar", ["mwn"] = "Nyamwanga", ["mwo"] = "Sungwadaga", ["mwp"] = "Kala Lagaw Ya", ["mwq"] = "Mün Chin", ["mwr"] = "มาร์วาร์", ["mws"] = "Mwimbi-Muthambi", ["mwt"] = "Moken", ["mwu"] = "Mittu", ["mwv"] = "Mentawai", ["mww"] = "ม้งขาว", ["mwz"] = "Moingi", ["mxa"] = "Northwest Oaxaca Mixtec", ["mxb"] = "Tezoatlán Mixtec", ["mxd"] = "Modang", ["mxe"] = "Mele-Fila", ["mxf"] = "Malgbe", ["mxg"] = "Mbangala", ["mxh"] = "Mvuba", ["mxi"] = "Mozarabic", ["mxj"] = "Miju", ["mxk"] = "Monumbo", ["mxl"] = "Maxi Gbe", ["mxm"] = "Meramera", ["mxn"] = "Moi (Indonesia)", ["mxo"] = "Mbowe", ["mxp"] = "Tlahuitoltepec Mixe", ["mxq"] = "Juquila Mixe", ["mxr"] = "Murik (Malaysia)", ["mxs"] = "Huitepec Mixtec", ["mxt"] = "Jamiltepec Mixtec", ["mxu"] = "Mada (Cameroon)", ["mxv"] = "Metlatónoc Mixtec", ["mxw"] = "Namo", ["mxx"] = "Mahou", ["mxy"] = "Southeastern Nochixtlán Mixtec", ["mxz"] = "Central Masela", ["my"] = "พม่า", ["myb"] = "Mbay", ["myc"] = "Mayeka", ["mye"] = "Myene", ["myf"] = "Bambassi", ["myg"] = "Manta", ["myh"] = "Makah", ["myj"] = "Mangayat", ["myk"] = "Mamara Senoufo", ["myl"] = "Moma", ["mym"] = "Me'en", ["myn-chl"] = "Ch'olti'", ["myn-pro"] = "มายันดั้งเดิม", ["myo"] = "Anfillo", ["myp"] = "Pirahã", ["myr"] = "Muniche", ["mys"] = "Mesmes", ["myu"] = "Mundurukú", ["myv"] = "เอร์เซีย", ["myw"] = "Muyuw", ["myx"] = "Masaba", ["myy"] = "Macuna", ["myz"] = "Classical Mandaic", ["mza"] = "Santa María Zacatepec Mixtec", ["mzb"] = "Northern Saharan Berber", ["mzc"] = "Madagascar Sign Language", ["mzd"] = "Malimba", ["mze"] = "Morawa", ["mzg"] = "Monastic Sign Language", ["mzh"] = "Wichí Lhamtés Güisnay", ["mzi"] = "Ixcatlán Mazatec", ["mzj"] = "Manya", ["mzk"] = "Nigeria Mambila", ["mzl"] = "Mazatlán Mixe", ["mzm"] = "Mumuye", ["mzn"] = "มอแซนแดรอน", ["mzo"] = "Matipuhy", ["mzp"] = "Movima", ["mzq"] = "Mori Atas", ["mzr"] = "Marúbo", ["mzs"] = "ครีโอลมาเก๊า", ["mzt"] = "Mintil", ["mzu"] = "Inapang", ["mzv"] = "Manza", ["mzw"] = "Deg", ["mzx"] = "Mawayana", ["mzy"] = "Mozambican Sign Language", ["mzz"] = "Maiadomu", ["na"] = "นาอูรู", ["naa"] = "Namla", ["nab"] = "Nambikwara", ["nac"] = "Narak", ["nae"] = "Naka'ela", ["naf"] = "Nabak", ["nag"] = "Naga Pidgin", ["nah"] = "นาวัตล์", ["nai-ala"] = "Alazapa", ["nai-bay"] = "Bayogoula", ["nai-cal"] = "Calusa", ["nai-chi"] = "Chiquimulilla", ["nai-chu-pro"] = "Proto-Chumash", ["nai-cig"] = "Ciguayo", ["nai-ckn-pro"] = "Proto-Chinookan", ["nai-guz"] = "Guazacapán", ["nai-hit"] = "Hitchiti", ["nai-ipa"] = "Ipai", ["nai-jtp"] = "Jutiapa", ["nai-jum"] = "Jumaytepeque", ["nai-kat"] = "Kathlamet", ["nai-klp-pro"] = "Proto-Kalapuyan", ["nai-knm"] = "Konomihu", ["nai-kum"] = "Kumeyaay", ["nai-mac"] = "Macoris", ["nai-mdu-pro"] = "Proto-Maidun", ["nai-miz-pro"] = "Proto-Mixe-Zoque", ["nai-mus-pro"] = "Proto-Muskogean", ["nai-nao"] = "Naolan", ["nai-nrs"] = "New River Shasta", ["nai-okw"] = "Okwanuchu", ["nai-per"] = "Pericú", ["nai-pic"] = "Picuris", ["nai-plp-pro"] = "Proto-Plateau Penutian", ["nai-pom-pro"] = "Proto-Pomo", ["nai-qng"] = "Quinigua", ["nai-sca-pro"] = "Proto-Siouan-Catawban", ["nai-sin"] = "Sinacantán", ["nai-sln"] = "Salvadoran Lenca", ["nai-spt"] = "Sahaptin", ["nai-tap"] = "Tapachultec", ["nai-taw"] = "Tawasa", ["nai-teq"] = "Tequistlatec", ["nai-tip"] = "Tipai", ["nai-tot-pro"] = "Proto-Totozoquean", ["nai-tsi-pro"] = "Proto-Tsimshianic", ["nai-utn-pro"] = "Proto-Utian", ["nai-wai"] = "Waikuri", ["nai-wji"] = "Western Jicaque", ["nai-yup"] = "Yupiltepeque", ["naj"] = "Nalu", ["nak"] = "Nakanai", ["nal"] = "Nalik", ["nam"] = "Ngan'gityemerri", ["nan"] = "หมิ่นใต้", ["nan-dat"] = "Datian Min", ["nan-hbl"] = "ฮกเกี้ยน", ["nan-hlh"] = "Hailufeng Min", ["nan-lnx"] = "Longyan Min", ["nan-tws"] = "แต้จิ๋ว", ["nan-zhe"] = "Zhenan Min", ["nan-zsh"] = "Sanxiang Min", ["nao"] = "Naaba", ["nap"] = "นาโปลี", ["naq"] = "Khoekhoe", ["nar"] = "Iguta", ["nas"] = "Nasioi", ["nat"] = "Hungworo", ["naw"] = "Nawuri", ["nax"] = "Nakwi", ["nay"] = "Ngarrindjeri", ["naz"] = "Coatepec Nahuatl", ["nb"] = "นอร์เวย์แบบบุ๊กมอล", ["nba"] = "Nyemba", ["nbb"] = "Ndoe", ["nbc"] = "Chang", ["nbd"] = "Ngbinda", ["nbe"] = "Konyak Naga", ["nbg"] = "Nagarchal", ["nbh"] = "Ngamo", ["nbi"] = "Mao Naga", ["nbj"] = "Ngarinman", ["nbk"] = "Nake", ["nbm"] = "Ngbaka Ma'bo", ["nbn"] = "Kuri", ["nbo"] = "Nkukoli", ["nbp"] = "Nnam", ["nbq"] = "Nggem", ["nbr"] = "Numana", ["nbs"] = "Namibian Sign Language", ["nbt"] = "Na", ["nbu"] = "Rongmei Naga", ["nbv"] = "Ngamambo", ["nbw"] = "Southern Ngbandi", ["nby"] = "Ningera", ["nca"] = "Iyo", ["ncb"] = "นิโคบาร์กลาง", ["ncc"] = "Ponam", ["ncd"] = "Nachering", ["nce"] = "Yale", ["ncf"] = "Notsi", ["ncg"] = "Nisga'a", ["nch"] = "Central Huasteca Nahuatl", ["nci"] = "นาวัตล์คลาสสิก", ["ncj"] = "Northern Puebla Nahuatl", ["nck"] = "Nakara", ["ncl"] = "Michoacán Nahuatl", ["ncm"] = "Nambo", ["ncn"] = "Nauna", ["nco"] = "Sibe", ["ncr"] = "Ncane", ["ncs"] = "Nicaraguan Sign Language", ["nct"] = "Chothe Naga", ["ncu"] = "Chumburung", ["ncx"] = "Central Puebla Nahuatl", ["ncz"] = "Natchez", ["nd"] = "Northern Ndebele", ["nda"] = "Ndasa", ["ndb"] = "Kenswei Nsei", ["ndc"] = "Ndau", ["ndd"] = "Nde-Nsele-Nta", ["ndf"] = "Nadruvian", ["ndg"] = "Ndengereko", ["ndh"] = "Ndali", ["ndi"] = "Chamba Leko", ["ndj"] = "Ndamba", ["ndk"] = "Ndaka", ["ndl"] = "Ndolo", ["ndm"] = "Ndam", ["ndn"] = "Ngundi", ["ndp"] = "Ndo", ["ndq"] = "Ndombe", ["ndr"] = "Ndoola", ["nds"] = "เยอรมันต่ำ", ["nds-de"] = "เยอรมันต่ำแบบเยอรมนี", ["nds-nl"] = "Dutch Low Saxon", ["ndt"] = "Ndunga", ["ndu"] = "Dugun", ["ndv"] = "Ndut", ["ndw"] = "Ndobo", ["ndx"] = "Nduga", ["ndy"] = "Lutos", ["ndz"] = "Ndogo", ["ne"] = "เนปาล", ["nea"] = "Eastern Ngad'a", ["neb"] = "Toura", ["nec"] = "Nedebang", ["ned"] = "Nde-Gbite", ["nee"] = "Kumak", ["nef"] = "Nefamese", ["neg"] = "Negidal", ["neh"] = "Nyenkha", ["nej"] = "Neko", ["nek"] = "Neku", ["nem"] = "Nemi", ["nen"] = "Nengone", ["neo"] = "Ná-Meo", ["neq"] = "North Central Mixe", ["ner"] = "Yahadian", ["nes"] = "Bhoti Kinnauri", ["net"] = "Nete", ["neu"] = "Neo", ["nev"] = "Nyaheun", ["new"] = "เนวาร์", ["nex"] = "Neme", ["ney"] = "Neyo", ["nez"] = "Nez Perce", ["nfa"] = "Dhao", ["nfd"] = "Ahwai", ["nfl"] = "Äiwoo", ["nfr"] = "Nafaanra", ["nfu"] = "Mfumte", ["ng"] = "Ndonga", ["nga"] = "Ngbaka", ["ngb"] = "Northern Ngbandi", ["ngc"] = "Ngombe (Congo)", ["ngd"] = "Ngando (Central African Republic)", ["nge"] = "Ngemba", ["ngf-pro"] = "Proto-Trans-New Guinea", ["ngg"] = "Ngbaka Manza", ["ngh"] = "Nǀuu", ["ngi"] = "Ngizim", ["ngj"] = "Ngie", ["ngk"] = "Ngalkbun", ["ngl"] = "Lomwe", ["ngm"] = "Ngatik Men's Creole", ["ngn"] = "Ngwo", ["ngo"] = "Ngoni", ["ngp"] = "Ngulu", ["ngq"] = "Ngoreme", ["ngr"] = "Nagu", ["ngs"] = "Gvoko", ["ngt"] = "Ngeq", ["ngu"] = "Guerrero Nahuatl", ["ngv"] = "Nagumi", ["ngw"] = "Ngwaba", ["ngx"] = "Nggwahyi", ["ngy"] = "Tibea", ["ngz"] = "Ngungwel", ["nha"] = "Nhanda", ["nhb"] = "Beng", ["nhc"] = "Tabasco Nahuatl", ["nhd"] = "Chiripá", ["nhe"] = "Eastern Huasteca Nahuatl", ["nhf"] = "Nhuwala", ["nhg"] = "Tetelcingo Nahuatl", ["nhh"] = "Nahari", ["nhi"] = "Zacatlán-Ahuacatlán-Tepetzintla Nahuatl", ["nhk"] = "Cosoleacaque Nahuatl", ["nhm"] = "Morelos Nahuatl", ["nhn"] = "นาวัตล์ตอนกลาง", ["nho"] = "Takuu", ["nhp"] = "Pajapan Nahuatl", ["nhq"] = "Huaxcaleca Nahuatl", ["nhr"] = "Naro", ["nht"] = "Ometepec Nahuatl", ["nhu"] = "Noone", ["nhv"] = "Temascaltepec Nahuatl", ["nhw"] = "Western Huasteca Nahuatl", ["nhx"] = "Mecayapan Nahuatl", ["nhy"] = "Northern Oaxaca Nahuatl", ["nhz"] = "Santa María La Alta Nahuatl", ["nia"] = "Nias", ["nib"] = "Nakame", ["nic-bco-pro"] = "เบนูเอ-คองโกดั้งเดิม", ["nic-bod-pro"] = "แบนทอยด์ดั้งเดิม", ["nic-eov-pro"] = "Proto-Eastern Oti-Volta", ["nic-gns-pro"] = "Proto-Gurunsi", ["nic-grf-pro"] = "Proto-Grassfields", ["nic-gur-pro"] = "กูร์ดั้งเดิม", ["nic-jkn-pro"] = "Proto-Jukunoid", ["nic-lcr-pro"] = "Proto-Lower Cross River", ["nic-ogo-pro"] = "Proto-Ogoni", ["nic-ovo-pro"] = "Proto-Oti-Volta", ["nic-plt-pro"] = "Proto-Plateau", ["nic-pro"] = "ไนเจอร์-คองโกดั้งเดิม", ["nic-ubg-pro"] = "Proto-Ubangian", ["nic-ucr-pro"] = "Proto-Upper Cross River", ["nic-vco-pro"] = "วอลตา-คองโกดั้งเดิม", ["nid"] = "Ngandi", ["nie"] = "Niellim", ["nif"] = "Nek", ["nig"] = "Ngalakan", ["nih"] = "Nyiha", ["nii"] = "Nii", ["nij"] = "Ngaju", ["nik"] = "Southern Nicobarese", ["nil"] = "Nila", ["nim"] = "Nilamba", ["nin"] = "Ninzo", ["nio"] = "Nganasan", ["niq"] = "Nandi", ["nir"] = "Nimboran", ["nis"] = "Nimi", ["nit"] = "Southeastern Kolami", ["niu"] = "นีวเว", ["niv"] = "Nivkh", ["niw"] = "Nimo", ["nix"] = "Hema", ["niy"] = "Ngiti", ["niz"] = "Ningil", ["nja"] = "Nzanyi", ["njb"] = "Nocte", ["njh"] = "Lotha Naga", ["nji"] = "Gudanji", ["njj"] = "Njen", ["njl"] = "Njalgulgule", ["njm"] = "Angami", ["njn"] = "Liangmai Naga", ["njo"] = "Ao", ["njr"] = "Njerep", ["njs"] = "Nisa", ["njt"] = "Ndyuka-Trio Pidgin", ["nju"] = "Ngadjunmaya", ["njx"] = "Kunyi", ["njy"] = "Njyem", ["njz"] = "Nyishi", ["nka"] = "Nkoya", ["nkb"] = "Khoibu Naga", ["nkc"] = "Nkongho", ["nkd"] = "Koireng", ["nke"] = "Duke", ["nkf"] = "Inpui Naga", ["nkg"] = "Nekgini", ["nkh"] = "Khezha Naga", ["nki"] = "Thangal Naga", ["nkj"] = "Nakai", ["nkk"] = "Nokuku", ["nkm"] = "Namat", ["nkn"] = "Nkangala", ["nko"] = "Nkonya", ["nkp"] = "Niuatoputapu", ["nkq"] = "Nkami", ["nkr"] = "Nukuoro", ["nks"] = "North Asmat", ["nkt"] = "Nyika", ["nku"] = "Bouna Kulango", ["nkw"] = "Nkutu", ["nkx"] = "Nkoroo", ["nkz"] = "Nkari", ["nl"] = "ดัตช์", ["nla"] = "Ngombale", ["nlc"] = "Nalca", ["nle"] = "East Nyala", ["nlg"] = "Gela", ["nli"] = "Grangali", ["nlj"] = "Nyali", ["nlk"] = "Ninia Yali", ["nll"] = "Nihali", ["nlm"] = "Mankiyali", ["nlo"] = "Ngul", ["nlq"] = "Lao Naga", ["nlu"] = "Nchumbulu", ["nlv"] = "Orizaba Nahuatl", ["nlw"] = "Walangama", ["nlx"] = "Nahali", ["nly"] = "Nyamal", ["nlz"] = "Nalögo", ["nma"] = "Maram Naga", ["nmb"] = "Big Nambas", ["nmc"] = "Ngam", ["nmd"] = "Ndumu", ["nme"] = "Mzieme Naga", ["nmf"] = "Tangkhul Naga", ["nmg"] = "Kwasio", ["nmh"] = "Monsang Naga", ["nmi"] = "Nyam", ["nmj"] = "Ngombe (Central African Republic)", ["nmk"] = "Namakura", ["nml"] = "Ndemli", ["nmm"] = "Manangba", ["nmn"] = "ǃXóõ", ["nmo"] = "Moyon Naga", ["nmp"] = "Nimanbur", ["nmq"] = "Nambya", ["nmr"] = "Nimbari", ["nms"] = "Letemboi", ["nmt"] = "Namonuito", ["nmu"] = "Northeast Maidu", ["nmv"] = "Ngamini", ["nmw"] = "Nimoa", ["nmy"] = "Namuyi", ["nmz"] = "Nawdm", ["nn"] = "นอร์เวย์แบบนือนอสก์", ["nna"] = "Nyangumarta", ["nnb"] = "Nande", ["nnc"] = "Nancere", ["nnd"] = "West Ambae", ["nne"] = "Ngandyera", ["nnf"] = "Ngaing", ["nng"] = "Maring Naga", ["nnh"] = "Ngiemboon", ["nni"] = "North Nuaulu", ["nnj"] = "Nyangatom", ["nnk"] = "Nankina", ["nnl"] = "Northern Rengma Naga", ["nnm"] = "Namia", ["nnn"] = "Ngete", ["nnp"] = "Wancho", ["nnq"] = "Ngindo", ["nnr"] = "Narungga", ["nnt"] = "Nanticoke", ["nnu"] = "Dwang", ["nnv"] = "Nukunu", ["nnw"] = "Southern Nuni", ["nnx"] = "Ngong", ["nny"] = "Nyangga", ["nnz"] = "Nda'nda'", ["no"] = "นอร์เวย์", ["noa"] = "Woun Meu", ["noc"] = "Nuk", ["nod"] = "คำเมือง", ["noe"] = "Nimadi", ["nof"] = "Nomane", ["nog"] = "Nogai", ["noh"] = "Nomu", ["noi"] = "Noiri", ["noj"] = "Nonuya", ["nok"] = "Nooksack", ["nol"] = "Nomlaki", ["nom"] = "Nocamán", ["non"] = "นอร์สเก่า", ["nop"] = "Numanggang", ["noq"] = "Ngongo", ["nos"] = "Eastern Nisu", ["not"] = "Nomatsiguenga", ["nou"] = "Ewage-Notu", ["nov"] = "โนเวียล", ["now"] = "Nyambo", ["noy"] = "Noy", ["noz"] = "Nayi", ["npa"] = "Nar Phu", ["npb"] = "Nupbikha", ["npg"] = "Ponyo", ["nph"] = "Phom", ["npl"] = "Southeastern Puebla Nahuatl", ["npn"] = "Mondropolon", ["npo"] = "Pochuri Naga", ["nps"] = "Nipsan", ["npu"] = "Puimei Naga", ["npy"] = "Napu", ["nqg"] = "Ede Nago", ["nqk"] = "Kura Ede Nago", ["nql"] = "Ngendelengo", ["nqm"] = "Ndom", ["nqn"] = "Nen", ["nqo"] = "N'Ko", ["nqq"] = "Kyan-Karyaw Naga", ["nqy"] = "Akyaung Ari", ["nr"] = "Southern Ndebele", ["nra"] = "Ngom", ["nrb"] = "Nara", ["nrc"] = "Noric", ["nre"] = "Southern Rengma Naga", ["nrf"] = "นอร์มัน", ["nrg"] = "Narango", ["nri"] = "Chokri Naga", ["nrk"] = "Ngarla", ["nrl"] = "Ngarluma", ["nrm"] = "Narom", ["nrn"] = "Norn", ["nrp"] = "North Picene", ["nrr"] = "Norra", ["nrt"] = "Northern Kalapuya", ["nru"] = "Narua", ["nrx"] = "Ngurmbur", ["nrz"] = "Lala (New Guinea)", ["nsa"] = "Sangtam Naga", ["nsb"] = "Lower Nossob", ["nsc"] = "Nshi", ["nsd"] = "Southern Nisu", ["nse"] = "Nsenga", ["nsg"] = "Ngasa", ["nsh"] = "Ngoshie", ["nsi"] = "Nigerian Sign Language", ["nsk"] = "Naskapi", ["nsl"] = "Norwegian Sign Language", ["nsm"] = "Sema", ["nsn"] = "Nehan", ["nso"] = "ซูทูเหนือ", ["nsp"] = "มือเนปาล", ["nsq"] = "Northern Sierra Miwok", ["nsr"] = "Maritime Sign Language", ["nss"] = "Nali", ["nst"] = "Tangsa", ["nsu"] = "Sierra Negra Nahuatl", ["nsv"] = "Southwestern Nisu", ["nsw"] = "Navut", ["nsx"] = "Nsongo", ["nsy"] = "Nasal", ["nsz"] = "Nisenan", ["ntd"] = "Northern Tidung", ["ntg"] = "Ngantangarra", ["nti"] = "Natioro", ["ntj"] = "Ngaanyatjarra", ["ntk"] = "Ikoma", ["ntm"] = "Nateni", ["nto"] = "Ntomba", ["ntp"] = "Northern Tepehuan", ["ntr"] = "Delo", ["nts"] = "Natagaimas", ["ntu"] = "Natügu", ["ntw"] = "Nottoway", ["ntx"] = "Somra", ["nty"] = "Mantsi", ["nua"] = "Yuanga", ["nub-har"] = "Haraza", ["nub-pro"] = "นูเบียนดั้งเดิม", ["nuc"] = "Nukuini", ["nud"] = "Ngala", ["nue"] = "Ngundu", ["nuf"] = "Nusu", ["nug"] = "Nungali", ["nuh"] = "Ndunda", ["nui"] = "Ngumbi", ["nuj"] = "Nyole (Uganda)", ["nuk"] = "Nootka", ["nul"] = "Nusa Laut", ["num"] = "Niuafo'ou", ["nun"] = "Anong", ["nuo"] = "หง่วน", ["nup"] = "Nupe", ["nuq"] = "Nukumanu", ["nur"] = "Nuguria", ["nus"] = "Nuer", ["nut"] = "นุง", ["nuu"] = "Ngbundu", ["nuv"] = "Northern Nuni", ["nuw"] = "Nguluwan", ["nux"] = "Mehek", ["nuy"] = "Nunggubuyu", ["nuz"] = "Tlamacazapa Nahuatl", ["nv"] = "นาวาโฮ", ["nvh"] = "Nasarian", ["nvm"] = "Namiae", ["nvo"] = "Nyokon", ["nwa"] = "Nawathinehena", ["nwb"] = "Nyabwa", ["nwc"] = "เนวาร์คลาสสิก", ["nwe"] = "Ngwe", ["nwi"] = "Southwest Tanna", ["nwm"] = "Nyamusa-Molo", ["nwo"] = "Nauo", ["nwr"] = "Nawaru", ["nwx"] = "เนวาร์กลาง", ["nwy"] = "Nottoway-Meherrin", ["nxa"] = "Nauete", ["nxd"] = "Ngando (Congo)", ["nxe"] = "Nage", ["nxg"] = "Ngadha", ["nxi"] = "Nindi", ["nxl"] = "South Nuaulu", ["nxm"] = "Numidian", ["nxn"] = "Ngawun", ["nxo"] = "Ndambomo", ["nxq"] = "Naxi", ["nxr"] = "Ninggerum", ["nxx"] = "Nafri", ["ny"] = "เจวา", ["nyb"] = "Nyangbo", ["nyc"] = "Nyanga-li", ["nyd"] = "Nyole (Kenya)", ["nye"] = "Nyengo", ["nyf"] = "Giryama", ["nyg"] = "Nyindu", ["nyh"] = "Nyigina", ["nyi"] = "Nyimang", ["nyj"] = "Nyanga (Congo)", ["nyk"] = "Nyaneka", ["nyl"] = "Nyeu", ["nym"] = "Nyamwezi", ["nyn"] = "Nyankole", ["nyo"] = "Nyoro", ["nyp"] = "Nyang'i", ["nys"] = "Nyunga", ["nyt"] = "Nyawaygi", ["nyu"] = "Nyungwe", ["nyv"] = "Nyulnyul", ["nyw"] = "ญ้อ", ["nyx"] = "Nganyaywana", ["nyy"] = "Nyakyusa", ["nza"] = "Tigon Mbembe", ["nzb"] = "Njebi", ["nzd"] = "Nzadi", ["nzi"] = "Nzima", ["nzk"] = "Nzakara", ["nzm"] = "Zeme Naga", ["nzs"] = "New Zealand Sign Language", ["nzu"] = "Central Teke", ["nzy"] = "Nzakambay", ["nzz"] = "Nanga Dama Dogon", ["oaa"] = "Orok", ["oac"] = "Oroch", ["oak"] = "Noakhali", ["oav"] = "อะวาร์เก่า", ["obi"] = "Obispeño", ["obk"] = "Southern Bontoc", ["obl"] = "Oblo", ["obm"] = "โมอับ", ["obo"] = "Obo Manobo", ["obr"] = "พม่าเก่า", ["obt"] = "เบรอตงเก่า", ["obu"] = "Obulom", ["oc"] = "อุตซิตา", ["oca"] = "Ocaina", ["och"] = "จีนเก่า", ["oco"] = "คอร์นวอลล์เก่า", ["ocu"] = "Tlahuica", ["oda"] = "Odut", ["odk"] = "Od", ["odt"] = "ดัตช์เก่า", ["odu"] = "Odual", ["ofo"] = "Ofo", ["ofs"] = "ฟรีเชียเก่า", ["ofu"] = "Efutop", ["ogb"] = "Ogbia", ["ogc"] = "Ogbah", ["oge"] = "จอร์เจียเก่า", ["ogg"] = "Ogbogolo", ["ogo"] = "Khana", ["ogu"] = "Ogbronuagum", ["ohu"] = "ฮังการีเก่า", ["oia"] = "Oirata", ["oin"] = "Inebu One", ["oj"] = "โอจิบเว", ["ojb"] = "Northwestern Ojibwa", ["ojc"] = "Central Ojibwa", ["ojg"] = "Eastern Ojibwa", ["ojp"] = "ญี่ปุ่นเก่า", ["ojs"] = "Severn Ojibwa", ["ojv"] = "Ontong Java", ["ojw"] = "Western Ojibwa", ["oka"] = "Okanagan", ["okb"] = "Okobo", ["okd"] = "Okodia", ["oke"] = "Okpe (Southwestern Edo)", ["okg"] = "Kok-Paponk", ["okh"] = "Koresh-e Rostam", ["oki"] = "Okiek", ["okj"] = "Oko-Juwoi", ["okk"] = "Kwamtim One", ["okl"] = "Old Kentish Sign Language", ["okm"] = "เกาหลีกลาง", ["okn"] = "โอกิโนเอราบุ", ["oko"] = "เกาหลีเก่า", ["okr"] = "Kirike", ["oks"] = "Oko-Eni-Osayen", ["oku"] = "Oku", ["okv"] = "Orokaiva", ["okx"] = "Okpe (Northwestern Edo)", ["okz"] = "เขมรเก่า", ["old"] = "Mochi", ["ole"] = "Olekha", ["olm"] = "Oloma", ["olo"] = "ลิววี", ["olr"] = "Olrat", ["olt"] = "ลิทัวเนียเก่า", ["olu"] = "Kuvale", ["om"] = "ออโรโม", ["oma"] = "Omaha-Ponca", ["omb"] = "Omba", ["omc"] = "Mochica", ["omg"] = "Omagua", ["omi"] = "Omi", ["omk"] = "Omok", ["oml"] = "Ombo", ["omn"] = "ไมนอส", ["omo"] = "Utarmbung", ["omp"] = "มณีปุระเก่า", ["omq-cha-pro"] = "Proto-Chatino", ["omq-maz-pro"] = "Proto-Mazatec", ["omq-mix-pro"] = "Proto-Mixtecan", ["omq-mxt-pro"] = "Proto-Mixtec", ["omq-otp-pro"] = "Proto-Oto-Pamean", ["omq-pro"] = "Proto-Oto-Manguean", ["omq-sjq"] = "San Juan Quiahije Chatino", ["omq-tel"] = "Teposcolula Mixtec", ["omq-teo"] = "Teojomulco Chatino", ["omq-tri-pro"] = "Proto-Triqui", ["omq-zap-pro"] = "Proto-Zapotecan", ["omq-zpc-pro"] = "Proto-Zapotec", ["omr"] = "มราฐีเก่า", ["omt"] = "Omotik", ["omu"] = "Omurano", ["omv-aro-pro"] = "Proto-Aroid", ["omv-diz-pro"] = "Proto-Dizoid", ["omv-pro"] = "Proto-Omotic", ["omw"] = "South Tairora", ["omx"] = "มอญเก่า", ["ona"] = "Selk'nam", ["onb"] = "เบ", ["one"] = "Oneida", ["ong"] = "Olo", ["oni"] = "Onin", ["onj"] = "Onjob", ["onk"] = "Kabore One", ["onn"] = "Onobasulu", ["ono"] = "Onondaga", ["onp"] = "Sartang", ["onr"] = "Northern One", ["ons"] = "Ono", ["ont"] = "Ontenu", ["onu"] = "Unua", ["onw"] = "นิวเบียเก่า", ["onx"] = "Pidgin Onin", ["ood"] = "O'odham", ["oog"] = "Ong", ["oon"] = "Önge", ["oor"] = "Oorlams", ["opa"] = "Okpamheri", ["opk"] = "Kopkaka", ["opm"] = "Oksapmin", ["opo"] = "Opao", ["opt"] = "Opata", ["opy"] = "Ofayé", ["or"] = "โอริยา", ["ora"] = "Oroha", ["ore"] = "Orejón", ["org"] = "Oring", ["orh"] = "Oroqen", ["oro"] = "Orokolo", ["orr"] = "Oruma", ["ort"] = "Adivasi Odia", ["oru"] = "Ormuri", ["orv"] = "สลาวิกตะวันออกเก่า", ["orw"] = "Oro Win", ["orx"] = "Oro", ["orz"] = "Ormu", ["os"] = "ออสซีเซีย", ["osa"] = "Osage", ["osc"] = "Oscan", ["osi"] = "โอซิง", ["osn"] = "Old Sundanese", ["oso"] = "Ososo", ["osp"] = "สเปนเก่า", ["ost"] = "Osatu", ["osu"] = "Southern One", ["osx"] = "แซกซันเก่า", ["ota"] = "ตุรกีแบบออตโตมัน", ["otb"] = "ทิเบตเก่า", ["otd"] = "Ot Danum", ["ote"] = "Mezquital Otomi", ["oti"] = "Oti", ["otk"] = "เตอร์กิกเก่า", ["otl"] = "Tilapa Otomi", ["otm"] = "Eastern Highland Otomi", ["otn"] = "Tenango Otomi", ["oto-otm-pro"] = "Proto-Otomi", ["oto-pro"] = "Proto-Otomian", ["otq"] = "Querétaro Otomi", ["otr"] = "Otoro", ["ots"] = "Estado de México Otomi", ["ott"] = "Temoaya Otomi", ["otu"] = "Otuke", ["otw"] = "Ottawa", ["otx"] = "Texcatepec Otomi", ["oty"] = "ทมิฬเก่า", ["otz"] = "Ixtenco Otomi", ["oub"] = "Glio-Oubi", ["oue"] = "Oune", ["oui"] = "อุยกูร์เก่า", ["oum"] = "Ouma", ["ovd"] = "แอลฟ์ดาเลิน", ["owi"] = "Owiniga", ["owl"] = "เวลส์เก่า", ["oyb"] = "Oy", ["oyd"] = "Oyda", ["oym"] = "Wayampi", ["oyy"] = "Oya'oya", ["ozm"] = "Koonzime", ["pa"] = "ปัญจาบ", ["paa-bin-pro"] = "Proto-Binanderean", ["paa-kom"] = "Kómnzo", ["paa-kwn"] = "Kuwani", ["paa-nha-pro"] = "Proto-North Halmahera", ["paa-nun"] = "Nungon", ["pab"] = "Pareci", ["pac"] = "ปาโกะห์", ["pad"] = "Paumarí", ["pae"] = "Pagibete", ["paf"] = "Paranawát", ["pag"] = "Pangasinan", ["pah"] = "Tenharim", ["pai"] = "Pe", ["pak"] = "Parakanã", ["pal"] = "เปอร์เซียกลาง", ["pam"] = "กาปัมปางัน", ["pao"] = "Northern Paiute", ["pap"] = "ปาเปียเมนตู", ["paq"] = "Parya", ["par"] = "Panamint", ["pas"] = "Papasena", ["pau"] = "ปาเลา", ["pav"] = "Wari'", ["paw"] = "Pawnee", ["pax"] = "Pankararé", ["pay"] = "Pech", ["paz"] = "Pankararú", ["pbb"] = "Páez", ["pbc"] = "Patamona", ["pbe"] = "Mezontla Popoloca", ["pbf"] = "Coyotepec Popoloca", ["pbg"] = "Paraujano", ["pbh"] = "Panare", ["pbi"] = "Podoko", ["pbl"] = "Mak (Nigeria)", ["pbm"] = "Puebla Mazatec", ["pbn"] = "Kpasam", ["pbo"] = "Papel", ["pbp"] = "Badyara", ["pbr"] = "Pangwa", ["pbs"] = "Central Pame", ["pbv"] = "ปนัร", ["pby"] = "Pyu (New Guinea)", ["pca"] = "Santa Inés Ahuatempan Popoloca", ["pcb"] = "Pear", ["pcc"] = "ปู้อี", ["pcd"] = "ปีการ์", ["pce"] = "Ruching Palaung", ["pcf"] = "Paliyan", ["pcg"] = "Paniya", ["pch"] = "Pardhan", ["pci"] = "Duruwa", ["pcj"] = "Parenga", ["pck"] = "Paite", ["pcl"] = "Pardhi", ["pcm"] = "Nigerian Pidgin", ["pcn"] = "Piti", ["pcp"] = "Pacahuara", ["pcw"] = "Pyapun", ["pda"] = "Anam", ["pdc"] = "เยอรมันแบบเพนซิลเวเนีย", ["pdi"] = "Pa Di", ["pdn"] = "Fedan", ["pdo"] = "Padoe", ["pdt"] = "เพลาท์ดิทช์", ["pdu"] = "กะยัน", ["pea"] = "Peranakan Indonesian", ["peb"] = "Eastern Pomo", ["ped"] = "Mala (New Guinea)", ["pee"] = "Taje", ["pef"] = "Northeastern Pomo", ["peg"] = "Pengo", ["peh"] = "Bonan", ["pei"] = "Chichimeca-Jonaz", ["pej"] = "Northern Pomo", ["pek"] = "Penchal", ["pel"] = "Pekal", ["pem"] = "Phende", ["peo"] = "เปอร์เซียเก่า", ["pep"] = "Kunja", ["peq"] = "Southern Pomo", ["pev"] = "Pémono", ["pex"] = "Petats", ["pey"] = "Petjo", ["pez"] = "Eastern Penan", ["pfa"] = "Pááfang", ["pfe"] = "Peere", ["pga"] = "Juba Arabic", ["pgd"] = "คานธาระ", ["pgg"] = "ปังควาฬฺ", ["pgi"] = "Pagi", ["pgk"] = "Rerep", ["pgl"] = "Primitive Irish", ["pgn"] = "Paelignian", ["pgs"] = "Pangseng", ["pgu"] = "Pagu", ["pgz"] = "Papua New Guinean Sign Language", ["pha"] = "Pa-Hng", ["phd"] = "Phudagi", ["phg"] = "Phuong", ["phh"] = "Phukha", ["phi-din"] = "Dinapigue Agta", ["phi-kal-pro"] = "คาลาเมียนดั้งเดิม", ["phi-nag"] = "Nagtipunan Agta", ["phi-pro"] = "ฟิลิปปินส์ดั้งเดิม", ["phk"] = "พ่าเก", ["phl"] = "Palula", ["phm"] = "Phimbi", ["phn"] = "ฟินิเชีย", ["pho"] = "ผู้น้อย", ["phq"] = "Phana'", ["phr"] = "Pahari-Potwari", ["pht"] = "ผู้ไท", ["phu"] = "พวน", ["phv"] = "Pahlavani", ["phw"] = "Phangduwali", ["pi"] = "บาลี", ["pia"] = "Pima Bajo", ["pib"] = "Yine", ["pic"] = "Pinji", ["pid"] = "Piaroa", ["pie"] = "Piro", ["pif"] = "Pingelapese", ["pig"] = "Pisabo", ["pih"] = "Pitcairn-Norfolk", ["pii"] = "Pini", ["pij"] = "Pijao", ["pil"] = "Yom", ["pim"] = "Powhatan", ["pin"] = "Piame", ["pio"] = "Piapoco", ["pip"] = "Pero", ["pir"] = "Piratapuyo", ["pis"] = "Pijin", ["pit"] = "Pitta-Pitta", ["piu"] = "Pintupi-Luritja", ["piv"] = "Pileni", ["piw"] = "Pimbwe", ["pix"] = "Piu", ["piy"] = "Piya-Kwonci", ["piz"] = "Pije", ["pjt"] = "Pitjantjatjara", ["pkb"] = "Kipfokomo", ["pkc"] = "แพ็กเจ", ["pkg"] = "Pak-Tong", ["pkh"] = "Pankhu", ["pkn"] = "Pakanha", ["pko"] = "Pökoot", ["pkp"] = "ปูกาปูกา", ["pkr"] = "Attapady Kurumba", ["pks"] = "Pakistan Sign Language", ["pkt"] = "Maleng", ["pku"] = "Paku", ["pl"] = "โปแลนด์", ["pla"] = "Miani", ["plb"] = "Polonombauk", ["plc"] = "ปาลาวาโนตอนกลาง", ["ple"] = "Palu'e", ["plg"] = "Pilagá", ["plh"] = "Paulohi", ["plj"] = "Polci", ["plk"] = "Kohistani Shina", ["pll"] = "Shwe Palaung", ["pln"] = "Palenquero", ["plo"] = "Oluta Popoluca", ["plq"] = "Palaic", ["plr"] = "Palaka Senoufo", ["pls"] = "San Marcos Tlalcoyalco Popoloca", ["plu"] = "Palikur", ["plv"] = "ปาลาวาโนตะวันตกเฉียงใต้", ["plw"] = "ปาลาวาโนแบบบรูกส์พอยต์", ["ply"] = "Bolyu", ["plz"] = "Paluan", ["pma"] = "Paamese", ["pmb"] = "Pambia", ["pmd"] = "Pallanganmiddang", ["pme"] = "Pwaamèi", ["pmf"] = "Pamona", ["pmi"] = "Northern Pumi", ["pmj"] = "Southern Pumi", ["pmk"] = "Pamlico", ["pml"] = "Sabir", ["pmm"] = "Pol", ["pmn"] = "Pam", ["pmo"] = "Pom", ["pmq"] = "Northern Pame", ["pmr"] = "Paynamar", ["pms"] = "ปีเยมอนเต", ["pmt"] = "Tuamotuan", ["pmu"] = "Mirpur Panjabi", ["pmw"] = "Plains Miwok", ["pmx"] = "Poumei Naga", ["pmy"] = "Papuan Malay", ["pmz"] = "Southern Pame", ["pna"] = "Punan Bah-Biau", ["pnc"] = "Pannei", ["pnd"] = "Mpinda", ["pne"] = "Western Penan", ["png"] = "Pongu", ["pnh"] = "Penrhyn", ["pni"] = "Aoheng", ["pnj"] = "Pinjarup", ["pnk"] = "Paunaka", ["pnl"] = "Paleni", ["pnm"] = "Punan Batu", ["pnn"] = "Pinai-Hagahai", ["pno"] = "Panobo", ["pnp"] = "Pancana", ["pnq"] = "Pana (West Africa)", ["pnr"] = "Panim", ["pns"] = "Ponosakan", ["pnt"] = "Pontic Greek", ["pnu"] = "Jiongnai Bunu", ["pnv"] = "Pinigura", ["pnw"] = "Panyjima", ["pnx"] = "Phong-Kniang", ["pny"] = "Pinyin", ["pnz"] = "Pana (Central Africa)", ["poc"] = "Poqomam", ["poe"] = "San Juan Atzingo Popoloca", ["pof"] = "Poke", ["pog"] = "Potiguára", ["poh"] = "Poqomchi'", ["poi"] = "Highland Popoluca", ["pok"] = "Pokangá", ["pom"] = "Southeastern Pomo", ["pon"] = "Pohnpeian", ["poo"] = "Central Pomo", ["pop"] = "Pwapwâ", ["poq"] = "Texistepec Popoluca", ["pos"] = "Sayula Popoluca", ["pot"] = "Potawatomi", ["pov"] = "ครีโอลกินี-บิสเซา", ["pow"] = "San Felipe Otlaltepec Popoloca", ["pox"] = "Polabian", ["poy"] = "Pogolo", ["poz-abi"] = "Abai", ["poz-bal"] = "Baliledo", ["poz-btk-pro"] = "Proto-Bungku-Tolaki", ["poz-cet-pro"] = "มาลาโย-พอลินีเชียนตอนกลาง-ตะวันออกดั้งเดิม", ["poz-hce-pro"] = "Proto-Halmahera-Cenderawasih", ["poz-lgx-pro"] = "ลัมปุงกิกดั้งเดิม", ["poz-mcm-pro"] = "มาลาโย-จามิกดั้งเดิม", ["poz-mic-pro"] = "ไมโครนีเซียนดั้งเดิม", ["poz-mly-pro"] = "มาเลย์อิกดั้งเดิม", ["poz-msa-pro"] = "มาลาโย-ซุมบาวันดั้งเดิม", ["poz-oce-pro"] = "โอเชียนิกดั้งเดิม", ["poz-pep-pro"] = "พอลินีเชียนตะวันออกดั้งเดิม", ["poz-pnp-pro"] = "นิวเคลียร์พอลินีเชียนดั้งเดิม", ["poz-pol-pro"] = "พอลินีเชียนดั้งเดิม", ["poz-pro"] = "มาลาโย-พอลินีเชียนดั้งเดิม", ["poz-sml"] = "Sarawak Malay", ["poz-ssw-pro"] = "ซูลาเวซีใต้ดั้งเดิม", ["poz-swa-pro"] = "ซาราวักเหนือดั้งเดิม", ["poz-ter"] = "มลายูแบบตรังกานู", ["ppa"] = "Pao", ["ppe"] = "Papi", ["ppi"] = "Paipai", ["ppk"] = "Uma", ["ppl"] = "ปีปิล", ["ppm"] = "Papuma", ["ppn"] = "Papapana", ["ppo"] = "Folopa", ["ppq"] = "Pei", ["pps"] = "San Luís Temalacayuca Popoloca", ["ppt"] = "Pa", ["ppu"] = "Papora", ["pqa"] = "Pa'a", ["pqe-pro"] = "มาลาโย-พอลินีเชียนตะวันออกดั้งเดิม", ["pqm"] = "Malecite-Passamaquoddy", ["pra"] = "ปรากฤต", ["pra-niy"] = "Niya Prakrit", ["prc"] = "Parachi", ["pre"] = "Principense", ["prf"] = "Paranan", ["prg"] = "Old Prussian", ["prh"] = "Porohanon", ["pri"] = "Paicî", ["prk"] = "Parauk", ["prl"] = "Peruvian Sign Language", ["prm"] = "Kibiri", ["prn"] = "Prasuni", ["pro"] = "อุตซิตาเก่า", ["prq"] = "Ashéninka Perené", ["prr"] = "Puri", ["prt"] = "Phai", ["pru"] = "Puragi", ["prw"] = "Parawen", ["prx"] = "Purik", ["prz"] = "Providencia Sign Language", ["ps"] = "ปาทาน", ["psa"] = "Asue Awyu", ["psc"] = "Persian Sign Language", ["psd"] = "Plains Indian Sign Language", ["pse"] = "มลายูตอนกลาง", ["psg"] = "Penang Sign Language", ["psh"] = "Southwest Pashayi", ["psi"] = "Southeast Pashayi", ["psl"] = "Puerto Rican Sign Language", ["psm"] = "Pauserna", ["psn"] = "Panasuan", ["pso"] = "Polish Sign Language", ["psp"] = "Philippine Sign Language", ["psq"] = "Pasi", ["psr"] = "Portuguese Sign Language", ["pss"] = "Kaulong", ["psw"] = "Port Sandwich", ["psy"] = "Piscataway", ["pt"] = "โปรตุเกส", ["pta"] = "Pai Tavytera", ["pth"] = "Pataxó Hã-Ha-Hãe", ["pti"] = "Pintiini", ["ptn"] = "Patani", ["pto"] = "Zo'é", ["ptp"] = "Patep", ["ptq"] = "Pattapu", ["ptr"] = "Piamatsina", ["ptt"] = "Enrekang", ["ptu"] = "Bambam", ["ptv"] = "Port Vato", ["ptw"] = "Pentlatch", ["pty"] = "Pathiya", ["pua"] = "Purepecha", ["pub"] = "Purum", ["puc"] = "Punan Merap", ["pud"] = "Punan Aput", ["pue"] = "Puelche", ["puf"] = "Punan Merah", ["pug"] = "Phuie", ["pui"] = "Puinave", ["puj"] = "Punan Tubu", ["pum"] = "Puma", ["puo"] = "Puoc", ["pup"] = "Pulabu", ["puq"] = "Puquina", ["pur"] = "Puruborá", ["put"] = "Putoh", ["puu"] = "Punu", ["puw"] = "Puluwat", ["pux"] = "Puare", ["puy"] = "Purisimeño", ["pwa"] = "Pawaia", ["pwb"] = "Panawa", ["pwg"] = "Gapapaiwa", ["pwi"] = "Patwin", ["pwm"] = "Molbog", ["pwn"] = "ไปวัน", ["pwo"] = "กะเหรี่ยงโปตะวันตก", ["pwr"] = "Powari", ["pww"] = "กะเหรี่ยงโปเหนือ", ["pxm"] = "Quetzaltepec Mixe", ["pye"] = "Pye Krumen", ["pym"] = "Fyam", ["pyn"] = "Poyanáwa", ["pys"] = "Paraguayan Sign Language", ["pyu"] = "Puyuma", ["pyx"] = "ปยู", ["pyy"] = "Pyen", ["pzh"] = "Pazeh", ["pzn"] = "Para Naga", ["qfa-adm-pro"] = "เกรตอันดามันนีสดั้งเดิม", ["qfa-bet-pro"] = "เบ-ไทดั้งเดิม", ["qfa-cka-pro"] = "Proto-Chukotko-Kamchatkan", ["qfa-hur-pro"] = "Proto-Hurro-Urartian", ["qfa-kad-pro"] = "Proto-Kadu", ["qfa-kms-pro"] = "Proto-Kam-Sui", ["qfa-kor-pro"] = "เกาหลีดั้งเดิม", ["qfa-kra-pro"] = "ขร้าดั้งเดิม", ["qfa-lic-pro"] = "ไหลดั้งเดิม", ["qfa-onb-pro"] = "เบดั้งเดิม", ["qfa-ong-pro"] = "Proto-Ongan", ["qfa-tak-pro"] = "ขร้า-ไทดั้งเดิม", ["qfa-yen-pro"] = "Proto-Yeniseian", ["qfa-yuk-pro"] = "Proto-Yukaghir", ["qu"] = "เกชัว", ["qua"] = "Quapaw", ["quc"] = "K'iche'", ["qui"] = "Quileute", ["qum"] = "Sipakapense", ["qun"] = "Quinault", ["quq"] = "Quinqui", ["quv"] = "Sacapulteco", ["qvy"] = "Queyu", ["qwc"] = "เกชัวคลาสสิก", ["qwe-kch"] = "Kichwa", ["qwe-pro"] = "เกชวนดั้งเดิม", ["qwm"] = "คูมาน", ["qwt"] = "Kwalhioqua-Tlatskanai", ["qxs"] = "Southern Qiang", ["qya"] = "เควนยา", ["qyp"] = "Quiripi", ["raa"] = "Dungmali", ["rab"] = "Chamling", ["rac"] = "Rasawa", ["rad"] = "Rade", ["raf"] = "Western Meohang", ["rag"] = "Logooli", ["rah"] = "Rabha", ["rai"] = "Ramoaaina", ["rak"] = "Tulu-Bohuai", ["ral"] = "Ralte", ["ram"] = "Canela", ["ran"] = "Riantana", ["rao"] = "Rao", ["rap"] = "ราปานูอี", ["raq"] = "Saam", ["rar"] = "ราโรโตงา", ["ras"] = "Tegali", ["rat"] = "Razajerdi", ["rau"] = "Raute", ["rav"] = "Sampang", ["raw"] = "เรอหวั่ง", ["rax"] = "Rang", ["ray"] = "Rapa", ["raz"] = "Rahambuu", ["rbb"] = "Rumai Palaung", ["rbk"] = "Northern Bontoc", ["rbl"] = "Miraya Bikol", ["rcf"] = "Réunion Creole French", ["rdb"] = "Rudbari", ["rea"] = "Rerau", ["reb"] = "Rembong", ["ree"] = "Rejang Kayan", ["reg"] = "Kara (Tanzania)", ["rei"] = "Reli", ["rej"] = "Rejang", ["rel"] = "Rendille", ["rem"] = "Remo", ["ren"] = "Rengao", ["rer"] = "Rer Bare", ["res"] = "Reshe", ["ret"] = "Retta", ["rey"] = "Reyesano", ["rga"] = "Roria", ["rge"] = "Romano-Greek", ["rgk"] = "Rangkas", ["rgn"] = "โรมัญญา", ["rgr"] = "Resígaro", ["rgs"] = "Southern Roglai", ["rgu"] = "Ringgou", ["rhg"] = "โรฮีนจา", ["rhp"] = "Yahang", ["ria"] = "Reang", ["rif"] = "ริฟ", ["ril"] = "Riang", ["rim"] = "Nyaturu", ["rin"] = "Nungu", ["rir"] = "Ribun", ["rit"] = "Ritarungo", ["riu"] = "Riung", ["rjg"] = "Rajong", ["rji"] = "Raji", ["rjs"] = "ราชพังสี", ["rka"] = "Kraol", ["rkb"] = "Rikbaktsa", ["rkh"] = "Rakahanga-Manihiki", ["rki"] = "ยะไข่", ["rkm"] = "Marka", ["rkt"] = "Kamta", ["rkw"] = "Arakwal", ["rm"] = "โรมานช์", ["rma"] = "Rama", ["rmb"] = "Rembarunga", ["rmc"] = "Carpathian Romani", ["rmd"] = "Traveller Danish", ["rme"] = "Angloromani", ["rmf"] = "Kalo Finnish Romani", ["rmg"] = "Traveller Norwegian", ["rmh"] = "Murkim", ["rmi"] = "Lomavren", ["rmk"] = "Romkun", ["rml"] = "Baltic Romani", ["rmm"] = "Roma", ["rmn"] = "Balkan Romani", ["rmo"] = "Sinte Romani", ["rmp"] = "Rempi", ["rmq"] = "Caló", ["rms"] = "Romanian Sign Language", ["rmt"] = "Domari", ["rmu"] = "Tavringer Romani", ["rmv"] = "Romanova", ["rmw"] = "Welsh Romani", ["rmx"] = "Romam", ["rmy"] = "Vlax Romani", ["rmz"] = "Marma", ["rnd"] = "Ruwund", ["rng"] = "Ronga", ["rnl"] = "Ranglong", ["rnn"] = "Roon", ["rnp"] = "Rongpo", ["rnw"] = "Rungwa", ["ro"] = "โรมาเนีย", ["roa-ang"] = "Angevin", ["roa-bbn"] = "บูร์บอแน-แบรีชง", ["roa-brg"] = "Bourguignon", ["roa-can"] = "Cantabrian", ["roa-cha"] = "Champenois", ["roa-fcm"] = "Franc-Comtois", ["roa-gal"] = "Gallo", ["roa-gib"] = "Gallo-Italic of Basilicata", ["roa-gis"] = "Gallo-Italic of Sicily", ["roa-leo"] = "เลออน", ["roa-lor"] = "Lorrain", ["roa-oca"] = "กาตาลาเก่า", ["roa-ole"] = "เลออนเก่า", ["roa-ona"] = "Old Navarro-Aragonese", ["roa-opt"] = "กาลิเซีย-โปรตุเกสเก่า", ["roa-orl"] = "Orléanais", ["roa-poi"] = "Poitevin-Saintongeais", ["roa-tar"] = "Tarantino", ["rob"] = "Tae'", ["roc"] = "Cacgia Roglai", ["rod"] = "Rogo", ["roe"] = "Ronji", ["rof"] = "Rombo", ["rog"] = "Northern Roglai", ["rol"] = "Romblomanon", ["rom"] = "โรมานี", ["roo"] = "Rotokas", ["rop"] = "Australian Kriol", ["ror"] = "Rongga", ["rou"] = "Runga", ["row"] = "Dela-Oenale", ["rpn"] = "Repanbitip", ["rpt"] = "Rapting", ["rri"] = "Ririo", ["rro"] = "Roro", ["rrt"] = "Arritinngithigh", ["rsb"] = "Romano-Serbian", ["rsk"] = "รูซินแบบพันโนเนีย", ["rsl"] = "มือรัสเซีย", ["rsm"] = "Miriwoong Sign Language", ["rsn"] = "Rwandan Sign Language", ["rtc"] = "Rungtu", ["rth"] = "Ratahan", ["rtm"] = "Rotuman", ["rtw"] = "Rathawi", ["ru"] = "รัสเซีย", ["rub"] = "Gungu", ["ruc"] = "Ruuli", ["rue"] = "รูซินแบบคาร์พาเทีย", ["ruf"] = "Luguru", ["rug"] = "Roviana", ["ruh"] = "Ruga", ["rui"] = "Rufiji", ["ruk"] = "Che", ["ruo"] = "Istro-Romanian", ["rup"] = "Aromanian", ["ruq"] = "Megleno-Romanian", ["rut"] = "Rutul", ["ruu"] = "Lanas Lobu", ["ruy"] = "Mala (Nigeria)", ["ruz"] = "Ruma", ["rw"] = "รวันดา-รุนดี", ["rwa"] = "Rawo", ["rwk"] = "Rwa", ["rwm"] = "Amba", ["rwo"] = "Rawa", ["rxd"] = "Ngardi", ["rxw"] = "Karuwali", ["ryn"] = "อามามิโอชิมะเหนือ", ["rys"] = "ยาเอยามะ", ["ryu"] = "โอกินาวะ", ["rzh"] = "Razihi", ["sa"] = "สันสกฤต", ["saa"] = "Saba", ["sab"] = "Buglere", ["sac"] = "Fox", ["sad"] = "Sandawe", ["sae"] = "Sabanê", ["saf"] = "Safaliba", ["sah"] = "ซาคา", ["sai-all"] = "Allentiac", ["sai-and"] = "Andoquero", ["sai-ayo"] = "Ayomán", ["sai-bae"] = "Baenan", ["sai-bag"] = "Bagua", ["sai-bet"] = "Betoi", ["sai-bor-pro"] = "Proto-Boran", ["sai-cac"] = "Cacán", ["sai-caq"] = "Caranqui", ["sai-car-pro"] = "Proto-Cariban", ["sai-cat"] = "Catacao", ["sai-cer-pro"] = "Proto-Cerrado", ["sai-chi"] = "Chirino", ["sai-chn"] = "Chaná", ["sai-chp"] = "Chapacura", ["sai-chr"] = "Charrua", ["sai-chu"] = "Churuya", ["sai-cje-pro"] = "Proto-Central Jê", ["sai-cmg"] = "Comechingon", ["sai-cno"] = "Chono", ["sai-cnr"] = "Cañari", ["sai-coe"] = "Coeruna", ["sai-col"] = "Colán", ["sai-cop"] = "Copallén", ["sai-crd"] = "Coroado Puri", ["sai-ctq"] = "Catuquinaru", ["sai-cul"] = "Culli", ["sai-cva"] = "Cueva", ["sai-esm"] = "Esmeralda", ["sai-ewa"] = "Ewarhuyana", ["sai-gam"] = "Gamela", ["sai-gay"] = "Gayón", ["sai-gmo"] = "Guamo", ["sai-gua"] = "Guachí", ["sai-gue"] = "Güenoa", ["sai-hau"] = "Haush", ["sai-jee-pro"] = "Proto-Jê", ["sai-jko"] = "Jeikó", ["sai-jrj"] = "Jirajara", ["sai-kat"] = "Katembri", ["sai-mal"] = "Malalí", ["sai-mar"] = "Maratino", ["sai-mat"] = "Matanawi", ["sai-mcn"] = "Mocana", ["sai-men"] = "Menien", ["sai-mil"] = "Millcayac", ["sai-mlb"] = "Malibu", ["sai-msk"] = "Masakará", ["sai-muc"] = "Mucuchí", ["sai-mue"] = "Muellama", ["sai-muz"] = "Muzo", ["sai-mys"] = "Maynas", ["sai-nat"] = "Natú", ["sai-nje-pro"] = "Proto-Northern Jê", ["sai-opo"] = "Opón", ["sai-oto"] = "Otomaco", ["sai-pal"] = "Palta", ["sai-pam"] = "Pamigua", ["sai-par"] = "Paratió", ["sai-peb"] = "Peba", ["sai-pnz"] = "Panzaleo", ["sai-prh"] = "Puruhá", ["sai-ptg"] = "Patagón", ["sai-pur"] = "Purukotó", ["sai-pyg"] = "Payaguá", ["sai-pyk"] = "Pykobjê", ["sai-qmb"] = "Quimbaya", ["sai-qtm"] = "Quitemo", ["sai-rab"] = "Rabona", ["sai-ram"] = "Ramanos", ["sai-sac"] = "Sácata", ["sai-san"] = "Sanaviron", ["sai-sap"] = "Sapará", ["sai-sec"] = "Sechura", ["sai-sin"] = "Sinúfana", ["sai-sje-pro"] = "Proto-Southern Jê", ["sai-tab"] = "Tabancale", ["sai-tal"] = "Tallán", ["sai-tap"] = "Tapayuna", ["sai-tar-pro"] = "Proto-Taranoan", ["sai-teu"] = "Teushen", ["sai-tim"] = "Timote", ["sai-tpr"] = "Taparita", ["sai-trr"] = "Tarairiú", ["sai-wai"] = "Waitaká", ["sai-way"] = "Wayumara", ["sai-wit-pro"] = "Proto-Witotoan", ["sai-wnm"] = "Wanham", ["sai-xoc"] = "Xocó", ["sai-yao"] = "Yao (South America)", ["sai-yar"] = "Yarumá", ["sai-yri"] = "Yuri", ["sai-yup"] = "Yupua", ["sai-yur"] = "Yurumanguí", ["saj"] = "Sahu", ["sak"] = "Sake", ["sal-pro"] = "Proto-Salish", ["sam"] = "Samaritan Aramaic", ["sao"] = "Sause", ["saq"] = "Samburu", ["sar"] = "Saraveca", ["sas"] = "Sasak", ["sat"] = "สันถาลี", ["sau"] = "Saleman", ["sav"] = "Saafi-Saafi", ["saw"] = "Sawi", ["sax"] = "Sa", ["say"] = "Saya", ["saz"] = "Saurashtra", ["sba"] = "Ngambay", ["sbb"] = "Simbo", ["sbc"] = "Gele'", ["sbd"] = "Southern Samo", ["sbe"] = "Saliba (New Guinea)", ["sbf"] = "Shabo", ["sbg"] = "Seget", ["sbh"] = "Sori-Harengan", ["sbi"] = "Seti", ["sbj"] = "Surbakhal", ["sbk"] = "Safwa", ["sbl"] = "Botolan Sambal", ["sbm"] = "Sagala", ["sbn"] = "Sindhi Bhil", ["sbo"] = "Sabüm", ["sbp"] = "Sangu (Tanzania)", ["sbq"] = "Sileibi", ["sbr"] = "Sembakung Murut", ["sbs"] = "Subiya", ["sbt"] = "Kimki", ["sbu"] = "Stod Bhoti", ["sbv"] = "Sabine", ["sbw"] = "Simba", ["sbx"] = "Seberuang", ["sby"] = "Soli", ["sbz"] = "Sara Kaba", ["sc"] = "ซาร์ดิเนีย", ["scb"] = "Chut", ["sce"] = "ตงเซียง", ["scf"] = "San Miguel Creole French", ["scg"] = "Sanggau", ["sch"] = "Sakachep", ["sci"] = "Sri Lankan Creole Malay", ["sck"] = "Sadri", ["scl"] = "Shina", ["scn"] = "ซิซิลี", ["sco"] = "สกอต", ["scp"] = "Yolmo", ["scq"] = "สะโอจ", ["scs"] = "North Slavey", ["scu"] = "Shumcho", ["scv"] = "Sheni", ["scw"] = "Sha", ["scx"] = "Sicel", ["scz"] = "Shetland", ["sd"] = "สินธ์", ["sda"] = "Toraja-Sa'dan", ["sdb"] = "Shabak", ["sdc"] = "ซัสซารี", ["sde"] = "Surubu", ["sdf"] = "Sarli", ["sdg"] = "Savi", ["sdh"] = "Southern Kurdish", ["sdj"] = "Suundi", ["sdk"] = "Sos Kundi", ["sdl"] = "Saudi Arabian Sign Language", ["sdm"] = "Semandang", ["sdn"] = "Gallurese", ["sdo"] = "Bukar-Sadung Bidayuh", ["sdp"] = "Sherdukpen", ["sdr"] = "Oraon Sadri", ["sds"] = "เบอร์เบอร์แบบตูนีเซีย", ["sdu"] = "Sarudu", ["sdv-daj-pro"] = "Proto-Daju", ["sdv-eje-pro"] = "Proto-Eastern Jebel", ["sdv-nil-pro"] = "Proto-Nilotic", ["sdv-nyi-pro"] = "Proto-Nyima", ["sdv-tmn-pro"] = "Proto-Taman", ["sdx"] = "Sibu Melanau", ["se"] = "ซามีเหนือ", ["sea"] = "เซอไม", ["sec"] = "Sechelt", ["sed"] = "Sedang", ["see"] = "Seneca", ["sef"] = "Cebaara Senoufo", ["seg"] = "Segeju", ["seh"] = "Sena", ["sei"] = "Seri", ["sej"] = "Sene", ["sek"] = "Sekani", ["sel-nor"] = "Northern Selkup", ["sel-pro"] = "Proto-Selkup", ["sel-sou"] = "Southern Selkup", ["sem-amm"] = "อัมโมน", ["sem-amo"] = "Amorite", ["sem-cha"] = "Chaha", ["sem-dad"] = "Dadanitic", ["sem-dum"] = "Dumaitic", ["sem-has"] = "Hasaitic", ["sem-his"] = "Hismaic", ["sem-mhr"] = "Muher", ["sem-pro"] = "เซมิติกดั้งเดิม", ["sem-saf"] = "Safaitic", ["sem-sam"] = "Samalian", ["sem-srb"] = "Old South Arabian", ["sem-tay"] = "Taymanitic", ["sem-tha"] = "Thamudic", ["sem-wes-pro"] = "เซมิติกตะวันตกดั้งเดิม", ["sen"] = "Nanerigé Sénoufo", ["seo"] = "Suarmin", ["sep"] = "Sìcìté Sénoufo", ["seq"] = "Senara Sénoufo", ["ser"] = "Serrano", ["ses"] = "Koyraboro Senni", ["set"] = "Sentani", ["seu"] = "Serui-Laut", ["sev"] = "Nyarafolo Senoufo", ["sew"] = "Sewa Bay", ["sey"] = "Secoya", ["sez"] = "Senthang Chin", ["sfb"] = "French Belgian Sign Language", ["sfe"] = "Eastern Subanun", ["sfm"] = "Small Flowery Miao", ["sfs"] = "South African Sign Language", ["sfw"] = "Sehwi", ["sg"] = "ซังโก", ["sga"] = "ไอริชเก่า", ["sgb"] = "Mag-Anchi Ayta", ["sgc"] = "Kipsigis", ["sgd"] = "ซูรีเกาโนน", ["sge"] = "Segai", ["sgg"] = "Swiss-German Sign Language", ["sgh"] = "Shughni", ["sgi"] = "Suga", ["sgk"] = "Sangkong", ["sgm"] = "Singa", ["sgp"] = "Singpho", ["sgr"] = "Sangisari", ["sgs"] = "Samogitian", ["sgt"] = "Brokpake", ["sgu"] = "Salas", ["sgw"] = "Sebat Bet Gurage", ["sgx"] = "Sierra Leone Sign Language", ["sgy"] = "Sanglechi", ["sgz"] = "Sursurunga", ["sh"] = "เซอร์โบ-โครเอเชีย", ["sha"] = "Shall-Zwall", ["shb"] = "Ninam", ["shc"] = "Sonde", ["shd"] = "Kundal Shahi", ["she"] = "Sheko", ["shg"] = "Shua", ["shh"] = "Shoshone", ["shi"] = "Tashelhit", ["shj"] = "Shatt", ["shk"] = "Shilluk", ["shl"] = "Shendu", ["shm"] = "Shahrudi", ["shn"] = "ไทใหญ่", ["sho"] = "Shanga", ["shp"] = "Shipibo-Conibo", ["shq"] = "Sala", ["shr"] = "Shi", ["shs"] = "Shuswap", ["sht"] = "Shasta", ["shu"] = "Chadian Arabic", ["shv"] = "Shehri", ["shw"] = "Shwai", ["shx"] = "She", ["shy"] = "Tachawit", ["shz"] = "Syenara Senoufo", ["si"] = "สิงหล", ["sia"] = "Akkala Sami", ["sib"] = "Sebop", ["sid"] = "ซีดามา", ["sie"] = "Simaa", ["sif"] = "Siamou", ["sig"] = "Paasaal", ["sih"] = "Sîshëë", ["sii"] = "Shom Peng", ["sij"] = "Numbami", ["sik"] = "Sikiana", ["sil"] = "Tumulung Sisaala", ["sim"] = "Seim", ["sio-pro"] = "Proto-Siouan", ["sip"] = "สิกขิม", ["siq"] = "Sonia", ["sir"] = "Siri", ["sis"] = "Siuslaw", ["sit-aao-pro"] = "Proto-Central Naga", ["sit-bai-pro"] = "Proto-Bai", ["sit-ban"] = "Bangru", ["sit-bdi-pro"] = "Proto-Bodish", ["sit-bok"] = "Bokar", ["sit-cai"] = "Caijia", ["sit-cha"] = "Chairel", ["sit-ers-pro"] = "Proto-Ersuic", ["sit-hrs-pro"] = "Proto-Hrusish", ["sit-jap"] = "Japhug", ["sit-kha-pro"] = "Proto-Kham", ["sit-khb-pro"] = "Proto-Kho-Bwa", ["sit-khp-pro"] = "Proto-Puroik", ["sit-khw-pro"] = "Proto-Western Kho-Bwa", ["sit-kon-pro"] = "Proto-Northern Naga", ["sit-liz"] = "Lizu", ["sit-lnj"] = "Longjia", ["sit-lrn"] = "Luren", ["sit-luu-pro"] = "ลูอิชดั้งเดิม", ["sit-nas-pro"] = "Proto-Naish", ["sit-prn"] = "Puiron", ["sit-pro"] = "ซีโน-ทิเบตันดั้งเดิม", ["sit-sit"] = "Situ", ["sit-tam-pro"] = "Proto-Tamangic", ["sit-tan-pro"] = "Proto-Tani", ["sit-tgm"] = "ตางัม", ["sit-tng-pro"] = "Proto-Tangkhulic", ["sit-tos"] = "Tosu", ["sit-tsh"] = "Tshobdun", ["sit-zbu"] = "Zbu", ["siu"] = "Sinagen", ["siv"] = "Sumariup", ["siw"] = "Siwai", ["six"] = "Sumau", ["siy"] = "Sivandi", ["siz"] = "Siwi", ["sja"] = "Epena", ["sjb"] = "Sajau Basap", ["sjc"] = "Shaojiang Min", ["sjd"] = "ซามีแบบกิลดิน", ["sje"] = "ซามีแบบปีเต", ["sjg"] = "Assangori", ["sjk"] = "Kemi Sami", ["sjl"] = "Miji", ["sjm"] = "Mapun", ["sjn"] = "ซินดาริน", ["sjo"] = "Xibe", ["sjp"] = "Surjapuri", ["sjr"] = "Siar-Lak", ["sjs"] = "Senhaja de Srair", ["sjt"] = "Ter Sami", ["sju"] = "Ume Sami", ["sjw"] = "Shawnee", ["sk"] = "สโลวัก", ["ska"] = "Skagit", ["skb"] = "แสก", ["skc"] = "Ma Manda", ["skd"] = "Southern Sierra Miwok", ["ske"] = "Ske", ["skf"] = "Mekéns", ["skh"] = "Sikule", ["ski"] = "Sika", ["skj"] = "Seke", ["skk"] = "Sok", ["skm"] = "Sakam", ["skn"] = "Kolibugan Subanon", ["sko"] = "Seko Tengah", ["skp"] = "Sekapan", ["skq"] = "Sininkere", ["skr"] = "Saraiki", ["sks"] = "ไมยา", ["skt"] = "Sakata", ["sku"] = "Sakao", ["skv"] = "Skou", ["skw"] = "Skepi Creole Dutch", ["skx"] = "Seko Padang", ["sky"] = "ซีกายานา", ["skz"] = "Sekar", ["sl"] = "สโลวีเนีย", ["sla-pro"] = "สลาวิกดั้งเดิม", ["slc"] = "Saliba (Colombia)", ["sld"] = "Sisaala", ["sle"] = "Sholaga", ["slf"] = "Swiss-Italian Sign Language", ["slg"] = "Selungai Murut", ["slh"] = "Southern Puget Sound Salish", ["slj"] = "Salumá", ["sll"] = "Salt-Yui", ["slm"] = "ซามาแบบปางูตารัน", ["sln"] = "Salinan", ["slp"] = "Lamaholot", ["slr"] = "ซาลาร์", ["sls"] = "Singapore Sign Language", ["slt"] = "Sila", ["slu"] = "Selaru", ["slw"] = "Sialum", ["slx"] = "Salampasu", ["sly"] = "Selayar", ["slz"] = "Ma'ya", ["sm"] = "ซามัว", ["sma"] = "ซามีใต้", ["smb"] = "Simbari", ["smc"] = "Som", ["smd"] = "Sama", ["smf"] = "Auwe", ["smg"] = "Simbali", ["smh"] = "Samei", ["smi-pro"] = "ซามิกดั้งเดิม", ["smj"] = "ซามีแบบลูเล", ["smk"] = "โบลีเนา", ["sml"] = "ซามาตอนกลาง", ["smm"] = "Musasa", ["smn"] = "ซามีแบบอีนารี", ["smp"] = "Samaritan Hebrew", ["smq"] = "Samo", ["smr"] = "Simeulue", ["sms"] = "Skolt Sami", ["smt"] = "Simte", ["smu"] = "สมราย", ["smv"] = "Samvedi", ["smw"] = "Sumbawa", ["smx"] = "Samba", ["smy"] = "Semnani", ["smz"] = "Simeku", ["sn"] = "โชนา", ["snb"] = "Sebuyau", ["snc"] = "Sinaugoro", ["sne"] = "Bau Bidayuh", ["snf"] = "Noon", ["sng"] = "Sanga (Congo)", ["sni"] = "Sensi", ["snj"] = "Riverain Sango", ["snk"] = "Soninke", ["snl"] = "Sangil", ["snm"] = "Southern Ma'di", ["snn"] = "Siona", ["sno"] = "Snohomish", ["snp"] = "Siane", ["snq"] = "Sangu (Gabon)", ["snr"] = "Sihan", ["sns"] = "Nahavaq", ["snu"] = "Senggi", ["snv"] = "Sa'ban", ["snw"] = "Selee", ["snx"] = "Sam", ["sny"] = "Saniyo-Hiyewe", ["snz"] = "Kou", ["so"] = "โซมาลี", ["soa"] = "โซ่ง", ["sob"] = "Sobei", ["soc"] = "Soko", ["sod"] = "Songoora", ["soe"] = "Songomeno", ["sog"] = "Sogdian", ["soh"] = "Aka (Sudan)", ["soi"] = "Sonha", ["sok"] = "Sokoro", ["sol"] = "Solos", ["son-pro"] = "Proto-Songhay", ["soo"] = "Nsong", ["sop"] = "Songe", ["soq"] = "Kanasi", ["sor"] = "Somrai", ["sos"] = "Seenku", ["sou"] = "ปักษ์ใต้", ["sov"] = "Sonsorolese", ["sow"] = "Sowanda", ["sox"] = "Swo", ["soy"] = "Miyobe", ["soz"] = "Temi", ["spb"] = "Sepa (Indonesia)", ["spc"] = "Sapé", ["spd"] = "Saep", ["spe"] = "Sepa (New Guinea)", ["spg"] = "Sian", ["spi"] = "Saponi", ["spk"] = "Sengo", ["spl"] = "Selepet", ["spm"] = "Sepen", ["spn"] = "Sanapaná", ["spo"] = "Spokane", ["spp"] = "Supyire", ["spr"] = "Saparua", ["sps"] = "Saposa", ["spt"] = "Spiti Bhoti", ["spu"] = "Sapuan", ["spv"] = "Sambalpuri", ["spx"] = "South Picene", ["spy"] = "Sabaot", ["sq"] = "แอลเบเนีย", ["sqa"] = "Shama-Sambuga", ["sqh"] = "Shau", ["sqj-pro"] = "แอลเบเนียนดั้งเดิม", ["sqk"] = "Albanian Sign Language", ["sqm"] = "Suma", ["sqn"] = "Susquehannock", ["sqo"] = "Sorkhei", ["sqq"] = "Sou", ["sqr"] = "Siculo-Arabic", ["sqs"] = "Sri Lankan Sign Language", ["sqt"] = "Soqotri", ["squ"] = "Squamish", ["sra"] = "Saruga", ["srb"] = "Sora", ["sre"] = "Sara", ["srf"] = "Nafi", ["srg"] = "Sulod", ["srh"] = "Sarikoli", ["sri"] = "Siriano", ["srk"] = "Serudung Murut", ["srl"] = "Isirawa", ["srm"] = "Saramaccan", ["srn"] = "Sranan Tongo", ["srq"] = "Sirionó", ["srr"] = "Serer", ["srs"] = "Tsuut'ina", ["srt"] = "Sauri", ["sru"] = "Suruí", ["srv"] = "Waray Sorsogon", ["srw"] = "Serua", ["srx"] = "Sirmauri", ["sry"] = "Sera", ["srz"] = "Shahmirzadi", ["ss"] = "Swazi", ["ssa-klk-pro"] = "Proto-Kuliak", ["ssa-kom-pro"] = "Proto-Koman", ["ssa-pro"] = "Proto-Nilo-Saharan", ["ssb"] = "Southern Sama", ["ssc"] = "Suba-Simbiti", ["ssd"] = "Siroi", ["sse"] = "Balangingi", ["ssf"] = "Thao", ["ssg"] = "Seimat", ["ssh"] = "Shihhi Arabic", ["ssi"] = "Sansi", ["ssj"] = "Sausi", ["ssk"] = "Sunam", ["ssl"] = "Western Sisaala", ["ssm"] = "Semnam", ["sso"] = "Sissano", ["ssp"] = "Spanish Sign Language", ["ssq"] = "So'a", ["ssr"] = "Swiss-French Sign Language", ["sss"] = "Sô", ["sst"] = "Sinasina", ["ssu"] = "Susuami", ["ssv"] = "Shark Bay", ["ssx"] = "Samberigi", ["ssy"] = "ซาโฮ", ["ssz"] = "Sengseng", ["st"] = "ซูทู", ["stb"] = "Northern Subanen", ["std"] = "Sentinelese", ["ste"] = "Liana-Seti", ["stf"] = "Seta", ["stg"] = "Trieng", ["sth"] = "Shelta", ["sti"] = "Bulo Stieng", ["stj"] = "Matya Samo", ["stk"] = "Arammba", ["stm"] = "Setaman", ["stn"] = "Owa", ["sto"] = "Stoney", ["stp"] = "Southeastern Tepehuan", ["stq"] = "ฟรีเชียแบบซาเทอร์ลันท์", ["str"] = "Saanich", ["sts"] = "Shumashti", ["stt"] = "Budeh Stieng", ["stu"] = "Samtao", ["stv"] = "Silt'e", ["stw"] = "Satawalese", ["sty"] = "Siberian Tatar", ["su"] = "ซุนดา", ["sua"] = "Sulka", ["sub"] = "Suku", ["suc"] = "Western Subanon", ["sue"] = "Suena", ["sug"] = "Suganga", ["sui"] = "Suki", ["suk"] = "Sukuma", ["suq"] = "Suri", ["sur"] = "Mwaghavul", ["sus"] = "Susu", ["sut"] = "Subtiaba", ["suv"] = "Puroik", ["suw"] = "Sumbwa", ["sux"] = "ซูเมอร์", ["suy"] = "Suyá", ["suz"] = "Sunwar", ["sv"] = "สวีเดน", ["sva"] = "Svan", ["svb"] = "Ulau-Suain", ["svc"] = "Vincentian Creole English", ["sve"] = "Serili", ["svk"] = "Slovakian Sign Language", ["svm"] = "Slavomolisano", ["svs"] = "Savosavo", ["svx"] = "Skalvian", ["sw"] = "สวาฮีลี", ["swb"] = "Maore Comorian", ["swf"] = "Sere", ["swg"] = "Swabian", ["swi"] = "สุ่ย", ["swj"] = "Sira", ["swl"] = "Swedish Sign Language", ["swm"] = "Samosa", ["swn"] = "Sokna", ["swo"] = "Shanenawa", ["swp"] = "Suau", ["swq"] = "Sharwa", ["swr"] = "Saweru", ["sws"] = "Seluwasan", ["swt"] = "Sawila", ["swu"] = "Suwawa", ["sww"] = "Sowa", ["swx"] = "Suruahá", ["swy"] = "Sarua", ["sxb"] = "Suba", ["sxc"] = "Sicanian", ["sxe"] = "Sighu", ["sxg"] = "Shixing", ["sxk"] = "Southern Kalapuya", ["sxl"] = "Selonian", ["sxm"] = "สำเร", ["sxn"] = "Sangir", ["sxo"] = "Sorothaptic", ["sxr"] = "Saaroa", ["sxs"] = "Sasaru", ["sxw"] = "Saxwe Gbe", ["sya"] = "Siang", ["syb"] = "Central Subanen", ["syc"] = "ซีรีแอกคลาสสิก", ["syd-pro"] = "Proto-Samoyedic", ["syi"] = "Seki", ["syk"] = "Sukur", ["syl"] = "สิเลฏ", ["sym"] = "Maya Samo", ["syn"] = "Senaya", ["syo"] = "Suoy", ["sys"] = "Sinyar", ["syw"] = "Kagate", ["syx"] = "Osamayi", ["syy"] = "Al-Sayyid Bedouin Sign Language", ["sza"] = "Semelai", ["szb"] = "Ngalum", ["szc"] = "Semaq Beri", ["szd"] = "Seru", ["sze"] = "Seze", ["szg"] = "Sengele", ["szl"] = "ไซลีเซีย", ["szn"] = "Sula", ["szp"] = "Suabo", ["szv"] = "Isubu", ["szw"] = "Sawai", ["szy"] = "ซากีซายา", ["ta"] = "ทมิฬ", ["taa"] = "Lower Tanana", ["tab"] = "ทาบาซารัน", ["tac"] = "Lowland Tarahumara", ["tad"] = "Tause", ["tae"] = "Tariana", ["taf"] = "Tapirapé", ["tag"] = "Tagoi", ["tai-pro"] = "ไทดั้งเดิม", ["tai-swe-pro"] = "ไทตะวันตกเฉียงใต้ดั้งเดิม", ["taj"] = "Eastern Tamang", ["tak"] = "Tala", ["tal"] = "Tal", ["tan"] = "Tangale", ["tao"] = "ยามี", ["tap"] = "Taabwa", ["tar"] = "Central Tarahumara", ["tas"] = "Tây Bồi", ["tau"] = "Upper Tanana", ["tav"] = "Tatuyo", ["taw"] = "Tai", ["tax"] = "Tamki", ["tay"] = "Atayal", ["taz"] = "Tocho", ["tba"] = "Aikanã", ["tbb"] = "Tapeba", ["tbc"] = "Takia", ["tbd"] = "Kaki Ae", ["tbe"] = "Tanimbili", ["tbf"] = "Mandara", ["tbg"] = "North Tairora", ["tbh"] = "Thurawal", ["tbi"] = "Gaam", ["tbj"] = "Tiang", ["tbk"] = "Calamian Tagbanwa", ["tbl"] = "ตโบลี", ["tbm"] = "Tagbu", ["tbn"] = "Barro Negro Tunebo", ["tbo"] = "Tawala", ["tbp"] = "Taworta", ["tbq-bdg-pro"] = "โบโด-กาโรดั้งเดิม", ["tbq-blg"] = "Bailang", ["tbq-brm-pro"] = "Proto-Burmish", ["tbq-gkh"] = "Gokhy", ["tbq-kuk-pro"] = "Proto-Kuki-Chin", ["tbq-lal-pro"] = "Proto-Lalo", ["tbq-laz"] = "Laze", ["tbq-lob-pro"] = "โลโล-เบอร์มีซดั้งเดิม", ["tbq-lol-pro"] = "โลโลอิชดั้งเดิม", ["tbq-mil"] = "Milang", ["tbq-mor"] = "Moran", ["tbq-ngo"] = "Ngochang", ["tbr"] = "Tumtum", ["tbs"] = "Tanguat", ["tbt"] = "Kitembo", ["tbu"] = "Tubar", ["tbv"] = "Tobo", ["tbw"] = "Aborlan Tagbanwa", ["tbx"] = "Kapin", ["tby"] = "Tabaru", ["tbz"] = "Ditammari", ["tca"] = "Ticuna", ["tcb"] = "Tanacross", ["tcc"] = "Datooga", ["tcd"] = "Tafi", ["tce"] = "Southern Tutchone", ["tcf"] = "Malinaltepec Tlapanec", ["tcg"] = "Tamagario", ["tch"] = "Turks and Caicos Creole English", ["tci"] = "Wára", ["tck"] = "Tchitchege", ["tcl"] = "Taman (Myanmar)", ["tcm"] = "Tanahmerah", ["tco"] = "Taungyo", ["tcp"] = "Tawr Chin", ["tcq"] = "Kaiy", ["tcs"] = "Torres Strait Creole", ["tct"] = "T'en", ["tcu"] = "Southeastern Tarahumara", ["tcw"] = "Tecpatlán Totonac", ["tcx"] = "โตทา", ["tcy"] = "ตูลู", ["tcz"] = "Thado Chin", ["tda"] = "Tagdal", ["tdb"] = "Panchpargania", ["tdc"] = "Emberá-Tadó", ["tdd"] = "ไทใต้คง", ["tde"] = "Tiranige Diga Dogon", ["tdf"] = "Talieng", ["tdg"] = "Western Tamang", ["tdh"] = "Thulung", ["tdi"] = "Tomadino", ["tdj"] = "Tajio", ["tdk"] = "Tambas", ["tdl"] = "Sur", ["tdm"] = "Taruma", ["tdn"] = "Tondano", ["tdo"] = "Teme", ["tdq"] = "Tita", ["tdr"] = "Todrah", ["tds"] = "Doutai", ["tdt"] = "Tetun Dili", ["tdu"] = "Tempasuk Dusun", ["tdv"] = "Toro", ["tdy"] = "Tadyawan", ["te"] = "เตลูกู", ["tea"] = "เตอเมียร์", ["teb"] = "Tetete", ["tec"] = "Terik", ["ted"] = "Tepo Krumen", ["tee"] = "Huehuetla Tepehua", ["tef"] = "Teressa", ["teg"] = "Teke-Tege", ["teh"] = "Tehuelche", ["tei"] = "Torricelli", ["tek"] = "Ibali Teke", ["tem"] = "Temne", ["ten"] = "Tama (Colombia)", ["teo"] = "Ateso", ["tep"] = "Tepecano", ["teq"] = "Temein", ["ter"] = "Tereno", ["tes"] = "Tengger", ["tet"] = "เตตุน", ["teu"] = "Soo", ["tev"] = "Teor", ["tew"] = "Tewa", ["tex"] = "Tennet", ["tey"] = "Tulishi", ["tez"] = "Tetserret", ["tfi"] = "Tofin Gbe", ["tfn"] = "Dena'ina", ["tfo"] = "Tefaro", ["tfr"] = "Teribe", ["tft"] = "เตอร์นาเต", ["tg"] = "ทาจิก", ["tga"] = "Sagalla", ["tgb"] = "Tobilung", ["tgc"] = "Tigak", ["tgd"] = "Ciwogai", ["tge"] = "Eastern Gorkha Tamang", ["tgf"] = "Chali", ["tgh"] = "Tobagonian Creole English", ["tgi"] = "Lawunuia", ["tgn"] = "ตันดากาโนน", ["tgo"] = "Sudest", ["tgp"] = "Tangoa", ["tgq"] = "Tring", ["tgr"] = "Tareng", ["tgs"] = "Nume", ["tgt"] = "Central Tagbanwa", ["tgu"] = "Tanggu", ["tgv"] = "Tingui-Boto", ["tgw"] = "Tagwana Senoufo", ["tgx"] = "Tagish", ["tgy"] = "Togoyo", ["th"] = "ไทย", ["thc"] = "Tai Hang Tong", ["thd"] = "Kuuk Thaayorre", ["the"] = "Chitwania Tharu", ["thf"] = "Thangmi", ["thh"] = "Northern Tarahumara", ["thi"] = "Tai Long", ["thk"] = "Tharaka", ["thl"] = "Dangaura Tharu", ["thm"] = "ทะวืง", ["thn"] = "Thachanadan", ["thp"] = "Thompson", ["thq"] = "Kochila Tharu", ["thr"] = "Rana Tharu", ["ths"] = "Thakali", ["tht"] = "Tahltan", ["thu"] = "Thuri", ["thy"] = "Tha", ["ti"] = "ทือกรึญญา", ["tic"] = "Tira", ["tif"] = "Tifal", ["tig"] = "ทือเกร", ["tih"] = "Timugon Murut", ["tii"] = "Tiene", ["tij"] = "Tilung", ["tik"] = "Tikar", ["til"] = "Tillamook", ["tim"] = "Timbe", ["tin"] = "Tindi", ["tio"] = "Teop", ["tip"] = "Trimuris", ["tiq"] = "Tiéfo", ["tis"] = "Masadiit Itneg", ["tit"] = "Tinigua", ["tiu"] = "Adasen", ["tiv"] = "Tiv", ["tiw"] = "Tiwi", ["tix"] = "Southern Tiwa", ["tiy"] = "ตีรูไร", ["tiz"] = "Tai Hongjin", ["tja"] = "Tajuasohn", ["tjg"] = "Tunjung", ["tji"] = "Northern Tujia", ["tjl"] = "ไทแหล่ง", ["tjm"] = "Timucua", ["tjn"] = "Tonjon", ["tjs"] = "Southern Tujia", ["tju"] = "Tjurruru", ["tjw"] = "Chaap Wuurong", ["tk"] = "เติร์กเมน", ["tka"] = "Truká", ["tkb"] = "Buksa", ["tkd"] = "Tukudede", ["tke"] = "Takwane", ["tkf"] = "Tukumanféd", ["tkl"] = "Tokelauan", ["tkm"] = "Takelma", ["tkn"] = "โทกูโนชิมะ", ["tkp"] = "Tikopia", ["tkq"] = "Tee", ["tkr"] = "Tsakhur", ["tks"] = "Ramandi", ["tkt"] = "Kathoriya Tharu", ["tku"] = "Upper Necaxa Totonac", ["tkv"] = "Mur Pano", ["tkw"] = "Teanu", ["tkx"] = "Tangko", ["tkz"] = "Takua", ["tl"] = "ตากาล็อก", ["tla"] = "Southwestern Tepehuan", ["tlb"] = "Tobelo", ["tlc"] = "Misantla Totonac", ["tld"] = "Talaud", ["tlf"] = "Telefol", ["tlg"] = "Tofanma", ["tlh"] = "Klingon", ["tli"] = "Tlingit", ["tlj"] = "Talinga-Bwisi", ["tlk"] = "Taloki", ["tll"] = "Tetela", ["tlm"] = "Tolomako", ["tln"] = "Talondo'", ["tlo"] = "Talodi", ["tlp"] = "Filomena Mata-Coahuitlán Totonac", ["tlq"] = "Tai Loi", ["tlr"] = "Talise", ["tls"] = "Tambotalo", ["tlt"] = "Teluti", ["tlu"] = "Tulehu", ["tlv"] = "Taliabu", ["tlx"] = "Khehek", ["tly"] = "Talysh", ["tma"] = "Tama (Chad)", ["tmb"] = "Avava", ["tmc"] = "Tumak", ["tmd"] = "Haruai", ["tme"] = "Tremembé", ["tmf"] = "Toba-Maskoy", ["tmg"] = "Ternateño", ["tmh"] = "Tuareg", ["tmi"] = "Tutuba", ["tmj"] = "Samarokena", ["tmk"] = "Northwestern Tamang", ["tml"] = "Tamnim Citak", ["tmm"] = "Tai Thanh", ["tmn"] = "Taman (Indonesia)", ["tmo"] = "Temoq", ["tmq"] = "Tumleo", ["tms"] = "Tima", ["tmt"] = "Tasmate", ["tmu"] = "Iau", ["tmv"] = "Motembo", ["tmy"] = "Tami", ["tmz"] = "Tamanaku", ["tn"] = "สวานา", ["tna"] = "Tacana", ["tnb"] = "Western Tunebo", ["tnc"] = "Tanimuca-Retuarã", ["tnd"] = "Angosturas Tunebo", ["tne"] = "Tinoc Kallahan", ["tng"] = "Tobanga", ["tnh"] = "Maiani", ["tni"] = "Tandia", ["tnk"] = "Kwamera", ["tnl"] = "Lenakel", ["tnm"] = "Tabla", ["tnn"] = "North Tanna", ["tno"] = "Toromono", ["tnp"] = "Whitesands", ["tnq"] = "ตาอีโน", ["tnr"] = "Bedik", ["tns"] = "Tenis", ["tnt"] = "Tontemboan", ["tnu"] = "Tay Khang", ["tnv"] = "Tanchangya", ["tnw"] = "Tonsawang", ["tnx"] = "Tanema", ["tny"] = "Tongwe", ["tnz"] = "Ten'edn", ["to"] = "ตองงา", ["tob"] = "Toba", ["toc"] = "Coyutla Totonac", ["tod"] = "Toma", ["tof"] = "Gizrra", ["tog"] = "Tonga (Malawi)", ["toh"] = "Tonga (Mozambique)", ["toi"] = "Tonga (Zambia)", ["toj"] = "Tojolabal", ["tok"] = "Toki Pona", ["tol"] = "Tolowa", ["tom"] = "Tombulu", ["too"] = "Xicotepec de Juárez Totonac", ["top"] = "Papantla Totonac", ["toq"] = "Toposa", ["tor"] = "Togbo-Vara Banda", ["tos"] = "Highland Totonac", ["tou"] = "Tho", ["tov"] = "Upper Taromi", ["tow"] = "Jemez", ["tox"] = "Tobian", ["toy"] = "Topoiyo", ["toz"] = "To", ["tpa"] = "Taupota", ["tpc"] = "Azoyú Me'phaa", ["tpe"] = "Tippera", ["tpf"] = "Tarpia", ["tpg"] = "Kula", ["tpi"] = "ตอกปีซิน", ["tpj"] = "Tapieté", ["tpk"] = "Tupinikin", ["tpl"] = "Tlacoapa Me'phaa", ["tpm"] = "Tampulma", ["tpn"] = "Tupinambá", ["tpo"] = "Tai Pao", ["tpp"] = "Pisaflores Tepehua", ["tpq"] = "Tukpa", ["tpr"] = "Tuparí", ["tpt"] = "Tlachichilco Tepehua", ["tpu"] = "Tampuan", ["tpv"] = "Tanapag", ["tpw"] = "ตูปีเก่า", ["tpx"] = "Acatepec Me'phaa", ["tpy"] = "Trumai", ["tpz"] = "Tinputz", ["tqb"] = "Tembé", ["tql"] = "Lehali", ["tqm"] = "Turumsa", ["tqn"] = "Tenino", ["tqo"] = "Toaripi", ["tqp"] = "Tomoip", ["tqq"] = "Tunni", ["tqr"] = "Torona", ["tqt"] = "Western Totonac", ["tqu"] = "Touo", ["tqw"] = "Tonkawa", ["tr"] = "ตุรกี", ["tra"] = "Tirahi", ["trb"] = "Terebu", ["trc"] = "Copala Triqui", ["trd"] = "Turi", ["tre"] = "East Tarangan", ["trf"] = "Trinidadian Creole English", ["trg"] = "Lishán Didán", ["trh"] = "Turaka", ["tri"] = "Trió", ["trj"] = "Toram", ["trk-dkh"] = "Dukhan", ["trk-eog"] = "Early Old Oghuz", ["trk-oat"] = "ตุรกีแบบอานาโตเลียเก่า", ["trk-pro"] = "เตอร์กิกดั้งเดิม", ["trl"] = "Traveller Scottish", ["trm"] = "Tregami", ["trn"] = "Trinitario", ["tro"] = "Tarao", ["trp"] = "กอกบอรอก", ["trq"] = "San Martín Itunyoso Triqui", ["trr"] = "Taushiro", ["trs"] = "Chicahuaxtla Triqui", ["trt"] = "Tunggare", ["tru"] = "Turoyo", ["trv"] = "Taroko", ["trw"] = "Torwali", ["trx"] = "Tringgus", ["try"] = "ตุรุง", ["trz"] = "Torá", ["ts"] = "Tsonga", ["tsa"] = "Tsaangi", ["tsb"] = "Tsamai", ["tsc"] = "Tswa", ["tsd"] = "Tsakonian", ["tse"] = "Tunisian Sign Language", ["tsf"] = "Southwestern Tamang", ["tsg"] = "ซูก", ["tsh"] = "Tsuvan", ["tsi"] = "Tsimshian", ["tsj"] = "Tshangla", ["tsl"] = "Ts'ün-Lao", ["tsm"] = "Turkish Sign Language", ["tsp"] = "Northern Toussian", ["tsq"] = "มือไทย", ["tsr"] = "Akei", ["tss"] = "Taiwan Sign Language", ["tsu"] = "โจว", ["tsv"] = "Tsogo", ["tsw"] = "Tsishingini", ["tsx"] = "Mubami", ["tsy"] = "Tebul Sign Language", ["tt"] = "ตาตาร์", ["tta"] = "Tutelo", ["ttb"] = "Gaa", ["ttc"] = "Tektiteko", ["ttd"] = "Tauade", ["tte"] = "Bwanabwana", ["ttf"] = "Tuotomb", ["ttg"] = "Tutong", ["tth"] = "Upper Ta'oih", ["tti"] = "Tobati", ["ttj"] = "Tooro", ["ttk"] = "Totoro", ["ttl"] = "Totela", ["ttm"] = "Northern Tutchone", ["ttn"] = "Towei", ["tto"] = "Lower Ta'oih", ["ttp"] = "Tombelala", ["ttr"] = "Tera", ["tts"] = "อีสาน", ["ttt"] = "Tat", ["ttu"] = "Torau", ["ttv"] = "Titan", ["ttw"] = "Long Wat", ["tty"] = "Sikaritai", ["ttz"] = "Tsum", ["tua"] = "Wiarumus", ["tub"] = "Tübatulabal", ["tuc"] = "Mutu", ["tud"] = "Tuxá", ["tue"] = "Tuyuca", ["tuf"] = "Central Tunebo", ["tug"] = "Tunia", ["tuh"] = "Taulil", ["tui"] = "Tupuri", ["tuj"] = "Tugutil", ["tul"] = "Tula", ["tum"] = "Tumbuka", ["tun"] = "Tunica", ["tuo"] = "Tucano", ["tup-gua-pro"] = "ตูปี-กัวรานีดั้งเดิม", ["tup-kab"] = "Kabishiana", ["tup-pro"] = "ตูเปียนดั้งเดิม", ["tuq"] = "Tedaga", ["tus"] = "Tuscarora", ["tuu"] = "Tututni", ["tuv"] = "Turkana", ["tuw-alk"] = "Alchuka", ["tuw-bal"] = "Bala", ["tuw-kkl"] = "Kyakala", ["tuw-kli"] = "Kili", ["tuw-pro"] = "Proto-Tungusic", ["tuw-sol"] = "Solon", ["tux"] = "Tuxináwa", ["tuy"] = "Tugen", ["tuz"] = "Turka", ["tva"] = "Vaghua", ["tvd"] = "Tsuvadi", ["tve"] = "Te'un", ["tvk"] = "Southeast Ambrym", ["tvl"] = "ตูวาลู", ["tvm"] = "Tela-Masbuar", ["tvn"] = "Tavoyan", ["tvo"] = "ตีโดเร", ["tvs"] = "Taveta", ["tvt"] = "Tutsa Naga", ["tvu"] = "Tunen", ["tvw"] = "Sedoa", ["tvx"] = "Taivoan", ["tvy"] = "Timor Pidgin", ["twa"] = "Twana", ["twb"] = "Western Tawbuid", ["twc"] = "Teshenawa", ["twe"] = "Teiwa", ["twf"] = "เทาส์", ["twg"] = "Tereweng", ["twh"] = "ไทขาว", ["twm"] = "Tawang Monpa", ["twn"] = "Twendi", ["two"] = "Tswapong", ["twp"] = "Ere", ["twq"] = "Tasawaq", ["twr"] = "Southwestern Tarahumara", ["twt"] = "Turiwára", ["twu"] = "Termanu", ["tww"] = "Tuwari", ["twy"] = "Tawoyan", ["txa"] = "Tombonuo", ["txb"] = "โทแคเรียนบี", ["txc"] = "Tsetsaut", ["txe"] = "Totoli", ["txg"] = "ตังกุต", ["txh"] = "Thracian", ["txi"] = "Ikpeng", ["txj"] = "Tarjumo", ["txm"] = "Tomini", ["txn"] = "West Tarangan", ["txo"] = "Toto", ["txq"] = "Tii", ["txr"] = "Tartessian", ["txs"] = "Tonsea", ["txt"] = "Citak", ["txu"] = "Kayapó", ["txx"] = "Tatana", ["ty"] = "ตาฮีตี", ["tya"] = "Tauya", ["tye"] = "Kyenga", ["tyh"] = "O'du", ["tyi"] = "Teke-Tsaayi", ["tyj"] = "ไทแมน", ["tyl"] = "Thu Lao", ["tyn"] = "Kombai", ["typ"] = "Kuku-Thaypan", ["tyr"] = "ไทแดง", ["tys"] = "ซาปา", ["tyt"] = "Tày Tac", ["tyu"] = "Kua", ["tyv"] = "ตูวา", ["tyx"] = "Teke-Tyee", ["tyz"] = "ตั่ย", ["tza"] = "Tanzanian Sign Language", ["tzh"] = "Tzeltal", ["tzj"] = "Tz'utujil", ["tzl"] = "Talossan", ["tzm"] = "Central Atlas Tamazight", ["tzn"] = "Tugun", ["tzo"] = "โซตซิล", ["tzx"] = "Tabriak", ["uam"] = "Uamué", ["uan"] = "Kuan", ["uar"] = "Tairuma", ["uba"] = "Ubang", ["ubi"] = "Ubi", ["ubl"] = "Buhi'non Bikol", ["ubr"] = "Ubir", ["ubu"] = "Umbu-Ungu", ["uby"] = "Ubykh", ["uda"] = "Uda", ["ude"] = "Udihe", ["udg"] = "Muduga", ["udi"] = "อูดี", ["udj"] = "Ujir", ["udl"] = "Uldeme", ["udm"] = "อุดมูร์ต", ["udu"] = "Uduk", ["ues"] = "Kioko", ["ufi"] = "Ufim", ["ug"] = "อุยกูร์", ["uga"] = "ยูการิต", ["ugb"] = "Kuku-Ugbanh", ["uge"] = "Ughele", ["ugn"] = "Ugandan Sign Language", ["ugo"] = "กฺ๋อง", ["ugy"] = "Uruguayan Sign Language", ["uha"] = "Uhami", ["uhn"] = "Damal", ["uis"] = "Uisai", ["uiv"] = "Iyive", ["uji"] = "Tanjijili", ["uk"] = "ยูเครน", ["uka"] = "Kaburi", ["ukg"] = "Ukuriguma", ["ukh"] = "Ukhwejo", ["ukk"] = "Muak Sa-aak", ["ukl"] = "Ukrainian Sign Language", ["ukp"] = "Ukpe-Bayobiri", ["ukq"] = "Ukwa", ["uks"] = "Kaapor Sign Language", ["uku"] = "Ukue", ["ukw"] = "Ukwuani-Aboh-Ndoni", ["uky"] = "Kuuk Yak", ["ula"] = "Fungwa", ["ulb"] = "Olukumi", ["ulc"] = "Ulch", ["ule"] = "Lule", ["ulf"] = "Afra", ["uli"] = "Ulithian", ["ulk"] = "Meriam", ["ull"] = "Ullatan", ["ulm"] = "Ulumanda'", ["uln"] = "อุนเซอร์ด็อยทช์", ["ulu"] = "Uma' Lung", ["ulw"] = "Ulwa", ["uma"] = "Umatilla", ["umb"] = "Umbundu", ["umc"] = "Marrucinian", ["umd"] = "Umbindhamu", ["umg"] = "Umbuygamu", ["umi"] = "Ukit", ["umm"] = "Umon", ["umn"] = "Makyan Naga", ["umo"] = "Umotína", ["ump"] = "Umpila", ["umr"] = "Umbugarla", ["ums"] = "Pendau", ["umu"] = "Munsee", ["una"] = "North Watut", ["und"] = "Undetermined", ["une"] = "Uneme", ["ung"] = "Ngarinyin", ["unk"] = "Enawené-Nawé", ["unm"] = "Unami", ["unn"] = "Kurnai", ["unr"] = "Mundari", ["unu"] = "Unubahe", ["unx"] = "Munda", ["unz"] = "Unde Kaili", ["uok"] = "Uokha", ["uon"] = "Kulon", ["upi"] = "Umeda", ["upv"] = "Northeast Malakula", ["ur"] = "อูรดู", ["ura"] = "Urarina", ["urb"] = "Urubú-Kaapor", ["urc"] = "Urningangg", ["ure"] = "Uru", ["urf"] = "Uradhi", ["urg"] = "Urigina", ["urh"] = "Urhobo", ["uri"] = "Urim", ["urj-fin-pro"] = "ฟินนิกดั้งเดิม", ["urj-koo"] = "Old Komi", ["urj-kuk"] = "Kukkuzi", ["urj-kya"] = "Komi-Yazva", ["urj-mdv-pro"] = "Proto-Mordvinic", ["urj-prm-pro"] = "เปอร์มิกดั้งเดิม", ["urj-pro"] = "ยูราลิกดั้งเดิม", ["urj-ugr-pro"] = "ยูกริกดั้งเดิม", ["urk"] = "อูรักลาโวยจ", ["url"] = "Urali", ["urm"] = "Urapmin", ["urn"] = "Uruangnirin", ["uro"] = "Ura (New Guinea)", ["urp"] = "Uru-Pa-In", ["urr"] = "Löyöp", ["urt"] = "Urat", ["uru"] = "Urumi", ["urv"] = "Uruava", ["urw"] = "Sop", ["urx"] = "Urimo", ["ury"] = "Orya", ["urz"] = "Uru-Eu-Wau-Wau", ["usa"] = "Usarufa", ["ush"] = "Ushojo", ["usi"] = "Usui", ["usk"] = "Usaghade", ["usp"] = "Uspanteco", ["uss"] = "Saare", ["usu"] = "Uya", ["uta"] = "Otank", ["ute"] = "Ute", ["uth"] = "Hun", ["utp"] = "Aba", ["utr"] = "Etulo", ["utu"] = "Utu", ["uum"] = "Urum", ["uun"] = "Kulon-Pazeh", ["uur"] = "Ura (Vanuatu)", ["uuu"] = "U", ["uve"] = "West Uvean", ["uvh"] = "Uri", ["uvl"] = "Lote", ["uwa"] = "Kuku-Uwanh", ["uya"] = "Doko-Uyanga", ["uz"] = "อุซเบก", ["vaa"] = "Vaagri Booli", ["vae"] = "Vale", ["vag"] = "Vagla", ["vah"] = "Varhadi", ["vai"] = "ไว", ["vaj"] = "Sekele", ["val"] = "Vehes", ["vam"] = "Vanimo", ["van"] = "Valman", ["vao"] = "Vao", ["vap"] = "Vaiphei", ["var"] = "Huarijio", ["vas"] = "Vasavi", ["vau"] = "Vanuma", ["vav"] = "Varli", ["vay"] = "Vayu", ["vbb"] = "Southeast Babar", ["vbk"] = "Southwestern Bontoc", ["ve"] = "เวนดา", ["vec"] = "เวเนโต", ["ved"] = "Veddah", ["vem"] = "Vemgo-Mabas", ["veo"] = "Ventureño", ["vep"] = "เวปส์", ["ver"] = "Mom Jango", ["vgr"] = "Vaghri", ["vgt"] = "Flemish Sign Language", ["vi"] = "เวียดนาม", ["vic"] = "Virgin Islands Creole", ["vid"] = "Vidunda", ["vif"] = "Vili", ["vig"] = "Viemo", ["vil"] = "Vilela", ["vis"] = "Vishavan", ["vit"] = "Viti", ["viv"] = "Iduna", ["vjk"] = "Bajjika", ["vka"] = "Kariyarra", ["vki"] = "Ija-Zuba", ["vkj"] = "Kujarge", ["vkk"] = "Kaur", ["vkl"] = "Kulisusu", ["vkm"] = "Kamakan", ["vko"] = "Kodeoha", ["vkp"] = "Korlai Creole Portuguese", ["vkt"] = "Tenggarong Kutai Malay", ["vku"] = "Kurrama", ["vlp"] = "Valpei", ["vls"] = "West Flemish", ["vma"] = "Martuthunira", ["vmb"] = "Mbabaram", ["vmc"] = "Juxtlahuaca Mixtec", ["vmd"] = "Mudu Koraga", ["vme"] = "East Masela", ["vmf"] = "East Franconian", ["vmg"] = "Minigir", ["vmh"] = "Maraghei", ["vmi"] = "Miwa", ["vmj"] = "Ixtayutla Mixtec", ["vmk"] = "Makhuwa-Shirima", ["vml"] = "Malgana", ["vmm"] = "Mitlatongo Mixtec", ["vmp"] = "Soyaltepec Mazatec", ["vmq"] = "Soyaltepec Mixtec", ["vmr"] = "Marenje", ["vmu"] = "Muluridyi", ["vmv"] = "Valley Maidu", ["vmw"] = "Makhuwa", ["vmx"] = "Tamazola Mixtec", ["vmy"] = "Ayautla Mazatec", ["vmz"] = "Mazatlán Mazatec", ["vnk"] = "Lovono", ["vnm"] = "Neve'ei", ["vnp"] = "Vunapu", ["vo"] = "โวลาปุก", ["vor"] = "Voro", ["vot"] = "โวต", ["vra"] = "Vera'a", ["vro"] = "เวอโร", ["vrs"] = "Varisi", ["vrt"] = "Burmbar", ["vsi"] = "Moldova Sign Language", ["vsl"] = "Venezuelan Sign Language", ["vsv"] = "Valencian Sign Language", ["vto"] = "Vitou", ["vum"] = "Vumbu", ["vun"] = "Vunjo", ["vut"] = "Vute", ["vwa"] = "Awa (China)", ["wa"] = "วัลลูน", ["waa"] = "Walla Walla", ["wab"] = "Wab", ["wac"] = "Wasco-Wishram", ["wad"] = "Wandamen", ["waf"] = "Wakoná", ["wag"] = "Wa'ema", ["wah"] = "Watubela", ["waj"] = "Waffa", ["wal"] = "Wolaytta", ["wam"] = "Massachusett", ["wan"] = "Wan", ["wao"] = "Wappo", ["wap"] = "Wapishana", ["waq"] = "Wageman", ["war"] = "วาไร", ["was"] = "Washo", ["wat"] = "Kaninuwa", ["wau"] = "Wauja", ["wav"] = "Waka", ["waw"] = "Waiwai", ["wax"] = "Watam", ["way"] = "Wayana", ["waz"] = "Wampur", ["wba"] = "วาราโอ", ["wbb"] = "Wabo", ["wbe"] = "Waritai", ["wbf"] = "Wara", ["wbh"] = "Wanda", ["wbi"] = "Wanji", ["wbj"] = "Alagwa", ["wbk"] = "Waigali", ["wbl"] = "Wakhi", ["wbm"] = "Wa", ["wbp"] = "Warlpiri", ["wbq"] = "Waddar", ["wbr"] = "Wagdi", ["wbt"] = "Wanman", ["wbv"] = "Wajarri", ["wbw"] = "Woi", ["wca"] = "Yanomam", ["wci"] = "Waci Gbe", ["wdd"] = "Wandji", ["wdg"] = "Wadaginam", ["wdj"] = "Wadjiginy", ["wdt"] = "Wendat", ["wdu"] = "Wadjigu", ["wdy"] = "Wadjabangayi", ["wea"] = "Wewaw", ["wec"] = "Wè Western", ["wed"] = "Wedau", ["weh"] = "Weh", ["wei"] = "Kiunum", ["wem"] = "Weme Gbe", ["weo"] = "Wemale", ["wer"] = "Weri", ["wes"] = "Cameroon Pidgin", ["wet"] = "Perai", ["weu"] = "Welaung", ["wew"] = "Weyewa", ["wfg"] = "Yafi", ["wga"] = "Wagaya", ["wgb"] = "Wagawaga", ["wgg"] = "Wangganguru", ["wgi"] = "Wahgi", ["wgo"] = "Waigeo", ["wgu"] = "Wirangu", ["wgy"] = "Warrgamay", ["wha"] = "Manusela", ["whg"] = "North Wahgi", ["whk"] = "Wahau Kenyah", ["whu"] = "Wahau Kayan", ["wib"] = "Southern Toussian", ["wic"] = "Wichita", ["wie"] = "Wik-Epa", ["wif"] = "Wik-Keyangan", ["wig"] = "Wik-Ngathana", ["wih"] = "Wik-Me'anha", ["wii"] = "Minidien", ["wij"] = "Wik-Iiyanh", ["wik"] = "Wikalkan", ["wil"] = "Wilawila", ["wim"] = "Wik-Mungkan", ["win"] = "วินเนอเบโก", ["wir"] = "Wiraféd", ["wiu"] = "Wiru", ["wiv"] = "Muduapa", ["wiy"] = "Wiyot", ["wja"] = "Waja", ["wji"] = "Warji", ["wka"] = "Kw'adza", ["wkb"] = "Kumbaran", ["wkd"] = "Mo", ["wkl"] = "Kalanadi", ["wku"] = "Kunduvadi", ["wkw"] = "Wakawaka", ["wky"] = "Wangkayutyuru", ["wla"] = "Walio", ["wlc"] = "Mwali Comorian", ["wle"] = "Wolane", ["wlg"] = "Kunbarlang", ["wli"] = "Waioli", ["wlk"] = "Wailaki", ["wll"] = "Wali (Sudan)", ["wlm"] = "เวลส์กลาง", ["wlo"] = "Wolio", ["wlr"] = "Wailapa", ["wls"] = "Wallisian", ["wlu"] = "Wuliwuli", ["wlv"] = "Wichí Lhamtés Vejoz", ["wlw"] = "Walak", ["wlx"] = "Wali (Ghana)", ["wly"] = "Waling", ["wmb"] = "Wambaya", ["wmc"] = "Wamas", ["wmd"] = "Mamaindé", ["wme"] = "Wambule", ["wmh"] = "Waima'a", ["wmi"] = "Wamin", ["wmm"] = "Maiwa (Indonesia)", ["wmn"] = "Waamwang", ["wmo"] = "Wam", ["wms"] = "Wambon", ["wmt"] = "Walmajarri", ["wmw"] = "มวานี", ["wmx"] = "Womo", ["wnb"] = "Wanambre", ["wnc"] = "Wantoat", ["wnd"] = "Wandarang", ["wne"] = "Waneci", ["wng"] = "Wanggom", ["wni"] = "Ndzwani Comorian", ["wnk"] = "Wanukaka", ["wnm"] = "Wanggamala", ["wno"] = "Wano", ["wnp"] = "Wanap", ["wnu"] = "Usan", ["wnw"] = "Wintu", ["wny"] = "Wanyi", ["wo"] = "โวลอฟ", ["woa"] = "Tyaraity", ["wob"] = "Wobé", ["woc"] = "Wogeo", ["wod"] = "Wolani", ["woe"] = "Woleaian", ["wog"] = "Wogamusin", ["woi"] = "Kamang", ["wok"] = "Longto", ["wom"] = "Perema", ["won"] = "Wongo", ["woo"] = "Manombai", ["wor"] = "Woria", ["wos"] = "Hanga Hundi", ["wow"] = "Wawonii", ["woy"] = "Weyto", ["wpc"] = "Wirö", ["wra"] = "Warapu", ["wrb"] = "Warluwara", ["wrg"] = "Warungu", ["wrh"] = "Wiradjuri", ["wri"] = "Wariyangga", ["wrk"] = "Garawa", ["wrl"] = "Warlmanpa", ["wrm"] = "Warumungu", ["wrn"] = "Warnang", ["wro"] = "Worora", ["wrp"] = "Waropen", ["wrr"] = "Wardaman", ["wrs"] = "Waris", ["wru"] = "Waru", ["wrv"] = "Waruna", ["wrw"] = "Gugu Warra", ["wrx"] = "Wae Rana", ["wrz"] = "Warray", ["wsa"] = "Warembori", ["wsi"] = "Wusi", ["wsk"] = "Waskia", ["wsr"] = "Owenia", ["wsu"] = "Wasu", ["wsv"] = "Wotapuri-Katarqalai", ["wtf"] = "Watiwa", ["wth"] = "Wathaurong", ["wti"] = "Berta", ["wtk"] = "Watakataui", ["wtm"] = "Mewati", ["wtw"] = "Wotu", ["wua"] = "Wikngenchera", ["wub"] = "Wunambal", ["wud"] = "Wudu", ["wuh"] = "Wutunhua", ["wul"] = "Silimo", ["wum"] = "Wumbvu", ["wun"] = "Bungu", ["wur"] = "Wurrugu", ["wut"] = "Wutung", ["wuu"] = "อู๋", ["wuv"] = "Wuvulu-Aua", ["wux"] = "Wulna", ["wuy"] = "Wauyai", ["wwa"] = "Waama", ["wwo"] = "Dorig", ["wwr"] = "Warrwa", ["www"] = "Wawa", ["wxa"] = "Waxiang", ["wxw"] = "Wardandi", ["wya"] = "Wyandot", ["wyb"] = "Ngiyambaa", ["wyi"] = "Woiwurrung", ["wym"] = "วีลามอวิตแซ", ["wyr"] = "Wayoró", ["wyy"] = "Western Fijian", ["xaa"] = "อาหรับแบบอันดะลุส", ["xab"] = "Sambe", ["xac"] = "Kachari", ["xad"] = "Adai", ["xae"] = "Aequian", ["xag"] = "Aghwan", ["xai"] = "Kaimbé", ["xaj"] = "Ararandewára", ["xak"] = "Maku", ["xal"] = "คัลมึค", ["xam"] = "ǀXam", ["xan"] = "Xamtanga", ["xao"] = "Khao", ["xap"] = "Apalachee", ["xaq"] = "Aquitanian", ["xar"] = "Karami", ["xas"] = "Kamassian", ["xat"] = "Katawixi", ["xau"] = "Kauwera", ["xav"] = "Xavante", ["xaw"] = "Kawaiisu", ["xay"] = "Kayan Mahakam", ["xbb"] = "Lower Burdekin", ["xbc"] = "แบกเตรีย", ["xbd"] = "Bindal", ["xbe"] = "Bigambal", ["xbg"] = "Bunganditj", ["xbi"] = "Kombio", ["xbj"] = "Birrpayi", ["xbm"] = "เบรอตงกลาง", ["xbn"] = "Kenaboi", ["xbo"] = "Bulgar", ["xbp"] = "Bibbulman", ["xbr"] = "กัมเบอรา", ["xbw"] = "Kambiwá", ["xby"] = "Butchulla", ["xcb"] = "Cumbric", ["xcc"] = "Camunic", ["xce"] = "Celtiberian", ["xch"] = "Chemakum", ["xcl"] = "อาร์มีเนียเก่า", ["xcm"] = "Comecrudo", ["xcn"] = "Cotoname", ["xco"] = "Khwarezmian", ["xcr"] = "Carian", ["xct"] = "ทิเบตคลาสสิก", ["xcu"] = "Curonian", ["xcv"] = "Chuvan", ["xcw"] = "Coahuilteco", ["xcy"] = "Cayuse", ["xda"] = "Darkinjung", ["xdc"] = "Dacian", ["xdk"] = "Dharug", ["xdm"] = "เอโดม", ["xdq"] = "Kaitag", ["xdy"] = "Malayic Dayak", ["xeb"] = "Eblaite", ["xed"] = "Hdi", ["xeg"] = "ǁXegwi", ["xel"] = "Kelo", ["xem"] = "Kembayan", ["xep"] = "Epi-Olmec", ["xer"] = "Xerénte", ["xes"] = "Kesawai", ["xet"] = "Xetá", ["xeu"] = "Keoru-Ahia", ["xfa"] = "ฟาลิสกุส", ["xga"] = "Galatian", ["xgb"] = "Gbin", ["xgd"] = "Gudang", ["xgf"] = "Gabrielino-Fernandeño", ["xgg"] = "Goreng", ["xgi"] = "Garingbal", ["xgl"] = "Galindian", ["xgm"] = "Darumbal", ["xgn-pro"] = "มองโกลิกดั้งเดิม", ["xgr"] = "Garza", ["xgu"] = "Unggumi", ["xgw"] = "Guwa", ["xh"] = "โคซา", ["xha"] = "Harami", ["xhc"] = "Hunnic", ["xhd"] = "Hadrami", ["xhe"] = "Khetrani", ["xhm"] = "เขมรกลาง", ["xhr"] = "Hernican", ["xht"] = "Hattic", ["xhu"] = "ฮูร์เรีย", ["xhv"] = "Khua", ["xib"] = "Iberian", ["xii"] = "Xiri", ["xil"] = "Illyrian", ["xin"] = "Xinca", ["xir"] = "Xiriâna", ["xis"] = "Kisan", ["xiv"] = "Harappan", ["xiy"] = "Xipaya", ["xjb"] = "Minjungbal", ["xka"] = "Kalkoti", ["xkb"] = "Manigri-Kambolé Ede Nago", ["xkc"] = "Khoini", ["xkd"] = "Mendalam Kayan", ["xke"] = "Kereho", ["xkf"] = "Khengkha", ["xkg"] = "Kagoro", ["xki"] = "Kenyan Sign Language", ["xkj"] = "Kajali", ["xkk"] = "Kaco'", ["xkl"] = "Bakung", ["xkn"] = "Kayan River Kayan", ["xko"] = "Kiorr", ["xkp"] = "Kabatei", ["xkq"] = "Koroni", ["xkr"] = "Xakriabá", ["xks"] = "Kumbewaha", ["xkt"] = "Kantosi", ["xku"] = "Kaamba", ["xkv"] = "Kgalagadi", ["xkw"] = "Kembra", ["xkx"] = "Karore", ["xky"] = "Uma' Lasan", ["xkz"] = "Kurtöp", ["xla"] = "Kamula", ["xlb"] = "Loup B", ["xlc"] = "Lycian", ["xld"] = "Lydian", ["xle"] = "Lemnian", ["xlg"] = "Ancient Ligurian", ["xli"] = "Liburnian", ["xln"] = "Alanic", ["xlo"] = "Loup A", ["xlp"] = "Lepontic", ["xls"] = "Lusitanian", ["xlu"] = "Luwian", ["xly"] = "Elymian", ["xmb"] = "Mbonga", ["xmc"] = "Makhuwa-Marrevone", ["xmd"] = "Mbudum", ["xme-ker"] = "Kermanic", ["xme-kls"] = "Kalasuri", ["xme-klt"] = "Kilit", ["xme-mid"] = "Middle Median", ["xme-old"] = "Old Median", ["xme-ott"] = "Old Tati", ["xme-taf"] = "Tafreshi", ["xme-ttc-pro"] = "Proto-Tatic", ["xmf"] = "มิงเกรเลีย", ["xmg"] = "Mengaka", ["xmh"] = "Kugu-Muminh", ["xmj"] = "Majera", ["xmk"] = "Ancient Macedonian", ["xml"] = "Malaysian Sign Language", ["xmm"] = "มลายูแบบมานาโด", ["xmo"] = "Morerebi", ["xmp"] = "Kuku-Mu'inh", ["xmq"] = "Kuku-Mangk", ["xmr"] = "Meroitic", ["xms"] = "Moroccan Sign Language", ["xmt"] = "Matbat", ["xmu"] = "Kamu", ["xmx"] = "Maden", ["xmy"] = "Mayaguduna", ["xmz"] = "Mori Bawah", ["xna"] = "Ancient North Arabian", ["xnb"] = "Kanakanabu", ["xnd-pro"] = "Proto-Na-Dene", ["xng"] = "มองโกเลียกลาง", ["xnh"] = "Kuanhua", ["xni"] = "Ngarigu", ["xnk"] = "Nganakarti", ["xnn"] = "กันกานาอือเหนือ", ["xnr"] = "Kangri", ["xns"] = "Kanashi", ["xnt"] = "Narragansett", ["xnu"] = "Nukunul", ["xny"] = "Nyiyaparli", ["xoc"] = "O'chi'chi'", ["xod"] = "Kokoda", ["xog"] = "Soga", ["xoi"] = "Kominimung", ["xok"] = "Xokleng", ["xom"] = "Komo", ["xon"] = "Konkomba", ["xoo"] = "Xukurú", ["xop"] = "Kopar", ["xor"] = "Korubo", ["xow"] = "Kowaki", ["xpa"] = "Pirriya", ["xpb"] = "Pyemmairre", ["xpc"] = "Pecheneg", ["xpd"] = "Paredarerme", ["xpe"] = "Liberia Kpelle", ["xpf"] = "Southeast Tasmanian", ["xpg"] = "Phrygian", ["xph"] = "Tyerrernotepanner", ["xpi"] = "Pictish", ["xpj"] = "Mpalitjanh", ["xpk"] = "Kulina", ["xpl"] = "Port Sorell", ["xpm"] = "Pumpokol", ["xpn"] = "Kapinawá", ["xpo"] = "Pochutec", ["xpp"] = "Puyo-Paekche", ["xpq"] = "Mohegan-Pequot", ["xpr"] = "พาร์เทีย", ["xps"] = "Pisidian", ["xpu"] = "Punic", ["xpv"] = "Tommeginne", ["xpw"] = "Peerapper", ["xpx"] = "Toogee", ["xpy"] = "Buyeo", ["xpz"] = "Bruny Island", ["xqa"] = "Karakhanid", ["xqt"] = "Qatabanian", ["xra"] = "Krahô", ["xrb"] = "Eastern Karaboro", ["xrd"] = "Gundungurra", ["xre"] = "Kreye", ["xrg"] = "Minang", ["xri"] = "Krikati-Timbira", ["xrm"] = "Armazic", ["xrn"] = "Arin", ["xrq"] = "Karranga", ["xrr"] = "Raetic", ["xrt"] = "Aranama-Tamique", ["xru"] = "Marriammu", ["xrw"] = "Karawa", ["xsa"] = "Sabaean", ["xsb"] = "ซัมบัล", ["xsc-pro"] = "Proto-Scythian", ["xsc-sak-pro"] = "Proto-Saka", ["xsc-sar-pro"] = "Proto-Sarmatian", ["xsc-skw-pro"] = "Proto-Saka-Wakhi", ["xsd"] = "Sidetic", ["xse"] = "Sempan", ["xsh"] = "Shamang", ["xsi"] = "Sio", ["xsj"] = "Subi", ["xsl"] = "South Slavey", ["xsm"] = "Kasem", ["xsn"] = "Sanga (Nigeria)", ["xso"] = "Solano", ["xsp"] = "Silopi", ["xsq"] = "Makhuwa-Saka", ["xsr"] = "เศรปา", ["xss"] = "Assan", ["xsu"] = "Sanumá", ["xsv"] = "ซูโดเวีย", ["xsy"] = "Saisiyat", ["xta"] = "Alcozauca Mixtec", ["xtb"] = "Chazumba Mixtec", ["xtc"] = "Kadugli", ["xtd"] = "Diuxi-Tilantongo Mixtec", ["xte"] = "Ketengban", ["xth"] = "Yitha Yitha", ["xti"] = "Sinicahua Mixtec", ["xtj"] = "San Juan Teita Mixtec", ["xtl"] = "Tijaltepec Mixtec", ["xtm"] = "Magdalena Peñasco Mixtec", ["xtn"] = "Northern Tlaxiaco Mixtec", ["xto"] = "โทแคเรียนเอ", ["xtp"] = "San Miguel Piedras Mixtec", ["xtq"] = "ตุมซุก", ["xtr"] = "Early Tripuri", ["xts"] = "Sindihui Mixtec", ["xtt"] = "Tacahua Mixtec", ["xtu"] = "Cuyamecalco Mixtec", ["xtv"] = "Thawa", ["xtw"] = "Tawandê", ["xty"] = "Yoloxochitl Mixtec", ["xua"] = "Alu Kurumba", ["xub"] = "Betta Kurumba", ["xud"] = "Umiida", ["xug"] = "คูนิงามิ", ["xuj"] = "Jennu Kurumba", ["xul"] = "Ngunawal", ["xum"] = "อุมเบรีย", ["xun"] = "Unggaranggu", ["xuo"] = "Kuo", ["xup"] = "Upper Umpqua", ["xur"] = "Urartian", ["xut"] = "Kuthant", ["xuu"] = "Khwe", ["xve"] = "Venetic", ["xvn"] = "วันดัล", ["xvo"] = "Volscian", ["xvs"] = "Vestinian", ["xwa"] = "Kwaza", ["xwc"] = "Woccon", ["xwd"] = "Wadi Wadi", ["xwe"] = "Xwela Gbe", ["xwg"] = "Kwegu", ["xwj"] = "Wajuk", ["xwk"] = "Wangkumara", ["xwl"] = "Western Xwla Gbe", ["xwo"] = "Written Oirat", ["xwr"] = "Kwerba Mamberamo", ["xww"] = "Wemba-Wemba", ["xxb"] = "Boro", ["xxk"] = "Ke'o", ["xxm"] = "Minkin", ["xxr"] = "Koropó", ["xxt"] = "Tambora", ["xya"] = "Yaygir", ["xyb"] = "Yandjibara", ["xyl"] = "Yalakalore", ["xyt"] = "Mayi-Thakurti", ["xyy"] = "Yorta Yorta", ["xzh"] = "Zhang-Zhung", ["xzm"] = "Semigallian", ["xzp"] = "Ancient Zapotec", ["yaa"] = "Yaminahua", ["yab"] = "Yuhup", ["yac"] = "Pass Valley Yali", ["yad"] = "Yagua", ["yae"] = "Pumé", ["yaf"] = "Yaka", ["yag"] = "ยามานา", ["yah"] = "Yazghulami", ["yai"] = "Yaghnobi", ["yaj"] = "Banda-Yangere", ["yak"] = "Yakima", ["yal"] = "Yalunka", ["yam"] = "Yamba", ["yan"] = "Mayangna", ["yao"] = "Yao", ["yap"] = "Yapese", ["yaq"] = "Yaqui", ["yar"] = "Yabarana", ["yas"] = "Gunu", ["yat"] = "Yambeta", ["yau"] = "Yuwana", ["yav"] = "Yangben", ["yaw"] = "Yawalapití", ["yay"] = "Agwagwune", ["yaz"] = "Lokaa", ["yba"] = "Yala", ["ybb"] = "Yemba", ["ybe"] = "Western Yugur", ["ybh"] = "Yakkha", ["ybi"] = "Yamphu", ["ybj"] = "Hasha", ["ybk"] = "Bokha", ["ybl"] = "Yukuben", ["ybm"] = "Yaben", ["ybn"] = "Yabaâna", ["ybo"] = "Yabong", ["ybx"] = "Yawiyo", ["yby"] = "Yaweyuha", ["ych"] = "Chesu", ["ycl"] = "Lolopo", ["ycn"] = "Yucuna", ["ycp"] = "Chepya", ["ycr"] = "Yilan Creole", ["yda"] = "Yanda", ["yde"] = "Yangum Dey", ["ydg"] = "Yidgha", ["ydk"] = "Yoidik", ["yea"] = "Ravula", ["yec"] = "Yenish", ["yee"] = "Yimas", ["yei"] = "Yeni", ["yej"] = "Yevanic", ["yen"] = "Yendang", ["yer"] = "Tarok", ["yes"] = "Yeskwa", ["yet"] = "Yetfa", ["yeu"] = "Yerukula", ["yev"] = "Yapunda", ["yey"] = "Yeyi", ["ygi"] = "Yiningayi", ["ygl"] = "Yangum Gel", ["ygm"] = "Yagomi", ["ygp"] = "Gepo", ["ygr"] = "Yagaria", ["ygs"] = "Yolngu Sign Language", ["ygu"] = "Yugul", ["ygw"] = "Yagwoia", ["yha"] = "Baha", ["yhl"] = "Hlepho Phowa", ["yi"] = "ยิดดิช", ["yia"] = "Yinggarda", ["yif"] = "Ache", ["yig"] = "Wusa", ["yii"] = "Yidiny", ["yij"] = "Yindjibarndi", ["yik"] = "Dongshanba Lalo", ["yil"] = "Yindjilandji", ["yim"] = "Yimchungru Naga", ["yin"] = "Yinchia", ["yip"] = "Pholo", ["yiq"] = "Micha", ["yir"] = "North Awyu", ["yis"] = "Yis", ["yit"] = "Eastern Lalu", ["yiu"] = "Lope", ["yiv"] = "Northern Nisu", ["yix"] = "Axi", ["yiy"] = "Yir-Yoront", ["yiz"] = "Azhe", ["yka"] = "ยากัน", ["ykg"] = "Northern Yukaghir", ["ykh"] = "Khamnigan Mongol", ["yki"] = "Yoke", ["ykk"] = "Yakaikeke", ["ykl"] = "Khlula", ["ykm"] = "Kap", ["ykn"] = "Kua-nsi", ["yko"] = "Yasa", ["ykr"] = "Yekora", ["ykt"] = "Kathu", ["yku"] = "Kuamasi", ["yky"] = "Yakoma", ["yla"] = "Yaul", ["ylb"] = "Yaleba", ["yle"] = "Yele", ["ylg"] = "Yelogu", ["yli"] = "Angguruk Yali", ["yll"] = "Yil", ["ylm"] = "Limi", ["yln"] = "Langnian Buyang", ["ylo"] = "Naruo", ["ylr"] = "Yalarnnga", ["ylu"] = "Aribwaung", ["yly"] = "Nyelâyu", ["ymb"] = "Yambes", ["ymc"] = "Southern Muji", ["ymd"] = "Muda", ["yme"] = "Yameo", ["ymg"] = "Yamongeri", ["ymh"] = "Mili", ["ymi"] = "Moji", ["ymk"] = "Makwe", ["yml"] = "Iamalele", ["ymm"] = "Maay", ["ymn"] = "Sunum", ["ymo"] = "Yangum Mon", ["ymp"] = "Yamap", ["ymq"] = "Qila Muji", ["ymr"] = "Malasar", ["yms"] = "Mysian", ["ymx"] = "Northern Muji", ["ymz"] = "Muzi", ["yna"] = "Aluo", ["ynb"] = "Yamben", ["ynd"] = "Yandruwandha", ["yne"] = "Lang'e", ["yng"] = "Yango", ["ynk"] = "Naukanski", ["ynl"] = "Yangulam", ["ynn"] = "Yana", ["yno"] = "ยอง", ["yns"] = "Yansi", ["ynu"] = "Yahuna", ["yo"] = "โยรูบา", ["yob"] = "Yoba", ["yog"] = "โยกัด", ["yoi"] = "โยนางูนิ", ["yok-bvy"] = "Buena Vista Yokuts", ["yok-dly"] = "Delta Yokuts", ["yok-gsy"] = "Gashowu Yokuts", ["yok-kry"] = "Kings River Yokuts", ["yok-nvy"] = "Northern Valley Yokuts", ["yok-ply"] = "Palewyami Yokuts", ["yok-svy"] = "Southern Valley Yokuts", ["yok-tky"] = "Tule-Kaweah Yokuts", ["yol"] = "ยอลอ", ["yom"] = "Yombe", ["yon"] = "Yongkom", ["yox"] = "โยรง", ["yoy"] = "Yoy", ["ypa"] = "Phala", ["ypb"] = "Labo Phowa", ["ypg"] = "Phola", ["yph"] = "Phupha", ["ypk-pro"] = "Proto-Yupik", ["ypm"] = "Phuma", ["ypn"] = "Ani Phowa", ["ypo"] = "Alo Phola", ["ypp"] = "Phupa", ["ypz"] = "Phuza", ["yra"] = "Yerakai", ["yrb"] = "Yareba", ["yre"] = "Yaouré", ["yri"] = "Yarí", ["yrk-for"] = "Forest Nenets", ["yrk-tun"] = "Tundra Nenets", ["yrl"] = "Nheengatu", ["yrn"] = "Yerong", ["yro"] = "Ỹaroamë", ["yrw"] = "Yarawata", ["yry"] = "Yarluyandi", ["ysc"] = "Jassic", ["ysd"] = "Samatao", ["ysg"] = "Sonaga", ["ysl"] = "Yugoslavian Sign Language", ["ysn"] = "Sani", ["yso"] = "Nisi", ["ysp"] = "Southern Lolopo", ["ysr"] = "Sirenik", ["yss"] = "Yessan-Mayo", ["ysy"] = "Sanie", ["yta"] = "Talu", ["ytl"] = "Toloza", ["ytp"] = "Thopho", ["ytw"] = "Yout Wam", ["yty"] = "Yatay", ["yua"] = "Yucatec Maya", ["yub"] = "Yugambal", ["yuc"] = "Yuchi", ["yue"] = "กวางตุ้ง", ["yuf"] = "Havasupai-Walapai-Yavapai", ["yug"] = "Yug", ["yui"] = "Yurutí", ["yuj"] = "Karkar-Yuri", ["yuk"] = "Yuki", ["yul"] = "Yulu", ["yum"] = "Yuma", ["yun"] = "Bena", ["yup"] = "Yukpa", ["yuq"] = "Yuqui", ["yur"] = "Yurok", ["yut"] = "Yopno", ["yuw"] = "Finisterre Yau", ["yux"] = "Southern Yukaghir", ["yuy"] = "East Yugur", ["yuz"] = "Yuracare", ["yva"] = "Yawa", ["yvt"] = "Yavitero", ["ywa"] = "Kalou", ["ywg"] = "Yinhawangka", ["ywl"] = "Western Lalu", ["ywn"] = "Yawanawa", ["ywq"] = "Nasu", ["ywr"] = "Yawuru", ["ywt"] = "Xishanba Lalo", ["ywu"] = "Wumeng", ["yww"] = "Yawarawarga", ["yxa"] = "Mayawali", ["yxg"] = "Yagara", ["yxl"] = "Yarli", ["yxm"] = "Yinwum", ["yxu"] = "Yuyu", ["yxy"] = "Yabula Yabula", ["yyu"] = "Torricelli Yau", ["yyz"] = "Ayizi", ["yzg"] = "E'ma Buyang", ["yzk"] = "Zokhuo", ["za"] = "จ้วง", ["zaa"] = "Sierra de Juárez Zapotec", ["zab"] = "San Juan Guelavía Zapotec", ["zac"] = "Ocotlán Zapotec", ["zad"] = "Cajonos Zapotec", ["zae"] = "Yareni Zapotec", ["zaf"] = "Ayoquesco Zapotec", ["zag"] = "Zaghawa", ["zah"] = "Zangwal", ["zai"] = "Isthmus Zapotec", ["zaj"] = "Zaramo", ["zak"] = "Zanaki", ["zal"] = "Zauzou", ["zam"] = "Central Mahuatlán Zapotec", ["zao"] = "Ozolotepec Zapotec", ["zap"] = "Zapotec", ["zaq"] = "Aloápam Zapotec", ["zar"] = "Rincón Zapotec", ["zas"] = "Santo Domingo Albarradas Zapotec", ["zat"] = "Tabaa Zapotec", ["zau"] = "ซันสการ์", ["zav"] = "Yatzachi Zapotec", ["zaw"] = "Mitla Zapotec", ["zax"] = "Xadani Zapotec", ["zay"] = "Zayse-Zergulla", ["zaz"] = "Zari", ["zbt"] = "Batui", ["zca"] = "Coatecas Altas Zapotec", ["zdj"] = "Ngazidja Comorian", ["zea"] = "Zealandic", ["zeg"] = "Zenag", ["zen"] = "Zenaga", ["zga"] = "Kinga", ["zgh"] = "Moroccan Amazigh", ["zgr"] = "Magori", ["zh"] = "จีน", ["zhb"] = "Zhaba", ["zhi"] = "Zhire", ["zhn"] = "จ้วงแบบหนง", ["zhw"] = "Zhoa", ["zhx-min-pro"] = "หมิ่นดั้งเดิม", ["zhx-sht"] = "Shaozhou Tuhua", ["zhx-sic"] = "เสฉวน", ["zhx-tai"] = "ห่อยซัน", ["zia"] = "Zia", ["zib"] = "Zimbabwe Sign Language", ["zik"] = "Zimakani", ["zil"] = "Zialo", ["zim"] = "Mesme", ["zin"] = "Zinza", ["zir"] = "Ziriya", ["ziw"] = "Zigula", ["ziz"] = "Zizilivakan", ["zka"] = "Kaimbulawa", ["zkb"] = "Koibal", ["zkd"] = "กะดู", ["zkg"] = "Goguryeo", ["zkh"] = "Khorezmian Turkic", ["zkk"] = "Karankawa", ["zko"] = "Kott", ["zkp"] = "São Paulo Kaingáng", ["zkr"] = "Zakhring", ["zkt"] = "คีตัน", ["zku"] = "Kaurna", ["zkv"] = "Krevinian", ["zkz"] = "Khazar", ["zle-ono"] = "Old Novgorodian", ["zle-ort"] = "รูซินเก่า", ["zls-chs"] = "Church Slavonic", ["zlw-ocs"] = "เช็กเก่า", ["zlw-opl"] = "โปแลนด์เก่า", ["zlw-osk"] = "สโลวักเก่า", ["zlw-slv"] = "สโลวินช์", ["zma"] = "Manda (Australia)", ["zmb"] = "Zimba", ["zmc"] = "Margany", ["zmd"] = "Maridan", ["zme"] = "Mangerr", ["zmf"] = "Mfinu", ["zmg"] = "Marti Ke", ["zmh"] = "Makolkol", ["zmi"] = "Negeri Sembilan Malay", ["zmj"] = "Maridjabin", ["zmk"] = "Mandandanyi", ["zml"] = "Madngele", ["zmm"] = "Marimanindji", ["zmn"] = "Mbangwe", ["zmo"] = "Molo", ["zmp"] = "Mbuun", ["zmq"] = "Mituku", ["zmr"] = "Maranungku", ["zms"] = "Mbesa", ["zmt"] = "Maringarr", ["zmu"] = "Muruwari", ["zmv"] = "Mbariman-Gudhinma", ["zmw"] = "Mbo (Congo)", ["zmx"] = "Bomitaba", ["zmy"] = "Mariyedi", ["zmz"] = "Mbandja", ["zna"] = "Zan Gula", ["zne"] = "Zande", ["zng"] = "Mang", ["znk"] = "Manangkari", ["zns"] = "Mangas", ["zoc"] = "Copainalá Zoque", ["zoh"] = "Chimalapa Zoque", ["zom"] = "Zou", ["zoo"] = "Asunción Mixtepec Zapotec", ["zoq"] = "Tabasco Zoque", ["zor"] = "Rayón Zoque", ["zos"] = "Francisco León Zoque", ["zpa"] = "Lachiguiri Zapotec", ["zpb"] = "Yautepec Zapotec", ["zpc"] = "Choapan Zapotec", ["zpd"] = "Southeastern Ixtlán Zapotec", ["zpe"] = "Petapa Zapotec", ["zpf"] = "San Pedro Quiatoni Zapotec", ["zpg"] = "Guevea de Humboldt Zapotec", ["zph"] = "Totomachapan Zapotec", ["zpi"] = "Santa María Quiegolani Zapotec", ["zpj"] = "Quiavicuzas Zapotec", ["zpk"] = "Tlacolulita Zapotec", ["zpl"] = "Lachixío Zapotec", ["zpm"] = "Mixtepec Zapotec", ["zpn"] = "Santa Inés Yatzechi Zapotec", ["zpo"] = "Amatlán Zapotec", ["zpp"] = "El Alto Zapotec", ["zpq"] = "Zoogocho Zapotec", ["zpr"] = "Santiago Xanica Zapotec", ["zps"] = "Coatlán Zapotec", ["zpt"] = "San Vicente Coatlán Zapotec", ["zpu"] = "Yalálag Zapotec", ["zpv"] = "Chichicapan Zapotec", ["zpw"] = "Zaniza Zapotec", ["zpx"] = "San Baltazar Loxicha Zapotec", ["zpy"] = "Mazaltepec Zapotec", ["zpz"] = "Texmelucan Zapotec", ["zra"] = "Gaya", ["zrg"] = "Mirgan", ["zrn"] = "Zirenkel", ["zro"] = "Záparo", ["zrs"] = "Mairasi", ["zsa"] = "Sarasira", ["zsk"] = "Kaskean", ["zsl"] = "Zambian Sign Language", ["zsr"] = "Southern Rincon Zapotec", ["zsu"] = "Sukurum", ["zte"] = "Elotepec Zapotec", ["ztg"] = "Xanaguía Zapotec", ["ztl"] = "Lapaguía-Guivini Zapotec", ["ztm"] = "San Agustín Mixtepec Zapotec", ["ztn"] = "Santa Catarina Albarradas Zapotec", ["ztp"] = "Loxicha Zapotec", ["ztq"] = "Quioquitani-Quierí Zapotec", ["zts"] = "Tilquiapan Zapotec", ["ztt"] = "Tejalapan Zapotec", ["ztu"] = "San Pablo Güilá Zapotec", ["ztx"] = "Zaachila Zapotec", ["zty"] = "Yatee Zapotec", ["zu"] = "ซูลู", ["zua"] = "Zeem", ["zuh"] = "Tokano", ["zum"] = "Kumzari", ["zun"] = "ซูนี", ["zuy"] = "Zumaya", ["zwa"] = "Zay", ["zyp"] = "Zyphe", ["zza"] = "ซาซา", ["zzj"] = "จ้วงแบบจั่วเจียง", } brpjdnbjkpd0zn6u8xkmu85vqb4efdi 5723247 5723242 2026-05-20T03:29:12Z OctraBot 3198 5723247 Scribunto text/plain return { ["aa"] = "อาฟาร์", ["aaa"] = "Ghotuo", ["aab"] = "Alumu-Tesu", ["aac"] = "Ari", ["aad"] = "Amal", ["aaf"] = "Aranadan", ["aag"] = "Ambrak", ["aah"] = "Abu'", ["aai"] = "Arifama-Miniafia", ["aak"] = "Ankave", ["aal"] = "Afade", ["aan"] = "Anambé", ["aap"] = "Arára (Pará)", ["aaq"] = "Penobscot", ["aas"] = "Aasax", ["aau"] = "Abau", ["aav-khs-pro"] = "คาเซียนดั้งเดิม", ["aav-nic-pro"] = "นิโคบารีสดั้งเดิม", ["aav-pkl-pro"] = "ปนัร-คาซี-ลึงงัมดั้งเดิม", ["aav-pro"] = "ออสโตรเอเชียติกดั้งเดิม", ["aaw"] = "Solong", ["aax"] = "Mandobo Atas", ["aaz"] = "Amarasi", ["ab"] = "อับคาเซีย", ["aba"] = "อาเบ", ["abb"] = "Bankon", ["abc"] = "Ambala Ayta", ["abd"] = "Camarines Norte Agta", ["abe"] = "Abenaki", ["abf"] = "Abai Sungai", ["abg"] = "Abaga", ["abh"] = "อาหรับแบบทาจิกิสถาน", ["abi"] = "Abidji", ["abj"] = "Aka-Bea", ["abl"] = "Abung", ["abm"] = "Abanyom", ["abn"] = "Abua", ["abo"] = "Abon", ["abp"] = "Abenlen Ayta", ["abq"] = "อาบาซา", ["abs"] = "Ambonese Malay", ["abt"] = "Ambulas", ["abu"] = "Abure", ["abv"] = "อาหรับแบบบาห์เรน", ["abw"] = "Pal", ["abx"] = "Inabaknon", ["aby"] = "Aneme Wake", ["abz"] = "Abui", ["aca"] = "Achagua", ["acb"] = "Áncá", ["acd"] = "Gikyode", ["ace"] = "อาเจะฮ์", ["ach"] = "Acholi", ["aci"] = "Aka-Cari", ["ack"] = "Aka-Kora", ["acl"] = "Akar-Bale", ["acm"] = "อาหรับแบบอิรัก", ["acn"] = "Achang", ["acp"] = "Eastern Acipa", ["acr"] = "Achi", ["acs"] = "Acroá", ["acu"] = "Achuar", ["acv"] = "Achumawi", ["acw"] = "อาหรับแบบฮิญาซ", ["acx"] = "อาหรับแบบโอมาน", ["acy"] = "อาหรับแบบไซปรัส", ["acz"] = "Acheron", ["ada"] = "Adangme", ["adb"] = "Atauran", ["add"] = "Dzodinka", ["ade"] = "Adele", ["adf"] = "Dhofari Arabic", ["adg"] = "Andegerebinha", ["adh"] = "Adhola", ["adi"] = "Adi", ["adj"] = "Adioukrou", ["adl"] = "Galo", ["adn"] = "Adang", ["ado"] = "Abu", ["adp"] = "Adap", ["adq"] = "Adangbe", ["adr"] = "Adonara", ["ads"] = "Adamorobe Sign Language", ["adt"] = "Adnyamathanha", ["adu"] = "Aduge", ["adw"] = "Amondawa", ["ady"] = "อะดีเกยา", ["adz"] = "Adzera", ["ae"] = "อเวสตะ", ["aea"] = "Areba", ["aeb"] = "อาหรับแบบตูนิเซีย", ["aed"] = "Argentine Sign Language", ["aee"] = "Northeast Pashayi", ["aek"] = "Haeke", ["ael"] = "Ambele", ["aem"] = "Arem", ["aen"] = "Armenian Sign Language", ["aeq"] = "Aer", ["aer"] = "Eastern Arrernte", ["aes"] = "Alsea", ["aeu"] = "Akeu", ["aew"] = "Ambakich", ["aey"] = "Amele", ["aez"] = "Aeka", ["af"] = "อาฟรีกานส์", ["afa-pro"] = "แอฟโฟรเอเชียติกดั้งเดิม", ["afb"] = "Gulf Arabic", ["afd"] = "Andai", ["afe"] = "Putukwam", ["afg"] = "Afghan Sign Language", ["afh"] = "Afrihili", ["afi"] = "Akrukay", ["afk"] = "Nanubae", ["afn"] = "Defaka", ["afo"] = "Eloyi", ["afp"] = "Tapei", ["afs"] = "Afro-Seminole Creole", ["aft"] = "Afitti", ["afu"] = "Awutu", ["afz"] = "Obokuitai", ["aga"] = "Aguano", ["agb"] = "Legbo", ["agc"] = "Agatu", ["agd"] = "Agarabi", ["age"] = "Angal", ["agf"] = "Arguni", ["agg"] = "Angor", ["agh"] = "Ngelima", ["agi"] = "Agariya", ["agj"] = "Argobba", ["agk"] = "Isarog Agta", ["agl"] = "Fembe", ["agm"] = "Angaataha", ["agn"] = "อากูตายา", ["ago"] = "Tainae", ["agq"] = "Aghem", ["agr"] = "Aguaruna", ["ags"] = "Esimbi", ["agt"] = "Central Cagayan Agta", ["agu"] = "Aguacateca", ["agv"] = "Remontado Agta", ["agw"] = "Kahua", ["agx"] = "Aghul", ["agy"] = "Southern Alta", ["agz"] = "Mount Iriga Agta", ["aha"] = "Ahanta", ["ahb"] = "Axamb", ["ahg"] = "Qimant", ["ahh"] = "Aghu", ["ahi"] = "Tiagba", ["ahk"] = "อาข่า", ["ahl"] = "Igo", ["ahm"] = "Mobu", ["ahn"] = "Àhàn", ["aho"] = "อาหม", ["ahp"] = "Apro", ["ahr"] = "Ahirani", ["ahs"] = "Ashe", ["aht"] = "Ahtna", ["aia"] = "Arosi", ["aib"] = "Äynu", ["aic"] = "Ainbai", ["aid"] = "Alngith", ["aie"] = "Amara", ["aif"] = "Agi", ["aig"] = "Antigua and Barbuda Creole English", ["aih"] = "Ai-Cham", ["aii"] = "อารามายาใหม่แบบอัสซีเรีย", ["aij"] = "Lishanid Noshan", ["aik"] = "Ake", ["ail"] = "Aimele", ["aim"] = "Aimol", ["ain"] = "ไอนุ", ["aio"] = "อ่ายตน", ["aip"] = "Burumakok", ["air"] = "Airoran", ["ait"] = "Arikem", ["aiw"] = "Aari", ["aix"] = "Aighon", ["aiy"] = "Ali", ["aja"] = "Aja", ["ajg"] = "Adja", ["aji"] = "Ajië", ["ajn"] = "Andajin", ["ajp"] = "อาหรับแบบลิแวนต์ใต้", ["ajw"] = "Ajawa", ["ajz"] = "Amri Karbi", ["ak"] = "อาคัน", ["akb"] = "Angkola Batak", ["akc"] = "Mpur", ["akd"] = "Ukpet-Ehom", ["ake"] = "Akawaio", ["akf"] = "Akpa", ["akg"] = "Anakalangu", ["akh"] = "Angal Heneng", ["aki"] = "Aiome", ["akj"] = "Jeru", ["akk"] = "แอกแคด", ["akl"] = "อักลัน", ["akm"] = "Aka-Bo", ["ako"] = "Akurio", ["akp"] = "Siwu", ["akq"] = "Ak", ["akr"] = "Araki", ["aks"] = "Akaselem", ["akt"] = "Akolet", ["aku"] = "Akum", ["akv"] = "Akhvakh", ["akw"] = "Akwa", ["akx"] = "Aka-Kede", ["aky"] = "Aka-Kol", ["akz"] = "แอละแบมา", ["ala"] = "Alago", ["alc"] = "Kawésqar", ["ald"] = "Alladian", ["ale"] = "Aleut", ["alf"] = "Alege", ["alg-aga"] = "Agawam", ["alg-pro"] = "แอลกองเคียนดั้งเดิม", ["alh"] = "Alawa", ["ali"] = "Amaimon", ["alj"] = "Alangan", ["alk"] = "Alak", ["all"] = "Allar", ["alm"] = "Amblong", ["alo"] = "Larike-Wakasihu", ["alp"] = "Alune", ["alq"] = "Algonquin", ["alr"] = "Alutor", ["alt"] = "อัลไตใต้", ["alu"] = "'Are'are", ["alv-ama"] = "Amasi", ["alv-bgu"] = "Baïnounk Gubëeher", ["alv-bua-pro"] = "Proto-Bua", ["alv-cng-pro"] = "Proto-Cangin", ["alv-edk-pro"] = "Proto-Edekiri", ["alv-edo-pro"] = "Proto-Edoid", ["alv-fli-pro"] = "Proto-Fali", ["alv-gbe-pro"] = "กเบดั้งเดิม", ["alv-gng-pro"] = "Proto-Guang", ["alv-gtm-pro"] = "Proto-Central Togo", ["alv-gwa"] = "Gwara", ["alv-hei-pro"] = "Proto-Heiban", ["alv-ido-pro"] = "Proto-Idomoid", ["alv-igb-pro"] = "Proto-Igboid", ["alv-kwa-pro"] = "Proto-Kwa", ["alv-mum-pro"] = "Proto-Mumuye", ["alv-nup-pro"] = "Proto-Nupoid", ["alv-pro"] = "แอตแลนติก-คองโกดั้งเดิม", ["alv-von-pro"] = "วอลตา-ไนเจอร์ดั้งเดิม", ["alv-yor-pro"] = "โยรูบาดั้งเดิม", ["alv-yrd-pro"] = "โยรูบอยด์ดั้งเดิม", ["alw"] = "Alaba", ["alx"] = "Amol", ["aly"] = "Alyawarr", ["alz"] = "Alur", ["am"] = "อัมฮารา", ["ama"] = "Amanayé", ["amb"] = "Ambo", ["amc"] = "Amahuaca", ["ame"] = "Yanesha'", ["amf"] = "Hamer-Banna", ["amg"] = "Amurdag", ["ami"] = "Amis", ["amj"] = "Amdang", ["amk"] = "Ambai", ["aml"] = "War-Jaintia", ["amm"] = "Ama", ["amn"] = "Amanab", ["amo"] = "Amo", ["amp"] = "Alamblak", ["amq"] = "Amahai", ["amr"] = "Amarakaeri", ["ams"] = "อามามิโอชิมะใต้", ["amt"] = "Amto", ["amu"] = "Guerrero Amuzgo", ["amv"] = "Ambelau", ["amw"] = "Western Neo-Aramaic", ["amx"] = "Anmatyerre", ["amy"] = "Ami", ["amz"] = "Atampaya", ["an"] = "อารากอน", ["ana"] = "Andaqui", ["anb"] = "Andoa", ["anc"] = "Ngas", ["and"] = "Ansus", ["ane"] = "คังรังชือ", ["anf"] = "Animere", ["ang"] = "อังกฤษเก่า", ["anh"] = "Nend", ["ani"] = "Andi", ["anj"] = "Anor", ["ank"] = "Goemai", ["anl"] = "Anu", ["anm"] = "Anāl", ["ann"] = "Obolo", ["ano"] = "Andoque", ["anp"] = "Angika", ["anq"] = "Jarawa", ["anr"] = "Andh", ["ans"] = "Anserma", ["ant"] = "Antakarinya", ["anu"] = "Anuak", ["anv"] = "Denya", ["anw"] = "Anaang", ["anx"] = "Andra-Hus", ["any"] = "Anyi", ["anz"] = "Anem", ["aoa"] = "Angolar", ["aob"] = "Abom", ["aoc"] = "Pemon", ["aod"] = "Andarum", ["aoe"] = "Angal Enen", ["aof"] = "Bragat", ["aog"] = "Angoram", ["aoi"] = "Anindilyakwa", ["aoj"] = "Mufian", ["aok"] = "Arhö", ["aol"] = "Alorese", ["aom"] = "Ömie", ["aon"] = "Bumbita Arapesh", ["aor"] = "Aore", ["aos"] = "Taikat", ["aot"] = "อะตง", ["aou"] = "A'ou", ["aox"] = "Atorada", ["aoz"] = "Uab Meto", ["apa-pro"] = "Proto-Apachean", ["apb"] = "Sa'a", ["apc"] = "North Levantine Arabic", ["apd"] = "อาหรับแบบซูดาน", ["ape"] = "Bukiyip", ["apf"] = "Pahanan Agta", ["apg"] = "Ampanang", ["aph"] = "Athpare", ["api"] = "Apiaká", ["apj"] = "Jicarilla", ["apk"] = "Plains Apache", ["apl"] = "Lipan", ["apm"] = "Chiricahua", ["apn"] = "Apinayé", ["apo"] = "Ambul", ["app"] = "Apma", ["apq"] = "A-Pucikwar", ["apr"] = "Arop-Lokep", ["aps"] = "Arop-Sissano", ["apt"] = "Apatani", ["apu"] = "Apurinã", ["apv"] = "Alapmunte", ["apw"] = "อะแพชีตะวันตก", ["apx"] = "Aputai", ["apy"] = "Apalaí", ["apz"] = "Safeyoka", ["aqc"] = "Archi", ["aqd"] = "Ampari Dogon", ["aqg"] = "Arigidi", ["aql-pro"] = "แอลจิกดั้งเดิม", ["aqm"] = "Atohwaim", ["aqn"] = "Northern Alta", ["aqp"] = "Atakapa", ["aqr"] = "Arhâ", ["aqt"] = "Angaité", ["aqz"] = "Akuntsu", ["ar"] = "อาหรับ", ["arc"] = "อารามายา", ["ard"] = "Arabana", ["are"] = "Western Arrernte", ["arh"] = "Arhuaco", ["ari"] = "Arikara", ["arj"] = "Arapaso", ["ark"] = "Arikapú", ["arl"] = "Arabela", ["arn"] = "Mapudungun", ["aro"] = "Araona", ["arp"] = "Arapaho", ["arq"] = "อาหรับแบบแอลจีเรีย", ["arr"] = "Arara-Karo", ["ars"] = "Najdi Arabic", ["art-adu"] = "Adûni", ["art-bel"] = "Belter Creole", ["art-blk"] = "Bolak", ["art-bsp"] = "แบล็กสปีช", ["art-com"] = "Communicationssprache", ["art-dtk"] = "Dothraki", ["art-elo"] = "Eloi", ["art-gld"] = "Goa'uld", ["art-lap"] = "Lapine", ["art-man"] = "Mandalorian", ["art-mun"] = "Mundolinco", ["art-nav"] = "Naʼvi", ["art-vlh"] = "High Valyrian", ["aru"] = "Arua", ["arv"] = "Arbore", ["arw"] = "โลโกโน", ["arx"] = "Aruá", ["ary"] = "อาหรับแบบโมร็อกโก", ["arz"] = "อาหรับแบบอียิปต์", ["as"] = "อัสสัม", ["asa"] = "Pare", ["asb"] = "Assiniboine", ["asc"] = "Casuarina Coast Asmat", ["ase"] = "มืออเมริกัน", ["asf"] = "Auslan", ["asg"] = "Cishingini", ["ash"] = "Abishira", ["asi"] = "Buruwai", ["asj"] = "Nsari", ["ask"] = "Ashkun", ["asl"] = "Asilulu", ["asn"] = "Xingú Asuriní", ["aso"] = "Dano", ["asp"] = "Algerian Sign Language", ["asq"] = "Austrian Sign Language", ["asr"] = "Asuri", ["ass"] = "Ipulo", ["ast"] = "อัสตูเรียส", ["asu"] = "Tocantins Asurini", ["asv"] = "Asoa", ["asw"] = "Australian Aboriginal Sign Language", ["asx"] = "Muratayak", ["asy"] = "Yaosakor Asmat", ["asz"] = "As", ["ata"] = "Pele-Ata", ["atb"] = "Zaiwa", ["atc"] = "Atsahuaca", ["atd"] = "Ata Manobo", ["ate"] = "Atemble", ["atg"] = "Okpela", ["ath-nic"] = "Nicola", ["ath-pro"] = "Proto-Athabaskan", ["ati"] = "Attié", ["atj"] = "Atikamekw", ["atk"] = "Ati", ["atl"] = "Mount Iraya Agta", ["atm"] = "Ata", ["ato"] = "Atong (Cameroon)", ["atp"] = "Pudtol Atta", ["atq"] = "Aralle-Tabulahan", ["atr"] = "Waimiri-Atroari", ["ats"] = "Gros Ventre", ["att"] = "Pamplona Atta", ["atu"] = "Reel", ["atv"] = "อัลไตเหนือ", ["atw"] = "Atsugewi", ["atx"] = "Arutani", ["aty"] = "อาเนตยูม", ["atz"] = "Arta", ["aua"] = "Asumboa", ["aub"] = "Alugu", ["auc"] = "Huaorani", ["aud"] = "Anuta", ["auf-pro"] = "Proto-Arawa", ["aug"] = "Aguna", ["auh"] = "Aushi", ["aui"] = "Anuki", ["auj"] = "Awjila", ["auk"] = "Heyo", ["aul"] = "Aulua", ["aum"] = "Asu", ["aun"] = "Molmo One", ["auo"] = "Auyokawa", ["aup"] = "Makayam", ["auq"] = "Anus", ["aur"] = "Aruek", ["aus-alu"] = "Alungul", ["aus-and"] = "Andjingith", ["aus-ang"] = "Angkula", ["aus-arn-pro"] = "Proto-Arnhem", ["aus-bra"] = "Barranbinya", ["aus-brm"] = "Barunggam", ["aus-cww-pro"] = "Proto-Central New South Wales", ["aus-dal-pro"] = "Proto-Daly", ["aus-guw"] = "Guwar", ["aus-lsw"] = "Little Swanport", ["aus-mbi"] = "Mbiywom", ["aus-ngk"] = "Ngkoth", ["aus-nyu-pro"] = "Proto-Nyulnyulan", ["aus-pam-pro"] = "Proto-Pama-Nyungan", ["aus-tul"] = "Tulua", ["aus-uwi"] = "Uwinymil", ["aus-wdj-pro"] = "Proto-Iwaidjan", ["aus-won"] = "Wong-gie", ["aus-wul"] = "Wulguru", ["aus-ynk"] = "Yangkaal", ["aut"] = "Austral", ["auu"] = "Auye", ["auw"] = "Awyi", ["aux"] = "Aurá", ["auy"] = "Auyana", ["auz"] = "อาหรับแบบอุซเบกิสถาน", ["av"] = "อะวาร์", ["avb"] = "Avau", ["avd"] = "Alviri-Vidari", ["avi"] = "Avikam", ["avk"] = "โคทาวา", ["avm"] = "Angkamuthi", ["avn"] = "Avatime", ["avo"] = "Agavotaguerra", ["avs"] = "Aushiri", ["avt"] = "Au", ["avu"] = "Avokaya", ["avv"] = "Avá-Canoeiro", ["awa"] = "อวัธ", ["awb"] = "Awa (New Guinea)", ["awc"] = "Cicipu", ["awd-ama"] = "Amarizana", ["awd-amc-pro"] = "Proto-Amuesha-Chamicuro", ["awd-ana"] = "Anauyá", ["awd-apo"] = "Apolista", ["awd-cab"] = "Cabre", ["awd-gnu"] = "Guinau", ["awd-kar"] = "Cariay", ["awd-kaw"] = "Kawishana", ["awd-kmp-pro"] = "Proto-Kampa", ["awd-kus"] = "Kustenau", ["awd-man"] = "Manao", ["awd-mar"] = "Marawan", ["awd-mpr"] = "Maipure", ["awd-mrt"] = "Mariaté", ["awd-nwk-pro"] = "Proto-Nawiki", ["awd-pai"] = "Paikoneka", ["awd-pas"] = "Pasé", ["awd-pro"] = "Proto-Arawak", ["awd-prw-pro"] = "Proto-Paresi-Waura", ["awd-she"] = "Shebayo", ["awd-taa-pro"] = "Proto-Ta-Arawak", ["awd-wai"] = "Wainumá", ["awd-yum"] = "Yumana", ["awe"] = "Awetí", ["awg"] = "Anguthimri", ["awh"] = "Awbono", ["awi"] = "Aekyom", ["awk"] = "Awabakal", ["awm"] = "Arawum", ["awn"] = "Awngi", ["awo"] = "Awak", ["awr"] = "Awera", ["aws"] = "South Awyu", ["awt"] = "Araweté", ["awu"] = "Central Awyu", ["awv"] = "Jair Awyu", ["aww"] = "Awun", ["awx"] = "Awara", ["awy"] = "Edera Awyu", ["axb"] = "Abipón", ["axe"] = "Ayerrerenge", ["axg"] = "Arára (Mato Grosso)", ["axk"] = "Aka (Central Africa)", ["axl"] = "Lower Southern Aranda", ["axm"] = "อาร์มีเนียกลาง", ["axx"] = "Xârâgurè", ["ay"] = "ไอย์มารา", ["aya"] = "Awar", ["ayb"] = "Ayizo", ["ayd"] = "Ayabadhu", ["aye"] = "Ayere", ["ayg"] = "Nyanga (Togo)", ["ayi"] = "Leyigha", ["ayk"] = "Akuku", ["ayl"] = "อาหรับแบบลิเบีย", ["ayn"] = "อาหรับแบบเยเมน", ["ayo"] = "Ayoreo", ["ayp"] = "อาหรับแบบเมโสโปเตเมียเหนือ", ["ayq"] = "Ayi", ["ays"] = "Sorsogon Ayta", ["ayt"] = "Bataan Ayta", ["ayu"] = "Ayu", ["ayy"] = "Tayabas Ayta", ["ayz"] = "Maybrat", ["az"] = "อาเซอร์ไบจาน", ["aza"] = "Azha", ["azc-caz"] = "Cazcan", ["azc-cup-pro"] = "Proto-Cupan", ["azc-ktn"] = "Kitanemuk", ["azc-nah-pro"] = "นาวันดั้งเดิม", ["azc-num-pro"] = "Proto-Numic", ["azc-pro"] = "ยูโต-แอซเทกันดั้งเดิม", ["azc-tak-pro"] = "Proto-Takic", ["azc-tat"] = "Tataviam", ["azd"] = "Eastern Durango Nahuatl", ["azg"] = "San Pedro Amuzgos Amuzgo", ["azm"] = "Ipalapa Amuzgo", ["azn"] = "Western Durango Nahuatl", ["azo"] = "Awing", ["azt"] = "Faire Atta", ["azz"] = "Highland Puebla Nahuatl", ["ba"] = "แบชเคียร์", ["baa"] = "Babatana", ["bab"] = "Bainouk-Gunyuño", ["bac"] = "Baduy", ["bae"] = "Baré", ["baf"] = "Nubaca", ["bag"] = "Tuki", ["bah"] = "Bahamian Creole", ["baj"] = "Barakai", ["bal"] = "บาโลจ", ["ban"] = "บาหลี", ["bao"] = "Waimaha", ["bap"] = "Bantawa", ["bar"] = "บาวาเรีย", ["bas"] = "Basaa", ["bau"] = "Badanchi", ["bav"] = "Babungo", ["baw"] = "Bambili-Bambui", ["bax"] = "Bamum", ["bay"] = "Batuley", ["bba"] = "Baatonum", ["bbb"] = "Barai", ["bbc"] = "Toba Batak", ["bbd"] = "Bau", ["bbe"] = "Bangba", ["bbf"] = "Baibai", ["bbg"] = "Barama", ["bbh"] = "Bugan", ["bbi"] = "Barombi", ["bbj"] = "Ghomala'", ["bbk"] = "Babanki", ["bbl"] = "บัตส์", ["bbm"] = "Babango", ["bbn"] = "Uneapa", ["bbo"] = "Konabéré", ["bbp"] = "West Central Banda", ["bbq"] = "Bamali", ["bbr"] = "Girawa", ["bbs"] = "Bakpinka", ["bbt"] = "Mburku", ["bbu"] = "Bakulung", ["bbv"] = "Karnai", ["bbw"] = "Baba", ["bbx"] = "Bubia", ["bby"] = "Befang", ["bca"] = "Central Bai", ["bcb"] = "Bainouk-Samik", ["bcd"] = "North Babar", ["bce"] = "Bamenyam", ["bcf"] = "Bamu", ["bcg"] = "Baga Pokur", ["bch"] = "Bariai", ["bci"] = "Baoule", ["bcj"] = "Bardi", ["bck"] = "Bunaba", ["bcl"] = "บีโคลตอนกลาง", ["bcm"] = "Banoni", ["bcn"] = "Bibaali", ["bco"] = "Kaluli", ["bcp"] = "Bali", ["bcq"] = "Bench", ["bcr"] = "Babine-Witsuwit'en", ["bcs"] = "Kohumono", ["bct"] = "Bendi", ["bcu"] = "Biliau", ["bcv"] = "Shoo-Minda-Nye", ["bcw"] = "Bana", ["bcy"] = "Bacama", ["bcz"] = "Bainouk-Gunyaamolo", ["bda"] = "Bayot", ["bdb"] = "Basap", ["bdc"] = "Emberá-Baudó", ["bdd"] = "Bunama", ["bde"] = "Bade", ["bdf"] = "Biage", ["bdg"] = "Bonggi", ["bdh"] = "Tara Baka", ["bdi"] = "Burun", ["bdj"] = "Bai (South Sudan)", ["bdk"] = "Budukh", ["bdl"] = "บาเจาแบบอินโดนีเซีย", ["bdm"] = "Buduma", ["bdn"] = "Baldemu", ["bdo"] = "Morom", ["bdp"] = "Bende", ["bdq"] = "บะห์นัร", ["bdr"] = "บาเจาแบบเวสต์โคสต์", ["bds"] = "Burunge", ["bdt"] = "Bokoto", ["bdu"] = "Oroko", ["bdv"] = "Bodo Parja", ["bdw"] = "Baham", ["bdx"] = "Budong-Budong", ["bdy"] = "Bandjalang", ["bdz"] = "Badeshi", ["be"] = "เบลารุส", ["bea"] = "Beaver", ["beb"] = "Bebele", ["bec"] = "Iceve-Maci", ["bed"] = "Bedoanas", ["bee"] = "Byangsi", ["bef"] = "Benabena", ["beg"] = "Belait", ["beh"] = "Biali", ["bei"] = "Bekati'", ["bej"] = "Beja", ["bek"] = "Bebeli", ["bem"] = "Bemba", ["beo"] = "Beami", ["bep"] = "Besoa", ["beq"] = "Beembe", ["ber-fog"] = "Fogaha", ["ber-pro"] = "เบอร์เบอร์ดั้งเดิม", ["ber-zuw"] = "Zuwara", ["bes"] = "Besme", ["bet"] = "Guiberoua Bété", ["beu"] = "บลาการ์", ["bev"] = "Daloa Bété", ["bew"] = "เบอตาวี", ["bex"] = "Jur Modo", ["bey"] = "Akuwagel", ["bez"] = "Kibena", ["bfa"] = "Bari", ["bfb"] = "Pauri Bareli", ["bfc"] = "Panyi Bai", ["bfd"] = "Bafut", ["bfe"] = "Betaf", ["bff"] = "Bofi", ["bfg"] = "Busang Kayan", ["bfh"] = "Blafe", ["bfi"] = "British Sign Language", ["bfj"] = "Bafanji", ["bfk"] = "Ban Khor Sign Language", ["bfl"] = "Banda-Ndélé", ["bfm"] = "Mmen", ["bfn"] = "Bunak", ["bfo"] = "Malba Birifor", ["bfp"] = "Beba", ["bfq"] = "พทคะ", ["bfr"] = "Bazigar", ["bfs"] = "Southern Bai", ["bft"] = "บัลติ", ["bfu"] = "Gahri", ["bfw"] = "Bondo", ["bfx"] = "Bantayanon", ["bfy"] = "Bagheli", ["bfz"] = "Mahasu Pahari", ["bg"] = "บัลแกเรีย", ["bga"] = "Gwamhi-Wuri", ["bgb"] = "Bobongko", ["bgc"] = "Haryanvi", ["bgd"] = "Rathwi Bareli", ["bge"] = "Bauria", ["bgf"] = "Bangandu", ["bgg"] = "Bugun", ["bgi"] = "Giangan", ["bgj"] = "Bangolan", ["bgk"] = "Bit", ["bgl"] = "Bo", ["bgo"] = "Baga Koga", ["bgq"] = "Bagri", ["bgr"] = "Bawm Chin", ["bgs"] = "Tagabawa", ["bgt"] = "Bughotu", ["bgu"] = "Mbongno", ["bgv"] = "Warkay-Bipim", ["bgw"] = "Bhatri", ["bgx"] = "Balkan Gagauz Turkish", ["bgy"] = "Benggoi", ["bgz"] = "Banggai", ["bh"] = "พิหาร", ["bha"] = "Bharia", ["bhb"] = "Bhili", ["bhc"] = "Biga", ["bhd"] = "Bhadrawahi", ["bhe"] = "Bhaya", ["bhf"] = "Odiai", ["bhg"] = "Binandere", ["bhh"] = "Bukhari", ["bhi"] = "Bhilali", ["bhj"] = "Bahing", ["bhl"] = "Bimin", ["bhm"] = "Bathari", ["bhn"] = "Bohtan Neo-Aramaic", ["bho"] = "โภชปุระ", ["bhp"] = "Bima", ["bhq"] = "Tukang Besi South", ["bhs"] = "Buwal", ["bht"] = "Bhattiyali", ["bhu"] = "Bhunjia", ["bhv"] = "Bahau", ["bhw"] = "Biak", ["bhx"] = "Bhalay", ["bhy"] = "Bhele", ["bhz"] = "Bada", ["bi"] = "บิสลามา", ["bia"] = "Badimaya", ["bib"] = "Bissa", ["bic"] = "Bikaru", ["bid"] = "Bidiyo", ["bie"] = "Bepour", ["bif"] = "Biafada", ["big"] = "Biangai", ["bij"] = "Kwanka", ["bil"] = "Bile", ["bim"] = "Bimoba", ["bin"] = "Edo", ["bio"] = "Nai", ["bip"] = "Bila", ["biq"] = "Bipi", ["bir"] = "Bisorio", ["bit"] = "Berinomo", ["biu"] = "Biete", ["biv"] = "Southern Birifor", ["biw"] = "Kol (Cameroon)", ["bix"] = "Bijori", ["biy"] = "Birhor", ["biz"] = "Baloi", ["bja"] = "Budza", ["bjb"] = "Barngarla", ["bjc"] = "Bariji", ["bje"] = "Biao-Jiao Mien", ["bjf"] = "Barzani Jewish Neo-Aramaic", ["bjg"] = "Bidyogo", ["bjh"] = "Bahinemo", ["bji"] = "Burji", ["bjj"] = "Kannauji", ["bjk"] = "Barok", ["bjl"] = "Bulu (New Guinea)", ["bjm"] = "Bajelani", ["bjn"] = "บันจาร์", ["bjo"] = "Mid-Southern Banda", ["bjp"] = "Fanamaket", ["bjr"] = "Binumarien", ["bjs"] = "Bajan", ["bjt"] = "Balanta-Ganja", ["bju"] = "Busuu", ["bjv"] = "Bedjond", ["bjw"] = "Bakwé", ["bjx"] = "Banao Itneg", ["bjy"] = "Bayali", ["bjz"] = "Baruga", ["bka"] = "Kyak", ["bkc"] = "Baka", ["bkd"] = "บีนูกิด", ["bkf"] = "Beeke", ["bkg"] = "Buraka", ["bkh"] = "Bakoko", ["bki"] = "Baki", ["bkj"] = "Pande", ["bkk"] = "Brokskat", ["bkl"] = "Berik", ["bkm"] = "Kom (Cameroon)", ["bkn"] = "Bukitan", ["bko"] = "Kwa'", ["bkp"] = "Iboko", ["bkq"] = "Bakairí", ["bkr"] = "Bakumpai", ["bks"] = "Masbate Sorsogon", ["bkt"] = "Boloki", ["bku"] = "Buhid", ["bkv"] = "Bekwarra", ["bkw"] = "Bekwel", ["bkx"] = "Baikeno", ["bky"] = "Bokyi", ["bkz"] = "Bungku", ["bla"] = "Blackfoot", ["blb"] = "Bilua", ["blc"] = "Bella Coola", ["bld"] = "Bolango", ["ble"] = "Balanta-Kentohe", ["blf"] = "Buol", ["blg"] = "Balau", ["blh"] = "Kuwaa", ["bli"] = "Bolia", ["blj"] = "Bulungan", ["blk"] = "กะเหรี่ยงปะโอ", ["bll"] = "Biloxi", ["blm"] = "Beli", ["bln"] = "Southern Catanduanes Bicolano", ["blo"] = "Anii", ["blp"] = "Blablanga", ["blq"] = "Baluan-Pam", ["blr"] = "Blang", ["bls"] = "Balaesang", ["blt"] = "ไทดำ", ["blv"] = "Kibala", ["blw"] = "Balangao", ["blx"] = "Mag-Indi Ayta", ["bly"] = "Notre", ["blz"] = "Balantak", ["bm"] = "บัมบารา", ["bma"] = "Lame", ["bmb"] = "Bembe", ["bmc"] = "Biem", ["bmd"] = "Baga Manduri", ["bme"] = "Limassa", ["bmf"] = "Bom", ["bmg"] = "Bamwe", ["bmh"] = "Kein", ["bmi"] = "Bagirmi", ["bmj"] = "Bote-Majhi", ["bmk"] = "Ghayavi", ["bml"] = "Bomboli", ["bmn"] = "Bina", ["bmo"] = "Bambalang", ["bmp"] = "Bulgebi", ["bmq"] = "Bomu", ["bmr"] = "Muinane", ["bmt"] = "Biao Mon", ["bmu"] = "Somba-Siawari", ["bmv"] = "Bum", ["bmw"] = "Bomwali", ["bmx"] = "Baimak", ["bmz"] = "Baramu", ["bn"] = "เบงกอล", ["bna"] = "Bonerate", ["bnb"] = "Bookan", ["bnd"] = "Banda", ["bne"] = "Bintauna", ["bnf"] = "Masiwang", ["bng"] = "Benga", ["bni"] = "Bangi", ["bnj"] = "Eastern Tawbuid", ["bnk"] = "Bierebo", ["bnl"] = "Boon", ["bnm"] = "Batanga", ["bnn"] = "Bunun", ["bno"] = "อาซี", ["bnp"] = "Bola", ["bnq"] = "Bantik", ["bnr"] = "Butmas-Tur", ["bns"] = "Bundeli", ["bnt-bal"] = "Balong", ["bnt-bon"] = "Boma Nkuu", ["bnt-boy"] = "Boma Yumu", ["bnt-bwa"] = "Bwala", ["bnt-cmw"] = "Chimwiini", ["bnt-ind"] = "Indanga", ["bnt-lal"] = "Lala (South Africa)", ["bnt-mpi"] = "Mpiin", ["bnt-mpu"] = "Mpuono", ["bnt-ngu-pro"] = "งูนีดั้งเดิม", ["bnt-phu"] = "Phuthi", ["bnt-pro"] = "แบนทูดั้งเดิม", ["bnt-sab-pro"] = "Proto-Sabaki", ["bnt-sbo"] = "South Boma", ["bnt-sts-pro"] = "Proto-Sotho-Tswana", ["bnu"] = "Bentong", ["bnv"] = "Beneraf", ["bnw"] = "Bisis", ["bnx"] = "Bangubangu", ["bny"] = "Bintulu", ["bnz"] = "Beezen", ["bo"] = "ทิเบต", ["boa"] = "Bora", ["bob"] = "Aweer", ["boe"] = "Mundabli", ["bof"] = "Bolon", ["bog"] = "Bamako Sign Language", ["boh"] = "North Boma", ["boi"] = "Barbareño", ["boj"] = "Anjam", ["bok"] = "Bonjo", ["bol"] = "โบล", ["bom"] = "Berom", ["bon"] = "Bine", ["boo"] = "Tiemacèwè Bozo", ["bop"] = "Bonkiman", ["boq"] = "Bogaya", ["bor"] = "Borôro", ["bot"] = "Bongo", ["bou"] = "Bondei", ["bov"] = "Tuwuli", ["bow"] = "Rema", ["box"] = "Buamu", ["boy"] = "Bodo (Central Africa)", ["boz"] = "Tiéyaxo Bozo", ["bpa"] = "Daakaka", ["bpd"] = "Banda-Banda", ["bpg"] = "Bonggo", ["bph"] = "Botlikh", ["bpi"] = "Bagupi", ["bpj"] = "Binji", ["bpk"] = "Orowe", ["bpl"] = "Broome Pearling Lugger Pidgin", ["bpm"] = "Biyom", ["bpn"] = "Dzao Min", ["bpo"] = "Anasi", ["bpp"] = "Kaure", ["bpq"] = "Banda Malay", ["bpr"] = "Koronadal Blaan", ["bps"] = "Sarangani Blaan", ["bpt"] = "Barrow Point", ["bpu"] = "Bongu", ["bpv"] = "Bian Marind", ["bpx"] = "Palya Bareli", ["bpy"] = "Bishnupriya Manipuri", ["bpz"] = "Bilba", ["bqa"] = "Tchumbuli", ["bqb"] = "Bagusa", ["bqc"] = "Boko", ["bqd"] = "Bung", ["bqf"] = "Baga Kaloum", ["bqg"] = "Bago-Kusuntu", ["bqh"] = "Baima", ["bqi"] = "Bakhtiari", ["bqj"] = "Bandial", ["bqk"] = "Banda-Mbrès", ["bql"] = "Bilakura", ["bqm"] = "Wumboko", ["bqn"] = "Bulgarian Sign Language", ["bqo"] = "Balo", ["bqp"] = "Busa", ["bqq"] = "Biritai", ["bqr"] = "Burusu", ["bqs"] = "Bosngun", ["bqt"] = "Bamukumbit", ["bqu"] = "Boguru", ["bqv"] = "Begbere-Ejar", ["bqw"] = "Buru (Nigeria)", ["bqx"] = "Baangi", ["bqy"] = "Bengkala Sign Language", ["bqz"] = "Bakaka", ["br"] = "เบรอตง", ["bra"] = "พรัช", ["brb"] = "Lave", ["brc"] = "Berbice Creole Dutch", ["brd"] = "Baraamu", ["brf"] = "Bera", ["brg"] = "Baure", ["brh"] = "บราฮุอี", ["bri"] = "Mokpwe", ["brj"] = "Bieria", ["brk"] = "Birgid", ["brl"] = "Birwa", ["brm"] = "Barambu", ["brn"] = "Boruca", ["bro"] = "Brokkat", ["brp"] = "Barapasi", ["brq"] = "Breri", ["brr"] = "Birao", ["brs"] = "Baras", ["brt"] = "Bitare", ["bru"] = "บรูตะวันออก", ["brv"] = "บรูตะวันตก", ["brw"] = "Bellari", ["brx"] = "โบโด", ["bry"] = "Burui", ["brz"] = "Bilbil", ["bsa"] = "Abinomn", ["bsb"] = "Brunei Bisaya", ["bsc"] = "Bassari", ["bse"] = "Wushi", ["bsf"] = "Bauchi", ["bsg"] = "Bashkardi", ["bsh"] = "Kamkata-viri", ["bsi"] = "Bassossi", ["bsj"] = "Bangwinji", ["bsk"] = "Burushaski", ["bsl"] = "Basa-Gumna", ["bsm"] = "Busami", ["bsn"] = "Barasana", ["bso"] = "Buso", ["bsp"] = "Baga Sitemu", ["bsq"] = "Bassa", ["bsr"] = "Bassa-Kontagora", ["bss"] = "Akoose", ["bst"] = "Basketo", ["bsu"] = "Bahonsuai", ["bsv"] = "Baga Sobané", ["bsw"] = "Baiso", ["bsx"] = "Yangkam", ["bsy"] = "Sabah Bisaya", ["bta"] = "Bata", ["btc"] = "Bati (Cameroon)", ["btd"] = "Dairi Batak", ["bte"] = "Gamo-Ningi", ["btf"] = "Birgit", ["btg"] = "Gagnoa Bété", ["bth"] = "Biatah Bidayuh", ["bti"] = "Burate", ["btj"] = "Bacanese Malay", ["btk-pro"] = "Proto-Batak", ["btm"] = "Mandailing Batak", ["btn"] = "Ratagnon", ["bto"] = "Iriga Bicolano", ["btp"] = "Budibud", ["btq"] = "Batek", ["btr"] = "Baetora", ["bts"] = "Simalungun Batak", ["btt"] = "Bete-Bendi", ["btu"] = "Batu", ["btv"] = "Bateri", ["btw"] = "Butuanon", ["btx"] = "Karo Batak", ["bty"] = "Bobot", ["btz"] = "Alas-Kluet Batak", ["bua"] = "บูร์ยัต", ["bub"] = "Bua", ["bud"] = "Ntcham", ["bue"] = "Beothuk", ["buf"] = "Bushoong", ["bug"] = "บูกิส", ["buh"] = "Younuo Bunu", ["bui"] = "Bongili", ["buj"] = "Basa-Gurmana", ["buk"] = "Bukawa", ["bum"] = "Bulu (Cameroon)", ["bun"] = "Sherbro", ["buo"] = "Terei", ["bup"] = "Busoa", ["buq"] = "Brem", ["bus"] = "Bokobaru", ["but"] = "Bungain", ["buu"] = "Budu", ["buv"] = "Bun", ["buw"] = "Bubi", ["bux"] = "Boghom", ["buy"] = "Mmani", ["bva"] = "Barein", ["bvb"] = "Bube", ["bvc"] = "Baelelea", ["bvd"] = "Baeggu", ["bve"] = "Berau Malay", ["bvf"] = "Boor", ["bvg"] = "Bonkeng", ["bvh"] = "Bure", ["bvi"] = "Belanda Viri", ["bvj"] = "Baan", ["bvk"] = "Bukat", ["bvl"] = "Bolivian Sign Language", ["bvm"] = "Bamunka", ["bvn"] = "Buna", ["bvo"] = "Bolgo", ["bvp"] = "Bumang", ["bvq"] = "Birri", ["bvr"] = "Burarra", ["bvt"] = "Bati (Indonesia)", ["bvu"] = "Bukit Malay", ["bvv"] = "Baniva", ["bvw"] = "Boga", ["bvx"] = "Babole", ["bvy"] = "Baybayanon", ["bvz"] = "Bauzi", ["bwa"] = "Bwatoo", ["bwb"] = "Namosi-Naitasiri-Serua", ["bwc"] = "Bwile", ["bwd"] = "Bwaidoka", ["bwe"] = "Bwe Karen", ["bwf"] = "Boselewa", ["bwg"] = "Barwe", ["bwh"] = "Bishuo", ["bwi"] = "Baniwa", ["bwj"] = "Láá Láá Bwamu", ["bwk"] = "Bauwaki", ["bwl"] = "Bwela", ["bwm"] = "Biwat", ["bwn"] = "Wunai Bunu", ["bwo"] = "Shinasha", ["bwp"] = "Mandobo Bawah", ["bwq"] = "Southern Bobo", ["bwr"] = "Bura", ["bws"] = "Bomboma", ["bwt"] = "Bafaw", ["bwu"] = "Buli (Ghana)", ["bww"] = "Bwa", ["bwx"] = "Bu-Nao Bunu", ["bwy"] = "Cwi Bwamu", ["bwz"] = "Bwisi", ["bxa"] = "Bauro", ["bxb"] = "Belanda Bor", ["bxc"] = "Molengue", ["bxd"] = "Pela", ["bxe"] = "Ongota", ["bxf"] = "Bilur", ["bxg"] = "Bangala", ["bxh"] = "Buhutu", ["bxi"] = "Pirlatapa", ["bxj"] = "Bayungu", ["bxk"] = "Bukusu", ["bxl"] = "Jalkunan", ["bxn"] = "Burduna", ["bxo"] = "Barikanchi", ["bxp"] = "Bebil", ["bxq"] = "Beele", ["bxs"] = "Busam", ["bxv"] = "Berakou", ["bxw"] = "Banka", ["bxz"] = "Binahari", ["bya"] = "Palawan Batak", ["byb"] = "Bikya", ["byc"] = "Ubaghara", ["byd"] = "Benyadu'", ["bye"] = "Pouye", ["byf"] = "Bete", ["byg"] = "Baygo", ["byh"] = "Bujhyal", ["byi"] = "Buyu", ["byj"] = "Binawa", ["byk"] = "Biao", ["byl"] = "Bayono", ["bym"] = "Bidyara", ["byn"] = "Blin", ["byo"] = "Biyo", ["byp"] = "Bumaji", ["byq"] = "Basay", ["byr"] = "Baruya", ["bys"] = "Burak", ["byt"] = "Berti", ["byv"] = "Medumba", ["byw"] = "Belhariya", ["byx"] = "Qaqet", ["byz"] = "Banaro", ["bza"] = "Bandi", ["bzb"] = "Andio", ["bzd"] = "Bribri", ["bze"] = "Jenaama Bozo", ["bzf"] = "Boikin", ["bzg"] = "Babuza", ["bzh"] = "Mapos Buang", ["bzi"] = "บีซู", ["bzj"] = "Belizean Creole", ["bzk"] = "Nicaraguan Creole", ["bzl"] = "Boano (Sulawesi)", ["bzm"] = "Bolondo", ["bzn"] = "Boano (Maluku)", ["bzo"] = "Bozaba", ["bzp"] = "Kemberano", ["bzq"] = "Buli (Indonesia)", ["bzr"] = "Biri", ["bzs"] = "Brazilian Sign Language", ["bzu"] = "Burmeso", ["bzv"] = "Bebe", ["bzw"] = "Basa", ["bzx"] = "Hainyaxo Bozo", ["bzy"] = "Obanliku", ["bzz"] = "Evant", ["ca"] = "กาตาลา", ["caa"] = "Ch'orti'", ["cab"] = "Garifuna", ["cac"] = "Chuj", ["cad"] = "Caddo", ["cae"] = "Laalaa", ["caf"] = "Southern Carrier", ["cag"] = "Nivaclé", ["cah"] = "Cahuarano", ["caj"] = "Chané", ["cak"] = "Kaqchikel", ["cal"] = "Carolinian", ["cam"] = "Cèmuhî", ["can"] = "Chambri", ["cao"] = "Chácobo", ["cap"] = "Chipaya", ["caq"] = "คาร์นิโคบาร์", ["car"] = "Kari'na", ["cas"] = "Tsimané", ["cau-abz-pro"] = "Proto-Abkhaz-Abaza", ["cau-and-pro"] = "Proto-Andian", ["cau-ava-pro"] = "Proto-Avaro-Andian", ["cau-cir-pro"] = "Proto-Circassian", ["cau-drg-pro"] = "Proto-Dargwa", ["cau-lzg-pro"] = "Proto-Lezghian", ["cau-nec-pro"] = "คอเคเซียนตะวันออกเฉียงเหนือดั้งเดิม", ["cau-nkh-pro"] = "นัคดั้งเดิม", ["cau-nwc-pro"] = "คอเคเซียนตะวันตกเฉียงเหนือดั้งเดิม", ["cau-tsz-pro"] = "Proto-Tsezian", ["cav"] = "Cavineña", ["caw"] = "Kallawaya", ["cax"] = "Chiquitano", ["cay"] = "Cayuga", ["caz"] = "Canichana", ["cba-ata"] = "Atanques", ["cba-cat"] = "Catío Chibcha", ["cba-dor"] = "Dorasque", ["cba-dui"] = "Duit", ["cba-hue"] = "Huetar", ["cba-nut"] = "Nutabe", ["cba-pro"] = "Proto-Chibchan", ["cbb"] = "Cabiyarí", ["cbc"] = "Carapana", ["cbd"] = "Carijona", ["cbg"] = "Chimila", ["cbi"] = "Chachi", ["cbj"] = "Ede Cabe", ["cbk"] = "ชาบากาโน", ["cbl"] = "Bualkhaw Chin", ["cbn"] = "ญัฮกุร", ["cbo"] = "Izora", ["cbq"] = "Tsucuba", ["cbr"] = "Cashibo-Cacataibo", ["cbs"] = "Cashinahua", ["cbt"] = "Chayahuita", ["cbu"] = "Candoshi-Shapra", ["cbv"] = "Cacua", ["cbw"] = "Kinabalian", ["cby"] = "Carabayo", ["cca"] = "Cauca", ["ccc"] = "Chamicuro", ["ccd"] = "Cafundó", ["cce"] = "Chopi", ["ccg"] = "Chamba Daka", ["cch"] = "Atsam", ["ccj"] = "Kasanga", ["ccl"] = "Cutchi-Swahili", ["ccm"] = "Malaccan Creole Malay", ["cco"] = "Comaltepec Chinantec", ["ccp"] = "จักมา", ["ccr"] = "Cacaopera", ["ccs-gzn-pro"] = "จอร์เจียน-แซนดั้งเดิม", ["ccs-pro"] = "คาร์ทเวเลียนดั้งเดิม", ["cda"] = "Choni", ["cdc-cbm-pro"] = "ชาดิกตอนกลางดั้งเดิม", ["cdc-mas-pro"] = "Proto-Masa", ["cdc-pro"] = "ชาดิกดั้งเดิม", ["cdd-pro"] = "Proto-Caddoan", ["cde"] = "Chenchu", ["cdf"] = "Chiru", ["cdh"] = "Chambeali", ["cdi"] = "Chodri", ["cdj"] = "Churahi", ["cdm"] = "Chepang", ["cdn"] = "Chaudangsi", ["cdo"] = "หมิ่นตะวันออก", ["cdr"] = "Cinda-Regi-Tiyal", ["cds"] = "Chadian Sign Language", ["cdy"] = "Chadong", ["cdz"] = "Koda", ["ce"] = "เชเชน", ["cea"] = "Lower Chehalis", ["ceb"] = "เซบัวโน", ["ceg"] = "Chamacoco", ["cel-bry-pro"] = "บริทอนิกดั้งเดิม", ["cel-gal"] = "Gallaecian", ["cel-gau"] = "กอล", ["cel-pro"] = "เคลติกดั้งเดิม", ["cen"] = "Cen", ["cet"] = "Centúúm", ["cfa"] = "Dijim-Bwilim", ["cfd"] = "Cara", ["cfg"] = "Como Karim", ["cfm"] = "Falam Chin", ["cga"] = "Changriwa", ["cgc"] = "Kagayanen", ["cgg"] = "Rukiga", ["cgk"] = "Chocangaca", ["ch"] = "ชามอร์โร", ["chb"] = "Chibcha", ["chc"] = "Catawba", ["chd"] = "Highland Oaxaca Chontal", ["chf"] = "Chontal Maya", ["chg"] = "ชากาทาย", ["chh"] = "Chinook", ["chi-pro"] = "Proto-Chimakuan", ["chj"] = "Ojitlán Chinantec", ["chk"] = "Chuukese", ["chl"] = "Cahuilla", ["chm-pro"] = "Proto-Mari", ["chn"] = "Chinook Jargon", ["cho"] = "Choctaw", ["chp"] = "Chipewyan", ["chq"] = "Quiotepec Chinantec", ["chr"] = "เชโรกี", ["cht"] = "Cholón", ["chw"] = "Chuabo", ["chx"] = "Chantyal", ["chy"] = "เชเยนน์", ["chz"] = "Ozumacín Chinantec", ["cia"] = "Cia-Cia", ["cib"] = "Ci Gbe", ["cic"] = "Chickasaw", ["cid"] = "Chimariko", ["cie"] = "Cineni", ["cih"] = "Chinali", ["cik"] = "Chitkuli Kinnauri", ["cim"] = "Cimbrian", ["cin"] = "Cinta Larga", ["cip"] = "Chiapanec", ["cir"] = "Tinrin", ["ciy"] = "Chaima", ["cja"] = "จามตะวันตก", ["cje"] = "Chru", ["cjh"] = "Upper Chehalis", ["cji"] = "Chamalal", ["cjk"] = "Chokwe", ["cjm"] = "จามตะวันออก", ["cjn"] = "Chenapian", ["cjo"] = "Ashéninka Pajonal", ["cjp"] = "Cabécar", ["cjs"] = "โชร์", ["cjv"] = "Chuave", ["cjy"] = "จิ้น", ["ckb"] = "เคิร์ดตอนกลาง", ["ckh"] = "Chak", ["ckl"] = "Cibak", ["ckn"] = "Kaang Chin", ["cko"] = "Anufo", ["ckq"] = "Kajakse", ["ckr"] = "Kairak", ["cks"] = "Tayo", ["ckt"] = "ชุกชี", ["cku"] = "Koasati", ["ckv"] = "กบาลัน", ["ckx"] = "Caka", ["cky"] = "Cakfem-Mushere", ["ckz"] = "Kaqchikel-K'iche' Mixed Language", ["cla"] = "Ron", ["clc"] = "Chilcotin", ["cld"] = "Chaldean Neo-Aramaic", ["cle"] = "Lealao Chinantec", ["clh"] = "Chilisso", ["cli"] = "Chakali", ["clj"] = "Laitu Chin", ["clk"] = "Idu", ["cll"] = "Chala", ["clm"] = "Klallam", ["clo"] = "Lowland Oaxaca Chontal", ["clt"] = "Lutuv", ["clu"] = "Caluyanun", ["clw"] = "Chulym", ["cly"] = "Eastern Highland Chatino", ["cma"] = "หมะ", ["cmc-pro"] = "จามิกดั้งเดิม", ["cme"] = "Cerma", ["cmg"] = "มองโกเลียคลาสสิก", ["cmi"] = "Emberá-Chamí", ["cml"] = "Campalagian", ["cmm"] = "Michigamea", ["cmn"] = "จีนกลาง", ["cmo"] = "มนองตอนกลาง", ["cmr"] = "Mro Chin", ["cms"] = "Messapic", ["cmt"] = "Camtho", ["cna"] = "Changthang", ["cnb"] = "Chinbon Chin", ["cnc"] = "Cốông", ["cng"] = "Northern Qiang", ["cnh"] = "Lai", ["cni"] = "Asháninka", ["cnk"] = "Khumi Chin", ["cnl"] = "Lalana Chinantec", ["cno"] = "Con", ["cnp"] = "ผิงเหนือ", ["cns"] = "Central Asmat", ["cnt"] = "Tepetotutla Chinantec", ["cnu"] = "Chenoua", ["cnw"] = "Ngawn Chin", ["cnx"] = "Middle Cornish", ["co"] = "คอร์ซิกา", ["coa"] = "Cocos Islands Malay", ["cob"] = "Chicomuceltec", ["coc"] = "Cocopa", ["cod"] = "Cocama", ["coe"] = "Koreguaje", ["cof"] = "Tsafiki", ["cog"] = "ชอง", ["coh"] = "Chichonyi-Chidzihana-Chikauma", ["coj"] = "Cochimi", ["cok"] = "Santa Teresa Cora", ["col"] = "Columbia-Wenatchi", ["com"] = "Comanche", ["con"] = "Cofán", ["coo"] = "Comox", ["cop"] = "คอปติก", ["coq"] = "Coquille", ["cot"] = "Caquinte", ["cou"] = "Wamey", ["cov"] = "เฉ่าเหมียว", ["cow"] = "Cowlitz", ["cox"] = "Nanti", ["coy"] = "Coyaima", ["coz"] = "Chochotec", ["cpa"] = "Palantla Chinantec", ["cpb"] = "Ucayali-Yurúa Ashéninka", ["cpc"] = "Ajyíninka Apurucayali", ["cpg"] = "Cappadocian Greek", ["cpi"] = "Chinese Pidgin English", ["cpn"] = "Cherepon", ["cpo"] = "Kpee", ["cps"] = "Capiznon", ["cpu"] = "Pichis Ashéninka", ["cpx"] = "ผูเซียน", ["cpy"] = "South Ucayali Ashéninka", ["cqd"] = "Chuanqiandian Cluster Miao", ["cr"] = "ครี", ["cra"] = "Chara", ["crb"] = "Kalinago", ["crc"] = "Lonwolwol", ["crd"] = "Coeur d'Alene", ["crf"] = "Caramanta", ["crg"] = "Michif", ["crh"] = "ตาตาร์แบบไครเมีย", ["cri"] = "Sãotomense", ["crj"] = "Southern East Cree", ["crk"] = "Plains Cree", ["crl"] = "Northern East Cree", ["crm"] = "Moose Cree", ["crn"] = "Cora", ["cro"] = "Crow", ["crp-bip"] = "Basque-Icelandic Pidgin", ["crp-gep"] = "West Greenlandic Pidgin", ["crp-kia"] = "Kiautschou German Pidgin", ["crp-mar"] = "Maroon Spirit Language", ["crp-mpp"] = "Macau Pidgin Portuguese", ["crp-rsn"] = "Russenorsk", ["crp-slb"] = "Solombala English", ["crp-spp"] = "Samoan Plantation Pidgin", ["crp-tpr"] = "Taimyr Pidgin Russian", ["crq"] = "Iyo'wujwa Chorote", ["crr"] = "Carolina Algonquian", ["crs"] = "Seychellois Creole", ["crt"] = "Iyojwa'ja Chorote", ["crv"] = "Chaura", ["crw"] = "Chrau", ["crx"] = "Carrier", ["cry"] = "Cori", ["crz"] = "Cruzeño", ["cs"] = "เช็ก", ["csa"] = "Chiltepec Chinantec", ["csb"] = "คาชุบ", ["csc"] = "Catalan Sign Language", ["csd"] = "Chiangmai Sign Language", ["cse"] = "Czech Sign Language", ["csf"] = "Cuban Sign Language", ["csg"] = "Chilean Sign Language", ["csh"] = "Asho Chin", ["csi"] = "Coast Miwok", ["csj"] = "Songlai Chin", ["csk"] = "Jola-Kasa", ["csl"] = "Chinese Sign Language", ["csm"] = "Central Sierra Miwok", ["csn"] = "Colombian Sign Language", ["cso"] = "Sochiapam Chinantec", ["csp"] = "ผิงใต้", ["csq"] = "Croatian Sign Language", ["csr"] = "Costa Rican Sign Language", ["css"] = "Southern Ohlone", ["cst"] = "Northern Ohlone", ["csu-bba-pro"] = "Proto-Bongo-Bagirmi", ["csu-maa-pro"] = "Proto-Mangbetu", ["csu-pro"] = "Proto-Central Sudanic", ["csu-sar-pro"] = "Proto-Sara", ["csv"] = "Sumtu Chin", ["csw"] = "Swampy Cree", ["csx"] = "Cambodian Sign Language", ["csy"] = "Siyin Chin", ["csz"] = "Coos", ["cta"] = "Tataltepec Chatino", ["ctc"] = "Chetco-Tolowa", ["ctd"] = "Tedim Chin", ["cte"] = "Tepinapa Chinantec", ["ctg"] = "Chittagonian", ["cth"] = "Thaiphum Chin", ["ctl"] = "Tlacoatzintepec Chinantec", ["ctm"] = "Chitimacha", ["ctn"] = "Chhintange", ["cto"] = "Emberá-Catío", ["ctp"] = "Western Highland Chatino", ["cts"] = "Northern Catanduanes Bicolano", ["ctt"] = "Wayanad Chetti", ["ctu"] = "Chol", ["ctz"] = "Zacatepec Chatino", ["cu"] = "สลาวอนิกคริสตจักรเก่า", ["cua"] = "Cua", ["cub"] = "Cubeo", ["cuc"] = "Usila Chinantec", ["cug"] = "Cung", ["cuh"] = "Chuka", ["cui"] = "Cuiba", ["cuj"] = "Mashco Piro", ["cuk"] = "Kuna", ["cul"] = "Culina", ["cuo"] = "Cumanagoto", ["cup"] = "Cupeño", ["cuq"] = "จุน", ["cur"] = "Chhulung", ["cus-ash"] = "Ashraaf", ["cus-hec-pro"] = "Proto-Highland East Cushitic", ["cus-pro"] = "Proto-Cushitic", ["cus-som-pro"] = "โซมาลอยด์ดั้งเดิม", ["cus-sou-pro"] = "Proto-South Cushitic", ["cut"] = "Teutila Cuicatec", ["cuu"] = "Tai Ya", ["cuv"] = "Cuvok", ["cuw"] = "Chukwa", ["cux"] = "Tepeuxila Cuicatec", ["cuy"] = "Cuitlatec", ["cv"] = "ชูวัช", ["cvg"] = "Chug", ["cvn"] = "Valle Nacional Chinantec", ["cwa"] = "Kabwa", ["cwb"] = "Maindo", ["cwd"] = "Woods Cree", ["cwe"] = "Kwere", ["cwg"] = "Chewong", ["cwt"] = "Kuwaataay", ["cy"] = "เวลส์", ["cya"] = "Nopala Chatino", ["cyb"] = "Cayubaba", ["cyo"] = "Cuyunon", ["czh"] = "Huizhou", ["czk"] = "Knaanic", ["czn"] = "Zenzontepec Chatino", ["czo"] = "หมิ่นตอนกลาง", ["czt"] = "Zotung Chin", ["da"] = "เดนมาร์ก", ["daa"] = "Dangaléat", ["dac"] = "Dambi", ["dad"] = "Marik", ["dae"] = "Duupa", ["dag"] = "Dagbani", ["dah"] = "Gwahatike", ["dai"] = "Day", ["daj"] = "Dar Fur Daju", ["dak"] = "ดาโคตา", ["dal"] = "Dahalo", ["dam"] = "Damakawa", ["dao"] = "Daai Chin", ["daq"] = "Dandami Maria", ["dar"] = "Dargwa", ["das"] = "Daho-Doo", ["dau"] = "Dar Sila Daju", ["dav"] = "Taita", ["daw"] = "Davawenyo", ["dax"] = "Dayi", ["daz"] = "Dao", ["dba"] = "Bangime", ["dbb"] = "Deno", ["dbd"] = "Dadiya", ["dbe"] = "Dabe", ["dbf"] = "Edopi", ["dbg"] = "Dogul Dom", ["dbi"] = "Doka", ["dbj"] = "อีดาอัน", ["dbl"] = "Dyirbal", ["dbm"] = "Duguri", ["dbn"] = "Duriankere", ["dbo"] = "Dulbu", ["dbp"] = "Duwai", ["dbq"] = "Daba", ["dbr"] = "Dabarre", ["dbt"] = "Ben Tey", ["dbu"] = "Bondum Dom Dogon", ["dbv"] = "Dungu", ["dbw"] = "Bankan Tey Dogon", ["dby"] = "Dibiyaso", ["dcc"] = "Deccani", ["dcr"] = "เนเกอร์ฮอลันดส์", ["dda"] = "Dadi Dadi", ["ddd"] = "Dongotono", ["dde"] = "Doondo", ["ddg"] = "Fataluku", ["ddi"] = "Diodio", ["ddj"] = "Jaru", ["ddn"] = "Dendi", ["ddo"] = "Tsez", ["ddr"] = "Dhudhuroa", ["dds"] = "Donno So Dogon", ["ddw"] = "Dawera-Daweloor", ["de"] = "เยอรมัน", ["dec"] = "Dagik", ["ded"] = "Dedua", ["dee"] = "Dewoin", ["def"] = "Dezfuli", ["deg"] = "Degema", ["deh"] = "Dehwari", ["dei"] = "Demisa", ["dem"] = "Dem", ["dep"] = "Pidgin Delaware", ["der"] = "Deori", ["des"] = "Desano", ["dev"] = "Domung", ["dez"] = "Dengese", ["dga"] = "Southern Dagaare", ["dgb"] = "Bunoge", ["dgc"] = "Casiguran Dumagat Agta", ["dgd"] = "Dagaari Dioula", ["dge"] = "Degenan", ["dgg"] = "Doga", ["dgh"] = "Dghwede", ["dgi"] = "Northern Dagara", ["dgk"] = "Dagba", ["dgn"] = "Dagoman", ["dgo"] = "Hindi Dogri", ["dgr"] = "Dogrib", ["dgs"] = "Dogoso", ["dgt"] = "Ntra'ngith", ["dgw"] = "Daungwurrung", ["dgx"] = "Doghoro", ["dgz"] = "Daga", ["dhd"] = "Dhundhari", ["dhg"] = "Dhangu", ["dhi"] = "Dhimal", ["dhl"] = "Dhalandji", ["dhm"] = "Zemba", ["dhn"] = "Dhanki", ["dho"] = "Dhodia", ["dhr"] = "Tharrgari", ["dhs"] = "Dhaiso", ["dhu"] = "Dhurga", ["dhv"] = "Drehu", ["dhw"] = "Danuwar", ["dhx"] = "Dhungaloo", ["dia"] = "Dia", ["dib"] = "South Central Dinka", ["dic"] = "Lakota Dida", ["did"] = "Didinga", ["dif"] = "Dieri", ["dig"] = "Digo", ["dii"] = "Dimbong", ["dij"] = "Dai", ["dik"] = "Southwestern Dinka", ["dil"] = "Dilling", ["dim"] = "Dime", ["din"] = "Dinka", ["dio"] = "Dibo", ["dip"] = "Northeastern Dinka", ["dir"] = "Dirim", ["dis"] = "Dimasa", ["diu"] = "Gciriku", ["diw"] = "Northwestern Dinka", ["dix"] = "Dixon Reef", ["diy"] = "Diuwe", ["diz"] = "Ding", ["dja"] = "Djadjawurrung", ["djb"] = "Djinba", ["djc"] = "Dar Daju Daju", ["djd"] = "Jaminjung", ["dje"] = "Zarma", ["djf"] = "Djangun", ["dji"] = "Djinang", ["djj"] = "Ndjébbana", ["djk"] = "Aukan", ["djl"] = "Djiwarli", ["djm"] = "Jamsay", ["djn"] = "Djauan", ["djo"] = "Jangkang", ["djr"] = "Djambarrpuyngu", ["dju"] = "Kapriman", ["djw"] = "Djawi", ["dka"] = "Dakpa", ["dkk"] = "Dakka", ["dkr"] = "Kuijau", ["dks"] = "Southeastern Dinka", ["dkx"] = "Mazagway", ["dlg"] = "Dolgan", ["dlk"] = "Dahalik", ["dlm"] = "แดลเมเชีย", ["dln"] = "Darlong", ["dma"] = "Duma", ["dmb"] = "Mombo Dogon", ["dmc"] = "Gavak", ["dmd"] = "Madhi Madhi", ["dme"] = "Dugwor", ["dmf"] = "Medefaidrin", ["dmg"] = "กีนาบาตางันตอนบน", ["dmk"] = "Domaaki", ["dml"] = "Dameli", ["dmm"] = "Dama (Nigeria)", ["dmn-dam"] = "Dama (Sierra Leone)", ["dmn-mdw-pro"] = "Proto-Western Mande", ["dmn-pro"] = "Proto-Mande", ["dmo"] = "Kemezung", ["dmr"] = "East Damar", ["dms"] = "Dampelas", ["dmu"] = "Dubu", ["dmv"] = "Dumpas", ["dmw"] = "Mudburra", ["dmx"] = "Dema", ["dmy"] = "Demta", ["dna"] = "Upper Grand Valley Dani", ["dnd"] = "Daonda", ["dne"] = "Ndendeule", ["dng"] = "ดุงกาน", ["dni"] = "Lower Grand Valley Dani", ["dnj"] = "Dan", ["dnk"] = "Dengka", ["dnn"] = "Dzuun", ["dno"] = "Ndrulo", ["dnr"] = "Danaru", ["dnt"] = "Mid Grand Valley Dani", ["dnu"] = "Danau", ["dnv"] = "Danu", ["dnw"] = "Western Dani", ["dny"] = "Dení", ["doa"] = "Dom", ["dob"] = "Dobu", ["doc"] = "ต้งเหนือ", ["doe"] = "Doe", ["dof"] = "Domu", ["doh"] = "Dong", ["doi"] = "Dogri", ["dok"] = "Dondo", ["dol"] = "Doso", ["don"] = "Doura", ["doo"] = "Dongo", ["dop"] = "Lukpa", ["doq"] = "Dominican Sign Language", ["dor"] = "Dori'o", ["dos"] = "Dogosé", ["dot"] = "Dass", ["dov"] = "Toka-Leya", ["dow"] = "Doyayo", ["dox"] = "Bussa", ["doy"] = "Dompo", ["doz"] = "Dorze", ["dpp"] = "Papar", ["dra-bry"] = "Beary", ["dra-cen-pro"] = "ดราวิเดียนตอนกลางดั้งเดิม", ["dra-mkn"] = "Middle Kannada", ["dra-nor-pro"] = "ดราวิเดียนเหนือดั้งเดิม", ["dra-okn"] = "Old Kannada", ["dra-ote"] = "Old Telugu", ["dra-pro"] = "ดราวิเดียนดั้งเดิม", ["dra-sdo-pro"] = "ดราวิเดียนใต้ที่หนึ่งดั้งเดิม", ["dra-sdt-pro"] = "ดราวิเดียนใต้ที่สองดั้งเดิม", ["dra-sou-pro"] = "ดราวิเดียนใต้ดั้งเดิม", ["drb"] = "Dair", ["drc"] = "Minderico", ["drd"] = "Darmiya", ["drg"] = "Rungus", ["dri"] = "Lela", ["drl"] = "Baagandji", ["drn"] = "West Damar", ["dro"] = "Daro-Matu Melanau", ["drq"] = "Dura", ["drs"] = "Gedeo", ["dru"] = "Rukai", ["dru-pro"] = "Proto-Rukai", ["dry"] = "Darai", ["dsb"] = "ซอร์บตอนล่าง", ["dse"] = "Dutch Sign Language", ["dsh"] = "Daasanach", ["dsi"] = "Disa", ["dsl"] = "Danish Sign Language", ["dsn"] = "Dusner", ["dso"] = "Desiya", ["dsq"] = "Tadaksahak", ["dta"] = "Daur", ["dtb"] = "Labuk-Kinabatangan Kadazan", ["dtd"] = "Ditidaht", ["dth"] = "Adithinngithigh", ["dti"] = "Ana Tinga Dogon", ["dtk"] = "Tene Kan Dogon", ["dtm"] = "Tomo Kan Dogon", ["dto"] = "Tommo So", ["dtp"] = "ดูซุนตอนกลาง", ["dtr"] = "Lotud", ["dts"] = "Toro So Dogon", ["dtt"] = "Toro Tegu Dogon", ["dtu"] = "Tebul Ure Dogon", ["dty"] = "Doteli", ["dua"] = "Duala", ["dub"] = "Dubli", ["duc"] = "Duna", ["due"] = "Umiray Dumaget Agta", ["duf"] = "Dumbea", ["dug"] = "Chiduruma", ["duh"] = "Dungra Bhil", ["dui"] = "Dumun", ["duk"] = "Uyajitaya", ["dul"] = "Alabat Island Agta", ["dum"] = "ดัตช์กลาง", ["dun"] = "Dusun Deyah", ["duo"] = "Dupaningan Agta", ["dup"] = "Duano", ["duq"] = "Dusun Malang", ["dur"] = "Dii", ["dus"] = "Dumi", ["duu"] = "Drung", ["duv"] = "Duvle", ["duw"] = "Dusun Witu", ["dux"] = "Duun", ["duy"] = "Dicamay Agta", ["duz"] = "Duli", ["dv"] = "มัลดีฟส์", ["dva"] = "Duau", ["dwa"] = "Diri", ["dwr"] = "เดาโร", ["dwu"] = "Dhuwal", ["dww"] = "Dawawa", ["dwy"] = "Dhuwaya", ["dwz"] = "Dewas Rai", ["dya"] = "Dyan", ["dyb"] = "Dyaberdyaber", ["dyd"] = "Dyugun", ["dyg"] = "Villa Viciosa Agta", ["dyi"] = "Djimini", ["dym"] = "Yanda Dogon", ["dyn"] = "Dyangadi", ["dyo"] = "Jola-Fonyi", ["dyu"] = "Dyula", ["dyy"] = "Dyaabugay", ["dz"] = "ซองคา", ["dza"] = "Tunzu", ["dzg"] = "Dazaga", ["dzl"] = "Dzala", ["dzn"] = "Dzando", ["ebg"] = "Ebughu", ["ebk"] = "Eastern Bontoc", ["ebr"] = "Ebrié", ["ebu"] = "Embu", ["ecr"] = "Eteocretan", ["ecs"] = "Ecuadorian Sign Language", ["ecy"] = "Eteocypriot", ["ee"] = "เอเว", ["eee"] = "E", ["efa"] = "Efai", ["efe"] = "Efe", ["efi"] = "Efik", ["ega"] = "Ega", ["egl"] = "เอมีเลีย", ["ego"] = "Eggon", ["egx-dem"] = "Demotic Egyptian", ["egy"] = "อียิปต์", ["ehu"] = "Ehueun", ["eip"] = "Eipomek", ["eit"] = "Eitiep", ["eiv"] = "Askopan", ["eja"] = "Ejamat", ["eka"] = "Ekajuk", ["eke"] = "Ekit", ["ekg"] = "Ekari", ["eki"] = "Eki", ["ekl"] = "Kolhe", ["ekm"] = "Elip", ["eko"] = "Koti", ["ekp"] = "Ekpeye", ["ekr"] = "Yace", ["eky"] = "กะยาตะวันออก", ["el"] = "กรีก", ["ele"] = "Elepi", ["elh"] = "El Hugeirat", ["eli"] = "Nding", ["elk"] = "Elkei", ["elm"] = "Eleme", ["elo"] = "El Molo", ["elu"] = "Elu", ["elx"] = "Elamite", ["ema"] = "Emai", ["emb"] = "Embaloh", ["eme"] = "Emerillon", ["emg"] = "Eastern Meohang", ["emi"] = "Mussau-Emira", ["emk"] = "Eastern Maninkakan", ["emm"] = "Mamulique", ["emn"] = "Eman", ["emp"] = "Northern Emberá", ["ems"] = "อาลูตีก", ["emu"] = "Eastern Muria", ["emw"] = "Emplawas", ["emx"] = "Erromintxela", ["emy"] = "Epigraphic Mayan", ["en"] = "อังกฤษ", ["ena"] = "Apali", ["enb"] = "Markweeta", ["enc"] = "En", ["end"] = "Ende", ["enf"] = "Forest Enets", ["enh"] = "Tundra Enets", ["enl"] = "Enlhet", ["enm"] = "อังกฤษกลาง", ["enn"] = "Engenni", ["eno"] = "Enggano", ["enq"] = "Enga", ["enr"] = "Emem", ["enu"] = "Enu", ["env"] = "Enwan", ["enw"] = "Enwang", ["enx"] = "Enxet", ["eo"] = "เอสเปรันโต", ["eot"] = "Eotile", ["epi"] = "Epie", ["era"] = "Eravallan", ["erg"] = "Sie", ["erh"] = "Eruwa", ["eri"] = "Ogea", ["erk"] = "South Efate", ["ero-gsz"] = "Geshiza", ["ero-nya"] = "Nyagrong Minyag", ["ero-tau"] = "Stau", ["err"] = "Erre", ["ers"] = "Ersu", ["ert"] = "Eritai", ["erw"] = "Erokwanas", ["es"] = "สเปน", ["ese"] = "Ese Ejja", ["esh"] = "เอชเตฮาร์ด", ["esl"] = "Egyptian Sign Language", ["esm"] = "Esuma", ["esn"] = "Salvadoran Sign Language", ["eso"] = "Estonian Sign Language", ["esq"] = "Esselen", ["ess"] = "Central Siberian Yupik", ["esu"] = "ยุปปิก", ["esx-esk-pro"] = "เอสกิโมดั้งเดิม", ["esx-ink"] = "Inuktun", ["esx-inq"] = "Inuinnaqtun", ["esx-inu-pro"] = "อินุอิตดั้งเดิม", ["esx-pro"] = "Proto-Eskimo-Aleut", ["esx-tut"] = "Tunumiisut", ["esy"] = "Eskayan", ["et"] = "เอสโตเนีย", ["etb"] = "Etebi", ["etc"] = "Etchemin", ["eth"] = "Ethiopian Sign Language", ["etn"] = "Eton (Vanuatu)", ["eto"] = "Eton (Cameroon)", ["etr"] = "Edolo", ["ets"] = "Yekhee", ["ett"] = "อีทรัสคัน", ["etu"] = "Ejagham", ["etx"] = "Eten", ["etz"] = "Semimi", ["eu"] = "บาสก์", ["euq-pro"] = "บาสก์ดั้งเดิม", ["eve"] = "เอเว็น", ["evh"] = "Uvbie", ["evn"] = "เอเวนค์", ["ewo"] = "Ewondo", ["ext"] = "เอซเตรมาดูรา", ["eya"] = "Eyak", ["eyo"] = "Keiyo", ["eza"] = "Ezaa", ["eze"] = "Uzekwe", ["fa"] = "เปอร์เซีย", ["faa"] = "Fasu", ["fab"] = "Annobonese", ["fad"] = "Wagi", ["faf"] = "Fagani", ["fag"] = "Finongan", ["fah"] = "Baissa Fali", ["fai"] = "Faiwol", ["faj"] = "Faita", ["fak"] = "Fang (Beboid)", ["fal"] = "South Fali", ["fam"] = "Fam", ["fan"] = "Fang (Bantu)", ["fap"] = "Palor", ["far"] = "Fataleka", ["fau"] = "Fayu", ["fax"] = "ฟาลา", ["fay"] = "Southwestern Fars", ["faz"] = "Northwestern Fars", ["fbl"] = "West Albay Bikol", ["fcs"] = "Quebec Sign Language", ["fer"] = "Feroge", ["ff"] = "ฟูลา", ["ffi"] = "Foia Foia", ["fgr"] = "Fongoro", ["fi"] = "ฟินแลนด์", ["fia"] = "Nobiin", ["fie"] = "Fyer", ["fip"] = "Fipa", ["fir"] = "Firan", ["fit"] = "Meänkieli", ["fiw"] = "Fiwaga", ["fj"] = "ฟีจี", ["fkk"] = "Kirya-Konzel", ["fkv"] = "Kven", ["fla"] = "Montana Salish", ["flh"] = "Foau", ["fli"] = "Fali", ["fll"] = "North Fali", ["fln"] = "Flinders Island", ["flr"] = "Fuliiru", ["fly"] = "Tsotsitaal", ["fmp"] = "Fe'fe'", ["fmu"] = "Far Western Muria", ["fng"] = "Fanagalo", ["fni"] = "Fania", ["fo"] = "แฟโร", ["fod"] = "Foodo", ["foi"] = "Foi", ["fom"] = "Foma", ["fon"] = "Fon", ["for"] = "Fore", ["fos"] = "Siraya", ["fpe"] = "Pichinglis", ["fqs"] = "Fas", ["fr"] = "ฝรั่งเศส", ["frd"] = "Fordata", ["frm"] = "ฝรั่งเศสกลาง", ["fro"] = "ฝรั่งเศสเก่า", ["frp"] = "ฟร็องโก-พรอว็องส์", ["frq"] = "Forak", ["frr"] = "ฟรีเชียเหนือ", ["frt"] = "Fortsenal", ["fse"] = "Finnish Sign Language", ["fsl"] = "French Sign Language", ["fss"] = "Finnish-Swedish Sign Language", ["fud"] = "East Futuna", ["fuj"] = "Ko", ["fum"] = "Fum", ["fun"] = "Fulniô", ["fur"] = "ฟรียูลี", ["fut"] = "Futuna-Aniwa", ["fuu"] = "Furu", ["fuy"] = "Fuyug", ["fvr"] = "Fur", ["fwa"] = "Fwâi", ["fwe"] = "Fwe", ["fy"] = "ฟรีเชียตะวันตก", ["ga"] = "ไอริช", ["gaa"] = "Ga", ["gab"] = "Gabri", ["gac"] = "Mixed Great Andamanese", ["gad"] = "Gaddang", ["gae"] = "Warekena", ["gaf"] = "Gende", ["gag"] = "กากาอุซ", ["gah"] = "Alekano", ["gai"] = "Borei", ["gaj"] = "Gadsup", ["gak"] = "Gamkonora", ["gal"] = "Galoli", ["gam"] = "Kandawo", ["gan"] = "กั้น", ["gao"] = "Gants", ["gap"] = "Gal", ["gaq"] = "Gata'", ["gar"] = "Galeya", ["gas"] = "Adiwasi Garasia", ["gat"] = "Kenati", ["gau"] = "Kondekor", ["gaw"] = "Nobonob", ["gay"] = "Gayo", ["gba-pro"] = "Proto-Gbaya", ["gbb"] = "Kaytetye", ["gbd"] = "Karadjeri", ["gbe"] = "Niksek", ["gbf"] = "Gaikundi", ["gbg"] = "Gbanziri", ["gbh"] = "Defi Gbe", ["gbi"] = "Galela", ["gbj"] = "Bodo Gadaba", ["gbk"] = "Gaddi", ["gbl"] = "Gamit", ["gbm"] = "Garhwali", ["gbn"] = "Mo'da", ["gbo"] = "Northern Grebo", ["gbp"] = "Gbaya-Bossangoa", ["gbq"] = "Gbaya-Bozoum", ["gbr"] = "Gbagyi", ["gbs"] = "Gbesi Gbe", ["gbu"] = "Gagadu", ["gbv"] = "Gbanu", ["gbw"] = "Gabi", ["gbx"] = "Eastern Xwla Gbe", ["gby"] = "Gbari", ["gcc"] = "Mali", ["gcd"] = "Ganggalida", ["gce"] = "Galice", ["gcf"] = "Antillean Creole", ["gcl"] = "Grenadian Creole English", ["gcn"] = "Gaina", ["gcr"] = "Guianese Creole", ["gct"] = "Colonia Tovar German", ["gd"] = "แกลิกแบบสกอตแลนด์", ["gdb"] = "Ollari", ["gdc"] = "Gugu Badhun", ["gdd"] = "Gedaged", ["gde"] = "Gude", ["gdf"] = "Guduf-Gava", ["gdg"] = "Ga'dang", ["gdh"] = "Gadjerawang", ["gdi"] = "Gundi", ["gdj"] = "Kurtjar", ["gdk"] = "Gadang", ["gdl"] = "Dirasha", ["gdm"] = "Laal", ["gdn"] = "Umanakaina", ["gdo"] = "Godoberi", ["gdq"] = "Mehri", ["gdr"] = "Wipi", ["gds"] = "Ghandruk Sign Language", ["gdt"] = "Kungardutyi", ["gdu"] = "Gudu", ["gdx"] = "Godwari", ["gea"] = "Geruma", ["geb"] = "Kire", ["gec"] = "Gboloo Grebo", ["ged"] = "Gade", ["geg"] = "Gengle", ["geh"] = "Hutterisch", ["gei"] = "Gebe", ["gej"] = "Gen", ["gek"] = "Gerka", ["gel"] = "Fakkanci", ["gem-pro"] = "เจอร์แมนิกดั้งเดิม", ["geq"] = "Geme", ["ges"] = "Geser-Gorom", ["gev"] = "Viya", ["gew"] = "Gera", ["gex"] = "Garre", ["gey"] = "Enya", ["gez"] = "กืออึซ", ["gfk"] = "Patpatar", ["gft"] = "Gafat", ["gga"] = "Gao", ["ggb"] = "Gbii", ["ggd"] = "Gugadj", ["gge"] = "Guragone", ["ggg"] = "Gurgula", ["ggk"] = "Kungarakany", ["ggl"] = "Ganglau", ["ggn"] = "Eastern Gurung", ["ggt"] = "Gitua", ["ggu"] = "Gban", ["ggw"] = "Gogodala", ["gha"] = "Ghadames", ["ghc"] = "แกลิกคลาสสิก", ["ghe"] = "Southern Ghale", ["ghh"] = "Northern Ghale", ["ghk"] = "Geko Karen", ["ghl"] = "Ghulfan", ["ghn"] = "Ghanongga", ["gho"] = "Ghomara", ["ghr"] = "Ghera", ["ghs"] = "Guhu-Samane", ["ght"] = "Kutang Ghale", ["gia"] = "Kitja", ["gib"] = "Gibanawa", ["gid"] = "Gidar", ["gie"] = "Guébie", ["gig"] = "Goaria", ["gih"] = "Githabul", ["gii"] = "Girirra", ["gil"] = "กิลเบิร์ต", ["gim"] = "Gimi (Papuan)", ["gin"] = "Hinukh", ["gip"] = "Gimi (Austronesian)", ["giq"] = "Green Gelao", ["gir"] = "Red Gelao", ["gis"] = "North Giziga", ["git"] = "Gitxsan", ["giu"] = "Mulao", ["giw"] = "White Gelao", ["gix"] = "Gilima", ["giy"] = "Giyug", ["giz"] = "South Giziga", ["gji"] = "Geji", ["gjk"] = "Kachi Koli", ["gjm"] = "Gunditjmara", ["gjn"] = "Gonja", ["gjr"] = "Gurindji Kriol", ["gju"] = "Gojri", ["gka"] = "Guya", ["gkd"] = "Magɨ", ["gke"] = "Ndai", ["gkn"] = "Gokana", ["gko"] = "Kok-Nar", ["gkp"] = "Guinea Kpelle", ["gl"] = "กาลิเซีย", ["glc"] = "Bon Gula", ["gld"] = "Nanai", ["glh"] = "Northwest Pashayi", ["glj"] = "Kulaal", ["glk"] = "Gilaki", ["glo"] = "Galambu", ["glr"] = "Glaro-Twabo", ["glu"] = "Gula", ["glw"] = "Glavda", ["gly"] = "Gule", ["gma"] = "Gambera", ["gmb"] = "Gula'alaa", ["gmd"] = "Mághdì", ["gme-bur"] = "Burgundian", ["gme-cgo"] = "กอทแบบไครเมีย", ["gmg"] = "Magiyi", ["gmh"] = "เยอรมันสูงกลาง", ["gml"] = "เยอรมันต่ำกลาง", ["gmm"] = "Gbaya-Mbodomo", ["gmn"] = "Gimnime", ["gmq-gut"] = "Gutnish", ["gmq-jmk"] = "Jamtish", ["gmq-mno"] = "นอร์เวย์กลาง", ["gmq-oda"] = "เดนมาร์กเก่า", ["gmq-ogt"] = "Old Gutnish", ["gmq-osw"] = "สวีเดนเก่า", ["gmq-pro"] = "นอร์สดั้งเดิม", ["gmq-scy"] = "Scanian", ["gmr"] = "Mirning", ["gmu"] = "Gumalu", ["gmv"] = "กาโม", ["gmw-bgh"] = "Bergish", ["gmw-cfr"] = "ฟรังโกเนียตอนกลาง", ["gmw-ecg"] = "เยอรมันตอนกลางตะวันออก", ["gmw-fin"] = "Fingallian", ["gmw-gts"] = "Gottscheerish", ["gmw-jdt"] = "Jersey Dutch", ["gmw-msc"] = "Middle Scots", ["gmw-pro"] = "เจอร์แมนิกตะวันตกดั้งเดิม", ["gmw-rfr"] = "ฟรังโกเนียแบบไรน์", ["gmw-stm"] = "Sathmar Swabian", ["gmw-tsx"] = "Transylvanian Saxon", ["gmw-vog"] = "เยอรมันแบบว็อลกา", ["gmw-zps"] = "เยอรมันแบบซิพเซอร์", ["gmx"] = "Magoma", ["gmy"] = "กรีกแบบไมซีนี", ["gmz"] = "Mgbo", ["gn-cls"] = "กัวรานีคลาสสิก", ["gna"] = "Kaansa", ["gnb"] = "Gangte", ["gnc"] = "Guanche", ["gnd"] = "Zulgo-Gemzek", ["gne"] = "Ganang", ["gng"] = "Ngangam", ["gnh"] = "Lere", ["gni"] = "กูนียันดี", ["gnj"] = "Ngen of Djonkro", ["gnk"] = "ǁGana", ["gnl"] = "Gangulu", ["gnm"] = "Ginuman", ["gnn"] = "Gumatj", ["gnq"] = "Gana", ["gnr"] = "Gureng Gureng", ["gnt"] = "Guntai", ["gnu"] = "Gnau", ["gnw"] = "Western Bolivian Guarani", ["gnz"] = "Ganzi", ["goa"] = "Guro", ["gob"] = "Playero", ["goc"] = "Gorakor", ["god"] = "Godié", ["goe"] = "Gongduk", ["gof"] = "โกฟา", ["gog"] = "Gogo", ["goh"] = "เยอรมันสูงเก่า", ["goi"] = "Gobasi", ["goj"] = "Gowlan", ["gol"] = "Gola", ["gon"] = "โคณฑี", ["goo"] = "Gone Dau", ["gop"] = "Yeretuar", ["goq"] = "Gorap", ["gor"] = "Gorontalo", ["got"] = "กอท", ["gou"] = "Gavar", ["gov"] = "Goo", ["gow"] = "Gorwaa", ["gox"] = "Gobu", ["goy"] = "Goundo", ["goz"] = "Gozarkhani", ["gpa"] = "Gupa-Abawa", ["gpn"] = "Taiap", ["gqa"] = "Ga'anda", ["gqi"] = "Guiqiong", ["gqn"] = "Kinikinao", ["gqr"] = "Gor", ["gqu"] = "Qau", ["gra"] = "Rajput Garasia", ["grc"] = "กรีกโบราณ", ["grd"] = "Guruntum", ["grg"] = "Madi", ["grh"] = "Gbiri-Niragu", ["gri"] = "Ghari", ["grj"] = "Southern Grebo", ["grk-cal"] = "Calabrian Greek", ["grk-ita"] = "Italiot Greek", ["grk-mar"] = "Mariupol Greek", ["grk-pro"] = "เฮลเลนิกดั้งเดิม", ["grm"] = "Kota Marudu Talantang", ["gro"] = "Groma", ["grq"] = "Gorovu", ["grs"] = "Gresi", ["grt"] = "กาโร", ["gru"] = "Kistane", ["grv"] = "Central Grebo", ["grw"] = "Gweda", ["grx"] = "Guriaso", ["gry"] = "Barclayville Grebo", ["grz"] = "Guramalum", ["gse"] = "Ghanaian Sign Language", ["gsg"] = "German Sign Language", ["gsl"] = "Gusilay", ["gsm"] = "Guatemalan Sign Language", ["gsn"] = "Gusan", ["gso"] = "Southwest Gbaya", ["gsp"] = "Wasembo", ["gss"] = "Greek Sign Language", ["gsw"] = "เยอรมันแบบอลามันเนีย", ["gta"] = "Guató", ["gtu"] = "Aghu Tharrnggala", ["gu"] = "คุชราต", ["gua"] = "Shiki", ["gub"] = "Guajajára", ["guc"] = "Wayuu", ["gud"] = "Yocoboué Dida", ["gue"] = "Gurindji", ["guf"] = "Gupapuyngu", ["gug"] = "กัวรานีแบบปารากวัย", ["guh"] = "Guahibo", ["gui"] = "Eastern Bolivian Guarani", ["guk"] = "Gumuz", ["gul"] = "Gullah", ["gum"] = "Guambiano", ["gun"] = "Mbya Guarani", ["guo"] = "Guayabero", ["gup"] = "Gunwinggu", ["guq"] = "Aché", ["gur"] = "ฟราฟรา", ["gus"] = "Guinean Sign Language", ["gut"] = "Maléku Jaíka", ["guu"] = "Yanomamö", ["guv"] = "Gey", ["guw"] = "Gun", ["gux"] = "Gourmanchéma", ["guz"] = "Gusii", ["gv"] = "แมงซ์", ["gva"] = "Kaskihá", ["gvc"] = "Guanano", ["gve"] = "Duwet", ["gvf"] = "Golin", ["gvj"] = "Guajá", ["gvl"] = "Gulay", ["gvm"] = "Gurmana", ["gvn"] = "Kuku-Yalanji", ["gvo"] = "Gavião do Jiparaná", ["gvp"] = "Pará Gavião", ["gvr"] = "Western Gurung", ["gvs"] = "Gumawana", ["gvy"] = "Guyani", ["gwa"] = "Mbato", ["gwb"] = "Gwa", ["gwc"] = "Kalami", ["gwd"] = "Gawwada", ["gwe"] = "Gweno", ["gwf"] = "Gowro", ["gwg"] = "Moo", ["gwi"] = "Gwich'in", ["gwj"] = "Gcwi", ["gwm"] = "Awngthim", ["gwn"] = "Gwandara", ["gwr"] = "Gwere", ["gwt"] = "Gawar-Bati", ["gwu"] = "Guwamu", ["gww"] = "Kwini", ["gwx"] = "Gua", ["gxx"] = "Wè Southern", ["gya"] = "Northwest Gbaya", ["gyb"] = "Garus", ["gyd"] = "Kayardild", ["gye"] = "Gyem", ["gyf"] = "Gungabula", ["gyg"] = "Gbayi", ["gyi"] = "Gyele", ["gyl"] = "Gayil", ["gym"] = "Ngäbere", ["gyn"] = "Guyanese Creole English", ["gyo"] = "Gyalsumdo", ["gyr"] = "Guarayu", ["gyy"] = "Gunya", ["gza"] = "Ganza", ["gzn"] = "Gane", ["ha"] = "เฮาซา", ["haa"] = "Hän", ["hab"] = "Hanoi Sign Language", ["hac"] = "Gurani", ["had"] = "Hatam", ["haf"] = "Haiphong Sign Language", ["hag"] = "Hanga", ["hah"] = "Hahon", ["hai"] = "Haida", ["haj"] = "ฮาชอง", ["hak"] = "แคะ", ["hal"] = "Halang", ["ham"] = "Hewa", ["hao"] = "Hakö", ["hap"] = "Hupla", ["har"] = "Harari", ["has"] = "Haisla", ["hav"] = "Havu", ["haw"] = "ฮาวาย", ["hax"] = "Southern Haida", ["hay"] = "Haya", ["hba"] = "Hamba", ["hbb"] = "Huba", ["hbn"] = "Heiban", ["hbu"] = "Habu", ["hca"] = "Andaman Creole Hindi", ["hch"] = "Huichol", ["hdn"] = "Northern Haida", ["hds"] = "Honduras Sign Language", ["hdy"] = "Hadiyya", ["he"] = "ฮีบรู", ["hea"] = "Northern Qiandong Miao", ["hed"] = "Herdé", ["heg"] = "Helong", ["heh"] = "Hehe", ["hei"] = "Heiltsuk", ["hem"] = "Hemba", ["hgm"] = "Haiǁom", ["hgw"] = "Haigwai", ["hhi"] = "Hoia Hoia", ["hhr"] = "Kerak", ["hhy"] = "Hoyahoya", ["hi"] = "ฮินดี", ["hia"] = "Lamang", ["hib"] = "Hibito", ["hid"] = "Hidatsa", ["hif"] = "ฮินดีแบบฟีจี", ["hig"] = "Kamwe", ["hih"] = "Pamosu", ["hii"] = "Hinduri", ["hij"] = "Hijuk", ["hik"] = "Seit-Kaitetu", ["hil"] = "ฮีลีไกโนน", ["hio"] = "Tshwa", ["hir"] = "Himarimã", ["hit"] = "Hittite", ["hiw"] = "Hiw", ["hix"] = "Hixkaryana", ["hji"] = "Haji", ["hka"] = "Kahe", ["hke"] = "Hunde", ["hkh"] = "Pogali", ["hkk"] = "Hunjara-Kaina Ke", ["hkn"] = "Mel-Khaonh", ["hks"] = "Hong Kong Sign Language", ["hla"] = "Halia", ["hlb"] = "Halbi", ["hld"] = "Halang Doan", ["hle"] = "Hlersu", ["hlt"] = "Nga La", ["hma"] = "Southern Mashan Hmong", ["hmb"] = "Humburi Senni", ["hmc"] = "Central Huishui Hmong", ["hmd"] = "A-Hmao", ["hme"] = "Eastern Huishui Hmong", ["hmf"] = "Hmong Don", ["hmg"] = "Southwestern Guiyang Hmong", ["hmh"] = "Southwestern Huishui Hmong", ["hmi"] = "Northern Huishui Hmong", ["hmj"] = "Ge", ["hmk"] = "Yemaek", ["hml"] = "Luopohe Hmong", ["hmm"] = "Central Mashan Hmong", ["hmn-pro"] = "ม้งดั้งเดิม", ["hmp"] = "Northern Mashan Hmong", ["hmq"] = "Eastern Qiandong Miao", ["hmr"] = "Hmar", ["hms"] = "Southern Qiandong Miao", ["hmt"] = "Hamtai", ["hmu"] = "Hamap", ["hmv"] = "Hmong Dô", ["hmw"] = "Western Mashan Hmong", ["hmx-mie-pro"] = "เมี่ยนดั้งเดิม", ["hmx-pro"] = "ม้ง-เมี่ยนดั้งเดิม", ["hmy"] = "Southern Guiyang Hmong", ["hmz"] = "Hmong Shua", ["hna"] = "Mina", ["hnd"] = "Southern Hindko", ["hne"] = "Chhattisgarhi", ["hnh"] = "ǁAni", ["hni"] = "Hani", ["hnj"] = "ม้งเขียว", ["hnm"] = "ไหหลำ", ["hnn"] = "ฮานูโนโอ", ["hno"] = "Northern Hindko", ["hns"] = "ฮินดูสตานีแบบแคริบเบียน", ["hnu"] = "Hung", ["ho"] = "ฮีรีโมตู", ["hoa"] = "Hoava", ["hob"] = "Austronesian Mari", ["hoc"] = "Ho", ["hod"] = "Holma", ["hoe"] = "Horom", ["hoh"] = "Hobyót", ["hoi"] = "Holikachuk", ["hoj"] = "Hadoti", ["hol"] = "Holu", ["hom"] = "Homa", ["hoo"] = "Holoholo", ["hop"] = "Hopi", ["hor"] = "Horo", ["hos"] = "Ho Chi Minh City Sign Language", ["hot"] = "Hote", ["hov"] = "Hovongan", ["how"] = "Honi", ["hoy"] = "Holiya", ["hoz"] = "Hozo", ["hpo"] = "Hpon", ["hps"] = "Hawai'i Pidgin Sign Language", ["hra"] = "Hrangkhol", ["hrc"] = "Niwer Mil", ["hre"] = "Hrê", ["hrk"] = "Haruku", ["hrm"] = "Horned Miao", ["hro"] = "Haroi", ["hrp"] = "Nhirrpi", ["hrt"] = "Hértevin", ["hru"] = "Hruso", ["hrw"] = "Warwar Feni", ["hrx"] = "ฮุนสริก", ["hrz"] = "Harzani", ["hsb"] = "ซอร์บตอนบน", ["hsh"] = "Hungarian Sign Language", ["hsl"] = "Hausa Sign Language", ["hsn"] = "เซียง", ["hss"] = "Harsusi", ["ht"] = "ครีโอลเฮติ", ["hti"] = "Hoti", ["hto"] = "Minica Huitoto", ["hts"] = "Hadza", ["htu"] = "Hitu", ["hu"] = "ฮังการี", ["hub"] = "Huambisa", ["huc"] = "ǂHoan", ["hud"] = "Huaulu", ["huf"] = "Humene", ["hug"] = "Huachipaeri", ["huh"] = "Huilliche", ["hui"] = "Huli", ["huj"] = "Northern Guiyang Hmong", ["huk"] = "Hulung", ["hul"] = "Hula", ["hum"] = "Hungana", ["huo"] = "Hu", ["hup"] = "Hupa", ["huq"] = "Tsat", ["hur"] = "Halkomelem", ["hus"] = "Wastek", ["huu"] = "Murui Huitoto", ["huv"] = "Huave", ["huw"] = "Hukumina", ["hux"] = "Nüpode Huitoto", ["huy"] = "Hulaulá", ["huz"] = "Hunzib", ["hvc"] = "Haitian Vodoun Culture Language", ["hvk"] = "Haveke", ["hvn"] = "Sabu", ["hwa"] = "Wané", ["hwc"] = "Hawaiian Creole", ["hwo"] = "Hwana", ["hy"] = "อาร์มีเนีย", ["hya"] = "Hya", ["hyx-pro"] = "อาร์มีเนียนดั้งเดิม", ["hz"] = "เฮเรโร", ["ia"] = "อินเทอร์ลิงกวา", ["iai"] = "Iaai", ["ian"] = "Iatmul", ["iar"] = "Purari", ["iba"] = "อีบัน", ["ibb"] = "Ibibio", ["ibd"] = "Iwaidja", ["ibe"] = "Akpes", ["ibg"] = "Ibanag", ["ibh"] = "Bih", ["ibl"] = "Ibaloi", ["ibm"] = "Agoi", ["ibn"] = "Ibino", ["ibr"] = "Ibuoro", ["ibu"] = "Ibu", ["iby"] = "Ibani", ["ica"] = "Ede Ica", ["ich"] = "Etkywan", ["icl"] = "Icelandic Sign Language", ["icr"] = "Islander Creole English", ["id"] = "อินโดนีเซีย", ["ida"] = "Idakho-Isukha-Tiriki", ["idb"] = "Indo-Portuguese", ["idc"] = "Idon", ["idd"] = "Ede Idaca", ["ide"] = "Idere", ["idi"] = "Idi", ["idr"] = "Indri", ["ids"] = "Idesa", ["idt"] = "Idaté", ["idu"] = "Idoma", ["ie"] = "อินเทร์ลิงเกว", ["ifa"] = "Amganad Ifugao", ["ifb"] = "Batad Ifugao", ["ife"] = "Ifè", ["iff"] = "Ifo", ["ifk"] = "Tuwali Ifugao", ["ifm"] = "Teke-Fuumu", ["ifu"] = "Mayoyao Ifugao", ["ify"] = "Keley-I Kallahan", ["ig"] = "อิกโบ", ["igb"] = "Ebira", ["ige"] = "Igede", ["igg"] = "Igana", ["igl"] = "Igala", ["igm"] = "Kanggape", ["ign"] = "Ignaciano", ["igo"] = "Isebe", ["igs"] = "Glosa", ["igw"] = "Igwe", ["ihb"] = "Pidgin Iha", ["ihi"] = "Ihievbe", ["ihp"] = "Iha", ["ii"] = "นอซู", ["iir-nur-pro"] = "Proto-Nuristani", ["iir-pro"] = "อินโด-อิเรเนียนดั้งเดิม", ["ijc"] = "Izon", ["ije"] = "Biseni", ["ijj"] = "Ede Ije", ["ijn"] = "Kalabari", ["ijo-pro"] = "Proto-Ijoid", ["ijs"] = "Southeast Ijo", ["ik"] = "Inupiaq", ["ike"] = "Eastern Canadian Inuktitut", ["iki"] = "Iko", ["ikk"] = "Ika", ["ikl"] = "Ikulu", ["iko"] = "Olulumo-Ikom", ["ikp"] = "Ikpeshi", ["ikr"] = "Ikaranggal", ["iks"] = "Inuit Sign Language", ["ikt"] = "Inuvialuktun", ["ikv"] = "Iku-Gora-Ankwa", ["ikw"] = "Ikwere", ["ikx"] = "Ik", ["ikz"] = "Ikizu", ["ila"] = "Ile Ape", ["ilb"] = "Ila", ["ilg"] = "Ilgar", ["ili"] = "Ili Turki", ["ilk"] = "Ilongot", ["ill"] = "อีรานุน", ["ilo"] = "อีโลกาโน", ["ils"] = "International Sign", ["ilu"] = "Ili'uun", ["ilv"] = "Ilue", ["ima"] = "Mala Malasar", ["imi"] = "Anamgura", ["iml"] = "Miluk", ["imn"] = "Imonda", ["imo"] = "Imbongu", ["imr"] = "Imroing", ["ims"] = "Marsian", ["imy"] = "Milyan", ["inb"] = "Inga", ["inc-apa"] = "Apabhramsa", ["inc-ash"] = "ปรากฤตแบบอโศก", ["inc-dng-pro"] = "Proto-Dangari", ["inc-kam"] = "กามรูป", ["inc-kho"] = "Kholosi", ["inc-krd-pro"] = "Proto-Kamta", ["inc-mas"] = "อัสสัมกลาง", ["inc-mbn"] = "เบงกอลกลาง", ["inc-mgu"] = "คุชราตกลาง", ["inc-mor"] = "โอริยากลาง", ["inc-oas"] = "อัสสัมช่วงต้น", ["inc-oaw"] = "Old Awadhi", ["inc-obn"] = "เบงกอลเก่า", ["inc-ogu"] = "คุชราตเก่า", ["inc-ohi"] = "ฮินดีเก่า", ["inc-oor"] = "โอริยาเก่า", ["inc-opa"] = "ปัญจาบเก่า", ["inc-pro"] = "อินโด-อารยันดั้งเดิม", ["ine-ana-pro"] = "อานาโตเลียนดั้งเดิม", ["ine-bsl-pro"] = "บอลโต-สลาวิกดั้งเดิม", ["ine-kal"] = "Kalašma", ["ine-pae"] = "Paeonian", ["ine-pro"] = "อินโด-ยูโรเปียนดั้งเดิม", ["ine-toc-pro"] = "โทแคเรียนดั้งเดิม", ["ing"] = "Deg Xinag", ["inh"] = "อิงกุช", ["inj"] = "Jungle Inga", ["inl"] = "มืออินโดนีเซีย", ["inm"] = "Minaean", ["inn"] = "Isinai", ["ino"] = "Inoke-Yate", ["inp"] = "Iñapari", ["ins"] = "มืออินเดีย", ["int"] = "Intha", ["inz"] = "Ineseño", ["io"] = "อีโด", ["ior"] = "Inor", ["iou"] = "Tuma-Irumu", ["iow"] = "Chiwere", ["ipi"] = "Ipili", ["ipo"] = "Ipiko", ["iqu"] = "Iquito", ["iqw"] = "Ikwo", ["ira-kms-pro"] = "Proto-Komisenian", ["ira-mny-pro"] = "Proto-Munji-Yidgha", ["ira-mpr-pro"] = "Proto-Medo-Parthian", ["ira-pat-pro"] = "ปาทานดั้งเดิม", ["ira-pro"] = "อิเรเนียนดั้งเดิม", ["ira-sgc-pro"] = "ซอกดิกดั้งเดิม", ["ira-sgi-pro"] = "Proto-Sanglechi-Ishkashimi", ["ira-shr-pro"] = "Proto-Shughni-Roshani", ["ira-shy-pro"] = "Proto-Shughni-Yazghulami", ["ira-sym-pro"] = "Proto-Shughni-Yazghulami-Munji", ["ira-wnj"] = "Vanji", ["ira-zgr-pro"] = "Proto-Zaza-Gorani", ["ire"] = "Iresim", ["irh"] = "Irarutu", ["iri"] = "Rigwe", ["irk"] = "Iraqw", ["irn"] = "Irantxe", ["iro-ere"] = "Erie", ["iro-min"] = "Mingo", ["iro-nor-pro"] = "Proto-North Iroquoian", ["iro-pro"] = "Proto-Iroquoian", ["irr"] = "Ir", ["iru"] = "Irula", ["irx"] = "Kamberau", ["iry"] = "Iraya", ["is"] = "ไอซ์แลนด์", ["isa"] = "Isabi", ["isc"] = "Isconahua", ["isd"] = "Isnag", ["ise"] = "Italian Sign Language", ["isg"] = "Irish Sign Language", ["ish"] = "Esan", ["isi"] = "Nkem-Nkum", ["isk"] = "Ishkashimi", ["ism"] = "Masimasi", ["isn"] = "Isanzu", ["iso"] = "Isoko", ["isr"] = "Israeli Sign Language", ["ist"] = "อิสเตรีย", ["isu"] = "Isu", ["isv"] = "Interslavic", ["it"] = "อิตาลี", ["itb"] = "Binongan Itneg", ["itc-pro"] = "อิตาลิกดั้งเดิม", ["itc-psa"] = "Pre-Samnite", ["itd"] = "Southern Tidung", ["ite"] = "Itene", ["iti"] = "Inlaod Itneg", ["itk"] = "Judeo-Italian", ["itl"] = "Itelmen", ["itm"] = "Itu Mbon Uzo", ["ito"] = "Itonama", ["itr"] = "Iteri", ["its"] = "Itsekiri", ["itt"] = "Maeng Itneg", ["itv"] = "Itawit", ["itw"] = "Ito", ["itx"] = "Itik", ["ity"] = "Moyadan Itneg", ["itz"] = "Itza'", ["iu"] = "อินุกติตุต", ["ium"] = "เมี่ยน", ["ivb"] = "Ibatan", ["ivv"] = "Ivatan", ["iwk"] = "I-Wak", ["iwm"] = "Iwam", ["iwo"] = "Iwur", ["iws"] = "Sepik Iwam", ["ixc"] = "Ixcatec", ["ixl"] = "Ixil", ["iya"] = "Iyayu", ["iyo"] = "Mesaka", ["iyx"] = "Yaa", ["izh"] = "อิงเกรีย", ["izi"] = "Izi-Ezaa-Ikwo-Mgbo", ["izr"] = "Izere", ["izz"] = "Izi", ["ja"] = "ญี่ปุ่น", ["jaa"] = "Jamamadí", ["jab"] = "Hyam", ["jac"] = "Jakaltek", ["jad"] = "Jahanka", ["jae"] = "Jabem", ["jaf"] = "Jara", ["jah"] = "Jah Hut", ["jaj"] = "Zazao", ["jal"] = "Yalahatan", ["jam"] = "ครีโอลจาเมกา", ["jan"] = "Janday", ["jao"] = "Yanyuwa", ["jaq"] = "Yaqay", ["jas"] = "ชวาแบบนิวแคลิโดเนีย", ["jat"] = "Jakati", ["jau"] = "Yaur", ["jax"] = "Jambi Malay", ["jay"] = "Yan-nhangu", ["jaz"] = "Jawe", ["jbj"] = "Arandai", ["jbk"] = "Barikewa", ["jbn"] = "Nefusa", ["jbo"] = "โลจบาน", ["jbr"] = "Jofotek-Bromnya", ["jbt"] = "Jabutí", ["jbu"] = "Jukun Takum", ["jbw"] = "Yawijibaya", ["jcs"] = "Jamaican Country Sign Language", ["jct"] = "Krymchak", ["jda"] = "Jad", ["jdg"] = "Jadgali", ["jdt"] = "Judeo-Tat", ["jeb"] = "Jebero", ["jee"] = "Jerung", ["jeg"] = "Jeng", ["jeh"] = "Jeh", ["jei"] = "Yei", ["jek"] = "Jeri Kuo", ["jel"] = "Yelmek", ["jen"] = "Dza", ["jer"] = "Jere", ["jet"] = "Manem", ["jeu"] = "Jonkor Bourmataguil", ["jgb"] = "Ngbee", ["jgk"] = "Gwak", ["jgo"] = "Ngomba", ["jhi"] = "Jehai", ["jhs"] = "Jhankot Sign Language", ["jia"] = "Jina", ["jib"] = "Jibu", ["jic"] = "Tol", ["jid"] = "Bu", ["jie"] = "Jilbe", ["jig"] = "Jingulu", ["jih"] = "Shangzhai", ["jii"] = "Jiiddu", ["jil"] = "Jilim", ["jim"] = "Jimjimen", ["jio"] = "เจียเม่า", ["jiq"] = "Khroskyabs", ["jit"] = "Jita", ["jiu"] = "Youle Jino", ["jiv"] = "Shuar", ["jiy"] = "Buyuan Jino", ["jje"] = "เชจู", ["jjr"] = "Zhár", ["jka"] = "Kaera", ["jko"] = "Kubo", ["jkp"] = "Paku Karen", ["jkr"] = "Koro (India)", ["jku"] = "Labir", ["jle"] = "Ngile", ["jls"] = "Jamaican Sign Language", ["jma"] = "Dima", ["jmb"] = "Zumbun", ["jmc"] = "Machame", ["jmd"] = "Yamdena", ["jmi"] = "Jimi", ["jml"] = "Jumli", ["jmn"] = "Makuri Naga", ["jmr"] = "Kamara", ["jmw"] = "Mouwase", ["jmx"] = "Western Juxtlahuaca Mixtec", ["jna"] = "Jangshung", ["jnd"] = "Jandavra", ["jng"] = "Yangman", ["jni"] = "Janji", ["jnj"] = "Yemsa", ["jnl"] = "Rawat", ["jns"] = "Jaunsari", ["job"] = "Joba", ["jod"] = "Wojenaka", ["jor"] = "Jorá", ["jos"] = "Jordanian Sign Language", ["jow"] = "Jowulu", ["jpr"] = "Judeo-Persian", ["jpx-hcj"] = "Hachijō", ["jpx-pro"] = "แจพอนิกดั้งเดิม", ["jpx-ryu-pro"] = "Proto-Ryukyuan", ["jqr"] = "Jaqaru", ["jra"] = "Jarai", ["jrr"] = "Jiru", ["jru"] = "Japrería", ["jsl"] = "Japanese Sign Language", ["jua"] = "Júma", ["jub"] = "Wannu", ["juc"] = "จูร์เชน", ["jud"] = "Worodougou", ["juh"] = "Hone", ["jui"] = "Ngadjuri", ["juk"] = "Wapan", ["jul"] = "Jirel", ["jum"] = "Jumjum", ["jun"] = "Juang", ["juo"] = "Jiba", ["jup"] = "Hupdë", ["jur"] = "Jurúna", ["jus"] = "Jumla Sign Language", ["jut"] = "Jutish", ["juu"] = "Ju", ["juw"] = "Wãpha", ["juy"] = "Juray", ["jv"] = "ชวา", ["jvd"] = "Javindo", ["jvn"] = "ชวาแบบแคริบเบียน", ["jwi"] = "Jwira-Pepesa", ["jyy"] = "Jaya", ["ka"] = "จอร์เจีย", ["kaa"] = "การากัลปัก", ["kab"] = "กะไบล์", ["kac"] = "จิ่งเผาะ", ["kad"] = "Kadara", ["kae"] = "Ketangalan", ["kaf"] = "Katso", ["kag"] = "Kajaman", ["kah"] = "Fer", ["kai"] = "Karekare", ["kaj"] = "Jju", ["kak"] = "Kayapa Kallahan", ["kam"] = "Kamba", ["kao"] = "Kassonke", ["kap"] = "Bezhta", ["kaq"] = "Capanahua", ["kar-pro"] = "กะเหรี่ยงดั้งเดิม", ["kaw"] = "ชวาเก่า", ["kax"] = "Kao", ["kay"] = "Kamayurá", ["kba"] = "Kalarko", ["kbb"] = "Kaxuyana", ["kbc"] = "Kadiwéu", ["kbd"] = "คาบาร์เดีย", ["kbe"] = "Kanju", ["kbh"] = "Camsá", ["kbi"] = "Kaptiau", ["kbj"] = "Kari", ["kbk"] = "Grass Koiari", ["kbm"] = "Iwal", ["kbn"] = "Kare (Central Africa)", ["kbo"] = "Keliko", ["kbp"] = "Kabiyé", ["kbq"] = "Kamano", ["kbr"] = "Kafa", ["kbs"] = "Kande", ["kbt"] = "Gabadi", ["kbu"] = "Kabutra", ["kbv"] = "Kamberataro", ["kbw"] = "Kaiep", ["kbx"] = "Ap Ma", ["kbz"] = "Duhwa", ["kca-eas"] = "Eastern Khanty", ["kca-nor"] = "Northern Khanty", ["kca-pro"] = "Proto-Khanty", ["kca-sou"] = "Southern Khanty", ["kcb"] = "Kawacha", ["kcc"] = "Lubila", ["kcd"] = "Ngkâlmpw Kanum", ["kce"] = "Kaivi", ["kcf"] = "Ukaan", ["kcg"] = "Tyap", ["kch"] = "Vono", ["kci"] = "Kamantan", ["kcj"] = "Kobiana", ["kck"] = "Kalanga", ["kcl"] = "Kala", ["kcm"] = "Tar Gula", ["kcn"] = "Nubi", ["kco"] = "Kinalakna", ["kcp"] = "Kanga", ["kcq"] = "Kamo", ["kcr"] = "Katla", ["kcs"] = "Koenoem", ["kct"] = "Kaian", ["kcu"] = "Kikami", ["kcv"] = "Kete", ["kcw"] = "Kabwari", ["kcx"] = "Kachama-Ganjule", ["kcy"] = "Korandje", ["kcz"] = "Konongo", ["kda"] = "Worimi", ["kdc"] = "Kutu", ["kdd"] = "Yankunytjatjara", ["kde"] = "Makonde", ["kdf"] = "Mamusi", ["kdg"] = "Seba", ["kdh"] = "Tem", ["kdi"] = "Kumam", ["kdj"] = "Karamojong", ["kdk"] = "Numèè", ["kdl"] = "Tsikimba", ["kdm"] = "Kagoma", ["kdn"] = "Kunda", ["kdp"] = "Kaningdon-Nindem", ["kdq"] = "Koch", ["kdr"] = "Karaim", ["kdt"] = "กูย", ["kdu"] = "Kadaru", ["kdv"] = "Kado", ["kdw"] = "Koneraw", ["kdx"] = "Kam", ["kdy"] = "Keder", ["kdz"] = "Kwaja", ["kea"] = "ครีโอลกาบูเวร์ดี", ["keb"] = "Kélé", ["kec"] = "Keiga", ["ked"] = "Kerewe", ["kee"] = "Eastern Keres", ["kef"] = "Kpessi", ["keg"] = "Tese", ["keh"] = "Keak", ["kei"] = "Kei", ["kej"] = "Kadar", ["kek"] = "Q'eqchi", ["kel"] = "Kela-Yela", ["kem"] = "Kemak", ["ken"] = "Kenyang", ["keo"] = "Kakwa", ["kep"] = "Kaikadi", ["keq"] = "Kamar", ["ker"] = "Kera", ["kes"] = "Kugbo", ["ket"] = "Ket", ["keu"] = "Akebu", ["kev"] = "Kanikkaran", ["kew"] = "Kewa", ["kex"] = "Kukna", ["key"] = "Kupia", ["kez"] = "Kukele", ["kfa"] = "Kodava", ["kfb"] = "Kolami", ["kfc"] = "Konda-Dora", ["kfd"] = "Korra Koraga", ["kfe"] = "Kota (India)", ["kff"] = "Koya", ["kfg"] = "Kudiya", ["kfh"] = "Kurichiya", ["kfi"] = "Kannada Kurumba", ["kfj"] = "Kemiehua", ["kfk"] = "Kinnauri", ["kfl"] = "Kung", ["kfn"] = "Kuk", ["kfo"] = "Koro (West Africa)", ["kfp"] = "Korwa", ["kfq"] = "Korku", ["kfr"] = "กัจฉ์", ["kfs"] = "Bilaspuri", ["kft"] = "Kanjari", ["kfu"] = "Katkari", ["kfv"] = "Kurmukar", ["kfw"] = "Kharam Naga", ["kfx"] = "Kullu Pahari", ["kfy"] = "Kumaoni", ["kfz"] = "Koromfé", ["kg"] = "คองโก", ["kga"] = "Koyaga", ["kgb"] = "Kawe", ["kgd"] = "Kataang", ["kge"] = "Komering", ["kgf"] = "Kube", ["kgg"] = "Kusunda", ["kgi"] = "Selangor Sign Language", ["kgj"] = "Gamale Kham", ["kgk"] = "Kaiwá", ["kgl"] = "Kunggari", ["kgn"] = "Karingani", ["kgo"] = "Krongo", ["kgp"] = "Kaingang", ["kgq"] = "Kamoro", ["kgr"] = "Abun", ["kgs"] = "Kumbainggar", ["kgt"] = "Somyev", ["kgu"] = "Kobol", ["kgv"] = "Karas", ["kgw"] = "Karon Dori", ["kgx"] = "Kamaru", ["kgy"] = "Kyerung", ["kha"] = "คาซี", ["khb"] = "ไทลื้อ", ["khc"] = "Tukang Besi North", ["khd"] = "Bädi Kanum", ["khe"] = "Korowai", ["khf"] = "Khuen", ["khh"] = "Kehu", ["khi-kho-pro"] = "Proto-Khoe", ["khi-kun"] = "ǃKung", ["khj"] = "Kuturmi", ["khl"] = "Lusi", ["khn"] = "Khandeshi", ["kho"] = "โคตาน", ["khp"] = "Kapauri", ["khq"] = "Koyra Chiini", ["khr"] = "Kharia", ["khs"] = "Kasua", ["kht"] = "คำตี้", ["khu"] = "Nkhumbi", ["khv"] = "Khvarshi", ["khw"] = "Khowar", ["khx"] = "Kanu", ["khy"] = "Ekele", ["khz"] = "Keapara", ["ki"] = "เกโกโย", ["kia"] = "Kim", ["kib"] = "Koalib", ["kic"] = "Kickapoo", ["kid"] = "Koshin", ["kie"] = "Kibet", ["kif"] = "Eastern Parbate Kham", ["kig"] = "Kimaama", ["kih"] = "Kilmeri", ["kii"] = "Kitsai", ["kij"] = "Kilivila", ["kil"] = "Kariya", ["kim"] = "โตฟา", ["kio"] = "Kiowa", ["kip"] = "Sheshi Kham", ["kiq"] = "Kosadle", ["kis"] = "Kis", ["kit"] = "Agob", ["kiv"] = "Kimbu", ["kiw"] = "Northeast Kiwai", ["kix"] = "Khiamniungan Naga", ["kiy"] = "Kirikiri", ["kiz"] = "Kisi", ["kj"] = "Kwanyama", ["kja"] = "Mlap", ["kjb"] = "Q'anjob'al", ["kjc"] = "Coastal Konjo", ["kjd"] = "Southern Kiwai", ["kje"] = "Kisar", ["kjg"] = "ขมุ", ["kjh"] = "คาคัส", ["kji"] = "Zabana", ["kjj"] = "Khinalug", ["kjk"] = "Highland Konjo", ["kjl"] = "Western Parbate Kham", ["kjm"] = "Kháng", ["kjn"] = "Kunjen", ["kjo"] = "Harijan Kinnauri", ["kjp"] = "กะเหรี่ยงโปตะวันออก", ["kjq"] = "Western Keres", ["kjr"] = "Kurudu", ["kjs"] = "East Kewa", ["kjt"] = "กะเหรี่ยงโปแพร่", ["kju"] = "Kashaya", ["kjx"] = "Ramopa", ["kjy"] = "Erave", ["kjz"] = "Bumthangkha", ["kk"] = "คาซัค", ["kka"] = "Kakanda", ["kkb"] = "Kwerisa", ["kkc"] = "Odoodee", ["kkd"] = "Kinuku", ["kke"] = "Kakabe", ["kkf"] = "Kalaktang Monpa", ["kkg"] = "Mabaka Valley Kalinga", ["kkh"] = "เขิน", ["kki"] = "Kagulu", ["kkj"] = "Kako", ["kkk"] = "Kokota", ["kkl"] = "Kosarek Yale", ["kkm"] = "Kiong", ["kkn"] = "Kon Keu", ["kko"] = "Karko", ["kkp"] = "Koko-Bera", ["kkq"] = "Kaiku", ["kkr"] = "Kir-Balar", ["kks"] = "Kirfi", ["kkt"] = "Koi", ["kku"] = "Tumi", ["kkv"] = "Kangean", ["kkw"] = "Teke-Kukuya", ["kkx"] = "Kohin", ["kky"] = "Guugu Yimidhirr", ["kkz"] = "Kaska", ["kl"] = "กรีนแลนด์", ["kla"] = "Klamath-Modoc", ["klb"] = "Kiliwa", ["klc"] = "Kolbila", ["kld"] = "Gamilaraay", ["kle"] = "Kulung", ["klf"] = "Kendeje", ["klg"] = "กาลากันแบบตากาเกาลู", ["klh"] = "Weliki", ["kli"] = "Kalumpang", ["klj"] = "Khalaj", ["klk"] = "Kono (Nigeria)", ["kll"] = "กาลากันแบบกากัน", ["klm"] = "Kolom", ["kln"] = "Kalenjin", ["klo"] = "Kapya", ["klp"] = "Kamasa", ["klq"] = "Rumu", ["klr"] = "Khaling", ["kls"] = "Kalasha", ["klt"] = "Nukna", ["klu"] = "Klao", ["klv"] = "Maskelynes", ["klw"] = "ลินดู", ["klx"] = "Koluwawa", ["kly"] = "Kalao", ["klz"] = "Kabola", ["km"] = "เขมร", ["kma"] = "Konni", ["kmb"] = "Kimbundu", ["kmc"] = "ต้งใต้", ["kmd"] = "Madukayang Kalinga", ["kme"] = "Bakole", ["kmf"] = "Kare (New Guinea)", ["kmg"] = "Kâte", ["kmh"] = "Kalam", ["kmi"] = "Kami", ["kmj"] = "Kumarbhag Paharia", ["kmk"] = "Limos Kalinga", ["kml"] = "Tanudan Kalinga", ["kmm"] = "Kom (India)", ["kmn"] = "Awtuw", ["kmo"] = "Kwoma", ["kmp"] = "Gimme", ["kmq"] = "Kwama", ["kmr"] = "เคิร์ดเหนือ", ["kms"] = "Kamasau", ["kmt"] = "Kemtuik", ["kmu"] = "Kanite", ["kmv"] = "Karipúna Creole French", ["kmw"] = "Kumu", ["kmx"] = "Waboda", ["kmy"] = "Koma", ["kmz"] = "Khorasani Turkish", ["kn"] = "กันนฑะ", ["kna"] = "Kanakuru", ["knb"] = "Lubuagan Kalinga", ["knd"] = "Konda", ["kne"] = "กันกานาอือ", ["knf"] = "Mankanya", ["kni"] = "Kanufi", ["knj"] = "Akatek", ["knk"] = "Kuranko", ["knl"] = "Keninjal", ["knm"] = "Kanamari", ["kno"] = "Kono (Sierra Leone)", ["knp"] = "Kwanja", ["knq"] = "Kintaq", ["knr"] = "Kaningra", ["kns"] = "Kensiu", ["knt"] = "Katukina", ["knu"] = "Kono (Guinea)", ["knv"] = "Tabo", ["knx"] = "Kendayan", ["kny"] = "Kanyok", ["knz"] = "Kalamsé", ["ko"] = "เกาหลี", ["ko-ear"] = "เกาหลีใหม่ช่วงต้น", ["koa"] = "Konomala", ["koc"] = "Kpati", ["kod"] = "Kodi", ["koe"] = "Kacipo-Balesi", ["kof"] = "Kubi", ["kog"] = "Cogui", ["koh"] = "Koyo", ["koi"] = "Komi-Permyak", ["kok"] = "กงกัณ", ["kol"] = "Kol (New Guinea)", ["koo"] = "Konzo", ["kop"] = "Waube", ["koq"] = "Kota (Gabon)", ["kos"] = "Kosraean", ["kot"] = "Lagwan", ["kou"] = "Koke", ["kov"] = "Kudu-Camo", ["kow"] = "Kugama", ["koy"] = "Koyukon", ["koz"] = "Korak", ["kpa"] = "Kutto", ["kpb"] = "Mullu Kurumba", ["kpc"] = "Curripaco", ["kpd"] = "Koba", ["kpe"] = "Kpelle", ["kpf"] = "Komba", ["kpg"] = "Kapingamarangi", ["kph"] = "Kplang", ["kpi"] = "Kofei", ["kpj"] = "Karajá", ["kpk"] = "Kpan", ["kpl"] = "Kpala", ["kpm"] = "เกอฮอ", ["kpn"] = "Kepkiriwát", ["kpo"] = "Ikposo", ["kpq"] = "Korupun-Sela", ["kpr"] = "Korafe-Yegha", ["kps"] = "Tehit", ["kpt"] = "Karata", ["kpu"] = "Kafoa", ["kpv"] = "Komi-Zyrian", ["kpw"] = "Kobon", ["kpx"] = "Mountain Koiari", ["kpy"] = "Koryak", ["kpz"] = "Kupsabiny", ["kqa"] = "Mum", ["kqb"] = "Kovai", ["kqc"] = "Doromu-Koki", ["kqd"] = "Koy Sanjaq Surat", ["kqe"] = "กาลากัน", ["kqf"] = "Kakabai", ["kqg"] = "Khe", ["kqh"] = "Kisankasa", ["kqi"] = "Koitabu", ["kqj"] = "Koromira", ["kqk"] = "Kotafon Gbe", ["kql"] = "Kyenele", ["kqm"] = "Khisa", ["kqn"] = "Kaonde", ["kqo"] = "Eastern Krahn", ["kqp"] = "Kimré", ["kqq"] = "Krenak", ["kqr"] = "Kimaragang", ["kqs"] = "Northern Kissi", ["kqt"] = "Klias River Kadazan", ["kqu"] = "Seroa", ["kqv"] = "Okolod", ["kqw"] = "Kandas", ["kqx"] = "Mser", ["kqy"] = "Koorete", ["kqz"] = "Korana", ["kr"] = "กานูรี", ["kra"] = "Kumhali", ["krb"] = "Karkin", ["krc"] = "Karachay-Balkar", ["krd"] = "Kairui-Midiki", ["kre"] = "Panará", ["krf"] = "Koro (Vanuatu)", ["krh"] = "Kurama", ["kri"] = "Krio", ["krj"] = "Kinaray-a", ["krk"] = "Kerek", ["krl"] = "คาเรเลีย", ["krm"] = "Krim", ["krn"] = "Sapo", ["kro-pro"] = "Proto-Kru", ["krp"] = "Korop", ["krr"] = "Kru'ng", ["krs"] = "Kresh", ["kru"] = "กุรุข", ["krv"] = "Kavet", ["krw"] = "Western Krahn", ["krx"] = "Karon", ["kry"] = "Kryts", ["krz"] = "Sota Kanum", ["ks"] = "แคชเมียร์", ["ksa"] = "Shuwa-Zamani", ["ksb"] = "Shambala", ["ksc"] = "Southern Kalinga", ["ksd"] = "Tolai", ["kse"] = "Kuni", ["ksf"] = "Bafia", ["ksg"] = "Kusaghe", ["ksi"] = "Krisa", ["ksj"] = "Uare", ["ksk"] = "Kansa", ["ksl"] = "Kumalu", ["ksm"] = "Kumba", ["ksn"] = "Kasiguranin", ["kso"] = "Kofa", ["ksp"] = "Kaba", ["ksq"] = "Kwaami", ["ksr"] = "Borong", ["kss"] = "Southern Kissi", ["kst"] = "Winyé", ["ksu"] = "Khamyang", ["ksv"] = "Kusu", ["ksw"] = "กะเหรี่ยงสะกอ", ["ksx"] = "Kedang", ["ksy"] = "Kharia Thar", ["ksz"] = "Kodaku", ["kta"] = "Katua", ["ktb"] = "Kambaata", ["ktc"] = "Kholok", ["ktd"] = "Kokata", ["ktf"] = "Kwami", ["ktg"] = "Kalkatungu", ["kth"] = "Karanga", ["kti"] = "North Muyu", ["ktj"] = "Plapo Krumen", ["ktk"] = "Kaniet", ["ktl"] = "Koroshi", ["ktm"] = "Kurti", ["ktn"] = "Karitiâna", ["kto"] = "Kuot", ["ktp"] = "Kaduo", ["ktq"] = "Katabaga", ["ktr"] = "Kota Marudu Tinagas", ["kts"] = "South Muyu", ["ktt"] = "Ketum", ["ktu"] = "Kituba", ["ktv"] = "กะตูตะวันออก", ["ktw"] = "Kato", ["ktx"] = "Kaxararí", ["kty"] = "Kango", ["ktz"] = "Juǀ'hoan", ["ku-pro"] = "เคอร์ดิชดั้งเดิม", ["kub"] = "Kutep", ["kuc"] = "Kwinsu", ["kud"] = "Auhelawa", ["kue"] = "Kuman", ["kuf"] = "กะตูตะวันตก", ["kug"] = "Kupa", ["kuh"] = "Kushi", ["kui"] = "Kuikúro", ["kuj"] = "Kuria", ["kuk"] = "Kepo'", ["kul"] = "Kulere", ["kum"] = "คูมุก", ["kun"] = "Kunama", ["kuo"] = "Kumukio", ["kup"] = "Kunimaipa", ["kuq"] = "Karipuna", ["kus"] = "Kusaal", ["kut"] = "Ktunaxa", ["kuu"] = "Upper Kuskokwim", ["kuv"] = "Kur", ["kuw"] = "Kpagua", ["kux"] = "Kukatja", ["kuy"] = "Kuuku-Ya'u", ["kuz"] = "Kunza", ["kva"] = "Bagvalal", ["kvb"] = "Kubu", ["kvc"] = "Kove", ["kvd"] = "Kui (Indonesia)", ["kve"] = "Kalabakan", ["kvf"] = "Kabalai", ["kvg"] = "Kuni-Boazi", ["kvh"] = "Komodo", ["kvi"] = "Kwang", ["kvj"] = "Psikye", ["kvk"] = "Korean Sign Language", ["kvl"] = "Brek Karen", ["kvm"] = "Kendem", ["kvn"] = "Border Kuna", ["kvo"] = "Dobel", ["kvp"] = "Kompane", ["kvq"] = "Geba Karen", ["kvr"] = "Kerinci", ["kvt"] = "Lahta Karen", ["kvu"] = "Yinbaw Karen", ["kvv"] = "Kola", ["kvw"] = "Wersing", ["kvx"] = "Parkari Koli", ["kvy"] = "Yintale Karen", ["kvz"] = "Tsakwambo", ["kw"] = "คอร์นวอลล์", ["kwa"] = "Dâw", ["kwb"] = "Baa", ["kwc"] = "Likwala", ["kwd"] = "Kwaio", ["kwe"] = "Kwerba", ["kwf"] = "Kwara'ae", ["kwg"] = "Sara Kaba Deme", ["kwh"] = "Kowiai", ["kwi"] = "Awa-Cuaiquer", ["kwj"] = "Kwanga", ["kwk"] = "Kwak'wala", ["kwl"] = "Kofyar", ["kwm"] = "Kwambi", ["kwn"] = "Kwangali", ["kwo"] = "Kwomtari", ["kwp"] = "Kodia", ["kwq"] = "Kwak", ["kwr"] = "Kwer", ["kws"] = "Kwese", ["kwt"] = "Kwesten", ["kwu"] = "Kwakum", ["kwv"] = "Sara Kaba Náà", ["kww"] = "Kwinti", ["kwx"] = "Khirwar", ["kwz"] = "Kwadi", ["kxa"] = "Kairiru", ["kxb"] = "Krobu", ["kxc"] = "Konso", ["kxd"] = "มลายูแบบบรูไน", ["kxe"] = "Kakihum", ["kxf"] = "Manumanaw Karen", ["kxh"] = "Karo", ["kxi"] = "Keningau Murut", ["kxj"] = "Kulfa", ["kxk"] = "Zayein Karen", ["kxl"] = "Nepali Kurux", ["kxm"] = "เขมรเหนือ", ["kxn"] = "Kanowit", ["kxo"] = "Kanoé", ["kxp"] = "Wadiyara Koli", ["kxq"] = "Smärky Kanum", ["kxr"] = "Manus Koro", ["kxs"] = "Kangjia", ["kxt"] = "Koiwat", ["kxu"] = "Kui (India)", ["kxv"] = "Kuvi", ["kxw"] = "Konai", ["kxx"] = "Likuba", ["kxy"] = "Kayong", ["kxz"] = "Kerewo", ["ky"] = "คีร์กีซ", ["kya"] = "Kwaya", ["kyb"] = "Butbut Kalinga", ["kyc"] = "Kyaka", ["kyd"] = "Karey", ["kye"] = "Krache", ["kyf"] = "Kouya", ["kyg"] = "Keyagana", ["kyh"] = "Karok", ["kyi"] = "Kiput", ["kyj"] = "กาเรา", ["kyk"] = "Kamayo", ["kyl"] = "Kalapuya", ["kym"] = "Kpatili", ["kyn"] = "Karolanos", ["kyo"] = "Kelon", ["kyp"] = "Kang", ["kyq"] = "Kenga", ["kyr"] = "Kuruáya", ["kys"] = "Baram Kayan", ["kyt"] = "Kayagar", ["kyu"] = "กะยาตะวันตก", ["kyv"] = "Kayort", ["kyw"] = "Kudmali", ["kyx"] = "Rapoisi", ["kyy"] = "Kambaira", ["kyz"] = "Kayabí", ["kza"] = "Western Karaboro", ["kzb"] = "Kaibobo", ["kzc"] = "Bondoukou Kulango", ["kzd"] = "Kadai", ["kzf"] = "Da'a Kaili", ["kzg"] = "Kikai", ["kzh"] = "Dongolawi", ["kzi"] = "Kelabit", ["kzj"] = "กาดาซันชายฝั่ง", ["kzk"] = "Kazukuru", ["kzl"] = "Kayeli", ["kzm"] = "Kais", ["kzn"] = "Kokola", ["kzo"] = "Kaningi", ["kzp"] = "Kaidipang", ["kzq"] = "Kaike", ["kzr"] = "Karang", ["kzs"] = "Sugut Dusun", ["kzt"] = "Tambunan Dusun", ["kzu"] = "Kayupulau", ["kzv"] = "Komyandaret", ["kzw"] = "Kariri", ["kzx"] = "Kamarian", ["kzy"] = "Kango-Sua", ["kzz"] = "Kalabra", ["la"] = "ละติน", ["laa"] = "Lapuyan Subanun", ["lab"] = "Linear A", ["lac"] = "Lacandon", ["lad"] = "ลาดิโน", ["lae"] = "Pattani", ["laf"] = "Lafofa", ["lag"] = "Langi", ["lah"] = "Lahnda", ["lai"] = "Lambya", ["laj"] = "Lango (Uganda)", ["lak"] = "Laka", ["lam"] = "Lamba", ["lan"] = "Laru", ["lap"] = "Kabba-Laka", ["laq"] = "Qabiao", ["lar"] = "Larteh", ["las"] = "Gur Lama", ["lau"] = "Laba", ["law"] = "Lauje", ["lax"] = "Tiwa", ["lay"] = "Lama Bai", ["laz"] = "Aribwatsa", ["lb"] = "ลักเซมเบิร์ก", ["lbb"] = "Label", ["lbc"] = "ลักเกีย", ["lbe"] = "ลัก", ["lbf"] = "Tinani", ["lbg"] = "Laopang", ["lbi"] = "La'bi", ["lbj"] = "ลาดัก", ["lbk"] = "Central Bontoc", ["lbl"] = "Libon Bikol", ["lbm"] = "Lodhi", ["lbn"] = "Lamet", ["lbo"] = "Laven", ["lbq"] = "Wampar", ["lbr"] = "Northern Lorung", ["lbs"] = "Libyan Sign Language", ["lbt"] = "Lachi", ["lbu"] = "Labu", ["lbv"] = "Lavatbura-Lamusong", ["lbw"] = "Tolaki", ["lbx"] = "Lawangan", ["lby"] = "Lamu-Lamu", ["lbz"] = "Lardil", ["lcc"] = "Legenyem", ["lcd"] = "Lola", ["lce"] = "Loncong", ["lcf"] = "Lubu", ["lch"] = "Luchazi", ["lcl"] = "Lisela", ["lcm"] = "Tungag", ["lcp"] = "เลอเวือะตะวันตก", ["lcq"] = "Luhu", ["lcs"] = "Lisabata-Nuniali", ["lda"] = "Kla", ["ldb"] = "Idun", ["ldd"] = "Luri (Nigeria)", ["ldg"] = "Lenyima", ["ldh"] = "Lamja-Dengsa-Tola", ["ldj"] = "Lemoro", ["ldk"] = "Leelau", ["ldl"] = "Kaan", ["ldm"] = "Landoma", ["ldn"] = "Láadan", ["ldo"] = "Loo", ["ldp"] = "Tso", ["ldq"] = "Lufu", ["lea"] = "Lega-Shabunda", ["leb"] = "Lala-Bisa", ["lec"] = "Leco", ["led"] = "Lendu", ["lee"] = "Lyélé", ["lef"] = "Lelemi", ["leh"] = "Lenje", ["lei"] = "Lemio", ["lej"] = "Lengola", ["lek"] = "Leipon", ["lel"] = "Lele (Congo)", ["lem"] = "Nomaande", ["len"] = "Honduran Lenca", ["leo"] = "Mengisa", ["lep"] = "Lepcha", ["leq"] = "Lembena", ["ler"] = "Lenkau", ["les"] = "Lese", ["let"] = "Lesing-Gelimi", ["leu"] = "Kara (New Guinea)", ["lev"] = "Lamma", ["lew"] = "Ledo Kaili", ["lex"] = "Luang", ["ley"] = "Lemolang", ["lez"] = "เลซกี", ["lfa"] = "Lefa", ["lfn"] = "Lingua Franca Nova", ["lg"] = "ลูกันดา", ["lga"] = "Lungga", ["lgb"] = "Laghu", ["lgg"] = "Lugbara", ["lgh"] = "Laghuu", ["lgi"] = "Lengilu", ["lgk"] = "Neverver", ["lgl"] = "Wala", ["lgm"] = "Lega-Mwenga", ["lgn"] = "Opuuo", ["lgq"] = "Logba", ["lgr"] = "Lengo", ["lgs"] = "Guinea-Bissau Sign Language", ["lgt"] = "Pahi", ["lgu"] = "Longgu", ["lgz"] = "Ligenza", ["lha"] = "Laha (Vietnam)", ["lhh"] = "Laha (Indonesia)", ["lhi"] = "Lahu Shi", ["lhl"] = "Lahul Lohar", ["lhn"] = "Lahanan", ["lhp"] = "Lhokpu", ["lhs"] = "Mlahsö", ["lht"] = "Lo-Toga", ["lhu"] = "Lahu", ["li"] = "ลิมเบิร์ก", ["lia"] = "West-Central Limba", ["lib"] = "Likum", ["lic"] = "ไหล", ["lid"] = "Nyindrou", ["lie"] = "Likila", ["lif"] = "ลิมบู", ["lig"] = "Ligbi", ["lih"] = "Lihir", ["lii"] = "Lingkhim", ["lij"] = "ลีกูเรีย", ["lik"] = "Lika", ["lil"] = "Lillooet", ["lio"] = "Liki", ["lip"] = "Sekpele", ["liq"] = "Libido", ["lir"] = "Liberian Kreyol", ["lis"] = "ลีสู่", ["liu"] = "Logorik", ["liv"] = "ลีโวเนีย", ["liw"] = "Col", ["lix"] = "Liabuku", ["liy"] = "Banda-Bambari", ["liz"] = "Libinza", ["lja"] = "Golpa", ["lje"] = "Rampi", ["lji"] = "Laiyolo", ["ljl"] = "Li'o", ["ljp"] = "Lampung Api", ["ljw"] = "Yirandali", ["ljx"] = "Yuru", ["lka"] = "Lakalei", ["lkb"] = "Kabras", ["lkc"] = "Kucong", ["lkd"] = "Lakondê", ["lke"] = "Kenyi", ["lkh"] = "Lakha", ["lki"] = "Laki", ["lkj"] = "Remun", ["lkl"] = "Laeko-Libuat", ["lkm"] = "Kalaamaya", ["lkn"] = "Lakon", ["lko"] = "Khayo", ["lkr"] = "Päri", ["lks"] = "Kisa", ["lkt"] = "Lakota", ["lku"] = "Kungkari", ["lky"] = "Lokoya", ["lla"] = "Lala-Roba", ["llb"] = "Lolo", ["llc"] = "Lele (Guinea)", ["lld"] = "ลาดิน", ["lle"] = "Lele (New Guinea)", ["llf"] = "Hermit", ["llg"] = "Lole", ["llh"] = "Lamu", ["lli"] = "Teke-Laali", ["llj"] = "Ladji-Ladji", ["llk"] = "Lelak", ["lll"] = "Lilau", ["llm"] = "Lasalimu", ["lln"] = "Lele (Chad)", ["llo"] = "Khlor", ["llp"] = "North Efate", ["llq"] = "Lolak", ["lls"] = "Lithuanian Sign Language", ["llu"] = "Lau", ["llx"] = "Lauan", ["lma"] = "East Limba", ["lmb"] = "Merei", ["lmc"] = "Limilngan", ["lmd"] = "Lumun", ["lme"] = "Pévé", ["lmf"] = "South Lembata", ["lmg"] = "Lamogai", ["lmh"] = "Lambichhong", ["lmi"] = "Lombi", ["lmj"] = "West Lembata", ["lmk"] = "Lamkang", ["lml"] = "Raga", ["lmn"] = "Lambadi", ["lmo"] = "ลอมบาร์ด", ["lmp"] = "Limbum", ["lmq"] = "Lamatuka", ["lmr"] = "Lamalera", ["lmu"] = "Lamenu", ["lmv"] = "Lomaiviti", ["lmw"] = "Lake Miwok", ["lmx"] = "Laimbue", ["lmy"] = "ลัมโบยา", ["lmz"] = "Lumbee", ["ln"] = "ลิงกาลา", ["lna"] = "Langbashe", ["lnb"] = "Mbalanhu", ["lnd"] = "Lun Bawang", ["lnh"] = "Lanoh", ["lni"] = "Daantanai'", ["lnj"] = "Linngithigh", ["lnl"] = "South Central Banda", ["lnm"] = "Langam", ["lnn"] = "Lorediakarkar", ["lno"] = "Lango (Sudan)", ["lns"] = "Lamnso'", ["lnu"] = "Longuda", ["lnw"] = "Lanima", ["lo"] = "ลาว", ["loa"] = "Loloda", ["lob"] = "Lobi", ["loc"] = "Inonhan", ["lod"] = "เบอราวัน", ["loe"] = "Saluan", ["lof"] = "Logol", ["log"] = "Logo", ["loh"] = "Narim", ["loi"] = "Lomakka", ["loj"] = "Lou", ["lok"] = "Loko", ["lol"] = "Mongo", ["lom"] = "Loma", ["lon"] = "Malawi Lomwe", ["loo"] = "Lombo", ["lop"] = "Lopa", ["loq"] = "Lobala", ["lor"] = "Téén", ["los"] = "Loniu", ["lot"] = "Lotuko", ["lou"] = "ครีโอลลุยเซียนา", ["lov"] = "Lopi", ["low"] = "Tampias Lobu", ["lox"] = "Loun", ["loz"] = "Lozi", ["lpa"] = "Lelepa", ["lpe"] = "Lepki", ["lpn"] = "Long Phuri Naga", ["lpo"] = "Lipo", ["lpx"] = "Lopit", ["lra"] = "Rara Bakati'", ["lrc"] = "Northern Luri", ["lre"] = "Laurentian", ["lrg"] = "Laragia", ["lri"] = "Marachi", ["lrk"] = "Loarki", ["lrl"] = "Larestani", ["lrm"] = "Marama", ["lrn"] = "Lorang", ["lro"] = "Laro", ["lrr"] = "Southern Lorung", ["lrt"] = "Larantuka Malay", ["lrv"] = "Larëvat", ["lrz"] = "Lemerig", ["lsa"] = "Lasgerdi", ["lsd"] = "Lishana Deni", ["lse"] = "Lusengo", ["lsh"] = "Lish", ["lsi"] = "Lashi", ["lsl"] = "Latvian Sign Language", ["lsm"] = "Saamia", ["lsn"] = "Tibetan Sign Language", ["lso"] = "Laos Sign Language", ["lsp"] = "Panamanian Sign Language", ["lsr"] = "Aruop", ["lss"] = "Lasi", ["lst"] = "Trinidad and Tobago Sign Language", ["lsv"] = "Sivia Sign Language", ["lsy"] = "Mauritian Sign Language", ["lt"] = "ลิทัวเนีย", ["ltc"] = "จีนยุคกลาง", ["ltg"] = "ลัตเกล", ["lti"] = "Leti", ["ltn"] = "Latundê", ["lto"] = "Olutsotso", ["lts"] = "Lutachoni", ["ltu"] = "Latu", ["lu"] = "Luba-Katanga", ["lua"] = "Luba-Kasai", ["luc"] = "Aringa", ["lud"] = "Ludian", ["lue"] = "Luvale", ["luf"] = "Laua", ["luh"] = "หล่อยแอว๋", ["lui"] = "Luiseño", ["luj"] = "Luna", ["luk"] = "Lunanakha", ["lul"] = "Olu'bo", ["lum"] = "Luimbi", ["lun"] = "Lunda", ["luo"] = "Luo", ["lup"] = "Lumbu", ["luq"] = "Lucumí", ["lur"] = "Laura", ["lus"] = "มีโซ", ["lut"] = "Lushootseed", ["luu"] = "Lumba-Yakkha", ["luv"] = "Luwati", ["luy"] = "Luhya", ["luz"] = "Southern Luri", ["lv"] = "ลัตเวีย", ["lva"] = "Maku'a", ["lvi"] = "Lawi", ["lvk"] = "Lavukaleve", ["lvl"] = "Lwel", ["lvu"] = "Levuka", ["lwa"] = "Lwalu", ["lwe"] = "Lewo Eleng", ["lwg"] = "Wanga", ["lwh"] = "White Lachi", ["lwl"] = "เลอเวือะตะวันออก", ["lwm"] = "Laomian", ["lwo"] = "Luwo", ["lws"] = "Malawian Sign Language", ["lwt"] = "Lewotobi", ["lwu"] = "Lawu", ["lww"] = "Lewo", ["lya"] = "Layakha", ["lyg"] = "ลึงงัม", ["lyn"] = "Luyana", ["lzh"] = "จีนวรรณกรรม", ["lzl"] = "Litzlitz", ["lzn"] = "Leinong Naga", ["lzz"] = "ลัซ", ["maa"] = "San Jerónimo Tecóatl Mazatec", ["mab"] = "Yutanduchi Mixtec", ["mad"] = "Madurese", ["mae"] = "Bo-Rukul", ["maf"] = "Mafa", ["mag"] = "มคหะ", ["mai"] = "ไมถิลี", ["maj"] = "Jalapa de Díaz Mazatec", ["mak"] = "มากัซซาร์", ["mam"] = "Mam", ["man"] = "Mandingo", ["map-ata-pro"] = "Proto-Atayalic", ["map-bms"] = "Banyumasan", ["map-pro"] = "ออสโตรนีเซียนดั้งเดิม", ["maq"] = "Chiquihuitlán Mazatec", ["mas"] = "มาไซ", ["mat"] = "Matlatzinca", ["mau"] = "Huautla Mazatec", ["mav"] = "Sateré-Mawé", ["maw"] = "Mampruli", ["max"] = "North Moluccan Malay", ["maz"] = "Central Mazahua", ["mba"] = "Higaonon", ["mbb"] = "Western Bukidnon Manobo", ["mbc"] = "Macushi", ["mbd"] = "Dibabawon Manobo", ["mbe"] = "Molale", ["mbf"] = "Baba Malay", ["mbh"] = "Mangseng", ["mbi"] = "Ilianen Manobo", ["mbj"] = "Nadëb", ["mbk"] = "Malol", ["mbl"] = "Maxakalí", ["mbm"] = "Ombamba", ["mbn"] = "Macaguán", ["mbo"] = "Mbo (Cameroon)", ["mbp"] = "Wiwa", ["mbq"] = "Maisin", ["mbr"] = "Nukak Makú", ["mbs"] = "Sarangani Manobo", ["mbt"] = "Matigsalug Manobo", ["mbu"] = "Mbula-Bwazza", ["mbv"] = "Mbulungish", ["mbw"] = "Maring", ["mbx"] = "Sepik Mari", ["mby"] = "Memoni", ["mbz"] = "Amoltepec Mixtec", ["mca"] = "Maca", ["mcb"] = "Machiguenga", ["mcc"] = "Bitur", ["mcd"] = "Sharanahua", ["mce"] = "Itundujia Mixtec", ["mcf"] = "Matsés", ["mcg"] = "Mapoyo", ["mch"] = "Ye'kwana", ["mci"] = "Mese", ["mcj"] = "Mvanip", ["mck"] = "Mbunda", ["mcl"] = "Macaguaje", ["mcm"] = "Kristang", ["mcn"] = "Masana", ["mco"] = "Coatlán Mixe", ["mcp"] = "Makaa", ["mcq"] = "Ese", ["mcr"] = "Menya", ["mcs"] = "Mambai", ["mcu"] = "Cameroon Mambila", ["mcw"] = "Mawa", ["mcx"] = "Mpiemo", ["mcy"] = "South Watut", ["mcz"] = "Mawan", ["mda"] = "Mada (Nigeria)", ["mdb"] = "Morigi", ["mdc"] = "Male", ["mdd"] = "Mbum", ["mde"] = "Bura Mabang", ["mdf"] = "มอกชา", ["mdg"] = "Massalat", ["mdh"] = "มากินดาเนา", ["mdi"] = "Mamvu", ["mdj"] = "Mangbetu", ["mdk"] = "Mangbutu", ["mdl"] = "Maltese Sign Language", ["mdm"] = "Mayogo", ["mdn"] = "Mbati", ["mdp"] = "Mbala", ["mdq"] = "Mbole", ["mdr"] = "Mandar", ["mds"] = "Maria", ["mdt"] = "Mbere", ["mdu"] = "Mboko", ["mdv"] = "Santa Lucía Monteverde Mixtec", ["mdw"] = "Mbosi", ["mdx"] = "Dizin", ["mdy"] = "Maale", ["mdz"] = "Suruí Do Pará", ["mea"] = "Menka", ["meb"] = "Ikobi-Mena", ["mec"] = "Mara", ["med"] = "Melpa", ["mee"] = "Mengen", ["mef"] = "Megam", ["meh"] = "Southwestern Tlaxiaco Mixtec", ["mei"] = "Midob", ["mej"] = "Meyah", ["mek"] = "Mekeo", ["mel"] = "Central Melanau", ["mem"] = "Mangala", ["men"] = "Mende", ["meo"] = "มลายูแบบเกอดะฮ์", ["mep"] = "Miriwung", ["meq"] = "Merey", ["mer"] = "Meru", ["mes"] = "Masmaje", ["met"] = "Mato", ["meu"] = "Motu", ["mev"] = "Mano", ["mew"] = "Maaka", ["mey"] = "Hassaniya Arabic", ["mez"] = "Menominee", ["mfa"] = "มลายูแบบปัตตานี", ["mfb"] = "Bangka", ["mfc"] = "Mba", ["mfd"] = "Mendankwe-Nkwen", ["mfe"] = "ครีโอลมอริเชียส", ["mff"] = "Naki", ["mfg"] = "Mixifore", ["mfh"] = "Matal", ["mfi"] = "Wandala", ["mfj"] = "Mefele", ["mfk"] = "North Mofu", ["mfl"] = "Putai", ["mfm"] = "Marghi South", ["mfn"] = "Cross River Mbembe", ["mfo"] = "Mbe", ["mfp"] = "Makassar Malay", ["mfq"] = "Moba", ["mfr"] = "Marrithiyel", ["mfs"] = "Mexican Sign Language", ["mft"] = "Mokerang", ["mfu"] = "Mbwela", ["mfv"] = "Mandjak", ["mfw"] = "Mulaha", ["mfx"] = "Melo", ["mfy"] = "Mayo", ["mfz"] = "Mabaan", ["mg"] = "มาลากาซี", ["mga"] = "ไอริชกลาง", ["mgb"] = "Mararit", ["mgc"] = "Morokodo", ["mgd"] = "Moru", ["mge"] = "Mango", ["mgf"] = "Maklew", ["mgg"] = "Mpongmpong", ["mgh"] = "Makhuwa-Meetto", ["mgi"] = "Jili", ["mgj"] = "Abureni", ["mgk"] = "Mawes", ["mgl"] = "Maleu-Kilenge", ["mgm"] = "Mambae", ["mgn"] = "Mbangi", ["mgo"] = "Meta'", ["mgp"] = "Eastern Magar", ["mgq"] = "Malila", ["mgr"] = "Mambwe-Lungu", ["mgs"] = "Manda (Tanzania)", ["mgt"] = "Mongol", ["mgu"] = "Mailu", ["mgv"] = "Matengo", ["mgw"] = "Matumbi", ["mgy"] = "Mbunga", ["mgz"] = "Mbugwe", ["mh"] = "มาร์แชลล์", ["mha"] = "Manda (India)", ["mhb"] = "Mahongwe", ["mhc"] = "Mocho", ["mhd"] = "Mbugu", ["mhe"] = "Besisi", ["mhf"] = "Mamaa", ["mhg"] = "Marrgu", ["mhi"] = "Ma'di", ["mhj"] = "Mogholi", ["mhk"] = "Mungaka", ["mhl"] = "Mauwake", ["mhm"] = "Makhuwa-Moniga", ["mhn"] = "โมเชโน", ["mho"] = "Mashi", ["mhp"] = "Balinese Malay", ["mhq"] = "Mandan", ["mhr"] = "Eastern Mari", ["mhs"] = "Buru (Indonesia)", ["mht"] = "Mandahuaca", ["mhu"] = "Taraon", ["mhw"] = "Mbukushu", ["mhx"] = "Lhao Vo", ["mhy"] = "Ma'anyan", ["mhz"] = "Mor (Austronesian)", ["mi"] = "มาวรี", ["mia"] = "Miami", ["mib"] = "Atatláhuca Mixtec", ["mic"] = "Mi'kmaq", ["mid"] = "Mandaic", ["mie"] = "Ocotepec Mixtec", ["mif"] = "Mofu-Gudur", ["mig"] = "San Miguel el Grande Mixtec", ["mih"] = "Chayuco Mixtec", ["mii"] = "Chigmecatitlán Mixtec", ["mij"] = "Mungbam", ["mik"] = "Mikasuki", ["mil"] = "Peñoles Mixtec", ["mim"] = "Alacatlatzala Mixtec", ["min"] = "มีนังกาเบา", ["mio"] = "Pinotepa Nacional Mixtec", ["mip"] = "Apasco-Apoala Mixtec", ["miq"] = "Miskito", ["mir"] = "Isthmus Mixe", ["mis-hkl"] = "Kelantan Peranakan Hokkien", ["mis-idn"] = "Idiom Neutral", ["mis-isa"] = "Isaurian", ["mis-jie"] = "Jie", ["mis-jzh"] = "Jizhao", ["mis-kas"] = "Kassite", ["mis-mmd"] = "Mimi of Decorse", ["mis-mmn"] = "Mimi of Nachtigal", ["mis-phi"] = "Philistine", ["mis-rou"] = "Rouran", ["mis-tdl"] = "Turdulian", ["mis-tdt"] = "Turdetanian", ["mis-tnw"] = "Tangwang", ["mis-tuh"] = "Tuyuhun", ["mis-tuo"] = "Tuoba", ["mis-wuh"] = "Wuhuan", ["mis-xbi"] = "Xianbei", ["mis-xnu"] = "Xiongnu", ["mit"] = "Southern Puebla Mixtec", ["miu"] = "Cacaloxtepec Mixtec", ["miw"] = "Akoye", ["mix"] = "Mixtepec Mixtec", ["miy"] = "Ayutla Mixtec", ["miz"] = "Coatzospan Mixtec", ["mjb"] = "Makalero", ["mjc"] = "San Juan Colorado Mixtec", ["mjd"] = "Northwest Maidu", ["mje"] = "Muskum", ["mjg-mgl"] = "Mongghul", ["mjg-mgr"] = "Mangghuer", ["mji"] = "Kim Mun", ["mjj"] = "Mawak", ["mjk"] = "Matukar", ["mjl"] = "Mandeali", ["mjm"] = "Medebur", ["mjn"] = "Mebu", ["mjo"] = "Malankuravan", ["mjp"] = "Malapandaram", ["mjq"] = "Malaryan", ["mjr"] = "Malavedan", ["mjs"] = "Miship", ["mjt"] = "Sawriya Paharia", ["mju"] = "Manna-Dora", ["mjv"] = "Mannan", ["mjw"] = "Karbi", ["mjx"] = "Mahali", ["mjy"] = "Mahican", ["mjz"] = "Majhi", ["mk"] = "มาซิโดเนีย", ["mka"] = "Mbre", ["mkb"] = "Mal Paharia", ["mkc"] = "Siliput", ["mke"] = "Mawchi", ["mkf"] = "Miya", ["mkg"] = "Mak (China)", ["mkh-asl-pro"] = "Proto-Aslian", ["mkh-ban-pro"] = "Proto-Bahnaric", ["mkh-kat-pro"] = "Proto-Katuic", ["mkh-khm-pro"] = "ขมุอิกดั้งเดิม", ["mkh-kmr-pro"] = "เขมรดั้งเดิม", ["mkh-mmn"] = "มอญกลาง", ["mkh-mnc-pro"] = "มอญดั้งเดิม", ["mkh-mvi"] = "เวียดนามกลาง", ["mkh-pal-pro"] = "ปะหล่องดั้งเดิม", ["mkh-pea-pro"] = "Proto-Pearic", ["mkh-pkn-pro"] = "Proto-Pakanic", ["mkh-pro"] = "มอญ-เขมรดั้งเดิม", ["mkh-vie-pro"] = "เวียตติกดั้งเดิม", ["mki"] = "Dhatki", ["mkj"] = "โมกิล", ["mkk"] = "Byep", ["mkl"] = "Mokole", ["mkm"] = "Moklen", ["mkn"] = "Kupang Malay", ["mko"] = "Mingang Doso", ["mkp"] = "Moikodi", ["mkq"] = "Bay Miwok", ["mkr"] = "Malas", ["mks"] = "Silacayoapan Mixtec", ["mkt"] = "Vamale", ["mku"] = "Konyanka Maninka", ["mkv"] = "Mav̋ea", ["mkx"] = "Cinamiguin Manobo", ["mky"] = "Taba", ["mkz"] = "Makasae", ["ml"] = "มลยาฬัม", ["mla"] = "Tamambo", ["mlb"] = "Mbule", ["mlc"] = "Caolan", ["mle"] = "Manambu", ["mlf"] = "มัล", ["mlh"] = "Mape", ["mli"] = "Malimpung", ["mlj"] = "Miltu", ["mlk"] = "Ilwana", ["mll"] = "Malua Bay", ["mlm"] = "Mulam", ["mln"] = "Malango", ["mlo"] = "Mlomp", ["mlp"] = "Bargam", ["mlq"] = "Western Maninkakan", ["mlr"] = "Vame", ["mls"] = "Masalit", ["mlu"] = "To'abaita", ["mlv"] = "Mwotlap", ["mlw"] = "Moloko", ["mlx"] = "Malfaxal", ["mlz"] = "Malaynon", ["mma"] = "Mama", ["mmb"] = "Momina", ["mmc"] = "Michoacán Mazahua", ["mmd"] = "Maonan", ["mme"] = "Tirax", ["mmf"] = "Mundat", ["mmg"] = "North Ambrym", ["mmh"] = "Mehináku", ["mmi"] = "Musar", ["mmj"] = "Majhwar", ["mmk"] = "Mukha-Dora", ["mml"] = "Man Met", ["mmm"] = "Maii", ["mmn"] = "Mamanwa", ["mmo"] = "Mangga Buang", ["mmp"] = "Musan", ["mmq"] = "Aisi", ["mmr"] = "Western Xiangxi Miao", ["mmt"] = "Malalamai", ["mmu"] = "Mmaala", ["mmv"] = "Miriti", ["mmw"] = "Emae", ["mmx"] = "Madak", ["mmy"] = "Migaama", ["mmz"] = "Mabaale", ["mn"] = "มองโกเลีย", ["mna"] = "Mbula", ["mnb"] = "Muna", ["mnc"] = "แมนจู", ["mnd"] = "Mondé", ["mne"] = "Naba", ["mnf"] = "Mundani", ["mng"] = "Eastern Mnong", ["mnh"] = "Mono (Congo)", ["mni"] = "มณีปุระ", ["mnj"] = "Munji", ["mnk"] = "Mandinka", ["mnl"] = "Tiale", ["mnm"] = "Mapena", ["mnn"] = "มนองใต้", ["mnp"] = "หมิ่นเหนือ", ["mnq"] = "Minriq", ["mnr"] = "Mono (California)", ["mns-cen"] = "Central Mansi", ["mns-nor"] = "Northern Mansi", ["mns-pro"] = "Proto-Mansi", ["mns-sou"] = "Southern Mansi", ["mnt"] = "Maykulan", ["mnu"] = "Mer", ["mnv"] = "Rennellese", ["mnw"] = "มอญ", ["mnw-tha"] = "มอญแบบไทย", ["mnx"] = "Manikion", ["mny"] = "Manyawa", ["mnz"] = "Moni", ["moa"] = "Mwan", ["moc"] = "Mocoví", ["mod"] = "Mobilian", ["moe"] = "มงตาแญ", ["mog"] = "Mongondow", ["moh"] = "Mohawk", ["moi"] = "Mboi", ["moj"] = "Monzombo", ["mok"] = "Morori", ["mom"] = "Monimbo", ["moo"] = "Monom", ["mop"] = "Mopan Maya", ["moq"] = "Mor (Papuan)", ["mor"] = "Moro", ["mos"] = "Moore", ["mot"] = "Barí", ["mou"] = "Mogum", ["mov"] = "Mojave", ["mow"] = "Moi (Congo)", ["mox"] = "Molima", ["moy"] = "Shekkacho", ["moz"] = "Mukulu", ["mpa"] = "Mpoto", ["mpb"] = "Mullukmulluk", ["mpc"] = "Mangarayi", ["mpd"] = "Machinere", ["mpe"] = "Majang", ["mpg"] = "Marba", ["mph"] = "Maung", ["mpi"] = "Mpade", ["mpj"] = "Martu Wangka", ["mpk"] = "Mbara (Chad)", ["mpl"] = "Middle Watut", ["mpm"] = "Yosondúa Mixtec", ["mpn"] = "Mindiri", ["mpo"] = "Miu", ["mpp"] = "Migabac", ["mpq"] = "Matís", ["mpr"] = "Vangunu", ["mps"] = "Dadibi", ["mpt"] = "Mian", ["mpu"] = "Makuráp", ["mpv"] = "Mungkip", ["mpw"] = "Mapidian", ["mpx"] = "Misima-Paneati", ["mpy"] = "Mapia", ["mpz"] = "Mpi", ["mqa"] = "Maba", ["mqb"] = "Mbuko", ["mqc"] = "Mangole", ["mqe"] = "Matepi", ["mqf"] = "Momuna", ["mqg"] = "Kota Bangun Kutai Malay", ["mqh"] = "Tlazoyaltepec Mixtec", ["mqi"] = "Mariri", ["mqj"] = "Mamasa", ["mqk"] = "Rajah Kabunsuwan Manobo", ["mql"] = "Mbelime", ["mqm"] = "South Marquesan", ["mqn"] = "Moronene", ["mqo"] = "Modole", ["mqp"] = "Manipa", ["mqq"] = "Minokok", ["mqr"] = "Mander", ["mqs"] = "West Makian", ["mqt"] = "Mok", ["mqu"] = "Mandari", ["mqv"] = "Mosimo", ["mqw"] = "Murupi", ["mqx"] = "Mamuju", ["mqy"] = "Manggarai", ["mqz"] = "Malasanga", ["mr"] = "มราฐี", ["mra"] = "Mlabri", ["mrb"] = "Sungwadia", ["mrc"] = "Maricopa", ["mrd"] = "Western Magar", ["mre"] = "Martha's Vineyard Sign Language", ["mrf"] = "Elseng", ["mrg"] = "Mising", ["mrh"] = "Mara Chin", ["mrj"] = "Western Mari", ["mrk"] = "Hmwaveke", ["mrl"] = "Mortlockese", ["mrm"] = "Mwerlap", ["mrn"] = "Cheke Holo", ["mro"] = "Mru", ["mrp"] = "Morouas", ["mrq"] = "North Marquesan", ["mrr"] = "Hill Maria", ["mrs"] = "Maragus", ["mrt"] = "Margi", ["mru"] = "Mono (Cameroon)", ["mrv"] = "Mangarevan", ["mrw"] = "มาราเนา", ["mrx"] = "Dineor", ["mry"] = "Karaga Mandaya", ["mrz"] = "Marind", ["ms"] = "มาเลเซีย", ["msb"] = "มัสบาเต", ["msc"] = "Sankaran Maninka", ["msd"] = "Yucatec Maya Sign Language", ["mse"] = "Musey", ["msf"] = "Mekwei", ["msg"] = "Moraid", ["msi"] = "Sabah Malay", ["msj"] = "Ma", ["msk"] = "Mansaka", ["msl"] = "Molof", ["msm"] = "Agusan Manobo", ["msn"] = "Vurës", ["mso"] = "Mombum", ["msp"] = "Maritsauá", ["msq"] = "Caac", ["msr"] = "Mongolian Sign Language", ["mss"] = "West Masela", ["msu"] = "Musom", ["msv"] = "Maslam", ["msw"] = "Mansoanka", ["msx"] = "Moresada", ["msy"] = "Aruamu", ["msz"] = "Momare", ["mt"] = "มอลตา", ["mta"] = "Cotabato Manobo", ["mtb"] = "Anyin Morofo", ["mtc"] = "Munit", ["mtd"] = "Mualang", ["mte"] = "Alu", ["mtf"] = "Murik (New Guinea)", ["mtg"] = "Una", ["mth"] = "Munggui", ["mti"] = "Maiwa (New Guinea)", ["mtj"] = "Moskona", ["mtk"] = "Mbe'", ["mtl"] = "Montol", ["mtm"] = "Mator", ["mtn"] = "Matagalpa", ["mto"] = "Totontepec Mixe", ["mtp"] = "Wichí Lhamtés Nocten", ["mtq"] = "เหมื่อง", ["mtr"] = "เมวาร์", ["mts"] = "Yora", ["mtt"] = "Mota", ["mtu"] = "Tututepec Mixtec", ["mtv"] = "Asaro'o", ["mtw"] = "Magahat", ["mtx"] = "Tidaá Mixtec", ["mty"] = "Nabi", ["mua"] = "Mundang", ["mub"] = "Mubi", ["muc"] = "Mbu'", ["mud"] = "Mednyj Aleut", ["mue"] = "Media Lengua", ["mug"] = "Musgu", ["muh"] = "Mündü", ["mui"] = "มูซี", ["muj"] = "Mabire", ["mul"] = "ร่วม", ["mum"] = "Maiwala", ["mun-pro"] = "มุนดาดั้งเดิม", ["muo"] = "Nyong", ["mup"] = "Malvi", ["muq"] = "Eastern Xiangxi Miao", ["mur"] = "Murle", ["mus"] = "Creek", ["mut"] = "Western Muria", ["muu"] = "Yaaku", ["muv"] = "Muthuvan", ["mux"] = "Bo-Ung", ["muy"] = "Muyang", ["muz"] = "Mursi", ["mva"] = "Manam", ["mvb"] = "Mattole", ["mvd"] = "Mamboru", ["mvg"] = "Yucuañe Mixtec", ["mvh"] = "Mire", ["mvi"] = "มิยาโกะ", ["mvk"] = "Mekmek", ["mvl"] = "Mbara (Australia)", ["mvm"] = "Muya", ["mvn"] = "Minaveha", ["mvo"] = "Marovo", ["mvp"] = "Duri", ["mvq"] = "Moere", ["mvr"] = "Marau", ["mvs"] = "Massep", ["mvt"] = "Mpotovoro", ["mvu"] = "Marfa", ["mvv"] = "Tagal Murut", ["mvw"] = "Machinga", ["mvx"] = "Meoswar", ["mvy"] = "Indus Kohistani", ["mvz"] = "Mesqan", ["mwa"] = "Mwatebu", ["mwb"] = "Juwal", ["mwc"] = "Are", ["mwe"] = "Mwera", ["mwf"] = "Murrinh-Patha", ["mwg"] = "Aiklep", ["mwh"] = "Mouk-Aria", ["mwi"] = "Labo", ["mwk"] = "Kita Maninkakan", ["mwl"] = "มีรังดา", ["mwm"] = "Sar", ["mwn"] = "Nyamwanga", ["mwo"] = "Sungwadaga", ["mwp"] = "Kala Lagaw Ya", ["mwq"] = "Mün Chin", ["mwr"] = "มาร์วาร์", ["mws"] = "Mwimbi-Muthambi", ["mwt"] = "Moken", ["mwu"] = "Mittu", ["mwv"] = "Mentawai", ["mww"] = "ม้งขาว", ["mwz"] = "Moingi", ["mxa"] = "Northwest Oaxaca Mixtec", ["mxb"] = "Tezoatlán Mixtec", ["mxd"] = "Modang", ["mxe"] = "Mele-Fila", ["mxf"] = "Malgbe", ["mxg"] = "Mbangala", ["mxh"] = "Mvuba", ["mxi"] = "Mozarabic", ["mxj"] = "Miju", ["mxk"] = "Monumbo", ["mxl"] = "Maxi Gbe", ["mxm"] = "Meramera", ["mxn"] = "Moi (Indonesia)", ["mxo"] = "Mbowe", ["mxp"] = "Tlahuitoltepec Mixe", ["mxq"] = "Juquila Mixe", ["mxr"] = "Murik (Malaysia)", ["mxs"] = "Huitepec Mixtec", ["mxt"] = "Jamiltepec Mixtec", ["mxu"] = "Mada (Cameroon)", ["mxv"] = "Metlatónoc Mixtec", ["mxw"] = "Namo", ["mxx"] = "Mahou", ["mxy"] = "Southeastern Nochixtlán Mixtec", ["mxz"] = "Central Masela", ["my"] = "พม่า", ["myb"] = "Mbay", ["myc"] = "Mayeka", ["mye"] = "Myene", ["myf"] = "Bambassi", ["myg"] = "Manta", ["myh"] = "Makah", ["myj"] = "Mangayat", ["myk"] = "Mamara Senoufo", ["myl"] = "Moma", ["mym"] = "Me'en", ["myn-chl"] = "Ch'olti'", ["myn-pro"] = "มายันดั้งเดิม", ["myo"] = "Anfillo", ["myp"] = "Pirahã", ["myr"] = "Muniche", ["mys"] = "Mesmes", ["myu"] = "Mundurukú", ["myv"] = "เอร์เซีย", ["myw"] = "Muyuw", ["myx"] = "Masaba", ["myy"] = "Macuna", ["myz"] = "Classical Mandaic", ["mza"] = "Santa María Zacatepec Mixtec", ["mzb"] = "Northern Saharan Berber", ["mzc"] = "Madagascar Sign Language", ["mzd"] = "Malimba", ["mze"] = "Morawa", ["mzg"] = "Monastic Sign Language", ["mzh"] = "Wichí Lhamtés Güisnay", ["mzi"] = "Ixcatlán Mazatec", ["mzj"] = "Manya", ["mzk"] = "Nigeria Mambila", ["mzl"] = "Mazatlán Mixe", ["mzm"] = "Mumuye", ["mzn"] = "มอแซนแดรอน", ["mzo"] = "Matipuhy", ["mzp"] = "Movima", ["mzq"] = "Mori Atas", ["mzr"] = "Marúbo", ["mzs"] = "ครีโอลมาเก๊า", ["mzt"] = "Mintil", ["mzu"] = "Inapang", ["mzv"] = "Manza", ["mzw"] = "Deg", ["mzx"] = "Mawayana", ["mzy"] = "Mozambican Sign Language", ["mzz"] = "Maiadomu", ["na"] = "นาอูรู", ["naa"] = "Namla", ["nab"] = "Nambikwara", ["nac"] = "Narak", ["nae"] = "Naka'ela", ["naf"] = "Nabak", ["nag"] = "Naga Pidgin", ["nah"] = "นาวัตล์", ["nai-ala"] = "Alazapa", ["nai-bay"] = "Bayogoula", ["nai-cal"] = "Calusa", ["nai-chi"] = "Chiquimulilla", ["nai-chu-pro"] = "Proto-Chumash", ["nai-cig"] = "Ciguayo", ["nai-ckn-pro"] = "Proto-Chinookan", ["nai-guz"] = "Guazacapán", ["nai-hit"] = "Hitchiti", ["nai-ipa"] = "Ipai", ["nai-jtp"] = "Jutiapa", ["nai-jum"] = "Jumaytepeque", ["nai-kat"] = "Kathlamet", ["nai-klp-pro"] = "Proto-Kalapuyan", ["nai-knm"] = "Konomihu", ["nai-kum"] = "Kumeyaay", ["nai-mac"] = "Macoris", ["nai-mdu-pro"] = "Proto-Maidun", ["nai-miz-pro"] = "Proto-Mixe-Zoque", ["nai-mus-pro"] = "Proto-Muskogean", ["nai-nao"] = "Naolan", ["nai-nrs"] = "New River Shasta", ["nai-okw"] = "Okwanuchu", ["nai-per"] = "Pericú", ["nai-pic"] = "Picuris", ["nai-plp-pro"] = "Proto-Plateau Penutian", ["nai-pom-pro"] = "Proto-Pomo", ["nai-qng"] = "Quinigua", ["nai-sca-pro"] = "Proto-Siouan-Catawban", ["nai-sin"] = "Sinacantán", ["nai-sln"] = "Salvadoran Lenca", ["nai-spt"] = "Sahaptin", ["nai-tap"] = "Tapachultec", ["nai-taw"] = "Tawasa", ["nai-teq"] = "Tequistlatec", ["nai-tip"] = "Tipai", ["nai-tot-pro"] = "Proto-Totozoquean", ["nai-tsi-pro"] = "Proto-Tsimshianic", ["nai-utn-pro"] = "Proto-Utian", ["nai-wai"] = "Waikuri", ["nai-wji"] = "Western Jicaque", ["nai-yup"] = "Yupiltepeque", ["naj"] = "Nalu", ["nak"] = "Nakanai", ["nal"] = "Nalik", ["nam"] = "Ngan'gityemerri", ["nan"] = "หมิ่นใต้", ["nan-dat"] = "Datian Min", ["nan-hbl"] = "ฮกเกี้ยน", ["nan-hlh"] = "Hailufeng Min", ["nan-lnx"] = "Longyan Min", ["nan-tws"] = "แต้จิ๋ว", ["nan-zhe"] = "Zhenan Min", ["nan-zsh"] = "Sanxiang Min", ["nao"] = "Naaba", ["nap"] = "นาโปลี", ["naq"] = "Khoekhoe", ["nar"] = "Iguta", ["nas"] = "Nasioi", ["nat"] = "Hungworo", ["naw"] = "Nawuri", ["nax"] = "Nakwi", ["nay"] = "Ngarrindjeri", ["naz"] = "Coatepec Nahuatl", ["nb"] = "นอร์เวย์แบบบุ๊กมอล", ["nba"] = "Nyemba", ["nbb"] = "Ndoe", ["nbc"] = "Chang", ["nbd"] = "Ngbinda", ["nbe"] = "Konyak Naga", ["nbg"] = "Nagarchal", ["nbh"] = "Ngamo", ["nbi"] = "Mao Naga", ["nbj"] = "Ngarinman", ["nbk"] = "Nake", ["nbm"] = "Ngbaka Ma'bo", ["nbn"] = "Kuri", ["nbo"] = "Nkukoli", ["nbp"] = "Nnam", ["nbq"] = "Nggem", ["nbr"] = "Numana", ["nbs"] = "Namibian Sign Language", ["nbt"] = "Na", ["nbu"] = "Rongmei Naga", ["nbv"] = "Ngamambo", ["nbw"] = "Southern Ngbandi", ["nby"] = "Ningera", ["nca"] = "Iyo", ["ncb"] = "นิโคบาร์กลาง", ["ncc"] = "Ponam", ["ncd"] = "Nachering", ["nce"] = "Yale", ["ncf"] = "Notsi", ["ncg"] = "Nisga'a", ["nch"] = "Central Huasteca Nahuatl", ["nci"] = "นาวัตล์คลาสสิก", ["ncj"] = "Northern Puebla Nahuatl", ["nck"] = "Nakara", ["ncl"] = "Michoacán Nahuatl", ["ncm"] = "Nambo", ["ncn"] = "Nauna", ["nco"] = "Sibe", ["ncr"] = "Ncane", ["ncs"] = "Nicaraguan Sign Language", ["nct"] = "Chothe Naga", ["ncu"] = "Chumburung", ["ncx"] = "Central Puebla Nahuatl", ["ncz"] = "Natchez", ["nd"] = "Northern Ndebele", ["nda"] = "Ndasa", ["ndb"] = "Kenswei Nsei", ["ndc"] = "Ndau", ["ndd"] = "Nde-Nsele-Nta", ["ndf"] = "Nadruvian", ["ndg"] = "Ndengereko", ["ndh"] = "Ndali", ["ndi"] = "Chamba Leko", ["ndj"] = "Ndamba", ["ndk"] = "Ndaka", ["ndl"] = "Ndolo", ["ndm"] = "Ndam", ["ndn"] = "Ngundi", ["ndp"] = "Ndo", ["ndq"] = "Ndombe", ["ndr"] = "Ndoola", ["nds"] = "เยอรมันต่ำ", ["nds-de"] = "เยอรมันต่ำแบบเยอรมนี", ["nds-nl"] = "Dutch Low Saxon", ["ndt"] = "Ndunga", ["ndu"] = "Dugun", ["ndv"] = "Ndut", ["ndw"] = "Ndobo", ["ndx"] = "Nduga", ["ndy"] = "Lutos", ["ndz"] = "Ndogo", ["ne"] = "เนปาล", ["nea"] = "Eastern Ngad'a", ["neb"] = "Toura", ["nec"] = "Nedebang", ["ned"] = "Nde-Gbite", ["nee"] = "Kumak", ["nef"] = "Nefamese", ["neg"] = "Negidal", ["neh"] = "Nyenkha", ["nej"] = "Neko", ["nek"] = "Neku", ["nem"] = "Nemi", ["nen"] = "Nengone", ["neo"] = "Ná-Meo", ["neq"] = "North Central Mixe", ["ner"] = "Yahadian", ["nes"] = "Bhoti Kinnauri", ["net"] = "Nete", ["neu"] = "Neo", ["nev"] = "Nyaheun", ["new"] = "เนวาร์", ["nex"] = "Neme", ["ney"] = "Neyo", ["nez"] = "Nez Perce", ["nfa"] = "Dhao", ["nfd"] = "Ahwai", ["nfl"] = "Äiwoo", ["nfr"] = "Nafaanra", ["nfu"] = "Mfumte", ["ng"] = "Ndonga", ["nga"] = "Ngbaka", ["ngb"] = "Northern Ngbandi", ["ngc"] = "Ngombe (Congo)", ["ngd"] = "Ngando (Central African Republic)", ["nge"] = "Ngemba", ["ngf-pro"] = "Proto-Trans-New Guinea", ["ngg"] = "Ngbaka Manza", ["ngh"] = "Nǀuu", ["ngi"] = "Ngizim", ["ngj"] = "Ngie", ["ngk"] = "Ngalkbun", ["ngl"] = "Lomwe", ["ngm"] = "Ngatik Men's Creole", ["ngn"] = "Ngwo", ["ngo"] = "Ngoni", ["ngp"] = "Ngulu", ["ngq"] = "Ngoreme", ["ngr"] = "Nagu", ["ngs"] = "Gvoko", ["ngt"] = "Ngeq", ["ngu"] = "Guerrero Nahuatl", ["ngv"] = "Nagumi", ["ngw"] = "Ngwaba", ["ngx"] = "Nggwahyi", ["ngy"] = "Tibea", ["ngz"] = "Ngungwel", ["nha"] = "Nhanda", ["nhb"] = "Beng", ["nhc"] = "Tabasco Nahuatl", ["nhd"] = "Chiripá", ["nhe"] = "Eastern Huasteca Nahuatl", ["nhf"] = "Nhuwala", ["nhg"] = "Tetelcingo Nahuatl", ["nhh"] = "Nahari", ["nhi"] = "Zacatlán-Ahuacatlán-Tepetzintla Nahuatl", ["nhk"] = "Cosoleacaque Nahuatl", ["nhm"] = "Morelos Nahuatl", ["nhn"] = "นาวัตล์ตอนกลาง", ["nho"] = "Takuu", ["nhp"] = "Pajapan Nahuatl", ["nhq"] = "Huaxcaleca Nahuatl", ["nhr"] = "Naro", ["nht"] = "Ometepec Nahuatl", ["nhu"] = "Noone", ["nhv"] = "Temascaltepec Nahuatl", ["nhw"] = "Western Huasteca Nahuatl", ["nhx"] = "Mecayapan Nahuatl", ["nhy"] = "Northern Oaxaca Nahuatl", ["nhz"] = "Santa María La Alta Nahuatl", ["nia"] = "Nias", ["nib"] = "Nakame", ["nic-bco-pro"] = "เบนูเอ-คองโกดั้งเดิม", ["nic-bod-pro"] = "แบนทอยด์ดั้งเดิม", ["nic-eov-pro"] = "Proto-Eastern Oti-Volta", ["nic-gns-pro"] = "Proto-Gurunsi", ["nic-grf-pro"] = "Proto-Grassfields", ["nic-gur-pro"] = "กูร์ดั้งเดิม", ["nic-jkn-pro"] = "Proto-Jukunoid", ["nic-lcr-pro"] = "Proto-Lower Cross River", ["nic-ogo-pro"] = "Proto-Ogoni", ["nic-ovo-pro"] = "Proto-Oti-Volta", ["nic-plt-pro"] = "Proto-Plateau", ["nic-pro"] = "ไนเจอร์-คองโกดั้งเดิม", ["nic-ubg-pro"] = "Proto-Ubangian", ["nic-ucr-pro"] = "Proto-Upper Cross River", ["nic-vco-pro"] = "วอลตา-คองโกดั้งเดิม", ["nid"] = "Ngandi", ["nie"] = "Niellim", ["nif"] = "Nek", ["nig"] = "Ngalakan", ["nih"] = "Nyiha", ["nii"] = "Nii", ["nij"] = "Ngaju", ["nik"] = "Southern Nicobarese", ["nil"] = "Nila", ["nim"] = "Nilamba", ["nin"] = "Ninzo", ["nio"] = "Nganasan", ["niq"] = "Nandi", ["nir"] = "Nimboran", ["nis"] = "Nimi", ["nit"] = "Southeastern Kolami", ["niu"] = "นีวเว", ["niv"] = "Nivkh", ["niw"] = "Nimo", ["nix"] = "Hema", ["niy"] = "Ngiti", ["niz"] = "Ningil", ["nja"] = "Nzanyi", ["njb"] = "Nocte", ["njh"] = "Lotha Naga", ["nji"] = "Gudanji", ["njj"] = "Njen", ["njl"] = "Njalgulgule", ["njm"] = "Angami", ["njn"] = "Liangmai Naga", ["njo"] = "Ao", ["njr"] = "Njerep", ["njs"] = "Nisa", ["njt"] = "Ndyuka-Trio Pidgin", ["nju"] = "Ngadjunmaya", ["njx"] = "Kunyi", ["njy"] = "Njyem", ["njz"] = "Nyishi", ["nka"] = "Nkoya", ["nkb"] = "Khoibu Naga", ["nkc"] = "Nkongho", ["nkd"] = "Koireng", ["nke"] = "Duke", ["nkf"] = "Inpui Naga", ["nkg"] = "Nekgini", ["nkh"] = "Khezha Naga", ["nki"] = "Thangal Naga", ["nkj"] = "Nakai", ["nkk"] = "Nokuku", ["nkm"] = "Namat", ["nkn"] = "Nkangala", ["nko"] = "Nkonya", ["nkp"] = "Niuatoputapu", ["nkq"] = "Nkami", ["nkr"] = "Nukuoro", ["nks"] = "North Asmat", ["nkt"] = "Nyika", ["nku"] = "Bouna Kulango", ["nkw"] = "Nkutu", ["nkx"] = "Nkoroo", ["nkz"] = "Nkari", ["nl"] = "ดัตช์", ["nla"] = "Ngombale", ["nlc"] = "Nalca", ["nle"] = "East Nyala", ["nlg"] = "Gela", ["nli"] = "Grangali", ["nlj"] = "Nyali", ["nlk"] = "Ninia Yali", ["nll"] = "Nihali", ["nlm"] = "Mankiyali", ["nlo"] = "Ngul", ["nlq"] = "Lao Naga", ["nlu"] = "Nchumbulu", ["nlv"] = "Orizaba Nahuatl", ["nlw"] = "Walangama", ["nlx"] = "Nahali", ["nly"] = "Nyamal", ["nlz"] = "Nalögo", ["nma"] = "Maram Naga", ["nmb"] = "Big Nambas", ["nmc"] = "Ngam", ["nmd"] = "Ndumu", ["nme"] = "Mzieme Naga", ["nmf"] = "Tangkhul Naga", ["nmg"] = "Kwasio", ["nmh"] = "Monsang Naga", ["nmi"] = "Nyam", ["nmj"] = "Ngombe (Central African Republic)", ["nmk"] = "Namakura", ["nml"] = "Ndemli", ["nmm"] = "Manangba", ["nmn"] = "ǃXóõ", ["nmo"] = "Moyon Naga", ["nmp"] = "Nimanbur", ["nmq"] = "Nambya", ["nmr"] = "Nimbari", ["nms"] = "Letemboi", ["nmt"] = "Namonuito", ["nmu"] = "Northeast Maidu", ["nmv"] = "Ngamini", ["nmw"] = "Nimoa", ["nmy"] = "Namuyi", ["nmz"] = "Nawdm", ["nn"] = "นอร์เวย์แบบนือนอสก์", ["nna"] = "Nyangumarta", ["nnb"] = "Nande", ["nnc"] = "Nancere", ["nnd"] = "West Ambae", ["nne"] = "Ngandyera", ["nnf"] = "Ngaing", ["nng"] = "Maring Naga", ["nnh"] = "Ngiemboon", ["nni"] = "North Nuaulu", ["nnj"] = "Nyangatom", ["nnk"] = "Nankina", ["nnl"] = "Northern Rengma Naga", ["nnm"] = "Namia", ["nnn"] = "Ngete", ["nnp"] = "Wancho", ["nnq"] = "Ngindo", ["nnr"] = "Narungga", ["nnt"] = "Nanticoke", ["nnu"] = "Dwang", ["nnv"] = "Nukunu", ["nnw"] = "Southern Nuni", ["nnx"] = "Ngong", ["nny"] = "Nyangga", ["nnz"] = "Nda'nda'", ["no"] = "นอร์เวย์", ["noa"] = "Woun Meu", ["noc"] = "Nuk", ["nod"] = "คำเมือง", ["noe"] = "Nimadi", ["nof"] = "Nomane", ["nog"] = "Nogai", ["noh"] = "Nomu", ["noi"] = "Noiri", ["noj"] = "Nonuya", ["nok"] = "Nooksack", ["nol"] = "Nomlaki", ["nom"] = "Nocamán", ["non"] = "นอร์สเก่า", ["nop"] = "Numanggang", ["noq"] = "Ngongo", ["nos"] = "Eastern Nisu", ["not"] = "Nomatsiguenga", ["nou"] = "Ewage-Notu", ["nov"] = "โนเวียล", ["now"] = "Nyambo", ["noy"] = "Noy", ["noz"] = "Nayi", ["npa"] = "Nar Phu", ["npb"] = "Nupbikha", ["npg"] = "Ponyo", ["nph"] = "Phom", ["npl"] = "Southeastern Puebla Nahuatl", ["npn"] = "Mondropolon", ["npo"] = "Pochuri Naga", ["nps"] = "Nipsan", ["npu"] = "Puimei Naga", ["npy"] = "Napu", ["nqg"] = "Ede Nago", ["nqk"] = "Kura Ede Nago", ["nql"] = "Ngendelengo", ["nqm"] = "Ndom", ["nqn"] = "Nen", ["nqo"] = "N'Ko", ["nqq"] = "Kyan-Karyaw Naga", ["nqy"] = "Akyaung Ari", ["nr"] = "Southern Ndebele", ["nra"] = "Ngom", ["nrb"] = "Nara", ["nrc"] = "Noric", ["nre"] = "Southern Rengma Naga", ["nrf"] = "นอร์มัน", ["nrg"] = "Narango", ["nri"] = "Chokri Naga", ["nrk"] = "Ngarla", ["nrl"] = "Ngarluma", ["nrm"] = "Narom", ["nrn"] = "Norn", ["nrp"] = "North Picene", ["nrr"] = "Norra", ["nrt"] = "Northern Kalapuya", ["nru"] = "Narua", ["nrx"] = "Ngurmbur", ["nrz"] = "Lala (New Guinea)", ["nsa"] = "Sangtam Naga", ["nsb"] = "Lower Nossob", ["nsc"] = "Nshi", ["nsd"] = "Southern Nisu", ["nse"] = "Nsenga", ["nsg"] = "Ngasa", ["nsh"] = "Ngoshie", ["nsi"] = "Nigerian Sign Language", ["nsk"] = "Naskapi", ["nsl"] = "Norwegian Sign Language", ["nsm"] = "Sema", ["nsn"] = "Nehan", ["nso"] = "ซูทูเหนือ", ["nsp"] = "มือเนปาล", ["nsq"] = "Northern Sierra Miwok", ["nsr"] = "Maritime Sign Language", ["nss"] = "Nali", ["nst"] = "Tangsa", ["nsu"] = "Sierra Negra Nahuatl", ["nsv"] = "Southwestern Nisu", ["nsw"] = "Navut", ["nsx"] = "Nsongo", ["nsy"] = "Nasal", ["nsz"] = "Nisenan", ["ntd"] = "Northern Tidung", ["ntg"] = "Ngantangarra", ["nti"] = "Natioro", ["ntj"] = "Ngaanyatjarra", ["ntk"] = "Ikoma", ["ntm"] = "Nateni", ["nto"] = "Ntomba", ["ntp"] = "Northern Tepehuan", ["ntr"] = "Delo", ["nts"] = "Natagaimas", ["ntu"] = "Natügu", ["ntw"] = "Nottoway", ["ntx"] = "Somra", ["nty"] = "Mantsi", ["nua"] = "Yuanga", ["nub-har"] = "Haraza", ["nub-pro"] = "นูเบียนดั้งเดิม", ["nuc"] = "Nukuini", ["nud"] = "Ngala", ["nue"] = "Ngundu", ["nuf"] = "Nusu", ["nug"] = "Nungali", ["nuh"] = "Ndunda", ["nui"] = "Ngumbi", ["nuj"] = "Nyole (Uganda)", ["nuk"] = "Nootka", ["nul"] = "Nusa Laut", ["num"] = "Niuafo'ou", ["nun"] = "Anong", ["nuo"] = "หง่วน", ["nup"] = "Nupe", ["nuq"] = "Nukumanu", ["nur"] = "Nuguria", ["nus"] = "Nuer", ["nut"] = "นุง", ["nuu"] = "Ngbundu", ["nuv"] = "Northern Nuni", ["nuw"] = "Nguluwan", ["nux"] = "Mehek", ["nuy"] = "Nunggubuyu", ["nuz"] = "Tlamacazapa Nahuatl", ["nv"] = "นาวาโฮ", ["nvh"] = "Nasarian", ["nvm"] = "Namiae", ["nvo"] = "Nyokon", ["nwa"] = "Nawathinehena", ["nwb"] = "Nyabwa", ["nwc"] = "เนวาร์คลาสสิก", ["nwe"] = "Ngwe", ["nwi"] = "Southwest Tanna", ["nwm"] = "Nyamusa-Molo", ["nwo"] = "Nauo", ["nwr"] = "Nawaru", ["nwx"] = "เนวาร์กลาง", ["nwy"] = "Nottoway-Meherrin", ["nxa"] = "Nauete", ["nxd"] = "Ngando (Congo)", ["nxe"] = "Nage", ["nxg"] = "Ngadha", ["nxi"] = "Nindi", ["nxl"] = "South Nuaulu", ["nxm"] = "Numidian", ["nxn"] = "Ngawun", ["nxo"] = "Ndambomo", ["nxq"] = "Naxi", ["nxr"] = "Ninggerum", ["nxx"] = "Nafri", ["ny"] = "เจวา", ["nyb"] = "Nyangbo", ["nyc"] = "Nyanga-li", ["nyd"] = "Nyole (Kenya)", ["nye"] = "Nyengo", ["nyf"] = "Giryama", ["nyg"] = "Nyindu", ["nyh"] = "Nyigina", ["nyi"] = "Nyimang", ["nyj"] = "Nyanga (Congo)", ["nyk"] = "Nyaneka", ["nyl"] = "Nyeu", ["nym"] = "Nyamwezi", ["nyn"] = "Nyankole", ["nyo"] = "Nyoro", ["nyp"] = "Nyang'i", ["nys"] = "Nyunga", ["nyt"] = "Nyawaygi", ["nyu"] = "Nyungwe", ["nyv"] = "Nyulnyul", ["nyw"] = "ญ้อ", ["nyx"] = "Nganyaywana", ["nyy"] = "Nyakyusa", ["nza"] = "Tigon Mbembe", ["nzb"] = "Njebi", ["nzd"] = "Nzadi", ["nzi"] = "Nzima", ["nzk"] = "Nzakara", ["nzm"] = "Zeme Naga", ["nzs"] = "New Zealand Sign Language", ["nzu"] = "Central Teke", ["nzy"] = "Nzakambay", ["nzz"] = "Nanga Dama Dogon", ["oaa"] = "Orok", ["oac"] = "Oroch", ["oak"] = "Noakhali", ["oav"] = "อะวาร์เก่า", ["obi"] = "Obispeño", ["obk"] = "Southern Bontoc", ["obl"] = "Oblo", ["obm"] = "โมอับ", ["obo"] = "Obo Manobo", ["obr"] = "พม่าเก่า", ["obt"] = "เบรอตงเก่า", ["obu"] = "Obulom", ["oc"] = "อุตซิตา", ["oca"] = "Ocaina", ["och"] = "จีนเก่า", ["oco"] = "คอร์นวอลล์เก่า", ["ocu"] = "Tlahuica", ["oda"] = "Odut", ["odk"] = "Od", ["odt"] = "ดัตช์เก่า", ["odu"] = "Odual", ["ofo"] = "Ofo", ["ofs"] = "ฟรีเชียเก่า", ["ofu"] = "Efutop", ["ogb"] = "Ogbia", ["ogc"] = "Ogbah", ["oge"] = "จอร์เจียเก่า", ["ogg"] = "Ogbogolo", ["ogo"] = "Khana", ["ogu"] = "Ogbronuagum", ["ohu"] = "ฮังการีเก่า", ["oia"] = "Oirata", ["oin"] = "Inebu One", ["oj"] = "โอจิบเว", ["ojb"] = "Northwestern Ojibwa", ["ojc"] = "Central Ojibwa", ["ojg"] = "Eastern Ojibwa", ["ojp"] = "ญี่ปุ่นเก่า", ["ojs"] = "Severn Ojibwa", ["ojv"] = "Ontong Java", ["ojw"] = "Western Ojibwa", ["oka"] = "Okanagan", ["okb"] = "Okobo", ["okd"] = "Okodia", ["oke"] = "Okpe (Southwestern Edo)", ["okg"] = "Kok-Paponk", ["okh"] = "Koresh-e Rostam", ["oki"] = "Okiek", ["okj"] = "Oko-Juwoi", ["okk"] = "Kwamtim One", ["okl"] = "Old Kentish Sign Language", ["okm"] = "เกาหลีกลาง", ["okn"] = "โอกิโนเอราบุ", ["oko"] = "เกาหลีเก่า", ["okr"] = "Kirike", ["oks"] = "Oko-Eni-Osayen", ["oku"] = "Oku", ["okv"] = "Orokaiva", ["okx"] = "Okpe (Northwestern Edo)", ["okz"] = "เขมรเก่า", ["old"] = "Mochi", ["ole"] = "Olekha", ["olm"] = "Oloma", ["olo"] = "ลิววี", ["olr"] = "Olrat", ["olt"] = "ลิทัวเนียเก่า", ["olu"] = "Kuvale", ["om"] = "ออโรโม", ["oma"] = "Omaha-Ponca", ["omb"] = "Omba", ["omc"] = "Mochica", ["omg"] = "Omagua", ["omi"] = "Omi", ["omk"] = "Omok", ["oml"] = "Ombo", ["omn"] = "ไมนอส", ["omo"] = "Utarmbung", ["omp"] = "มณีปุระเก่า", ["omq-cha-pro"] = "Proto-Chatino", ["omq-maz-pro"] = "Proto-Mazatec", ["omq-mix-pro"] = "Proto-Mixtecan", ["omq-mxt-pro"] = "Proto-Mixtec", ["omq-otp-pro"] = "Proto-Oto-Pamean", ["omq-pro"] = "Proto-Oto-Manguean", ["omq-sjq"] = "San Juan Quiahije Chatino", ["omq-tel"] = "Teposcolula Mixtec", ["omq-teo"] = "Teojomulco Chatino", ["omq-tri-pro"] = "Proto-Triqui", ["omq-zap-pro"] = "Proto-Zapotecan", ["omq-zpc-pro"] = "Proto-Zapotec", ["omr"] = "มราฐีเก่า", ["omt"] = "Omotik", ["omu"] = "Omurano", ["omv-aro-pro"] = "Proto-Aroid", ["omv-diz-pro"] = "Proto-Dizoid", ["omv-pro"] = "Proto-Omotic", ["omw"] = "South Tairora", ["omx"] = "มอญเก่า", ["ona"] = "Selk'nam", ["onb"] = "เบ", ["one"] = "Oneida", ["ong"] = "Olo", ["oni"] = "Onin", ["onj"] = "Onjob", ["onk"] = "Kabore One", ["onn"] = "Onobasulu", ["ono"] = "Onondaga", ["onp"] = "Sartang", ["onr"] = "Northern One", ["ons"] = "Ono", ["ont"] = "Ontenu", ["onu"] = "Unua", ["onw"] = "นิวเบียเก่า", ["onx"] = "Pidgin Onin", ["ood"] = "O'odham", ["oog"] = "Ong", ["oon"] = "Önge", ["oor"] = "Oorlams", ["opa"] = "Okpamheri", ["opk"] = "Kopkaka", ["opm"] = "Oksapmin", ["opo"] = "Opao", ["opt"] = "Opata", ["opy"] = "Ofayé", ["or"] = "โอริยา", ["ora"] = "Oroha", ["ore"] = "Orejón", ["org"] = "Oring", ["orh"] = "Oroqen", ["oro"] = "Orokolo", ["orr"] = "Oruma", ["ort"] = "Adivasi Odia", ["oru"] = "Ormuri", ["orv"] = "สลาวิกตะวันออกเก่า", ["orw"] = "Oro Win", ["orx"] = "Oro", ["orz"] = "Ormu", ["os"] = "ออสซีเซีย", ["osa"] = "Osage", ["osc"] = "Oscan", ["osi"] = "โอซิง", ["osn"] = "Old Sundanese", ["oso"] = "Ososo", ["osp"] = "สเปนเก่า", ["ost"] = "Osatu", ["osu"] = "Southern One", ["osx"] = "แซกซันเก่า", ["ota"] = "ตุรกีแบบออตโตมัน", ["otb"] = "ทิเบตเก่า", ["otd"] = "Ot Danum", ["ote"] = "Mezquital Otomi", ["oti"] = "Oti", ["otk"] = "เตอร์กิกเก่า", ["otl"] = "Tilapa Otomi", ["otm"] = "Eastern Highland Otomi", ["otn"] = "Tenango Otomi", ["oto-otm-pro"] = "Proto-Otomi", ["oto-pro"] = "Proto-Otomian", ["otq"] = "Querétaro Otomi", ["otr"] = "Otoro", ["ots"] = "Estado de México Otomi", ["ott"] = "Temoaya Otomi", ["otu"] = "Otuke", ["otw"] = "Ottawa", ["otx"] = "Texcatepec Otomi", ["oty"] = "ทมิฬเก่า", ["otz"] = "Ixtenco Otomi", ["oub"] = "Glio-Oubi", ["oue"] = "Oune", ["oui"] = "อุยกูร์เก่า", ["oum"] = "Ouma", ["ovd"] = "แอลฟ์ดาเลิน", ["owi"] = "Owiniga", ["owl"] = "เวลส์เก่า", ["oyb"] = "Oy", ["oyd"] = "Oyda", ["oym"] = "Wayampi", ["oyy"] = "Oya'oya", ["ozm"] = "Koonzime", ["pa"] = "ปัญจาบ", ["paa-bin-pro"] = "Proto-Binanderean", ["paa-kom"] = "Kómnzo", ["paa-kwn"] = "Kuwani", ["paa-nha-pro"] = "Proto-North Halmahera", ["paa-nun"] = "Nungon", ["pab"] = "Pareci", ["pac"] = "ปาโกะห์", ["pad"] = "Paumarí", ["pae"] = "Pagibete", ["paf"] = "Paranawát", ["pag"] = "Pangasinan", ["pah"] = "Tenharim", ["pai"] = "Pe", ["pak"] = "Parakanã", ["pal"] = "เปอร์เซียกลาง", ["pam"] = "กาปัมปางัน", ["pao"] = "Northern Paiute", ["pap"] = "ปาเปียเมนตู", ["paq"] = "Parya", ["par"] = "Panamint", ["pas"] = "Papasena", ["pau"] = "ปาเลา", ["pav"] = "Wari'", ["paw"] = "Pawnee", ["pax"] = "Pankararé", ["pay"] = "Pech", ["paz"] = "Pankararú", ["pbb"] = "Páez", ["pbc"] = "Patamona", ["pbe"] = "Mezontla Popoloca", ["pbf"] = "Coyotepec Popoloca", ["pbg"] = "Paraujano", ["pbh"] = "Panare", ["pbi"] = "Podoko", ["pbl"] = "Mak (Nigeria)", ["pbm"] = "Puebla Mazatec", ["pbn"] = "Kpasam", ["pbo"] = "Papel", ["pbp"] = "Badyara", ["pbr"] = "Pangwa", ["pbs"] = "Central Pame", ["pbv"] = "ปนัร", ["pby"] = "Pyu (New Guinea)", ["pca"] = "Santa Inés Ahuatempan Popoloca", ["pcb"] = "Pear", ["pcc"] = "ปู้อี", ["pcd"] = "ปีการ์", ["pce"] = "Ruching Palaung", ["pcf"] = "Paliyan", ["pcg"] = "Paniya", ["pch"] = "Pardhan", ["pci"] = "Duruwa", ["pcj"] = "Parenga", ["pck"] = "Paite", ["pcl"] = "Pardhi", ["pcm"] = "Nigerian Pidgin", ["pcn"] = "Piti", ["pcp"] = "Pacahuara", ["pcw"] = "Pyapun", ["pda"] = "Anam", ["pdc"] = "เยอรมันแบบเพนซิลเวเนีย", ["pdi"] = "Pa Di", ["pdn"] = "Fedan", ["pdo"] = "Padoe", ["pdt"] = "เพลาท์ดิทช์", ["pdu"] = "กะยัน", ["pea"] = "Peranakan Indonesian", ["peb"] = "Eastern Pomo", ["ped"] = "Mala (New Guinea)", ["pee"] = "Taje", ["pef"] = "Northeastern Pomo", ["peg"] = "Pengo", ["peh"] = "Bonan", ["pei"] = "Chichimeca-Jonaz", ["pej"] = "Northern Pomo", ["pek"] = "Penchal", ["pel"] = "Pekal", ["pem"] = "Phende", ["peo"] = "เปอร์เซียเก่า", ["pep"] = "Kunja", ["peq"] = "Southern Pomo", ["pev"] = "Pémono", ["pex"] = "Petats", ["pey"] = "Petjo", ["pez"] = "Eastern Penan", ["pfa"] = "Pááfang", ["pfe"] = "Peere", ["pga"] = "Juba Arabic", ["pgd"] = "คานธาระ", ["pgg"] = "ปังควาฬฺ", ["pgi"] = "Pagi", ["pgk"] = "Rerep", ["pgl"] = "Primitive Irish", ["pgn"] = "Paelignian", ["pgs"] = "Pangseng", ["pgu"] = "Pagu", ["pgz"] = "Papua New Guinean Sign Language", ["pha"] = "Pa-Hng", ["phd"] = "Phudagi", ["phg"] = "Phuong", ["phh"] = "Phukha", ["phi-din"] = "Dinapigue Agta", ["phi-kal-pro"] = "คาลาเมียนดั้งเดิม", ["phi-nag"] = "Nagtipunan Agta", ["phi-pro"] = "ฟิลิปปินส์ดั้งเดิม", ["phk"] = "พ่าเก", ["phl"] = "Palula", ["phm"] = "Phimbi", ["phn"] = "ฟินิเชีย", ["pho"] = "ผู้น้อย", ["phq"] = "Phana'", ["phr"] = "Pahari-Potwari", ["pht"] = "ผู้ไท", ["phu"] = "พวน", ["phv"] = "Pahlavani", ["phw"] = "Phangduwali", ["pi"] = "บาลี", ["pia"] = "Pima Bajo", ["pib"] = "Yine", ["pic"] = "Pinji", ["pid"] = "Piaroa", ["pie"] = "Piro", ["pif"] = "Pingelapese", ["pig"] = "Pisabo", ["pih"] = "Pitcairn-Norfolk", ["pii"] = "Pini", ["pij"] = "Pijao", ["pil"] = "Yom", ["pim"] = "Powhatan", ["pin"] = "Piame", ["pio"] = "Piapoco", ["pip"] = "Pero", ["pir"] = "Piratapuyo", ["pis"] = "Pijin", ["pit"] = "Pitta-Pitta", ["piu"] = "Pintupi-Luritja", ["piv"] = "Pileni", ["piw"] = "Pimbwe", ["pix"] = "Piu", ["piy"] = "Piya-Kwonci", ["piz"] = "Pije", ["pjt"] = "Pitjantjatjara", ["pkb"] = "Kipfokomo", ["pkc"] = "แพ็กเจ", ["pkg"] = "Pak-Tong", ["pkh"] = "Pankhu", ["pkn"] = "Pakanha", ["pko"] = "Pökoot", ["pkp"] = "ปูกาปูกา", ["pkr"] = "Attapady Kurumba", ["pks"] = "Pakistan Sign Language", ["pkt"] = "Maleng", ["pku"] = "Paku", ["pl"] = "โปแลนด์", ["pla"] = "Miani", ["plb"] = "Polonombauk", ["plc"] = "ปาลาวาโนตอนกลาง", ["ple"] = "Palu'e", ["plg"] = "Pilagá", ["plh"] = "Paulohi", ["plj"] = "Polci", ["plk"] = "Kohistani Shina", ["pll"] = "Shwe Palaung", ["pln"] = "Palenquero", ["plo"] = "Oluta Popoluca", ["plq"] = "Palaic", ["plr"] = "Palaka Senoufo", ["pls"] = "San Marcos Tlalcoyalco Popoloca", ["plu"] = "Palikur", ["plv"] = "ปาลาวาโนตะวันตกเฉียงใต้", ["plw"] = "ปาลาวาโนแบบบรูกส์พอยต์", ["ply"] = "Bolyu", ["plz"] = "Paluan", ["pma"] = "Paamese", ["pmb"] = "Pambia", ["pmd"] = "Pallanganmiddang", ["pme"] = "Pwaamèi", ["pmf"] = "Pamona", ["pmi"] = "Northern Pumi", ["pmj"] = "Southern Pumi", ["pmk"] = "Pamlico", ["pml"] = "Sabir", ["pmm"] = "Pol", ["pmn"] = "Pam", ["pmo"] = "Pom", ["pmq"] = "Northern Pame", ["pmr"] = "Paynamar", ["pms"] = "ปีเยมอนเต", ["pmt"] = "Tuamotuan", ["pmu"] = "Mirpur Panjabi", ["pmw"] = "Plains Miwok", ["pmx"] = "Poumei Naga", ["pmy"] = "Papuan Malay", ["pmz"] = "Southern Pame", ["pna"] = "Punan Bah-Biau", ["pnc"] = "Pannei", ["pnd"] = "Mpinda", ["pne"] = "Western Penan", ["png"] = "Pongu", ["pnh"] = "Penrhyn", ["pni"] = "Aoheng", ["pnj"] = "Pinjarup", ["pnk"] = "Paunaka", ["pnl"] = "Paleni", ["pnm"] = "Punan Batu", ["pnn"] = "Pinai-Hagahai", ["pno"] = "Panobo", ["pnp"] = "Pancana", ["pnq"] = "Pana (West Africa)", ["pnr"] = "Panim", ["pns"] = "Ponosakan", ["pnt"] = "Pontic Greek", ["pnu"] = "Jiongnai Bunu", ["pnv"] = "Pinigura", ["pnw"] = "Panyjima", ["pnx"] = "Phong-Kniang", ["pny"] = "Pinyin", ["pnz"] = "Pana (Central Africa)", ["poc"] = "Poqomam", ["poe"] = "San Juan Atzingo Popoloca", ["pof"] = "Poke", ["pog"] = "Potiguára", ["poh"] = "Poqomchi'", ["poi"] = "Highland Popoluca", ["pok"] = "Pokangá", ["pom"] = "Southeastern Pomo", ["pon"] = "Pohnpeian", ["poo"] = "Central Pomo", ["pop"] = "Pwapwâ", ["poq"] = "Texistepec Popoluca", ["pos"] = "Sayula Popoluca", ["pot"] = "Potawatomi", ["pov"] = "ครีโอลกินี-บิสเซา", ["pow"] = "San Felipe Otlaltepec Popoloca", ["pox"] = "Polabian", ["poy"] = "Pogolo", ["poz-abi"] = "Abai", ["poz-bal"] = "Baliledo", ["poz-btk-pro"] = "Proto-Bungku-Tolaki", ["poz-cet-pro"] = "มาลาโย-พอลินีเชียนตอนกลาง-ตะวันออกดั้งเดิม", ["poz-hce-pro"] = "Proto-Halmahera-Cenderawasih", ["poz-lgx-pro"] = "ลัมปุงกิกดั้งเดิม", ["poz-mcm-pro"] = "มาลาโย-จามิกดั้งเดิม", ["poz-mic-pro"] = "ไมโครนีเซียนดั้งเดิม", ["poz-mly-pro"] = "มาเลย์อิกดั้งเดิม", ["poz-msa-pro"] = "มาลาโย-ซุมบาวันดั้งเดิม", ["poz-oce-pro"] = "โอเชียนิกดั้งเดิม", ["poz-pep-pro"] = "พอลินีเชียนตะวันออกดั้งเดิม", ["poz-pnp-pro"] = "นิวเคลียร์พอลินีเชียนดั้งเดิม", ["poz-pol-pro"] = "พอลินีเชียนดั้งเดิม", ["poz-pro"] = "มาลาโย-พอลินีเชียนดั้งเดิม", ["poz-sml"] = "Sarawak Malay", ["poz-ssw-pro"] = "ซูลาเวซีใต้ดั้งเดิม", ["poz-swa-pro"] = "ซาราวักเหนือดั้งเดิม", ["poz-ter"] = "มลายูแบบตรังกานู", ["ppa"] = "Pao", ["ppe"] = "Papi", ["ppi"] = "Paipai", ["ppk"] = "Uma", ["ppl"] = "ปีปิล", ["ppm"] = "Papuma", ["ppn"] = "Papapana", ["ppo"] = "Folopa", ["ppq"] = "Pei", ["pps"] = "San Luís Temalacayuca Popoloca", ["ppt"] = "Pa", ["ppu"] = "Papora", ["pqa"] = "Pa'a", ["pqe-pro"] = "มาลาโย-พอลินีเชียนตะวันออกดั้งเดิม", ["pqm"] = "Malecite-Passamaquoddy", ["pra"] = "ปรากฤต", ["pra-niy"] = "Niya Prakrit", ["prc"] = "Parachi", ["pre"] = "Principense", ["prf"] = "Paranan", ["prg"] = "Old Prussian", ["prh"] = "Porohanon", ["pri"] = "Paicî", ["prk"] = "Parauk", ["prl"] = "Peruvian Sign Language", ["prm"] = "Kibiri", ["prn"] = "Prasuni", ["pro"] = "อุตซิตาเก่า", ["prq"] = "Ashéninka Perené", ["prr"] = "Puri", ["prt"] = "Phai", ["pru"] = "Puragi", ["prw"] = "Parawen", ["prx"] = "Purik", ["prz"] = "Providencia Sign Language", ["ps"] = "ปาทาน", ["psa"] = "Asue Awyu", ["psc"] = "Persian Sign Language", ["psd"] = "Plains Indian Sign Language", ["pse"] = "มลายูตอนกลาง", ["psg"] = "Penang Sign Language", ["psh"] = "Southwest Pashayi", ["psi"] = "Southeast Pashayi", ["psl"] = "Puerto Rican Sign Language", ["psm"] = "Pauserna", ["psn"] = "Panasuan", ["pso"] = "Polish Sign Language", ["psp"] = "Philippine Sign Language", ["psq"] = "Pasi", ["psr"] = "Portuguese Sign Language", ["pss"] = "Kaulong", ["psw"] = "Port Sandwich", ["psy"] = "Piscataway", ["pt"] = "โปรตุเกส", ["pta"] = "Pai Tavytera", ["pth"] = "Pataxó Hã-Ha-Hãe", ["pti"] = "Pintiini", ["ptn"] = "Patani", ["pto"] = "Zo'é", ["ptp"] = "Patep", ["ptq"] = "Pattapu", ["ptr"] = "Piamatsina", ["ptt"] = "Enrekang", ["ptu"] = "Bambam", ["ptv"] = "Port Vato", ["ptw"] = "Pentlatch", ["pty"] = "Pathiya", ["pua"] = "Purepecha", ["pub"] = "Purum", ["puc"] = "Punan Merap", ["pud"] = "Punan Aput", ["pue"] = "Puelche", ["puf"] = "Punan Merah", ["pug"] = "Phuie", ["pui"] = "Puinave", ["puj"] = "Punan Tubu", ["pum"] = "Puma", ["puo"] = "Puoc", ["pup"] = "Pulabu", ["puq"] = "Puquina", ["pur"] = "Puruborá", ["put"] = "Putoh", ["puu"] = "Punu", ["puw"] = "Puluwat", ["pux"] = "Puare", ["puy"] = "Purisimeño", ["pwa"] = "Pawaia", ["pwb"] = "Panawa", ["pwg"] = "Gapapaiwa", ["pwi"] = "Patwin", ["pwm"] = "Molbog", ["pwn"] = "ไปวัน", ["pwo"] = "กะเหรี่ยงโปตะวันตก", ["pwr"] = "Powari", ["pww"] = "กะเหรี่ยงโปเหนือ", ["pxm"] = "Quetzaltepec Mixe", ["pye"] = "Pye Krumen", ["pym"] = "Fyam", ["pyn"] = "Poyanáwa", ["pys"] = "Paraguayan Sign Language", ["pyu"] = "Puyuma", ["pyx"] = "ปยู", ["pyy"] = "Pyen", ["pzh"] = "Pazeh", ["pzn"] = "Para Naga", ["qfa-adm-pro"] = "เกรตอันดามันนีสดั้งเดิม", ["qfa-bet-pro"] = "เบ-ไทดั้งเดิม", ["qfa-cka-pro"] = "Proto-Chukotko-Kamchatkan", ["qfa-hur-pro"] = "Proto-Hurro-Urartian", ["qfa-kad-pro"] = "Proto-Kadu", ["qfa-kms-pro"] = "Proto-Kam-Sui", ["qfa-kor-pro"] = "เกาหลีดั้งเดิม", ["qfa-kra-pro"] = "ขร้าดั้งเดิม", ["qfa-lic-pro"] = "ไหลดั้งเดิม", ["qfa-onb-pro"] = "เบดั้งเดิม", ["qfa-ong-pro"] = "Proto-Ongan", ["qfa-tak-pro"] = "ขร้า-ไทดั้งเดิม", ["qfa-yen-pro"] = "Proto-Yeniseian", ["qfa-yuk-pro"] = "Proto-Yukaghir", ["qu"] = "เกชัว", ["qua"] = "Quapaw", ["quc"] = "K'iche'", ["qui"] = "Quileute", ["qum"] = "Sipakapense", ["qun"] = "Quinault", ["quq"] = "Quinqui", ["quv"] = "Sacapulteco", ["qvy"] = "Queyu", ["qwc"] = "เกชัวคลาสสิก", ["qwe-kch"] = "Kichwa", ["qwe-pro"] = "เกชวนดั้งเดิม", ["qwm"] = "คูมาน", ["qwt"] = "Kwalhioqua-Tlatskanai", ["qxs"] = "Southern Qiang", ["qya"] = "เควนยา", ["qyp"] = "Quiripi", ["raa"] = "Dungmali", ["rab"] = "Chamling", ["rac"] = "Rasawa", ["rad"] = "Rade", ["raf"] = "Western Meohang", ["rag"] = "Logooli", ["rah"] = "Rabha", ["rai"] = "Ramoaaina", ["rak"] = "Tulu-Bohuai", ["ral"] = "Ralte", ["ram"] = "Canela", ["ran"] = "Riantana", ["rao"] = "Rao", ["rap"] = "ราปานูอี", ["raq"] = "Saam", ["rar"] = "ราโรโตงา", ["ras"] = "Tegali", ["rat"] = "Razajerdi", ["rau"] = "Raute", ["rav"] = "Sampang", ["raw"] = "เรอหวั่ง", ["rax"] = "Rang", ["ray"] = "Rapa", ["raz"] = "Rahambuu", ["rbb"] = "Rumai Palaung", ["rbk"] = "Northern Bontoc", ["rbl"] = "Miraya Bikol", ["rcf"] = "Réunion Creole French", ["rdb"] = "Rudbari", ["rea"] = "Rerau", ["reb"] = "Rembong", ["ree"] = "Rejang Kayan", ["reg"] = "Kara (Tanzania)", ["rei"] = "Reli", ["rej"] = "Rejang", ["rel"] = "Rendille", ["rem"] = "Remo", ["ren"] = "Rengao", ["rer"] = "Rer Bare", ["res"] = "Reshe", ["ret"] = "Retta", ["rey"] = "Reyesano", ["rga"] = "Roria", ["rge"] = "Romano-Greek", ["rgk"] = "Rangkas", ["rgn"] = "โรมัญญา", ["rgr"] = "Resígaro", ["rgs"] = "Southern Roglai", ["rgu"] = "Ringgou", ["rhg"] = "โรฮีนจา", ["rhp"] = "Yahang", ["ria"] = "Reang", ["rif"] = "ริฟ", ["ril"] = "Riang", ["rim"] = "Nyaturu", ["rin"] = "Nungu", ["rir"] = "Ribun", ["rit"] = "Ritarungo", ["riu"] = "Riung", ["rjg"] = "Rajong", ["rji"] = "Raji", ["rjs"] = "ราชพังสี", ["rka"] = "Kraol", ["rkb"] = "Rikbaktsa", ["rkh"] = "Rakahanga-Manihiki", ["rki"] = "ยะไข่", ["rkm"] = "Marka", ["rkt"] = "Kamta", ["rkw"] = "Arakwal", ["rm"] = "โรมานช์", ["rma"] = "Rama", ["rmb"] = "Rembarunga", ["rmc"] = "Carpathian Romani", ["rmd"] = "Traveller Danish", ["rme"] = "Angloromani", ["rmf"] = "Kalo Finnish Romani", ["rmg"] = "Traveller Norwegian", ["rmh"] = "Murkim", ["rmi"] = "Lomavren", ["rmk"] = "Romkun", ["rml"] = "Baltic Romani", ["rmm"] = "Roma", ["rmn"] = "Balkan Romani", ["rmo"] = "Sinte Romani", ["rmp"] = "Rempi", ["rmq"] = "Caló", ["rms"] = "Romanian Sign Language", ["rmt"] = "Domari", ["rmu"] = "Tavringer Romani", ["rmv"] = "Romanova", ["rmw"] = "Welsh Romani", ["rmx"] = "Romam", ["rmy"] = "Vlax Romani", ["rmz"] = "Marma", ["rnd"] = "Ruwund", ["rng"] = "Ronga", ["rnl"] = "Ranglong", ["rnn"] = "Roon", ["rnp"] = "Rongpo", ["rnw"] = "Rungwa", ["ro"] = "โรมาเนีย", ["roa-ang"] = "Angevin", ["roa-bbn"] = "บูร์บอแน-แบรีชง", ["roa-brg"] = "Bourguignon", ["roa-can"] = "Cantabrian", ["roa-cha"] = "Champenois", ["roa-fcm"] = "Franc-Comtois", ["roa-gal"] = "Gallo", ["roa-gib"] = "Gallo-Italic of Basilicata", ["roa-gis"] = "Gallo-Italic of Sicily", ["roa-leo"] = "เลออน", ["roa-lor"] = "Lorrain", ["roa-oca"] = "กาตาลาเก่า", ["roa-ole"] = "เลออนเก่า", ["roa-ona"] = "Old Navarro-Aragonese", ["roa-opt"] = "กาลิเซีย-โปรตุเกสเก่า", ["roa-orl"] = "Orléanais", ["roa-poi"] = "Poitevin-Saintongeais", ["roa-tar"] = "Tarantino", ["rob"] = "Tae'", ["roc"] = "Cacgia Roglai", ["rod"] = "Rogo", ["roe"] = "Ronji", ["rof"] = "Rombo", ["rog"] = "Northern Roglai", ["rol"] = "Romblomanon", ["rom"] = "โรมานี", ["roo"] = "Rotokas", ["rop"] = "Australian Kriol", ["ror"] = "Rongga", ["rou"] = "Runga", ["row"] = "Dela-Oenale", ["rpn"] = "Repanbitip", ["rpt"] = "Rapting", ["rri"] = "Ririo", ["rro"] = "Roro", ["rrt"] = "Arritinngithigh", ["rsb"] = "Romano-Serbian", ["rsk"] = "รูซินแบบพันโนเนีย", ["rsl"] = "มือรัสเซีย", ["rsm"] = "Miriwoong Sign Language", ["rsn"] = "Rwandan Sign Language", ["rtc"] = "Rungtu", ["rth"] = "Ratahan", ["rtm"] = "Rotuman", ["rtw"] = "Rathawi", ["ru"] = "รัสเซีย", ["rub"] = "Gungu", ["ruc"] = "Ruuli", ["rue"] = "รูซินแบบคาร์พาเทีย", ["ruf"] = "Luguru", ["rug"] = "Roviana", ["ruh"] = "Ruga", ["rui"] = "Rufiji", ["ruk"] = "Che", ["ruo"] = "Istro-Romanian", ["rup"] = "Aromanian", ["ruq"] = "Megleno-Romanian", ["rut"] = "Rutul", ["ruu"] = "Lanas Lobu", ["ruy"] = "Mala (Nigeria)", ["ruz"] = "Ruma", ["rw"] = "รวันดา-รุนดี", ["rwa"] = "Rawo", ["rwk"] = "Rwa", ["rwm"] = "Amba", ["rwo"] = "Rawa", ["rxd"] = "Ngardi", ["rxw"] = "Karuwali", ["ryn"] = "อามามิโอชิมะเหนือ", ["rys"] = "ยาเอยามะ", ["ryu"] = "โอกินาวะ", ["rzh"] = "Razihi", ["sa"] = "สันสกฤต", ["saa"] = "Saba", ["sab"] = "Buglere", ["sac"] = "Fox", ["sad"] = "Sandawe", ["sae"] = "Sabanê", ["saf"] = "Safaliba", ["sah"] = "ซาคา", ["sai-all"] = "Allentiac", ["sai-and"] = "Andoquero", ["sai-ayo"] = "Ayomán", ["sai-bae"] = "Baenan", ["sai-bag"] = "Bagua", ["sai-bet"] = "Betoi", ["sai-bor-pro"] = "Proto-Boran", ["sai-cac"] = "Cacán", ["sai-caq"] = "Caranqui", ["sai-car-pro"] = "Proto-Cariban", ["sai-cat"] = "Catacao", ["sai-cer-pro"] = "Proto-Cerrado", ["sai-chi"] = "Chirino", ["sai-chn"] = "Chaná", ["sai-chp"] = "Chapacura", ["sai-chr"] = "Charrua", ["sai-chu"] = "Churuya", ["sai-cje-pro"] = "Proto-Central Jê", ["sai-cmg"] = "Comechingon", ["sai-cno"] = "Chono", ["sai-cnr"] = "Cañari", ["sai-coe"] = "Coeruna", ["sai-col"] = "Colán", ["sai-cop"] = "Copallén", ["sai-crd"] = "Coroado Puri", ["sai-ctq"] = "Catuquinaru", ["sai-cul"] = "Culli", ["sai-cva"] = "Cueva", ["sai-esm"] = "Esmeralda", ["sai-ewa"] = "Ewarhuyana", ["sai-gam"] = "Gamela", ["sai-gay"] = "Gayón", ["sai-gmo"] = "Guamo", ["sai-gua"] = "Guachí", ["sai-gue"] = "Güenoa", ["sai-hau"] = "Haush", ["sai-jee-pro"] = "Proto-Jê", ["sai-jko"] = "Jeikó", ["sai-jrj"] = "Jirajara", ["sai-kat"] = "Katembri", ["sai-mal"] = "Malalí", ["sai-mar"] = "Maratino", ["sai-mat"] = "Matanawi", ["sai-mcn"] = "Mocana", ["sai-men"] = "Menien", ["sai-mil"] = "Millcayac", ["sai-mlb"] = "Malibu", ["sai-msk"] = "Masakará", ["sai-muc"] = "Mucuchí", ["sai-mue"] = "Muellama", ["sai-muz"] = "Muzo", ["sai-mys"] = "Maynas", ["sai-nat"] = "Natú", ["sai-nje-pro"] = "Proto-Northern Jê", ["sai-opo"] = "Opón", ["sai-oto"] = "Otomaco", ["sai-pal"] = "Palta", ["sai-pam"] = "Pamigua", ["sai-par"] = "Paratió", ["sai-peb"] = "Peba", ["sai-pnz"] = "Panzaleo", ["sai-prh"] = "Puruhá", ["sai-ptg"] = "Patagón", ["sai-pur"] = "Purukotó", ["sai-pyg"] = "Payaguá", ["sai-pyk"] = "Pykobjê", ["sai-qmb"] = "Quimbaya", ["sai-qtm"] = "Quitemo", ["sai-rab"] = "Rabona", ["sai-ram"] = "Ramanos", ["sai-sac"] = "Sácata", ["sai-san"] = "Sanaviron", ["sai-sap"] = "Sapará", ["sai-sec"] = "Sechura", ["sai-sin"] = "Sinúfana", ["sai-sje-pro"] = "Proto-Southern Jê", ["sai-tab"] = "Tabancale", ["sai-tal"] = "Tallán", ["sai-tap"] = "Tapayuna", ["sai-tar-pro"] = "Proto-Taranoan", ["sai-teu"] = "Teushen", ["sai-tim"] = "Timote", ["sai-tpr"] = "Taparita", ["sai-trr"] = "Tarairiú", ["sai-wai"] = "Waitaká", ["sai-way"] = "Wayumara", ["sai-wit-pro"] = "Proto-Witotoan", ["sai-wnm"] = "Wanham", ["sai-xoc"] = "Xocó", ["sai-yao"] = "Yao (South America)", ["sai-yar"] = "Yarumá", ["sai-yri"] = "Yuri", ["sai-yup"] = "Yupua", ["sai-yur"] = "Yurumanguí", ["saj"] = "Sahu", ["sak"] = "Sake", ["sal-pro"] = "Proto-Salish", ["sam"] = "Samaritan Aramaic", ["sao"] = "Sause", ["saq"] = "Samburu", ["sar"] = "Saraveca", ["sas"] = "Sasak", ["sat"] = "สันถาลี", ["sau"] = "Saleman", ["sav"] = "Saafi-Saafi", ["saw"] = "Sawi", ["sax"] = "Sa", ["say"] = "Saya", ["saz"] = "Saurashtra", ["sba"] = "Ngambay", ["sbb"] = "Simbo", ["sbc"] = "Gele'", ["sbd"] = "Southern Samo", ["sbe"] = "Saliba (New Guinea)", ["sbf"] = "Shabo", ["sbg"] = "Seget", ["sbh"] = "Sori-Harengan", ["sbi"] = "Seti", ["sbj"] = "Surbakhal", ["sbk"] = "Safwa", ["sbl"] = "Botolan Sambal", ["sbm"] = "Sagala", ["sbn"] = "Sindhi Bhil", ["sbo"] = "Sabüm", ["sbp"] = "Sangu (Tanzania)", ["sbq"] = "Sileibi", ["sbr"] = "Sembakung Murut", ["sbs"] = "Subiya", ["sbt"] = "Kimki", ["sbu"] = "Stod Bhoti", ["sbv"] = "Sabine", ["sbw"] = "Simba", ["sbx"] = "Seberuang", ["sby"] = "Soli", ["sbz"] = "Sara Kaba", ["sc"] = "ซาร์ดิเนีย", ["scb"] = "Chut", ["sce"] = "ตงเซียง", ["scf"] = "San Miguel Creole French", ["scg"] = "Sanggau", ["sch"] = "Sakachep", ["sci"] = "Sri Lankan Creole Malay", ["sck"] = "Sadri", ["scl"] = "Shina", ["scn"] = "ซิซิลี", ["sco"] = "สกอต", ["scp"] = "Yolmo", ["scq"] = "สะโอจ", ["scs"] = "North Slavey", ["scu"] = "Shumcho", ["scv"] = "Sheni", ["scw"] = "Sha", ["scx"] = "Sicel", ["scz"] = "Shetland", ["sd"] = "สินธ์", ["sda"] = "Toraja-Sa'dan", ["sdb"] = "Shabak", ["sdc"] = "ซัสซารี", ["sde"] = "Surubu", ["sdf"] = "Sarli", ["sdg"] = "Savi", ["sdh"] = "Southern Kurdish", ["sdj"] = "Suundi", ["sdk"] = "Sos Kundi", ["sdl"] = "Saudi Arabian Sign Language", ["sdm"] = "Semandang", ["sdn"] = "Gallurese", ["sdo"] = "Bukar-Sadung Bidayuh", ["sdp"] = "Sherdukpen", ["sdr"] = "Oraon Sadri", ["sds"] = "เบอร์เบอร์แบบตูนีเซีย", ["sdu"] = "Sarudu", ["sdv-daj-pro"] = "Proto-Daju", ["sdv-eje-pro"] = "Proto-Eastern Jebel", ["sdv-nil-pro"] = "Proto-Nilotic", ["sdv-nyi-pro"] = "Proto-Nyima", ["sdv-tmn-pro"] = "Proto-Taman", ["sdx"] = "Sibu Melanau", ["se"] = "ซามีเหนือ", ["sea"] = "เซอไม", ["sec"] = "Sechelt", ["sed"] = "Sedang", ["see"] = "Seneca", ["sef"] = "Cebaara Senoufo", ["seg"] = "Segeju", ["seh"] = "Sena", ["sei"] = "Seri", ["sej"] = "Sene", ["sek"] = "Sekani", ["sel-nor"] = "Northern Selkup", ["sel-pro"] = "Proto-Selkup", ["sel-sou"] = "Southern Selkup", ["sem-amm"] = "อัมโมน", ["sem-amo"] = "Amorite", ["sem-cha"] = "Chaha", ["sem-dad"] = "Dadanitic", ["sem-dum"] = "Dumaitic", ["sem-has"] = "Hasaitic", ["sem-his"] = "Hismaic", ["sem-mhr"] = "Muher", ["sem-pro"] = "เซมิติกดั้งเดิม", ["sem-saf"] = "Safaitic", ["sem-sam"] = "Samalian", ["sem-srb"] = "Old South Arabian", ["sem-tay"] = "Taymanitic", ["sem-tha"] = "Thamudic", ["sem-wes-pro"] = "เซมิติกตะวันตกดั้งเดิม", ["sen"] = "Nanerigé Sénoufo", ["seo"] = "Suarmin", ["sep"] = "Sìcìté Sénoufo", ["seq"] = "Senara Sénoufo", ["ser"] = "Serrano", ["ses"] = "Koyraboro Senni", ["set"] = "Sentani", ["seu"] = "Serui-Laut", ["sev"] = "Nyarafolo Senoufo", ["sew"] = "Sewa Bay", ["sey"] = "Secoya", ["sez"] = "Senthang Chin", ["sfb"] = "French Belgian Sign Language", ["sfe"] = "Eastern Subanun", ["sfm"] = "Small Flowery Miao", ["sfs"] = "South African Sign Language", ["sfw"] = "Sehwi", ["sg"] = "ซังโก", ["sga"] = "ไอริชเก่า", ["sgb"] = "Mag-Anchi Ayta", ["sgc"] = "Kipsigis", ["sgd"] = "ซูรีเกาโนน", ["sge"] = "Segai", ["sgg"] = "Swiss-German Sign Language", ["sgh"] = "Shughni", ["sgi"] = "Suga", ["sgk"] = "Sangkong", ["sgm"] = "Singa", ["sgp"] = "Singpho", ["sgr"] = "Sangisari", ["sgs"] = "Samogitian", ["sgt"] = "Brokpake", ["sgu"] = "Salas", ["sgw"] = "Sebat Bet Gurage", ["sgx"] = "Sierra Leone Sign Language", ["sgy"] = "Sanglechi", ["sgz"] = "Sursurunga", ["sh"] = "เซอร์โบ-โครเอเชีย", ["sha"] = "Shall-Zwall", ["shb"] = "Ninam", ["shc"] = "Sonde", ["shd"] = "Kundal Shahi", ["she"] = "Sheko", ["shg"] = "Shua", ["shh"] = "Shoshone", ["shi"] = "Tashelhit", ["shj"] = "Shatt", ["shk"] = "Shilluk", ["shl"] = "Shendu", ["shm"] = "Shahrudi", ["shn"] = "ไทใหญ่", ["sho"] = "Shanga", ["shp"] = "Shipibo-Conibo", ["shq"] = "Sala", ["shr"] = "Shi", ["shs"] = "Shuswap", ["sht"] = "Shasta", ["shu"] = "Chadian Arabic", ["shv"] = "Shehri", ["shw"] = "Shwai", ["shx"] = "She", ["shy"] = "Tachawit", ["shz"] = "Syenara Senoufo", ["si"] = "สิงหล", ["sia"] = "Akkala Sami", ["sib"] = "Sebop", ["sid"] = "ซีดามา", ["sie"] = "Simaa", ["sif"] = "Siamou", ["sig"] = "Paasaal", ["sih"] = "Sîshëë", ["sii"] = "Shom Peng", ["sij"] = "Numbami", ["sik"] = "Sikiana", ["sil"] = "Tumulung Sisaala", ["sim"] = "Seim", ["sio-pro"] = "Proto-Siouan", ["sip"] = "สิกขิม", ["siq"] = "Sonia", ["sir"] = "Siri", ["sis"] = "Siuslaw", ["sit-aao-pro"] = "Proto-Central Naga", ["sit-bai-pro"] = "Proto-Bai", ["sit-ban"] = "Bangru", ["sit-bdi-pro"] = "Proto-Bodish", ["sit-bok"] = "Bokar", ["sit-cai"] = "Caijia", ["sit-cha"] = "Chairel", ["sit-ers-pro"] = "Proto-Ersuic", ["sit-hrs-pro"] = "Proto-Hrusish", ["sit-jap"] = "Japhug", ["sit-kha-pro"] = "Proto-Kham", ["sit-khb-pro"] = "Proto-Kho-Bwa", ["sit-khp-pro"] = "Proto-Puroik", ["sit-khw-pro"] = "Proto-Western Kho-Bwa", ["sit-kon-pro"] = "Proto-Northern Naga", ["sit-liz"] = "Lizu", ["sit-lnj"] = "Longjia", ["sit-lrn"] = "Luren", ["sit-luu-pro"] = "ลูอิชดั้งเดิม", ["sit-nas-pro"] = "Proto-Naish", ["sit-prn"] = "Puiron", ["sit-pro"] = "ซีโน-ทิเบตันดั้งเดิม", ["sit-sit"] = "Situ", ["sit-tam-pro"] = "Proto-Tamangic", ["sit-tan-pro"] = "Proto-Tani", ["sit-tgm"] = "ตางัม", ["sit-tng-pro"] = "Proto-Tangkhulic", ["sit-tos"] = "Tosu", ["sit-tsh"] = "Tshobdun", ["sit-zbu"] = "Zbu", ["siu"] = "Sinagen", ["siv"] = "Sumariup", ["siw"] = "Siwai", ["six"] = "Sumau", ["siy"] = "Sivandi", ["siz"] = "Siwi", ["sja"] = "Epena", ["sjb"] = "Sajau Basap", ["sjc"] = "Shaojiang Min", ["sjd"] = "ซามีแบบกิลดิน", ["sje"] = "ซามีแบบปีเต", ["sjg"] = "Assangori", ["sjk"] = "Kemi Sami", ["sjl"] = "Miji", ["sjm"] = "Mapun", ["sjn"] = "ซินดาริน", ["sjo"] = "Xibe", ["sjp"] = "Surjapuri", ["sjr"] = "Siar-Lak", ["sjs"] = "Senhaja de Srair", ["sjt"] = "Ter Sami", ["sju"] = "Ume Sami", ["sjw"] = "Shawnee", ["sk"] = "สโลวัก", ["ska"] = "Skagit", ["skb"] = "แสก", ["skc"] = "Ma Manda", ["skd"] = "Southern Sierra Miwok", ["ske"] = "Ske", ["skf"] = "Mekéns", ["skh"] = "Sikule", ["ski"] = "Sika", ["skj"] = "Seke", ["skk"] = "Sok", ["skm"] = "Sakam", ["skn"] = "Kolibugan Subanon", ["sko"] = "Seko Tengah", ["skp"] = "Sekapan", ["skq"] = "Sininkere", ["skr"] = "Saraiki", ["sks"] = "ไมยา", ["skt"] = "Sakata", ["sku"] = "Sakao", ["skv"] = "Skou", ["skw"] = "Skepi Creole Dutch", ["skx"] = "Seko Padang", ["sky"] = "ซีกายานา", ["skz"] = "Sekar", ["sl"] = "สโลวีเนีย", ["sla-pro"] = "สลาวิกดั้งเดิม", ["slc"] = "Saliba (Colombia)", ["sld"] = "Sisaala", ["sle"] = "Sholaga", ["slf"] = "Swiss-Italian Sign Language", ["slg"] = "Selungai Murut", ["slh"] = "Southern Puget Sound Salish", ["slj"] = "Salumá", ["sll"] = "Salt-Yui", ["slm"] = "ซามาแบบปางูตารัน", ["sln"] = "Salinan", ["slp"] = "Lamaholot", ["slr"] = "ซาลาร์", ["sls"] = "Singapore Sign Language", ["slt"] = "Sila", ["slu"] = "Selaru", ["slw"] = "Sialum", ["slx"] = "Salampasu", ["sly"] = "Selayar", ["slz"] = "Ma'ya", ["sm"] = "ซามัว", ["sma"] = "ซามีใต้", ["smb"] = "Simbari", ["smc"] = "Som", ["smd"] = "Sama", ["smf"] = "Auwe", ["smg"] = "Simbali", ["smh"] = "Samei", ["smi-pro"] = "ซามิกดั้งเดิม", ["smj"] = "ซามีแบบลูเล", ["smk"] = "โบลีเนา", ["sml"] = "ซามาตอนกลาง", ["smm"] = "Musasa", ["smn"] = "ซามีแบบอีนารี", ["smp"] = "Samaritan Hebrew", ["smq"] = "Samo", ["smr"] = "Simeulue", ["sms"] = "Skolt Sami", ["smt"] = "Simte", ["smu"] = "สมราย", ["smv"] = "Samvedi", ["smw"] = "Sumbawa", ["smx"] = "Samba", ["smy"] = "Semnani", ["smz"] = "Simeku", ["sn"] = "โชนา", ["snb"] = "Sebuyau", ["snc"] = "Sinaugoro", ["sne"] = "Bau Bidayuh", ["snf"] = "Noon", ["sng"] = "Sanga (Congo)", ["sni"] = "Sensi", ["snj"] = "Riverain Sango", ["snk"] = "Soninke", ["snl"] = "Sangil", ["snm"] = "Southern Ma'di", ["snn"] = "Siona", ["sno"] = "Snohomish", ["snp"] = "Siane", ["snq"] = "Sangu (Gabon)", ["snr"] = "Sihan", ["sns"] = "Nahavaq", ["snu"] = "Senggi", ["snv"] = "Sa'ban", ["snw"] = "Selee", ["snx"] = "Sam", ["sny"] = "Saniyo-Hiyewe", ["snz"] = "Kou", ["so"] = "โซมาลี", ["soa"] = "โซ่ง", ["sob"] = "Sobei", ["soc"] = "Soko", ["sod"] = "Songoora", ["soe"] = "Songomeno", ["sog"] = "Sogdian", ["soh"] = "Aka (Sudan)", ["soi"] = "Sonha", ["sok"] = "Sokoro", ["sol"] = "Solos", ["son-pro"] = "Proto-Songhay", ["soo"] = "Nsong", ["sop"] = "Songe", ["soq"] = "Kanasi", ["sor"] = "Somrai", ["sos"] = "Seenku", ["sou"] = "ปักษ์ใต้", ["sov"] = "Sonsorolese", ["sow"] = "Sowanda", ["sox"] = "Swo", ["soy"] = "Miyobe", ["soz"] = "Temi", ["spb"] = "Sepa (Indonesia)", ["spc"] = "Sapé", ["spd"] = "Saep", ["spe"] = "Sepa (New Guinea)", ["spg"] = "Sian", ["spi"] = "Saponi", ["spk"] = "Sengo", ["spl"] = "Selepet", ["spm"] = "Sepen", ["spn"] = "Sanapaná", ["spo"] = "Spokane", ["spp"] = "Supyire", ["spr"] = "Saparua", ["sps"] = "Saposa", ["spt"] = "Spiti Bhoti", ["spu"] = "Sapuan", ["spv"] = "Sambalpuri", ["spx"] = "South Picene", ["spy"] = "Sabaot", ["sq"] = "แอลเบเนีย", ["sqa"] = "Shama-Sambuga", ["sqh"] = "Shau", ["sqj-pro"] = "แอลเบเนียนดั้งเดิม", ["sqk"] = "Albanian Sign Language", ["sqm"] = "Suma", ["sqn"] = "Susquehannock", ["sqo"] = "Sorkhei", ["sqq"] = "Sou", ["sqr"] = "Siculo-Arabic", ["sqs"] = "Sri Lankan Sign Language", ["sqt"] = "Soqotri", ["squ"] = "Squamish", ["sra"] = "Saruga", ["srb"] = "Sora", ["sre"] = "Sara", ["srf"] = "Nafi", ["srg"] = "Sulod", ["srh"] = "Sarikoli", ["sri"] = "Siriano", ["srk"] = "Serudung Murut", ["srl"] = "Isirawa", ["srm"] = "Saramaccan", ["srn"] = "Sranan Tongo", ["srq"] = "Sirionó", ["srr"] = "Serer", ["srs"] = "Tsuut'ina", ["srt"] = "Sauri", ["sru"] = "Suruí", ["srv"] = "Waray Sorsogon", ["srw"] = "Serua", ["srx"] = "Sirmauri", ["sry"] = "Sera", ["srz"] = "Shahmirzadi", ["ss"] = "Swazi", ["ssa-klk-pro"] = "Proto-Kuliak", ["ssa-kom-pro"] = "Proto-Koman", ["ssa-pro"] = "Proto-Nilo-Saharan", ["ssb"] = "Southern Sama", ["ssc"] = "Suba-Simbiti", ["ssd"] = "Siroi", ["sse"] = "Balangingi", ["ssf"] = "Thao", ["ssg"] = "Seimat", ["ssh"] = "Shihhi Arabic", ["ssi"] = "Sansi", ["ssj"] = "Sausi", ["ssk"] = "Sunam", ["ssl"] = "Western Sisaala", ["ssm"] = "Semnam", ["sso"] = "Sissano", ["ssp"] = "Spanish Sign Language", ["ssq"] = "So'a", ["ssr"] = "Swiss-French Sign Language", ["sss"] = "Sô", ["sst"] = "Sinasina", ["ssu"] = "Susuami", ["ssv"] = "Shark Bay", ["ssx"] = "Samberigi", ["ssy"] = "ซาโฮ", ["ssz"] = "Sengseng", ["st"] = "ซูทู", ["stb"] = "Northern Subanen", ["std"] = "Sentinelese", ["ste"] = "Liana-Seti", ["stf"] = "Seta", ["stg"] = "Trieng", ["sth"] = "Shelta", ["sti"] = "Bulo Stieng", ["stj"] = "Matya Samo", ["stk"] = "Arammba", ["stm"] = "Setaman", ["stn"] = "Owa", ["sto"] = "Stoney", ["stp"] = "Southeastern Tepehuan", ["stq"] = "ฟรีเชียแบบซาเทอร์ลันท์", ["str"] = "Saanich", ["sts"] = "Shumashti", ["stt"] = "Budeh Stieng", ["stu"] = "Samtao", ["stv"] = "Silt'e", ["stw"] = "Satawalese", ["sty"] = "Siberian Tatar", ["su"] = "ซุนดา", ["sua"] = "Sulka", ["sub"] = "Suku", ["suc"] = "Western Subanon", ["sue"] = "Suena", ["sug"] = "Suganga", ["sui"] = "Suki", ["suk"] = "Sukuma", ["suq"] = "Suri", ["sur"] = "Mwaghavul", ["sus"] = "Susu", ["sut"] = "Subtiaba", ["suv"] = "Puroik", ["suw"] = "Sumbwa", ["sux"] = "ซูเมอร์", ["suy"] = "Suyá", ["suz"] = "Sunwar", ["sv"] = "สวีเดน", ["sva"] = "Svan", ["svb"] = "Ulau-Suain", ["svc"] = "Vincentian Creole English", ["sve"] = "Serili", ["svk"] = "Slovakian Sign Language", ["svm"] = "Slavomolisano", ["svs"] = "Savosavo", ["svx"] = "Skalvian", ["sw"] = "สวาฮีลี", ["swb"] = "Maore Comorian", ["swf"] = "Sere", ["swg"] = "Swabian", ["swi"] = "สุ่ย", ["swj"] = "Sira", ["swl"] = "Swedish Sign Language", ["swm"] = "Samosa", ["swn"] = "Sokna", ["swo"] = "Shanenawa", ["swp"] = "Suau", ["swq"] = "Sharwa", ["swr"] = "Saweru", ["sws"] = "Seluwasan", ["swt"] = "Sawila", ["swu"] = "Suwawa", ["sww"] = "Sowa", ["swx"] = "Suruahá", ["swy"] = "Sarua", ["sxb"] = "Suba", ["sxc"] = "Sicanian", ["sxe"] = "Sighu", ["sxg"] = "Shixing", ["sxk"] = "Southern Kalapuya", ["sxl"] = "Selonian", ["sxm"] = "สำเร", ["sxn"] = "Sangir", ["sxo"] = "Sorothaptic", ["sxr"] = "Saaroa", ["sxs"] = "Sasaru", ["sxw"] = "Saxwe Gbe", ["sya"] = "Siang", ["syb"] = "Central Subanen", ["syc"] = "ซีรีแอกคลาสสิก", ["syd-pro"] = "Proto-Samoyedic", ["syi"] = "Seki", ["syk"] = "Sukur", ["syl"] = "สิเลฏ", ["sym"] = "Maya Samo", ["syn"] = "Senaya", ["syo"] = "Suoy", ["sys"] = "Sinyar", ["syw"] = "Kagate", ["syx"] = "Osamayi", ["syy"] = "Al-Sayyid Bedouin Sign Language", ["sza"] = "Semelai", ["szb"] = "Ngalum", ["szc"] = "Semaq Beri", ["szd"] = "Seru", ["sze"] = "Seze", ["szg"] = "Sengele", ["szl"] = "ไซลีเซีย", ["szn"] = "Sula", ["szp"] = "Suabo", ["szv"] = "Isubu", ["szw"] = "Sawai", ["szy"] = "ซากีซายา", ["ta"] = "ทมิฬ", ["taa"] = "Lower Tanana", ["tab"] = "ทาบาซารัน", ["tac"] = "Lowland Tarahumara", ["tad"] = "Tause", ["tae"] = "Tariana", ["taf"] = "Tapirapé", ["tag"] = "Tagoi", ["tai-pro"] = "ไทดั้งเดิม", ["tai-swe-pro"] = "ไทตะวันตกเฉียงใต้ดั้งเดิม", ["taj"] = "Eastern Tamang", ["tak"] = "Tala", ["tal"] = "Tal", ["tan"] = "Tangale", ["tao"] = "ยามี", ["tap"] = "Taabwa", ["tar"] = "Central Tarahumara", ["tas"] = "Tây Bồi", ["tau"] = "Upper Tanana", ["tav"] = "Tatuyo", ["taw"] = "Tai", ["tax"] = "Tamki", ["tay"] = "Atayal", ["taz"] = "Tocho", ["tba"] = "Aikanã", ["tbb"] = "Tapeba", ["tbc"] = "Takia", ["tbd"] = "Kaki Ae", ["tbe"] = "Tanimbili", ["tbf"] = "Mandara", ["tbg"] = "North Tairora", ["tbh"] = "Thurawal", ["tbi"] = "Gaam", ["tbj"] = "Tiang", ["tbk"] = "Calamian Tagbanwa", ["tbl"] = "ตโบลี", ["tbm"] = "Tagbu", ["tbn"] = "Barro Negro Tunebo", ["tbo"] = "Tawala", ["tbp"] = "Taworta", ["tbq-bdg-pro"] = "โบโด-กาโรดั้งเดิม", ["tbq-blg"] = "Bailang", ["tbq-brm-pro"] = "Proto-Burmish", ["tbq-gkh"] = "Gokhy", ["tbq-kuk-pro"] = "Proto-Kuki-Chin", ["tbq-lal-pro"] = "Proto-Lalo", ["tbq-laz"] = "Laze", ["tbq-lob-pro"] = "โลโล-เบอร์มีซดั้งเดิม", ["tbq-lol-pro"] = "โลโลอิชดั้งเดิม", ["tbq-mil"] = "Milang", ["tbq-mor"] = "Moran", ["tbq-ngo"] = "Ngochang", ["tbr"] = "Tumtum", ["tbs"] = "Tanguat", ["tbt"] = "Kitembo", ["tbu"] = "Tubar", ["tbv"] = "Tobo", ["tbw"] = "Aborlan Tagbanwa", ["tbx"] = "Kapin", ["tby"] = "Tabaru", ["tbz"] = "Ditammari", ["tca"] = "Ticuna", ["tcb"] = "Tanacross", ["tcc"] = "Datooga", ["tcd"] = "Tafi", ["tce"] = "Southern Tutchone", ["tcf"] = "Malinaltepec Tlapanec", ["tcg"] = "Tamagario", ["tch"] = "Turks and Caicos Creole English", ["tci"] = "Wára", ["tck"] = "Tchitchege", ["tcl"] = "Taman (Myanmar)", ["tcm"] = "Tanahmerah", ["tco"] = "Taungyo", ["tcp"] = "Tawr Chin", ["tcq"] = "Kaiy", ["tcs"] = "Torres Strait Creole", ["tct"] = "T'en", ["tcu"] = "Southeastern Tarahumara", ["tcw"] = "Tecpatlán Totonac", ["tcx"] = "โตทา", ["tcy"] = "ตูลู", ["tcz"] = "Thado Chin", ["tda"] = "Tagdal", ["tdb"] = "Panchpargania", ["tdc"] = "Emberá-Tadó", ["tdd"] = "ไทใต้คง", ["tde"] = "Tiranige Diga Dogon", ["tdf"] = "Talieng", ["tdg"] = "Western Tamang", ["tdh"] = "Thulung", ["tdi"] = "Tomadino", ["tdj"] = "Tajio", ["tdk"] = "Tambas", ["tdl"] = "Sur", ["tdm"] = "Taruma", ["tdn"] = "Tondano", ["tdo"] = "Teme", ["tdq"] = "Tita", ["tdr"] = "Todrah", ["tds"] = "Doutai", ["tdt"] = "Tetun Dili", ["tdu"] = "Tempasuk Dusun", ["tdv"] = "Toro", ["tdy"] = "Tadyawan", ["te"] = "เตลูกู", ["tea"] = "เตอเมียร์", ["teb"] = "Tetete", ["tec"] = "Terik", ["ted"] = "Tepo Krumen", ["tee"] = "Huehuetla Tepehua", ["tef"] = "Teressa", ["teg"] = "Teke-Tege", ["teh"] = "Tehuelche", ["tei"] = "Torricelli", ["tek"] = "Ibali Teke", ["tem"] = "Temne", ["ten"] = "Tama (Colombia)", ["teo"] = "Ateso", ["tep"] = "Tepecano", ["teq"] = "Temein", ["ter"] = "Tereno", ["tes"] = "Tengger", ["tet"] = "เตตุน", ["teu"] = "Soo", ["tev"] = "Teor", ["tew"] = "Tewa", ["tex"] = "Tennet", ["tey"] = "Tulishi", ["tez"] = "Tetserret", ["tfi"] = "Tofin Gbe", ["tfn"] = "Dena'ina", ["tfo"] = "Tefaro", ["tfr"] = "Teribe", ["tft"] = "เตอร์นาเต", ["tg"] = "ทาจิก", ["tga"] = "Sagalla", ["tgb"] = "Tobilung", ["tgc"] = "Tigak", ["tgd"] = "Ciwogai", ["tge"] = "Eastern Gorkha Tamang", ["tgf"] = "Chali", ["tgh"] = "Tobagonian Creole English", ["tgi"] = "Lawunuia", ["tgn"] = "ตันดากาโนน", ["tgo"] = "Sudest", ["tgp"] = "Tangoa", ["tgq"] = "Tring", ["tgr"] = "Tareng", ["tgs"] = "Nume", ["tgt"] = "Central Tagbanwa", ["tgu"] = "Tanggu", ["tgv"] = "Tingui-Boto", ["tgw"] = "Tagwana Senoufo", ["tgx"] = "Tagish", ["tgy"] = "Togoyo", ["th"] = "ไทย", ["thc"] = "Tai Hang Tong", ["thd"] = "Kuuk Thaayorre", ["the"] = "Chitwania Tharu", ["thf"] = "Thangmi", ["thh"] = "Northern Tarahumara", ["thi"] = "Tai Long", ["thk"] = "Tharaka", ["thl"] = "Dangaura Tharu", ["thm"] = "ทะวืง", ["thn"] = "Thachanadan", ["thp"] = "Thompson", ["thq"] = "Kochila Tharu", ["thr"] = "Rana Tharu", ["ths"] = "Thakali", ["tht"] = "Tahltan", ["thu"] = "Thuri", ["thy"] = "Tha", ["ti"] = "ทือกรึญญา", ["tic"] = "Tira", ["tif"] = "Tifal", ["tig"] = "ทือเกร", ["tih"] = "Timugon Murut", ["tii"] = "Tiene", ["tij"] = "Tilung", ["tik"] = "Tikar", ["til"] = "Tillamook", ["tim"] = "Timbe", ["tin"] = "Tindi", ["tio"] = "Teop", ["tip"] = "Trimuris", ["tiq"] = "Tiéfo", ["tis"] = "Masadiit Itneg", ["tit"] = "Tinigua", ["tiu"] = "Adasen", ["tiv"] = "Tiv", ["tiw"] = "Tiwi", ["tix"] = "Southern Tiwa", ["tiy"] = "ตีรูไร", ["tiz"] = "Tai Hongjin", ["tja"] = "Tajuasohn", ["tjg"] = "Tunjung", ["tji"] = "Northern Tujia", ["tjl"] = "ไทแหล่ง", ["tjm"] = "Timucua", ["tjn"] = "Tonjon", ["tjs"] = "Southern Tujia", ["tju"] = "Tjurruru", ["tjw"] = "Chaap Wuurong", ["tk"] = "เติร์กเมน", ["tka"] = "Truká", ["tkb"] = "Buksa", ["tkd"] = "Tukudede", ["tke"] = "Takwane", ["tkf"] = "Tukumanféd", ["tkl"] = "Tokelauan", ["tkm"] = "Takelma", ["tkn"] = "โทกูโนชิมะ", ["tkp"] = "Tikopia", ["tkq"] = "Tee", ["tkr"] = "Tsakhur", ["tks"] = "Ramandi", ["tkt"] = "Kathoriya Tharu", ["tku"] = "Upper Necaxa Totonac", ["tkv"] = "Mur Pano", ["tkw"] = "Teanu", ["tkx"] = "Tangko", ["tkz"] = "Takua", ["tl"] = "ตากาล็อก", ["tla"] = "Southwestern Tepehuan", ["tlb"] = "Tobelo", ["tlc"] = "Misantla Totonac", ["tld"] = "Talaud", ["tlf"] = "Telefol", ["tlg"] = "Tofanma", ["tlh"] = "Klingon", ["tli"] = "Tlingit", ["tlj"] = "Talinga-Bwisi", ["tlk"] = "Taloki", ["tll"] = "Tetela", ["tlm"] = "Tolomako", ["tln"] = "Talondo'", ["tlo"] = "Talodi", ["tlp"] = "Filomena Mata-Coahuitlán Totonac", ["tlq"] = "Tai Loi", ["tlr"] = "Talise", ["tls"] = "Tambotalo", ["tlt"] = "Teluti", ["tlu"] = "Tulehu", ["tlv"] = "Taliabu", ["tlx"] = "Khehek", ["tly"] = "Talysh", ["tma"] = "Tama (Chad)", ["tmb"] = "Avava", ["tmc"] = "Tumak", ["tmd"] = "Haruai", ["tme"] = "Tremembé", ["tmf"] = "Toba-Maskoy", ["tmg"] = "Ternateño", ["tmh"] = "Tuareg", ["tmi"] = "Tutuba", ["tmj"] = "Samarokena", ["tmk"] = "Northwestern Tamang", ["tml"] = "Tamnim Citak", ["tmm"] = "Tai Thanh", ["tmn"] = "Taman (Indonesia)", ["tmo"] = "Temoq", ["tmq"] = "Tumleo", ["tms"] = "Tima", ["tmt"] = "Tasmate", ["tmu"] = "Iau", ["tmv"] = "Motembo", ["tmy"] = "Tami", ["tmz"] = "Tamanaku", ["tn"] = "สวานา", ["tna"] = "Tacana", ["tnb"] = "Western Tunebo", ["tnc"] = "Tanimuca-Retuarã", ["tnd"] = "Angosturas Tunebo", ["tne"] = "Tinoc Kallahan", ["tng"] = "Tobanga", ["tnh"] = "Maiani", ["tni"] = "Tandia", ["tnk"] = "Kwamera", ["tnl"] = "Lenakel", ["tnm"] = "Tabla", ["tnn"] = "North Tanna", ["tno"] = "Toromono", ["tnp"] = "Whitesands", ["tnq"] = "ตาอีโน", ["tnr"] = "Bedik", ["tns"] = "Tenis", ["tnt"] = "Tontemboan", ["tnu"] = "Tay Khang", ["tnv"] = "Tanchangya", ["tnw"] = "Tonsawang", ["tnx"] = "Tanema", ["tny"] = "Tongwe", ["tnz"] = "Ten'edn", ["to"] = "ตองงา", ["tob"] = "Toba", ["toc"] = "Coyutla Totonac", ["tod"] = "Toma", ["tof"] = "Gizrra", ["tog"] = "Tonga (Malawi)", ["toh"] = "Tonga (Mozambique)", ["toi"] = "Tonga (Zambia)", ["toj"] = "Tojolabal", ["tok"] = "Toki Pona", ["tol"] = "Tolowa", ["tom"] = "Tombulu", ["too"] = "Xicotepec de Juárez Totonac", ["top"] = "Papantla Totonac", ["toq"] = "Toposa", ["tor"] = "Togbo-Vara Banda", ["tos"] = "Highland Totonac", ["tou"] = "Tho", ["tov"] = "Upper Taromi", ["tow"] = "Jemez", ["tox"] = "Tobian", ["toy"] = "Topoiyo", ["toz"] = "To", ["tpa"] = "Taupota", ["tpc"] = "Azoyú Me'phaa", ["tpe"] = "Tippera", ["tpf"] = "Tarpia", ["tpg"] = "Kula", ["tpi"] = "ตอกปีซิน", ["tpj"] = "Tapieté", ["tpk"] = "Tupinikin", ["tpl"] = "Tlacoapa Me'phaa", ["tpm"] = "Tampulma", ["tpn"] = "Tupinambá", ["tpo"] = "Tai Pao", ["tpp"] = "Pisaflores Tepehua", ["tpq"] = "Tukpa", ["tpr"] = "Tuparí", ["tpt"] = "Tlachichilco Tepehua", ["tpu"] = "Tampuan", ["tpv"] = "Tanapag", ["tpw"] = "ตูปีเก่า", ["tpx"] = "Acatepec Me'phaa", ["tpy"] = "Trumai", ["tpz"] = "Tinputz", ["tqb"] = "Tembé", ["tql"] = "Lehali", ["tqm"] = "Turumsa", ["tqn"] = "Tenino", ["tqo"] = "Toaripi", ["tqp"] = "Tomoip", ["tqq"] = "Tunni", ["tqr"] = "Torona", ["tqt"] = "Western Totonac", ["tqu"] = "Touo", ["tqw"] = "Tonkawa", ["tr"] = "ตุรกี", ["tra"] = "Tirahi", ["trb"] = "Terebu", ["trc"] = "Copala Triqui", ["trd"] = "Turi", ["tre"] = "East Tarangan", ["trf"] = "Trinidadian Creole English", ["trg"] = "Lishán Didán", ["trh"] = "Turaka", ["tri"] = "Trió", ["trj"] = "Toram", ["trk-dkh"] = "Dukhan", ["trk-eog"] = "Early Old Oghuz", ["trk-oat"] = "ตุรกีแบบอานาโตเลียเก่า", ["trk-pro"] = "เตอร์กิกดั้งเดิม", ["trl"] = "Traveller Scottish", ["trm"] = "Tregami", ["trn"] = "Trinitario", ["tro"] = "Tarao", ["trp"] = "กอกบอรอก", ["trq"] = "San Martín Itunyoso Triqui", ["trr"] = "Taushiro", ["trs"] = "Chicahuaxtla Triqui", ["trt"] = "Tunggare", ["tru"] = "Turoyo", ["trv"] = "Taroko", ["trw"] = "Torwali", ["trx"] = "Tringgus", ["try"] = "ตุรุง", ["trz"] = "Torá", ["ts"] = "Tsonga", ["tsa"] = "Tsaangi", ["tsb"] = "Tsamai", ["tsc"] = "Tswa", ["tsd"] = "Tsakonian", ["tse"] = "Tunisian Sign Language", ["tsf"] = "Southwestern Tamang", ["tsg"] = "ซูก", ["tsh"] = "Tsuvan", ["tsi"] = "Tsimshian", ["tsj"] = "Tshangla", ["tsl"] = "Ts'ün-Lao", ["tsm"] = "Turkish Sign Language", ["tsp"] = "Northern Toussian", ["tsq"] = "มือไทย", ["tsr"] = "Akei", ["tss"] = "Taiwan Sign Language", ["tsu"] = "โจว", ["tsv"] = "Tsogo", ["tsw"] = "Tsishingini", ["tsx"] = "Mubami", ["tsy"] = "Tebul Sign Language", ["tt"] = "ตาตาร์", ["tta"] = "Tutelo", ["ttb"] = "Gaa", ["ttc"] = "Tektiteko", ["ttd"] = "Tauade", ["tte"] = "Bwanabwana", ["ttf"] = "Tuotomb", ["ttg"] = "Tutong", ["tth"] = "Upper Ta'oih", ["tti"] = "Tobati", ["ttj"] = "Tooro", ["ttk"] = "Totoro", ["ttl"] = "Totela", ["ttm"] = "Northern Tutchone", ["ttn"] = "Towei", ["tto"] = "Lower Ta'oih", ["ttp"] = "Tombelala", ["ttr"] = "Tera", ["tts"] = "อีสาน", ["ttt"] = "Tat", ["ttu"] = "Torau", ["ttv"] = "Titan", ["ttw"] = "Long Wat", ["tty"] = "Sikaritai", ["ttz"] = "Tsum", ["tua"] = "Wiarumus", ["tub"] = "Tübatulabal", ["tuc"] = "Mutu", ["tud"] = "Tuxá", ["tue"] = "Tuyuca", ["tuf"] = "Central Tunebo", ["tug"] = "Tunia", ["tuh"] = "Taulil", ["tui"] = "Tupuri", ["tuj"] = "Tugutil", ["tul"] = "Tula", ["tum"] = "Tumbuka", ["tun"] = "Tunica", ["tuo"] = "Tucano", ["tup-gua-pro"] = "ตูปี-กัวรานีดั้งเดิม", ["tup-kab"] = "Kabishiana", ["tup-pro"] = "ตูเปียนดั้งเดิม", ["tuq"] = "Tedaga", ["tus"] = "Tuscarora", ["tuu"] = "Tututni", ["tuv"] = "Turkana", ["tuw-alk"] = "Alchuka", ["tuw-bal"] = "Bala", ["tuw-kkl"] = "Kyakala", ["tuw-kli"] = "Kili", ["tuw-pro"] = "Proto-Tungusic", ["tuw-sol"] = "Solon", ["tux"] = "Tuxináwa", ["tuy"] = "Tugen", ["tuz"] = "Turka", ["tva"] = "Vaghua", ["tvd"] = "Tsuvadi", ["tve"] = "Te'un", ["tvk"] = "Southeast Ambrym", ["tvl"] = "ตูวาลู", ["tvm"] = "Tela-Masbuar", ["tvn"] = "Tavoyan", ["tvo"] = "ตีโดเร", ["tvs"] = "Taveta", ["tvt"] = "Tutsa Naga", ["tvu"] = "Tunen", ["tvw"] = "Sedoa", ["tvx"] = "Taivoan", ["tvy"] = "Timor Pidgin", ["twa"] = "Twana", ["twb"] = "Western Tawbuid", ["twc"] = "Teshenawa", ["twe"] = "Teiwa", ["twf"] = "เทาส์", ["twg"] = "Tereweng", ["twh"] = "ไทขาว", ["twm"] = "Tawang Monpa", ["twn"] = "Twendi", ["two"] = "Tswapong", ["twp"] = "Ere", ["twq"] = "Tasawaq", ["twr"] = "Southwestern Tarahumara", ["twt"] = "Turiwára", ["twu"] = "Termanu", ["tww"] = "Tuwari", ["twy"] = "Tawoyan", ["txa"] = "Tombonuo", ["txb"] = "โทแคเรียนบี", ["txc"] = "Tsetsaut", ["txe"] = "Totoli", ["txg"] = "ตังกุต", ["txh"] = "Thracian", ["txi"] = "Ikpeng", ["txj"] = "Tarjumo", ["txm"] = "Tomini", ["txn"] = "West Tarangan", ["txo"] = "Toto", ["txq"] = "Tii", ["txr"] = "Tartessian", ["txs"] = "Tonsea", ["txt"] = "Citak", ["txu"] = "Kayapó", ["txx"] = "Tatana", ["ty"] = "ตาฮีตี", ["tya"] = "Tauya", ["tye"] = "Kyenga", ["tyh"] = "O'du", ["tyi"] = "Teke-Tsaayi", ["tyj"] = "ไทแมน", ["tyl"] = "Thu Lao", ["tyn"] = "Kombai", ["typ"] = "Kuku-Thaypan", ["tyr"] = "ไทแดง", ["tys"] = "ซาปา", ["tyt"] = "Tày Tac", ["tyu"] = "Kua", ["tyv"] = "ตูวา", ["tyx"] = "Teke-Tyee", ["tyz"] = "ตั่ย", ["tza"] = "Tanzanian Sign Language", ["tzh"] = "Tzeltal", ["tzj"] = "Tz'utujil", ["tzl"] = "Talossan", ["tzm"] = "Central Atlas Tamazight", ["tzn"] = "Tugun", ["tzo"] = "โซตซิล", ["tzx"] = "Tabriak", ["uam"] = "Uamué", ["uan"] = "Kuan", ["uar"] = "Tairuma", ["uba"] = "Ubang", ["ubi"] = "Ubi", ["ubl"] = "Buhi'non Bikol", ["ubr"] = "Ubir", ["ubu"] = "Umbu-Ungu", ["uby"] = "Ubykh", ["uda"] = "Uda", ["ude"] = "Udihe", ["udg"] = "Muduga", ["udi"] = "อูดี", ["udj"] = "Ujir", ["udl"] = "Uldeme", ["udm"] = "อุดมูร์ต", ["udu"] = "Uduk", ["ues"] = "Kioko", ["ufi"] = "Ufim", ["ug"] = "อุยกูร์", ["uga"] = "ยูการิต", ["ugb"] = "Kuku-Ugbanh", ["uge"] = "Ughele", ["ugn"] = "Ugandan Sign Language", ["ugo"] = "กฺ๋อง", ["ugy"] = "Uruguayan Sign Language", ["uha"] = "Uhami", ["uhn"] = "Damal", ["uis"] = "Uisai", ["uiv"] = "Iyive", ["uji"] = "Tanjijili", ["uk"] = "ยูเครน", ["uka"] = "Kaburi", ["ukg"] = "Ukuriguma", ["ukh"] = "Ukhwejo", ["ukk"] = "Muak Sa-aak", ["ukl"] = "Ukrainian Sign Language", ["ukp"] = "Ukpe-Bayobiri", ["ukq"] = "Ukwa", ["uks"] = "Kaapor Sign Language", ["uku"] = "Ukue", ["ukw"] = "Ukwuani-Aboh-Ndoni", ["uky"] = "Kuuk Yak", ["ula"] = "Fungwa", ["ulb"] = "Olukumi", ["ulc"] = "Ulch", ["ule"] = "Lule", ["ulf"] = "Afra", ["uli"] = "Ulithian", ["ulk"] = "Meriam", ["ull"] = "Ullatan", ["ulm"] = "Ulumanda'", ["uln"] = "อุนเซอร์ด็อยทช์", ["ulu"] = "Uma' Lung", ["ulw"] = "Ulwa", ["uma"] = "Umatilla", ["umb"] = "Umbundu", ["umc"] = "Marrucinian", ["umd"] = "Umbindhamu", ["umg"] = "Umbuygamu", ["umi"] = "Ukit", ["umm"] = "Umon", ["umn"] = "Makyan Naga", ["umo"] = "Umotína", ["ump"] = "Umpila", ["umr"] = "Umbugarla", ["ums"] = "Pendau", ["umu"] = "Munsee", ["una"] = "North Watut", ["und"] = "Undetermined", ["une"] = "Uneme", ["ung"] = "Ngarinyin", ["unk"] = "Enawené-Nawé", ["unm"] = "Unami", ["unn"] = "Kurnai", ["unr"] = "Mundari", ["unu"] = "Unubahe", ["unx"] = "Munda", ["unz"] = "Unde Kaili", ["uok"] = "Uokha", ["uon"] = "Kulon", ["upi"] = "Umeda", ["upv"] = "Northeast Malakula", ["ur"] = "อูรดู", ["ura"] = "Urarina", ["urb"] = "Urubú-Kaapor", ["urc"] = "Urningangg", ["ure"] = "Uru", ["urf"] = "Uradhi", ["urg"] = "Urigina", ["urh"] = "Urhobo", ["uri"] = "Urim", ["urj-fin-pro"] = "ฟินนิกดั้งเดิม", ["urj-koo"] = "Old Komi", ["urj-kuk"] = "Kukkuzi", ["urj-kya"] = "Komi-Yazva", ["urj-mdv-pro"] = "Proto-Mordvinic", ["urj-prm-pro"] = "เปอร์มิกดั้งเดิม", ["urj-pro"] = "ยูราลิกดั้งเดิม", ["urj-ugr-pro"] = "ยูกริกดั้งเดิม", ["urk"] = "อูรักลาโวยจ", ["url"] = "Urali", ["urm"] = "Urapmin", ["urn"] = "Uruangnirin", ["uro"] = "Ura (New Guinea)", ["urp"] = "Uru-Pa-In", ["urr"] = "Löyöp", ["urt"] = "Urat", ["uru"] = "Urumi", ["urv"] = "Uruava", ["urw"] = "Sop", ["urx"] = "Urimo", ["ury"] = "Orya", ["urz"] = "Uru-Eu-Wau-Wau", ["usa"] = "Usarufa", ["ush"] = "Ushojo", ["usi"] = "Usui", ["usk"] = "Usaghade", ["usp"] = "Uspanteco", ["uss"] = "Saare", ["usu"] = "Uya", ["uta"] = "Otank", ["ute"] = "Ute", ["uth"] = "Hun", ["utp"] = "Aba", ["utr"] = "Etulo", ["utu"] = "Utu", ["uum"] = "Urum", ["uun"] = "Kulon-Pazeh", ["uur"] = "Ura (Vanuatu)", ["uuu"] = "U", ["uve"] = "West Uvean", ["uvh"] = "Uri", ["uvl"] = "Lote", ["uwa"] = "Kuku-Uwanh", ["uya"] = "Doko-Uyanga", ["uz"] = "อุซเบก", ["vaa"] = "Vaagri Booli", ["vae"] = "Vale", ["vag"] = "Vagla", ["vah"] = "Varhadi", ["vai"] = "ไว", ["vaj"] = "Sekele", ["val"] = "Vehes", ["vam"] = "Vanimo", ["van"] = "Valman", ["vao"] = "Vao", ["vap"] = "Vaiphei", ["var"] = "Huarijio", ["vas"] = "Vasavi", ["vau"] = "Vanuma", ["vav"] = "Varli", ["vay"] = "Vayu", ["vbb"] = "Southeast Babar", ["vbk"] = "Southwestern Bontoc", ["ve"] = "เวนดา", ["vec"] = "เวเนโต", ["ved"] = "Veddah", ["vem"] = "Vemgo-Mabas", ["veo"] = "Ventureño", ["vep"] = "เวปส์", ["ver"] = "Mom Jango", ["vgr"] = "Vaghri", ["vgt"] = "Flemish Sign Language", ["vi"] = "เวียดนาม", ["vic"] = "Virgin Islands Creole", ["vid"] = "Vidunda", ["vif"] = "Vili", ["vig"] = "Viemo", ["vil"] = "Vilela", ["vis"] = "Vishavan", ["vit"] = "Viti", ["viv"] = "Iduna", ["vjk"] = "Bajjika", ["vka"] = "Kariyarra", ["vki"] = "Ija-Zuba", ["vkj"] = "Kujarge", ["vkk"] = "Kaur", ["vkl"] = "Kulisusu", ["vkm"] = "Kamakan", ["vko"] = "Kodeoha", ["vkp"] = "Korlai Creole Portuguese", ["vkt"] = "Tenggarong Kutai Malay", ["vku"] = "Kurrama", ["vlp"] = "Valpei", ["vls"] = "West Flemish", ["vma"] = "Martuthunira", ["vmb"] = "Mbabaram", ["vmc"] = "Juxtlahuaca Mixtec", ["vmd"] = "Mudu Koraga", ["vme"] = "East Masela", ["vmf"] = "East Franconian", ["vmg"] = "Minigir", ["vmh"] = "Maraghei", ["vmi"] = "Miwa", ["vmj"] = "Ixtayutla Mixtec", ["vmk"] = "Makhuwa-Shirima", ["vml"] = "Malgana", ["vmm"] = "Mitlatongo Mixtec", ["vmp"] = "Soyaltepec Mazatec", ["vmq"] = "Soyaltepec Mixtec", ["vmr"] = "Marenje", ["vmu"] = "Muluridyi", ["vmv"] = "Valley Maidu", ["vmw"] = "Makhuwa", ["vmx"] = "Tamazola Mixtec", ["vmy"] = "Ayautla Mazatec", ["vmz"] = "Mazatlán Mazatec", ["vnk"] = "Lovono", ["vnm"] = "Neve'ei", ["vnp"] = "Vunapu", ["vo"] = "โวลาปุก", ["vor"] = "Voro", ["vot"] = "โวต", ["vra"] = "Vera'a", ["vro"] = "เวอโร", ["vrs"] = "Varisi", ["vrt"] = "Burmbar", ["vsi"] = "Moldova Sign Language", ["vsl"] = "Venezuelan Sign Language", ["vsv"] = "Valencian Sign Language", ["vto"] = "Vitou", ["vum"] = "Vumbu", ["vun"] = "Vunjo", ["vut"] = "Vute", ["vwa"] = "Awa (China)", ["wa"] = "วัลลูน", ["waa"] = "Walla Walla", ["wab"] = "Wab", ["wac"] = "Wasco-Wishram", ["wad"] = "Wandamen", ["waf"] = "Wakoná", ["wag"] = "Wa'ema", ["wah"] = "Watubela", ["waj"] = "Waffa", ["wal"] = "Wolaytta", ["wam"] = "Massachusett", ["wan"] = "Wan", ["wao"] = "Wappo", ["wap"] = "Wapishana", ["waq"] = "Wageman", ["war"] = "วาไร", ["was"] = "Washo", ["wat"] = "Kaninuwa", ["wau"] = "Wauja", ["wav"] = "Waka", ["waw"] = "Waiwai", ["wax"] = "Watam", ["way"] = "Wayana", ["waz"] = "Wampur", ["wba"] = "วาราโอ", ["wbb"] = "Wabo", ["wbe"] = "Waritai", ["wbf"] = "Wara", ["wbh"] = "Wanda", ["wbi"] = "Wanji", ["wbj"] = "Alagwa", ["wbk"] = "Waigali", ["wbl"] = "Wakhi", ["wbm"] = "Wa", ["wbp"] = "Warlpiri", ["wbq"] = "Waddar", ["wbr"] = "Wagdi", ["wbt"] = "Wanman", ["wbv"] = "Wajarri", ["wbw"] = "Woi", ["wca"] = "Yanomam", ["wci"] = "Waci Gbe", ["wdd"] = "Wandji", ["wdg"] = "Wadaginam", ["wdj"] = "Wadjiginy", ["wdt"] = "Wendat", ["wdu"] = "Wadjigu", ["wdy"] = "Wadjabangayi", ["wea"] = "Wewaw", ["wec"] = "Wè Western", ["wed"] = "Wedau", ["weh"] = "Weh", ["wei"] = "Kiunum", ["wem"] = "Weme Gbe", ["weo"] = "Wemale", ["wer"] = "Weri", ["wes"] = "Cameroon Pidgin", ["wet"] = "Perai", ["weu"] = "Welaung", ["wew"] = "Weyewa", ["wfg"] = "Yafi", ["wga"] = "Wagaya", ["wgb"] = "Wagawaga", ["wgg"] = "Wangganguru", ["wgi"] = "Wahgi", ["wgo"] = "Waigeo", ["wgu"] = "Wirangu", ["wgy"] = "Warrgamay", ["wha"] = "Manusela", ["whg"] = "North Wahgi", ["whk"] = "Wahau Kenyah", ["whu"] = "Wahau Kayan", ["wib"] = "Southern Toussian", ["wic"] = "Wichita", ["wie"] = "Wik-Epa", ["wif"] = "Wik-Keyangan", ["wig"] = "Wik-Ngathana", ["wih"] = "Wik-Me'anha", ["wii"] = "Minidien", ["wij"] = "Wik-Iiyanh", ["wik"] = "Wikalkan", ["wil"] = "Wilawila", ["wim"] = "Wik-Mungkan", ["win"] = "วินเนอเบโก", ["wir"] = "Wiraféd", ["wiu"] = "Wiru", ["wiv"] = "Muduapa", ["wiy"] = "Wiyot", ["wja"] = "Waja", ["wji"] = "Warji", ["wka"] = "Kw'adza", ["wkb"] = "Kumbaran", ["wkd"] = "Mo", ["wkl"] = "Kalanadi", ["wku"] = "Kunduvadi", ["wkw"] = "Wakawaka", ["wky"] = "Wangkayutyuru", ["wla"] = "Walio", ["wlc"] = "Mwali Comorian", ["wle"] = "Wolane", ["wlg"] = "Kunbarlang", ["wli"] = "Waioli", ["wlk"] = "Wailaki", ["wll"] = "Wali (Sudan)", ["wlm"] = "เวลส์กลาง", ["wlo"] = "Wolio", ["wlr"] = "Wailapa", ["wls"] = "Wallisian", ["wlu"] = "Wuliwuli", ["wlv"] = "Wichí Lhamtés Vejoz", ["wlw"] = "Walak", ["wlx"] = "Wali (Ghana)", ["wly"] = "Waling", ["wmb"] = "Wambaya", ["wmc"] = "Wamas", ["wmd"] = "Mamaindé", ["wme"] = "Wambule", ["wmh"] = "Waima'a", ["wmi"] = "Wamin", ["wmm"] = "Maiwa (Indonesia)", ["wmn"] = "Waamwang", ["wmo"] = "Wam", ["wms"] = "Wambon", ["wmt"] = "Walmajarri", ["wmw"] = "มวานี", ["wmx"] = "Womo", ["wnb"] = "Wanambre", ["wnc"] = "Wantoat", ["wnd"] = "Wandarang", ["wne"] = "Waneci", ["wng"] = "Wanggom", ["wni"] = "Ndzwani Comorian", ["wnk"] = "Wanukaka", ["wnm"] = "Wanggamala", ["wno"] = "Wano", ["wnp"] = "Wanap", ["wnu"] = "Usan", ["wnw"] = "Wintu", ["wny"] = "Wanyi", ["wo"] = "โวลอฟ", ["woa"] = "Tyaraity", ["wob"] = "Wobé", ["woc"] = "Wogeo", ["wod"] = "Wolani", ["woe"] = "Woleaian", ["wog"] = "Wogamusin", ["woi"] = "Kamang", ["wok"] = "Longto", ["wom"] = "Perema", ["won"] = "Wongo", ["woo"] = "Manombai", ["wor"] = "Woria", ["wos"] = "Hanga Hundi", ["wow"] = "Wawonii", ["woy"] = "Weyto", ["wpc"] = "Wirö", ["wra"] = "Warapu", ["wrb"] = "Warluwara", ["wrg"] = "Warungu", ["wrh"] = "Wiradjuri", ["wri"] = "Wariyangga", ["wrk"] = "Garawa", ["wrl"] = "Warlmanpa", ["wrm"] = "Warumungu", ["wrn"] = "Warnang", ["wro"] = "Worora", ["wrp"] = "Waropen", ["wrr"] = "Wardaman", ["wrs"] = "Waris", ["wru"] = "Waru", ["wrv"] = "Waruna", ["wrw"] = "Gugu Warra", ["wrx"] = "Wae Rana", ["wrz"] = "Warray", ["wsa"] = "Warembori", ["wsi"] = "Wusi", ["wsk"] = "Waskia", ["wsr"] = "Owenia", ["wsu"] = "Wasu", ["wsv"] = "Wotapuri-Katarqalai", ["wtf"] = "Watiwa", ["wth"] = "Wathaurong", ["wti"] = "Berta", ["wtk"] = "Watakataui", ["wtm"] = "Mewati", ["wtw"] = "Wotu", ["wua"] = "Wikngenchera", ["wub"] = "Wunambal", ["wud"] = "Wudu", ["wuh"] = "Wutunhua", ["wul"] = "Silimo", ["wum"] = "Wumbvu", ["wun"] = "Bungu", ["wur"] = "Wurrugu", ["wut"] = "Wutung", ["wuu"] = "อู๋", ["wuv"] = "Wuvulu-Aua", ["wux"] = "Wulna", ["wuy"] = "Wauyai", ["wwa"] = "Waama", ["wwo"] = "Dorig", ["wwr"] = "Warrwa", ["www"] = "Wawa", ["wxa"] = "Waxiang", ["wxw"] = "Wardandi", ["wya"] = "Wyandot", ["wyb"] = "Ngiyambaa", ["wyi"] = "Woiwurrung", ["wym"] = "วีลามอวิตแซ", ["wyr"] = "Wayoró", ["wyy"] = "Western Fijian", ["xaa"] = "อาหรับแบบอันดะลุส", ["xab"] = "Sambe", ["xac"] = "Kachari", ["xad"] = "Adai", ["xae"] = "Aequian", ["xag"] = "Aghwan", ["xai"] = "Kaimbé", ["xaj"] = "Ararandewára", ["xak"] = "Maku", ["xal"] = "คัลมึค", ["xam"] = "ǀXam", ["xan"] = "Xamtanga", ["xao"] = "Khao", ["xap"] = "Apalachee", ["xaq"] = "Aquitanian", ["xar"] = "Karami", ["xas"] = "Kamassian", ["xat"] = "Katawixi", ["xau"] = "Kauwera", ["xav"] = "Xavante", ["xaw"] = "Kawaiisu", ["xay"] = "Kayan Mahakam", ["xbb"] = "Lower Burdekin", ["xbc"] = "แบกเตรีย", ["xbd"] = "Bindal", ["xbe"] = "Bigambal", ["xbg"] = "Bunganditj", ["xbi"] = "Kombio", ["xbj"] = "Birrpayi", ["xbm"] = "เบรอตงกลาง", ["xbn"] = "Kenaboi", ["xbo"] = "Bulgar", ["xbp"] = "Bibbulman", ["xbr"] = "กัมเบอรา", ["xbw"] = "Kambiwá", ["xby"] = "Butchulla", ["xcb"] = "Cumbric", ["xcc"] = "Camunic", ["xce"] = "Celtiberian", ["xch"] = "Chemakum", ["xcl"] = "อาร์มีเนียเก่า", ["xcm"] = "Comecrudo", ["xcn"] = "Cotoname", ["xco"] = "Khwarezmian", ["xcr"] = "Carian", ["xct"] = "ทิเบตคลาสสิก", ["xcu"] = "Curonian", ["xcv"] = "Chuvan", ["xcw"] = "Coahuilteco", ["xcy"] = "Cayuse", ["xda"] = "Darkinjung", ["xdc"] = "Dacian", ["xdk"] = "Dharug", ["xdm"] = "เอโดม", ["xdq"] = "Kaitag", ["xdy"] = "Malayic Dayak", ["xeb"] = "Eblaite", ["xed"] = "Hdi", ["xeg"] = "ǁXegwi", ["xel"] = "Kelo", ["xem"] = "Kembayan", ["xep"] = "Epi-Olmec", ["xer"] = "Xerénte", ["xes"] = "Kesawai", ["xet"] = "Xetá", ["xeu"] = "Keoru-Ahia", ["xfa"] = "ฟาลิสกุส", ["xga"] = "Galatian", ["xgb"] = "Gbin", ["xgd"] = "Gudang", ["xgf"] = "Gabrielino-Fernandeño", ["xgg"] = "Goreng", ["xgi"] = "Garingbal", ["xgl"] = "Galindian", ["xgm"] = "Darumbal", ["xgn-pro"] = "มองโกลิกดั้งเดิม", ["xgr"] = "Garza", ["xgu"] = "Unggumi", ["xgw"] = "Guwa", ["xh"] = "โคซา", ["xha"] = "Harami", ["xhc"] = "Hunnic", ["xhd"] = "Hadrami", ["xhe"] = "Khetrani", ["xhm"] = "เขมรกลาง", ["xhr"] = "Hernican", ["xht"] = "Hattic", ["xhu"] = "ฮูร์เรีย", ["xhv"] = "Khua", ["xib"] = "Iberian", ["xii"] = "Xiri", ["xil"] = "Illyrian", ["xin"] = "Xinca", ["xir"] = "Xiriâna", ["xis"] = "Kisan", ["xiv"] = "Harappan", ["xiy"] = "Xipaya", ["xjb"] = "Minjungbal", ["xka"] = "Kalkoti", ["xkb"] = "Manigri-Kambolé Ede Nago", ["xkc"] = "Khoini", ["xkd"] = "Mendalam Kayan", ["xke"] = "Kereho", ["xkf"] = "Khengkha", ["xkg"] = "Kagoro", ["xki"] = "Kenyan Sign Language", ["xkj"] = "Kajali", ["xkk"] = "Kaco'", ["xkl"] = "Bakung", ["xkn"] = "Kayan River Kayan", ["xko"] = "Kiorr", ["xkp"] = "Kabatei", ["xkq"] = "Koroni", ["xkr"] = "Xakriabá", ["xks"] = "Kumbewaha", ["xkt"] = "Kantosi", ["xku"] = "Kaamba", ["xkv"] = "Kgalagadi", ["xkw"] = "Kembra", ["xkx"] = "Karore", ["xky"] = "Uma' Lasan", ["xkz"] = "Kurtöp", ["xla"] = "Kamula", ["xlb"] = "Loup B", ["xlc"] = "Lycian", ["xld"] = "Lydian", ["xle"] = "Lemnian", ["xlg"] = "Ancient Ligurian", ["xli"] = "Liburnian", ["xln"] = "Alanic", ["xlo"] = "Loup A", ["xlp"] = "Lepontic", ["xls"] = "Lusitanian", ["xlu"] = "Luwian", ["xly"] = "Elymian", ["xmb"] = "Mbonga", ["xmc"] = "Makhuwa-Marrevone", ["xmd"] = "Mbudum", ["xme-ker"] = "Kermanic", ["xme-kls"] = "Kalasuri", ["xme-klt"] = "Kilit", ["xme-mid"] = "Middle Median", ["xme-old"] = "Old Median", ["xme-ott"] = "Old Tati", ["xme-taf"] = "Tafreshi", ["xme-ttc-pro"] = "Proto-Tatic", ["xmf"] = "มิงเกรเลีย", ["xmg"] = "Mengaka", ["xmh"] = "Kugu-Muminh", ["xmj"] = "Majera", ["xmk"] = "Ancient Macedonian", ["xml"] = "Malaysian Sign Language", ["xmm"] = "มลายูแบบมานาโด", ["xmo"] = "Morerebi", ["xmp"] = "Kuku-Mu'inh", ["xmq"] = "Kuku-Mangk", ["xmr"] = "Meroitic", ["xms"] = "Moroccan Sign Language", ["xmt"] = "Matbat", ["xmu"] = "Kamu", ["xmx"] = "Maden", ["xmy"] = "Mayaguduna", ["xmz"] = "Mori Bawah", ["xna"] = "Ancient North Arabian", ["xnb"] = "Kanakanabu", ["xnd-pro"] = "Proto-Na-Dene", ["xng"] = "มองโกเลียกลาง", ["xnh"] = "Kuanhua", ["xni"] = "Ngarigu", ["xnk"] = "Nganakarti", ["xnn"] = "กันกานาอือเหนือ", ["xnr"] = "Kangri", ["xns"] = "Kanashi", ["xnt"] = "Narragansett", ["xnu"] = "Nukunul", ["xny"] = "Nyiyaparli", ["xoc"] = "O'chi'chi'", ["xod"] = "Kokoda", ["xog"] = "Soga", ["xoi"] = "Kominimung", ["xok"] = "Xokleng", ["xom"] = "Komo", ["xon"] = "Konkomba", ["xoo"] = "Xukurú", ["xop"] = "Kopar", ["xor"] = "Korubo", ["xow"] = "Kowaki", ["xpa"] = "Pirriya", ["xpb"] = "Pyemmairre", ["xpc"] = "Pecheneg", ["xpd"] = "Paredarerme", ["xpe"] = "Liberia Kpelle", ["xpf"] = "Southeast Tasmanian", ["xpg"] = "Phrygian", ["xph"] = "Tyerrernotepanner", ["xpi"] = "Pictish", ["xpj"] = "Mpalitjanh", ["xpk"] = "Kulina", ["xpl"] = "Port Sorell", ["xpm"] = "Pumpokol", ["xpn"] = "Kapinawá", ["xpo"] = "Pochutec", ["xpp"] = "Puyo-Paekche", ["xpq"] = "Mohegan-Pequot", ["xpr"] = "พาร์เทีย", ["xps"] = "Pisidian", ["xpu"] = "Punic", ["xpv"] = "Tommeginne", ["xpw"] = "Peerapper", ["xpx"] = "Toogee", ["xpy"] = "Buyeo", ["xpz"] = "Bruny Island", ["xqa"] = "Karakhanid", ["xqt"] = "Qatabanian", ["xra"] = "Krahô", ["xrb"] = "Eastern Karaboro", ["xrd"] = "Gundungurra", ["xre"] = "Kreye", ["xrg"] = "Minang", ["xri"] = "Krikati-Timbira", ["xrm"] = "Armazic", ["xrn"] = "Arin", ["xrq"] = "Karranga", ["xrr"] = "Raetic", ["xrt"] = "Aranama-Tamique", ["xru"] = "Marriammu", ["xrw"] = "Karawa", ["xsa"] = "Sabaean", ["xsb"] = "ซัมบัล", ["xsc-pro"] = "Proto-Scythian", ["xsc-sak-pro"] = "Proto-Saka", ["xsc-sar-pro"] = "Proto-Sarmatian", ["xsc-skw-pro"] = "Proto-Saka-Wakhi", ["xsd"] = "Sidetic", ["xse"] = "Sempan", ["xsh"] = "Shamang", ["xsi"] = "Sio", ["xsj"] = "Subi", ["xsl"] = "South Slavey", ["xsm"] = "Kasem", ["xsn"] = "Sanga (Nigeria)", ["xso"] = "Solano", ["xsp"] = "Silopi", ["xsq"] = "Makhuwa-Saka", ["xsr"] = "เศรปา", ["xss"] = "Assan", ["xsu"] = "Sanumá", ["xsv"] = "ซูโดเวีย", ["xsy"] = "Saisiyat", ["xta"] = "Alcozauca Mixtec", ["xtb"] = "Chazumba Mixtec", ["xtc"] = "Kadugli", ["xtd"] = "Diuxi-Tilantongo Mixtec", ["xte"] = "Ketengban", ["xth"] = "Yitha Yitha", ["xti"] = "Sinicahua Mixtec", ["xtj"] = "San Juan Teita Mixtec", ["xtl"] = "Tijaltepec Mixtec", ["xtm"] = "Magdalena Peñasco Mixtec", ["xtn"] = "Northern Tlaxiaco Mixtec", ["xto"] = "โทแคเรียนเอ", ["xtp"] = "San Miguel Piedras Mixtec", ["xtq"] = "ตุมซุก", ["xtr"] = "Early Tripuri", ["xts"] = "Sindihui Mixtec", ["xtt"] = "Tacahua Mixtec", ["xtu"] = "Cuyamecalco Mixtec", ["xtv"] = "Thawa", ["xtw"] = "Tawandê", ["xty"] = "Yoloxochitl Mixtec", ["xua"] = "Alu Kurumba", ["xub"] = "Betta Kurumba", ["xud"] = "Umiida", ["xug"] = "คูนิงามิ", ["xuj"] = "Jennu Kurumba", ["xul"] = "Ngunawal", ["xum"] = "อุมเบรีย", ["xun"] = "Unggaranggu", ["xuo"] = "Kuo", ["xup"] = "Upper Umpqua", ["xur"] = "Urartian", ["xut"] = "Kuthant", ["xuu"] = "Khwe", ["xve"] = "Venetic", ["xvn"] = "วันดัล", ["xvo"] = "Volscian", ["xvs"] = "Vestinian", ["xwa"] = "Kwaza", ["xwc"] = "Woccon", ["xwd"] = "Wadi Wadi", ["xwe"] = "Xwela Gbe", ["xwg"] = "Kwegu", ["xwj"] = "Wajuk", ["xwk"] = "Wangkumara", ["xwl"] = "Western Xwla Gbe", ["xwo"] = "Written Oirat", ["xwr"] = "Kwerba Mamberamo", ["xww"] = "Wemba-Wemba", ["xxb"] = "Boro", ["xxk"] = "Ke'o", ["xxm"] = "Minkin", ["xxr"] = "Koropó", ["xxt"] = "Tambora", ["xya"] = "Yaygir", ["xyb"] = "Yandjibara", ["xyl"] = "Yalakalore", ["xyt"] = "Mayi-Thakurti", ["xyy"] = "Yorta Yorta", ["xzh"] = "Zhang-Zhung", ["xzm"] = "Semigallian", ["xzp"] = "Ancient Zapotec", ["yaa"] = "Yaminahua", ["yab"] = "Yuhup", ["yac"] = "Pass Valley Yali", ["yad"] = "Yagua", ["yae"] = "Pumé", ["yaf"] = "Yaka", ["yag"] = "ยามานา", ["yah"] = "Yazghulami", ["yai"] = "Yaghnobi", ["yaj"] = "Banda-Yangere", ["yak"] = "Yakima", ["yal"] = "Yalunka", ["yam"] = "Yamba", ["yan"] = "Mayangna", ["yao"] = "Yao", ["yap"] = "Yapese", ["yaq"] = "Yaqui", ["yar"] = "Yabarana", ["yas"] = "Gunu", ["yat"] = "Yambeta", ["yau"] = "Yuwana", ["yav"] = "Yangben", ["yaw"] = "Yawalapití", ["yay"] = "Agwagwune", ["yaz"] = "Lokaa", ["yba"] = "Yala", ["ybb"] = "Yemba", ["ybe"] = "Western Yugur", ["ybh"] = "Yakkha", ["ybi"] = "Yamphu", ["ybj"] = "Hasha", ["ybk"] = "Bokha", ["ybl"] = "Yukuben", ["ybm"] = "Yaben", ["ybn"] = "Yabaâna", ["ybo"] = "Yabong", ["ybx"] = "Yawiyo", ["yby"] = "Yaweyuha", ["ych"] = "Chesu", ["ycl"] = "Lolopo", ["ycn"] = "Yucuna", ["ycp"] = "Chepya", ["ycr"] = "Yilan Creole", ["yda"] = "Yanda", ["yde"] = "Yangum Dey", ["ydg"] = "Yidgha", ["ydk"] = "Yoidik", ["yea"] = "Ravula", ["yec"] = "Yenish", ["yee"] = "Yimas", ["yei"] = "Yeni", ["yej"] = "Yevanic", ["yen"] = "Yendang", ["yer"] = "Tarok", ["yes"] = "Yeskwa", ["yet"] = "Yetfa", ["yeu"] = "Yerukula", ["yev"] = "Yapunda", ["yey"] = "Yeyi", ["ygi"] = "Yiningayi", ["ygl"] = "Yangum Gel", ["ygm"] = "Yagomi", ["ygp"] = "Gepo", ["ygr"] = "Yagaria", ["ygs"] = "Yolngu Sign Language", ["ygu"] = "Yugul", ["ygw"] = "Yagwoia", ["yha"] = "Baha", ["yhl"] = "Hlepho Phowa", ["yi"] = "ยิดดิช", ["yia"] = "Yinggarda", ["yif"] = "Ache", ["yig"] = "Wusa", ["yii"] = "Yidiny", ["yij"] = "Yindjibarndi", ["yik"] = "Dongshanba Lalo", ["yil"] = "Yindjilandji", ["yim"] = "Yimchungru Naga", ["yin"] = "Yinchia", ["yip"] = "Pholo", ["yiq"] = "Micha", ["yir"] = "North Awyu", ["yis"] = "Yis", ["yit"] = "Eastern Lalu", ["yiu"] = "Lope", ["yiv"] = "Northern Nisu", ["yix"] = "Axi", ["yiy"] = "Yir-Yoront", ["yiz"] = "Azhe", ["yka"] = "ยากัน", ["ykg"] = "Northern Yukaghir", ["ykh"] = "Khamnigan Mongol", ["yki"] = "Yoke", ["ykk"] = "Yakaikeke", ["ykl"] = "Khlula", ["ykm"] = "Kap", ["ykn"] = "Kua-nsi", ["yko"] = "Yasa", ["ykr"] = "Yekora", ["ykt"] = "Kathu", ["yku"] = "Kuamasi", ["yky"] = "Yakoma", ["yla"] = "Yaul", ["ylb"] = "Yaleba", ["yle"] = "Yele", ["ylg"] = "Yelogu", ["yli"] = "Angguruk Yali", ["yll"] = "Yil", ["ylm"] = "Limi", ["yln"] = "Langnian Buyang", ["ylo"] = "Naruo", ["ylr"] = "Yalarnnga", ["ylu"] = "Aribwaung", ["yly"] = "Nyelâyu", ["ymb"] = "Yambes", ["ymc"] = "Southern Muji", ["ymd"] = "Muda", ["yme"] = "Yameo", ["ymg"] = "Yamongeri", ["ymh"] = "Mili", ["ymi"] = "Moji", ["ymk"] = "Makwe", ["yml"] = "Iamalele", ["ymm"] = "Maay", ["ymn"] = "Sunum", ["ymo"] = "Yangum Mon", ["ymp"] = "Yamap", ["ymq"] = "Qila Muji", ["ymr"] = "Malasar", ["yms"] = "Mysian", ["ymx"] = "Northern Muji", ["ymz"] = "Muzi", ["yna"] = "Aluo", ["ynb"] = "Yamben", ["ynd"] = "Yandruwandha", ["yne"] = "Lang'e", ["yng"] = "Yango", ["ynk"] = "Naukanski", ["ynl"] = "Yangulam", ["ynn"] = "Yana", ["yno"] = "ยอง", ["yns"] = "Yansi", ["ynu"] = "Yahuna", ["yo"] = "โยรูบา", ["yob"] = "Yoba", ["yog"] = "โยกัด", ["yoi"] = "โยนางูนิ", ["yok-bvy"] = "Buena Vista Yokuts", ["yok-dly"] = "Delta Yokuts", ["yok-gsy"] = "Gashowu Yokuts", ["yok-kry"] = "Kings River Yokuts", ["yok-nvy"] = "Northern Valley Yokuts", ["yok-ply"] = "Palewyami Yokuts", ["yok-svy"] = "Southern Valley Yokuts", ["yok-tky"] = "Tule-Kaweah Yokuts", ["yol"] = "ยอลอ", ["yom"] = "Yombe", ["yon"] = "Yongkom", ["yox"] = "โยรง", ["yoy"] = "Yoy", ["ypa"] = "Phala", ["ypb"] = "Labo Phowa", ["ypg"] = "Phola", ["yph"] = "Phupha", ["ypk-pro"] = "Proto-Yupik", ["ypm"] = "Phuma", ["ypn"] = "Ani Phowa", ["ypo"] = "Alo Phola", ["ypp"] = "Phupa", ["ypz"] = "Phuza", ["yra"] = "Yerakai", ["yrb"] = "Yareba", ["yre"] = "Yaouré", ["yri"] = "Yarí", ["yrk-for"] = "Forest Nenets", ["yrk-tun"] = "Tundra Nenets", ["yrl"] = "Nheengatu", ["yrn"] = "Yerong", ["yro"] = "Ỹaroamë", ["yrw"] = "Yarawata", ["yry"] = "Yarluyandi", ["ysc"] = "Jassic", ["ysd"] = "Samatao", ["ysg"] = "Sonaga", ["ysl"] = "Yugoslavian Sign Language", ["ysn"] = "Sani", ["yso"] = "Nisi", ["ysp"] = "Southern Lolopo", ["ysr"] = "Sirenik", ["yss"] = "Yessan-Mayo", ["ysy"] = "Sanie", ["yta"] = "Talu", ["ytl"] = "Toloza", ["ytp"] = "Thopho", ["ytw"] = "Yout Wam", ["yty"] = "Yatay", ["yua"] = "Yucatec Maya", ["yub"] = "Yugambal", ["yuc"] = "Yuchi", ["yue"] = "กวางตุ้ง", ["yuf"] = "Havasupai-Walapai-Yavapai", ["yug"] = "Yug", ["yui"] = "Yurutí", ["yuj"] = "Karkar-Yuri", ["yuk"] = "Yuki", ["yul"] = "Yulu", ["yum"] = "Yuma", ["yun"] = "Bena", ["yup"] = "Yukpa", ["yuq"] = "Yuqui", ["yur"] = "Yurok", ["yut"] = "Yopno", ["yuw"] = "Finisterre Yau", ["yux"] = "Southern Yukaghir", ["yuy"] = "East Yugur", ["yuz"] = "Yuracare", ["yva"] = "Yawa", ["yvt"] = "Yavitero", ["ywa"] = "Kalou", ["ywg"] = "Yinhawangka", ["ywl"] = "Western Lalu", ["ywn"] = "Yawanawa", ["ywq"] = "Nasu", ["ywr"] = "Yawuru", ["ywt"] = "Xishanba Lalo", ["ywu"] = "Wumeng", ["yww"] = "Yawarawarga", ["yxa"] = "Mayawali", ["yxg"] = "Yagara", ["yxl"] = "Yarli", ["yxm"] = "Yinwum", ["yxu"] = "Yuyu", ["yxy"] = "Yabula Yabula", ["yyu"] = "Torricelli Yau", ["yyz"] = "Ayizi", ["yzg"] = "E'ma Buyang", ["yzk"] = "Zokhuo", ["za"] = "จ้วง", ["zaa"] = "Sierra de Juárez Zapotec", ["zab"] = "San Juan Guelavía Zapotec", ["zac"] = "Ocotlán Zapotec", ["zad"] = "Cajonos Zapotec", ["zae"] = "Yareni Zapotec", ["zaf"] = "Ayoquesco Zapotec", ["zag"] = "Zaghawa", ["zah"] = "Zangwal", ["zai"] = "Isthmus Zapotec", ["zaj"] = "Zaramo", ["zak"] = "Zanaki", ["zal"] = "Zauzou", ["zam"] = "Central Mahuatlán Zapotec", ["zao"] = "Ozolotepec Zapotec", ["zap"] = "Zapotec", ["zaq"] = "Aloápam Zapotec", ["zar"] = "Rincón Zapotec", ["zas"] = "Santo Domingo Albarradas Zapotec", ["zat"] = "Tabaa Zapotec", ["zau"] = "ซันสการ์", ["zav"] = "Yatzachi Zapotec", ["zaw"] = "Mitla Zapotec", ["zax"] = "Xadani Zapotec", ["zay"] = "Zayse-Zergulla", ["zaz"] = "Zari", ["zbt"] = "Batui", ["zca"] = "Coatecas Altas Zapotec", ["zdj"] = "Ngazidja Comorian", ["zea"] = "Zealandic", ["zeg"] = "Zenag", ["zen"] = "Zenaga", ["zga"] = "Kinga", ["zgh"] = "Moroccan Amazigh", ["zgr"] = "Magori", ["zh"] = "จีน", ["zhb"] = "Zhaba", ["zhi"] = "Zhire", ["zhn"] = "จ้วงแบบหนง", ["zhw"] = "Zhoa", ["zhx-min-pro"] = "หมิ่นดั้งเดิม", ["zhx-sht"] = "Shaozhou Tuhua", ["zhx-sic"] = "เสฉวน", ["zhx-tai"] = "ห่อยซัน", ["zia"] = "Zia", ["zib"] = "Zimbabwe Sign Language", ["zik"] = "Zimakani", ["zil"] = "Zialo", ["zim"] = "Mesme", ["zin"] = "Zinza", ["zir"] = "Ziriya", ["ziw"] = "Zigula", ["ziz"] = "Zizilivakan", ["zka"] = "Kaimbulawa", ["zkb"] = "Koibal", ["zkd"] = "กะดู", ["zkg"] = "Goguryeo", ["zkh"] = "Khorezmian Turkic", ["zkk"] = "Karankawa", ["zko"] = "Kott", ["zkp"] = "São Paulo Kaingáng", ["zkr"] = "Zakhring", ["zkt"] = "คีตัน", ["zku"] = "Kaurna", ["zkv"] = "Krevinian", ["zkz"] = "Khazar", ["zle-ono"] = "Old Novgorodian", ["zle-ort"] = "รูซินเก่า", ["zls-chs"] = "Church Slavonic", ["zlw-ocs"] = "เช็กเก่า", ["zlw-opl"] = "โปแลนด์เก่า", ["zlw-osk"] = "สโลวักเก่า", ["zlw-slv"] = "สโลวินช์", ["zma"] = "Manda (Australia)", ["zmb"] = "Zimba", ["zmc"] = "Margany", ["zmd"] = "Maridan", ["zme"] = "Mangerr", ["zmf"] = "Mfinu", ["zmg"] = "Marti Ke", ["zmh"] = "Makolkol", ["zmi"] = "Negeri Sembilan Malay", ["zmj"] = "Maridjabin", ["zmk"] = "Mandandanyi", ["zml"] = "Madngele", ["zmm"] = "Marimanindji", ["zmn"] = "Mbangwe", ["zmo"] = "Molo", ["zmp"] = "Mbuun", ["zmq"] = "Mituku", ["zmr"] = "Maranungku", ["zms"] = "Mbesa", ["zmt"] = "Maringarr", ["zmu"] = "Muruwari", ["zmv"] = "Mbariman-Gudhinma", ["zmw"] = "Mbo (Congo)", ["zmx"] = "Bomitaba", ["zmy"] = "Mariyedi", ["zmz"] = "Mbandja", ["zna"] = "Zan Gula", ["zne"] = "Zande", ["zng"] = "Mang", ["znk"] = "Manangkari", ["zns"] = "Mangas", ["zoc"] = "Copainalá Zoque", ["zoh"] = "Chimalapa Zoque", ["zom"] = "Zou", ["zoo"] = "Asunción Mixtepec Zapotec", ["zoq"] = "Tabasco Zoque", ["zor"] = "Rayón Zoque", ["zos"] = "Francisco León Zoque", ["zpa"] = "Lachiguiri Zapotec", ["zpb"] = "Yautepec Zapotec", ["zpc"] = "Choapan Zapotec", ["zpd"] = "Southeastern Ixtlán Zapotec", ["zpe"] = "Petapa Zapotec", ["zpf"] = "San Pedro Quiatoni Zapotec", ["zpg"] = "Guevea de Humboldt Zapotec", ["zph"] = "Totomachapan Zapotec", ["zpi"] = "Santa María Quiegolani Zapotec", ["zpj"] = "Quiavicuzas Zapotec", ["zpk"] = "Tlacolulita Zapotec", ["zpl"] = "Lachixío Zapotec", ["zpm"] = "Mixtepec Zapotec", ["zpn"] = "Santa Inés Yatzechi Zapotec", ["zpo"] = "Amatlán Zapotec", ["zpp"] = "El Alto Zapotec", ["zpq"] = "Zoogocho Zapotec", ["zpr"] = "Santiago Xanica Zapotec", ["zps"] = "Coatlán Zapotec", ["zpt"] = "San Vicente Coatlán Zapotec", ["zpu"] = "Yalálag Zapotec", ["zpv"] = "Chichicapan Zapotec", ["zpw"] = "Zaniza Zapotec", ["zpx"] = "San Baltazar Loxicha Zapotec", ["zpy"] = "Mazaltepec Zapotec", ["zpz"] = "Texmelucan Zapotec", ["zra"] = "Gaya", ["zrg"] = "Mirgan", ["zrn"] = "Zirenkel", ["zro"] = "Záparo", ["zrs"] = "Mairasi", ["zsa"] = "Sarasira", ["zsk"] = "Kaskean", ["zsl"] = "Zambian Sign Language", ["zsr"] = "Southern Rincon Zapotec", ["zsu"] = "Sukurum", ["zte"] = "Elotepec Zapotec", ["ztg"] = "Xanaguía Zapotec", ["ztl"] = "Lapaguía-Guivini Zapotec", ["ztm"] = "San Agustín Mixtepec Zapotec", ["ztn"] = "Santa Catarina Albarradas Zapotec", ["ztp"] = "Loxicha Zapotec", ["ztq"] = "Quioquitani-Quierí Zapotec", ["zts"] = "Tilquiapan Zapotec", ["ztt"] = "Tejalapan Zapotec", ["ztu"] = "San Pablo Güilá Zapotec", ["ztx"] = "Zaachila Zapotec", ["zty"] = "Yatee Zapotec", ["zu"] = "ซูลู", ["zua"] = "Zeem", ["zuh"] = "Tokano", ["zum"] = "Kumzari", ["zun"] = "ซูนี", ["zuy"] = "Zumaya", ["zwa"] = "Zay", ["zyp"] = "Zyphe", ["zza"] = "ซาซา", ["zzj"] = "จ้วงแบบจั่วเจียง", } re1wugr62vpc8h43zfejgrkma8xdgyd มอดูล:languages/canonical names 828 211224 5723241 5720546 2026-05-20T03:24:22Z OctraBot 3198 5723241 Scribunto text/plain return { ["'Are'are"] = "alu", ["A'ou"] = "aou", ["A-Hmao"] = "hmd", ["A-Pucikwar"] = "apq", ["Aari"] = "aiw", ["Aasax"] = "aas", ["Aba"] = "utp", ["Abaga"] = "abg", ["Abai"] = "poz-abi", ["Abai Sungai"] = "abf", ["Abanyom"] = "abm", ["Abau"] = "aau", ["Abenaki"] = "abe", ["Abenlen Ayta"] = "abp", ["Abidji"] = "abi", ["Abinomn"] = "bsa", ["Abipón"] = "axb", ["Abishira"] = "ash", ["Abom"] = "aob", ["Abon"] = "abo", ["Aborlan Tagbanwa"] = "tbw", ["Abu"] = "ado", ["Abu'"] = "aah", ["Abua"] = "abn", ["Abui"] = "abz", ["Abun"] = "kgr", ["Abung"] = "abl", ["Abure"] = "abu", ["Abureni"] = "mgj", ["Acatepec Me'phaa"] = "tpx", ["Achagua"] = "aca", ["Achang"] = "acn", ["Ache"] = "yif", ["Acheron"] = "acz", ["Achi"] = "acr", ["Acholi"] = "ach", ["Achuar"] = "acu", ["Achumawi"] = "acv", ["Aché"] = "guq", ["Acroá"] = "acs", ["Adai"] = "xad", ["Adamorobe Sign Language"] = "ads", ["Adang"] = "adn", ["Adangbe"] = "adq", ["Adangme"] = "ada", ["Adap"] = "adp", ["Adasen"] = "tiu", ["Adele"] = "ade", ["Adhola"] = "adh", ["Adi"] = "adi", ["Adioukrou"] = "adj", ["Adithinngithigh"] = "dth", ["Adivasi Odia"] = "ort", ["Adiwasi Garasia"] = "gas", ["Adja"] = "ajg", ["Adnyamathanha"] = "adt", ["Adonara"] = "adr", ["Aduge"] = "adu", ["Adzera"] = "adz", ["Adûni"] = "art-adu", ["Aeka"] = "aez", ["Aekyom"] = "awi", ["Aequian"] = "xae", ["Aer"] = "aeq", ["Afade"] = "aal", ["Afghan Sign Language"] = "afg", ["Afitti"] = "aft", ["Afra"] = "ulf", ["Afrihili"] = "afh", ["Afro-Seminole Creole"] = "afs", ["Agarabi"] = "agd", ["Agariya"] = "agi", ["Agatu"] = "agc", ["Agavotaguerra"] = "avo", ["Agawam"] = "alg-aga", ["Aghem"] = "agq", ["Aghu"] = "ahh", ["Aghu Tharrnggala"] = "gtu", ["Aghul"] = "agx", ["Aghwan"] = "xag", ["Agi"] = "aif", ["Agob"] = "kit", ["Agoi"] = "ibm", ["Aguacateca"] = "agu", ["Aguano"] = "aga", ["Aguaruna"] = "agr", ["Aguna"] = "aug", ["Agusan Manobo"] = "msm", ["Agwagwune"] = "yay", ["Ahanta"] = "aha", ["Ahirani"] = "ahr", ["Ahtna"] = "aht", ["Ahwai"] = "nfd", ["Ai-Cham"] = "aih", ["Aighon"] = "aix", ["Aikanã"] = "tba", ["Aiklep"] = "mwg", ["Aimele"] = "ail", ["Aimol"] = "aim", ["Ainbai"] = "aic", ["Aiome"] = "aki", ["Airoran"] = "air", ["Aisi"] = "mmq", ["Aja"] = "aja", ["Ajawa"] = "ajw", ["Ajië"] = "aji", ["Ajyíninka Apurucayali"] = "cpc", ["Ak"] = "akq", ["Aka (Central Africa)"] = "axk", ["Aka (Sudan)"] = "soh", ["Aka-Bea"] = "abj", ["Aka-Bo"] = "akm", ["Aka-Cari"] = "aci", ["Aka-Kede"] = "akx", ["Aka-Kol"] = "aky", ["Aka-Kora"] = "ack", ["Akar-Bale"] = "acl", ["Akaselem"] = "aks", ["Akatek"] = "knj", ["Akawaio"] = "ake", ["Ake"] = "aik", ["Akebu"] = "keu", ["Akei"] = "tsr", ["Akeu"] = "aeu", ["Akhvakh"] = "akv", ["Akkala Sami"] = "sia", ["Akolet"] = "akt", ["Akoose"] = "bss", ["Akoye"] = "miw", ["Akpa"] = "akf", ["Akpes"] = "ibe", ["Akrukay"] = "afi", ["Akuku"] = "ayk", ["Akum"] = "aku", ["Akuntsu"] = "aqz", ["Akurio"] = "ako", ["Akuwagel"] = "bey", ["Akwa"] = "akw", ["Akyaung Ari"] = "nqy", ["Al-Sayyid Bedouin Sign Language"] = "syy", ["Alaba"] = "alw", ["Alabat Island Agta"] = "dul", ["Alacatlatzala Mixtec"] = "mim", ["Alago"] = "ala", ["Alagwa"] = "wbj", ["Alak"] = "alk", ["Alamblak"] = "amp", ["Alangan"] = "alj", ["Alanic"] = "xln", ["Alapmunte"] = "apv", ["Alas-Kluet Batak"] = "btz", ["Alawa"] = "alh", ["Alazapa"] = "nai-ala", ["Albanian Sign Language"] = "sqk", ["Alchuka"] = "tuw-alk", ["Alcozauca Mixtec"] = "xta", ["Alege"] = "alf", ["Alekano"] = "gah", ["Aleut"] = "ale", ["Algerian Sign Language"] = "asp", ["Algonquin"] = "alq", ["Ali"] = "aiy", ["Alladian"] = "ald", ["Allar"] = "all", ["Allentiac"] = "sai-all", ["Alngith"] = "aid", ["Alo Phola"] = "ypo", ["Alorese"] = "aol", ["Aloápam Zapotec"] = "zaq", ["Alsea"] = "aes", ["Alu"] = "mte", ["Alu Kurumba"] = "xua", ["Alugu"] = "aub", ["Alumu-Tesu"] = "aab", ["Alune"] = "alp", ["Alungul"] = "aus-alu", ["Aluo"] = "yna", ["Alur"] = "alz", ["Alutor"] = "alr", ["Alviri-Vidari"] = "avd", ["Alyawarr"] = "aly", ["Ama"] = "amm", ["Amahai"] = "amq", ["Amahuaca"] = "amc", ["Amaimon"] = "ali", ["Amal"] = "aad", ["Amanab"] = "amn", ["Amanayé"] = "ama", ["Amara"] = "aie", ["Amarakaeri"] = "amr", ["Amarasi"] = "aaz", ["Amarizana"] = "awd-ama", ["Amasi"] = "alv-ama", ["Amatlán Zapotec"] = "zpo", ["Amba"] = "rwm", ["Ambai"] = "amk", ["Ambakich"] = "aew", ["Ambala Ayta"] = "abc", ["Ambelau"] = "amv", ["Ambele"] = "ael", ["Amblong"] = "alm", ["Ambo"] = "amb", ["Ambonese Malay"] = "abs", ["Ambrak"] = "aag", ["Ambul"] = "apo", ["Ambulas"] = "abt", ["Amdang"] = "amj", ["Amele"] = "aey", ["Amganad Ifugao"] = "ifa", ["Ami"] = "amy", ["Amis"] = "ami", ["Amo"] = "amo", ["Amol"] = "alx", ["Amoltepec Mixtec"] = "mbz", ["Amondawa"] = "adw", ["Amorite"] = "sem-amo", ["Ampanang"] = "apg", ["Ampari Dogon"] = "aqd", ["Amri Karbi"] = "ajz", ["Amto"] = "amt", ["Amurdag"] = "amg", ["Ana Tinga Dogon"] = "dti", ["Anaang"] = "anw", ["Anakalangu"] = "akg", ["Anam"] = "pda", ["Anambé"] = "aan", ["Anamgura"] = "imi", ["Anasi"] = "bpo", ["Anauyá"] = "awd-ana", ["Ancient Ligurian"] = "xlg", ["Ancient Macedonian"] = "xmk", ["Ancient North Arabian"] = "xna", ["Ancient Zapotec"] = "xzp", ["Andai"] = "afd", ["Andajin"] = "ajn", ["Andaman Creole Hindi"] = "hca", ["Andaqui"] = "ana", ["Andarum"] = "aod", ["Andegerebinha"] = "adg", ["Andh"] = "anr", ["Andi"] = "ani", ["Andio"] = "bzb", ["Andjingith"] = "aus-and", ["Andoa"] = "anb", ["Andoque"] = "ano", ["Andoquero"] = "sai-and", ["Andra-Hus"] = "anx", ["Anem"] = "anz", ["Aneme Wake"] = "aby", ["Anfillo"] = "myo", ["Angaataha"] = "agm", ["Angaité"] = "aqt", ["Angal"] = "age", ["Angal Enen"] = "aoe", ["Angal Heneng"] = "akh", ["Angami"] = "njm", ["Angevin"] = "roa-ang", ["Angguruk Yali"] = "yli", ["Angika"] = "anp", ["Angkamuthi"] = "avm", ["Angkola Batak"] = "akb", ["Angkula"] = "aus-ang", ["Angloromani"] = "rme", ["Angolar"] = "aoa", ["Angor"] = "agg", ["Angoram"] = "aog", ["Angosturas Tunebo"] = "tnd", ["Anguthimri"] = "awg", ["Ani Phowa"] = "ypn", ["Anii"] = "blo", ["Animere"] = "anf", ["Anindilyakwa"] = "aoi", ["Anjam"] = "boj", ["Ankave"] = "aak", ["Anmatyerre"] = "amx", ["Annobonese"] = "fab", ["Anong"] = "nun", ["Anor"] = "anj", ["Anserma"] = "ans", ["Ansus"] = "and", ["Antakarinya"] = "ant", ["Antigua and Barbuda Creole English"] = "aig", ["Antillean Creole"] = "gcf", ["Anu"] = "anl", ["Anuak"] = "anu", ["Anufo"] = "cko", ["Anuki"] = "aui", ["Anus"] = "auq", ["Anuta"] = "aud", ["Anyi"] = "any", ["Anyin Morofo"] = "mtb", ["Anāl"] = "anm", ["Ao"] = "njo", ["Aoheng"] = "pni", ["Aore"] = "aor", ["Ap Ma"] = "kbx", ["Apabhramsa"] = "inc-apa", ["Apalachee"] = "xap", ["Apalaí"] = "apy", ["Apali"] = "ena", ["Apasco-Apoala Mixtec"] = "mip", ["Apatani"] = "apt", ["Apiaká"] = "api", ["Apinayé"] = "apn", ["Apma"] = "app", ["Apolista"] = "awd-apo", ["Apro"] = "ahp", ["Apurinã"] = "apu", ["Aputai"] = "apx", ["Aquitanian"] = "xaq", ["Arabana"] = "ard", ["Arabela"] = "arl", ["Araki"] = "akr", ["Arakwal"] = "rkw", ["Aralle-Tabulahan"] = "atq", ["Arammba"] = "stk", ["Aranadan"] = "aaf", ["Aranama-Tamique"] = "xrt", ["Arandai"] = "jbj", ["Araona"] = "aro", ["Arapaho"] = "arp", ["Arapaso"] = "arj", ["Arara-Karo"] = "arr", ["Ararandewára"] = "xaj", ["Araweté"] = "awt", ["Arawum"] = "awm", ["Arbore"] = "arv", ["Archi"] = "aqc", ["Are"] = "mwc", ["Areba"] = "aea", ["Arem"] = "aem", ["Argentine Sign Language"] = "aed", ["Argobba"] = "agj", ["Arguni"] = "agf", ["Arhuaco"] = "arh", ["Arhâ"] = "aqr", ["Arhö"] = "aok", ["Ari"] = "aac", ["Aribwatsa"] = "laz", ["Aribwaung"] = "ylu", ["Arifama-Miniafia"] = "aai", ["Arigidi"] = "aqg", ["Arikapú"] = "ark", ["Arikara"] = "ari", ["Arikem"] = "ait", ["Arin"] = "xrn", ["Aringa"] = "luc", ["Armazic"] = "xrm", ["Armenian Sign Language"] = "aen", ["Aromanian"] = "rup", ["Arop-Lokep"] = "apr", ["Arop-Sissano"] = "aps", ["Arosi"] = "aia", ["Arritinngithigh"] = "rrt", ["Arta"] = "atz", ["Arua"] = "aru", ["Aruamu"] = "msy", ["Aruek"] = "aur", ["Aruop"] = "lsr", ["Arutani"] = "atx", ["Aruá"] = "arx", ["Arára (Mato Grosso)"] = "axg", ["Arára (Pará)"] = "aap", ["As"] = "asz", ["Asaro'o"] = "mtv", ["Ashe"] = "ahs", ["Ashkun"] = "ask", ["Asho Chin"] = "csh", ["Ashraaf"] = "cus-ash", ["Asháninka"] = "cni", ["Ashéninka Pajonal"] = "cjo", ["Ashéninka Perené"] = "prq", ["Asilulu"] = "asl", ["Askopan"] = "eiv", ["Asoa"] = "asv", ["Assan"] = "xss", ["Assangori"] = "sjg", ["Assiniboine"] = "asb", ["Assyrian Neo-Aramaic"] = "aii", ["Asu"] = "aum", ["Asue Awyu"] = "psa", ["Asumboa"] = "aua", ["Asunción Mixtepec Zapotec"] = "zoo", ["Asuri"] = "asr", ["Ata"] = "atm", ["Ata Manobo"] = "atd", ["Atakapa"] = "aqp", ["Atampaya"] = "amz", ["Atanques"] = "cba-ata", ["Atatláhuca Mixtec"] = "mib", ["Atauran"] = "adb", ["Atayal"] = "tay", ["Atemble"] = "ate", ["Ateso"] = "teo", ["Athpare"] = "aph", ["Ati"] = "atk", ["Atikamekw"] = "atj", ["Atohwaim"] = "aqm", ["Atong (Cameroon)"] = "ato", ["Atorada"] = "aox", ["Atsahuaca"] = "atc", ["Atsam"] = "cch", ["Atsugewi"] = "atw", ["Attapady Kurumba"] = "pkr", ["Attié"] = "ati", ["Au"] = "avt", ["Auhelawa"] = "kud", ["Aukan"] = "djk", ["Aulua"] = "aul", ["Aurá"] = "aux", ["Aushi"] = "auh", ["Aushiri"] = "avs", ["Auslan"] = "asf", ["Austral"] = "aut", ["Australian Aboriginal Sign Language"] = "asw", ["Australian Kriol"] = "rop", ["Austrian Sign Language"] = "asq", ["Austronesian Mari"] = "hob", ["Auwe"] = "smf", ["Auyana"] = "auy", ["Auye"] = "auu", ["Auyokawa"] = "auo", ["Avatime"] = "avn", ["Avau"] = "avb", ["Avava"] = "tmb", ["Avikam"] = "avi", ["Avokaya"] = "avu", ["Avá-Canoeiro"] = "avv", ["Awa (China)"] = "vwa", ["Awa (New Guinea)"] = "awb", ["Awa-Cuaiquer"] = "kwi", ["Awabakal"] = "awk", ["Awak"] = "awo", ["Awar"] = "aya", ["Awara"] = "awx", ["Awbono"] = "awh", ["Aweer"] = "bob", ["Awera"] = "awr", ["Awetí"] = "awe", ["Awing"] = "azo", ["Awjila"] = "auj", ["Awngi"] = "awn", ["Awngthim"] = "gwm", ["Awtuw"] = "kmn", ["Awun"] = "aww", ["Awutu"] = "afu", ["Awyi"] = "auw", ["Axamb"] = "ahb", ["Axi"] = "yix", ["Ayabadhu"] = "ayd", ["Ayautla Mazatec"] = "vmy", ["Ayere"] = "aye", ["Ayerrerenge"] = "axe", ["Ayi"] = "ayq", ["Ayizi"] = "yyz", ["Ayizo"] = "ayb", ["Ayomán"] = "sai-ayo", ["Ayoquesco Zapotec"] = "zaf", ["Ayoreo"] = "ayo", ["Ayu"] = "ayu", ["Ayutla Mixtec"] = "miy", ["Azha"] = "aza", ["Azhe"] = "yiz", ["Azoyú Me'phaa"] = "tpc", ["Baa"] = "kwb", ["Baagandji"] = "drl", ["Baan"] = "bvj", ["Baangi"] = "bqx", ["Baatonum"] = "bba", ["Baba"] = "bbw", ["Baba Malay"] = "mbf", ["Babango"] = "bbm", ["Babanki"] = "bbk", ["Babatana"] = "baa", ["Babine-Witsuwit'en"] = "bcr", ["Babole"] = "bvx", ["Babungo"] = "bav", ["Babuza"] = "bzg", ["Bacama"] = "bcy", ["Bacanese Malay"] = "btj", ["Bada"] = "bhz", ["Badanchi"] = "bau", ["Bade"] = "bde", ["Badeshi"] = "bdz", ["Badimaya"] = "bia", ["Baduy"] = "bac", ["Badyara"] = "pbp", ["Baeggu"] = "bvd", ["Baelelea"] = "bvc", ["Baenan"] = "sai-bae", ["Baetora"] = "btr", ["Bafanji"] = "bfj", ["Bafaw"] = "bwt", ["Bafia"] = "ksf", ["Bafut"] = "bfd", ["Baga Kaloum"] = "bqf", ["Baga Koga"] = "bgo", ["Baga Manduri"] = "bmd", ["Baga Pokur"] = "bcg", ["Baga Sitemu"] = "bsp", ["Baga Sobané"] = "bsv", ["Bagheli"] = "bfy", ["Bagirmi"] = "bmi", ["Bago-Kusuntu"] = "bqg", ["Bagri"] = "bgq", ["Bagua"] = "sai-bag", ["Bagupi"] = "bpi", ["Bagusa"] = "bqb", ["Bagvalal"] = "kva", ["Baha"] = "yha", ["Baham"] = "bdw", ["Bahamian Creole"] = "bah", ["Bahau"] = "bhv", ["Bahinemo"] = "bjh", ["Bahing"] = "bhj", ["Bahonsuai"] = "bsu", ["Bai (South Sudan)"] = "bdj", ["Baibai"] = "bbf", ["Baikeno"] = "bkx", ["Bailang"] = "tbq-blg", ["Baima"] = "bqh", ["Baimak"] = "bmx", ["Bainouk-Gunyaamolo"] = "bcz", ["Bainouk-Gunyuño"] = "bab", ["Bainouk-Samik"] = "bcb", ["Baiso"] = "bsw", ["Baissa Fali"] = "fah", ["Bajan"] = "bjs", ["Bajelani"] = "bjm", ["Bajjika"] = "vjk", ["Baka"] = "bkc", ["Bakairí"] = "bkq", ["Bakaka"] = "bqz", ["Bakhtiari"] = "bqi", ["Baki"] = "bki", ["Bakoko"] = "bkh", ["Bakole"] = "kme", ["Bakpinka"] = "bbs", ["Bakulung"] = "bbu", ["Bakumpai"] = "bkr", ["Bakung"] = "xkl", ["Bakwé"] = "bjw", ["Bala"] = "tuw-bal", ["Balaesang"] = "bls", ["Balangao"] = "blw", ["Balangingi"] = "sse", ["Balanta-Ganja"] = "bjt", ["Balanta-Kentohe"] = "ble", ["Balantak"] = "blz", ["Balau"] = "blg", ["Baldemu"] = "bdn", ["Bali"] = "bcp", ["Baliledo"] = "poz-bal", ["Balinese Malay"] = "mhp", ["Balkan Gagauz Turkish"] = "bgx", ["Balkan Romani"] = "rmn", ["Balo"] = "bqo", ["Baloi"] = "biz", ["Balong"] = "bnt-bal", ["Baltic Romani"] = "rml", ["Baluan-Pam"] = "blq", ["Bamako Sign Language"] = "bog", ["Bamali"] = "bbq", ["Bambalang"] = "bmo", ["Bambam"] = "ptu", ["Bambassi"] = "myf", ["Bambili-Bambui"] = "baw", ["Bamenyam"] = "bce", ["Bamu"] = "bcf", ["Bamukumbit"] = "bqt", ["Bamum"] = "bax", ["Bamunka"] = "bvm", ["Bamwe"] = "bmg", ["Ban Khor Sign Language"] = "bfk", ["Bana"] = "bcw", ["Banao Itneg"] = "bjx", ["Banaro"] = "byz", ["Banda"] = "bnd", ["Banda Malay"] = "bpq", ["Banda-Bambari"] = "liy", ["Banda-Banda"] = "bpd", ["Banda-Mbrès"] = "bqk", ["Banda-Ndélé"] = "bfl", ["Banda-Yangere"] = "yaj", ["Bandi"] = "bza", ["Bandial"] = "bqj", ["Bandjalang"] = "bdy", ["Bangala"] = "bxg", ["Bangandu"] = "bgf", ["Bangba"] = "bbe", ["Banggai"] = "bgz", ["Bangi"] = "bni", ["Bangime"] = "dba", ["Bangka"] = "mfb", ["Bangolan"] = "bgj", ["Bangru"] = "sit-ban", ["Bangubangu"] = "bnx", ["Bangwinji"] = "bsj", ["Baniva"] = "bvv", ["Baniwa"] = "bwi", ["Banka"] = "bxw", ["Bankan Tey Dogon"] = "dbw", ["Bankon"] = "abb", ["Banoni"] = "bcm", ["Bantawa"] = "bap", ["Bantayanon"] = "bfx", ["Bantik"] = "bnq", ["Banyumasan"] = "map-bms", ["Baoule"] = "bci", ["Baraamu"] = "brd", ["Barai"] = "bbb", ["Barakai"] = "baj", ["Baram Kayan"] = "kys", ["Barama"] = "bbg", ["Barambu"] = "brm", ["Baramu"] = "bmz", ["Barapasi"] = "brp", ["Baras"] = "brs", ["Barasana"] = "bsn", ["Barbareño"] = "boi", ["Barclayville Grebo"] = "gry", ["Bardi"] = "bcj", ["Barein"] = "bva", ["Bargam"] = "mlp", ["Bari"] = "bfa", ["Bariai"] = "bch", ["Bariji"] = "bjc", ["Barikanchi"] = "bxo", ["Barikewa"] = "jbk", ["Barngarla"] = "bjb", ["Barok"] = "bjk", ["Barombi"] = "bbi", ["Barranbinya"] = "aus-bra", ["Barro Negro Tunebo"] = "tbn", ["Barrow Point"] = "bpt", ["Baruga"] = "bjz", ["Barunggam"] = "aus-brm", ["Baruya"] = "byr", ["Barwe"] = "bwg", ["Barzani Jewish Neo-Aramaic"] = "bjf", ["Baré"] = "bae", ["Barí"] = "mot", ["Basa"] = "bzw", ["Basa-Gumna"] = "bsl", ["Basa-Gurmana"] = "buj", ["Basaa"] = "bas", ["Basap"] = "bdb", ["Basay"] = "byq", ["Bashkardi"] = "bsg", ["Basketo"] = "bst", ["Basque-Icelandic Pidgin"] = "crp-bip", ["Bassa"] = "bsq", ["Bassa-Kontagora"] = "bsr", ["Bassari"] = "bsc", ["Bassossi"] = "bsi", ["Bata"] = "bta", ["Bataan Ayta"] = "ayt", ["Batad Ifugao"] = "ifb", ["Batanga"] = "bnm", ["Batek"] = "btq", ["Bateri"] = "btv", ["Bathari"] = "bhm", ["Bati (Cameroon)"] = "btc", ["Bati (Indonesia)"] = "bvt", ["Batu"] = "btu", ["Batui"] = "zbt", ["Batuley"] = "bay", ["Bau"] = "bbd", ["Bau Bidayuh"] = "sne", ["Bauchi"] = "bsf", ["Baure"] = "brg", ["Bauria"] = "bge", ["Bauro"] = "bxa", ["Bauwaki"] = "bwk", ["Bauzi"] = "bvz", ["Bawm Chin"] = "bgr", ["Bay Miwok"] = "mkq", ["Bayali"] = "bjy", ["Baybayanon"] = "bvy", ["Baygo"] = "byg", ["Bayogoula"] = "nai-bay", ["Bayono"] = "byl", ["Bayot"] = "bda", ["Bayungu"] = "bxj", ["Bazigar"] = "bfr", ["Baïnounk Gubëeher"] = "alv-bgu", ["Beami"] = "beo", ["Beary"] = "dra-bry", ["Beaver"] = "bea", ["Beba"] = "bfp", ["Bebe"] = "bzv", ["Bebele"] = "beb", ["Bebeli"] = "bek", ["Bebil"] = "bxp", ["Bedik"] = "tnr", ["Bedjond"] = "bjv", ["Bedoanas"] = "bed", ["Beeke"] = "bkf", ["Beele"] = "bxq", ["Beembe"] = "beq", ["Beezen"] = "bnz", ["Befang"] = "bby", ["Begbere-Ejar"] = "bqv", ["Beja"] = "bej", ["Bekati'"] = "bei", ["Bekwarra"] = "bkv", ["Bekwel"] = "bkw", ["Belait"] = "beg", ["Belanda Bor"] = "bxb", ["Belanda Viri"] = "bvi", ["Belhariya"] = "byw", ["Beli"] = "blm", ["Belizean Creole"] = "bzj", ["Bella Coola"] = "blc", ["Bellari"] = "brw", ["Belter Creole"] = "art-bel", ["Bemba"] = "bem", ["Bembe"] = "bmb", ["Ben Tey"] = "dbt", ["Bena"] = "yun", ["Benabena"] = "bef", ["Bench"] = "bcq", ["Bende"] = "bdp", ["Bendi"] = "bct", ["Beneraf"] = "bnv", ["Beng"] = "nhb", ["Benga"] = "bng", ["Benggoi"] = "bgy", ["Bengkala Sign Language"] = "bqy", ["Bentong"] = "bnu", ["Benyadu'"] = "byd", ["Beothuk"] = "bue", ["Bepour"] = "bie", ["Bera"] = "brf", ["Berakou"] = "bxv", ["Berau Malay"] = "bve", ["Berbice Creole Dutch"] = "brc", ["Bergish"] = "gmw-bgh", ["Berik"] = "bkl", ["Berinomo"] = "bit", ["Berom"] = "bom", ["Berta"] = "wti", ["Berti"] = "byt", ["Besisi"] = "mhe", ["Besme"] = "bes", ["Besoa"] = "bep", ["Betaf"] = "bfe", ["Bete"] = "byf", ["Bete-Bendi"] = "btt", ["Betoi"] = "sai-bet", ["Betta Kurumba"] = "xub", ["Bezhta"] = "kap", ["Bhadrawahi"] = "bhd", ["Bhalay"] = "bhx", ["Bharia"] = "bha", ["Bhatri"] = "bgw", ["Bhattiyali"] = "bht", ["Bhaya"] = "bhe", ["Bhele"] = "bhy", ["Bhilali"] = "bhi", ["Bhili"] = "bhb", ["Bhoti Kinnauri"] = "nes", ["Bhunjia"] = "bhu", ["Biafada"] = "bif", ["Biage"] = "bdf", ["Biak"] = "bhw", ["Biali"] = "beh", ["Bian Marind"] = "bpv", ["Biangai"] = "big", ["Biao"] = "byk", ["Biao Mon"] = "bmt", ["Biao-Jiao Mien"] = "bje", ["Biatah Bidayuh"] = "bth", ["Bibaali"] = "bcn", ["Bibbulman"] = "xbp", ["Bidiyo"] = "bid", ["Bidyara"] = "bym", ["Bidyogo"] = "bjg", ["Biem"] = "bmc", ["Bierebo"] = "bnk", ["Bieria"] = "brj", ["Biete"] = "biu", ["Big Nambas"] = "nmb", ["Biga"] = "bhc", ["Bigambal"] = "xbe", ["Bih"] = "ibh", ["Bijori"] = "bix", ["Bikaru"] = "bic", ["Bikya"] = "byb", ["Bila"] = "bip", ["Bilakura"] = "bql", ["Bilaspuri"] = "kfs", ["Bilba"] = "bpz", ["Bilbil"] = "brz", ["Bile"] = "bil", ["Biliau"] = "bcu", ["Biloxi"] = "bll", ["Bilua"] = "blb", ["Bilur"] = "bxf", ["Bima"] = "bhp", ["Bimin"] = "bhl", ["Bimoba"] = "bim", ["Bina"] = "bmn", ["Binahari"] = "bxz", ["Binandere"] = "bhg", ["Binawa"] = "byj", ["Bindal"] = "xbd", ["Bine"] = "bon", ["Binji"] = "bpj", ["Binongan Itneg"] = "itb", ["Bintauna"] = "bne", ["Bintulu"] = "bny", ["Binumarien"] = "bjr", ["Bipi"] = "biq", ["Birao"] = "brr", ["Birgid"] = "brk", ["Birgit"] = "btf", ["Birhor"] = "biy", ["Biri"] = "bzr", ["Biritai"] = "bqq", ["Birri"] = "bvq", ["Birrpayi"] = "xbj", ["Birwa"] = "brl", ["Biseni"] = "ije", ["Bishnupriya Manipuri"] = "bpy", ["Bishuo"] = "bwh", ["Bisis"] = "bnw", ["Bisorio"] = "bir", ["Bissa"] = "bib", ["Bit"] = "bgk", ["Bitare"] = "brt", ["Bitur"] = "mcc", ["Biwat"] = "bwm", ["Biyo"] = "byo", ["Biyom"] = "bpm", ["Blablanga"] = "blp", ["Blackfoot"] = "bla", ["Blafe"] = "bfh", ["Blang"] = "blr", ["Blin"] = "byn", ["Bo"] = "bgl", ["Bo-Rukul"] = "mae", ["Bo-Ung"] = "mux", ["Boano (Maluku)"] = "bzn", ["Boano (Sulawesi)"] = "bzl", ["Bobongko"] = "bgb", ["Bobot"] = "bty", ["Bodo (Central Africa)"] = "boy", ["Bodo Gadaba"] = "gbj", ["Bodo Parja"] = "bdv", ["Bofi"] = "bff", ["Boga"] = "bvw", ["Bogaya"] = "boq", ["Boghom"] = "bux", ["Boguru"] = "bqu", ["Bohtan Neo-Aramaic"] = "bhn", ["Boikin"] = "bzf", ["Bokar"] = "sit-bok", ["Bokha"] = "ybk", ["Boko"] = "bqc", ["Bokobaru"] = "bus", ["Bokoto"] = "bdt", ["Bokyi"] = "bky", ["Bola"] = "bnp", ["Bolak"] = "art-blk", ["Bolango"] = "bld", ["Bolgo"] = "bvo", ["Bolia"] = "bli", ["Bolivian Sign Language"] = "bvl", ["Boloki"] = "bkt", ["Bolon"] = "bof", ["Bolondo"] = "bzm", ["Bolyu"] = "ply", ["Bom"] = "bmf", ["Boma Nkuu"] = "bnt-bon", ["Boma Yumu"] = "bnt-boy", ["Bomboli"] = "bml", ["Bomboma"] = "bws", ["Bomitaba"] = "zmx", ["Bomu"] = "bmq", ["Bomwali"] = "bmw", ["Bon Gula"] = "glc", ["Bonan"] = "peh", ["Bondei"] = "bou", ["Bondo"] = "bfw", ["Bondoukou Kulango"] = "kzc", ["Bondum Dom Dogon"] = "dbu", ["Bonerate"] = "bna", ["Bonggi"] = "bdg", ["Bonggo"] = "bpg", ["Bongili"] = "bui", ["Bongo"] = "bot", ["Bongu"] = "bpu", ["Bonjo"] = "bok", ["Bonkeng"] = "bvg", ["Bonkiman"] = "bop", ["Bookan"] = "bnb", ["Boon"] = "bnl", ["Boor"] = "bvf", ["Bora"] = "boa", ["Border Kuna"] = "kvn", ["Borei"] = "gai", ["Boro"] = "xxb", ["Borong"] = "ksr", ["Boruca"] = "brn", ["Borôro"] = "bor", ["Boselewa"] = "bwf", ["Bosngun"] = "bqs", ["Bote-Majhi"] = "bmj", ["Botlikh"] = "bph", ["Botolan Sambal"] = "sbl", ["Bouna Kulango"] = "nku", ["Bourguignon"] = "roa-brg", ["Bozaba"] = "bzo", ["Bragat"] = "aof", ["Brazilian Sign Language"] = "bzs", ["Brek Karen"] = "kvl", ["Brem"] = "buq", ["Breri"] = "brq", ["Bribri"] = "bzd", ["British Sign Language"] = "bfi", ["Brokkat"] = "bro", ["Brokpake"] = "sgt", ["Brokskat"] = "bkk", ["Broome Pearling Lugger Pidgin"] = "bpl", ["Brunei Bisaya"] = "bsb", ["Bruny Island"] = "xpz", ["Bu"] = "jid", ["Bu-Nao Bunu"] = "bwx", ["Bua"] = "bub", ["Bualkhaw Chin"] = "cbl", ["Buamu"] = "box", ["Bube"] = "bvb", ["Bubi"] = "buw", ["Bubia"] = "bbx", ["Budeh Stieng"] = "stt", ["Budibud"] = "btp", ["Budong-Budong"] = "bdx", ["Budu"] = "buu", ["Budukh"] = "bdk", ["Buduma"] = "bdm", ["Budza"] = "bja", ["Buena Vista Yokuts"] = "yok-bvy", ["Bugan"] = "bbh", ["Bughotu"] = "bgt", ["Buglere"] = "sab", ["Bugun"] = "bgg", ["Buhi'non Bikol"] = "ubl", ["Buhid"] = "bku", ["Buhutu"] = "bxh", ["Bujhyal"] = "byh", ["Bukar-Sadung Bidayuh"] = "sdo", ["Bukat"] = "bvk", ["Bukawa"] = "buk", ["Bukhari"] = "bhh", ["Bukit Malay"] = "bvu", ["Bukitan"] = "bkn", ["Bukiyip"] = "ape", ["Buksa"] = "tkb", ["Bukusu"] = "bxk", ["Bulgar"] = "xbo", ["Bulgarian Sign Language"] = "bqn", ["Bulgebi"] = "bmp", ["Buli (Ghana)"] = "bwu", ["Buli (Indonesia)"] = "bzq", ["Bulo Stieng"] = "sti", ["Bulu (Cameroon)"] = "bum", ["Bulu (New Guinea)"] = "bjl", ["Bulungan"] = "blj", ["Bum"] = "bmv", ["Bumaji"] = "byp", ["Bumang"] = "bvp", ["Bumbita Arapesh"] = "aon", ["Bumthangkha"] = "kjz", ["Bun"] = "buv", ["Buna"] = "bvn", ["Bunaba"] = "bck", ["Bunak"] = "bfn", ["Bunama"] = "bdd", ["Bundeli"] = "bns", ["Bung"] = "bqd", ["Bungain"] = "but", ["Bunganditj"] = "xbg", ["Bungku"] = "bkz", ["Bungu"] = "wun", ["Bunoge"] = "dgb", ["Bunun"] = "bnn", ["Buol"] = "blf", ["Bura"] = "bwr", ["Bura Mabang"] = "mde", ["Burak"] = "bys", ["Buraka"] = "bkg", ["Burarra"] = "bvr", ["Burate"] = "bti", ["Burduna"] = "bxn", ["Bure"] = "bvh", ["Burgundian"] = "gme-bur", ["Burji"] = "bji", ["Burmbar"] = "vrt", ["Burmeso"] = "bzu", ["Buru (Indonesia)"] = "mhs", ["Buru (Nigeria)"] = "bqw", ["Burui"] = "bry", ["Burumakok"] = "aip", ["Burun"] = "bdi", ["Burunge"] = "bds", ["Burushaski"] = "bsk", ["Burusu"] = "bqr", ["Buruwai"] = "asi", ["Busa"] = "bqp", ["Busam"] = "bxs", ["Busami"] = "bsm", ["Busang Kayan"] = "bfg", ["Bushoong"] = "buf", ["Buso"] = "bso", ["Busoa"] = "bup", ["Bussa"] = "dox", ["Busuu"] = "bju", ["Butbut Kalinga"] = "kyb", ["Butchulla"] = "xby", ["Butmas-Tur"] = "bnr", ["Butuanon"] = "btw", ["Buwal"] = "bhs", ["Buyeo"] = "xpy", ["Buyu"] = "byi", ["Buyuan Jino"] = "jiy", ["Bwa"] = "bww", ["Bwaidoka"] = "bwd", ["Bwala"] = "bnt-bwa", ["Bwanabwana"] = "tte", ["Bwatoo"] = "bwa", ["Bwe Karen"] = "bwe", ["Bwela"] = "bwl", ["Bwile"] = "bwc", ["Bwisi"] = "bwz", ["Byangsi"] = "bee", ["Byep"] = "mkk", ["Bädi Kanum"] = "khd", ["Caac"] = "msq", ["Cabiyarí"] = "cbb", ["Cabre"] = "awd-cab", ["Cabécar"] = "cjp", ["Cacaloxtepec Mixtec"] = "miu", ["Cacaopera"] = "ccr", ["Cacgia Roglai"] = "roc", ["Cacua"] = "cbv", ["Cacán"] = "sai-cac", ["Caddo"] = "cad", ["Cafundó"] = "ccd", ["Cahuarano"] = "cah", ["Cahuilla"] = "chl", ["Caijia"] = "sit-cai", ["Cajonos Zapotec"] = "zad", ["Caka"] = "ckx", ["Cakfem-Mushere"] = "cky", ["Calabrian Greek"] = "grk-cal", ["Calamian Tagbanwa"] = "tbk", ["Calusa"] = "nai-cal", ["Caluyanun"] = "clu", ["Caló"] = "rmq", ["Camarines Norte Agta"] = "abd", ["Cambodian Sign Language"] = "csx", ["Cameroon Mambila"] = "mcu", ["Cameroon Pidgin"] = "wes", ["Campalagian"] = "cml", ["Camsá"] = "kbh", ["Camtho"] = "cmt", ["Camunic"] = "xcc", ["Candoshi-Shapra"] = "cbu", ["Canela"] = "ram", ["Canichana"] = "caz", ["Cantabrian"] = "roa-can", ["Caolan"] = "mlc", ["Capanahua"] = "kaq", ["Capiznon"] = "cps", ["Cappadocian Greek"] = "cpg", ["Caquinte"] = "cot", ["Cara"] = "cfd", ["Carabayo"] = "cby", ["Caramanta"] = "crf", ["Caranqui"] = "sai-caq", ["Carapana"] = "cbc", ["Carian"] = "xcr", ["Cariay"] = "awd-kar", ["Carijona"] = "cbd", ["Carolina Algonquian"] = "crr", ["Carolinian"] = "cal", ["Carpathian Romani"] = "rmc", ["Carrier"] = "crx", ["Cashibo-Cacataibo"] = "cbr", ["Cashinahua"] = "cbs", ["Casiguran Dumagat Agta"] = "dgc", ["Casuarina Coast Asmat"] = "asc", ["Catacao"] = "sai-cat", ["Catalan Sign Language"] = "csc", ["Catawba"] = "chc", ["Catuquinaru"] = "sai-ctq", ["Catío Chibcha"] = "cba-cat", ["Cauca"] = "cca", ["Cavineña"] = "cav", ["Cayubaba"] = "cyb", ["Cayuga"] = "cay", ["Cayuse"] = "xcy", ["Cazcan"] = "azc-caz", ["Cañari"] = "sai-cnr", ["Cebaara Senoufo"] = "sef", ["Celtiberian"] = "xce", ["Cen"] = "cen", ["Central Asmat"] = "cns", ["Central Atlas Tamazight"] = "tzm", ["Central Awyu"] = "awu", ["Central Bai"] = "bca", ["Central Bontoc"] = "lbk", ["Central Cagayan Agta"] = "agt", ["ฟรังโกเนียตอนกลาง"] = "gmw-cfr", ["Central Grebo"] = "grv", ["Central Huasteca Nahuatl"] = "nch", ["Central Huishui Hmong"] = "hmc", ["Central Mahuatlán Zapotec"] = "zam", ["Central Mansi"] = "mns-cen", ["Central Masela"] = "mxz", ["Central Mashan Hmong"] = "hmm", ["Central Mazahua"] = "maz", ["Central Melanau"] = "mel", ["Central Ojibwa"] = "ojc", ["Central Pame"] = "pbs", ["Central Pomo"] = "poo", ["Central Puebla Nahuatl"] = "ncx", ["Central Siberian Yupik"] = "ess", ["Central Sierra Miwok"] = "csm", ["Central Subanen"] = "syb", ["Central Tagbanwa"] = "tgt", ["Central Tarahumara"] = "tar", ["Central Teke"] = "nzu", ["Central Tunebo"] = "tuf", ["Centúúm"] = "cet", ["Cerma"] = "cme", ["Ch'olti'"] = "myn-chl", ["Ch'orti'"] = "caa", ["Chaap Wuurong"] = "tjw", ["Chachi"] = "cbi", ["Chadian Arabic"] = "shu", ["Chadian Sign Language"] = "cds", ["Chadong"] = "cdy", ["Chaha"] = "sem-cha", ["Chaima"] = "ciy", ["Chairel"] = "sit-cha", ["Chak"] = "ckh", ["Chakali"] = "cli", ["Chala"] = "cll", ["Chaldean Neo-Aramaic"] = "cld", ["Chali"] = "tgf", ["Chamacoco"] = "ceg", ["Chamalal"] = "cji", ["Chamba Daka"] = "ccg", ["Chamba Leko"] = "ndi", ["Chambeali"] = "cdh", ["Chambri"] = "can", ["Chamicuro"] = "ccc", ["Chamling"] = "rab", ["Champenois"] = "roa-cha", ["Chang"] = "nbc", ["Changriwa"] = "cga", ["Changthang"] = "cna", ["Chantyal"] = "chx", ["Chaná"] = "sai-chn", ["Chané"] = "caj", ["Chapacura"] = "sai-chp", ["Chara"] = "cra", ["Charrua"] = "sai-chr", ["Chaudangsi"] = "cdn", ["Chaura"] = "crv", ["Chayahuita"] = "cbt", ["Chayuco Mixtec"] = "mih", ["Chazumba Mixtec"] = "xtb", ["Che"] = "ruk", ["Cheke Holo"] = "mrn", ["Chemakum"] = "xch", ["Chenapian"] = "cjn", ["Chenchu"] = "cde", ["Chenoua"] = "cnu", ["Chepang"] = "cdm", ["Chepya"] = "ycp", ["Cherepon"] = "cpn", ["Chesu"] = "ych", ["Chetco-Tolowa"] = "ctc", ["Chewong"] = "cwg", ["Chhattisgarhi"] = "hne", ["Chhintange"] = "ctn", ["Chhulung"] = "cur", ["Chiangmai Sign Language"] = "csd", ["Chiapanec"] = "cip", ["Chibcha"] = "chb", ["Chicahuaxtla Triqui"] = "trs", ["Chichicapan Zapotec"] = "zpv", ["Chichimeca-Jonaz"] = "pei", ["Chichonyi-Chidzihana-Chikauma"] = "coh", ["Chickasaw"] = "cic", ["Chicomuceltec"] = "cob", ["Chiduruma"] = "dug", ["Chigmecatitlán Mixtec"] = "mii", ["Chilcotin"] = "clc", ["Chilean Sign Language"] = "csg", ["Chilisso"] = "clh", ["Chiltepec Chinantec"] = "csa", ["Chimalapa Zoque"] = "zoh", ["Chimariko"] = "cid", ["Chimila"] = "cbg", ["Chimwiini"] = "bnt-cmw", ["Chinali"] = "cih", ["Chinbon Chin"] = "cnb", ["Chinese Pidgin English"] = "cpi", ["Chinese Sign Language"] = "csl", ["Chinook"] = "chh", ["Chinook Jargon"] = "chn", ["Chipaya"] = "cap", ["Chipewyan"] = "chp", ["Chiquihuitlán Mazatec"] = "maq", ["Chiquimulilla"] = "nai-chi", ["Chiquitano"] = "cax", ["Chiricahua"] = "apm", ["Chirino"] = "sai-chi", ["Chiripá"] = "nhd", ["Chiru"] = "cdf", ["Chitimacha"] = "ctm", ["Chitkuli Kinnauri"] = "cik", ["Chittagonian"] = "ctg", ["Chitwania Tharu"] = "the", ["Chiwere"] = "iow", ["Choapan Zapotec"] = "zpc", ["Chocangaca"] = "cgk", ["Chochotec"] = "coz", ["Choctaw"] = "cho", ["Chodri"] = "cdi", ["Chokri Naga"] = "nri", ["Chokwe"] = "cjk", ["Chol"] = "ctu", ["Cholón"] = "cht", ["Choni"] = "cda", ["Chono"] = "sai-cno", ["Chontal Maya"] = "chf", ["Chopi"] = "cce", ["Chothe Naga"] = "nct", ["Chrau"] = "crw", ["Chru"] = "cje", ["Chuabo"] = "chw", ["Chuanqiandian Cluster Miao"] = "cqd", ["Chuave"] = "cjv", ["Chug"] = "cvg", ["Chuj"] = "cac", ["Chuka"] = "cuh", ["Chukwa"] = "cuw", ["Chulym"] = "clw", ["Chumburung"] = "ncu", ["Churahi"] = "cdj", ["Church Slavonic"] = "zls-chs", ["Churuya"] = "sai-chu", ["Chut"] = "scb", ["Chuukese"] = "chk", ["Chuvan"] = "xcv", ["Chácobo"] = "cao", ["Ci Gbe"] = "cib", ["Cia-Cia"] = "cia", ["Cibak"] = "ckl", ["Cicipu"] = "awc", ["Ciguayo"] = "nai-cig", ["Cimbrian"] = "cim", ["Cinamiguin Manobo"] = "mkx", ["Cinda-Regi-Tiyal"] = "cdr", ["Cineni"] = "cie", ["Cinta Larga"] = "cin", ["Cishingini"] = "asg", ["Citak"] = "txt", ["Ciwogai"] = "tgd", ["แกลิกคลาสสิก"] = "ghc", ["Classical Mandaic"] = "myz", ["ซีรีแอกคลาสสิก"] = "syc", ["Coahuilteco"] = "xcw", ["Coast Miwok"] = "csi", ["Coastal Konjo"] = "kjc", ["Coatecas Altas Zapotec"] = "zca", ["Coatepec Nahuatl"] = "naz", ["Coatlán Mixe"] = "mco", ["Coatlán Zapotec"] = "zps", ["Coatzospan Mixtec"] = "miz", ["Cocama"] = "cod", ["Cochimi"] = "coj", ["Cocopa"] = "coc", ["Cocos Islands Malay"] = "coa", ["Coeruna"] = "sai-coe", ["Coeur d'Alene"] = "crd", ["Cofán"] = "con", ["Cogui"] = "kog", ["Col"] = "liw", ["Colombian Sign Language"] = "csn", ["Colonia Tovar German"] = "gct", ["Columbia-Wenatchi"] = "col", ["Colán"] = "sai-col", ["Comaltepec Chinantec"] = "cco", ["Comanche"] = "com", ["Comechingon"] = "sai-cmg", ["Comecrudo"] = "xcm", ["Communicationssprache"] = "art-com", ["Como Karim"] = "cfg", ["Comox"] = "coo", ["Con"] = "cno", ["Coos"] = "csz", ["Copainalá Zoque"] = "zoc", ["Copala Triqui"] = "trc", ["Copallén"] = "sai-cop", ["Coquille"] = "coq", ["Cora"] = "crn", ["Cori"] = "cry", ["Coroado Puri"] = "sai-crd", ["Cosoleacaque Nahuatl"] = "nhk", ["Costa Rican Sign Language"] = "csr", ["Cotabato Manobo"] = "mta", ["Cotoname"] = "xcn", ["Cowlitz"] = "cow", ["Coyaima"] = "coy", ["Coyotepec Popoloca"] = "pbf", ["Coyutla Totonac"] = "toc", ["Creek"] = "mus", ["Croatian Sign Language"] = "csq", ["Cross River Mbembe"] = "mfn", ["Crow"] = "cro", ["Cruzeño"] = "crz", ["Cua"] = "cua", ["Cuban Sign Language"] = "csf", ["Cubeo"] = "cub", ["Cueva"] = "sai-cva", ["Cuiba"] = "cui", ["Cuitlatec"] = "cuy", ["Culina"] = "cul", ["Culli"] = "sai-cul", ["Cumanagoto"] = "cuo", ["Cumbric"] = "xcb", ["Cung"] = "cug", ["Cupeño"] = "cup", ["Curonian"] = "xcu", ["Curripaco"] = "kpc", ["Cutchi-Swahili"] = "ccl", ["Cuvok"] = "cuv", ["Cuyamecalco Mixtec"] = "xtu", ["Cuyunon"] = "cyo", ["Cwi Bwamu"] = "bwy", ["Czech Sign Language"] = "cse", ["Cèmuhî"] = "cam", ["Cốông"] = "cnc", ["Da'a Kaili"] = "kzf", ["Daai Chin"] = "dao", ["Daakaka"] = "bpa", ["Daantanai'"] = "lni", ["Daasanach"] = "dsh", ["Daba"] = "dbq", ["Dabarre"] = "dbr", ["Dabe"] = "dbe", ["Dacian"] = "xdc", ["Dadanitic"] = "sem-dad", ["Dadi Dadi"] = "dda", ["Dadibi"] = "mps", ["Dadiya"] = "dbd", ["Daga"] = "dgz", ["Dagaari Dioula"] = "dgd", ["Dagba"] = "dgk", ["Dagbani"] = "dag", ["Dagik"] = "dec", ["Dagoman"] = "dgn", ["Dahalik"] = "dlk", ["Dahalo"] = "dal", ["Daho-Doo"] = "das", ["Dai"] = "dij", ["Dair"] = "drb", ["Dairi Batak"] = "btd", ["Dakka"] = "dkk", ["Dakpa"] = "dka", ["Daloa Bété"] = "bev", ["Dama (Nigeria)"] = "dmm", ["Dama (Sierra Leone)"] = "dmn-dam", ["Damakawa"] = "dam", ["Damal"] = "uhn", ["Dambi"] = "dac", ["Dameli"] = "dml", ["Dampelas"] = "dms", ["Dan"] = "dnj", ["Danaru"] = "dnr", ["Danau"] = "dnu", ["Dandami Maria"] = "daq", ["Dangaléat"] = "daa", ["Dangaura Tharu"] = "thl", ["Danish Sign Language"] = "dsl", ["Dano"] = "aso", ["Danu"] = "dnv", ["Danuwar"] = "dhw", ["Dao"] = "daz", ["Daonda"] = "dnd", ["Dar Daju Daju"] = "djc", ["Dar Fur Daju"] = "daj", ["Dar Sila Daju"] = "dau", ["Darai"] = "dry", ["Dargwa"] = "dar", ["Darkinjung"] = "xda", ["Darlong"] = "dln", ["Darmiya"] = "drd", ["Daro-Matu Melanau"] = "dro", ["Darumbal"] = "xgm", ["Dass"] = "dot", ["Datian Min"] = "nan-dat", ["Datooga"] = "tcc", ["Daungwurrung"] = "dgw", ["Daur"] = "dta", ["Davawenyo"] = "daw", ["Dawawa"] = "dww", ["Dawera-Daweloor"] = "ddw", ["Day"] = "dai", ["Dayi"] = "dax", ["Dazaga"] = "dzg", ["Deccani"] = "dcc", ["Dedua"] = "ded", ["Defaka"] = "afn", ["Defi Gbe"] = "gbh", ["Deg"] = "mzw", ["Deg Xinag"] = "ing", ["Degema"] = "deg", ["Degenan"] = "dge", ["Dehwari"] = "deh", ["Dela-Oenale"] = "row", ["Delo"] = "ntr", ["Delta Yokuts"] = "yok-dly", ["Dem"] = "dem", ["Dema"] = "dmx", ["Demisa"] = "dei", ["Demotic Egyptian"] = "egx-dem", ["Demta"] = "dmy", ["Dena'ina"] = "tfn", ["Dendi"] = "ddn", ["Dengese"] = "dez", ["Dengka"] = "dnk", ["Deno"] = "dbb", ["Denya"] = "anv", ["Dení"] = "dny", ["Deori"] = "der", ["Desano"] = "des", ["Desiya"] = "dso", ["Dewas Rai"] = "dwz", ["Dewoin"] = "dee", ["Dezfuli"] = "def", ["Dghwede"] = "dgh", ["Dhaiso"] = "dhs", ["Dhalandji"] = "dhl", ["Dhangu"] = "dhg", ["Dhanki"] = "dhn", ["Dhao"] = "nfa", ["Dharug"] = "xdk", ["Dhatki"] = "mki", ["Dhimal"] = "dhi", ["Dhodia"] = "dho", ["Dhofari Arabic"] = "adf", ["Dhudhuroa"] = "ddr", ["Dhundhari"] = "dhd", ["Dhungaloo"] = "dhx", ["Dhurga"] = "dhu", ["Dhuwal"] = "dwu", ["Dhuwaya"] = "dwy", ["Dia"] = "dia", ["Dibabawon Manobo"] = "mbd", ["Dibiyaso"] = "dby", ["Dibo"] = "dio", ["Dicamay Agta"] = "duy", ["Didinga"] = "did", ["Dieri"] = "dif", ["Digo"] = "dig", ["Dii"] = "dur", ["Dijim-Bwilim"] = "cfa", ["Dilling"] = "dil", ["Dima"] = "jma", ["Dimasa"] = "dis", ["Dimbong"] = "dii", ["Dime"] = "dim", ["Dinapigue Agta"] = "phi-din", ["Dineor"] = "mrx", ["Ding"] = "diz", ["Dinka"] = "din", ["Diodio"] = "ddi", ["Dirasha"] = "gdl", ["Diri"] = "dwa", ["Dirim"] = "dir", ["Disa"] = "dsi", ["Ditammari"] = "tbz", ["Ditidaht"] = "dtd", ["Diuwe"] = "diy", ["Diuxi-Tilantongo Mixtec"] = "xtd", ["Dixon Reef"] = "dix", ["Dizin"] = "mdx", ["Djadjawurrung"] = "dja", ["Djambarrpuyngu"] = "djr", ["Djangun"] = "djf", ["Djauan"] = "djn", ["Djawi"] = "djw", ["Djimini"] = "dyi", ["Djinang"] = "dji", ["Djinba"] = "djb", ["Djiwarli"] = "djl", ["Dobel"] = "kvo", ["Dobu"] = "dob", ["Doe"] = "doe", ["Doga"] = "dgg", ["Doghoro"] = "dgx", ["Dogoso"] = "dgs", ["Dogosé"] = "dos", ["Dogri"] = "doi", ["Dogrib"] = "dgr", ["Dogul Dom"] = "dbg", ["Doka"] = "dbi", ["Doko-Uyanga"] = "uya", ["Dolgan"] = "dlg", ["Dom"] = "doa", ["Domaaki"] = "dmk", ["Domari"] = "rmt", ["Dominican Sign Language"] = "doq", ["Dompo"] = "doy", ["Domu"] = "dof", ["Domung"] = "dev", ["Dondo"] = "dok", ["Dong"] = "doh", ["Dongo"] = "doo", ["Dongolawi"] = "kzh", ["Dongotono"] = "ddd", ["Dongshanba Lalo"] = "yik", ["Donno So Dogon"] = "dds", ["Doondo"] = "dde", ["Dorasque"] = "cba-dor", ["Dori'o"] = "dor", ["Dorig"] = "wwo", ["Doromu-Koki"] = "kqc", ["Dorze"] = "doz", ["Doso"] = "dol", ["Doteli"] = "dty", ["Dothraki"] = "art-dtk", ["Doura"] = "don", ["Doutai"] = "tds", ["Doyayo"] = "dow", ["Drehu"] = "dhv", ["Drung"] = "duu", ["Duala"] = "dua", ["Duano"] = "dup", ["Duau"] = "dva", ["Dubli"] = "dub", ["Dubu"] = "dmu", ["Dugun"] = "ndu", ["Duguri"] = "dbm", ["Dugwor"] = "dme", ["Duhwa"] = "kbz", ["Duit"] = "cba-dui", ["Duke"] = "nke", ["Dukhan"] = "trk-dkh", ["Dulbu"] = "dbo", ["Duli"] = "duz", ["Duma"] = "dma", ["Dumaitic"] = "sem-dum", ["Dumbea"] = "duf", ["Dumi"] = "dus", ["Dumpas"] = "dmv", ["Dumun"] = "dui", ["Duna"] = "duc", ["Dungmali"] = "raa", ["Dungra Bhil"] = "duh", ["Dungu"] = "dbv", ["Dupaningan Agta"] = "duo", ["Dura"] = "drq", ["Duri"] = "mvp", ["Duriankere"] = "dbn", ["Duruwa"] = "pci", ["Dusner"] = "dsn", ["Dusun Deyah"] = "dun", ["Dusun Malang"] = "duq", ["Dusun Witu"] = "duw", ["Dutch Low Saxon"] = "nds-nl", ["Dutch Sign Language"] = "dse", ["Duun"] = "dux", ["Duupa"] = "dae", ["Duvle"] = "duv", ["Duwai"] = "dbp", ["Duwet"] = "gve", ["Dwang"] = "nnu", ["Dyaabugay"] = "dyy", ["Dyaberdyaber"] = "dyb", ["Dyan"] = "dya", ["Dyangadi"] = "dyn", ["Dyirbal"] = "dbl", ["Dyugun"] = "dyd", ["Dyula"] = "dyu", ["Dza"] = "jen", ["Dzala"] = "dzl", ["Dzando"] = "dzn", ["Dzao Min"] = "bpn", ["Dzodinka"] = "add", ["Dzuun"] = "dnn", ["Dâw"] = "kwa", ["E"] = "eee", ["E'ma Buyang"] = "yzg", ["Early Old Oghuz"] = "trk-eog", ["Early Tripuri"] = "xtr", ["East Damar"] = "dmr", ["East Franconian"] = "vmf", ["East Futuna"] = "fud", ["East Kewa"] = "kjs", ["East Limba"] = "lma", ["East Masela"] = "vme", ["East Nyala"] = "nle", ["East Tarangan"] = "tre", ["East Yugur"] = "yuy", ["Eastern Acipa"] = "acp", ["Eastern Arrernte"] = "aer", ["Eastern Bolivian Guarani"] = "gui", ["Eastern Bontoc"] = "ebk", ["Eastern Canadian Inuktitut"] = "ike", ["Eastern Durango Nahuatl"] = "azd", ["Eastern Gorkha Tamang"] = "tge", ["Eastern Gurung"] = "ggn", ["Eastern Highland Chatino"] = "cly", ["Eastern Highland Otomi"] = "otm", ["Eastern Huasteca Nahuatl"] = "nhe", ["Eastern Huishui Hmong"] = "hme", ["Eastern Karaboro"] = "xrb", ["Eastern Keres"] = "kee", ["Eastern Khanty"] = "kca-eas", ["Eastern Krahn"] = "kqo", ["Eastern Lalu"] = "yit", ["Eastern Magar"] = "mgp", ["Eastern Maninkakan"] = "emk", ["Eastern Mari"] = "mhr", ["Eastern Meohang"] = "emg", ["Eastern Mnong"] = "mng", ["Eastern Muria"] = "emu", ["Eastern Ngad'a"] = "nea", ["Eastern Nisu"] = "nos", ["Eastern Ojibwa"] = "ojg", ["Eastern Parbate Kham"] = "kif", ["Eastern Penan"] = "pez", ["Eastern Pomo"] = "peb", ["Eastern Qiandong Miao"] = "hmq", ["Eastern Subanun"] = "sfe", ["Eastern Tamang"] = "taj", ["Eastern Tawbuid"] = "bnj", ["Eastern Xiangxi Miao"] = "muq", ["Eastern Xwla Gbe"] = "gbx", ["Ebira"] = "igb", ["Eblaite"] = "xeb", ["Ebrié"] = "ebr", ["Ebughu"] = "ebg", ["Ecuadorian Sign Language"] = "ecs", ["Ede Cabe"] = "cbj", ["Ede Ica"] = "ica", ["Ede Idaca"] = "idd", ["Ede Ije"] = "ijj", ["Ede Nago"] = "nqg", ["Edera Awyu"] = "awy", ["Edo"] = "bin", ["Edolo"] = "etr", ["Edopi"] = "dbf", ["Efai"] = "efa", ["Efe"] = "efe", ["Efik"] = "efi", ["Efutop"] = "ofu", ["Ega"] = "ega", ["Eggon"] = "ego", ["Egyptian Sign Language"] = "esl", ["Ehueun"] = "ehu", ["Eipomek"] = "eip", ["Eitiep"] = "eit", ["Ejagham"] = "etu", ["Ejamat"] = "eja", ["Ekajuk"] = "eka", ["Ekari"] = "ekg", ["Ekele"] = "khy", ["Eki"] = "eki", ["Ekit"] = "eke", ["Ekpeye"] = "ekp", ["El Alto Zapotec"] = "zpp", ["El Hugeirat"] = "elh", ["El Molo"] = "elo", ["Elamite"] = "elx", ["Eleme"] = "elm", ["Elepi"] = "ele", ["Elip"] = "ekm", ["Elkei"] = "elk", ["Eloi"] = "art-elo", ["Elotepec Zapotec"] = "zte", ["Eloyi"] = "afo", ["Elseng"] = "mrf", ["Elu"] = "elu", ["Elymian"] = "xly", ["Emae"] = "mmw", ["Emai"] = "ema", ["Eman"] = "emn", ["Embaloh"] = "emb", ["Emberá-Baudó"] = "bdc", ["Emberá-Catío"] = "cto", ["Emberá-Chamí"] = "cmi", ["Emberá-Tadó"] = "tdc", ["Embu"] = "ebu", ["Emem"] = "enr", ["Emerillon"] = "eme", ["Emplawas"] = "emw", ["En"] = "enc", ["Enawené-Nawé"] = "unk", ["Ende"] = "end", ["Enga"] = "enq", ["Engenni"] = "enn", ["Enggano"] = "eno", ["Enlhet"] = "enl", ["Enrekang"] = "ptt", ["Enu"] = "enu", ["Enwan"] = "env", ["Enwang"] = "enw", ["Enxet"] = "enx", ["Enya"] = "gey", ["Eotile"] = "eot", ["Epena"] = "sja", ["Epi-Olmec"] = "xep", ["Epie"] = "epi", ["Epigraphic Mayan"] = "emy", ["Eravallan"] = "era", ["Erave"] = "kjy", ["Ere"] = "twp", ["Erie"] = "iro-ere", ["Eritai"] = "ert", ["Erokwanas"] = "erw", ["Erre"] = "err", ["Erromintxela"] = "emx", ["Ersu"] = "ers", ["Eruwa"] = "erh", ["Esan"] = "ish", ["Ese"] = "mcq", ["Ese Ejja"] = "ese", ["Esimbi"] = "ags", ["Eskayan"] = "esy", ["Esmeralda"] = "sai-esm", ["Esselen"] = "esq", ["Estado de México Otomi"] = "ots", ["Estonian Sign Language"] = "eso", ["Esuma"] = "esm", ["Etchemin"] = "etc", ["Etebi"] = "etb", ["Eten"] = "etx", ["Eteocretan"] = "ecr", ["Eteocypriot"] = "ecy", ["Ethiopian Sign Language"] = "eth", ["Etkywan"] = "ich", ["Eton (Cameroon)"] = "eto", ["Eton (Vanuatu)"] = "etn", ["Etulo"] = "utr", ["Evant"] = "bzz", ["Ewage-Notu"] = "nou", ["Ewarhuyana"] = "sai-ewa", ["Ewondo"] = "ewo", ["Eyak"] = "eya", ["Ezaa"] = "eza", ["Fagani"] = "faf", ["Faire Atta"] = "azt", ["Faita"] = "faj", ["Faiwol"] = "fai", ["Fakkanci"] = "gel", ["Falam Chin"] = "cfm", ["Fali"] = "fli", ["Fam"] = "fam", ["Fanagalo"] = "fng", ["Fanamaket"] = "bjp", ["Fang (Bantu)"] = "fan", ["Fang (Beboid)"] = "fak", ["Fania"] = "fni", ["Far Western Muria"] = "fmu", ["ฟราฟรา"] = "gur", ["Fas"] = "fqs", ["Fasu"] = "faa", ["Fataleka"] = "far", ["Fataluku"] = "ddg", ["Fayu"] = "fau", ["Fe'fe'"] = "fmp", ["Fedan"] = "pdn", ["Fembe"] = "agl", ["Fer"] = "kah", ["Feroge"] = "fer", ["Filomena Mata-Coahuitlán Totonac"] = "tlp", ["Fingallian"] = "gmw-fin", ["Finisterre Yau"] = "yuw", ["Finnish Sign Language"] = "fse", ["Finnish-Swedish Sign Language"] = "fss", ["Finongan"] = "fag", ["Fipa"] = "fip", ["Firan"] = "fir", ["Fiwaga"] = "fiw", ["Flemish Sign Language"] = "vgt", ["Flinders Island"] = "fln", ["Foau"] = "flh", ["Fogaha"] = "ber-fog", ["Foi"] = "foi", ["Foia Foia"] = "ffi", ["Folopa"] = "ppo", ["Foma"] = "fom", ["Fon"] = "fon", ["Fongoro"] = "fgr", ["Foodo"] = "fod", ["Forak"] = "frq", ["Fordata"] = "frd", ["Fore"] = "for", ["Forest Enets"] = "enf", ["Forest Nenets"] = "yrk-for", ["Fortsenal"] = "frt", ["Fox"] = "sac", ["Franc-Comtois"] = "roa-fcm", ["Francisco León Zoque"] = "zos", ["French Belgian Sign Language"] = "sfb", ["French Sign Language"] = "fsl", ["Fuliiru"] = "flr", ["Fulniô"] = "fun", ["Fum"] = "fum", ["Fungwa"] = "ula", ["Fur"] = "fvr", ["Furu"] = "fuu", ["Futuna-Aniwa"] = "fut", ["Fuyug"] = "fuy", ["Fwe"] = "fwe", ["Fwâi"] = "fwa", ["Fyam"] = "pym", ["Fyer"] = "fie", ["Ga"] = "gaa", ["Ga'anda"] = "gqa", ["Ga'dang"] = "gdg", ["Gaa"] = "ttb", ["Gaam"] = "tbi", ["Gabadi"] = "kbt", ["Gabi"] = "gbw", ["Gabri"] = "gab", ["Gabrielino-Fernandeño"] = "xgf", ["Gadang"] = "gdk", ["Gaddang"] = "gad", ["Gaddi"] = "gbk", ["Gade"] = "ged", ["Gadjerawang"] = "gdh", ["Gadsup"] = "gaj", ["Gafat"] = "gft", ["Gagadu"] = "gbu", ["Gagnoa Bété"] = "btg", ["Gahri"] = "bfu", ["Gaikundi"] = "gbf", ["Gaina"] = "gcn", ["Gal"] = "gap", ["Galambu"] = "glo", ["Galatian"] = "xga", ["Galela"] = "gbi", ["Galeya"] = "gar", ["Galice"] = "gce", ["Galindian"] = "xgl", ["Gallaecian"] = "cel-gal", ["Gallo"] = "roa-gal", ["Gallo-Italic of Basilicata"] = "roa-gib", ["Gallo-Italic of Sicily"] = "roa-gis", ["Gallurese"] = "sdn", ["Galo"] = "adl", ["Galoli"] = "gal", ["Gamale Kham"] = "kgj", ["Gambera"] = "gma", ["Gamela"] = "sai-gam", ["Gamilaraay"] = "kld", ["Gamit"] = "gbl", ["Gamkonora"] = "gak", ["Gamo-Ningi"] = "bte", ["Gana"] = "gnq", ["Ganang"] = "gne", ["Gane"] = "gzn", ["Ganggalida"] = "gcd", ["Ganglau"] = "ggl", ["Gangte"] = "gnb", ["Gangulu"] = "gnl", ["Gants"] = "gao", ["Ganza"] = "gza", ["Ganzi"] = "gnz", ["Gao"] = "gga", ["Gapapaiwa"] = "pwg", ["Garawa"] = "wrk", ["Garhwali"] = "gbm", ["Garifuna"] = "cab", ["Garingbal"] = "xgi", ["Garre"] = "gex", ["Garus"] = "gyb", ["Garza"] = "xgr", ["Gashowu Yokuts"] = "yok-gsy", ["Gata'"] = "gaq", ["Gavak"] = "dmc", ["Gavar"] = "gou", ["Gavião do Jiparaná"] = "gvo", ["Gawar-Bati"] = "gwt", ["Gawwada"] = "gwd", ["Gaya"] = "zra", ["Gayil"] = "gyl", ["Gayo"] = "gay", ["Gayón"] = "sai-gay", ["Gbagyi"] = "gbr", ["Gban"] = "ggu", ["Gbanu"] = "gbv", ["Gbanziri"] = "gbg", ["Gbari"] = "gby", ["Gbaya-Bossangoa"] = "gbp", ["Gbaya-Bozoum"] = "gbq", ["Gbaya-Mbodomo"] = "gmm", ["Gbayi"] = "gyg", ["Gbesi Gbe"] = "gbs", ["Gbii"] = "ggb", ["Gbin"] = "xgb", ["Gbiri-Niragu"] = "grh", ["Gboloo Grebo"] = "gec", ["Gciriku"] = "diu", ["Gcwi"] = "gwj", ["Ge"] = "hmj", ["Geba Karen"] = "kvq", ["Gebe"] = "gei", ["Gedaged"] = "gdd", ["Gedeo"] = "drs", ["Geji"] = "gji", ["Geko Karen"] = "ghk", ["Gela"] = "nlg", ["Gele'"] = "sbc", ["Geme"] = "geq", ["Gen"] = "gej", ["Gende"] = "gaf", ["Gengle"] = "geg", ["Gepo"] = "ygp", ["Gera"] = "gew", ["Gerka"] = "gek", ["German Sign Language"] = "gsg", ["Geruma"] = "gea", ["Geser-Gorom"] = "ges", ["Geshiza"] = "ero-gsz", ["Gey"] = "guv", ["Ghadames"] = "gha", ["Ghanaian Sign Language"] = "gse", ["Ghandruk Sign Language"] = "gds", ["Ghanongga"] = "ghn", ["Ghari"] = "gri", ["Ghayavi"] = "bmk", ["Ghera"] = "ghr", ["Ghomala'"] = "bbj", ["Ghomara"] = "gho", ["Ghotuo"] = "aaa", ["Ghulfan"] = "ghl", ["Giangan"] = "bgi", ["Gibanawa"] = "gib", ["Gidar"] = "gid", ["Gikyode"] = "acd", ["Gilaki"] = "glk", ["Gilima"] = "gix", ["Gimi (Austronesian)"] = "gip", ["Gimi (Papuan)"] = "gim", ["Gimme"] = "kmp", ["Gimnime"] = "gmn", ["Ginuman"] = "gnm", ["Girawa"] = "bbr", ["Girirra"] = "gii", ["Giryama"] = "nyf", ["Githabul"] = "gih", ["Gitua"] = "ggt", ["Gitxsan"] = "git", ["Giyug"] = "giy", ["Gizrra"] = "tof", ["Glaro-Twabo"] = "glr", ["Glavda"] = "glw", ["Glio-Oubi"] = "oub", ["Glosa"] = "igs", ["Gnau"] = "gnu", ["Goa'uld"] = "art-gld", ["Goaria"] = "gig", ["Gobasi"] = "goi", ["Gobu"] = "gox", ["Godié"] = "god", ["Godoberi"] = "gdo", ["Godwari"] = "gdx", ["Goemai"] = "ank", ["Gogo"] = "gog", ["Gogodala"] = "ggw", ["Goguryeo"] = "zkg", ["Gojri"] = "gju", ["Gokana"] = "gkn", ["Gokhy"] = "tbq-gkh", ["Gola"] = "gol", ["Golin"] = "gvf", ["Golpa"] = "lja", ["Gone Dau"] = "goo", ["Gongduk"] = "goe", ["Gonja"] = "gjn", ["Goo"] = "gov", ["Gor"] = "gqr", ["Gorakor"] = "goc", ["Gorap"] = "goq", ["Goreng"] = "xgg", ["Gorontalo"] = "gor", ["Gorovu"] = "grq", ["Gorwaa"] = "gow", ["Gottscheerish"] = "gmw-gts", ["Goundo"] = "goy", ["Gourmanchéma"] = "gux", ["Gowlan"] = "goj", ["Gowro"] = "gwf", ["Gozarkhani"] = "goz", ["Grangali"] = "nli", ["Grass Koiari"] = "kbk", ["Greek Sign Language"] = "gss", ["Green Gelao"] = "giq", ["Grenadian Creole English"] = "gcl", ["Gresi"] = "grs", ["Groma"] = "gro", ["Gros Ventre"] = "ats", ["Gua"] = "gwx", ["Guachí"] = "sai-gua", ["Guahibo"] = "guh", ["Guajajára"] = "gub", ["Guajá"] = "gvj", ["Guambiano"] = "gum", ["Guamo"] = "sai-gmo", ["Guanano"] = "gvc", ["Guanche"] = "gnc", ["Guarayu"] = "gyr", ["Guatemalan Sign Language"] = "gsm", ["Guató"] = "gta", ["Guayabero"] = "guo", ["Guazacapán"] = "nai-guz", ["Gudang"] = "xgd", ["Gudanji"] = "nji", ["Gude"] = "gde", ["Gudu"] = "gdu", ["Guduf-Gava"] = "gdf", ["Guerrero Amuzgo"] = "amu", ["Guerrero Nahuatl"] = "ngu", ["Guevea de Humboldt Zapotec"] = "zpg", ["Gugadj"] = "ggd", ["Gugu Badhun"] = "gdc", ["Gugu Warra"] = "wrw", ["Guhu-Samane"] = "ghs", ["Guianese Creole"] = "gcr", ["Guiberoua Bété"] = "bet", ["Guinau"] = "awd-gnu", ["Guinea Kpelle"] = "gkp", ["Guinea-Bissau Sign Language"] = "lgs", ["Guinean Sign Language"] = "gus", ["Guiqiong"] = "gqi", ["Gula"] = "glu", ["Gula'alaa"] = "gmb", ["Gulay"] = "gvl", ["Gule"] = "gly", ["Gulf Arabic"] = "afb", ["Gullah"] = "gul", ["Gumalu"] = "gmu", ["Gumatj"] = "gnn", ["Gumawana"] = "gvs", ["Gumuz"] = "guk", ["Gun"] = "guw", ["Gundi"] = "gdi", ["Gunditjmara"] = "gjm", ["Gundungurra"] = "xrd", ["Gungabula"] = "gyf", ["Gungu"] = "rub", ["Guntai"] = "gnt", ["Gunu"] = "yas", ["Gunwinggu"] = "gup", ["Gunya"] = "gyy", ["Gupa-Abawa"] = "gpa", ["Gupapuyngu"] = "guf", ["Gur Lama"] = "las", ["Guragone"] = "gge", ["Guramalum"] = "grz", ["Gurani"] = "hac", ["Gureng Gureng"] = "gnr", ["Gurgula"] = "ggg", ["Guriaso"] = "grx", ["Gurindji"] = "gue", ["Gurindji Kriol"] = "gjr", ["Gurmana"] = "gvm", ["Guro"] = "goa", ["Guruntum"] = "grd", ["Gusan"] = "gsn", ["Gusii"] = "guz", ["Gusilay"] = "gsl", ["Gutnish"] = "gmq-gut", ["Guugu Yimidhirr"] = "kky", ["Guwa"] = "xgw", ["Guwamu"] = "gwu", ["Guwar"] = "aus-guw", ["Guya"] = "gka", ["Guyanese Creole English"] = "gyn", ["Guyani"] = "gvy", ["Guébie"] = "gie", ["Gvoko"] = "ngs", ["Gwa"] = "gwb", ["Gwahatike"] = "dah", ["Gwak"] = "jgk", ["Gwamhi-Wuri"] = "bga", ["Gwandara"] = "gwn", ["Gwara"] = "alv-gwa", ["Gweda"] = "grw", ["Gweno"] = "gwe", ["Gwere"] = "gwr", ["Gwich'in"] = "gwi", ["Gyalsumdo"] = "gyo", ["Gyele"] = "gyi", ["Gyem"] = "gye", ["Güenoa"] = "sai-gue", ["Habu"] = "hbu", ["Hachijō"] = "jpx-hcj", ["Hadiyya"] = "hdy", ["Hadoti"] = "hoj", ["Hadrami"] = "xhd", ["Hadza"] = "hts", ["Haeke"] = "aek", ["Hahon"] = "hah", ["Haida"] = "hai", ["Haigwai"] = "hgw", ["Hailufeng Min"] = "nan-hlh", ["Hainyaxo Bozo"] = "bzx", ["Haiphong Sign Language"] = "haf", ["Haisla"] = "has", ["Haitian Vodoun Culture Language"] = "hvc", ["Haiǁom"] = "hgm", ["Haji"] = "hji", ["Hakö"] = "hao", ["Halang"] = "hal", ["Halang Doan"] = "hld", ["Halbi"] = "hlb", ["Halia"] = "hla", ["Halkomelem"] = "hur", ["Hamap"] = "hmu", ["Hamba"] = "hba", ["Hamer-Banna"] = "amf", ["Hamtai"] = "hmt", ["Hanga"] = "hag", ["Hanga Hundi"] = "wos", ["Hani"] = "hni", ["Hanoi Sign Language"] = "hab", ["Harami"] = "xha", ["Harappan"] = "xiv", ["Harari"] = "har", ["Haraza"] = "nub-har", ["Harijan Kinnauri"] = "kjo", ["Haroi"] = "hro", ["Harsusi"] = "hss", ["Haruai"] = "tmd", ["Haruku"] = "hrk", ["Haryanvi"] = "bgc", ["Harzani"] = "hrz", ["Hasaitic"] = "sem-has", ["Hasha"] = "ybj", ["Hassaniya Arabic"] = "mey", ["Hatam"] = "had", ["Hattic"] = "xht", ["Hausa Sign Language"] = "hsl", ["Haush"] = "sai-hau", ["Havasupai-Walapai-Yavapai"] = "yuf", ["Haveke"] = "hvk", ["Havu"] = "hav", ["Hawai'i Pidgin Sign Language"] = "hps", ["Hawaiian Creole"] = "hwc", ["Haya"] = "hay", ["Hdi"] = "xed", ["Hehe"] = "heh", ["Heiban"] = "hbn", ["Heiltsuk"] = "hei", ["Helong"] = "heg", ["Hema"] = "nix", ["Hemba"] = "hem", ["Herdé"] = "hed", ["Hermit"] = "llf", ["Hernican"] = "xhr", ["Hewa"] = "ham", ["Heyo"] = "auk", ["Hibito"] = "hib", ["Hidatsa"] = "hid", ["Higaonon"] = "mba", ["High Valyrian"] = "art-vlh", ["Highland Konjo"] = "kjk", ["Highland Oaxaca Chontal"] = "chd", ["Highland Popoluca"] = "poi", ["Highland Puebla Nahuatl"] = "azz", ["Highland Totonac"] = "tos", ["Hijuk"] = "hij", ["Hill Maria"] = "mrr", ["Himarimã"] = "hir", ["Hindi Dogri"] = "dgo", ["Hinduri"] = "hii", ["Hinukh"] = "gin", ["Hismaic"] = "sem-his", ["Hitchiti"] = "nai-hit", ["Hittite"] = "hit", ["Hitu"] = "htu", ["Hiw"] = "hiw", ["Hixkaryana"] = "hix", ["Hlepho Phowa"] = "yhl", ["Hlersu"] = "hle", ["Hmar"] = "hmr", ["Hmong Don"] = "hmf", ["Hmong Dô"] = "hmv", ["Hmong Shua"] = "hmz", ["Hmwaveke"] = "mrk", ["Ho"] = "hoc", ["Ho Chi Minh City Sign Language"] = "hos", ["Hoava"] = "hoa", ["Hobyót"] = "hoh", ["Hoia Hoia"] = "hhi", ["Holikachuk"] = "hoi", ["Holiya"] = "hoy", ["Holma"] = "hod", ["Holoholo"] = "hoo", ["Holu"] = "hol", ["Homa"] = "hom", ["Honduran Lenca"] = "len", ["Honduras Sign Language"] = "hds", ["Hone"] = "juh", ["Hong Kong Sign Language"] = "hks", ["Honi"] = "how", ["Hopi"] = "hop", ["Horned Miao"] = "hrm", ["Horo"] = "hor", ["Horom"] = "hoe", ["Hote"] = "hot", ["Hoti"] = "hti", ["Hovongan"] = "hov", ["Hoyahoya"] = "hhy", ["Hozo"] = "hoz", ["Hpon"] = "hpo", ["Hrangkhol"] = "hra", ["Hruso"] = "hru", ["Hrê"] = "hre", ["Hu"] = "huo", ["Huachipaeri"] = "hug", ["Huambisa"] = "hub", ["Huaorani"] = "auc", ["Huarijio"] = "var", ["Huaulu"] = "hud", ["Huautla Mazatec"] = "mau", ["Huave"] = "huv", ["Huaxcaleca Nahuatl"] = "nhq", ["Huba"] = "hbb", ["Huehuetla Tepehua"] = "tee", ["Huetar"] = "cba-hue", ["Huichol"] = "hch", ["Huilliche"] = "huh", ["Huitepec Mixtec"] = "mxs", ["Huizhou"] = "czh", ["Hukumina"] = "huw", ["Hula"] = "hul", ["Hulaulá"] = "huy", ["Huli"] = "hui", ["Hulung"] = "huk", ["Humburi Senni"] = "hmb", ["Humene"] = "huf", ["Hun"] = "uth", ["Hunde"] = "hke", ["Hung"] = "hnu", ["Hungana"] = "hum", ["Hungarian Sign Language"] = "hsh", ["Hungworo"] = "nat", ["Hunjara-Kaina Ke"] = "hkk", ["Hunnic"] = "xhc", ["Hunzib"] = "huz", ["Hupa"] = "hup", ["Hupdë"] = "jup", ["Hupla"] = "hap", ["Hutterisch"] = "geh", ["Hwana"] = "hwo", ["Hya"] = "hya", ["Hyam"] = "jab", ["Hän"] = "haa", ["Hértevin"] = "hrt", ["I-Wak"] = "iwk", ["Iaai"] = "iai", ["Iamalele"] = "yml", ["Iatmul"] = "ian", ["Iau"] = "tmu", ["Ibali Teke"] = "tek", ["Ibaloi"] = "ibl", ["Ibanag"] = "ibg", ["Ibani"] = "iby", ["Ibatan"] = "ivb", ["Iberian"] = "xib", ["Ibibio"] = "ibb", ["Ibino"] = "ibn", ["Iboko"] = "bkp", ["Ibu"] = "ibu", ["Ibuoro"] = "ibr", ["Icelandic Sign Language"] = "icl", ["Iceve-Maci"] = "bec", ["Idakho-Isukha-Tiriki"] = "ida", ["Idaté"] = "idt", ["Idere"] = "ide", ["Idesa"] = "ids", ["Idi"] = "idi", ["Idiom Neutral"] = "mis-idn", ["Idoma"] = "idu", ["Idon"] = "idc", ["Idu"] = "clk", ["Idun"] = "ldb", ["Iduna"] = "viv", ["Ifo"] = "iff", ["Ifè"] = "ife", ["Igala"] = "igl", ["Igana"] = "igg", ["Igede"] = "ige", ["Ignaciano"] = "ign", ["Igo"] = "ahl", ["Iguta"] = "nar", ["Igwe"] = "igw", ["Iha"] = "ihp", ["Ihievbe"] = "ihi", ["Ija-Zuba"] = "vki", ["Ik"] = "ikx", ["Ika"] = "ikk", ["Ikaranggal"] = "ikr", ["Ikizu"] = "ikz", ["Iko"] = "iki", ["Ikobi-Mena"] = "meb", ["Ikoma"] = "ntk", ["Ikpeng"] = "txi", ["Ikpeshi"] = "ikp", ["Ikposo"] = "kpo", ["Iku-Gora-Ankwa"] = "ikv", ["Ikulu"] = "ikl", ["Ikwere"] = "ikw", ["Ikwo"] = "iqw", ["Ila"] = "ilb", ["Ile Ape"] = "ila", ["Ilgar"] = "ilg", ["Ili Turki"] = "ili", ["Ili'uun"] = "ilu", ["Ilianen Manobo"] = "mbi", ["Illyrian"] = "xil", ["Ilongot"] = "ilk", ["Ilue"] = "ilv", ["Ilwana"] = "mlk", ["Imbongu"] = "imo", ["Imonda"] = "imn", ["Imroing"] = "imr", ["Inabaknon"] = "abx", ["Inapang"] = "mzu", ["Indanga"] = "bnt-ind", ["Indo-Portuguese"] = "idb", ["Indri"] = "idr", ["Indus Kohistani"] = "mvy", ["Inebu One"] = "oin", ["Ineseño"] = "inz", ["Inga"] = "inb", ["Inlaod Itneg"] = "iti", ["Inoke-Yate"] = "ino", ["Inonhan"] = "loc", ["Inor"] = "ior", ["Inpui Naga"] = "nkf", ["International Sign"] = "ils", ["Interslavic"] = "isv", ["Intha"] = "int", ["Inuinnaqtun"] = "esx-inq", ["Inuit Sign Language"] = "iks", ["Inuktun"] = "esx-ink", ["Inupiaq"] = "ik", ["Inuvialuktun"] = "ikt", ["Ipai"] = "nai-ipa", ["Ipalapa Amuzgo"] = "azm", ["Ipiko"] = "ipo", ["Ipili"] = "ipi", ["Ipulo"] = "ass", ["Iquito"] = "iqu", ["Ir"] = "irr", ["Irantxe"] = "irn", ["Iraqw"] = "irk", ["Irarutu"] = "irh", ["Iraya"] = "iry", ["Iresim"] = "ire", ["Iriga Bicolano"] = "bto", ["Irish Sign Language"] = "isg", ["Irula"] = "iru", ["Isabi"] = "isa", ["Isanzu"] = "isn", ["Isarog Agta"] = "agk", ["Isaurian"] = "mis-isa", ["Isconahua"] = "isc", ["Isebe"] = "igo", ["Ishkashimi"] = "isk", ["Isinai"] = "inn", ["Isirawa"] = "srl", ["Islander Creole English"] = "icr", ["Isnag"] = "isd", ["Isoko"] = "iso", ["Israeli Sign Language"] = "isr", ["Isthmus Mixe"] = "mir", ["Isthmus Zapotec"] = "zai", ["Istro-Romanian"] = "ruo", ["Isu"] = "isu", ["Isubu"] = "szv", ["Italian Sign Language"] = "ise", ["Italiot Greek"] = "grk-ita", ["Itawit"] = "itv", ["Itelmen"] = "itl", ["Itene"] = "ite", ["Iteri"] = "itr", ["Itik"] = "itx", ["Ito"] = "itw", ["Itonama"] = "ito", ["Itsekiri"] = "its", ["Itu Mbon Uzo"] = "itm", ["Itundujia Mixtec"] = "mce", ["Itza'"] = "itz", ["Ivatan"] = "ivv", ["Iwaidja"] = "ibd", ["Iwal"] = "kbm", ["Iwam"] = "iwm", ["Iwur"] = "iwo", ["Ixcatec"] = "ixc", ["Ixcatlán Mazatec"] = "mzi", ["Ixil"] = "ixl", ["Ixtayutla Mixtec"] = "vmj", ["Ixtenco Otomi"] = "otz", ["Iyayu"] = "iya", ["Iyive"] = "uiv", ["Iyo"] = "nca", ["Iyo'wujwa Chorote"] = "crq", ["Iyojwa'ja Chorote"] = "crt", ["Izere"] = "izr", ["Izi"] = "izz", ["Izi-Ezaa-Ikwo-Mgbo"] = "izi", ["Izon"] = "ijc", ["Izora"] = "cbo", ["Iñapari"] = "inp", ["Jabem"] = "jae", ["Jabutí"] = "jbt", ["Jad"] = "jda", ["Jadgali"] = "jdg", ["Jah Hut"] = "jah", ["Jahanka"] = "jad", ["Jair Awyu"] = "awv", ["Jakaltek"] = "jac", ["Jakati"] = "jat", ["Jalapa de Díaz Mazatec"] = "maj", ["Jalkunan"] = "bxl", ["Jamaican Country Sign Language"] = "jcs", ["Jamaican Sign Language"] = "jls", ["Jamamadí"] = "jaa", ["Jambi Malay"] = "jax", ["Jamiltepec Mixtec"] = "mxt", ["Jaminjung"] = "djd", ["Jamsay"] = "djm", ["Jamtish"] = "gmq-jmk", ["Jandavra"] = "jnd", ["Janday"] = "jan", ["Jangkang"] = "djo", ["Jangshung"] = "jna", ["Janji"] = "jni", ["Japanese Sign Language"] = "jsl", ["Japhug"] = "sit-jap", ["Japrería"] = "jru", ["Jaqaru"] = "jqr", ["Jara"] = "jaf", ["Jarai"] = "jra", ["Jarawa"] = "anq", ["Jaru"] = "ddj", ["Jassic"] = "ysc", ["Jaunsari"] = "jns", ["Javindo"] = "jvd", ["Jawe"] = "jaz", ["Jaya"] = "jyy", ["Jebero"] = "jeb", ["Jeh"] = "jeh", ["Jehai"] = "jhi", ["Jeikó"] = "sai-jko", ["Jemez"] = "tow", ["Jenaama Bozo"] = "bze", ["Jeng"] = "jeg", ["Jennu Kurumba"] = "xuj", ["Jere"] = "jer", ["Jeri Kuo"] = "jek", ["Jersey Dutch"] = "gmw-jdt", ["Jeru"] = "akj", ["Jerung"] = "jee", ["Jhankot Sign Language"] = "jhs", ["Jiba"] = "juo", ["Jibu"] = "jib", ["Jicarilla"] = "apj", ["Jie"] = "mis-jie", ["Jiiddu"] = "jii", ["Jilbe"] = "jie", ["Jili"] = "mgi", ["Jilim"] = "jil", ["Jimi"] = "jmi", ["Jimjimen"] = "jim", ["Jina"] = "jia", ["Jingulu"] = "jig", ["Jiongnai Bunu"] = "pnu", ["Jirajara"] = "sai-jrj", ["Jirel"] = "jul", ["Jiru"] = "jrr", ["Jita"] = "jit", ["Jizhao"] = "mis-jzh", ["Jju"] = "kaj", ["Joba"] = "job", ["Jofotek-Bromnya"] = "jbr", ["Jola-Fonyi"] = "dyo", ["Jola-Kasa"] = "csk", ["Jonkor Bourmataguil"] = "jeu", ["Jordanian Sign Language"] = "jos", ["Jorá"] = "jor", ["Jowulu"] = "jow", ["Ju"] = "juu", ["Juang"] = "jun", ["Juba Arabic"] = "pga", ["Judeo-Italian"] = "itk", ["Judeo-Persian"] = "jpr", ["Judeo-Tat"] = "jdt", ["Jukun Takum"] = "jbu", ["Jumaytepeque"] = "nai-jum", ["Jumjum"] = "jum", ["Jumla Sign Language"] = "jus", ["Jumli"] = "jml", ["Jungle Inga"] = "inj", ["Juquila Mixe"] = "mxq", ["Jur Modo"] = "bex", ["Juray"] = "juy", ["Jurúna"] = "jur", ["Jutiapa"] = "nai-jtp", ["Jutish"] = "jut", ["Juwal"] = "mwb", ["Juxtlahuaca Mixtec"] = "vmc", ["Juǀ'hoan"] = "ktz", ["Jwira-Pepesa"] = "jwi", ["Júma"] = "jua", ["K'iche'"] = "quc", ["Kaamba"] = "xku", ["Kaan"] = "ldl", ["Kaang Chin"] = "ckn", ["Kaansa"] = "gna", ["Kaapor Sign Language"] = "uks", ["Kaba"] = "ksp", ["Kabalai"] = "kvf", ["Kabatei"] = "xkp", ["Kabba-Laka"] = "lap", ["Kabishiana"] = "tup-kab", ["Kabiyé"] = "kbp", ["Kabola"] = "klz", ["Kabore One"] = "onk", ["Kabras"] = "lkb", ["Kaburi"] = "uka", ["Kabutra"] = "kbu", ["Kabwa"] = "cwa", ["Kabwari"] = "kcw", ["Kachama-Ganjule"] = "kcx", ["Kachari"] = "xac", ["Kachi Koli"] = "gjk", ["Kacipo-Balesi"] = "koe", ["Kaco'"] = "xkk", ["Kadai"] = "kzd", ["Kadar"] = "kej", ["Kadara"] = "kad", ["Kadaru"] = "kdu", ["Kadiwéu"] = "kbc", ["Kado"] = "kdv", ["Kadugli"] = "xtc", ["Kaduo"] = "ktp", ["Kaera"] = "jka", ["Kafa"] = "kbr", ["Kafoa"] = "kpu", ["Kagate"] = "syw", ["Kagayanen"] = "cgc", ["Kagoma"] = "kdm", ["Kagoro"] = "xkg", ["Kagulu"] = "kki", ["Kahe"] = "hka", ["Kahua"] = "agw", ["Kaian"] = "kct", ["Kaibobo"] = "kzb", ["Kaidipang"] = "kzp", ["Kaiep"] = "kbw", ["Kaikadi"] = "kep", ["Kaike"] = "kzq", ["Kaiku"] = "kkq", ["Kaimbulawa"] = "zka", ["Kaimbé"] = "xai", ["Kaingang"] = "kgp", ["Kairak"] = "ckr", ["Kairiru"] = "kxa", ["Kairui-Midiki"] = "krd", ["Kais"] = "kzm", ["Kaitag"] = "xdq", ["Kaivi"] = "kce", ["Kaiwá"] = "kgk", ["Kaiy"] = "tcq", ["Kajakse"] = "ckq", ["Kajali"] = "xkj", ["Kajaman"] = "kag", ["Kakabai"] = "kqf", ["Kakabe"] = "kke", ["Kakanda"] = "kka", ["Kaki Ae"] = "tbd", ["Kakihum"] = "kxe", ["Kako"] = "kkj", ["Kakwa"] = "keo", ["Kala"] = "kcl", ["Kala Lagaw Ya"] = "mwp", ["Kalaamaya"] = "lkm", ["Kalabakan"] = "kve", ["Kalabari"] = "ijn", ["Kalabra"] = "kzz", ["Kalaktang Monpa"] = "kkf", ["Kalam"] = "kmh", ["Kalami"] = "gwc", ["Kalamsé"] = "knz", ["Kalanadi"] = "wkl", ["Kalanga"] = "kck", ["Kalao"] = "kly", ["Kalapuya"] = "kyl", ["Kalarko"] = "kba", ["Kalasha"] = "kls", ["Kalasuri"] = "xme-kls", ["Kalašma"] = "ine-kal", ["Kalenjin"] = "kln", ["Kalinago"] = "crb", ["Kalkatungu"] = "ktg", ["Kalkoti"] = "xka", ["Kallawaya"] = "caw", ["Kalo Finnish Romani"] = "rmf", ["Kalou"] = "ywa", ["Kaluli"] = "bco", ["Kalumpang"] = "kli", ["Kam"] = "kdx", ["Kamakan"] = "vkm", ["Kamang"] = "woi", ["Kamano"] = "kbq", ["Kamantan"] = "kci", ["Kamar"] = "keq", ["Kamara"] = "jmr", ["Kamarian"] = "kzx", ["Kamaru"] = "kgx", ["Kamasa"] = "klp", ["Kamasau"] = "kms", ["Kamassian"] = "xas", ["Kamayo"] = "kyk", ["Kamayurá"] = "kay", ["Kamba"] = "kam", ["Kambaata"] = "ktb", ["Kambaira"] = "kyy", ["Kamberataro"] = "kbv", ["Kamberau"] = "irx", ["Kambiwá"] = "xbw", ["Kami"] = "kmi", ["Kamkata-viri"] = "bsh", ["Kamo"] = "kcq", ["Kamoro"] = "kgq", ["Kamta"] = "rkt", ["Kamu"] = "xmu", ["Kamula"] = "xla", ["Kamwe"] = "hig", ["Kanakanabu"] = "xnb", ["Kanakuru"] = "kna", ["Kanamari"] = "knm", ["Kanashi"] = "xns", ["Kanasi"] = "soq", ["Kandas"] = "kqw", ["Kandawo"] = "gam", ["Kande"] = "kbs", ["Kang"] = "kyp", ["Kanga"] = "kcp", ["Kangean"] = "kkv", ["Kanggape"] = "igm", ["Kangjia"] = "kxs", ["Kango"] = "kty", ["Kango-Sua"] = "kzy", ["Kangri"] = "xnr", ["Kaniet"] = "ktk", ["Kanikkaran"] = "kev", ["Kaningdon-Nindem"] = "kdp", ["Kaningi"] = "kzo", ["Kaningra"] = "knr", ["Kaninuwa"] = "wat", ["Kanite"] = "kmu", ["Kanjari"] = "kft", ["Kanju"] = "kbe", ["Kannada Kurumba"] = "kfi", ["Kannauji"] = "bjj", ["Kanowit"] = "kxn", ["Kanoé"] = "kxo", ["Kansa"] = "ksk", ["Kantosi"] = "xkt", ["Kanu"] = "khx", ["Kanufi"] = "kni", ["Kanyok"] = "kny", ["Kao"] = "kax", ["Kaonde"] = "kqn", ["Kap"] = "ykm", ["Kapauri"] = "khp", ["Kapin"] = "tbx", ["Kapinawá"] = "xpn", ["Kapingamarangi"] = "kpg", ["Kapriman"] = "dju", ["Kaptiau"] = "kbi", ["Kapya"] = "klo", ["Kaqchikel"] = "cak", ["Kaqchikel-K'iche' Mixed Language"] = "ckz", ["Kara (New Guinea)"] = "leu", ["Kara (Tanzania)"] = "reg", ["Karachay-Balkar"] = "krc", ["Karadjeri"] = "gbd", ["Karaga Mandaya"] = "mry", ["Karaim"] = "kdr", ["Karajá"] = "kpj", ["Karakhanid"] = "xqa", ["Karami"] = "xar", ["Karamojong"] = "kdj", ["Karang"] = "kzr", ["Karanga"] = "kth", ["Karankawa"] = "zkk", ["Karas"] = "kgv", ["Karata"] = "kpt", ["Karawa"] = "xrw", ["Karbi"] = "mjw", ["Kare (Central Africa)"] = "kbn", ["Kare (New Guinea)"] = "kmf", ["Karekare"] = "kai", ["Karey"] = "kyd", ["Kari"] = "kbj", ["Kari'na"] = "car", ["Karingani"] = "kgn", ["Karipuna"] = "kuq", ["Karipúna Creole French"] = "kmv", ["Kariri"] = "kzw", ["Karitiâna"] = "ktn", ["Kariya"] = "kil", ["Kariyarra"] = "vka", ["Karkar-Yuri"] = "yuj", ["Karkin"] = "krb", ["Karko"] = "kko", ["Karnai"] = "bbv", ["Karo"] = "kxh", ["Karo Batak"] = "btx", ["Karok"] = "kyh", ["Karolanos"] = "kyn", ["Karon"] = "krx", ["Karon Dori"] = "kgw", ["Karore"] = "xkx", ["Karranga"] = "xrq", ["Karuwali"] = "rxw", ["Kasanga"] = "ccj", ["Kasem"] = "xsm", ["Kashaya"] = "kju", ["Kasiguranin"] = "ksn", ["Kaska"] = "kkz", ["Kaskean"] = "zsk", ["Kaskihá"] = "gva", ["Kassite"] = "mis-kas", ["Kassonke"] = "kao", ["Kasua"] = "khs", ["Kataang"] = "kgd", ["Katabaga"] = "ktq", ["Katawixi"] = "xat", ["Katembri"] = "sai-kat", ["Kathlamet"] = "nai-kat", ["Kathoriya Tharu"] = "tkt", ["Kathu"] = "ykt", ["Katkari"] = "kfu", ["Katla"] = "kcr", ["Kato"] = "ktw", ["Katso"] = "kaf", ["Katua"] = "kta", ["Katukina"] = "knt", ["Kaulong"] = "pss", ["Kaur"] = "vkk", ["Kaure"] = "bpp", ["Kaurna"] = "zku", ["Kauwera"] = "xau", ["Kavet"] = "krv", ["Kawacha"] = "kcb", ["Kawaiisu"] = "xaw", ["Kawe"] = "kgb", ["Kawishana"] = "awd-kaw", ["Kawésqar"] = "alc", ["Kaxararí"] = "ktx", ["Kaxuyana"] = "kbb", ["Kayabí"] = "kyz", ["Kayagar"] = "kyt", ["Kayan Mahakam"] = "xay", ["Kayan River Kayan"] = "xkn", ["Kayapa Kallahan"] = "kak", ["Kayapó"] = "txu", ["Kayardild"] = "gyd", ["Kayeli"] = "kzl", ["Kayong"] = "kxy", ["Kayort"] = "kyv", ["Kaytetye"] = "gbb", ["Kayupulau"] = "kzu", ["Kazukuru"] = "kzk", ["Ke'o"] = "xxk", ["Keak"] = "keh", ["Keapara"] = "khz", ["Kedang"] = "ksx", ["Keder"] = "kdy", ["Kehu"] = "khh", ["Kei"] = "kei", ["Keiga"] = "kec", ["Kein"] = "bmh", ["Keiyo"] = "eyo", ["Kela-Yela"] = "kel", ["Kelabit"] = "kzi", ["Kelantan Peranakan Hokkien"] = "mis-hkl", ["Keley-I Kallahan"] = "ify", ["Keliko"] = "kbo", ["Kelo"] = "xel", ["Kelon"] = "kyo", ["Kemak"] = "kem", ["Kembayan"] = "xem", ["Kemberano"] = "bzp", ["Kembra"] = "xkw", ["Kemezung"] = "dmo", ["Kemi Sami"] = "sjk", ["Kemiehua"] = "kfj", ["Kemtuik"] = "kmt", ["Kenaboi"] = "xbn", ["Kenati"] = "gat", ["Kendayan"] = "knx", ["Kendeje"] = "klf", ["Kendem"] = "kvm", ["Kenga"] = "kyq", ["Keningau Murut"] = "kxi", ["Keninjal"] = "knl", ["Kensiu"] = "kns", ["Kenswei Nsei"] = "ndb", ["Kenyan Sign Language"] = "xki", ["Kenyang"] = "ken", ["Kenyi"] = "lke", ["Keoru-Ahia"] = "xeu", ["Kepkiriwát"] = "kpn", ["Kepo'"] = "kuk", ["Kera"] = "ker", ["Kerak"] = "hhr", ["Kereho"] = "xke", ["Kerek"] = "krk", ["Kerewe"] = "ked", ["Kerewo"] = "kxz", ["Kerinci"] = "kvr", ["Kermanic"] = "xme-ker", ["Kesawai"] = "xes", ["Ket"] = "ket", ["Ketangalan"] = "kae", ["Kete"] = "kcv", ["Ketengban"] = "xte", ["Ketum"] = "ktt", ["Kewa"] = "kew", ["Keyagana"] = "kyg", ["Kgalagadi"] = "xkv", ["Khalaj"] = "klj", ["Khaling"] = "klr", ["Khamnigan Mongol"] = "ykh", ["Khamyang"] = "ksu", ["Khana"] = "ogo", ["Khandeshi"] = "khn", ["Khao"] = "xao", ["Kharam Naga"] = "kfw", ["Kharia"] = "khr", ["Kharia Thar"] = "ksy", ["Khayo"] = "lko", ["Khazar"] = "zkz", ["Khe"] = "kqg", ["Khehek"] = "tlx", ["Khengkha"] = "xkf", ["Khetrani"] = "xhe", ["Khezha Naga"] = "nkh", ["Khiamniungan Naga"] = "kix", ["Khinalug"] = "kjj", ["Khirwar"] = "kwx", ["Khisa"] = "kqm", ["Khlor"] = "llo", ["Khlula"] = "ykl", ["Khoekhoe"] = "naq", ["Khoibu Naga"] = "nkb", ["Khoini"] = "xkc", ["Kholok"] = "ktc", ["Kholosi"] = "inc-kho", ["Khorasani Turkish"] = "kmz", ["Khorezmian Turkic"] = "zkh", ["Khowar"] = "khw", ["Khroskyabs"] = "jiq", ["Khua"] = "xhv", ["Khuen"] = "khf", ["Khumi Chin"] = "cnk", ["Khvarshi"] = "khv", ["Khwarezmian"] = "xco", ["Khwe"] = "xuu", ["Kháng"] = "kjm", ["Kiautschou German Pidgin"] = "crp-kia", ["Kibala"] = "blv", ["Kibena"] = "bez", ["Kibet"] = "kie", ["Kibiri"] = "prm", ["Kichwa"] = "qwe-kch", ["Kickapoo"] = "kic", ["Kikai"] = "kzg", ["Kikami"] = "kcu", ["Kili"] = "tuw-kli", ["Kilit"] = "xme-klt", ["Kilivila"] = "kij", ["Kiliwa"] = "klb", ["Kilmeri"] = "kih", ["Kim"] = "kia", ["Kim Mun"] = "mji", ["Kimaama"] = "kig", ["Kimaragang"] = "kqr", ["Kimbu"] = "kiv", ["Kimbundu"] = "kmb", ["Kimki"] = "sbt", ["Kimré"] = "kqp", ["Kinabalian"] = "cbw", ["Kinalakna"] = "kco", ["Kinaray-a"] = "krj", ["Kinga"] = "zga", ["Kings River Yokuts"] = "yok-kry", ["Kinikinao"] = "gqn", ["Kinnauri"] = "kfk", ["Kintaq"] = "knq", ["Kinuku"] = "kkd", ["Kioko"] = "ues", ["Kiong"] = "kkm", ["Kiorr"] = "xko", ["Kiowa"] = "kio", ["Kipfokomo"] = "pkb", ["Kipsigis"] = "sgc", ["Kiput"] = "kyi", ["Kir-Balar"] = "kkr", ["Kire"] = "geb", ["Kirfi"] = "kks", ["Kirike"] = "okr", ["Kirikiri"] = "kiy", ["Kirya-Konzel"] = "fkk", ["Kis"] = "kis", ["Kisa"] = "lks", ["Kisan"] = "xis", ["Kisankasa"] = "kqh", ["Kisar"] = "kje", ["Kisi"] = "kiz", ["Kistane"] = "gru", ["Kita Maninkakan"] = "mwk", ["Kitanemuk"] = "azc-ktn", ["Kitembo"] = "tbt", ["Kitja"] = "gia", ["Kitsai"] = "kii", ["Kituba"] = "ktu", ["Kiunum"] = "wei", ["Kla"] = "lda", ["Klallam"] = "clm", ["Klamath-Modoc"] = "kla", ["Klao"] = "klu", ["Klias River Kadazan"] = "kqt", ["Klingon"] = "tlh", ["Knaanic"] = "czk", ["Ko"] = "fuj", ["Koalib"] = "kib", ["Koasati"] = "cku", ["Koba"] = "kpd", ["Kobiana"] = "kcj", ["Kobol"] = "kgu", ["Kobon"] = "kpw", ["Koch"] = "kdq", ["Kochila Tharu"] = "thq", ["Koda"] = "cdz", ["Kodaku"] = "ksz", ["Kodava"] = "kfa", ["Kodeoha"] = "vko", ["Kodi"] = "kod", ["Kodia"] = "kwp", ["Koenoem"] = "kcs", ["Kofa"] = "kso", ["Kofei"] = "kpi", ["Kofyar"] = "kwl", ["Kohin"] = "kkx", ["Kohistani Shina"] = "plk", ["Kohumono"] = "bcs", ["Koi"] = "kkt", ["Koibal"] = "zkb", ["Koireng"] = "nkd", ["Koitabu"] = "kqi", ["Koiwat"] = "kxt", ["Kok-Nar"] = "gko", ["Kok-Paponk"] = "okg", ["Kokata"] = "ktd", ["Koke"] = "kou", ["Koko-Bera"] = "kkp", ["Kokoda"] = "xod", ["Kokola"] = "kzn", ["Kokota"] = "kkk", ["Kol (Cameroon)"] = "biw", ["Kol (New Guinea)"] = "kol", ["Kola"] = "kvv", ["Kolami"] = "kfb", ["Kolbila"] = "klc", ["Kolhe"] = "ekl", ["Kolibugan Subanon"] = "skn", ["Kolom"] = "klm", ["Koluwawa"] = "klx", ["Kom (Cameroon)"] = "bkm", ["Kom (India)"] = "kmm", ["Koma"] = "kmy", ["Komba"] = "kpf", ["Kombai"] = "tyn", ["Kombio"] = "xbi", ["Komering"] = "kge", ["Komi-Permyak"] = "koi", ["Komi-Yazva"] = "urj-kya", ["Komi-Zyrian"] = "kpv", ["Kominimung"] = "xoi", ["Komo"] = "xom", ["Komodo"] = "kvh", ["Kompane"] = "kvp", ["Komyandaret"] = "kzv", ["Kon Keu"] = "kkn", ["Konabéré"] = "bbo", ["Konai"] = "kxw", ["Konda"] = "knd", ["Konda-Dora"] = "kfc", ["Kondekor"] = "gau", ["Koneraw"] = "kdw", ["Konkomba"] = "xon", ["Konni"] = "kma", ["Kono (Guinea)"] = "knu", ["Kono (Nigeria)"] = "klk", ["Kono (Sierra Leone)"] = "kno", ["Konomala"] = "koa", ["Konomihu"] = "nai-knm", ["Konongo"] = "kcz", ["Konso"] = "kxc", ["Konyak Naga"] = "nbe", ["Konyanka Maninka"] = "mku", ["Konzo"] = "koo", ["Koonzime"] = "ozm", ["Koorete"] = "kqy", ["Kopar"] = "xop", ["Kopkaka"] = "opk", ["Korafe-Yegha"] = "kpr", ["Korak"] = "koz", ["Korana"] = "kqz", ["Korandje"] = "kcy", ["Korean Sign Language"] = "kvk", ["Koreguaje"] = "coe", ["Koresh-e Rostam"] = "okh", ["Korku"] = "kfq", ["Korlai Creole Portuguese"] = "vkp", ["Koro (India)"] = "jkr", ["Koro (Vanuatu)"] = "krf", ["Koro (West Africa)"] = "kfo", ["Koromfé"] = "kfz", ["Koromira"] = "kqj", ["Koronadal Blaan"] = "bpr", ["Koroni"] = "xkq", ["Korop"] = "krp", ["Koropó"] = "xxr", ["Koroshi"] = "ktl", ["Korowai"] = "khe", ["Korra Koraga"] = "kfd", ["Korubo"] = "xor", ["Korupun-Sela"] = "kpq", ["Korwa"] = "kfp", ["Koryak"] = "kpy", ["Kosadle"] = "kiq", ["Kosarek Yale"] = "kkl", ["Koshin"] = "kid", ["Kosraean"] = "kos", ["Kota (Gabon)"] = "koq", ["Kota (India)"] = "kfe", ["Kota Bangun Kutai Malay"] = "mqg", ["Kota Marudu Talantang"] = "grm", ["Kota Marudu Tinagas"] = "ktr", ["Kotafon Gbe"] = "kqk", ["Koti"] = "eko", ["Kott"] = "zko", ["Kou"] = "snz", ["Kouya"] = "kyf", ["Kovai"] = "kqb", ["Kove"] = "kvc", ["Kowaki"] = "xow", ["Kowiai"] = "kwh", ["Koy Sanjaq Surat"] = "kqd", ["Koya"] = "kff", ["Koyaga"] = "kga", ["Koyo"] = "koh", ["Koyra Chiini"] = "khq", ["Koyraboro Senni"] = "ses", ["Koyukon"] = "koy", ["Kpagua"] = "kuw", ["Kpala"] = "kpl", ["Kpan"] = "kpk", ["Kpasam"] = "pbn", ["Kpati"] = "koc", ["Kpatili"] = "kym", ["Kpee"] = "cpo", ["Kpelle"] = "kpe", ["Kpessi"] = "kef", ["Kplang"] = "kph", ["Krache"] = "kye", ["Krahô"] = "xra", ["Kraol"] = "rka", ["Krenak"] = "kqq", ["Kresh"] = "krs", ["Krevinian"] = "zkv", ["Kreye"] = "xre", ["Krikati-Timbira"] = "xri", ["Krim"] = "krm", ["Krio"] = "kri", ["Krisa"] = "ksi", ["Kristang"] = "mcm", ["Krobu"] = "kxb", ["Krongo"] = "kgo", ["Kru'ng"] = "krr", ["Krymchak"] = "jct", ["Kryts"] = "kry", ["Ktunaxa"] = "kut", ["Kua"] = "tyu", ["Kua-nsi"] = "ykn", ["Kuamasi"] = "yku", ["Kuan"] = "uan", ["Kuanhua"] = "xnh", ["Kube"] = "kgf", ["Kubi"] = "kof", ["Kubo"] = "jko", ["Kubu"] = "kvb", ["Kucong"] = "lkc", ["Kudiya"] = "kfg", ["Kudmali"] = "kyw", ["Kudu-Camo"] = "kov", ["Kugama"] = "kow", ["Kugbo"] = "kes", ["Kugu-Muminh"] = "xmh", ["Kui (India)"] = "kxu", ["Kui (Indonesia)"] = "kvd", ["Kuijau"] = "dkr", ["Kuikúro"] = "kui", ["Kujarge"] = "vkj", ["Kuk"] = "kfn", ["Kukatja"] = "kux", ["Kukele"] = "kez", ["Kukkuzi"] = "urj-kuk", ["Kukna"] = "kex", ["Kuku-Mangk"] = "xmq", ["Kuku-Mu'inh"] = "xmp", ["Kuku-Thaypan"] = "typ", ["Kuku-Ugbanh"] = "ugb", ["Kuku-Uwanh"] = "uwa", ["Kuku-Yalanji"] = "gvn", ["Kula"] = "tpg", ["Kulaal"] = "glj", ["Kulere"] = "kul", ["Kulfa"] = "kxj", ["Kulina"] = "xpk", ["Kulisusu"] = "vkl", ["Kullu Pahari"] = "kfx", ["Kulon"] = "uon", ["Kulon-Pazeh"] = "uun", ["Kulung"] = "kle", ["Kumak"] = "nee", ["Kumalu"] = "ksl", ["Kumam"] = "kdi", ["Kuman"] = "kue", ["Kumaoni"] = "kfy", ["Kumarbhag Paharia"] = "kmj", ["Kumba"] = "ksm", ["Kumbainggar"] = "kgs", ["Kumbaran"] = "wkb", ["Kumbewaha"] = "xks", ["Kumeyaay"] = "nai-kum", ["Kumhali"] = "kra", ["Kumu"] = "kmw", ["Kumukio"] = "kuo", ["Kumzari"] = "zum", ["Kuna"] = "cuk", ["Kunama"] = "kun", ["Kunbarlang"] = "wlg", ["Kunda"] = "kdn", ["Kundal Shahi"] = "shd", ["Kunduvadi"] = "wku", ["Kung"] = "kfl", ["Kungarakany"] = "ggk", ["Kungardutyi"] = "gdt", ["Kunggari"] = "kgl", ["Kungkari"] = "lku", ["Kuni"] = "kse", ["Kuni-Boazi"] = "kvg", ["Kunimaipa"] = "kup", ["Kunja"] = "pep", ["Kunjen"] = "kjn", ["Kunyi"] = "njx", ["Kunza"] = "kuz", ["Kuo"] = "xuo", ["Kuot"] = "kto", ["Kupa"] = "kug", ["Kupang Malay"] = "mkn", ["Kupia"] = "key", ["Kupsabiny"] = "kpz", ["Kur"] = "kuv", ["Kura Ede Nago"] = "nqk", ["Kurama"] = "krh", ["Kuranko"] = "knk", ["Kuri"] = "nbn", ["Kuria"] = "kuj", ["Kurichiya"] = "kfh", ["Kurmukar"] = "kfv", ["Kurnai"] = "unn", ["Kurrama"] = "vku", ["Kurti"] = "ktm", ["Kurtjar"] = "gdj", ["Kurtöp"] = "xkz", ["Kurudu"] = "kjr", ["Kuruáya"] = "kyr", ["Kusaal"] = "kus", ["Kusaghe"] = "ksg", ["Kushi"] = "kuh", ["Kustenau"] = "awd-kus", ["Kusu"] = "ksv", ["Kusunda"] = "kgg", ["Kutang Ghale"] = "ght", ["Kutep"] = "kub", ["Kuthant"] = "xut", ["Kutto"] = "kpa", ["Kutu"] = "kdc", ["Kuturmi"] = "khj", ["Kuuk Thaayorre"] = "thd", ["Kuuk Yak"] = "uky", ["Kuuku-Ya'u"] = "kuy", ["Kuvale"] = "olu", ["Kuvi"] = "kxv", ["Kuwaa"] = "blh", ["Kuwaataay"] = "cwt", ["Kuwani"] = "paa-kwn", ["Kven"] = "fkv", ["Kw'adza"] = "wka", ["Kwa'"] = "bko", ["Kwaami"] = "ksq", ["Kwadi"] = "kwz", ["Kwaio"] = "kwd", ["Kwaja"] = "kdz", ["Kwak"] = "kwq", ["Kwak'wala"] = "kwk", ["Kwakum"] = "kwu", ["Kwalhioqua-Tlatskanai"] = "qwt", ["Kwama"] = "kmq", ["Kwambi"] = "kwm", ["Kwamera"] = "tnk", ["Kwami"] = "ktf", ["Kwamtim One"] = "okk", ["Kwang"] = "kvi", ["Kwanga"] = "kwj", ["Kwangali"] = "kwn", ["Kwanja"] = "knp", ["Kwanka"] = "bij", ["Kwanyama"] = "kj", ["Kwara'ae"] = "kwf", ["Kwasio"] = "nmg", ["Kwaya"] = "kya", ["Kwaza"] = "xwa", ["Kwegu"] = "xwg", ["Kwer"] = "kwr", ["Kwerba"] = "kwe", ["Kwerba Mamberamo"] = "xwr", ["Kwere"] = "cwe", ["Kwerisa"] = "kkb", ["Kwese"] = "kws", ["Kwesten"] = "kwt", ["Kwini"] = "gww", ["Kwinsu"] = "kuc", ["Kwinti"] = "kww", ["Kwoma"] = "kmo", ["Kwomtari"] = "kwo", ["Kyak"] = "bka", ["Kyaka"] = "kyc", ["Kyakala"] = "tuw-kkl", ["Kyan-Karyaw Naga"] = "nqq", ["Kyenele"] = "kql", ["Kyenga"] = "tye", ["Kyerung"] = "kgy", ["Kâte"] = "kmg", ["Kélé"] = "keb", ["Kómnzo"] = "paa-kom", ["La'bi"] = "lbi", ["Laal"] = "gdm", ["Laalaa"] = "cae", ["Laba"] = "lau", ["Label"] = "lbb", ["Labir"] = "jku", ["Labo"] = "mwi", ["Labo Phowa"] = "ypb", ["Labu"] = "lbu", ["Labuk-Kinabatangan Kadazan"] = "dtb", ["Lacandon"] = "lac", ["Lachi"] = "lbt", ["Lachiguiri Zapotec"] = "zpa", ["Lachixío Zapotec"] = "zpl", ["Ladji-Ladji"] = "llj", ["Laeko-Libuat"] = "lkl", ["Lafofa"] = "laf", ["Laghu"] = "lgb", ["Laghuu"] = "lgh", ["Lagwan"] = "kot", ["Laha (Indonesia)"] = "lhh", ["Laha (Vietnam)"] = "lha", ["Lahanan"] = "lhn", ["Lahnda"] = "lah", ["Lahta Karen"] = "kvt", ["Lahu"] = "lhu", ["Lahu Shi"] = "lhi", ["Lahul Lohar"] = "lhl", ["Lai"] = "cnh", ["Laimbue"] = "lmx", ["Laitu Chin"] = "clj", ["Laiyolo"] = "lji", ["Laka"] = "lak", ["Lakalei"] = "lka", ["Lake Miwok"] = "lmw", ["Lakha"] = "lkh", ["Laki"] = "lki", ["Lakon"] = "lkn", ["Lakondê"] = "lkd", ["Lakota"] = "lkt", ["Lakota Dida"] = "dic", ["Lala (New Guinea)"] = "nrz", ["Lala (South Africa)"] = "bnt-lal", ["Lala-Bisa"] = "leb", ["Lala-Roba"] = "lla", ["Lalana Chinantec"] = "cnl", ["Lama Bai"] = "lay", ["Lamaholot"] = "slp", ["Lamalera"] = "lmr", ["Lamang"] = "hia", ["Lamatuka"] = "lmq", ["Lamba"] = "lam", ["Lambadi"] = "lmn", ["Lambichhong"] = "lmh", ["Lambya"] = "lai", ["Lame"] = "bma", ["Lamenu"] = "lmu", ["Lamet"] = "lbn", ["Lamja-Dengsa-Tola"] = "ldh", ["Lamkang"] = "lmk", ["Lamma"] = "lev", ["Lamnso'"] = "lns", ["Lamogai"] = "lmg", ["Lampung Api"] = "ljp", ["Lamu"] = "llh", ["Lamu-Lamu"] = "lby", ["Lanas Lobu"] = "ruu", ["Landoma"] = "ldm", ["Lang'e"] = "yne", ["Langam"] = "lnm", ["Langbashe"] = "lna", ["Langi"] = "lag", ["Langnian Buyang"] = "yln", ["Lango (Sudan)"] = "lno", ["Lango (Uganda)"] = "laj", ["Lanima"] = "lnw", ["Lanoh"] = "lnh", ["Lao Naga"] = "nlq", ["Laomian"] = "lwm", ["Laopang"] = "lbg", ["Laos Sign Language"] = "lso", ["Lapaguía-Guivini Zapotec"] = "ztl", ["Lapine"] = "art-lap", ["Lapuyan Subanun"] = "laa", ["Laragia"] = "lrg", ["Larantuka Malay"] = "lrt", ["Lardil"] = "lbz", ["Larestani"] = "lrl", ["Larike-Wakasihu"] = "alo", ["Laro"] = "lro", ["Larteh"] = "lar", ["Laru"] = "lan", ["Larëvat"] = "lrv", ["Lasalimu"] = "llm", ["Lasgerdi"] = "lsa", ["Lashi"] = "lsi", ["Lasi"] = "lss", ["Latu"] = "ltu", ["Latundê"] = "ltn", ["Latvian Sign Language"] = "lsl", ["Lau"] = "llu", ["Laua"] = "luf", ["Lauan"] = "llx", ["Lauje"] = "law", ["Laura"] = "lur", ["Laurentian"] = "lre", ["Lavatbura-Lamusong"] = "lbv", ["Lave"] = "brb", ["Laven"] = "lbo", ["Lavukaleve"] = "lvk", ["Lawangan"] = "lbx", ["Lawi"] = "lvi", ["Lawu"] = "lwu", ["Lawunuia"] = "tgi", ["Layakha"] = "lya", ["Laze"] = "tbq-laz", ["Lealao Chinantec"] = "cle", ["Leco"] = "lec", ["Ledo Kaili"] = "lew", ["Leelau"] = "ldk", ["Lefa"] = "lfa", ["Lega-Mwenga"] = "lgm", ["Lega-Shabunda"] = "lea", ["Legbo"] = "agb", ["Legenyem"] = "lcc", ["Lehali"] = "tql", ["Leinong Naga"] = "lzn", ["Leipon"] = "lek", ["Lela"] = "dri", ["Lelak"] = "llk", ["Lele (Chad)"] = "lln", ["Lele (Congo)"] = "lel", ["Lele (Guinea)"] = "llc", ["Lele (New Guinea)"] = "lle", ["Lelemi"] = "lef", ["Lelepa"] = "lpa", ["Lembena"] = "leq", ["Lemerig"] = "lrz", ["Lemio"] = "lei", ["Lemnian"] = "xle", ["Lemolang"] = "ley", ["Lemoro"] = "ldj", ["Lenakel"] = "tnl", ["Lendu"] = "led", ["Lengilu"] = "lgi", ["Lengo"] = "lgr", ["Lengola"] = "lej", ["Lenje"] = "leh", ["Lenkau"] = "ler", ["Lenyima"] = "ldg", ["Lepcha"] = "lep", ["Lepki"] = "lpe", ["Lepontic"] = "xlp", ["Lere"] = "gnh", ["Lese"] = "les", ["Lesing-Gelimi"] = "let", ["Letemboi"] = "nms", ["Leti"] = "lti", ["Levuka"] = "lvu", ["Lewo"] = "lww", ["Lewo Eleng"] = "lwe", ["Lewotobi"] = "lwt", ["Leyigha"] = "ayi", ["Lhao Vo"] = "mhx", ["Lhokpu"] = "lhp", ["Li'o"] = "ljl", ["Liabuku"] = "lix", ["Liana-Seti"] = "ste", ["Liangmai Naga"] = "njn", ["Liberia Kpelle"] = "xpe", ["Liberian Kreyol"] = "lir", ["Libido"] = "liq", ["Libinza"] = "liz", ["Libon Bikol"] = "lbl", ["Liburnian"] = "xli", ["Libyan Sign Language"] = "lbs", ["Ligbi"] = "lig", ["Ligenza"] = "lgz", ["Lihir"] = "lih", ["Lika"] = "lik", ["Liki"] = "lio", ["Likila"] = "lie", ["Likuba"] = "kxx", ["Likum"] = "lib", ["Likwala"] = "kwc", ["Lilau"] = "lll", ["Lillooet"] = "lil", ["Limassa"] = "bme", ["Limbum"] = "lmp", ["Limi"] = "ylm", ["Limilngan"] = "lmc", ["Limos Kalinga"] = "kmk", ["Linear A"] = "lab", ["Lingkhim"] = "lii", ["Lingua Franca Nova"] = "lfn", ["Linngithigh"] = "lnj", ["Lipan"] = "apl", ["Lipo"] = "lpo", ["Lisabata-Nuniali"] = "lcs", ["Lisela"] = "lcl", ["Lish"] = "lsh", ["Lishana Deni"] = "lsd", ["Lishanid Noshan"] = "aij", ["Lishán Didán"] = "trg", ["Lithuanian Sign Language"] = "lls", ["Little Swanport"] = "aus-lsw", ["Litzlitz"] = "lzl", ["Lizu"] = "sit-liz", ["Lo-Toga"] = "lht", ["Loarki"] = "lrk", ["Lobala"] = "loq", ["Lobi"] = "lob", ["Lodhi"] = "lbm", ["Logba"] = "lgq", ["Logo"] = "log", ["Logol"] = "lof", ["Logooli"] = "rag", ["Logorik"] = "liu", ["Lokaa"] = "yaz", ["Loko"] = "lok", ["Lokoya"] = "lky", ["Lola"] = "lcd", ["Lolak"] = "llq", ["Lole"] = "llg", ["Lolo"] = "llb", ["Loloda"] = "loa", ["Lolopo"] = "ycl", ["Loma"] = "lom", ["Lomaiviti"] = "lmv", ["Lomakka"] = "loi", ["Lomavren"] = "rmi", ["Lombi"] = "lmi", ["Lombo"] = "loo", ["Lomwe"] = "ngl", ["Loncong"] = "lce", ["Long Phuri Naga"] = "lpn", ["Long Wat"] = "ttw", ["Longgu"] = "lgu", ["Longjia"] = "sit-lnj", ["Longto"] = "wok", ["Longuda"] = "lnu", ["Longyan Min"] = "nan-lnx", ["Loniu"] = "los", ["Lonwolwol"] = "crc", ["Loo"] = "ldo", ["Lopa"] = "lop", ["Lope"] = "yiu", ["Lopi"] = "lov", ["Lopit"] = "lpx", ["Lorang"] = "lrn", ["Lorediakarkar"] = "lnn", ["Lorrain"] = "roa-lor", ["Lote"] = "uvl", ["Lotha Naga"] = "njh", ["Lotud"] = "dtr", ["Lotuko"] = "lot", ["Lou"] = "loj", ["Loun"] = "lox", ["Loup A"] = "xlo", ["Loup B"] = "xlb", ["Lovono"] = "vnk", ["Lower Burdekin"] = "xbb", ["Lower Chehalis"] = "cea", ["Lower Grand Valley Dani"] = "dni", ["Lower Nossob"] = "nsb", ["Lower Southern Aranda"] = "axl", ["Lower Ta'oih"] = "tto", ["Lower Tanana"] = "taa", ["Lowland Oaxaca Chontal"] = "clo", ["Lowland Tarahumara"] = "tac", ["Loxicha Zapotec"] = "ztp", ["Lozi"] = "loz", ["Luang"] = "lex", ["Luba-Kasai"] = "lua", ["Luba-Katanga"] = "lu", ["Lubila"] = "kcc", ["Lubu"] = "lcf", ["Lubuagan Kalinga"] = "knb", ["Luchazi"] = "lch", ["Lucumí"] = "luq", ["Ludian"] = "lud", ["Lufu"] = "ldq", ["Lugbara"] = "lgg", ["Luguru"] = "ruf", ["Luhu"] = "lcq", ["Luhya"] = "luy", ["Luimbi"] = "lum", ["Luiseño"] = "lui", ["Lukpa"] = "dop", ["Lule"] = "ule", ["Lumba-Yakkha"] = "luu", ["Lumbee"] = "lmz", ["Lumbu"] = "lup", ["Lumun"] = "lmd", ["Lun Bawang"] = "lnd", ["Luna"] = "luj", ["Lunanakha"] = "luk", ["Lunda"] = "lun", ["Lungga"] = "lga", ["Luo"] = "luo", ["Luopohe Hmong"] = "hml", ["Luren"] = "sit-lrn", ["Luri (Nigeria)"] = "ldd", ["Lusengo"] = "lse", ["Lushootseed"] = "lut", ["Lusi"] = "khl", ["Lusitanian"] = "xls", ["Lutachoni"] = "lts", ["Lutos"] = "ndy", ["Lutuv"] = "clt", ["Luvale"] = "lue", ["Luwati"] = "luv", ["Luwian"] = "xlu", ["Luwo"] = "lwo", ["Luyana"] = "lyn", ["Lwalu"] = "lwa", ["Lwel"] = "lvl", ["Lycian"] = "xlc", ["Lydian"] = "xld", ["Lyélé"] = "lee", ["Láadan"] = "ldn", ["Láá Láá Bwamu"] = "bwj", ["Löyöp"] = "urr", ["Ma"] = "msj", ["Ma Manda"] = "skc", ["Ma'anyan"] = "mhy", ["Ma'di"] = "mhi", ["Ma'ya"] = "slz", ["Maaka"] = "mew", ["Maale"] = "mdy", ["Maay"] = "ymm", ["Maba"] = "mqa", ["Mabaale"] = "mmz", ["Mabaan"] = "mfz", ["Mabaka Valley Kalinga"] = "kkg", ["Mabire"] = "muj", ["Maca"] = "mca", ["Macaguaje"] = "mcl", ["Macaguán"] = "mbn", ["Macau Pidgin Portuguese"] = "crp-mpp", ["Machame"] = "jmc", ["Machiguenga"] = "mcb", ["Machinere"] = "mpd", ["Machinga"] = "mvw", ["Macoris"] = "nai-mac", ["Macuna"] = "myy", ["Macushi"] = "mbc", ["Mada (Cameroon)"] = "mxu", ["Mada (Nigeria)"] = "mda", ["Madagascar Sign Language"] = "mzc", ["Madak"] = "mmx", ["Maden"] = "xmx", ["Madhi Madhi"] = "dmd", ["Madi"] = "grg", ["Madngele"] = "zml", ["Madukayang Kalinga"] = "kmd", ["Madurese"] = "mad", ["Maeng Itneg"] = "itt", ["Mafa"] = "maf", ["Mag-Anchi Ayta"] = "sgb", ["Mag-Indi Ayta"] = "blx", ["Magahat"] = "mtw", ["Magdalena Peñasco Mixtec"] = "xtm", ["Magiyi"] = "gmg", ["Magoma"] = "gmx", ["Magori"] = "zgr", ["Magɨ"] = "gkd", ["Mahali"] = "mjx", ["Mahasu Pahari"] = "bfz", ["Mahican"] = "mjy", ["Mahongwe"] = "mhb", ["Mahou"] = "mxx", ["Maiadomu"] = "mzz", ["Maiani"] = "tnh", ["Maii"] = "mmm", ["Mailu"] = "mgu", ["Maindo"] = "cwb", ["Maipure"] = "awd-mpr", ["Mairasi"] = "zrs", ["Maisin"] = "mbq", ["Maiwa (Indonesia)"] = "wmm", ["Maiwa (New Guinea)"] = "mti", ["Maiwala"] = "mum", ["Majang"] = "mpe", ["Majera"] = "xmj", ["Majhi"] = "mjz", ["Majhwar"] = "mmj", ["Mak (China)"] = "mkg", ["Mak (Nigeria)"] = "pbl", ["Makaa"] = "mcp", ["Makah"] = "myh", ["Makalero"] = "mjb", ["Makasae"] = "mkz", ["Makassar Malay"] = "mfp", ["Makayam"] = "aup", ["Makhuwa"] = "vmw", ["Makhuwa-Marrevone"] = "xmc", ["Makhuwa-Meetto"] = "mgh", ["Makhuwa-Moniga"] = "mhm", ["Makhuwa-Saka"] = "xsq", ["Makhuwa-Shirima"] = "vmk", ["Maklew"] = "mgf", ["Makolkol"] = "zmh", ["Makonde"] = "kde", ["Maku"] = "xak", ["Maku'a"] = "lva", ["Makuri Naga"] = "jmn", ["Makuráp"] = "mpu", ["Makwe"] = "ymk", ["Makyan Naga"] = "umn", ["Mal Paharia"] = "mkb", ["Mala (New Guinea)"] = "ped", ["Mala (Nigeria)"] = "ruy", ["Mala Malasar"] = "ima", ["Malaccan Creole Malay"] = "ccm", ["Malalamai"] = "mmt", ["Malalí"] = "sai-mal", ["Malango"] = "mln", ["Malankuravan"] = "mjo", ["Malapandaram"] = "mjp", ["Malaryan"] = "mjq", ["Malas"] = "mkr", ["Malasanga"] = "mqz", ["Malasar"] = "ymr", ["Malavedan"] = "mjr", ["Malawi Lomwe"] = "lon", ["Malawian Sign Language"] = "lws", ["Malayic Dayak"] = "xdy", ["Malaynon"] = "mlz", ["Malaysian Sign Language"] = "xml", ["Malba Birifor"] = "bfo", ["Male"] = "mdc", ["Malecite-Passamaquoddy"] = "pqm", ["Maleng"] = "pkt", ["Maleu-Kilenge"] = "mgl", ["Malfaxal"] = "mlx", ["Malgana"] = "vml", ["Malgbe"] = "mxf", ["Mali"] = "gcc", ["Malibu"] = "sai-mlb", ["Malila"] = "mgq", ["Malimba"] = "mzd", ["Malimpung"] = "mli", ["Malinaltepec Tlapanec"] = "tcf", ["Malol"] = "mbk", ["Maltese Sign Language"] = "mdl", ["Malua Bay"] = "mll", ["Malvi"] = "mup", ["Maléku Jaíka"] = "gut", ["Mam"] = "mam", ["Mama"] = "mma", ["Mamaa"] = "mhf", ["Mamaindé"] = "wmd", ["Mamanwa"] = "mmn", ["Mamara Senoufo"] = "myk", ["Mamasa"] = "mqj", ["Mambae"] = "mgm", ["Mambai"] = "mcs", ["Mamboru"] = "mvd", ["Mambwe-Lungu"] = "mgr", ["Mampruli"] = "maw", ["Mamuju"] = "mqx", ["Mamulique"] = "emm", ["Mamusi"] = "kdf", ["Mamvu"] = "mdi", ["Man Met"] = "mml", ["มลายูแบบมานาโด"] = "xmm", ["Manam"] = "mva", ["Manambu"] = "mle", ["Manangba"] = "nmm", ["Manangkari"] = "znk", ["Manao"] = "awd-man", ["Manda (Australia)"] = "zma", ["Manda (India)"] = "mha", ["Manda (Tanzania)"] = "mgs", ["Mandahuaca"] = "mht", ["Mandaic"] = "mid", ["Mandailing Batak"] = "btm", ["Mandalorian"] = "art-man", ["Mandan"] = "mhq", ["Mandandanyi"] = "zmk", ["Mandar"] = "mdr", ["Mandara"] = "tbf", ["Mandari"] = "mqu", ["Mandeali"] = "mjl", ["Mander"] = "mqr", ["Mandingo"] = "man", ["Mandinka"] = "mnk", ["Mandjak"] = "mfv", ["Mandobo Atas"] = "aax", ["Mandobo Bawah"] = "bwp", ["Manem"] = "jet", ["Mang"] = "zng", ["Mangala"] = "mem", ["Mangarayi"] = "mpc", ["Mangarevan"] = "mrv", ["Mangas"] = "zns", ["Mangayat"] = "myj", ["Mangbetu"] = "mdj", ["Mangbutu"] = "mdk", ["Mangerr"] = "zme", ["Mangga Buang"] = "mmo", ["Manggarai"] = "mqy", ["Mangghuer"] = "mjg-mgr", ["Mango"] = "mge", ["Mangole"] = "mqc", ["Mangseng"] = "mbh", ["Manigri-Kambolé Ede Nago"] = "xkb", ["Manikion"] = "mnx", ["Manipa"] = "mqp", ["Mankanya"] = "knf", ["Mankiyali"] = "nlm", ["Manna-Dora"] = "mju", ["Mannan"] = "mjv", ["Mano"] = "mev", ["Manombai"] = "woo", ["Mansaka"] = "msk", ["Mansoanka"] = "msw", ["Manta"] = "myg", ["Mantsi"] = "nty", ["Manumanaw Karen"] = "kxf", ["Manus Koro"] = "kxr", ["Manusela"] = "wha", ["Manya"] = "mzj", ["Manyawa"] = "mny", ["Manza"] = "mzv", ["Mao Naga"] = "nbi", ["Maonan"] = "mmd", ["Maore Comorian"] = "swb", ["Mape"] = "mlh", ["Mapena"] = "mnm", ["Mapia"] = "mpy", ["Mapidian"] = "mpw", ["Mapos Buang"] = "bzh", ["Mapoyo"] = "mcg", ["Mapudungun"] = "arn", ["Mapun"] = "sjm", ["Mara"] = "mec", ["Mara Chin"] = "mrh", ["Marachi"] = "lri", ["Maraghei"] = "vmh", ["Maragus"] = "mrs", ["Maram Naga"] = "nma", ["Marama"] = "lrm", ["Maranungku"] = "zmr", ["Mararit"] = "mgb", ["Maratino"] = "sai-mar", ["Marau"] = "mvr", ["Marawan"] = "awd-mar", ["Marba"] = "mpg", ["Marenje"] = "vmr", ["Marfa"] = "mvu", ["Margany"] = "zmc", ["Marghi South"] = "mfm", ["Margi"] = "mrt", ["Maria"] = "mds", ["Mariaté"] = "awd-mrt", ["Maricopa"] = "mrc", ["Maridan"] = "zmd", ["Maridjabin"] = "zmj", ["Marik"] = "dad", ["Marimanindji"] = "zmm", ["Marind"] = "mrz", ["Maring"] = "mbw", ["Maring Naga"] = "nng", ["Maringarr"] = "zmt", ["Mariri"] = "mqi", ["Maritime Sign Language"] = "nsr", ["Maritsauá"] = "msp", ["Mariupol Greek"] = "grk-mar", ["Mariyedi"] = "zmy", ["Marka"] = "rkm", ["Markweeta"] = "enb", ["Marma"] = "rmz", ["Maroon Spirit Language"] = "crp-mar", ["Marovo"] = "mvo", ["Marrgu"] = "mhg", ["Marriammu"] = "xru", ["Marrithiyel"] = "mfr", ["Marrucinian"] = "umc", ["Marsian"] = "ims", ["Martha's Vineyard Sign Language"] = "mre", ["Marti Ke"] = "zmg", ["Martu Wangka"] = "mpj", ["Martuthunira"] = "vma", ["Marúbo"] = "mzr", ["Masaba"] = "myx", ["Masadiit Itneg"] = "tis", ["Masakará"] = "sai-msk", ["Masalit"] = "mls", ["Masana"] = "mcn", ["Masbate Sorsogon"] = "bks", ["Mashco Piro"] = "cuj", ["Mashi"] = "mho", ["Masimasi"] = "ism", ["Masiwang"] = "bnf", ["Maskelynes"] = "klv", ["Maslam"] = "msv", ["Masmaje"] = "mes", ["Massachusett"] = "wam", ["Massalat"] = "mdg", ["Massep"] = "mvs", ["Matagalpa"] = "mtn", ["Matal"] = "mfh", ["Matanawi"] = "sai-mat", ["Matbat"] = "xmt", ["Matengo"] = "mgv", ["Matepi"] = "mqe", ["Matigsalug Manobo"] = "mbt", ["Matipuhy"] = "mzo", ["Matlatzinca"] = "mat", ["Mato"] = "met", ["Mator"] = "mtm", ["Matsés"] = "mcf", ["Mattole"] = "mvb", ["Matukar"] = "mjk", ["Matumbi"] = "mgw", ["Matya Samo"] = "stj", ["Matís"] = "mpq", ["Maung"] = "mph", ["Mauritian Sign Language"] = "lsy", ["Mauwake"] = "mhl", ["Mav̋ea"] = "mkv", ["Mawa"] = "mcw", ["Mawak"] = "mjj", ["Mawan"] = "mcz", ["Mawayana"] = "mzx", ["Mawchi"] = "mke", ["Mawes"] = "mgk", ["Maxakalí"] = "mbl", ["Maxi Gbe"] = "mxl", ["Maya Samo"] = "sym", ["Mayaguduna"] = "xmy", ["Mayangna"] = "yan", ["Mayawali"] = "yxa", ["Maybrat"] = "ayz", ["Mayeka"] = "myc", ["Mayi-Thakurti"] = "xyt", ["Maykulan"] = "mnt", ["Maynas"] = "sai-mys", ["Mayo"] = "mfy", ["Mayogo"] = "mdm", ["Mayoyao Ifugao"] = "ifu", ["Mazagway"] = "dkx", ["Mazaltepec Zapotec"] = "zpy", ["Mazatlán Mazatec"] = "vmz", ["Mazatlán Mixe"] = "mzl", ["Mba"] = "mfc", ["Mbabaram"] = "vmb", ["Mbala"] = "mdp", ["Mbalanhu"] = "lnb", ["Mbandja"] = "zmz", ["Mbangala"] = "mxg", ["Mbangi"] = "mgn", ["Mbangwe"] = "zmn", ["Mbara (Australia)"] = "mvl", ["Mbara (Chad)"] = "mpk", ["Mbariman-Gudhinma"] = "zmv", ["Mbati"] = "mdn", ["Mbato"] = "gwa", ["Mbay"] = "myb", ["Mbe"] = "mfo", ["Mbe'"] = "mtk", ["Mbelime"] = "mql", ["Mbere"] = "mdt", ["Mbesa"] = "zms", ["Mbiywom"] = "aus-mbi", ["Mbo (Cameroon)"] = "mbo", ["Mbo (Congo)"] = "zmw", ["Mboi"] = "moi", ["Mboko"] = "mdu", ["Mbole"] = "mdq", ["Mbonga"] = "xmb", ["Mbongno"] = "bgu", ["Mbosi"] = "mdw", ["Mbowe"] = "mxo", ["Mbre"] = "mka", ["Mbu'"] = "muc", ["Mbudum"] = "xmd", ["Mbugu"] = "mhd", ["Mbugwe"] = "mgz", ["Mbuko"] = "mqb", ["Mbukushu"] = "mhw", ["Mbula"] = "mna", ["Mbula-Bwazza"] = "mbu", ["Mbule"] = "mlb", ["Mbulungish"] = "mbv", ["Mbum"] = "mdd", ["Mbunda"] = "mck", ["Mbunga"] = "mgy", ["Mburku"] = "bbt", ["Mbuun"] = "zmp", ["Mbwela"] = "mfu", ["Mbya Guarani"] = "gun", ["Me'en"] = "mym", ["Mebu"] = "mjn", ["Mecayapan Nahuatl"] = "nhx", ["Medebur"] = "mjm", ["Medefaidrin"] = "dmf", ["Media Lengua"] = "mue", ["Mednyj Aleut"] = "mud", ["Medumba"] = "byv", ["Mefele"] = "mfj", ["Megam"] = "mef", ["Megleno-Romanian"] = "ruq", ["Mehek"] = "nux", ["Mehináku"] = "mmh", ["Mehri"] = "gdq", ["Mekeo"] = "mek", ["Mekmek"] = "mvk", ["Mekwei"] = "msf", ["Mekéns"] = "skf", ["Mel-Khaonh"] = "hkn", ["Mele-Fila"] = "mxe", ["Melo"] = "mfx", ["Melpa"] = "med", ["Memoni"] = "mby", ["Mendalam Kayan"] = "xkd", ["Mendankwe-Nkwen"] = "mfd", ["Mende"] = "men", ["Mengaka"] = "xmg", ["Mengen"] = "mee", ["Mengisa"] = "leo", ["Menien"] = "sai-men", ["Menka"] = "mea", ["Menominee"] = "mez", ["Mentawai"] = "mwv", ["Menya"] = "mcr", ["Meoswar"] = "mvx", ["Mer"] = "mnu", ["Meramera"] = "mxm", ["Merei"] = "lmb", ["Merey"] = "meq", ["Meriam"] = "ulk", ["Meroitic"] = "xmr", ["Meru"] = "mer", ["Mesaka"] = "iyo", ["Mese"] = "mci", ["Mesme"] = "zim", ["Mesmes"] = "mys", ["Mesqan"] = "mvz", ["Messapic"] = "cms", ["Meta'"] = "mgo", ["Metlatónoc Mixtec"] = "mxv", ["Mewati"] = "wtm", ["Mexican Sign Language"] = "mfs", ["Meyah"] = "mej", ["Mezontla Popoloca"] = "pbe", ["Mezquital Otomi"] = "ote", ["Meänkieli"] = "fit", ["Mfinu"] = "zmf", ["Mfumte"] = "nfu", ["Mgbo"] = "gmz", ["Mi'kmaq"] = "mic", ["Miami"] = "mia", ["Mian"] = "mpt", ["Miani"] = "pla", ["Micha"] = "yiq", ["Michif"] = "crg", ["Michigamea"] = "cmm", ["Michoacán Mazahua"] = "mmc", ["Michoacán Nahuatl"] = "ncl", ["Mid Grand Valley Dani"] = "dnt", ["Mid-Southern Banda"] = "bjo", ["Middle Cornish"] = "cnx", ["Middle Kannada"] = "dra-mkn", ["Middle Median"] = "xme-mid", ["Middle Scots"] = "gmw-msc", ["Middle Watut"] = "mpl", ["Midob"] = "mei", ["Migaama"] = "mmy", ["Migabac"] = "mpp", ["Miji"] = "sjl", ["Miju"] = "mxj", ["Mikasuki"] = "mik", ["Milang"] = "tbq-mil", ["Mili"] = "ymh", ["Millcayac"] = "sai-mil", ["Miltu"] = "mlj", ["Miluk"] = "iml", ["Milyan"] = "imy", ["Mimi of Decorse"] = "mis-mmd", ["Mimi of Nachtigal"] = "mis-mmn", ["Mina"] = "hna", ["Minaean"] = "inm", ["Minang"] = "xrg", ["Minaveha"] = "mvn", ["Minderico"] = "drc", ["Mindiri"] = "mpn", ["Mingang Doso"] = "mko", ["Mingo"] = "iro-min", ["Minica Huitoto"] = "hto", ["Minidien"] = "wii", ["Minigir"] = "vmg", ["Minjungbal"] = "xjb", ["Minkin"] = "xxm", ["Minokok"] = "mqq", ["Minriq"] = "mnq", ["Mintil"] = "mzt", ["Miraya Bikol"] = "rbl", ["Mire"] = "mvh", ["Mirgan"] = "zrg", ["Miriti"] = "mmv", ["Miriwoong Sign Language"] = "rsm", ["Miriwung"] = "mep", ["Mirning"] = "gmr", ["Mirpur Panjabi"] = "pmu", ["Misantla Totonac"] = "tlc", ["Miship"] = "mjs", ["Misima-Paneati"] = "mpx", ["Mising"] = "mrg", ["Miskito"] = "miq", ["Mitla Zapotec"] = "zaw", ["Mitlatongo Mixtec"] = "vmm", ["Mittu"] = "mwu", ["Mituku"] = "zmq", ["Miu"] = "mpo", ["Miwa"] = "vmi", ["Mixed Great Andamanese"] = "gac", ["Mixifore"] = "mfg", ["Mixtepec Mixtec"] = "mix", ["Mixtepec Zapotec"] = "zpm", ["Miya"] = "mkf", ["Miyobe"] = "soy", ["Mlabri"] = "mra", ["Mlahsö"] = "lhs", ["Mlap"] = "kja", ["Mlomp"] = "mlo", ["Mmaala"] = "mmu", ["Mmani"] = "buy", ["Mmen"] = "bfm", ["Mo"] = "wkd", ["Mo'da"] = "gbn", ["Moba"] = "mfq", ["Mobilian"] = "mod", ["Mobu"] = "ahm", ["Mocana"] = "sai-mcn", ["Mochi"] = "old", ["Mochica"] = "omc", ["Mocho"] = "mhc", ["Mocoví"] = "moc", ["Modang"] = "mxd", ["Modole"] = "mqo", ["Moere"] = "mvq", ["Mofu-Gudur"] = "mif", ["Mogholi"] = "mhj", ["Mogum"] = "mou", ["Mohawk"] = "moh", ["Mohegan-Pequot"] = "xpq", ["Moi (Congo)"] = "mow", ["Moi (Indonesia)"] = "mxn", ["Moikodi"] = "mkp", ["Moingi"] = "mwz", ["Mojave"] = "mov", ["Moji"] = "ymi", ["Mok"] = "mqt", ["Moken"] = "mwt", ["Mokerang"] = "mft", ["Moklen"] = "mkm", ["Mokole"] = "mkl", ["Mokpwe"] = "bri", ["Molale"] = "mbe", ["Molbog"] = "pwm", ["Moldova Sign Language"] = "vsi", ["Molengue"] = "bxc", ["Molima"] = "mox", ["Molmo One"] = "aun", ["Molo"] = "zmo", ["Molof"] = "msl", ["Moloko"] = "mlw", ["Mom Jango"] = "ver", ["Moma"] = "myl", ["Momare"] = "msz", ["Mombo Dogon"] = "dmb", ["Mombum"] = "mso", ["Momina"] = "mmb", ["Momuna"] = "mqf", ["Monastic Sign Language"] = "mzg", ["Mondropolon"] = "npn", ["Mondé"] = "mnd", ["Mongghul"] = "mjg-mgl", ["Mongo"] = "lol", ["Mongol"] = "mgt", ["Mongolian Sign Language"] = "msr", ["Mongondow"] = "mog", ["Moni"] = "mnz", ["Monimbo"] = "mom", ["Mono (California)"] = "mnr", ["Mono (Cameroon)"] = "mru", ["Mono (Congo)"] = "mnh", ["Monom"] = "moo", ["Monsang Naga"] = "nmh", ["Montana Salish"] = "fla", ["Montol"] = "mtl", ["Monumbo"] = "mxk", ["Monzombo"] = "moj", ["Moo"] = "gwg", ["Moore"] = "mos", ["Moose Cree"] = "crm", ["Mopan Maya"] = "mop", ["Mor (Austronesian)"] = "mhz", ["Mor (Papuan)"] = "moq", ["Moraid"] = "msg", ["Moran"] = "tbq-mor", ["Morawa"] = "mze", ["Morelos Nahuatl"] = "nhm", ["Morerebi"] = "xmo", ["Moresada"] = "msx", ["Mori Atas"] = "mzq", ["Mori Bawah"] = "xmz", ["Morigi"] = "mdb", ["Moro"] = "mor", ["Moroccan Amazigh"] = "zgh", ["Moroccan Sign Language"] = "xms", ["Morokodo"] = "mgc", ["Morom"] = "bdo", ["Moronene"] = "mqn", ["Morori"] = "mok", ["Morouas"] = "mrp", ["Mortlockese"] = "mrl", ["Moru"] = "mgd", ["Mosimo"] = "mqv", ["Moskona"] = "mtj", ["Mota"] = "mtt", ["Motembo"] = "tmv", ["Motu"] = "meu", ["Mouk-Aria"] = "mwh", ["Mount Iraya Agta"] = "atl", ["Mount Iriga Agta"] = "agz", ["Mountain Koiari"] = "kpx", ["Mouwase"] = "jmw", ["Movima"] = "mzp", ["Moyadan Itneg"] = "ity", ["Moyon Naga"] = "nmo", ["Mozambican Sign Language"] = "mzy", ["Mozarabic"] = "mxi", ["Mpade"] = "mpi", ["Mpalitjanh"] = "xpj", ["Mpi"] = "mpz", ["Mpiemo"] = "mcx", ["Mpiin"] = "bnt-mpi", ["Mpinda"] = "pnd", ["Mpongmpong"] = "mgg", ["Mpoto"] = "mpa", ["Mpotovoro"] = "mvt", ["Mpuono"] = "bnt-mpu", ["Mpur"] = "akc", ["Mro Chin"] = "cmr", ["Mru"] = "mro", ["Mser"] = "kqx", ["Muak Sa-aak"] = "ukk", ["Mualang"] = "mtd", ["Mubami"] = "tsx", ["Mubi"] = "mub", ["Mucuchí"] = "sai-muc", ["Muda"] = "ymd", ["Mudburra"] = "dmw", ["Mudu Koraga"] = "vmd", ["Muduapa"] = "wiv", ["Muduga"] = "udg", ["Muellama"] = "sai-mue", ["Mufian"] = "aoj", ["Muher"] = "sem-mhr", ["Muinane"] = "bmr", ["Mukha-Dora"] = "mmk", ["Mukulu"] = "moz", ["Mulaha"] = "mfw", ["Mulam"] = "mlm", ["Mulao"] = "giu", ["Mullu Kurumba"] = "kpb", ["Mullukmulluk"] = "mpb", ["Muluridyi"] = "vmu", ["Mum"] = "kqa", ["Mumuye"] = "mzm", ["Muna"] = "mnb", ["Munda"] = "unx", ["Mundabli"] = "boe", ["Mundang"] = "mua", ["Mundani"] = "mnf", ["Mundari"] = "unr", ["Mundat"] = "mmf", ["Mundolinco"] = "art-mun", ["Mundurukú"] = "myu", ["Mungaka"] = "mhk", ["Mungbam"] = "mij", ["Munggui"] = "mth", ["Mungkip"] = "mpv", ["Muniche"] = "myr", ["Munit"] = "mtc", ["Munji"] = "mnj", ["Munsee"] = "umu", ["Mur Pano"] = "tkv", ["Muratayak"] = "asx", ["Murik (Malaysia)"] = "mxr", ["Murik (New Guinea)"] = "mtf", ["Murkim"] = "rmh", ["Murle"] = "mur", ["Murrinh-Patha"] = "mwf", ["Mursi"] = "muz", ["Murui Huitoto"] = "huu", ["Murupi"] = "mqw", ["Muruwari"] = "zmu", ["Musan"] = "mmp", ["Musar"] = "mmi", ["Musasa"] = "smm", ["Musey"] = "mse", ["Musgu"] = "mug", ["Muskum"] = "mje", ["Musom"] = "msu", ["Mussau-Emira"] = "emi", ["Muthuvan"] = "muv", ["Mutu"] = "tuc", ["Muya"] = "mvm", ["Muyang"] = "muy", ["Muyuw"] = "myw", ["Muzi"] = "ymz", ["Muzo"] = "sai-muz", ["Mvanip"] = "mcj", ["Mvuba"] = "mxh", ["Mwaghavul"] = "sur", ["Mwali Comorian"] = "wlc", ["Mwan"] = "moa", ["Mwatebu"] = "mwa", ["Mwera"] = "mwe", ["Mwerlap"] = "mrm", ["Mwimbi-Muthambi"] = "mws", ["Mwotlap"] = "mlv", ["Myene"] = "mye", ["Mysian"] = "yms", ["Mzieme Naga"] = "nme", ["Mághdì"] = "gmd", ["Mün Chin"] = "mwq", ["Mündü"] = "muh", ["N'Ko"] = "nqo", ["Na"] = "nbt", ["Naaba"] = "nao", ["Naba"] = "mne", ["Nabak"] = "naf", ["Nabi"] = "mty", ["Nachering"] = "ncd", ["Nadruvian"] = "ndf", ["Nadëb"] = "mbj", ["Nafaanra"] = "nfr", ["Nafi"] = "srf", ["Nafri"] = "nxx", ["Naga Pidgin"] = "nag", ["Nagarchal"] = "nbg", ["Nage"] = "nxe", ["Nagtipunan Agta"] = "phi-nag", ["Nagu"] = "ngr", ["Nagumi"] = "ngv", ["Nahali"] = "nlx", ["Nahari"] = "nhh", ["Nahavaq"] = "sns", ["Nai"] = "bio", ["Najdi Arabic"] = "ars", ["Naka'ela"] = "nae", ["Nakai"] = "nkj", ["Nakame"] = "nib", ["Nakanai"] = "nak", ["Nakara"] = "nck", ["Nake"] = "nbk", ["Naki"] = "mff", ["Nakwi"] = "nax", ["Nalca"] = "nlc", ["Nali"] = "nss", ["Nalik"] = "nal", ["Nalu"] = "naj", ["Nalögo"] = "nlz", ["Namakura"] = "nmk", ["Namat"] = "nkm", ["Nambikwara"] = "nab", ["Nambo"] = "ncm", ["Nambya"] = "nmq", ["Namia"] = "nnm", ["Namiae"] = "nvm", ["Namibian Sign Language"] = "nbs", ["Namla"] = "naa", ["Namo"] = "mxw", ["Namonuito"] = "nmt", ["Namosi-Naitasiri-Serua"] = "bwb", ["Namuyi"] = "nmy", ["Nanai"] = "gld", ["Nancere"] = "nnc", ["Nande"] = "nnb", ["Nandi"] = "niq", ["Nanerigé Sénoufo"] = "sen", ["Nanga Dama Dogon"] = "nzz", ["Nankina"] = "nnk", ["Nanti"] = "cox", ["Nanticoke"] = "nnt", ["Nanubae"] = "afk", ["Naolan"] = "nai-nao", ["Napu"] = "npy", ["Nar Phu"] = "npa", ["Nara"] = "nrb", ["Narak"] = "nac", ["Narango"] = "nrg", ["Narim"] = "loh", ["Naro"] = "nhr", ["Narom"] = "nrm", ["Narragansett"] = "xnt", ["Narua"] = "nru", ["Narungga"] = "nnr", ["Naruo"] = "ylo", ["Nasal"] = "nsy", ["Nasarian"] = "nvh", ["Nasioi"] = "nas", ["Naskapi"] = "nsk", ["Nasu"] = "ywq", ["Natagaimas"] = "nts", ["Natchez"] = "ncz", ["Nateni"] = "ntm", ["Natioro"] = "nti", ["Natú"] = "sai-nat", ["Natügu"] = "ntu", ["Nauete"] = "nxa", ["Naukanski"] = "ynk", ["Nauna"] = "ncn", ["Nauo"] = "nwo", ["Navut"] = "nsw", ["Nawaru"] = "nwr", ["Nawathinehena"] = "nwa", ["Nawdm"] = "nmz", ["Nawuri"] = "naw", ["Naxi"] = "nxq", ["Nayi"] = "noz", ["Naʼvi"] = "art-nav", ["Ncane"] = "ncr", ["Nchumbulu"] = "nlu", ["Nda'nda'"] = "nnz", ["Ndai"] = "gke", ["Ndaka"] = "ndk", ["Ndali"] = "ndh", ["Ndam"] = "ndm", ["Ndamba"] = "ndj", ["Ndambomo"] = "nxo", ["Ndasa"] = "nda", ["Ndau"] = "ndc", ["Nde-Gbite"] = "ned", ["Nde-Nsele-Nta"] = "ndd", ["Ndemli"] = "nml", ["Ndendeule"] = "dne", ["Ndengereko"] = "ndg", ["Nding"] = "eli", ["Ndjébbana"] = "djj", ["Ndo"] = "ndp", ["Ndobo"] = "ndw", ["Ndoe"] = "nbb", ["Ndogo"] = "ndz", ["Ndolo"] = "ndl", ["Ndom"] = "nqm", ["Ndombe"] = "ndq", ["Ndonga"] = "ng", ["Ndoola"] = "ndr", ["Ndrulo"] = "dno", ["Nduga"] = "ndx", ["Ndumu"] = "nmd", ["Ndunda"] = "nuh", ["Ndunga"] = "ndt", ["Ndut"] = "ndv", ["Ndyuka-Trio Pidgin"] = "njt", ["Ndzwani Comorian"] = "wni", ["Nedebang"] = "nec", ["Nefamese"] = "nef", ["Nefusa"] = "jbn", ["Negeri Sembilan Malay"] = "zmi", ["Negidal"] = "neg", ["Nehan"] = "nsn", ["Nek"] = "nif", ["Nekgini"] = "nkg", ["Neko"] = "nej", ["Neku"] = "nek", ["Neme"] = "nex", ["Nemi"] = "nem", ["Nen"] = "nqn", ["Nend"] = "anh", ["Nengone"] = "nen", ["Neo"] = "neu", ["Nepali Kurux"] = "kxl", ["Nete"] = "net", ["Neve'ei"] = "vnm", ["Neverver"] = "lgk", ["New River Shasta"] = "nai-nrs", ["New Zealand Sign Language"] = "nzs", ["Neyo"] = "ney", ["Nez Perce"] = "nez", ["Nga La"] = "hlt", ["Ngaanyatjarra"] = "ntj", ["Ngadha"] = "nxg", ["Ngadjunmaya"] = "nju", ["Ngadjuri"] = "jui", ["Ngaing"] = "nnf", ["Ngaju"] = "nij", ["Ngala"] = "nud", ["Ngalakan"] = "nig", ["Ngalkbun"] = "ngk", ["Ngalum"] = "szb", ["Ngam"] = "nmc", ["Ngamambo"] = "nbv", ["Ngambay"] = "sba", ["Ngamini"] = "nmv", ["Ngamo"] = "nbh", ["Ngan'gityemerri"] = "nam", ["Nganakarti"] = "xnk", ["Nganasan"] = "nio", ["Ngandi"] = "nid", ["Ngando (Central African Republic)"] = "ngd", ["Ngando (Congo)"] = "nxd", ["Ngandyera"] = "nne", ["Ngangam"] = "gng", ["Ngantangarra"] = "ntg", ["Nganyaywana"] = "nyx", ["Ngardi"] = "rxd", ["Ngarigu"] = "xni", ["Ngarinman"] = "nbj", ["Ngarinyin"] = "ung", ["Ngarla"] = "nrk", ["Ngarluma"] = "nrl", ["Ngarrindjeri"] = "nay", ["Ngas"] = "anc", ["Ngasa"] = "nsg", ["Ngatik Men's Creole"] = "ngm", ["Ngawn Chin"] = "cnw", ["Ngawun"] = "nxn", ["Ngazidja Comorian"] = "zdj", ["Ngbaka"] = "nga", ["Ngbaka Ma'bo"] = "nbm", ["Ngbaka Manza"] = "ngg", ["Ngbee"] = "jgb", ["Ngbinda"] = "nbd", ["Ngbundu"] = "nuu", ["Ngelima"] = "agh", ["Ngemba"] = "nge", ["Ngen of Djonkro"] = "gnj", ["Ngendelengo"] = "nql", ["Ngeq"] = "ngt", ["Ngete"] = "nnn", ["Nggem"] = "nbq", ["Nggwahyi"] = "ngx", ["Ngie"] = "ngj", ["Ngiemboon"] = "nnh", ["Ngile"] = "jle", ["Ngindo"] = "nnq", ["Ngiti"] = "niy", ["Ngiyambaa"] = "wyb", ["Ngizim"] = "ngi", ["Ngkoth"] = "aus-ngk", ["Ngkâlmpw Kanum"] = "kcd", ["Ngochang"] = "tbq-ngo", ["Ngom"] = "nra", ["Ngomba"] = "jgo", ["Ngombale"] = "nla", ["Ngombe (Central African Republic)"] = "nmj", ["Ngombe (Congo)"] = "ngc", ["Ngong"] = "nnx", ["Ngongo"] = "noq", ["Ngoni"] = "ngo", ["Ngoreme"] = "ngq", ["Ngoshie"] = "nsh", ["Ngul"] = "nlo", ["Ngulu"] = "ngp", ["Nguluwan"] = "nuw", ["Ngumbi"] = "nui", ["Ngunawal"] = "xul", ["Ngundi"] = "ndn", ["Ngundu"] = "nue", ["Ngungwel"] = "ngz", ["Ngurmbur"] = "nrx", ["Ngwaba"] = "ngw", ["Ngwe"] = "nwe", ["Ngwo"] = "ngn", ["Ngäbere"] = "gym", ["Nhanda"] = "nha", ["Nheengatu"] = "yrl", ["Nhirrpi"] = "hrp", ["Nhuwala"] = "nhf", ["Nias"] = "nia", ["Nicaraguan Creole"] = "bzk", ["Nicaraguan Sign Language"] = "ncs", ["Nicola"] = "ath-nic", ["Niellim"] = "nie", ["Nigeria Mambila"] = "mzk", ["Nigerian Pidgin"] = "pcm", ["Nigerian Sign Language"] = "nsi", ["Nihali"] = "nll", ["Nii"] = "nii", ["Niksek"] = "gbe", ["Nila"] = "nil", ["Nilamba"] = "nim", ["Nimadi"] = "noe", ["Nimanbur"] = "nmp", ["Nimbari"] = "nmr", ["Nimboran"] = "nir", ["Nimi"] = "nis", ["Nimo"] = "niw", ["Nimoa"] = "nmw", ["Ninam"] = "shb", ["Nindi"] = "nxi", ["Ningera"] = "nby", ["Ninggerum"] = "nxr", ["Ningil"] = "niz", ["Ninia Yali"] = "nlk", ["Ninzo"] = "nin", ["Nipsan"] = "nps", ["Nisa"] = "njs", ["Nisenan"] = "nsz", ["Nisga'a"] = "ncg", ["Nisi"] = "yso", ["Niuafo'ou"] = "num", ["Niuatoputapu"] = "nkp", ["Nivaclé"] = "cag", ["Nivkh"] = "niv", ["Niwer Mil"] = "hrc", ["Niya Prakrit"] = "pra-niy", ["Njalgulgule"] = "njl", ["Njebi"] = "nzb", ["Njen"] = "njj", ["Njerep"] = "njr", ["Njyem"] = "njy", ["Nkami"] = "nkq", ["Nkangala"] = "nkn", ["Nkari"] = "nkz", ["Nkem-Nkum"] = "isi", ["Nkhumbi"] = "khu", ["Nkongho"] = "nkc", ["Nkonya"] = "nko", ["Nkoroo"] = "nkx", ["Nkoya"] = "nka", ["Nkukoli"] = "nbo", ["Nkutu"] = "nkw", ["Nnam"] = "nbp", ["Noakhali"] = "oak", ["Nobiin"] = "fia", ["Nobonob"] = "gaw", ["Nocamán"] = "nom", ["Nocte"] = "njb", ["Nogai"] = "nog", ["Noiri"] = "noi", ["Nokuku"] = "nkk", ["Nomaande"] = "lem", ["Nomane"] = "nof", ["Nomatsiguenga"] = "not", ["Nomlaki"] = "nol", ["Nomu"] = "noh", ["Nonuya"] = "noj", ["Nooksack"] = "nok", ["Noon"] = "snf", ["Noone"] = "nhu", ["Nootka"] = "nuk", ["Nopala Chatino"] = "cya", ["Noric"] = "nrc", ["Norn"] = "nrn", ["Norra"] = "nrr", ["North Ambrym"] = "mmg", ["North Asmat"] = "nks", ["North Awyu"] = "yir", ["North Babar"] = "bcd", ["North Boma"] = "boh", ["North Central Mixe"] = "neq", ["North Efate"] = "llp", ["North Fali"] = "fll", ["North Giziga"] = "gis", ["North Levantine Arabic"] = "apc", ["North Marquesan"] = "mrq", ["North Mofu"] = "mfk", ["North Moluccan Malay"] = "max", ["North Muyu"] = "kti", ["North Nuaulu"] = "nni", ["North Picene"] = "nrp", ["North Slavey"] = "scs", ["North Tairora"] = "tbg", ["North Tanna"] = "tnn", ["North Wahgi"] = "whg", ["North Watut"] = "una", ["Northeast Kiwai"] = "kiw", ["Northeast Maidu"] = "nmu", ["Northeast Malakula"] = "upv", ["Northeast Pashayi"] = "aee", ["Northeastern Dinka"] = "dip", ["Northeastern Pomo"] = "pef", ["Northern Alta"] = "aqn", ["Northern Bontoc"] = "rbk", ["Northern Catanduanes Bicolano"] = "cts", ["Northern Dagara"] = "dgi", ["Northern East Cree"] = "crl", ["Northern Emberá"] = "emp", ["Northern Ghale"] = "ghh", ["Northern Grebo"] = "gbo", ["Northern Guiyang Hmong"] = "huj", ["Northern Haida"] = "hdn", ["Northern Hindko"] = "hno", ["Northern Huishui Hmong"] = "hmi", ["Northern Kalapuya"] = "nrt", ["Northern Khanty"] = "kca-nor", ["Northern Kissi"] = "kqs", ["Northern Lorung"] = "lbr", ["Northern Luri"] = "lrc", ["Northern Mansi"] = "mns-nor", ["Northern Mashan Hmong"] = "hmp", ["Northern Muji"] = "ymx", ["Northern Ndebele"] = "nd", ["Northern Ngbandi"] = "ngb", ["Northern Nisu"] = "yiv", ["Northern Nuni"] = "nuv", ["Northern Oaxaca Nahuatl"] = "nhy", ["Northern Ohlone"] = "cst", ["Northern One"] = "onr", ["Northern Paiute"] = "pao", ["Northern Pame"] = "pmq", ["Northern Pomo"] = "pej", ["Northern Puebla Nahuatl"] = "ncj", ["Northern Pumi"] = "pmi", ["Northern Qiandong Miao"] = "hea", ["Northern Qiang"] = "cng", ["Northern Rengma Naga"] = "nnl", ["Northern Roglai"] = "rog", ["Northern Saharan Berber"] = "mzb", ["Northern Selkup"] = "sel-nor", ["Northern Sierra Miwok"] = "nsq", ["Northern Subanen"] = "stb", ["Northern Tarahumara"] = "thh", ["Northern Tepehuan"] = "ntp", ["Northern Tidung"] = "ntd", ["Northern Tlaxiaco Mixtec"] = "xtn", ["Northern Toussian"] = "tsp", ["Northern Tujia"] = "tji", ["Northern Tutchone"] = "ttm", ["Northern Valley Yokuts"] = "yok-nvy", ["Northern Yukaghir"] = "ykg", ["Northwest Gbaya"] = "gya", ["Northwest Maidu"] = "mjd", ["Northwest Oaxaca Mixtec"] = "mxa", ["Northwest Pashayi"] = "glh", ["Northwestern Dinka"] = "diw", ["Northwestern Fars"] = "faz", ["Northwestern Ojibwa"] = "ojb", ["Northwestern Tamang"] = "tmk", ["Norwegian Sign Language"] = "nsl", ["Notre"] = "bly", ["Notsi"] = "ncf", ["Nottoway"] = "ntw", ["Nottoway-Meherrin"] = "nwy", ["Noy"] = "noy", ["Nsari"] = "asj", ["Nsenga"] = "nse", ["Nshi"] = "nsc", ["Nsong"] = "soo", ["Nsongo"] = "nsx", ["Ntcham"] = "bud", ["Ntomba"] = "nto", ["Ntra'ngith"] = "dgt", ["Nubaca"] = "baf", ["Nubi"] = "kcn", ["Nuer"] = "nus", ["Nuguria"] = "nur", ["Nuk"] = "noc", ["Nukak Makú"] = "mbr", ["Nukna"] = "klt", ["Nukuini"] = "nuc", ["Nukumanu"] = "nuq", ["Nukunu"] = "nnv", ["Nukunul"] = "xnu", ["Nukuoro"] = "nkr", ["Numana"] = "nbr", ["Numanggang"] = "nop", ["Numbami"] = "sij", ["Nume"] = "tgs", ["Numidian"] = "nxm", ["Numèè"] = "kdk", ["Nungali"] = "nug", ["Nunggubuyu"] = "nuy", ["Nungon"] = "paa-nun", ["Nungu"] = "rin", ["Nupbikha"] = "npb", ["Nupe"] = "nup", ["Nusa Laut"] = "nul", ["Nusu"] = "nuf", ["Nutabe"] = "cba-nut", ["Nyabwa"] = "nwb", ["Nyagrong Minyag"] = "ero-nya", ["Nyaheun"] = "nev", ["Nyakyusa"] = "nyy", ["Nyali"] = "nlj", ["Nyam"] = "nmi", ["Nyamal"] = "nly", ["Nyambo"] = "now", ["Nyamusa-Molo"] = "nwm", ["Nyamwanga"] = "mwn", ["Nyamwezi"] = "nym", ["Nyaneka"] = "nyk", ["Nyang'i"] = "nyp", ["Nyanga (Congo)"] = "nyj", ["Nyanga (Togo)"] = "ayg", ["Nyanga-li"] = "nyc", ["Nyangatom"] = "nnj", ["Nyangbo"] = "nyb", ["Nyangga"] = "nny", ["Nyangumarta"] = "nna", ["Nyankole"] = "nyn", ["Nyarafolo Senoufo"] = "sev", ["Nyaturu"] = "rim", ["Nyawaygi"] = "nyt", ["Nyelâyu"] = "yly", ["Nyemba"] = "nba", ["Nyengo"] = "nye", ["Nyenkha"] = "neh", ["Nyeu"] = "nyl", ["Nyigina"] = "nyh", ["Nyiha"] = "nih", ["Nyika"] = "nkt", ["Nyimang"] = "nyi", ["Nyindrou"] = "lid", ["Nyindu"] = "nyg", ["Nyishi"] = "njz", ["Nyiyaparli"] = "xny", ["Nyokon"] = "nvo", ["Nyole (Kenya)"] = "nyd", ["Nyole (Uganda)"] = "nuj", ["Nyong"] = "muo", ["Nyoro"] = "nyo", ["Nyulnyul"] = "nyv", ["Nyunga"] = "nys", ["Nyungwe"] = "nyu", ["Nzadi"] = "nzd", ["Nzakambay"] = "nzy", ["Nzakara"] = "nzk", ["Nzanyi"] = "nja", ["Nzima"] = "nzi", ["Ná-Meo"] = "neo", ["Nüpode Huitoto"] = "hux", ["Nǀuu"] = "ngh", ["O'chi'chi'"] = "xoc", ["O'du"] = "tyh", ["O'odham"] = "ood", ["Obanliku"] = "bzy", ["Obispeño"] = "obi", ["Oblo"] = "obl", ["Obo Manobo"] = "obo", ["Obokuitai"] = "afz", ["Obolo"] = "ann", ["Obulom"] = "obu", ["Ocaina"] = "oca", ["Ocotepec Mixtec"] = "mie", ["Ocotlán Zapotec"] = "zac", ["Od"] = "odk", ["Odiai"] = "bhf", ["Odoodee"] = "kkc", ["Odual"] = "odu", ["Odut"] = "oda", ["Ofayé"] = "opy", ["Ofo"] = "ofo", ["Ogbah"] = "ogc", ["Ogbia"] = "ogb", ["Ogbogolo"] = "ogg", ["Ogbronuagum"] = "ogu", ["Ogea"] = "eri", ["Oirata"] = "oia", ["Ojitlán Chinantec"] = "chj", ["Okanagan"] = "oka", ["Okiek"] = "oki", ["Oko-Eni-Osayen"] = "oks", ["Oko-Juwoi"] = "okj", ["Okobo"] = "okb", ["Okodia"] = "okd", ["Okolod"] = "kqv", ["Okpamheri"] = "opa", ["Okpe (Northwestern Edo)"] = "okx", ["Okpe (Southwestern Edo)"] = "oke", ["Okpela"] = "atg", ["Oksapmin"] = "opm", ["Oku"] = "oku", ["Okwanuchu"] = "nai-okw", ["Old Awadhi"] = "inc-oaw", ["Old Gutnish"] = "gmq-ogt", ["Old Kannada"] = "dra-okn", ["Old Kentish Sign Language"] = "okl", ["Old Komi"] = "urj-koo", ["Old Median"] = "xme-old", ["Old Navarro-Aragonese"] = "roa-ona", ["Old Novgorodian"] = "zle-ono", ["Old Prussian"] = "prg", ["รูซินเก่า"] = "zle-ort", ["Old South Arabian"] = "sem-srb", ["Old Sundanese"] = "osn", ["Old Tati"] = "xme-ott", ["Old Telugu"] = "dra-ote", ["Olekha"] = "ole", ["Ollari"] = "gdb", ["Olo"] = "ong", ["Oloma"] = "olm", ["Olrat"] = "olr", ["Olu'bo"] = "lul", ["Olukumi"] = "ulb", ["Olulumo-Ikom"] = "iko", ["Oluta Popoluca"] = "plo", ["Olutsotso"] = "lto", ["Omagua"] = "omg", ["Omaha-Ponca"] = "oma", ["Omba"] = "omb", ["Ombamba"] = "mbm", ["Ombo"] = "oml", ["Ometepec Nahuatl"] = "nht", ["Omi"] = "omi", ["Omok"] = "omk", ["Omotik"] = "omt", ["Omurano"] = "omu", ["Oneida"] = "one", ["Ong"] = "oog", ["Ongota"] = "bxe", ["Onin"] = "oni", ["Onjob"] = "onj", ["Ono"] = "ons", ["Onobasulu"] = "onn", ["Onondaga"] = "ono", ["Ontenu"] = "ont", ["Ontong Java"] = "ojv", ["Oorlams"] = "oor", ["Opao"] = "opo", ["Opata"] = "opt", ["Opuuo"] = "lgn", ["Opón"] = "sai-opo", ["Oraon Sadri"] = "sdr", ["Orejón"] = "ore", ["Oring"] = "org", ["Orizaba Nahuatl"] = "nlv", ["Orléanais"] = "roa-orl", ["Ormu"] = "orz", ["Ormuri"] = "oru", ["Oro"] = "orx", ["Oro Win"] = "orw", ["Oroch"] = "oac", ["Oroha"] = "ora", ["Orok"] = "oaa", ["Orokaiva"] = "okv", ["Oroko"] = "bdu", ["Orokolo"] = "oro", ["Oroqen"] = "orh", ["Orowe"] = "bpk", ["Oruma"] = "orr", ["Orya"] = "ury", ["Osage"] = "osa", ["Osamayi"] = "syx", ["Osatu"] = "ost", ["Oscan"] = "osc", ["Ososo"] = "oso", ["Ot Danum"] = "otd", ["Otank"] = "uta", ["Oti"] = "oti", ["Otomaco"] = "sai-oto", ["Otoro"] = "otr", ["Ottawa"] = "otw", ["Otuke"] = "otu", ["Ouma"] = "oum", ["Oune"] = "oue", ["Owa"] = "stn", ["Owenia"] = "wsr", ["Owiniga"] = "owi", ["Oy"] = "oyb", ["Oya'oya"] = "oyy", ["Oyda"] = "oyd", ["Ozolotepec Zapotec"] = "zao", ["Ozumacín Chinantec"] = "chz", ["Pa"] = "ppt", ["Pa Di"] = "pdi", ["Pa'a"] = "pqa", ["Pa-Hng"] = "pha", ["Paamese"] = "pma", ["Paasaal"] = "sig", ["Pacahuara"] = "pcp", ["Padoe"] = "pdo", ["Paelignian"] = "pgn", ["Paeonian"] = "ine-pae", ["Pagi"] = "pgi", ["Pagibete"] = "pae", ["Pagu"] = "pgu", ["Pahanan Agta"] = "apf", ["Pahari-Potwari"] = "phr", ["Pahi"] = "lgt", ["Pahlavani"] = "phv", ["Pai Tavytera"] = "pta", ["Paicî"] = "pri", ["Paikoneka"] = "awd-pai", ["Paipai"] = "ppi", ["Paite"] = "pck", ["Pajapan Nahuatl"] = "nhp", ["Pak-Tong"] = "pkg", ["Pakanha"] = "pkn", ["Pakistan Sign Language"] = "pks", ["Paku"] = "pku", ["Paku Karen"] = "jkp", ["Pal"] = "abw", ["Palaic"] = "plq", ["Palaka Senoufo"] = "plr", ["Palantla Chinantec"] = "cpa", ["Palawan Batak"] = "bya", ["Paleni"] = "pnl", ["Palenquero"] = "pln", ["Palewyami Yokuts"] = "yok-ply", ["Palikur"] = "plu", ["Paliyan"] = "pcf", ["Pallanganmiddang"] = "pmd", ["Palor"] = "fap", ["Palta"] = "sai-pal", ["Palu'e"] = "ple", ["Paluan"] = "plz", ["Palula"] = "phl", ["Palya Bareli"] = "bpx", ["Pam"] = "pmn", ["Pambia"] = "pmb", ["Pamigua"] = "sai-pam", ["Pamlico"] = "pmk", ["Pamona"] = "pmf", ["Pamosu"] = "hih", ["Pamplona Atta"] = "att", ["Pana (Central Africa)"] = "pnz", ["Pana (West Africa)"] = "pnq", ["Panamanian Sign Language"] = "lsp", ["Panamint"] = "par", ["Panare"] = "pbh", ["Panará"] = "kre", ["Panasuan"] = "psn", ["Panawa"] = "pwb", ["Pancana"] = "pnp", ["Panchpargania"] = "tdb", ["Pande"] = "bkj", ["Pangasinan"] = "pag", ["Pangseng"] = "pgs", ["Pangwa"] = "pbr", ["Panim"] = "pnr", ["Paniya"] = "pcg", ["Pankararé"] = "pax", ["Pankararú"] = "paz", ["Pankhu"] = "pkh", ["Pannei"] = "pnc", ["Panobo"] = "pno", ["Panyi Bai"] = "bfc", ["Panyjima"] = "pnw", ["Panzaleo"] = "sai-pnz", ["Pao"] = "ppa", ["Papantla Totonac"] = "top", ["Papapana"] = "ppn", ["Papar"] = "dpp", ["Papasena"] = "pas", ["Papel"] = "pbo", ["Papi"] = "ppe", ["Papora"] = "ppu", ["Papua New Guinean Sign Language"] = "pgz", ["Papuan Malay"] = "pmy", ["Papuma"] = "ppm", ["Para Naga"] = "pzn", ["Parachi"] = "prc", ["Paraguayan Sign Language"] = "pys", ["Parakanã"] = "pak", ["Paranan"] = "prf", ["Paranawát"] = "paf", ["Paratió"] = "sai-par", ["Paraujano"] = "pbg", ["Parauk"] = "prk", ["Parawen"] = "prw", ["Pardhan"] = "pch", ["Pardhi"] = "pcl", ["Pare"] = "asa", ["Pareci"] = "pab", ["Paredarerme"] = "xpd", ["Parenga"] = "pcj", ["Parkari Koli"] = "kvx", ["พาร์เทีย"] = "xpr", ["Parya"] = "paq", ["Pará Gavião"] = "gvp", ["Pasi"] = "psq", ["Pass Valley Yali"] = "yac", ["Pasé"] = "awd-pas", ["Patagón"] = "sai-ptg", ["Patamona"] = "pbc", ["Patani"] = "ptn", ["Pataxó Hã-Ha-Hãe"] = "pth", ["Patep"] = "ptp", ["Pathiya"] = "pty", ["Patpatar"] = "gfk", ["Pattani"] = "lae", ["Pattapu"] = "ptq", ["Patwin"] = "pwi", ["Paulohi"] = "plh", ["Paumarí"] = "pad", ["Paunaka"] = "pnk", ["Pauri Bareli"] = "bfb", ["Pauserna"] = "psm", ["Pawaia"] = "pwa", ["Pawnee"] = "paw", ["Payaguá"] = "sai-pyg", ["Paynamar"] = "pmr", ["Pazeh"] = "pzh", ["Pe"] = "pai", ["Pear"] = "pcb", ["Peba"] = "sai-peb", ["Pech"] = "pay", ["Pecheneg"] = "xpc", ["Peerapper"] = "xpw", ["Peere"] = "pfe", ["Pei"] = "ppq", ["Pekal"] = "pel", ["Pela"] = "bxd", ["Pele-Ata"] = "ata", ["Pemon"] = "aoc", ["Penang Sign Language"] = "psg", ["Penchal"] = "pek", ["Pendau"] = "ums", ["Pengo"] = "peg", ["Penobscot"] = "aaq", ["Penrhyn"] = "pnh", ["Pentlatch"] = "ptw", ["Perai"] = "wet", ["Peranakan Indonesian"] = "pea", ["Perema"] = "wom", ["Pericú"] = "nai-per", ["Pero"] = "pip", ["Persian Sign Language"] = "psc", ["Peruvian Sign Language"] = "prl", ["Petapa Zapotec"] = "zpe", ["Petats"] = "pex", ["Petjo"] = "pey", ["Peñoles Mixtec"] = "mil", ["Phai"] = "prt", ["Phala"] = "ypa", ["Phana'"] = "phq", ["Phangduwali"] = "phw", ["Phende"] = "pem", ["Philippine Sign Language"] = "psp", ["Philistine"] = "mis-phi", ["Phimbi"] = "phm", ["Phola"] = "ypg", ["Pholo"] = "yip", ["Phom"] = "nph", ["Phong-Kniang"] = "pnx", ["Phrygian"] = "xpg", ["Phudagi"] = "phd", ["Phuie"] = "pug", ["Phukha"] = "phh", ["Phuma"] = "ypm", ["Phuong"] = "phg", ["Phupa"] = "ypp", ["Phupha"] = "yph", ["Phuthi"] = "bnt-phu", ["Phuza"] = "ypz", ["Piamatsina"] = "ptr", ["Piame"] = "pin", ["Piapoco"] = "pio", ["Piaroa"] = "pid", ["Pichinglis"] = "fpe", ["Pichis Ashéninka"] = "cpu", ["Pictish"] = "xpi", ["Picuris"] = "nai-pic", ["Pidgin Delaware"] = "dep", ["Pidgin Iha"] = "ihb", ["Pidgin Onin"] = "onx", ["Pijao"] = "pij", ["Pije"] = "piz", ["Pijin"] = "pis", ["Pilagá"] = "plg", ["Pileni"] = "piv", ["Pima Bajo"] = "pia", ["Pimbwe"] = "piw", ["Pinai-Hagahai"] = "pnn", ["Pingelapese"] = "pif", ["Pini"] = "pii", ["Pinigura"] = "pnv", ["Pinjarup"] = "pnj", ["Pinji"] = "pic", ["Pinotepa Nacional Mixtec"] = "mio", ["Pintiini"] = "pti", ["Pintupi-Luritja"] = "piu", ["Pinyin"] = "pny", ["Pirahã"] = "myp", ["Piratapuyo"] = "pir", ["Pirlatapa"] = "bxi", ["Piro"] = "pie", ["Pirriya"] = "xpa", ["Pisabo"] = "pig", ["Pisaflores Tepehua"] = "tpp", ["Piscataway"] = "psy", ["Pisidian"] = "xps", ["Pitcairn-Norfolk"] = "pih", ["Piti"] = "pcn", ["Pitjantjatjara"] = "pjt", ["Pitta-Pitta"] = "pit", ["Piu"] = "pix", ["Piya-Kwonci"] = "piy", ["Plains Apache"] = "apk", ["Plains Cree"] = "crk", ["Plains Indian Sign Language"] = "psd", ["Plains Miwok"] = "pmw", ["Plapo Krumen"] = "ktj", ["Playero"] = "gob", ["Pochuri Naga"] = "npo", ["Pochutec"] = "xpo", ["Podoko"] = "pbi", ["Pogali"] = "hkh", ["Pogolo"] = "poy", ["Pohnpeian"] = "pon", ["Poitevin-Saintongeais"] = "roa-poi", ["Pokangá"] = "pok", ["Poke"] = "pof", ["Pol"] = "pmm", ["Polabian"] = "pox", ["Polci"] = "plj", ["Polish Sign Language"] = "pso", ["Polonombauk"] = "plb", ["Pom"] = "pmo", ["Ponam"] = "ncc", ["Pongu"] = "png", ["Ponosakan"] = "pns", ["Pontic Greek"] = "pnt", ["Ponyo"] = "npg", ["Poqomam"] = "poc", ["Poqomchi'"] = "poh", ["Porohanon"] = "prh", ["Port Sandwich"] = "psw", ["Port Sorell"] = "xpl", ["Port Vato"] = "ptv", ["Portuguese Sign Language"] = "psr", ["Potawatomi"] = "pot", ["Potiguára"] = "pog", ["Poumei Naga"] = "pmx", ["Pouye"] = "bye", ["Powari"] = "pwr", ["Powhatan"] = "pim", ["Poyanáwa"] = "pyn", ["Prasuni"] = "prn", ["Pre-Samnite"] = "itc-psa", ["Primitive Irish"] = "pgl", ["Principense"] = "pre", ["Proto-Abkhaz-Abaza"] = "cau-abz-pro", ["Proto-Amuesha-Chamicuro"] = "awd-amc-pro", ["Proto-Andian"] = "cau-and-pro", ["Proto-Apachean"] = "apa-pro", ["Proto-Arawa"] = "auf-pro", ["Proto-Arawak"] = "awd-pro", ["Proto-Arnhem"] = "aus-arn-pro", ["Proto-Aroid"] = "omv-aro-pro", ["Proto-Aslian"] = "mkh-asl-pro", ["Proto-Atayalic"] = "map-ata-pro", ["Proto-Athabaskan"] = "ath-pro", ["Proto-Avaro-Andian"] = "cau-ava-pro", ["Proto-Bahnaric"] = "mkh-ban-pro", ["Proto-Bai"] = "sit-bai-pro", ["Proto-Batak"] = "btk-pro", ["Proto-Binanderean"] = "paa-bin-pro", ["Proto-Bodish"] = "sit-bdi-pro", ["Proto-Bongo-Bagirmi"] = "csu-bba-pro", ["Proto-Boran"] = "sai-bor-pro", ["Proto-Bua"] = "alv-bua-pro", ["Proto-Bungku-Tolaki"] = "poz-btk-pro", ["Proto-Burmish"] = "tbq-brm-pro", ["Proto-Caddoan"] = "cdd-pro", ["Proto-Cangin"] = "alv-cng-pro", ["Proto-Cariban"] = "sai-car-pro", ["Proto-Central Jê"] = "sai-cje-pro", ["Proto-Central Naga"] = "sit-aao-pro", ["Proto-Central New South Wales"] = "aus-cww-pro", ["Proto-Central Sudanic"] = "csu-pro", ["Proto-Central Togo"] = "alv-gtm-pro", ["Proto-Cerrado"] = "sai-cer-pro", ["Proto-Chatino"] = "omq-cha-pro", ["Proto-Chibchan"] = "cba-pro", ["Proto-Chimakuan"] = "chi-pro", ["Proto-Chinookan"] = "nai-ckn-pro", ["Proto-Chukotko-Kamchatkan"] = "qfa-cka-pro", ["Proto-Chumash"] = "nai-chu-pro", ["Proto-Circassian"] = "cau-cir-pro", ["Proto-Cupan"] = "azc-cup-pro", ["Proto-Cushitic"] = "cus-pro", ["Proto-Daju"] = "sdv-daj-pro", ["Proto-Daly"] = "aus-dal-pro", ["Proto-Dangari"] = "inc-dng-pro", ["Proto-Dargwa"] = "cau-drg-pro", ["Proto-Dizoid"] = "omv-diz-pro", ["Proto-Eastern Jebel"] = "sdv-eje-pro", ["Proto-Eastern Oti-Volta"] = "nic-eov-pro", ["Proto-Edekiri"] = "alv-edk-pro", ["Proto-Edoid"] = "alv-edo-pro", ["Proto-Ersuic"] = "sit-ers-pro", ["Proto-Eskimo-Aleut"] = "esx-pro", ["Proto-Fali"] = "alv-fli-pro", ["Proto-Gbaya"] = "gba-pro", ["Proto-Grassfields"] = "nic-grf-pro", ["Proto-Guang"] = "alv-gng-pro", ["Proto-Gurunsi"] = "nic-gns-pro", ["Proto-Halmahera-Cenderawasih"] = "poz-hce-pro", ["Proto-Heiban"] = "alv-hei-pro", ["Proto-Highland East Cushitic"] = "cus-hec-pro", ["Proto-Hrusish"] = "sit-hrs-pro", ["Proto-Hurro-Urartian"] = "qfa-hur-pro", ["Proto-Idomoid"] = "alv-ido-pro", ["Proto-Igboid"] = "alv-igb-pro", ["Proto-Ijoid"] = "ijo-pro", ["Proto-Iroquoian"] = "iro-pro", ["Proto-Iwaidjan"] = "aus-wdj-pro", ["Proto-Jukunoid"] = "nic-jkn-pro", ["Proto-Jê"] = "sai-jee-pro", ["Proto-Kadu"] = "qfa-kad-pro", ["Proto-Kalapuyan"] = "nai-klp-pro", ["Proto-Kam-Sui"] = "qfa-kms-pro", ["Proto-Kampa"] = "awd-kmp-pro", ["Proto-Kamta"] = "inc-krd-pro", ["Proto-Katuic"] = "mkh-kat-pro", ["Proto-Kham"] = "sit-kha-pro", ["Proto-Khanty"] = "kca-pro", ["Proto-Kho-Bwa"] = "sit-khb-pro", ["Proto-Khoe"] = "khi-kho-pro", ["Proto-Koman"] = "ssa-kom-pro", ["Proto-Komisenian"] = "ira-kms-pro", ["Proto-Kru"] = "kro-pro", ["Proto-Kuki-Chin"] = "tbq-kuk-pro", ["Proto-Kuliak"] = "ssa-klk-pro", ["Proto-Kwa"] = "alv-kwa-pro", ["Proto-Lalo"] = "tbq-lal-pro", ["Proto-Lezghian"] = "cau-lzg-pro", ["Proto-Lower Cross River"] = "nic-lcr-pro", ["Proto-Maidun"] = "nai-mdu-pro", ["Proto-Mande"] = "dmn-pro", ["Proto-Mangbetu"] = "csu-maa-pro", ["Proto-Mansi"] = "mns-pro", ["Proto-Mari"] = "chm-pro", ["Proto-Masa"] = "cdc-mas-pro", ["Proto-Mazatec"] = "omq-maz-pro", ["Proto-Medo-Parthian"] = "ira-mpr-pro", ["Proto-Mixe-Zoque"] = "nai-miz-pro", ["Proto-Mixtec"] = "omq-mxt-pro", ["Proto-Mixtecan"] = "omq-mix-pro", ["Proto-Mordvinic"] = "urj-mdv-pro", ["Proto-Mumuye"] = "alv-mum-pro", ["Proto-Munji-Yidgha"] = "ira-mny-pro", ["Proto-Muskogean"] = "nai-mus-pro", ["Proto-Na-Dene"] = "xnd-pro", ["Proto-Naish"] = "sit-nas-pro", ["Proto-Nawiki"] = "awd-nwk-pro", ["Proto-Nilo-Saharan"] = "ssa-pro", ["Proto-Nilotic"] = "sdv-nil-pro", ["Proto-North Halmahera"] = "paa-nha-pro", ["Proto-North Iroquoian"] = "iro-nor-pro", ["Proto-Northern Jê"] = "sai-nje-pro", ["Proto-Northern Naga"] = "sit-kon-pro", ["Proto-Numic"] = "azc-num-pro", ["Proto-Nupoid"] = "alv-nup-pro", ["Proto-Nuristani"] = "iir-nur-pro", ["Proto-Nyima"] = "sdv-nyi-pro", ["Proto-Nyulnyulan"] = "aus-nyu-pro", ["Proto-Ogoni"] = "nic-ogo-pro", ["Proto-Omotic"] = "omv-pro", ["Proto-Ongan"] = "qfa-ong-pro", ["Proto-Oti-Volta"] = "nic-ovo-pro", ["Proto-Oto-Manguean"] = "omq-pro", ["Proto-Oto-Pamean"] = "omq-otp-pro", ["Proto-Otomi"] = "oto-otm-pro", ["Proto-Otomian"] = "oto-pro", ["Proto-Pakanic"] = "mkh-pkn-pro", ["Proto-Pama-Nyungan"] = "aus-pam-pro", ["Proto-Paresi-Waura"] = "awd-prw-pro", ["Proto-Pearic"] = "mkh-pea-pro", ["Proto-Plateau"] = "nic-plt-pro", ["Proto-Plateau Penutian"] = "nai-plp-pro", ["Proto-Pomo"] = "nai-pom-pro", ["Proto-Puroik"] = "sit-khp-pro", ["Proto-Rukai"] = "dru-pro", ["Proto-Ryukyuan"] = "jpx-ryu-pro", ["Proto-Sabaki"] = "bnt-sab-pro", ["Proto-Saka"] = "xsc-sak-pro", ["Proto-Saka-Wakhi"] = "xsc-skw-pro", ["Proto-Salish"] = "sal-pro", ["Proto-Samoyedic"] = "syd-pro", ["Proto-Sanglechi-Ishkashimi"] = "ira-sgi-pro", ["Proto-Sara"] = "csu-sar-pro", ["Proto-Sarmatian"] = "xsc-sar-pro", ["Proto-Scythian"] = "xsc-pro", ["Proto-Selkup"] = "sel-pro", ["Proto-Shughni-Roshani"] = "ira-shr-pro", ["Proto-Shughni-Yazghulami"] = "ira-shy-pro", ["Proto-Shughni-Yazghulami-Munji"] = "ira-sym-pro", ["Proto-Siouan"] = "sio-pro", ["Proto-Siouan-Catawban"] = "nai-sca-pro", ["Proto-Songhay"] = "son-pro", ["Proto-Sotho-Tswana"] = "bnt-sts-pro", ["Proto-South Cushitic"] = "cus-sou-pro", ["Proto-Southern Jê"] = "sai-sje-pro", ["Proto-Ta-Arawak"] = "awd-taa-pro", ["Proto-Takic"] = "azc-tak-pro", ["Proto-Taman"] = "sdv-tmn-pro", ["Proto-Tamangic"] = "sit-tam-pro", ["Proto-Tangkhulic"] = "sit-tng-pro", ["Proto-Tani"] = "sit-tan-pro", ["Proto-Taranoan"] = "sai-tar-pro", ["Proto-Tatic"] = "xme-ttc-pro", ["Proto-Totozoquean"] = "nai-tot-pro", ["Proto-Trans-New Guinea"] = "ngf-pro", ["Proto-Triqui"] = "omq-tri-pro", ["Proto-Tsezian"] = "cau-tsz-pro", ["Proto-Tsimshianic"] = "nai-tsi-pro", ["Proto-Tungusic"] = "tuw-pro", ["Proto-Ubangian"] = "nic-ubg-pro", ["Proto-Upper Cross River"] = "nic-ucr-pro", ["Proto-Utian"] = "nai-utn-pro", ["Proto-Western Kho-Bwa"] = "sit-khw-pro", ["Proto-Western Mande"] = "dmn-mdw-pro", ["Proto-Witotoan"] = "sai-wit-pro", ["Proto-Yeniseian"] = "qfa-yen-pro", ["Proto-Yukaghir"] = "qfa-yuk-pro", ["Proto-Yupik"] = "ypk-pro", ["Proto-Zapotec"] = "omq-zpc-pro", ["Proto-Zapotecan"] = "omq-zap-pro", ["Proto-Zaza-Gorani"] = "ira-zgr-pro", ["Providencia Sign Language"] = "prz", ["Psikye"] = "kvj", ["Puare"] = "pux", ["Pudtol Atta"] = "atp", ["Puebla Mazatec"] = "pbm", ["Puelche"] = "pue", ["Puerto Rican Sign Language"] = "psl", ["Puimei Naga"] = "npu", ["Puinave"] = "pui", ["Puiron"] = "sit-prn", ["Pulabu"] = "pup", ["Puluwat"] = "puw", ["Puma"] = "pum", ["Pumpokol"] = "xpm", ["Pumé"] = "yae", ["Punan Aput"] = "pud", ["Punan Bah-Biau"] = "pna", ["Punan Batu"] = "pnm", ["Punan Merah"] = "puf", ["Punan Merap"] = "puc", ["Punan Tubu"] = "puj", ["Punic"] = "xpu", ["Punu"] = "puu", ["Puoc"] = "puo", ["Puquina"] = "puq", ["Puragi"] = "pru", ["Purari"] = "iar", ["Purepecha"] = "pua", ["Puri"] = "prr", ["Purik"] = "prx", ["Purisimeño"] = "puy", ["Puroik"] = "suv", ["Puruborá"] = "pur", ["Puruhá"] = "sai-prh", ["Purukotó"] = "sai-pur", ["Purum"] = "pub", ["Putai"] = "mfl", ["Putoh"] = "put", ["Putukwam"] = "afe", ["Puyo-Paekche"] = "xpp", ["Puyuma"] = "pyu", ["Pwaamèi"] = "pme", ["Pwapwâ"] = "pop", ["Pyapun"] = "pcw", ["Pye Krumen"] = "pye", ["Pyemmairre"] = "xpb", ["Pyen"] = "pyy", ["Pykobjê"] = "sai-pyk", ["Pyu (New Guinea)"] = "pby", ["Páez"] = "pbb", ["Pááfang"] = "pfa", ["Päri"] = "lkr", ["Pémono"] = "pev", ["Pévé"] = "lme", ["Pökoot"] = "pko", ["Q'anjob'al"] = "kjb", ["Q'eqchi"] = "kek", ["Qabiao"] = "laq", ["Qaqet"] = "byx", ["Qatabanian"] = "xqt", ["Qau"] = "gqu", ["Qila Muji"] = "ymq", ["Qimant"] = "ahg", ["Quapaw"] = "qua", ["Quebec Sign Language"] = "fcs", ["Querétaro Otomi"] = "otq", ["Quetzaltepec Mixe"] = "pxm", ["Queyu"] = "qvy", ["Quiavicuzas Zapotec"] = "zpj", ["Quileute"] = "qui", ["Quimbaya"] = "sai-qmb", ["Quinault"] = "qun", ["Quinigua"] = "nai-qng", ["Quinqui"] = "quq", ["Quioquitani-Quierí Zapotec"] = "ztq", ["Quiotepec Chinantec"] = "chq", ["Quiripi"] = "qyp", ["Quitemo"] = "sai-qtm", ["Rabha"] = "rah", ["Rabona"] = "sai-rab", ["Rade"] = "rad", ["Raetic"] = "xrr", ["Raga"] = "lml", ["Rahambuu"] = "raz", ["Rajah Kabunsuwan Manobo"] = "mqk", ["Raji"] = "rji", ["Rajong"] = "rjg", ["Rajput Garasia"] = "gra", ["Rakahanga-Manihiki"] = "rkh", ["Ralte"] = "ral", ["Rama"] = "rma", ["Ramandi"] = "tks", ["Ramanos"] = "sai-ram", ["Ramoaaina"] = "rai", ["Ramopa"] = "kjx", ["Rampi"] = "lje", ["Rana Tharu"] = "thr", ["Rang"] = "rax", ["Rangkas"] = "rgk", ["Ranglong"] = "rnl", ["Rao"] = "rao", ["Rapa"] = "ray", ["Rapoisi"] = "kyx", ["Rapting"] = "rpt", ["Rara Bakati'"] = "lra", ["Rasawa"] = "rac", ["Ratagnon"] = "btn", ["Ratahan"] = "rth", ["Rathawi"] = "rtw", ["Rathwi Bareli"] = "bgd", ["Raute"] = "rau", ["Ravula"] = "yea", ["Rawa"] = "rwo", ["Rawat"] = "jnl", ["Rawo"] = "rwa", ["Rayón Zoque"] = "zor", ["Razajerdi"] = "rat", ["Razihi"] = "rzh", ["Reang"] = "ria", ["Red Gelao"] = "gir", ["Reel"] = "atu", ["Rejang"] = "rej", ["Rejang Kayan"] = "ree", ["Reli"] = "rei", ["Rema"] = "bow", ["Rembarunga"] = "rmb", ["Rembong"] = "reb", ["Remo"] = "rem", ["Remontado Agta"] = "agv", ["Rempi"] = "rmp", ["Remun"] = "lkj", ["Rendille"] = "rel", ["Rengao"] = "ren", ["Rennellese"] = "mnv", ["Repanbitip"] = "rpn", ["Rer Bare"] = "rer", ["Rerau"] = "rea", ["Rerep"] = "pgk", ["Reshe"] = "res", ["Resígaro"] = "rgr", ["Retta"] = "ret", ["Reyesano"] = "rey", ["ฟรังโกเนียแบบไรน์"] = "gmw-rfr", ["Riang"] = "ril", ["Riantana"] = "ran", ["Ribun"] = "rir", ["Rigwe"] = "iri", ["Rikbaktsa"] = "rkb", ["Rincón Zapotec"] = "zar", ["Ringgou"] = "rgu", ["Ririo"] = "rri", ["Ritarungo"] = "rit", ["Riung"] = "riu", ["Riverain Sango"] = "snj", ["Rogo"] = "rod", ["Roma"] = "rmm", ["Romam"] = "rmx", ["Romanian Sign Language"] = "rms", ["Romano-Greek"] = "rge", ["Romano-Serbian"] = "rsb", ["Romanova"] = "rmv", ["Romblomanon"] = "rol", ["Rombo"] = "rof", ["Romkun"] = "rmk", ["Ron"] = "cla", ["Ronga"] = "rng", ["Rongga"] = "ror", ["Rongmei Naga"] = "nbu", ["Rongpo"] = "rnp", ["Ronji"] = "roe", ["Roon"] = "rnn", ["Roria"] = "rga", ["Roro"] = "rro", ["Rotokas"] = "roo", ["Rotuman"] = "rtm", ["Rouran"] = "mis-rou", ["Roviana"] = "rug", ["Ruching Palaung"] = "pce", ["Rudbari"] = "rdb", ["Rufiji"] = "rui", ["Ruga"] = "ruh", ["Rukai"] = "dru", ["Rukiga"] = "cgg", ["Ruma"] = "ruz", ["Rumai Palaung"] = "rbb", ["Rumu"] = "klq", ["Runga"] = "rou", ["Rungtu"] = "rtc", ["Rungus"] = "drg", ["Rungwa"] = "rnw", ["Russenorsk"] = "crp-rsn", ["Rutul"] = "rut", ["Ruuli"] = "ruc", ["Ruwund"] = "rnd", ["Rwa"] = "rwk", ["Rwandan Sign Language"] = "rsn", ["Réunion Creole French"] = "rcf", ["Sa"] = "sax", ["Sa'a"] = "apb", ["Sa'ban"] = "snv", ["Saafi-Saafi"] = "sav", ["Saam"] = "raq", ["Saamia"] = "lsm", ["Saanich"] = "str", ["Saare"] = "uss", ["Saaroa"] = "sxr", ["Saba"] = "saa", ["Sabaean"] = "xsa", ["Sabah Bisaya"] = "bsy", ["Sabah Malay"] = "msi", ["Sabanê"] = "sae", ["Sabaot"] = "spy", ["Sabine"] = "sbv", ["Sabir"] = "pml", ["Sabu"] = "hvn", ["Sabüm"] = "sbo", ["Sacapulteco"] = "quv", ["Sadri"] = "sck", ["Saep"] = "spd", ["Safaitic"] = "sem-saf", ["Safaliba"] = "saf", ["Safeyoka"] = "apz", ["Safwa"] = "sbk", ["Sagala"] = "sbm", ["Sagalla"] = "tga", ["Sahaptin"] = "nai-spt", ["Sahu"] = "saj", ["Saisiyat"] = "xsy", ["Sajau Basap"] = "sjb", ["Sakachep"] = "sch", ["Sakam"] = "skm", ["Sakao"] = "sku", ["Sakata"] = "skt", ["Sake"] = "sak", ["Sala"] = "shq", ["Salampasu"] = "slx", ["Salas"] = "sgu", ["Saleman"] = "sau", ["Saliba (Colombia)"] = "slc", ["Saliba (New Guinea)"] = "sbe", ["Salinan"] = "sln", ["Salt-Yui"] = "sll", ["Saluan"] = "loe", ["Salumá"] = "slj", ["Salvadoran Lenca"] = "nai-sln", ["Salvadoran Sign Language"] = "esn", ["Sam"] = "snx", ["Sama"] = "smd", ["Samalian"] = "sem-sam", ["Samaritan Aramaic"] = "sam", ["Samaritan Hebrew"] = "smp", ["Samarokena"] = "tmj", ["Samatao"] = "ysd", ["Samba"] = "smx", ["Sambalpuri"] = "spv", ["Sambe"] = "xab", ["Samberigi"] = "ssx", ["Samburu"] = "saq", ["Samei"] = "smh", ["Samo"] = "smq", ["Samoan Plantation Pidgin"] = "crp-spp", ["Samogitian"] = "sgs", ["Samosa"] = "swm", ["Sampang"] = "rav", ["Samtao"] = "stu", ["Samvedi"] = "smv", ["San Agustín Mixtepec Zapotec"] = "ztm", ["San Baltazar Loxicha Zapotec"] = "zpx", ["San Felipe Otlaltepec Popoloca"] = "pow", ["San Jerónimo Tecóatl Mazatec"] = "maa", ["San Juan Atzingo Popoloca"] = "poe", ["San Juan Colorado Mixtec"] = "mjc", ["San Juan Guelavía Zapotec"] = "zab", ["San Juan Quiahije Chatino"] = "omq-sjq", ["San Juan Teita Mixtec"] = "xtj", ["San Luís Temalacayuca Popoloca"] = "pps", ["San Marcos Tlalcoyalco Popoloca"] = "pls", ["San Martín Itunyoso Triqui"] = "trq", ["San Miguel Creole French"] = "scf", ["San Miguel Piedras Mixtec"] = "xtp", ["San Miguel el Grande Mixtec"] = "mig", ["San Pablo Güilá Zapotec"] = "ztu", ["San Pedro Amuzgos Amuzgo"] = "azg", ["San Pedro Quiatoni Zapotec"] = "zpf", ["San Vicente Coatlán Zapotec"] = "zpt", ["Sanapaná"] = "spn", ["Sanaviron"] = "sai-san", ["Sandawe"] = "sad", ["Sanga (Congo)"] = "sng", ["Sanga (Nigeria)"] = "xsn", ["Sanggau"] = "scg", ["Sangil"] = "snl", ["Sangir"] = "sxn", ["Sangisari"] = "sgr", ["Sangkong"] = "sgk", ["Sanglechi"] = "sgy", ["Sangtam Naga"] = "nsa", ["Sangu (Gabon)"] = "snq", ["Sangu (Tanzania)"] = "sbp", ["Sani"] = "ysn", ["Sanie"] = "ysy", ["Saniyo-Hiyewe"] = "sny", ["Sankaran Maninka"] = "msc", ["Sansi"] = "ssi", ["Santa Catarina Albarradas Zapotec"] = "ztn", ["Santa Inés Ahuatempan Popoloca"] = "pca", ["Santa Inés Yatzechi Zapotec"] = "zpn", ["Santa Lucía Monteverde Mixtec"] = "mdv", ["Santa María La Alta Nahuatl"] = "nhz", ["Santa María Quiegolani Zapotec"] = "zpi", ["Santa María Zacatepec Mixtec"] = "mza", ["Santa Teresa Cora"] = "cok", ["Santiago Xanica Zapotec"] = "zpr", ["Santo Domingo Albarradas Zapotec"] = "zas", ["Sanumá"] = "xsu", ["Sanxiang Min"] = "nan-zsh", ["Saparua"] = "spr", ["Sapará"] = "sai-sap", ["Sapo"] = "krn", ["Saponi"] = "spi", ["Saposa"] = "sps", ["Sapuan"] = "spu", ["Sapé"] = "spc", ["Sar"] = "mwm", ["Sara"] = "sre", ["Sara Kaba"] = "sbz", ["Sara Kaba Deme"] = "kwg", ["Sara Kaba Náà"] = "kwv", ["Saraiki"] = "skr", ["Saramaccan"] = "srm", ["Sarangani Blaan"] = "bps", ["Sarangani Manobo"] = "mbs", ["Sarasira"] = "zsa", ["Saraveca"] = "sar", ["Sarawak Malay"] = "poz-sml", ["Sarikoli"] = "srh", ["Sarli"] = "sdf", ["Sartang"] = "onp", ["Sarua"] = "swy", ["Sarudu"] = "sdu", ["Saruga"] = "sra", ["Sasak"] = "sas", ["Sasaru"] = "sxs", ["Satawalese"] = "stw", ["Sateré-Mawé"] = "mav", ["Sathmar Swabian"] = "gmw-stm", ["Saudi Arabian Sign Language"] = "sdl", ["Saurashtra"] = "saz", ["Sauri"] = "srt", ["Sause"] = "sao", ["Sausi"] = "ssj", ["Savi"] = "sdg", ["Savosavo"] = "svs", ["Sawai"] = "szw", ["Saweru"] = "swr", ["Sawi"] = "saw", ["Sawila"] = "swt", ["Sawriya Paharia"] = "mjt", ["Saxwe Gbe"] = "sxw", ["Saya"] = "say", ["Sayula Popoluca"] = "pos", ["Scanian"] = "gmq-scy", ["Seba"] = "kdg", ["Sebat Bet Gurage"] = "sgw", ["Seberuang"] = "sbx", ["Sebop"] = "sib", ["Sebuyau"] = "snb", ["Sechelt"] = "sec", ["Sechura"] = "sai-sec", ["Secoya"] = "sey", ["Sedang"] = "sed", ["Sedoa"] = "tvw", ["Seenku"] = "sos", ["Segai"] = "sge", ["Segeju"] = "seg", ["Seget"] = "sbg", ["Sehwi"] = "sfw", ["Seim"] = "sim", ["Seimat"] = "ssg", ["Seit-Kaitetu"] = "hik", ["Sekani"] = "sek", ["Sekapan"] = "skp", ["Sekar"] = "skz", ["Seke"] = "skj", ["Sekele"] = "vaj", ["Seki"] = "syi", ["Seko Padang"] = "skx", ["Seko Tengah"] = "sko", ["Sekpele"] = "lip", ["Selangor Sign Language"] = "kgi", ["Selaru"] = "slu", ["Selayar"] = "sly", ["Selee"] = "snw", ["Selepet"] = "spl", ["Selk'nam"] = "ona", ["Selonian"] = "sxl", ["Selungai Murut"] = "slg", ["Seluwasan"] = "sws", ["Sema"] = "nsm", ["Semandang"] = "sdm", ["Semaq Beri"] = "szc", ["Sembakung Murut"] = "sbr", ["Semelai"] = "sza", ["Semigallian"] = "xzm", ["Semimi"] = "etz", ["Semnam"] = "ssm", ["Semnani"] = "smy", ["Sempan"] = "xse", ["Sena"] = "seh", ["Senara Sénoufo"] = "seq", ["Senaya"] = "syn", ["Sene"] = "sej", ["Seneca"] = "see", ["Sengele"] = "szg", ["Senggi"] = "snu", ["Sengo"] = "spk", ["Sengseng"] = "ssz", ["Senhaja de Srair"] = "sjs", ["Sensi"] = "sni", ["Sentani"] = "set", ["Senthang Chin"] = "sez", ["Sentinelese"] = "std", ["Sepa (Indonesia)"] = "spb", ["Sepa (New Guinea)"] = "spe", ["Sepen"] = "spm", ["Sepik Iwam"] = "iws", ["Sepik Mari"] = "mbx", ["Sera"] = "sry", ["Sere"] = "swf", ["Serer"] = "srr", ["Seri"] = "sei", ["Serili"] = "sve", ["Seroa"] = "kqu", ["Serrano"] = "ser", ["Seru"] = "szd", ["Serua"] = "srw", ["Serudung Murut"] = "srk", ["Serui-Laut"] = "seu", ["Seta"] = "stf", ["Setaman"] = "stm", ["Seti"] = "sbi", ["Severn Ojibwa"] = "ojs", ["Sewa Bay"] = "sew", ["Seychellois Creole"] = "crs", ["Seze"] = "sze", ["Sha"] = "scw", ["Shabak"] = "sdb", ["Shabo"] = "sbf", ["Shahmirzadi"] = "srz", ["Shahrudi"] = "shm", ["Shall-Zwall"] = "sha", ["Shama-Sambuga"] = "sqa", ["Shamang"] = "xsh", ["Shambala"] = "ksb", ["Shanenawa"] = "swo", ["Shanga"] = "sho", ["Shangzhai"] = "jih", ["Shaojiang Min"] = "sjc", ["Shaozhou Tuhua"] = "zhx-sht", ["Sharanahua"] = "mcd", ["Shark Bay"] = "ssv", ["Sharwa"] = "swq", ["Shasta"] = "sht", ["Shatt"] = "shj", ["Shau"] = "sqh", ["Shawnee"] = "sjw", ["She"] = "shx", ["Shebayo"] = "awd-she", ["Shehri"] = "shv", ["Shekkacho"] = "moy", ["Sheko"] = "she", ["Shelta"] = "sth", ["Shendu"] = "shl", ["Sheni"] = "scv", ["Sherbro"] = "bun", ["Sherdukpen"] = "sdp", ["Sheshi Kham"] = "kip", ["Shetland"] = "scz", ["Shi"] = "shr", ["Shihhi Arabic"] = "ssh", ["Shiki"] = "gua", ["Shilluk"] = "shk", ["Shina"] = "scl", ["Shinasha"] = "bwo", ["Shipibo-Conibo"] = "shp", ["Shixing"] = "sxg", ["Sholaga"] = "sle", ["Shom Peng"] = "sii", ["Shoo-Minda-Nye"] = "bcv", ["Shoshone"] = "shh", ["Shua"] = "shg", ["Shuar"] = "jiv", ["Shughni"] = "sgh", ["Shumashti"] = "sts", ["Shumcho"] = "scu", ["Shuswap"] = "shs", ["Shuwa-Zamani"] = "ksa", ["Shwai"] = "shw", ["Shwe Palaung"] = "pll", ["Sialum"] = "slw", ["Siamou"] = "sif", ["Sian"] = "spg", ["Siane"] = "snp", ["Siang"] = "sya", ["Siar-Lak"] = "sjr", ["Sibe"] = "nco", ["Siberian Tatar"] = "sty", ["Sibu Melanau"] = "sdx", ["Sicanian"] = "sxc", ["Sicel"] = "scx", ["Siculo-Arabic"] = "sqr", ["Sidetic"] = "xsd", ["Sie"] = "erg", ["Sierra Leone Sign Language"] = "sgx", ["Sierra Negra Nahuatl"] = "nsu", ["Sierra de Juárez Zapotec"] = "zaa", ["Sighu"] = "sxe", ["Sihan"] = "snr", ["Sika"] = "ski", ["Sikaritai"] = "tty", ["Sikiana"] = "sik", ["Sikule"] = "skh", ["Sila"] = "slt", ["Silacayoapan Mixtec"] = "mks", ["Sileibi"] = "sbq", ["Silimo"] = "wul", ["Siliput"] = "mkc", ["Silopi"] = "xsp", ["Silt'e"] = "stv", ["Simaa"] = "sie", ["Simalungun Batak"] = "bts", ["Simba"] = "sbw", ["Simbali"] = "smg", ["Simbari"] = "smb", ["Simbo"] = "sbb", ["Simeku"] = "smz", ["Simeulue"] = "smr", ["Simte"] = "smt", ["Sinacantán"] = "nai-sin", ["Sinagen"] = "siu", ["Sinasina"] = "sst", ["Sinaugoro"] = "snc", ["Sindhi Bhil"] = "sbn", ["Sindihui Mixtec"] = "xts", ["Singa"] = "sgm", ["Singapore Sign Language"] = "sls", ["Singpho"] = "sgp", ["Sinicahua Mixtec"] = "xti", ["Sininkere"] = "skq", ["Sinte Romani"] = "rmo", ["Sinyar"] = "sys", ["Sinúfana"] = "sai-sin", ["Sio"] = "xsi", ["Siona"] = "snn", ["Sipakapense"] = "qum", ["Sira"] = "swj", ["Siraya"] = "fos", ["Sirenik"] = "ysr", ["Siri"] = "sir", ["Siriano"] = "sri", ["Sirionó"] = "srq", ["Sirmauri"] = "srx", ["Siroi"] = "ssd", ["Sisaala"] = "sld", ["Sissano"] = "sso", ["Situ"] = "sit-sit", ["Siuslaw"] = "sis", ["Sivandi"] = "siy", ["Sivia Sign Language"] = "lsv", ["Siwai"] = "siw", ["Siwi"] = "siz", ["Siwu"] = "akp", ["Siyin Chin"] = "csy", ["Skagit"] = "ska", ["Skalvian"] = "svx", ["Ske"] = "ske", ["Skepi Creole Dutch"] = "skw", ["Skolt Sami"] = "sms", ["Skou"] = "skv", ["Slavomolisano"] = "svm", ["Slovakian Sign Language"] = "svk", ["Small Flowery Miao"] = "sfm", ["Smärky Kanum"] = "kxq", ["Snohomish"] = "sno", ["So'a"] = "ssq", ["Sobei"] = "sob", ["Sochiapam Chinantec"] = "cso", ["Soga"] = "xog", ["Sogdian"] = "sog", ["Sok"] = "skk", ["Sokna"] = "swn", ["Soko"] = "soc", ["Sokoro"] = "sok", ["Solano"] = "xso", ["Soli"] = "sby", ["Solombala English"] = "crp-slb", ["Solon"] = "tuw-sol", ["Solong"] = "aaw", ["Solos"] = "sol", ["Som"] = "smc", ["Somba-Siawari"] = "bmu", ["Somra"] = "ntx", ["Somrai"] = "sor", ["Somyev"] = "kgt", ["Sonaga"] = "ysg", ["Sonde"] = "shc", ["Songe"] = "sop", ["Songlai Chin"] = "csj", ["Songomeno"] = "soe", ["Songoora"] = "sod", ["Sonha"] = "soi", ["Sonia"] = "siq", ["Soninke"] = "snk", ["Sonsorolese"] = "sov", ["Soo"] = "teu", ["Sop"] = "urw", ["Soqotri"] = "sqt", ["Sora"] = "srb", ["Sori-Harengan"] = "sbh", ["Sorkhei"] = "sqo", ["Sorothaptic"] = "sxo", ["Sorsogon Ayta"] = "ays", ["Sos Kundi"] = "sdk", ["Sota Kanum"] = "krz", ["Sou"] = "sqq", ["South African Sign Language"] = "sfs", ["South Awyu"] = "aws", ["South Boma"] = "bnt-sbo", ["South Central Banda"] = "lnl", ["South Central Dinka"] = "dib", ["South Efate"] = "erk", ["South Fali"] = "fal", ["South Giziga"] = "giz", ["South Lembata"] = "lmf", ["South Marquesan"] = "mqm", ["South Muyu"] = "kts", ["South Nuaulu"] = "nxl", ["South Picene"] = "spx", ["South Slavey"] = "xsl", ["South Tairora"] = "omw", ["South Ucayali Ashéninka"] = "cpy", ["South Watut"] = "mcy", ["Southeast Ambrym"] = "tvk", ["Southeast Babar"] = "vbb", ["Southeast Ijo"] = "ijs", ["Southeast Pashayi"] = "psi", ["Southeast Tasmanian"] = "xpf", ["Southeastern Dinka"] = "dks", ["Southeastern Ixtlán Zapotec"] = "zpd", ["Southeastern Kolami"] = "nit", ["Southeastern Nochixtlán Mixtec"] = "mxy", ["Southeastern Pomo"] = "pom", ["Southeastern Puebla Nahuatl"] = "npl", ["Southeastern Tarahumara"] = "tcu", ["Southeastern Tepehuan"] = "stp", ["Southern Alta"] = "agy", ["Southern Bai"] = "bfs", ["Southern Birifor"] = "biv", ["Southern Bobo"] = "bwq", ["Southern Bontoc"] = "obk", ["Southern Carrier"] = "caf", ["Southern Catanduanes Bicolano"] = "bln", ["Southern Dagaare"] = "dga", ["Southern East Cree"] = "crj", ["Southern Ghale"] = "ghe", ["Southern Grebo"] = "grj", ["Southern Guiyang Hmong"] = "hmy", ["Southern Haida"] = "hax", ["Southern Hindko"] = "hnd", ["Southern Kalapuya"] = "sxk", ["Southern Kalinga"] = "ksc", ["Southern Khanty"] = "kca-sou", ["Southern Kissi"] = "kss", ["Southern Kiwai"] = "kjd", ["Southern Kurdish"] = "sdh", ["Southern Lolopo"] = "ysp", ["Southern Lorung"] = "lrr", ["Southern Luri"] = "luz", ["Southern Ma'di"] = "snm", ["Southern Mansi"] = "mns-sou", ["Southern Mashan Hmong"] = "hma", ["Southern Muji"] = "ymc", ["Southern Ndebele"] = "nr", ["Southern Ngbandi"] = "nbw", ["Southern Nicobarese"] = "nik", ["Southern Nisu"] = "nsd", ["Southern Nuni"] = "nnw", ["Southern Ohlone"] = "css", ["Southern One"] = "osu", ["Southern Pame"] = "pmz", ["Southern Pomo"] = "peq", ["Southern Puebla Mixtec"] = "mit", ["Southern Puget Sound Salish"] = "slh", ["Southern Pumi"] = "pmj", ["Southern Qiandong Miao"] = "hms", ["Southern Qiang"] = "qxs", ["Southern Rengma Naga"] = "nre", ["Southern Rincon Zapotec"] = "zsr", ["Southern Roglai"] = "rgs", ["Southern Sama"] = "ssb", ["Southern Samo"] = "sbd", ["Southern Selkup"] = "sel-sou", ["Southern Sierra Miwok"] = "skd", ["Southern Tidung"] = "itd", ["Southern Tiwa"] = "tix", ["Southern Toussian"] = "wib", ["Southern Tujia"] = "tjs", ["Southern Tutchone"] = "tce", ["Southern Valley Yokuts"] = "yok-svy", ["Southern Yukaghir"] = "yux", ["Southwest Gbaya"] = "gso", ["Southwest Pashayi"] = "psh", ["Southwest Tanna"] = "nwi", ["Southwestern Bontoc"] = "vbk", ["Southwestern Dinka"] = "dik", ["Southwestern Fars"] = "fay", ["Southwestern Guiyang Hmong"] = "hmg", ["Southwestern Huishui Hmong"] = "hmh", ["Southwestern Nisu"] = "nsv", ["Southwestern Tamang"] = "tsf", ["Southwestern Tarahumara"] = "twr", ["Southwestern Tepehuan"] = "tla", ["Southwestern Tlaxiaco Mixtec"] = "meh", ["Sowa"] = "sww", ["Sowanda"] = "sow", ["Soyaltepec Mazatec"] = "vmp", ["Soyaltepec Mixtec"] = "vmq", ["Spanish Sign Language"] = "ssp", ["Spiti Bhoti"] = "spt", ["Spokane"] = "spo", ["Squamish"] = "squ", ["Sranan Tongo"] = "srn", ["Sri Lankan Creole Malay"] = "sci", ["Sri Lankan Sign Language"] = "sqs", ["Stau"] = "ero-tau", ["Stod Bhoti"] = "sbu", ["Stoney"] = "sto", ["Suabo"] = "szp", ["Suarmin"] = "seo", ["Suau"] = "swp", ["Suba"] = "sxb", ["Suba-Simbiti"] = "ssc", ["Subi"] = "xsj", ["Subiya"] = "sbs", ["Subtiaba"] = "sut", ["Sudest"] = "tgo", ["Suena"] = "sue", ["Suga"] = "sgi", ["Suganga"] = "sug", ["Sugut Dusun"] = "kzs", ["Suki"] = "sui", ["Suku"] = "sub", ["Sukuma"] = "suk", ["Sukur"] = "syk", ["Sukurum"] = "zsu", ["Sula"] = "szn", ["Sulka"] = "sua", ["Sulod"] = "srg", ["Suma"] = "sqm", ["Sumariup"] = "siv", ["Sumau"] = "six", ["Sumbawa"] = "smw", ["Sumbwa"] = "suw", ["Sumtu Chin"] = "csv", ["Sunam"] = "ssk", ["Sungwadaga"] = "mwo", ["Sungwadia"] = "mrb", ["Sunum"] = "ymn", ["Sunwar"] = "suz", ["Suoy"] = "syo", ["Supyire"] = "spp", ["Sur"] = "tdl", ["Surbakhal"] = "sbj", ["Suri"] = "suq", ["Surjapuri"] = "sjp", ["Sursurunga"] = "sgz", ["Suruahá"] = "swx", ["Surubu"] = "sde", ["Suruí"] = "sru", ["Suruí Do Pará"] = "mdz", ["Susquehannock"] = "sqn", ["Susu"] = "sus", ["Susuami"] = "ssu", ["Suundi"] = "sdj", ["Suwawa"] = "swu", ["Suyá"] = "suy", ["Svan"] = "sva", ["Swabian"] = "swg", ["Swampy Cree"] = "csw", ["Swazi"] = "ss", ["Swedish Sign Language"] = "swl", ["Swiss-French Sign Language"] = "ssr", ["Swiss-German Sign Language"] = "sgg", ["Swiss-Italian Sign Language"] = "slf", ["Swo"] = "sox", ["Syenara Senoufo"] = "shz", ["Sácata"] = "sai-sac", ["São Paulo Kaingáng"] = "zkp", ["Sãotomense"] = "cri", ["Sìcìté Sénoufo"] = "sep", ["Sîshëë"] = "sih", ["Sô"] = "sss", ["T'en"] = "tct", ["Taabwa"] = "tap", ["Taba"] = "mky", ["Tabaa Zapotec"] = "zat", ["Tabancale"] = "sai-tab", ["Tabaru"] = "tby", ["Tabasco Nahuatl"] = "nhc", ["Tabasco Zoque"] = "zoq", ["Tabla"] = "tnm", ["Tabo"] = "knv", ["Tabriak"] = "tzx", ["Tacahua Mixtec"] = "xtt", ["Tacana"] = "tna", ["Tachawit"] = "shy", ["Tadaksahak"] = "dsq", ["Tadyawan"] = "tdy", ["Tae'"] = "rob", ["Tafi"] = "tcd", ["Tafreshi"] = "xme-taf", ["Tagabawa"] = "bgs", ["Tagal Murut"] = "mvv", ["Tagbu"] = "tbm", ["Tagdal"] = "tda", ["Tagish"] = "tgx", ["Tagoi"] = "tag", ["Tagwana Senoufo"] = "tgw", ["Tahltan"] = "tht", ["Tai"] = "taw", ["Tai Hang Tong"] = "thc", ["Tai Hongjin"] = "tiz", ["Tai Loi"] = "tlq", ["Tai Long"] = "thi", ["Tai Pao"] = "tpo", ["Tai Thanh"] = "tmm", ["Tai Ya"] = "cuu", ["Taiap"] = "gpn", ["Taikat"] = "aos", ["Taimyr Pidgin Russian"] = "crp-tpr", ["Tainae"] = "ago", ["Tairuma"] = "uar", ["Taita"] = "dav", ["Taivoan"] = "tvx", ["Taiwan Sign Language"] = "tss", ["Taje"] = "pee", ["Tajio"] = "tdj", ["Tajuasohn"] = "tja", ["Takelma"] = "tkm", ["Takia"] = "tbc", ["Takua"] = "tkz", ["Takuu"] = "nho", ["Takwane"] = "tke", ["Tal"] = "tal", ["Tala"] = "tak", ["Talaud"] = "tld", ["Taliabu"] = "tlv", ["Talieng"] = "tdf", ["Talinga-Bwisi"] = "tlj", ["Talise"] = "tlr", ["Tallán"] = "sai-tal", ["Talodi"] = "tlo", ["Taloki"] = "tlk", ["Talondo'"] = "tln", ["Talossan"] = "tzl", ["Talu"] = "yta", ["Talysh"] = "tly", ["Tama (Chad)"] = "tma", ["Tama (Colombia)"] = "ten", ["Tamagario"] = "tcg", ["Tamambo"] = "mla", ["Taman (Indonesia)"] = "tmn", ["Taman (Myanmar)"] = "tcl", ["Tamanaku"] = "tmz", ["Tamazola Mixtec"] = "vmx", ["Tambas"] = "tdk", ["Tambora"] = "xxt", ["Tambotalo"] = "tls", ["Tambunan Dusun"] = "kzt", ["Tami"] = "tmy", ["Tamki"] = "tax", ["Tamnim Citak"] = "tml", ["Tampias Lobu"] = "low", ["Tampuan"] = "tpu", ["Tampulma"] = "tpm", ["Tanacross"] = "tcb", ["Tanahmerah"] = "tcm", ["Tanapag"] = "tpv", ["Tanchangya"] = "tnv", ["Tandia"] = "tni", ["Tanema"] = "tnx", ["Tangale"] = "tan", ["Tanggu"] = "tgu", ["Tangkhul Naga"] = "nmf", ["Tangko"] = "tkx", ["Tangoa"] = "tgp", ["Tangsa"] = "nst", ["Tanguat"] = "tbs", ["Tangwang"] = "mis-tnw", ["Tanimbili"] = "tbe", ["Tanimuca-Retuarã"] = "tnc", ["Tanjijili"] = "uji", ["Tanudan Kalinga"] = "kml", ["Tanzanian Sign Language"] = "tza", ["Tapachultec"] = "nai-tap", ["Taparita"] = "sai-tpr", ["Tapayuna"] = "sai-tap", ["Tapeba"] = "tbb", ["Tapei"] = "afp", ["Tapieté"] = "tpj", ["Tapirapé"] = "taf", ["Tar Gula"] = "kcm", ["Tara Baka"] = "bdh", ["Tarairiú"] = "sai-trr", ["Tarantino"] = "roa-tar", ["Tarao"] = "tro", ["Taraon"] = "mhu", ["Tareng"] = "tgr", ["Tariana"] = "tae", ["Tarjumo"] = "txj", ["Tarok"] = "yer", ["Taroko"] = "trv", ["Tarpia"] = "tpf", ["Tartessian"] = "txr", ["Taruma"] = "tdm", ["Tasawaq"] = "twq", ["Tashelhit"] = "shi", ["Tasmate"] = "tmt", ["Tat"] = "ttt", ["Tataltepec Chatino"] = "cta", ["Tatana"] = "txx", ["Tataviam"] = "azc-tat", ["Tatuyo"] = "tav", ["Tauade"] = "ttd", ["Taulil"] = "tuh", ["Taungyo"] = "tco", ["Taupota"] = "tpa", ["Tause"] = "tad", ["Taushiro"] = "trr", ["Tauya"] = "tya", ["Taveta"] = "tvs", ["Tavoyan"] = "tvn", ["Tavringer Romani"] = "rmu", ["Tawala"] = "tbo", ["Tawandê"] = "xtw", ["Tawang Monpa"] = "twm", ["Tawasa"] = "nai-taw", ["Taworta"] = "tbp", ["Tawoyan"] = "twy", ["Tawr Chin"] = "tcp", ["Tay Khang"] = "tnu", ["Tayabas Ayta"] = "ayy", ["Taymanitic"] = "sem-tay", ["Tayo"] = "cks", ["Tchitchege"] = "tck", ["Tchumbuli"] = "bqa", ["Te'un"] = "tve", ["Teanu"] = "tkw", ["Tebul Sign Language"] = "tsy", ["Tebul Ure Dogon"] = "dtu", ["Tecpatlán Totonac"] = "tcw", ["Tedaga"] = "tuq", ["Tedim Chin"] = "ctd", ["Tee"] = "tkq", ["Tefaro"] = "tfo", ["Tegali"] = "ras", ["Tehit"] = "kps", ["Tehuelche"] = "teh", ["Teiwa"] = "twe", ["Tejalapan Zapotec"] = "ztt", ["Teke-Fuumu"] = "ifm", ["Teke-Kukuya"] = "kkw", ["Teke-Laali"] = "lli", ["Teke-Tege"] = "teg", ["Teke-Tsaayi"] = "tyi", ["Teke-Tyee"] = "tyx", ["Tektiteko"] = "ttc", ["Tela-Masbuar"] = "tvm", ["Telefol"] = "tlf", ["Teluti"] = "tlt", ["Tem"] = "kdh", ["Temascaltepec Nahuatl"] = "nhv", ["Tembé"] = "tqb", ["Teme"] = "tdo", ["Temein"] = "teq", ["Temi"] = "soz", ["Temne"] = "tem", ["Temoaya Otomi"] = "ott", ["Temoq"] = "tmo", ["Tempasuk Dusun"] = "tdu", ["Ten'edn"] = "tnz", ["Tenango Otomi"] = "otn", ["Tene Kan Dogon"] = "dtk", ["Tenggarong Kutai Malay"] = "vkt", ["Tengger"] = "tes", ["Tenharim"] = "pah", ["Tenino"] = "tqn", ["Tenis"] = "tns", ["Tennet"] = "tex", ["Teojomulco Chatino"] = "omq-teo", ["Teop"] = "tio", ["Teor"] = "tev", ["Tepecano"] = "tep", ["Tepetotutla Chinantec"] = "cnt", ["Tepeuxila Cuicatec"] = "cux", ["Tepinapa Chinantec"] = "cte", ["Tepo Krumen"] = "ted", ["Teposcolula Mixtec"] = "omq-tel", ["Tequistlatec"] = "nai-teq", ["Ter Sami"] = "sjt", ["Tera"] = "ttr", ["Terebu"] = "trb", ["Terei"] = "buo", ["Tereno"] = "ter", ["Teressa"] = "tef", ["Tereweng"] = "twg", ["Teribe"] = "tfr", ["Terik"] = "tec", ["Termanu"] = "twu", ["Ternateño"] = "tmg", ["Tese"] = "keg", ["Teshenawa"] = "twc", ["Tetela"] = "tll", ["Tetelcingo Nahuatl"] = "nhg", ["Tetete"] = "teb", ["Tetserret"] = "tez", ["Tetun Dili"] = "tdt", ["Teushen"] = "sai-teu", ["Teutila Cuicatec"] = "cut", ["Tewa"] = "tew", ["Texcatepec Otomi"] = "otx", ["Texistepec Popoluca"] = "poq", ["Texmelucan Zapotec"] = "zpz", ["Tezoatlán Mixtec"] = "mxb", ["Tha"] = "thy", ["Thachanadan"] = "thn", ["Thado Chin"] = "tcz", ["Thaiphum Chin"] = "cth", ["Thakali"] = "ths", ["Thamudic"] = "sem-tha", ["Thangal Naga"] = "nki", ["Thangmi"] = "thf", ["Thao"] = "ssf", ["Tharaka"] = "thk", ["Tharrgari"] = "dhr", ["Thawa"] = "xtv", ["Tho"] = "tou", ["Thompson"] = "thp", ["Thopho"] = "ytp", ["Thracian"] = "txh", ["Thu Lao"] = "tyl", ["Thulung"] = "tdh", ["Thurawal"] = "tbh", ["Thuri"] = "thu", ["Tiagba"] = "ahi", ["Tiale"] = "mnl", ["Tiang"] = "tbj", ["Tibea"] = "ngy", ["Tibetan Sign Language"] = "lsn", ["Ticuna"] = "tca", ["Tidaá Mixtec"] = "mtx", ["Tiemacèwè Bozo"] = "boo", ["Tiene"] = "tii", ["Tifal"] = "tif", ["Tigak"] = "tgc", ["Tigon Mbembe"] = "nza", ["Tii"] = "txq", ["Tijaltepec Mixtec"] = "xtl", ["Tikar"] = "tik", ["Tikopia"] = "tkp", ["Tilapa Otomi"] = "otl", ["Tillamook"] = "til", ["Tilquiapan Zapotec"] = "zts", ["Tilung"] = "tij", ["Tima"] = "tms", ["Timbe"] = "tim", ["Timor Pidgin"] = "tvy", ["Timote"] = "sai-tim", ["Timucua"] = "tjm", ["Timugon Murut"] = "tih", ["Tinani"] = "lbf", ["Tindi"] = "tin", ["Tingui-Boto"] = "tgv", ["Tinigua"] = "tit", ["Tinoc Kallahan"] = "tne", ["Tinputz"] = "tpz", ["Tinrin"] = "cir", ["Tipai"] = "nai-tip", ["Tippera"] = "tpe", ["Tira"] = "tic", ["Tirahi"] = "tra", ["Tiranige Diga Dogon"] = "tde", ["Tirax"] = "mme", ["Tita"] = "tdq", ["Titan"] = "ttv", ["Tiv"] = "tiv", ["Tiwa"] = "lax", ["Tiwi"] = "tiw", ["Tiéfo"] = "tiq", ["Tiéyaxo Bozo"] = "boz", ["Tjurruru"] = "tju", ["Tlachichilco Tepehua"] = "tpt", ["Tlacoapa Me'phaa"] = "tpl", ["Tlacoatzintepec Chinantec"] = "ctl", ["Tlacolulita Zapotec"] = "zpk", ["Tlahuica"] = "ocu", ["Tlahuitoltepec Mixe"] = "mxp", ["Tlamacazapa Nahuatl"] = "nuz", ["Tlazoyaltepec Mixtec"] = "mqh", ["Tlingit"] = "tli", ["To"] = "toz", ["To'abaita"] = "mlu", ["Toaripi"] = "tqo", ["Toba"] = "tob", ["Toba Batak"] = "bbc", ["Toba-Maskoy"] = "tmf", ["Tobagonian Creole English"] = "tgh", ["Tobanga"] = "tng", ["Tobati"] = "tti", ["Tobelo"] = "tlb", ["Tobian"] = "tox", ["Tobilung"] = "tgb", ["Tobo"] = "tbv", ["Tocantins Asurini"] = "asu", ["Tocho"] = "taz", ["Todrah"] = "tdr", ["Tofanma"] = "tlg", ["Tofin Gbe"] = "tfi", ["Togbo-Vara Banda"] = "tor", ["Togoyo"] = "tgy", ["Tojolabal"] = "toj", ["Toka-Leya"] = "dov", ["Tokano"] = "zuh", ["Tokelauan"] = "tkl", ["Toki Pona"] = "tok", ["Tol"] = "jic", ["Tolai"] = "ksd", ["Tolaki"] = "lbw", ["Tolomako"] = "tlm", ["Tolowa"] = "tol", ["Toloza"] = "ytl", ["Toma"] = "tod", ["Tomadino"] = "tdi", ["Tombelala"] = "ttp", ["Tombonuo"] = "txa", ["Tombulu"] = "tom", ["Tomini"] = "txm", ["Tommeginne"] = "xpv", ["Tommo So"] = "dto", ["Tomo Kan Dogon"] = "dtm", ["Tomoip"] = "tqp", ["Tondano"] = "tdn", ["Tonga (Malawi)"] = "tog", ["Tonga (Mozambique)"] = "toh", ["Tonga (Zambia)"] = "toi", ["Tongwe"] = "tny", ["Tonjon"] = "tjn", ["Tonkawa"] = "tqw", ["Tonsawang"] = "tnw", ["Tonsea"] = "txs", ["Tontemboan"] = "tnt", ["Toogee"] = "xpx", ["Tooro"] = "ttj", ["Topoiyo"] = "toy", ["Toposa"] = "toq", ["Toraja-Sa'dan"] = "sda", ["Toram"] = "trj", ["Torau"] = "ttu", ["Toro"] = "tdv", ["Toro So Dogon"] = "dts", ["Toro Tegu Dogon"] = "dtt", ["Toromono"] = "tno", ["Torona"] = "tqr", ["Torres Strait Creole"] = "tcs", ["Torricelli"] = "tei", ["Torricelli Yau"] = "yyu", ["Torwali"] = "trw", ["Torá"] = "trz", ["Tosu"] = "sit-tos", ["Totela"] = "ttl", ["Toto"] = "txo", ["Totoli"] = "txe", ["Totomachapan Zapotec"] = "zph", ["Totontepec Mixe"] = "mto", ["Totoro"] = "ttk", ["Touo"] = "tqu", ["Toura"] = "neb", ["Towei"] = "ttn", ["Transylvanian Saxon"] = "gmw-tsx", ["Traveller Danish"] = "rmd", ["Traveller Norwegian"] = "rmg", ["Traveller Scottish"] = "trl", ["Tregami"] = "trm", ["Tremembé"] = "tme", ["Trieng"] = "stg", ["Trimuris"] = "tip", ["Tring"] = "tgq", ["Tringgus"] = "trx", ["Trinidad and Tobago Sign Language"] = "lst", ["Trinidadian Creole English"] = "trf", ["Trinitario"] = "trn", ["Trió"] = "tri", ["Truká"] = "tka", ["Trumai"] = "tpy", ["Ts'ün-Lao"] = "tsl", ["Tsaangi"] = "tsa", ["Tsafiki"] = "cof", ["Tsakhur"] = "tkr", ["Tsakonian"] = "tsd", ["Tsakwambo"] = "kvz", ["Tsamai"] = "tsb", ["Tsat"] = "huq", ["Tsetsaut"] = "txc", ["Tsez"] = "ddo", ["Tshangla"] = "tsj", ["Tshobdun"] = "sit-tsh", ["Tshwa"] = "hio", ["Tsikimba"] = "kdl", ["Tsimané"] = "cas", ["Tsimshian"] = "tsi", ["Tsishingini"] = "tsw", ["Tso"] = "ldp", ["Tsogo"] = "tsv", ["Tsonga"] = "ts", ["Tsotsitaal"] = "fly", ["Tsucuba"] = "cbq", ["Tsum"] = "ttz", ["Tsuut'ina"] = "srs", ["Tsuvadi"] = "tvd", ["Tsuvan"] = "tsh", ["Tswa"] = "tsc", ["Tswapong"] = "two", ["Tuamotuan"] = "pmt", ["Tuareg"] = "tmh", ["Tubar"] = "tbu", ["Tucano"] = "tuo", ["Tugen"] = "tuy", ["Tugun"] = "tzn", ["Tugutil"] = "tuj", ["Tukang Besi North"] = "khc", ["Tukang Besi South"] = "bhq", ["Tuki"] = "bag", ["Tukpa"] = "tpq", ["Tukudede"] = "tkd", ["Tukumanféd"] = "tkf", ["Tula"] = "tul", ["Tule-Kaweah Yokuts"] = "yok-tky", ["Tulehu"] = "tlu", ["Tulishi"] = "tey", ["Tulu-Bohuai"] = "rak", ["Tulua"] = "aus-tul", ["Tuma-Irumu"] = "iou", ["Tumak"] = "tmc", ["Tumbuka"] = "tum", ["Tumi"] = "kku", ["Tumleo"] = "tmq", ["Tumtum"] = "tbr", ["Tumulung Sisaala"] = "sil", ["Tundra Enets"] = "enh", ["Tundra Nenets"] = "yrk-tun", ["Tunen"] = "tvu", ["Tungag"] = "lcm", ["Tunggare"] = "trt", ["Tunia"] = "tug", ["Tunica"] = "tun", ["Tunisian Sign Language"] = "tse", ["Tunjung"] = "tjg", ["Tunni"] = "tqq", ["Tunumiisut"] = "esx-tut", ["Tunzu"] = "dza", ["Tuoba"] = "mis-tuo", ["Tuotomb"] = "ttf", ["Tuparí"] = "tpr", ["Tupinambá"] = "tpn", ["Tupinikin"] = "tpk", ["Tupuri"] = "tui", ["Turaka"] = "trh", ["Turdetanian"] = "mis-tdt", ["Turdulian"] = "mis-tdl", ["Turi"] = "trd", ["Turiwára"] = "twt", ["Turka"] = "tuz", ["Turkana"] = "tuv", ["Turkish Sign Language"] = "tsm", ["Turks and Caicos Creole English"] = "tch", ["Turoyo"] = "tru", ["Turumsa"] = "tqm", ["Tuscarora"] = "tus", ["Tutelo"] = "tta", ["Tutong"] = "ttg", ["Tutsa Naga"] = "tvt", ["Tutuba"] = "tmi", ["Tututepec Mixtec"] = "mtu", ["Tututni"] = "tuu", ["Tuwali Ifugao"] = "ifk", ["Tuwari"] = "tww", ["Tuwuli"] = "bov", ["Tuxináwa"] = "tux", ["Tuxá"] = "tud", ["Tuyuca"] = "tue", ["Tuyuhun"] = "mis-tuh", ["Twana"] = "twa", ["Twendi"] = "twn", ["Tyap"] = "kcg", ["Tyaraity"] = "woa", ["Tyerrernotepanner"] = "xph", ["Tz'utujil"] = "tzj", ["Tzeltal"] = "tzh", ["Tày Tac"] = "tyt", ["Tây Bồi"] = "tas", ["Téén"] = "lor", ["Tübatulabal"] = "tub", ["U"] = "uuu", ["Uab Meto"] = "aoz", ["Uamué"] = "uam", ["Uare"] = "ksj", ["Ubaghara"] = "byc", ["Ubang"] = "uba", ["Ubi"] = "ubi", ["Ubir"] = "ubr", ["Ubykh"] = "uby", ["Ucayali-Yurúa Ashéninka"] = "cpb", ["Uda"] = "uda", ["Udihe"] = "ude", ["Uduk"] = "udu", ["Ufim"] = "ufi", ["Ugandan Sign Language"] = "ugn", ["Ughele"] = "uge", ["Uhami"] = "uha", ["Uisai"] = "uis", ["Ujir"] = "udj", ["Ukaan"] = "kcf", ["Ukhwejo"] = "ukh", ["Ukit"] = "umi", ["Ukpe-Bayobiri"] = "ukp", ["Ukpet-Ehom"] = "akd", ["Ukrainian Sign Language"] = "ukl", ["Ukue"] = "uku", ["Ukuriguma"] = "ukg", ["Ukwa"] = "ukq", ["Ukwuani-Aboh-Ndoni"] = "ukw", ["Ulau-Suain"] = "svb", ["Ulch"] = "ulc", ["Uldeme"] = "udl", ["Ulithian"] = "uli", ["Ullatan"] = "ull", ["Ulumanda'"] = "ulm", ["Ulwa"] = "ulw", ["Uma"] = "ppk", ["Uma' Lasan"] = "xky", ["Uma' Lung"] = "ulu", ["Umanakaina"] = "gdn", ["Umatilla"] = "uma", ["Umbindhamu"] = "umd", ["Umbu-Ungu"] = "ubu", ["Umbugarla"] = "umr", ["Umbundu"] = "umb", ["Umbuygamu"] = "umg", ["Ume Sami"] = "sju", ["Umeda"] = "upi", ["Umiida"] = "xud", ["Umiray Dumaget Agta"] = "due", ["Umon"] = "umm", ["Umotína"] = "umo", ["Umpila"] = "ump", ["Una"] = "mtg", ["Unami"] = "unm", ["Unde Kaili"] = "unz", ["Undetermined"] = "und", ["Uneapa"] = "bbn", ["Uneme"] = "une", ["Unggaranggu"] = "xun", ["Unggumi"] = "xgu", ["Unua"] = "onu", ["Unubahe"] = "unu", ["Uokha"] = "uok", ["Upper Chehalis"] = "cjh", ["Upper Grand Valley Dani"] = "dna", ["Upper Kuskokwim"] = "kuu", ["Upper Necaxa Totonac"] = "tku", ["Upper Ta'oih"] = "tth", ["Upper Tanana"] = "tau", ["Upper Taromi"] = "tov", ["Upper Umpqua"] = "xup", ["Ura (New Guinea)"] = "uro", ["Ura (Vanuatu)"] = "uur", ["Uradhi"] = "urf", ["Urali"] = "url", ["Urapmin"] = "urm", ["Urarina"] = "ura", ["Urartian"] = "xur", ["Urat"] = "urt", ["Urhobo"] = "urh", ["Uri"] = "uvh", ["Urigina"] = "urg", ["Urim"] = "uri", ["Urimo"] = "urx", ["Urningangg"] = "urc", ["Uru"] = "ure", ["Uru-Eu-Wau-Wau"] = "urz", ["Uru-Pa-In"] = "urp", ["Uruangnirin"] = "urn", ["Uruava"] = "urv", ["Urubú-Kaapor"] = "urb", ["Uruguayan Sign Language"] = "ugy", ["Urum"] = "uum", ["Urumi"] = "uru", ["Usaghade"] = "usk", ["Usan"] = "wnu", ["Usarufa"] = "usa", ["Ushojo"] = "ush", ["Usila Chinantec"] = "cuc", ["Uspanteco"] = "usp", ["Usui"] = "usi", ["Utarmbung"] = "omo", ["Ute"] = "ute", ["Utu"] = "utu", ["Uvbie"] = "evh", ["Uwinymil"] = "aus-uwi", ["Uya"] = "usu", ["Uyajitaya"] = "duk", ["Uzekwe"] = "eze", ["Vaagri Booli"] = "vaa", ["Vaghri"] = "vgr", ["Vaghua"] = "tva", ["Vagla"] = "vag", ["Vaiphei"] = "vap", ["Vale"] = "vae", ["Valencian Sign Language"] = "vsv", ["Valle Nacional Chinantec"] = "cvn", ["Valley Maidu"] = "vmv", ["Valman"] = "van", ["Valpei"] = "vlp", ["Vamale"] = "mkt", ["Vame"] = "mlr", ["Vangunu"] = "mpr", ["Vanimo"] = "vam", ["Vanji"] = "ira-wnj", ["Vanuma"] = "vau", ["Vao"] = "vao", ["Varhadi"] = "vah", ["Varisi"] = "vrs", ["Varli"] = "vav", ["Vasavi"] = "vas", ["Vayu"] = "vay", ["Veddah"] = "ved", ["Vehes"] = "val", ["Vemgo-Mabas"] = "vem", ["Venetic"] = "xve", ["Venezuelan Sign Language"] = "vsl", ["Ventureño"] = "veo", ["Vera'a"] = "vra", ["Vestinian"] = "xvs", ["Vidunda"] = "vid", ["Viemo"] = "vig", ["Vilela"] = "vil", ["Vili"] = "vif", ["Villa Viciosa Agta"] = "dyg", ["Vincentian Creole English"] = "svc", ["Virgin Islands Creole"] = "vic", ["Vishavan"] = "vis", ["Viti"] = "vit", ["Vitou"] = "vto", ["Viya"] = "gev", ["Vlax Romani"] = "rmy", ["Volscian"] = "xvo", ["Vono"] = "kch", ["Voro"] = "vor", ["Vumbu"] = "vum", ["Vunapu"] = "vnp", ["Vunjo"] = "vun", ["Vurës"] = "msn", ["Vute"] = "vut", ["Wa"] = "wbm", ["Wa'ema"] = "wag", ["Waama"] = "wwa", ["Waamwang"] = "wmn", ["Wab"] = "wab", ["Wabo"] = "wbb", ["Waboda"] = "kmx", ["Waci Gbe"] = "wci", ["Wadaginam"] = "wdg", ["Waddar"] = "wbq", ["Wadi Wadi"] = "xwd", ["Wadiyara Koli"] = "kxp", ["Wadjabangayi"] = "wdy", ["Wadjiginy"] = "wdj", ["Wadjigu"] = "wdu", ["Wae Rana"] = "wrx", ["Waffa"] = "waj", ["Wagawaga"] = "wgb", ["Wagaya"] = "wga", ["Wagdi"] = "wbr", ["Wageman"] = "waq", ["Wagi"] = "fad", ["Wahau Kayan"] = "whu", ["Wahau Kenyah"] = "whk", ["Wahgi"] = "wgi", ["Waigali"] = "wbk", ["Waigeo"] = "wgo", ["Waikuri"] = "nai-wai", ["Wailaki"] = "wlk", ["Wailapa"] = "wlr", ["Waima'a"] = "wmh", ["Waimaha"] = "bao", ["Waimiri-Atroari"] = "atr", ["Wainumá"] = "awd-wai", ["Waioli"] = "wli", ["Waitaká"] = "sai-wai", ["Waiwai"] = "waw", ["Waja"] = "wja", ["Wajarri"] = "wbv", ["Wajuk"] = "xwj", ["Waka"] = "wav", ["Wakawaka"] = "wkw", ["Wakhi"] = "wbl", ["Wakoná"] = "waf", ["Wala"] = "lgl", ["Walak"] = "wlw", ["Walangama"] = "nlw", ["Wali (Ghana)"] = "wlx", ["Wali (Sudan)"] = "wll", ["Waling"] = "wly", ["Walio"] = "wla", ["Walla Walla"] = "waa", ["Wallisian"] = "wls", ["Walmajarri"] = "wmt", ["Wam"] = "wmo", ["Wamas"] = "wmc", ["Wambaya"] = "wmb", ["Wambon"] = "wms", ["Wambule"] = "wme", ["Wamey"] = "cou", ["Wamin"] = "wmi", ["Wampar"] = "lbq", ["Wampur"] = "waz", ["Wan"] = "wan", ["Wanambre"] = "wnb", ["Wanap"] = "wnp", ["Wancho"] = "nnp", ["Wanda"] = "wbh", ["Wandala"] = "mfi", ["Wandamen"] = "wad", ["Wandarang"] = "wnd", ["Wandji"] = "wdd", ["Waneci"] = "wne", ["Wanga"] = "lwg", ["Wanggamala"] = "wnm", ["Wangganguru"] = "wgg", ["Wanggom"] = "wng", ["Wangkayutyuru"] = "wky", ["Wangkumara"] = "xwk", ["Wanham"] = "sai-wnm", ["Wanji"] = "wbi", ["Wanman"] = "wbt", ["Wannu"] = "jub", ["Wano"] = "wno", ["Wantoat"] = "wnc", ["Wanukaka"] = "wnk", ["Wanyi"] = "wny", ["Wané"] = "hwa", ["Wapan"] = "juk", ["Wapishana"] = "wap", ["Wappo"] = "wao", ["War-Jaintia"] = "aml", ["Wara"] = "wbf", ["Warapu"] = "wra", ["Waray Sorsogon"] = "srv", ["Wardaman"] = "wrr", ["Wardandi"] = "wxw", ["Warekena"] = "gae", ["Warembori"] = "wsa", ["Wari'"] = "pav", ["Waris"] = "wrs", ["Waritai"] = "wbe", ["Wariyangga"] = "wri", ["Warji"] = "wji", ["Warkay-Bipim"] = "bgv", ["Warlmanpa"] = "wrl", ["Warlpiri"] = "wbp", ["Warluwara"] = "wrb", ["Warnang"] = "wrn", ["Waropen"] = "wrp", ["Warray"] = "wrz", ["Warrgamay"] = "wgy", ["Warrwa"] = "wwr", ["Waru"] = "wru", ["Warumungu"] = "wrm", ["Waruna"] = "wrv", ["Warungu"] = "wrg", ["Warwar Feni"] = "hrw", ["Wasco-Wishram"] = "wac", ["Wasembo"] = "gsp", ["Washo"] = "was", ["Waskia"] = "wsk", ["Wastek"] = "hus", ["Wasu"] = "wsu", ["Watakataui"] = "wtk", ["Watam"] = "wax", ["Wathaurong"] = "wth", ["Watiwa"] = "wtf", ["Watubela"] = "wah", ["Waube"] = "kop", ["Wauja"] = "wau", ["Wauyai"] = "wuy", ["Wawa"] = "www", ["Wawonii"] = "wow", ["Waxiang"] = "wxa", ["Wayampi"] = "oym", ["Wayana"] = "way", ["Wayanad Chetti"] = "ctt", ["Wayoró"] = "wyr", ["Wayumara"] = "sai-way", ["Wayuu"] = "guc", ["Wedau"] = "wed", ["Weh"] = "weh", ["Welaung"] = "weu", ["Weliki"] = "klh", ["Welsh Romani"] = "rmw", ["Wemale"] = "weo", ["Wemba-Wemba"] = "xww", ["Weme Gbe"] = "wem", ["Wendat"] = "wdt", ["Weri"] = "wer", ["Wersing"] = "kvw", ["West Albay Bikol"] = "fbl", ["West Ambae"] = "nnd", ["West Central Banda"] = "bbp", ["West Damar"] = "drn", ["West Flemish"] = "vls", ["West Greenlandic Pidgin"] = "crp-gep", ["West Lembata"] = "lmj", ["West Makian"] = "mqs", ["West Masela"] = "mss", ["West Tarangan"] = "txn", ["West Uvean"] = "uve", ["West-Central Limba"] = "lia", ["Western Arrernte"] = "are", ["Western Bolivian Guarani"] = "gnw", ["Western Bukidnon Manobo"] = "mbb", ["Western Dani"] = "dnw", ["Western Durango Nahuatl"] = "azn", ["Western Fijian"] = "wyy", ["Western Gurung"] = "gvr", ["Western Highland Chatino"] = "ctp", ["Western Huasteca Nahuatl"] = "nhw", ["Western Jicaque"] = "nai-wji", ["Western Juxtlahuaca Mixtec"] = "jmx", ["Western Karaboro"] = "kza", ["Western Keres"] = "kjq", ["Western Krahn"] = "krw", ["Western Lalu"] = "ywl", ["Western Magar"] = "mrd", ["Western Maninkakan"] = "mlq", ["Western Mari"] = "mrj", ["Western Mashan Hmong"] = "hmw", ["Western Meohang"] = "raf", ["Western Muria"] = "mut", ["Western Neo-Aramaic"] = "amw", ["Western Ojibwa"] = "ojw", ["Western Parbate Kham"] = "kjl", ["Western Penan"] = "pne", ["Western Sisaala"] = "ssl", ["Western Subanon"] = "suc", ["Western Tamang"] = "tdg", ["Western Tawbuid"] = "twb", ["Western Totonac"] = "tqt", ["Western Tunebo"] = "tnb", ["Western Xiangxi Miao"] = "mmr", ["Western Xwla Gbe"] = "xwl", ["Western Yugur"] = "ybe", ["Wewaw"] = "wea", ["Weyewa"] = "wew", ["Weyto"] = "woy", ["White Gelao"] = "giw", ["White Lachi"] = "lwh", ["Whitesands"] = "tnp", ["Wiarumus"] = "tua", ["Wichita"] = "wic", ["Wichí Lhamtés Güisnay"] = "mzh", ["Wichí Lhamtés Nocten"] = "mtp", ["Wichí Lhamtés Vejoz"] = "wlv", ["Wik-Epa"] = "wie", ["Wik-Iiyanh"] = "wij", ["Wik-Keyangan"] = "wif", ["Wik-Me'anha"] = "wih", ["Wik-Mungkan"] = "wim", ["Wik-Ngathana"] = "wig", ["Wikalkan"] = "wik", ["Wikngenchera"] = "wua", ["Wilawila"] = "wil", ["Wintu"] = "wnw", ["Winyé"] = "kst", ["Wipi"] = "gdr", ["Wiradjuri"] = "wrh", ["Wiraféd"] = "wir", ["Wirangu"] = "wgu", ["Wiru"] = "wiu", ["Wirö"] = "wpc", ["Wiwa"] = "mbp", ["Wiyot"] = "wiy", ["Wobé"] = "wob", ["Woccon"] = "xwc", ["Wogamusin"] = "wog", ["Wogeo"] = "woc", ["Woi"] = "wbw", ["Woiwurrung"] = "wyi", ["Wojenaka"] = "jod", ["Wolane"] = "wle", ["Wolani"] = "wod", ["Wolaytta"] = "wal", ["Woleaian"] = "woe", ["Wolio"] = "wlo", ["Womo"] = "wmx", ["Wong-gie"] = "aus-won", ["Wongo"] = "won", ["Woods Cree"] = "cwd", ["Woria"] = "wor", ["Worimi"] = "kda", ["Worodougou"] = "jud", ["Worora"] = "wro", ["Wotapuri-Katarqalai"] = "wsv", ["Wotu"] = "wtw", ["Woun Meu"] = "noa", ["Written Oirat"] = "xwo", ["Wudu"] = "wud", ["Wuhuan"] = "mis-wuh", ["Wulguru"] = "aus-wul", ["Wuliwuli"] = "wlu", ["Wulna"] = "wux", ["Wumboko"] = "bqm", ["Wumbvu"] = "wum", ["Wumeng"] = "ywu", ["Wunai Bunu"] = "bwn", ["Wunambal"] = "wub", ["Wurrugu"] = "wur", ["Wusa"] = "yig", ["Wushi"] = "bse", ["Wusi"] = "wsi", ["Wutung"] = "wut", ["Wutunhua"] = "wuh", ["Wuvulu-Aua"] = "wuv", ["Wyandot"] = "wya", ["Wára"] = "tci", ["Wãpha"] = "juw", ["Wè Southern"] = "gxx", ["Wè Western"] = "wec", ["Xadani Zapotec"] = "zax", ["Xakriabá"] = "xkr", ["Xamtanga"] = "xan", ["Xanaguía Zapotec"] = "ztg", ["Xavante"] = "xav", ["Xerénte"] = "xer", ["Xetá"] = "xet", ["Xianbei"] = "mis-xbi", ["Xibe"] = "sjo", ["Xicotepec de Juárez Totonac"] = "too", ["Xinca"] = "xin", ["Xingú Asuriní"] = "asn", ["Xiongnu"] = "mis-xnu", ["Xipaya"] = "xiy", ["Xiri"] = "xii", ["Xiriâna"] = "xir", ["Xishanba Lalo"] = "ywt", ["Xocó"] = "sai-xoc", ["Xokleng"] = "xok", ["Xukurú"] = "xoo", ["Xwela Gbe"] = "xwe", ["Xârâgurè"] = "axx", ["Yaa"] = "iyx", ["Yaaku"] = "muu", ["Yabarana"] = "yar", ["Yabaâna"] = "ybn", ["Yaben"] = "ybm", ["Yabong"] = "ybo", ["Yabula Yabula"] = "yxy", ["Yace"] = "ekr", ["Yafi"] = "wfg", ["Yagara"] = "yxg", ["Yagaria"] = "ygr", ["Yaghnobi"] = "yai", ["Yagomi"] = "ygm", ["Yagua"] = "yad", ["Yagwoia"] = "ygw", ["Yahadian"] = "ner", ["Yahang"] = "rhp", ["Yahuna"] = "ynu", ["Yaka"] = "yaf", ["Yakaikeke"] = "ykk", ["Yakima"] = "yak", ["Yakkha"] = "ybh", ["Yakoma"] = "yky", ["Yala"] = "yba", ["Yalahatan"] = "jal", ["Yalakalore"] = "xyl", ["Yalarnnga"] = "ylr", ["Yale"] = "nce", ["Yaleba"] = "ylb", ["Yalunka"] = "yal", ["Yalálag Zapotec"] = "zpu", ["Yamap"] = "ymp", ["Yamba"] = "yam", ["Yamben"] = "ynb", ["Yambes"] = "ymb", ["Yambeta"] = "yat", ["Yamdena"] = "jmd", ["Yameo"] = "yme", ["Yaminahua"] = "yaa", ["Yamongeri"] = "ymg", ["Yamphu"] = "ybi", ["Yan-nhangu"] = "jay", ["Yana"] = "ynn", ["Yanda"] = "yda", ["Yanda Dogon"] = "dym", ["Yandjibara"] = "xyb", ["Yandruwandha"] = "ynd", ["Yanesha'"] = "ame", ["Yangben"] = "yav", ["Yangkaal"] = "aus-ynk", ["Yangkam"] = "bsx", ["Yangman"] = "jng", ["Yango"] = "yng", ["Yangulam"] = "ynl", ["Yangum Dey"] = "yde", ["Yangum Gel"] = "ygl", ["Yangum Mon"] = "ymo", ["Yankunytjatjara"] = "kdd", ["Yanomam"] = "wca", ["Yanomamö"] = "guu", ["Yansi"] = "yns", ["Yanyuwa"] = "jao", ["Yao"] = "yao", ["Yao (South America)"] = "sai-yao", ["Yaosakor Asmat"] = "asy", ["Yaouré"] = "yre", ["Yapese"] = "yap", ["Yapunda"] = "yev", ["Yaqay"] = "jaq", ["Yaqui"] = "yaq", ["Yarawata"] = "yrw", ["Yareba"] = "yrb", ["Yareni Zapotec"] = "zae", ["Yarli"] = "yxl", ["Yarluyandi"] = "yry", ["Yarumá"] = "sai-yar", ["Yarí"] = "yri", ["Yasa"] = "yko", ["Yatay"] = "yty", ["Yatee Zapotec"] = "zty", ["Yatzachi Zapotec"] = "zav", ["Yaul"] = "yla", ["Yaur"] = "jau", ["Yautepec Zapotec"] = "zpb", ["Yavitero"] = "yvt", ["Yawa"] = "yva", ["Yawalapití"] = "yaw", ["Yawanawa"] = "ywn", ["Yawarawarga"] = "yww", ["Yaweyuha"] = "yby", ["Yawijibaya"] = "jbw", ["Yawiyo"] = "ybx", ["Yawuru"] = "ywr", ["Yaygir"] = "xya", ["Yazghulami"] = "yah", ["Ye'kwana"] = "mch", ["Yei"] = "jei", ["Yekhee"] = "ets", ["Yekora"] = "ykr", ["Yele"] = "yle", ["Yelmek"] = "jel", ["Yelogu"] = "ylg", ["Yemaek"] = "hmk", ["Yemba"] = "ybb", ["Yemsa"] = "jnj", ["Yendang"] = "yen", ["Yeni"] = "yei", ["Yenish"] = "yec", ["Yerakai"] = "yra", ["Yeretuar"] = "gop", ["Yerong"] = "yrn", ["Yerukula"] = "yeu", ["Yeskwa"] = "yes", ["Yessan-Mayo"] = "yss", ["Yetfa"] = "yet", ["Yevanic"] = "yej", ["Yeyi"] = "yey", ["Yidgha"] = "ydg", ["Yidiny"] = "yii", ["Yil"] = "yll", ["Yilan Creole"] = "ycr", ["Yimas"] = "yee", ["Yimchungru Naga"] = "yim", ["Yinbaw Karen"] = "kvu", ["Yinchia"] = "yin", ["Yindjibarndi"] = "yij", ["Yindjilandji"] = "yil", ["Yine"] = "pib", ["Yinggarda"] = "yia", ["Yinhawangka"] = "ywg", ["Yiningayi"] = "ygi", ["Yintale Karen"] = "kvy", ["Yinwum"] = "yxm", ["Yir-Yoront"] = "yiy", ["Yirandali"] = "ljw", ["Yis"] = "yis", ["Yitha Yitha"] = "xth", ["Yoba"] = "yob", ["Yocoboué Dida"] = "gud", ["Yoidik"] = "ydk", ["Yoke"] = "yki", ["Yolmo"] = "scp", ["Yolngu Sign Language"] = "ygs", ["Yoloxochitl Mixtec"] = "xty", ["Yom"] = "pil", ["Yombe"] = "yom", ["Yongkom"] = "yon", ["Yopno"] = "yut", ["Yora"] = "mts", ["Yorta Yorta"] = "xyy", ["Yosondúa Mixtec"] = "mpm", ["Youle Jino"] = "jiu", ["Younuo Bunu"] = "buh", ["Yout Wam"] = "ytw", ["Yoy"] = "yoy", ["Yuanga"] = "nua", ["Yucatec Maya"] = "yua", ["Yucatec Maya Sign Language"] = "msd", ["Yuchi"] = "yuc", ["Yucuañe Mixtec"] = "mvg", ["Yucuna"] = "ycn", ["Yug"] = "yug", ["Yugambal"] = "yub", ["Yugoslavian Sign Language"] = "ysl", ["Yugul"] = "ygu", ["Yuhup"] = "yab", ["Yuki"] = "yuk", ["Yukpa"] = "yup", ["Yukuben"] = "ybl", ["Yulu"] = "yul", ["Yuma"] = "yum", ["Yumana"] = "awd-yum", ["Yupiltepeque"] = "nai-yup", ["Yupua"] = "sai-yup", ["Yuqui"] = "yuq", ["Yuracare"] = "yuz", ["Yuri"] = "sai-yri", ["Yurok"] = "yur", ["Yuru"] = "ljx", ["Yurumanguí"] = "sai-yur", ["Yurutí"] = "yui", ["Yutanduchi Mixtec"] = "mab", ["Yuwana"] = "yau", ["Yuyu"] = "yxu", ["Zaachila Zapotec"] = "ztx", ["Zabana"] = "kji", ["Zacatepec Chatino"] = "ctz", ["Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"] = "nhi", ["Zaghawa"] = "zag", ["Zaiwa"] = "atb", ["Zakhring"] = "zkr", ["Zambian Sign Language"] = "zsl", ["Zan Gula"] = "zna", ["Zanaki"] = "zak", ["Zande"] = "zne", ["Zangwal"] = "zah", ["Zaniza Zapotec"] = "zpw", ["Zapotec"] = "zap", ["Zaramo"] = "zaj", ["Zari"] = "zaz", ["Zarma"] = "dje", ["Zauzou"] = "zal", ["Zay"] = "zwa", ["Zayein Karen"] = "kxk", ["Zayse-Zergulla"] = "zay", ["Zazao"] = "jaj", ["Zbu"] = "sit-zbu", ["Zealandic"] = "zea", ["Zeem"] = "zua", ["Zemba"] = "dhm", ["Zeme Naga"] = "nzm", ["Zenag"] = "zeg", ["Zenaga"] = "zen", ["Zenzontepec Chatino"] = "czn", ["Zhaba"] = "zhb", ["Zhang-Zhung"] = "xzh", ["Zhenan Min"] = "nan-zhe", ["Zhire"] = "zhi", ["Zhoa"] = "zhw", ["Zhár"] = "jjr", ["Zia"] = "zia", ["Zialo"] = "zil", ["Zigula"] = "ziw", ["Zimakani"] = "zik", ["Zimba"] = "zmb", ["Zimbabwe Sign Language"] = "zib", ["Zinza"] = "zin", ["Zirenkel"] = "zrn", ["Ziriya"] = "zir", ["Zizilivakan"] = "ziz", ["Zo'é"] = "pto", ["Zokhuo"] = "yzk", ["Zoogocho Zapotec"] = "zpq", ["Zotung Chin"] = "czt", ["Zou"] = "zom", ["Zulgo-Gemzek"] = "gnd", ["Zumaya"] = "zuy", ["Zumbun"] = "jmb", ["Zuwara"] = "ber-zuw", ["Zyphe"] = "zyp", ["Záparo"] = "zro", ["Àhàn"] = "ahn", ["Áncá"] = "acb", ["Äiwoo"] = "nfl", ["Äynu"] = "aib", ["Ömie"] = "aom", ["Önge"] = "oon", ["ǀXam"] = "xam", ["ǁAni"] = "hnh", ["ǁGana"] = "gnk", ["ǁXegwi"] = "xeg", ["ǂHoan"] = "huc", ["ǃKung"] = "khi-kun", ["ǃXóõ"] = "nmn", ["กงกัณ"] = "kok", ["กบาลัน"] = "ckv", ["กรีก"] = "el", ["กรีกแบบไมซีนี"] = "gmy", ["กรีกโบราณ"] = "grc", ["กรีนแลนด์"] = "kl", ["กวางตุ้ง"] = "yue", ["กอกบอรอก"] = "trp", ["กอท"] = "got", ["กอทแบบไครเมีย"] = "gme-cgo", ["กอล"] = "cel-gau", ["กะดู"] = "zkd", ["กะตูตะวันตก"] = "kuf", ["กะตูตะวันออก"] = "ktv", ["กะยัน"] = "pdu", ["กะยาตะวันตก"] = "kyu", ["กะยาตะวันออก"] = "eky", ["กะเหรี่ยงดั้งเดิม"] = "kar-pro", ["กะเหรี่ยงปะโอ"] = "blk", ["กะเหรี่ยงสะกอ"] = "ksw", ["กะเหรี่ยงโปตะวันตก"] = "pwo", ["กะเหรี่ยงโปตะวันออก"] = "kjp", ["กะเหรี่ยงโปเหนือ"] = "pww", ["กะเหรี่ยงโปแพร่"] = "kjt", ["กะไบล์"] = "kab", ["กัจฉ์"] = "kfr", ["กันกานาอือ"] = "kne", ["กันกานาอือเหนือ"] = "xnn", ["กันนฑะ"] = "kn", ["กัมเบอรา"] = "xbr", ["กัวรานีคลาสสิก"] = "gn-cls", ["กัวรานีแบบปารากวัย"] = "gug", ["กั้น"] = "gan", ["กากาอุซ"] = "gag", ["กาดาซันชายฝั่ง"] = "kzj", ["กาตาลา"] = "ca", ["กาตาลาเก่า"] = "roa-oca", ["กานูรี"] = "kr", ["กาปัมปางัน"] = "pam", ["กามรูป"] = "inc-kam", ["การากัลปัก"] = "kaa", ["กาลากัน"] = "kqe", ["กาลากันแบบกากัน"] = "kll", ["กาลากันแบบตากาเกาลู"] = "klg", ["กาลิเซีย"] = "gl", ["กาลิเซีย-โปรตุเกสเก่า"] = "roa-opt", ["กาเรา"] = "kyj", ["กาโม"] = "gmv", ["กาโร"] = "grt", ["กิลเบิร์ต"] = "gil", ["กีนาบาตางันตอนบน"] = "dmg", ["กืออึซ"] = "gez", ["กุรุข"] = "kru", ["กูนียันดี"] = "gni", ["กูย"] = "kdt", ["กูร์ดั้งเดิม"] = "nic-gur-pro", ["กฺ๋อง"] = "ugo", ["กเบดั้งเดิม"] = "alv-gbe-pro", ["ขมุ"] = "kjg", ["ขมุอิกดั้งเดิม"] = "mkh-khm-pro", ["ขร้า-ไทดั้งเดิม"] = "qfa-tak-pro", ["ขร้าดั้งเดิม"] = "qfa-kra-pro", ["ครี"] = "cr", ["ครีโอลกาบูเวร์ดี"] = "kea", ["ครีโอลกินี-บิสเซา"] = "pov", ["ครีโอลจาเมกา"] = "jam", ["ครีโอลมอริเชียส"] = "mfe", ["ครีโอลมาเก๊า"] = "mzs", ["ครีโอลลุยเซียนา"] = "lou", ["ครีโอลเฮติ"] = "ht", ["คองโก"] = "kg", ["คอปติก"] = "cop", ["คอร์ซิกา"] = "co", ["คอร์นวอลล์"] = "kw", ["คอร์นวอลล์เก่า"] = "oco", ["คอเคเซียนตะวันตกเฉียงเหนือดั้งเดิม"] = "cau-nwc-pro", ["คอเคเซียนตะวันออกเฉียงเหนือดั้งเดิม"] = "cau-nec-pro", ["คังรังชือ"] = "ane", ["คัลมึค"] = "xal", ["คาคัส"] = "kjh", ["คาชุบ"] = "csb", ["คาซัค"] = "kk", ["คาซี"] = "kha", ["คานธาระ"] = "pgd", ["คาบาร์เดีย"] = "kbd", ["คาร์ทเวเลียนดั้งเดิม"] = "ccs-pro", ["คาร์นิโคบาร์"] = "caq", ["คาลาเมียนดั้งเดิม"] = "phi-kal-pro", ["คาเซียนดั้งเดิม"] = "aav-khs-pro", ["คาเรเลีย"] = "krl", ["คำตี้"] = "kht", ["คำเมือง"] = "nod", ["คีตัน"] = "zkt", ["คีร์กีซ"] = "ky", ["คุชราต"] = "gu", ["คุชราตกลาง"] = "inc-mgu", ["คุชราตเก่า"] = "inc-ogu", ["คูนิงามิ"] = "xug", ["คูมาน"] = "qwm", ["คูมุก"] = "kum", ["งูนีดั้งเดิม"] = "bnt-ngu-pro", ["จอร์เจีย"] = "ka", ["จอร์เจียน-แซนดั้งเดิม"] = "ccs-gzn-pro", ["จอร์เจียเก่า"] = "oge", ["จักมา"] = "ccp", ["จามตะวันตก"] = "cja", ["จามตะวันออก"] = "cjm", ["จามิกดั้งเดิม"] = "cmc-pro", ["จิ่งเผาะ"] = "kac", ["จิ้น"] = "cjy", ["จีน"] = "zh", ["จีนกลาง"] = "cmn", ["จีนยุคกลาง"] = "ltc", ["จีนวรรณกรรม"] = "lzh", ["จีนเก่า"] = "och", ["จุน"] = "cuq", ["จูร์เชน"] = "juc", ["จ้วง"] = "za", ["จ้วงแบบจั่วเจียง"] = "zzj", ["จ้วงแบบหนง"] = "zhn", ["ชวา"] = "jv", ["ชวาเก่า"] = "kaw", ["ชวาแบบนิวแคลิโดเนีย"] = "jas", ["ชวาแบบแคริบเบียน"] = "jvn", ["ชอง"] = "cog", ["ชากาทาย"] = "chg", ["ชาดิกดั้งเดิม"] = "cdc-pro", ["ชาดิกตอนกลางดั้งเดิม"] = "cdc-cbm-pro", ["ชาบากาโน"] = "cbk", ["ชามอร์โร"] = "ch", ["ชุกชี"] = "ckt", ["ชูวัช"] = "cv", ["ซอกดิกดั้งเดิม"] = "ira-sgc-pro", ["ซองคา"] = "dz", ["ซอร์บตอนบน"] = "hsb", ["ซอร์บตอนล่าง"] = "dsb", ["ซังโก"] = "sg", ["ซันสการ์"] = "zau", ["ซัมบัล"] = "xsb", ["ซัสซารี"] = "sdc", ["ซากีซายา"] = "szy", ["ซาคา"] = "sah", ["ซาซา"] = "zza", ["ซาปา"] = "tys", ["ซามัว"] = "sm", ["ซามาตอนกลาง"] = "sml", ["ซามาแบบปางูตารัน"] = "slm", ["ซามิกดั้งเดิม"] = "smi-pro", ["ซามีเหนือ"] = "se", ["ซามีแบบกิลดิน"] = "sjd", ["ซามีแบบปีเต"] = "sje", ["ซามีแบบลูเล"] = "smj", ["ซามีแบบอีนารี"] = "smn", ["ซามีใต้"] = "sma", ["ซาราวักเหนือดั้งเดิม"] = "poz-swa-pro", ["ซาร์ดิเนีย"] = "sc", ["ซาลาร์"] = "slr", ["ซาโฮ"] = "ssy", ["ซิซิลี"] = "scn", ["ซินดาริน"] = "sjn", ["ซีกายานา"] = "sky", ["ซีดามา"] = "sid", ["ซีโน-ทิเบตันดั้งเดิม"] = "sit-pro", ["ซุนดา"] = "su", ["ซูก"] = "tsg", ["ซูทู"] = "st", ["ซูทูเหนือ"] = "nso", ["ซูนี"] = "zun", ["ซูรีเกาโนน"] = "sgd", ["ซูลาเวซีใต้ดั้งเดิม"] = "poz-ssw-pro", ["ซูลู"] = "zu", ["ซูเมอร์"] = "sux", ["ซูโดเวีย"] = "xsv", ["ญัฮกุร"] = "cbn", ["ญี่ปุ่น"] = "ja", ["ญี่ปุ่นเก่า"] = "ojp", ["ญ้อ"] = "nyw", ["ดราวิเดียนดั้งเดิม"] = "dra-pro", ["ดราวิเดียนตอนกลางดั้งเดิม"] = "dra-cen-pro", ["ดราวิเดียนเหนือดั้งเดิม"] = "dra-nor-pro", ["ดราวิเดียนใต้ดั้งเดิม"] = "dra-sou-pro", ["ดราวิเดียนใต้ที่สองดั้งเดิม"] = "dra-sdt-pro", ["ดราวิเดียนใต้ที่หนึ่งดั้งเดิม"] = "dra-sdo-pro", ["ดัตช์"] = "nl", ["ดัตช์กลาง"] = "dum", ["ดัตช์เก่า"] = "odt", ["ดาโคตา"] = "dak", ["ดุงกาน"] = "dng", ["ดูซุนตอนกลาง"] = "dtp", ["ตงเซียง"] = "sce", ["ตองงา"] = "to", ["ตังกุต"] = "txg", ["ตันดากาโนน"] = "tgn", ["ตั่ย"] = "tyz", ["ตากาล็อก"] = "tl", ["ตางัม"] = "sit-tgm", ["ตาตาร์"] = "tt", ["ตาตาร์แบบไครเมีย"] = "crh", ["ตาอีโน"] = "tnq", ["ตาฮีตี"] = "ty", ["ตีรูไร"] = "tiy", ["ตีโดเร"] = "tvo", ["ตุมซุก"] = "xtq", ["ตุรกี"] = "tr", ["ตุรกีแบบออตโตมัน"] = "ota", ["ตุรกีแบบอานาโตเลียเก่า"] = "trk-oat", ["ตุรุง"] = "try", ["ตูปี-กัวรานีดั้งเดิม"] = "tup-gua-pro", ["ตูปีเก่า"] = "tpw", ["ตูลู"] = "tcy", ["ตูวา"] = "tyv", ["ตูวาลู"] = "tvl", ["ตูเปียนดั้งเดิม"] = "tup-pro", ["ตโบลี"] = "tbl", ["ต้งเหนือ"] = "doc", ["ต้งใต้"] = "kmc", ["ทมิฬ"] = "ta", ["ทมิฬเก่า"] = "oty", ["ตอกปีซิน"] = "tpi", ["ทะวืง"] = "thm", ["ทาจิก"] = "tg", ["ทาบาซารัน"] = "tab", ["ทิเบต"] = "bo", ["ทิเบตคลาสสิก"] = "xct", ["ทิเบตเก่า"] = "otb", ["ทือกรึญญา"] = "ti", ["ทือเกร"] = "tig", ["นอซู"] = "ii", ["นอร์มัน"] = "nrf", ["นอร์สดั้งเดิม"] = "gmq-pro", ["นอร์สเก่า"] = "non", ["นอร์เวย์"] = "no", ["นอร์เวย์กลาง"] = "gmq-mno", ["นอร์เวย์แบบนือนอสก์"] = "nn", ["นอร์เวย์แบบบุ๊กมอล"] = "nb", ["นัคดั้งเดิม"] = "cau-nkh-pro", ["นาวัตล์"] = "nah", ["นาวัตล์คลาสสิก"] = "nci", ["นาวัตล์ตอนกลาง"] = "nhn", ["นาวันดั้งเดิม"] = "azc-nah-pro", ["นาวาโฮ"] = "nv", ["นาอูรู"] = "na", ["นาโปลี"] = "nap", ["นิวเคลียร์พอลินีเชียนดั้งเดิม"] = "poz-pnp-pro", ["นิวเบียเก่า"] = "onw", ["นิโคบารีสดั้งเดิม"] = "aav-nic-pro", ["นิโคบาร์กลาง"] = "ncb", ["นีวเว"] = "niu", ["นุง"] = "nut", ["นูเบียนดั้งเดิม"] = "nub-pro", ["บราฮุอี"] = "brh", ["บริทอนิกดั้งเดิม"] = "cel-bry-pro", ["บรูตะวันตก"] = "brv", ["บรูตะวันออก"] = "bru", ["บลาการ์"] = "beu", ["บอลโต-สลาวิกดั้งเดิม"] = "ine-bsl-pro", ["บะห์นัร"] = "bdq", ["บัตส์"] = "bbl", ["บันจาร์"] = "bjn", ["บัมบารา"] = "bm", ["บัลติ"] = "bft", ["บัลแกเรีย"] = "bg", ["บาลี"] = "pi", ["บาวาเรีย"] = "bar", ["บาสก์"] = "eu", ["บาสก์ดั้งเดิม"] = "euq-pro", ["บาหลี"] = "ban", ["บาเจาแบบอินโดนีเซีย"] = "bdl", ["บาเจาแบบเวสต์โคสต์"] = "bdr", ["บาโลจ"] = "bal", ["บิสลามา"] = "bi", ["บีซู"] = "bzi", ["บีนูกิด"] = "bkd", ["บีโคลตอนกลาง"] = "bcl", ["บูกิส"] = "bug", ["บูร์บอแน-แบรีชง"] = "roa-bbn", ["บูร์ยัต"] = "bua", ["ปนัร"] = "pbv", ["ปนัร-คาซี-ลึงงัมดั้งเดิม"] = "aav-pkl-pro", ["ปยู"] = "pyx", ["ปรากฤต"] = "pra", ["ปรากฤตแบบอโศก"] = "inc-ash", ["ปะหล่องดั้งเดิม"] = "mkh-pal-pro", ["ปักษ์ใต้"] = "sou", ["ปังควาฬฺ"] = "pgg", ["ปัญจาบ"] = "pa", ["ปัญจาบเก่า"] = "inc-opa", ["ปาทาน"] = "ps", ["ปาทานดั้งเดิม"] = "ira-pat-pro", ["ปาลาวาโนตอนกลาง"] = "plc", ["ปาลาวาโนตะวันตกเฉียงใต้"] = "plv", ["ปาลาวาโนแบบบรูกส์พอยต์"] = "plw", ["ปาเปียเมนตู"] = "pap", ["ปาเลา"] = "pau", ["ปาโกะห์"] = "pac", ["ปีการ์"] = "pcd", ["ปีปิล"] = "ppl", ["ปีเยมอนเต"] = "pms", ["ปูกาปูกา"] = "pkp", ["ปู้อี"] = "pcc", ["ผิงเหนือ"] = "cnp", ["ผิงใต้"] = "csp", ["ผูเซียน"] = "cpx", ["ผู้น้อย"] = "pho", ["ผู้ไท"] = "pht", ["ฝรั่งเศส"] = "fr", ["ฝรั่งเศสกลาง"] = "frm", ["ฝรั่งเศสเก่า"] = "fro", ["พทคะ"] = "bfq", ["พม่า"] = "my", ["พม่าเก่า"] = "obr", ["พรัช"] = "bra", ["พวน"] = "phu", ["พอลินีเชียนดั้งเดิม"] = "poz-pol-pro", ["พอลินีเชียนตะวันออกดั้งเดิม"] = "poz-pep-pro", ["พิหาร"] = "bh", ["พ่าเก"] = "phk", ["ฟรียูลี"] = "fur", ["ฟรีเชียตะวันตก"] = "fy", ["ฟรีเชียเก่า"] = "ofs", ["ฟรีเชียเหนือ"] = "frr", ["ฟรีเชียแบบซาเทอร์ลันท์"] = "stq", ["ฟร็องโก-พรอว็องส์"] = "frp", ["ฟาลา"] = "fax", ["ฟาลิสกุส"] = "xfa", ["ฟินนิกดั้งเดิม"] = "urj-fin-pro", ["ฟินิเชีย"] = "phn", ["ฟินแลนด์"] = "fi", ["ฟิลิปปินส์ดั้งเดิม"] = "phi-pro", ["ฟีจี"] = "fj", ["ฟูลา"] = "ff", ["มคหะ"] = "mag", ["มงตาแญ"] = "moe", ["มณีปุระ"] = "mni", ["มณีปุระเก่า"] = "omp", ["มนองตอนกลาง"] = "cmo", ["มนองใต้"] = "mnn", ["มราฐี"] = "mr", ["มราฐีเก่า"] = "omr", ["มลยาฬัม"] = "ml", ["มลายูตอนกลาง"] = "pse", ["มลายูแบบตรังกานู"] = "poz-ter", ["มลายูแบบบรูไน"] = "kxd", ["มลายูแบบปัตตานี"] = "mfa", ["มลายูแบบเกอดะฮ์"] = "meo", ["มวานี"] = "wmw", ["มอกชา"] = "mdf", ["มองโกลิกดั้งเดิม"] = "xgn-pro", ["มองโกเลีย"] = "mn", ["มองโกเลียกลาง"] = "xng", ["มองโกเลียคลาสสิก"] = "cmg", ["มอญ"] = "mnw", ["มอญ-เขมรดั้งเดิม"] = "mkh-pro", ["มอญกลาง"] = "mkh-mmn", ["มอญดั้งเดิม"] = "mkh-mnc-pro", ["มอญเก่า"] = "omx", ["มอญแบบไทย"] = "mnw-tha", ["มอลตา"] = "mt", ["มอแซนแดรอน"] = "mzn", ["มัล"] = "mlf", ["มัลดีฟส์"] = "dv", ["มัสบาเต"] = "msb", ["มากัซซาร์"] = "mak", ["มากินดาเนา"] = "mdh", ["มาซิโดเนีย"] = "mk", ["มายันดั้งเดิม"] = "myn-pro", ["มาราเนา"] = "mrw", ["มาร์วาร์"] = "mwr", ["มาร์แชลล์"] = "mh", ["มาลากาซี"] = "mg", ["มาลาโย-จามิกดั้งเดิม"] = "poz-mcm-pro", ["มาลาโย-ซุมบาวันดั้งเดิม"] = "poz-msa-pro", ["มาลาโย-พอลินีเชียนดั้งเดิม"] = "poz-pro", ["มาลาโย-พอลินีเชียนตอนกลาง-ตะวันออกดั้งเดิม"] = "poz-cet-pro", ["มาลาโย-พอลินีเชียนตะวันออกดั้งเดิม"] = "pqe-pro", ["มาวรี"] = "mi", ["มาเลย์อิกดั้งเดิม"] = "poz-mly-pro", ["มาเลเซีย"] = "ms", ["มาไซ"] = "mas", ["มิงเกรเลีย"] = "xmf", ["มิยาโกะ"] = "mvi", ["มีนังกาเบา"] = "min", ["มีรังดา"] = "mwl", ["มีโซ"] = "lus", ["มือรัสเซีย"] = "rsl", ["มืออินเดีย"] = "ins", ["มืออินโดนีเซีย"] = "inl", ["มืออเมริกัน"] = "ase", ["มือเนปาล"] = "nsp", ["มือไทย"] = "tsq", ["มุนดาดั้งเดิม"] = "mun-pro", ["มูซี"] = "mui", ["ม้ง-เมี่ยนดั้งเดิม"] = "hmx-pro", ["ม้งขาว"] = "mww", ["ม้งดั้งเดิม"] = "hmn-pro", ["ม้งเขียว"] = "hnj", ["ยอง"] = "yno", ["ยอลอ"] = "yol", ["ยะไข่"] = "rki", ["ยากัน"] = "yka", ["ยามานา"] = "yag", ["ยามี"] = "tao", ["ยาเอยามะ"] = "rys", ["ยิดดิช"] = "yi", ["ยุปปิก"] = "esu", ["ยูกริกดั้งเดิม"] = "urj-ugr-pro", ["ยูการิต"] = "uga", ["ยูราลิกดั้งเดิม"] = "urj-pro", ["ยูเครน"] = "uk", ["ยูโต-แอซเทกันดั้งเดิม"] = "azc-pro", ["รวันดา-รุนดี"] = "rw", ["รัสเซีย"] = "ru", ["ราชพังสี"] = "rjs", ["ราปานูอี"] = "rap", ["ราโรโตงา"] = "rar", ["ริฟ"] = "rif", ["รูซินแบบคาร์พาเทีย"] = "rue", ["รูซินแบบพันโนเนีย"] = "rsk", ["ร่วม"] = "mul", ["ลอมบาร์ด"] = "lmo", ["ละติน"] = "la", ["ลัก"] = "lbe", ["ลักเกีย"] = "lbc", ["ลักเซมเบิร์ก"] = "lb", ["ลัซ"] = "lzz", ["ลัตเกล"] = "ltg", ["ลัตเวีย"] = "lv", ["ลัมปุงกิกดั้งเดิม"] = "poz-lgx-pro", ["ลัมโบยา"] = "lmy", ["ลาดัก"] = "lbj", ["ลาดิน"] = "lld", ["ลาดิโน"] = "lad", ["ลาว"] = "lo", ["ลิงกาลา"] = "ln", ["ลิทัวเนีย"] = "lt", ["ลิทัวเนียเก่า"] = "olt", ["ลินดู"] = "klw", ["ลิมบู"] = "lif", ["ลิมเบิร์ก"] = "li", ["ลิววี"] = "olo", ["ลีกูเรีย"] = "lij", ["ลีสู่"] = "lis", ["ลีโวเนีย"] = "liv", ["ลึงงัม"] = "lyg", ["ลูกันดา"] = "lg", ["ลูอิชดั้งเดิม"] = "sit-luu-pro", ["วอลตา-คองโกดั้งเดิม"] = "nic-vco-pro", ["วอลตา-ไนเจอร์ดั้งเดิม"] = "alv-von-pro", ["วันดัล"] = "xvn", ["วัลลูน"] = "wa", ["วาราโอ"] = "wba", ["วาไร"] = "war", ["วินเนอเบโก"] = "win", ["วีลามอวิตแซ"] = "wym", ["สกอต"] = "sco", ["สมราย"] = "smu", ["สลาวอนิกคริสตจักรเก่า"] = "cu", ["สลาวิกดั้งเดิม"] = "sla-pro", ["สลาวิกตะวันออกเก่า"] = "orv", ["สวานา"] = "tn", ["สวาฮีลี"] = "sw", ["สวีเดน"] = "sv", ["สวีเดนเก่า"] = "gmq-osw", ["สะโอจ"] = "scq", ["สันถาลี"] = "sat", ["สันสกฤต"] = "sa", ["สำเร"] = "sxm", ["สิกขิม"] = "sip", ["สิงหล"] = "si", ["สินธ์"] = "sd", ["สิเลฏ"] = "syl", ["สุ่ย"] = "swi", ["สเปน"] = "es", ["สเปนเก่า"] = "osp", ["สโลวัก"] = "sk", ["สโลวักเก่า"] = "zlw-osk", ["สโลวินช์"] = "zlw-slv", ["สโลวีเนีย"] = "sl", ["หง่วน"] = "nuo", ["หมะ"] = "cma", ["หมิ่นดั้งเดิม"] = "zhx-min-pro", ["หมิ่นตอนกลาง"] = "czo", ["หมิ่นตะวันออก"] = "cdo", ["หมิ่นเหนือ"] = "mnp", ["หมิ่นใต้"] = "nan", ["หล่อยแอว๋"] = "luh", ["ห่อยซัน"] = "zhx-tai", ["อวัธ"] = "awa", ["ออสซีเซีย"] = "os", ["ออสโตรนีเซียนดั้งเดิม"] = "map-pro", ["ออสโตรเอเชียติกดั้งเดิม"] = "aav-pro", ["ออโรโม"] = "om", ["อะดีเกยา"] = "ady", ["อะตง"] = "aot", ["อะวาร์"] = "av", ["อะวาร์เก่า"] = "oav", ["อะแพชีตะวันตก"] = "apw", ["อักลัน"] = "akl", ["อังกฤษ"] = "en", ["อังกฤษกลาง"] = "enm", ["อังกฤษเก่า"] = "ang", ["อับคาเซีย"] = "ab", ["อัมฮารา"] = "am", ["อัมโมน"] = "sem-amm", ["อัลไตเหนือ"] = "atv", ["อัลไตใต้"] = "alt", ["อัสตูเรียส"] = "ast", ["อัสสัม"] = "as", ["อัสสัมกลาง"] = "inc-mas", ["อัสสัมช่วงต้น"] = "inc-oas", ["อากูตายา"] = "agn", ["อาข่า"] = "ahk", ["อาคัน"] = "ak", ["อาซี"] = "bno", ["อานาโตเลียนดั้งเดิม"] = "ine-ana-pro", ["อาบาซา"] = "abq", ["อาฟรีกานส์"] = "af", ["อาฟาร์"] = "aa", ["อามามิโอชิมะเหนือ"] = "ryn", ["อามามิโอชิมะใต้"] = "ams", ["อารากอน"] = "an", ["อารามายา"] = "arc", ["อาร์มีเนีย"] = "hy", ["อาร์มีเนียกลาง"] = "axm", ["อาร์มีเนียนดั้งเดิม"] = "hyx-pro", ["อาร์มีเนียเก่า"] = "xcl", ["อาลูตีก"] = "ems", ["อาหม"] = "aho", ["อาหรับ"] = "ar", ["อาหรับแบบซูดาน"] = "apd", ["อาหรับแบบตูนิเซีย"] = "aeb", ["อาหรับแบบทาจิกิสถาน"] = "abh", ["อาหรับแบบบาห์เรน"] = "abv", ["อาหรับแบบลิเบีย"] = "ayl", ["อาหรับแบบลิแวนต์ใต้"] = "ajp", ["อาหรับแบบอันดะลุส"] = "xaa", ["อาหรับแบบอิรัก"] = "acm", ["อาหรับแบบอียิปต์"] = "arz", ["อาหรับแบบอุซเบกิสถาน"] = "auz", ["อาหรับแบบฮิญาซ"] = "acw", ["อาหรับแบบเมโสโปเตเมียเหนือ"] = "ayp", ["อาหรับแบบเยเมน"] = "ayn", ["อาหรับแบบแอลจีเรีย"] = "arq", ["อาหรับแบบโมร็อกโก"] = "ary", ["อาหรับแบบโอมาน"] = "acx", ["อาหรับแบบไซปรัส"] = "acy", ["อาเจะฮ์"] = "ace", ["อาเซอร์ไบจาน"] = "az", ["อาเนตยูม"] = "aty", ["อาเบ"] = "aba", ["อิกโบ"] = "ig", ["อิงกุช"] = "inh", ["อิงเกรีย"] = "izh", ["อิตาลิกดั้งเดิม"] = "itc-pro", ["อิตาลี"] = "it", ["อินุกติตุต"] = "iu", ["อินุอิตดั้งเดิม"] = "esx-inu-pro", ["อินเทร์ลิงเกว"] = "ie", ["อินเทอร์ลิงกวา"] = "ia", ["อินโด-ยูโรเปียนดั้งเดิม"] = "ine-pro", ["อินโด-อารยันดั้งเดิม"] = "inc-pro", ["อินโด-อิเรเนียนดั้งเดิม"] = "iir-pro", ["อินโดนีเซีย"] = "id", ["อิสเตรีย"] = "ist", ["อิเรเนียนดั้งเดิม"] = "ira-pro", ["อีดาอัน"] = "dbj", ["อีทรัสคัน"] = "ett", ["อีบัน"] = "iba", ["อียิปต์"] = "egy", ["อีรานุน"] = "ill", ["อีสาน"] = "tts", ["อีโด"] = "io", ["อีโลกาโน"] = "ilo", ["อุซเบก"] = "uz", ["อุดมูร์ต"] = "udm", ["อุตซิตา"] = "oc", ["อุตซิตาเก่า"] = "pro", ["อุนเซอร์ด็อยทช์"] = "uln", ["อุมเบรีย"] = "xum", ["อุยกูร์"] = "ug", ["อุยกูร์เก่า"] = "oui", ["อูดี"] = "udi", ["อูรดู"] = "ur", ["อูรักลาโวยจ"] = "urk", ["อู๋"] = "wuu", ["อเวสตะ"] = "ae", ["อ่ายตน"] = "aio", ["ฮกเกี้ยน"] = "nan-hbl", ["ฮังการี"] = "hu", ["ฮังการีเก่า"] = "ohu", ["ฮาชอง"] = "haj", ["ฮานูโนโอ"] = "hnn", ["ฮาวาย"] = "haw", ["ฮินดี"] = "hi", ["ฮินดีเก่า"] = "inc-ohi", ["ฮินดีแบบฟีจี"] = "hif", ["ฮินดูสตานีแบบแคริบเบียน"] = "hns", ["ฮีบรู"] = "he", ["ฮีรีโมตู"] = "ho", ["ฮีลีไกโนน"] = "hil", ["ฮุนสริก"] = "hrx", ["ฮูร์เรีย"] = "xhu", ["เกชวนดั้งเดิม"] = "qwe-pro", ["เกชัว"] = "qu", ["เกชัวคลาสสิก"] = "qwc", ["เกรตอันดามันนีสดั้งเดิม"] = "qfa-adm-pro", ["เกอฮอ"] = "kpm", ["เกาหลี"] = "ko", ["เกาหลีกลาง"] = "okm", ["เกาหลีดั้งเดิม"] = "qfa-kor-pro", ["เกาหลีเก่า"] = "oko", ["เกาหลีใหม่ช่วงต้น"] = "ko-ear", ["เกโกโย"] = "ki", ["เขมร"] = "km", ["เขมรกลาง"] = "xhm", ["เขมรดั้งเดิม"] = "mkh-kmr-pro", ["เขมรเก่า"] = "okz", ["เขมรเหนือ"] = "kxm", ["เขิน"] = "kkh", ["เคลติกดั้งเดิม"] = "cel-pro", ["เควนยา"] = "qya", ["เคอร์ดิชดั้งเดิม"] = "ku-pro", ["เคิร์ดตอนกลาง"] = "ckb", ["เคิร์ดเหนือ"] = "kmr", ["เจวา"] = "ny", ["เจอร์แมนิกดั้งเดิม"] = "gem-pro", ["เจอร์แมนิกตะวันตกดั้งเดิม"] = "gmw-pro", ["เจียเม่า"] = "jio", ["เฉ่าเหมียว"] = "cov", ["เชจู"] = "jje", ["เชเชน"] = "ce", ["เชเยนน์"] = "chy", ["เชโรกี"] = "chr", ["เช็ก"] = "cs", ["เช็กเก่า"] = "zlw-ocs", ["เซบัวโน"] = "ceb", ["เซมิติกดั้งเดิม"] = "sem-pro", ["เซมิติกตะวันตกดั้งเดิม"] = "sem-wes-pro", ["เซอร์โบ-โครเอเชีย"] = "sh", ["เซอไม"] = "sea", ["เซียง"] = "hsn", ["เดนมาร์ก"] = "da", ["เดนมาร์กเก่า"] = "gmq-oda", ["เดาโร"] = "dwr", ["เตตุน"] = "tet", ["เตลูกู"] = "te", ["เตอร์กิกดั้งเดิม"] = "trk-pro", ["เตอร์กิกเก่า"] = "otk", ["เตอร์นาเต"] = "tft", ["เตอเมียร์"] = "tea", ["เติร์กเมน"] = "tk", ["เทาส์"] = "twf", ["เนปาล"] = "ne", ["เนวาร์"] = "new", ["เนวาร์กลาง"] = "nwx", ["เนวาร์คลาสสิก"] = "nwc", ["เนเกอร์ฮอลันดส์"] = "dcr", ["เบ"] = "onb", ["เบ-ไทดั้งเดิม"] = "qfa-bet-pro", ["เบงกอล"] = "bn", ["เบงกอลกลาง"] = "inc-mbn", ["เบงกอลเก่า"] = "inc-obn", ["เบดั้งเดิม"] = "qfa-onb-pro", ["เบนูเอ-คองโกดั้งเดิม"] = "nic-bco-pro", ["เบรอตง"] = "br", ["เบรอตงกลาง"] = "xbm", ["เบรอตงเก่า"] = "obt", ["เบลารุส"] = "be", ["เบอตาวี"] = "bew", ["เบอราวัน"] = "lod", ["เบอร์เบอร์ดั้งเดิม"] = "ber-pro", ["เบอร์เบอร์แบบตูนีเซีย"] = "sds", ["เปอร์มิกดั้งเดิม"] = "urj-prm-pro", ["เปอร์เซีย"] = "fa", ["เปอร์เซียกลาง"] = "pal", ["เปอร์เซียเก่า"] = "peo", ["เพลาท์ดิทช์"] = "pdt", ["เมวาร์"] = "mtr", ["เมี่ยน"] = "ium", ["เมี่ยนดั้งเดิม"] = "hmx-mie-pro", ["เยอรมัน"] = "de", ["เยอรมันตอนกลางตะวันออก"] = "gmw-ecg", ["เยอรมันต่ำ"] = "nds", ["เยอรมันต่ำกลาง"] = "gml", ["เยอรมันต่ำแบบเยอรมนี"] = "nds-de", ["เยอรมันสูงกลาง"] = "gmh", ["เยอรมันสูงเก่า"] = "goh", ["เยอรมันแบบซิพเซอร์"] = "gmw-zps", ["เยอรมันแบบว็อลกา"] = "gmw-vog", ["เยอรมันแบบอลามันเนีย"] = "gsw", ["เยอรมันแบบเพนซิลเวเนีย"] = "pdc", ["เรอหวั่ง"] = "raw", ["เลซกี"] = "lez", ["เลออน"] = "roa-leo", ["เลออนเก่า"] = "roa-ole", ["เลอเวือะตะวันตก"] = "lcp", ["เลอเวือะตะวันออก"] = "lwl", ["เวนดา"] = "ve", ["เวปส์"] = "vep", ["เวลส์"] = "cy", ["เวลส์กลาง"] = "wlm", ["เวลส์เก่า"] = "owl", ["เวอโร"] = "vro", ["เวียดนาม"] = "vi", ["เวียดนามกลาง"] = "mkh-mvi", ["เวียตติกดั้งเดิม"] = "mkh-vie-pro", ["เวเนโต"] = "vec", ["เศรปา"] = "xsr", ["เสฉวน"] = "zhx-sic", ["เหมื่อง"] = "mtq", ["เอชเตฮาร์ด"] = "esh", ["เอซเตรมาดูรา"] = "ext", ["เอมีเลีย"] = "egl", ["เอร์เซีย"] = "myv", ["เอสกิโมดั้งเดิม"] = "esx-esk-pro", ["เอสเปรันโต"] = "eo", ["เอสโตเนีย"] = "et", ["เอเว"] = "ee", ["เอเวนค์"] = "evn", ["เอเว็น"] = "eve", ["เอโดม"] = "xdm", ["เฮลเลนิกดั้งเดิม"] = "grk-pro", ["เฮาซา"] = "ha", ["เฮเรโร"] = "hz", ["แกลิกแบบสกอตแลนด์"] = "gd", ["แคชเมียร์"] = "ks", ["แคะ"] = "hak", ["แจพอนิกดั้งเดิม"] = "jpx-pro", ["แซกซันเก่า"] = "osx", ["แดลเมเชีย"] = "dlm", ["แต้จิ๋ว"] = "nan-tws", ["แบกเตรีย"] = "xbc", ["แบชเคียร์"] = "ba", ["แบนทอยด์ดั้งเดิม"] = "nic-bod-pro", ["แบนทูดั้งเดิม"] = "bnt-pro", ["แบล็กสปีช"] = "art-bsp", ["แพ็กเจ"] = "pkc", ["แฟโร"] = "fo", ["แมงซ์"] = "gv", ["แมนจู"] = "mnc", ["แสก"] = "skb", ["แอกแคด"] = "akk", ["แอตแลนติก-คองโกดั้งเดิม"] = "alv-pro", ["แอฟโฟรเอเชียติกดั้งเดิม"] = "afa-pro", ["แอลกองเคียนดั้งเดิม"] = "alg-pro", ["แอลจิกดั้งเดิม"] = "aql-pro", ["แอลฟ์ดาเลิน"] = "ovd", ["แอละแบมา"] = "akz", ["แอลเบเนีย"] = "sq", ["แอลเบเนียนดั้งเดิม"] = "sqj-pro", ["โกฟา"] = "gof", ["โคซา"] = "xh", ["โคณฑี"] = "gon", ["โคตาน"] = "kho", ["โคทาวา"] = "avk", ["โจว"] = "tsu", ["โชนา"] = "sn", ["โชร์"] = "cjs", ["โซตซิล"] = "tzo", ["โซมาลอยด์ดั้งเดิม"] = "cus-som-pro", ["โซมาลี"] = "so", ["โซ่ง"] = "soa", ["โตทา"] = "tcx", ["โตฟา"] = "kim", ["โทกูโนชิมะ"] = "tkn", ["โทแคเรียนดั้งเดิม"] = "ine-toc-pro", ["โทแคเรียนบี"] = "txb", ["โทแคเรียนเอ"] = "xto", ["โนเวียล"] = "nov", ["โบล"] = "bol", ["โบลีเนา"] = "smk", ["โบโด"] = "brx", ["โบโด-กาโรดั้งเดิม"] = "tbq-bdg-pro", ["โปรตุเกส"] = "pt", ["โปแลนด์"] = "pl", ["โปแลนด์เก่า"] = "zlw-opl", ["โภชปุระ"] = "bho", ["โมกิล"] = "mkj", ["โมอับ"] = "obm", ["โมเชโน"] = "mhn", ["โยกัด"] = "yog", ["โยนางูนิ"] = "yoi", ["โยรง"] = "yox", ["โยรูบอยด์ดั้งเดิม"] = "alv-yrd-pro", ["โยรูบา"] = "yo", ["โยรูบาดั้งเดิม"] = "alv-yor-pro", ["โรมัญญา"] = "rgn", ["โรมานช์"] = "rm", ["โรมานี"] = "rom", ["โรมาเนีย"] = "ro", ["โรฮีนจา"] = "rhg", ["โลจบาน"] = "jbo", ["โลโกโน"] = "arw", ["โลโล-เบอร์มีซดั้งเดิม"] = "tbq-lob-pro", ["โลโลอิชดั้งเดิม"] = "tbq-lol-pro", ["โวต"] = "vot", ["โวลอฟ"] = "wo", ["โวลาปุก"] = "vo", ["โอกินาวะ"] = "ryu", ["โอกิโนเอราบุ"] = "okn", ["โอจิบเว"] = "oj", ["โอซิง"] = "osi", ["โอริยา"] = "or", ["โอริยากลาง"] = "inc-mor", ["โอริยาเก่า"] = "inc-oor", ["โอเชียนิกดั้งเดิม"] = "poz-oce-pro", ["ไซลีเซีย"] = "szl", ["ไทขาว"] = "twh", ["ไทดั้งเดิม"] = "tai-pro", ["ไทดำ"] = "blt", ["ไทตะวันตกเฉียงใต้ดั้งเดิม"] = "tai-swe-pro", ["ไทย"] = "th", ["ไทลื้อ"] = "khb", ["ไทแดง"] = "tyr", ["ไทแมน"] = "tyj", ["ไทแหล่ง"] = "tjl", ["ไทใต้คง"] = "tdd", ["ไทใหญ่"] = "shn", ["ไนเจอร์-คองโกดั้งเดิม"] = "nic-pro", ["ไปวัน"] = "pwn", ["ไมถิลี"] = "mai", ["ไมนอส"] = "omn", ["ไมยา"] = "sks", ["ไมโครนีเซียนดั้งเดิม"] = "poz-mic-pro", ["ไว"] = "vai", ["ไหล"] = "lic", ["ไหลดั้งเดิม"] = "qfa-lic-pro", ["ไหหลำ"] = "hnm", ["ไอซ์แลนด์"] = "is", ["ไอนุ"] = "ain", ["ไอย์มารา"] = "ay", ["ไอริช"] = "ga", ["ไอริชกลาง"] = "mga", ["ไอริชเก่า"] = "sga", ["Ỹaroamë"] = "yro", } nrk5t8cab6qajbld22st4z6fb87uj5k 5723246 5723241 2026-05-20T03:29:03Z OctraBot 3198 5723246 Scribunto text/plain return { ["'Are'are"] = "alu", ["A'ou"] = "aou", ["A-Hmao"] = "hmd", ["A-Pucikwar"] = "apq", ["Aari"] = "aiw", ["Aasax"] = "aas", ["Aba"] = "utp", ["Abaga"] = "abg", ["Abai"] = "poz-abi", ["Abai Sungai"] = "abf", ["Abanyom"] = "abm", ["Abau"] = "aau", ["Abenaki"] = "abe", ["Abenlen Ayta"] = "abp", ["Abidji"] = "abi", ["Abinomn"] = "bsa", ["Abipón"] = "axb", ["Abishira"] = "ash", ["Abom"] = "aob", ["Abon"] = "abo", ["Aborlan Tagbanwa"] = "tbw", ["Abu"] = "ado", ["Abu'"] = "aah", ["Abua"] = "abn", ["Abui"] = "abz", ["Abun"] = "kgr", ["Abung"] = "abl", ["Abure"] = "abu", ["Abureni"] = "mgj", ["Acatepec Me'phaa"] = "tpx", ["Achagua"] = "aca", ["Achang"] = "acn", ["Ache"] = "yif", ["Acheron"] = "acz", ["Achi"] = "acr", ["Acholi"] = "ach", ["Achuar"] = "acu", ["Achumawi"] = "acv", ["Aché"] = "guq", ["Acroá"] = "acs", ["Adai"] = "xad", ["Adamorobe Sign Language"] = "ads", ["Adang"] = "adn", ["Adangbe"] = "adq", ["Adangme"] = "ada", ["Adap"] = "adp", ["Adasen"] = "tiu", ["Adele"] = "ade", ["Adhola"] = "adh", ["Adi"] = "adi", ["Adioukrou"] = "adj", ["Adithinngithigh"] = "dth", ["Adivasi Odia"] = "ort", ["Adiwasi Garasia"] = "gas", ["Adja"] = "ajg", ["Adnyamathanha"] = "adt", ["Adonara"] = "adr", ["Aduge"] = "adu", ["Adzera"] = "adz", ["Adûni"] = "art-adu", ["Aeka"] = "aez", ["Aekyom"] = "awi", ["Aequian"] = "xae", ["Aer"] = "aeq", ["Afade"] = "aal", ["Afghan Sign Language"] = "afg", ["Afitti"] = "aft", ["Afra"] = "ulf", ["Afrihili"] = "afh", ["Afro-Seminole Creole"] = "afs", ["Agarabi"] = "agd", ["Agariya"] = "agi", ["Agatu"] = "agc", ["Agavotaguerra"] = "avo", ["Agawam"] = "alg-aga", ["Aghem"] = "agq", ["Aghu"] = "ahh", ["Aghu Tharrnggala"] = "gtu", ["Aghul"] = "agx", ["Aghwan"] = "xag", ["Agi"] = "aif", ["Agob"] = "kit", ["Agoi"] = "ibm", ["Aguacateca"] = "agu", ["Aguano"] = "aga", ["Aguaruna"] = "agr", ["Aguna"] = "aug", ["Agusan Manobo"] = "msm", ["Agwagwune"] = "yay", ["Ahanta"] = "aha", ["Ahirani"] = "ahr", ["Ahtna"] = "aht", ["Ahwai"] = "nfd", ["Ai-Cham"] = "aih", ["Aighon"] = "aix", ["Aikanã"] = "tba", ["Aiklep"] = "mwg", ["Aimele"] = "ail", ["Aimol"] = "aim", ["Ainbai"] = "aic", ["Aiome"] = "aki", ["Airoran"] = "air", ["Aisi"] = "mmq", ["Aja"] = "aja", ["Ajawa"] = "ajw", ["Ajië"] = "aji", ["Ajyíninka Apurucayali"] = "cpc", ["Ak"] = "akq", ["Aka (Central Africa)"] = "axk", ["Aka (Sudan)"] = "soh", ["Aka-Bea"] = "abj", ["Aka-Bo"] = "akm", ["Aka-Cari"] = "aci", ["Aka-Kede"] = "akx", ["Aka-Kol"] = "aky", ["Aka-Kora"] = "ack", ["Akar-Bale"] = "acl", ["Akaselem"] = "aks", ["Akatek"] = "knj", ["Akawaio"] = "ake", ["Ake"] = "aik", ["Akebu"] = "keu", ["Akei"] = "tsr", ["Akeu"] = "aeu", ["Akhvakh"] = "akv", ["Akkala Sami"] = "sia", ["Akolet"] = "akt", ["Akoose"] = "bss", ["Akoye"] = "miw", ["Akpa"] = "akf", ["Akpes"] = "ibe", ["Akrukay"] = "afi", ["Akuku"] = "ayk", ["Akum"] = "aku", ["Akuntsu"] = "aqz", ["Akurio"] = "ako", ["Akuwagel"] = "bey", ["Akwa"] = "akw", ["Akyaung Ari"] = "nqy", ["Al-Sayyid Bedouin Sign Language"] = "syy", ["Alaba"] = "alw", ["Alabat Island Agta"] = "dul", ["Alacatlatzala Mixtec"] = "mim", ["Alago"] = "ala", ["Alagwa"] = "wbj", ["Alak"] = "alk", ["Alamblak"] = "amp", ["Alangan"] = "alj", ["Alanic"] = "xln", ["Alapmunte"] = "apv", ["Alas-Kluet Batak"] = "btz", ["Alawa"] = "alh", ["Alazapa"] = "nai-ala", ["Albanian Sign Language"] = "sqk", ["Alchuka"] = "tuw-alk", ["Alcozauca Mixtec"] = "xta", ["Alege"] = "alf", ["Alekano"] = "gah", ["Aleut"] = "ale", ["Algerian Sign Language"] = "asp", ["Algonquin"] = "alq", ["Ali"] = "aiy", ["Alladian"] = "ald", ["Allar"] = "all", ["Allentiac"] = "sai-all", ["Alngith"] = "aid", ["Alo Phola"] = "ypo", ["Alorese"] = "aol", ["Aloápam Zapotec"] = "zaq", ["Alsea"] = "aes", ["Alu"] = "mte", ["Alu Kurumba"] = "xua", ["Alugu"] = "aub", ["Alumu-Tesu"] = "aab", ["Alune"] = "alp", ["Alungul"] = "aus-alu", ["Aluo"] = "yna", ["Alur"] = "alz", ["Alutor"] = "alr", ["Alviri-Vidari"] = "avd", ["Alyawarr"] = "aly", ["Ama"] = "amm", ["Amahai"] = "amq", ["Amahuaca"] = "amc", ["Amaimon"] = "ali", ["Amal"] = "aad", ["Amanab"] = "amn", ["Amanayé"] = "ama", ["Amara"] = "aie", ["Amarakaeri"] = "amr", ["Amarasi"] = "aaz", ["Amarizana"] = "awd-ama", ["Amasi"] = "alv-ama", ["Amatlán Zapotec"] = "zpo", ["Amba"] = "rwm", ["Ambai"] = "amk", ["Ambakich"] = "aew", ["Ambala Ayta"] = "abc", ["Ambelau"] = "amv", ["Ambele"] = "ael", ["Amblong"] = "alm", ["Ambo"] = "amb", ["Ambonese Malay"] = "abs", ["Ambrak"] = "aag", ["Ambul"] = "apo", ["Ambulas"] = "abt", ["Amdang"] = "amj", ["Amele"] = "aey", ["Amganad Ifugao"] = "ifa", ["Ami"] = "amy", ["Amis"] = "ami", ["Amo"] = "amo", ["Amol"] = "alx", ["Amoltepec Mixtec"] = "mbz", ["Amondawa"] = "adw", ["Amorite"] = "sem-amo", ["Ampanang"] = "apg", ["Ampari Dogon"] = "aqd", ["Amri Karbi"] = "ajz", ["Amto"] = "amt", ["Amurdag"] = "amg", ["Ana Tinga Dogon"] = "dti", ["Anaang"] = "anw", ["Anakalangu"] = "akg", ["Anam"] = "pda", ["Anambé"] = "aan", ["Anamgura"] = "imi", ["Anasi"] = "bpo", ["Anauyá"] = "awd-ana", ["Ancient Ligurian"] = "xlg", ["Ancient Macedonian"] = "xmk", ["Ancient North Arabian"] = "xna", ["Ancient Zapotec"] = "xzp", ["Andai"] = "afd", ["Andajin"] = "ajn", ["Andaman Creole Hindi"] = "hca", ["Andaqui"] = "ana", ["Andarum"] = "aod", ["Andegerebinha"] = "adg", ["Andh"] = "anr", ["Andi"] = "ani", ["Andio"] = "bzb", ["Andjingith"] = "aus-and", ["Andoa"] = "anb", ["Andoque"] = "ano", ["Andoquero"] = "sai-and", ["Andra-Hus"] = "anx", ["Anem"] = "anz", ["Aneme Wake"] = "aby", ["Anfillo"] = "myo", ["Angaataha"] = "agm", ["Angaité"] = "aqt", ["Angal"] = "age", ["Angal Enen"] = "aoe", ["Angal Heneng"] = "akh", ["Angami"] = "njm", ["Angevin"] = "roa-ang", ["Angguruk Yali"] = "yli", ["Angika"] = "anp", ["Angkamuthi"] = "avm", ["Angkola Batak"] = "akb", ["Angkula"] = "aus-ang", ["Angloromani"] = "rme", ["Angolar"] = "aoa", ["Angor"] = "agg", ["Angoram"] = "aog", ["Angosturas Tunebo"] = "tnd", ["Anguthimri"] = "awg", ["Ani Phowa"] = "ypn", ["Anii"] = "blo", ["Animere"] = "anf", ["Anindilyakwa"] = "aoi", ["Anjam"] = "boj", ["Ankave"] = "aak", ["Anmatyerre"] = "amx", ["Annobonese"] = "fab", ["Anong"] = "nun", ["Anor"] = "anj", ["Anserma"] = "ans", ["Ansus"] = "and", ["Antakarinya"] = "ant", ["Antigua and Barbuda Creole English"] = "aig", ["Antillean Creole"] = "gcf", ["Anu"] = "anl", ["Anuak"] = "anu", ["Anufo"] = "cko", ["Anuki"] = "aui", ["Anus"] = "auq", ["Anuta"] = "aud", ["Anyi"] = "any", ["Anyin Morofo"] = "mtb", ["Anāl"] = "anm", ["Ao"] = "njo", ["Aoheng"] = "pni", ["Aore"] = "aor", ["Ap Ma"] = "kbx", ["Apabhramsa"] = "inc-apa", ["Apalachee"] = "xap", ["Apalaí"] = "apy", ["Apali"] = "ena", ["Apasco-Apoala Mixtec"] = "mip", ["Apatani"] = "apt", ["Apiaká"] = "api", ["Apinayé"] = "apn", ["Apma"] = "app", ["Apolista"] = "awd-apo", ["Apro"] = "ahp", ["Apurinã"] = "apu", ["Aputai"] = "apx", ["Aquitanian"] = "xaq", ["Arabana"] = "ard", ["Arabela"] = "arl", ["Araki"] = "akr", ["Arakwal"] = "rkw", ["Aralle-Tabulahan"] = "atq", ["Arammba"] = "stk", ["Aranadan"] = "aaf", ["Aranama-Tamique"] = "xrt", ["Arandai"] = "jbj", ["Araona"] = "aro", ["Arapaho"] = "arp", ["Arapaso"] = "arj", ["Arara-Karo"] = "arr", ["Ararandewára"] = "xaj", ["Araweté"] = "awt", ["Arawum"] = "awm", ["Arbore"] = "arv", ["Archi"] = "aqc", ["Are"] = "mwc", ["Areba"] = "aea", ["Arem"] = "aem", ["Argentine Sign Language"] = "aed", ["Argobba"] = "agj", ["Arguni"] = "agf", ["Arhuaco"] = "arh", ["Arhâ"] = "aqr", ["Arhö"] = "aok", ["Ari"] = "aac", ["Aribwatsa"] = "laz", ["Aribwaung"] = "ylu", ["Arifama-Miniafia"] = "aai", ["Arigidi"] = "aqg", ["Arikapú"] = "ark", ["Arikara"] = "ari", ["Arikem"] = "ait", ["Arin"] = "xrn", ["Aringa"] = "luc", ["Armazic"] = "xrm", ["Armenian Sign Language"] = "aen", ["Aromanian"] = "rup", ["Arop-Lokep"] = "apr", ["Arop-Sissano"] = "aps", ["Arosi"] = "aia", ["Arritinngithigh"] = "rrt", ["Arta"] = "atz", ["Arua"] = "aru", ["Aruamu"] = "msy", ["Aruek"] = "aur", ["Aruop"] = "lsr", ["Arutani"] = "atx", ["Aruá"] = "arx", ["Arára (Mato Grosso)"] = "axg", ["Arára (Pará)"] = "aap", ["As"] = "asz", ["Asaro'o"] = "mtv", ["Ashe"] = "ahs", ["Ashkun"] = "ask", ["Asho Chin"] = "csh", ["Ashraaf"] = "cus-ash", ["Asháninka"] = "cni", ["Ashéninka Pajonal"] = "cjo", ["Ashéninka Perené"] = "prq", ["Asilulu"] = "asl", ["Askopan"] = "eiv", ["Asoa"] = "asv", ["Assan"] = "xss", ["Assangori"] = "sjg", ["Assiniboine"] = "asb", ["อารามายาใหม่แบบอัสซีเรีย"] = "aii", ["Asu"] = "aum", ["Asue Awyu"] = "psa", ["Asumboa"] = "aua", ["Asunción Mixtepec Zapotec"] = "zoo", ["Asuri"] = "asr", ["Ata"] = "atm", ["Ata Manobo"] = "atd", ["Atakapa"] = "aqp", ["Atampaya"] = "amz", ["Atanques"] = "cba-ata", ["Atatláhuca Mixtec"] = "mib", ["Atauran"] = "adb", ["Atayal"] = "tay", ["Atemble"] = "ate", ["Ateso"] = "teo", ["Athpare"] = "aph", ["Ati"] = "atk", ["Atikamekw"] = "atj", ["Atohwaim"] = "aqm", ["Atong (Cameroon)"] = "ato", ["Atorada"] = "aox", ["Atsahuaca"] = "atc", ["Atsam"] = "cch", ["Atsugewi"] = "atw", ["Attapady Kurumba"] = "pkr", ["Attié"] = "ati", ["Au"] = "avt", ["Auhelawa"] = "kud", ["Aukan"] = "djk", ["Aulua"] = "aul", ["Aurá"] = "aux", ["Aushi"] = "auh", ["Aushiri"] = "avs", ["Auslan"] = "asf", ["Austral"] = "aut", ["Australian Aboriginal Sign Language"] = "asw", ["Australian Kriol"] = "rop", ["Austrian Sign Language"] = "asq", ["Austronesian Mari"] = "hob", ["Auwe"] = "smf", ["Auyana"] = "auy", ["Auye"] = "auu", ["Auyokawa"] = "auo", ["Avatime"] = "avn", ["Avau"] = "avb", ["Avava"] = "tmb", ["Avikam"] = "avi", ["Avokaya"] = "avu", ["Avá-Canoeiro"] = "avv", ["Awa (China)"] = "vwa", ["Awa (New Guinea)"] = "awb", ["Awa-Cuaiquer"] = "kwi", ["Awabakal"] = "awk", ["Awak"] = "awo", ["Awar"] = "aya", ["Awara"] = "awx", ["Awbono"] = "awh", ["Aweer"] = "bob", ["Awera"] = "awr", ["Awetí"] = "awe", ["Awing"] = "azo", ["Awjila"] = "auj", ["Awngi"] = "awn", ["Awngthim"] = "gwm", ["Awtuw"] = "kmn", ["Awun"] = "aww", ["Awutu"] = "afu", ["Awyi"] = "auw", ["Axamb"] = "ahb", ["Axi"] = "yix", ["Ayabadhu"] = "ayd", ["Ayautla Mazatec"] = "vmy", ["Ayere"] = "aye", ["Ayerrerenge"] = "axe", ["Ayi"] = "ayq", ["Ayizi"] = "yyz", ["Ayizo"] = "ayb", ["Ayomán"] = "sai-ayo", ["Ayoquesco Zapotec"] = "zaf", ["Ayoreo"] = "ayo", ["Ayu"] = "ayu", ["Ayutla Mixtec"] = "miy", ["Azha"] = "aza", ["Azhe"] = "yiz", ["Azoyú Me'phaa"] = "tpc", ["Baa"] = "kwb", ["Baagandji"] = "drl", ["Baan"] = "bvj", ["Baangi"] = "bqx", ["Baatonum"] = "bba", ["Baba"] = "bbw", ["Baba Malay"] = "mbf", ["Babango"] = "bbm", ["Babanki"] = "bbk", ["Babatana"] = "baa", ["Babine-Witsuwit'en"] = "bcr", ["Babole"] = "bvx", ["Babungo"] = "bav", ["Babuza"] = "bzg", ["Bacama"] = "bcy", ["Bacanese Malay"] = "btj", ["Bada"] = "bhz", ["Badanchi"] = "bau", ["Bade"] = "bde", ["Badeshi"] = "bdz", ["Badimaya"] = "bia", ["Baduy"] = "bac", ["Badyara"] = "pbp", ["Baeggu"] = "bvd", ["Baelelea"] = "bvc", ["Baenan"] = "sai-bae", ["Baetora"] = "btr", ["Bafanji"] = "bfj", ["Bafaw"] = "bwt", ["Bafia"] = "ksf", ["Bafut"] = "bfd", ["Baga Kaloum"] = "bqf", ["Baga Koga"] = "bgo", ["Baga Manduri"] = "bmd", ["Baga Pokur"] = "bcg", ["Baga Sitemu"] = "bsp", ["Baga Sobané"] = "bsv", ["Bagheli"] = "bfy", ["Bagirmi"] = "bmi", ["Bago-Kusuntu"] = "bqg", ["Bagri"] = "bgq", ["Bagua"] = "sai-bag", ["Bagupi"] = "bpi", ["Bagusa"] = "bqb", ["Bagvalal"] = "kva", ["Baha"] = "yha", ["Baham"] = "bdw", ["Bahamian Creole"] = "bah", ["Bahau"] = "bhv", ["Bahinemo"] = "bjh", ["Bahing"] = "bhj", ["Bahonsuai"] = "bsu", ["Bai (South Sudan)"] = "bdj", ["Baibai"] = "bbf", ["Baikeno"] = "bkx", ["Bailang"] = "tbq-blg", ["Baima"] = "bqh", ["Baimak"] = "bmx", ["Bainouk-Gunyaamolo"] = "bcz", ["Bainouk-Gunyuño"] = "bab", ["Bainouk-Samik"] = "bcb", ["Baiso"] = "bsw", ["Baissa Fali"] = "fah", ["Bajan"] = "bjs", ["Bajelani"] = "bjm", ["Bajjika"] = "vjk", ["Baka"] = "bkc", ["Bakairí"] = "bkq", ["Bakaka"] = "bqz", ["Bakhtiari"] = "bqi", ["Baki"] = "bki", ["Bakoko"] = "bkh", ["Bakole"] = "kme", ["Bakpinka"] = "bbs", ["Bakulung"] = "bbu", ["Bakumpai"] = "bkr", ["Bakung"] = "xkl", ["Bakwé"] = "bjw", ["Bala"] = "tuw-bal", ["Balaesang"] = "bls", ["Balangao"] = "blw", ["Balangingi"] = "sse", ["Balanta-Ganja"] = "bjt", ["Balanta-Kentohe"] = "ble", ["Balantak"] = "blz", ["Balau"] = "blg", ["Baldemu"] = "bdn", ["Bali"] = "bcp", ["Baliledo"] = "poz-bal", ["Balinese Malay"] = "mhp", ["Balkan Gagauz Turkish"] = "bgx", ["Balkan Romani"] = "rmn", ["Balo"] = "bqo", ["Baloi"] = "biz", ["Balong"] = "bnt-bal", ["Baltic Romani"] = "rml", ["Baluan-Pam"] = "blq", ["Bamako Sign Language"] = "bog", ["Bamali"] = "bbq", ["Bambalang"] = "bmo", ["Bambam"] = "ptu", ["Bambassi"] = "myf", ["Bambili-Bambui"] = "baw", ["Bamenyam"] = "bce", ["Bamu"] = "bcf", ["Bamukumbit"] = "bqt", ["Bamum"] = "bax", ["Bamunka"] = "bvm", ["Bamwe"] = "bmg", ["Ban Khor Sign Language"] = "bfk", ["Bana"] = "bcw", ["Banao Itneg"] = "bjx", ["Banaro"] = "byz", ["Banda"] = "bnd", ["Banda Malay"] = "bpq", ["Banda-Bambari"] = "liy", ["Banda-Banda"] = "bpd", ["Banda-Mbrès"] = "bqk", ["Banda-Ndélé"] = "bfl", ["Banda-Yangere"] = "yaj", ["Bandi"] = "bza", ["Bandial"] = "bqj", ["Bandjalang"] = "bdy", ["Bangala"] = "bxg", ["Bangandu"] = "bgf", ["Bangba"] = "bbe", ["Banggai"] = "bgz", ["Bangi"] = "bni", ["Bangime"] = "dba", ["Bangka"] = "mfb", ["Bangolan"] = "bgj", ["Bangru"] = "sit-ban", ["Bangubangu"] = "bnx", ["Bangwinji"] = "bsj", ["Baniva"] = "bvv", ["Baniwa"] = "bwi", ["Banka"] = "bxw", ["Bankan Tey Dogon"] = "dbw", ["Bankon"] = "abb", ["Banoni"] = "bcm", ["Bantawa"] = "bap", ["Bantayanon"] = "bfx", ["Bantik"] = "bnq", ["Banyumasan"] = "map-bms", ["Baoule"] = "bci", ["Baraamu"] = "brd", ["Barai"] = "bbb", ["Barakai"] = "baj", ["Baram Kayan"] = "kys", ["Barama"] = "bbg", ["Barambu"] = "brm", ["Baramu"] = "bmz", ["Barapasi"] = "brp", ["Baras"] = "brs", ["Barasana"] = "bsn", ["Barbareño"] = "boi", ["Barclayville Grebo"] = "gry", ["Bardi"] = "bcj", ["Barein"] = "bva", ["Bargam"] = "mlp", ["Bari"] = "bfa", ["Bariai"] = "bch", ["Bariji"] = "bjc", ["Barikanchi"] = "bxo", ["Barikewa"] = "jbk", ["Barngarla"] = "bjb", ["Barok"] = "bjk", ["Barombi"] = "bbi", ["Barranbinya"] = "aus-bra", ["Barro Negro Tunebo"] = "tbn", ["Barrow Point"] = "bpt", ["Baruga"] = "bjz", ["Barunggam"] = "aus-brm", ["Baruya"] = "byr", ["Barwe"] = "bwg", ["Barzani Jewish Neo-Aramaic"] = "bjf", ["Baré"] = "bae", ["Barí"] = "mot", ["Basa"] = "bzw", ["Basa-Gumna"] = "bsl", ["Basa-Gurmana"] = "buj", ["Basaa"] = "bas", ["Basap"] = "bdb", ["Basay"] = "byq", ["Bashkardi"] = "bsg", ["Basketo"] = "bst", ["Basque-Icelandic Pidgin"] = "crp-bip", ["Bassa"] = "bsq", ["Bassa-Kontagora"] = "bsr", ["Bassari"] = "bsc", ["Bassossi"] = "bsi", ["Bata"] = "bta", ["Bataan Ayta"] = "ayt", ["Batad Ifugao"] = "ifb", ["Batanga"] = "bnm", ["Batek"] = "btq", ["Bateri"] = "btv", ["Bathari"] = "bhm", ["Bati (Cameroon)"] = "btc", ["Bati (Indonesia)"] = "bvt", ["Batu"] = "btu", ["Batui"] = "zbt", ["Batuley"] = "bay", ["Bau"] = "bbd", ["Bau Bidayuh"] = "sne", ["Bauchi"] = "bsf", ["Baure"] = "brg", ["Bauria"] = "bge", ["Bauro"] = "bxa", ["Bauwaki"] = "bwk", ["Bauzi"] = "bvz", ["Bawm Chin"] = "bgr", ["Bay Miwok"] = "mkq", ["Bayali"] = "bjy", ["Baybayanon"] = "bvy", ["Baygo"] = "byg", ["Bayogoula"] = "nai-bay", ["Bayono"] = "byl", ["Bayot"] = "bda", ["Bayungu"] = "bxj", ["Bazigar"] = "bfr", ["Baïnounk Gubëeher"] = "alv-bgu", ["Beami"] = "beo", ["Beary"] = "dra-bry", ["Beaver"] = "bea", ["Beba"] = "bfp", ["Bebe"] = "bzv", ["Bebele"] = "beb", ["Bebeli"] = "bek", ["Bebil"] = "bxp", ["Bedik"] = "tnr", ["Bedjond"] = "bjv", ["Bedoanas"] = "bed", ["Beeke"] = "bkf", ["Beele"] = "bxq", ["Beembe"] = "beq", ["Beezen"] = "bnz", ["Befang"] = "bby", ["Begbere-Ejar"] = "bqv", ["Beja"] = "bej", ["Bekati'"] = "bei", ["Bekwarra"] = "bkv", ["Bekwel"] = "bkw", ["Belait"] = "beg", ["Belanda Bor"] = "bxb", ["Belanda Viri"] = "bvi", ["Belhariya"] = "byw", ["Beli"] = "blm", ["Belizean Creole"] = "bzj", ["Bella Coola"] = "blc", ["Bellari"] = "brw", ["Belter Creole"] = "art-bel", ["Bemba"] = "bem", ["Bembe"] = "bmb", ["Ben Tey"] = "dbt", ["Bena"] = "yun", ["Benabena"] = "bef", ["Bench"] = "bcq", ["Bende"] = "bdp", ["Bendi"] = "bct", ["Beneraf"] = "bnv", ["Beng"] = "nhb", ["Benga"] = "bng", ["Benggoi"] = "bgy", ["Bengkala Sign Language"] = "bqy", ["Bentong"] = "bnu", ["Benyadu'"] = "byd", ["Beothuk"] = "bue", ["Bepour"] = "bie", ["Bera"] = "brf", ["Berakou"] = "bxv", ["Berau Malay"] = "bve", ["Berbice Creole Dutch"] = "brc", ["Bergish"] = "gmw-bgh", ["Berik"] = "bkl", ["Berinomo"] = "bit", ["Berom"] = "bom", ["Berta"] = "wti", ["Berti"] = "byt", ["Besisi"] = "mhe", ["Besme"] = "bes", ["Besoa"] = "bep", ["Betaf"] = "bfe", ["Bete"] = "byf", ["Bete-Bendi"] = "btt", ["Betoi"] = "sai-bet", ["Betta Kurumba"] = "xub", ["Bezhta"] = "kap", ["Bhadrawahi"] = "bhd", ["Bhalay"] = "bhx", ["Bharia"] = "bha", ["Bhatri"] = "bgw", ["Bhattiyali"] = "bht", ["Bhaya"] = "bhe", ["Bhele"] = "bhy", ["Bhilali"] = "bhi", ["Bhili"] = "bhb", ["Bhoti Kinnauri"] = "nes", ["Bhunjia"] = "bhu", ["Biafada"] = "bif", ["Biage"] = "bdf", ["Biak"] = "bhw", ["Biali"] = "beh", ["Bian Marind"] = "bpv", ["Biangai"] = "big", ["Biao"] = "byk", ["Biao Mon"] = "bmt", ["Biao-Jiao Mien"] = "bje", ["Biatah Bidayuh"] = "bth", ["Bibaali"] = "bcn", ["Bibbulman"] = "xbp", ["Bidiyo"] = "bid", ["Bidyara"] = "bym", ["Bidyogo"] = "bjg", ["Biem"] = "bmc", ["Bierebo"] = "bnk", ["Bieria"] = "brj", ["Biete"] = "biu", ["Big Nambas"] = "nmb", ["Biga"] = "bhc", ["Bigambal"] = "xbe", ["Bih"] = "ibh", ["Bijori"] = "bix", ["Bikaru"] = "bic", ["Bikya"] = "byb", ["Bila"] = "bip", ["Bilakura"] = "bql", ["Bilaspuri"] = "kfs", ["Bilba"] = "bpz", ["Bilbil"] = "brz", ["Bile"] = "bil", ["Biliau"] = "bcu", ["Biloxi"] = "bll", ["Bilua"] = "blb", ["Bilur"] = "bxf", ["Bima"] = "bhp", ["Bimin"] = "bhl", ["Bimoba"] = "bim", ["Bina"] = "bmn", ["Binahari"] = "bxz", ["Binandere"] = "bhg", ["Binawa"] = "byj", ["Bindal"] = "xbd", ["Bine"] = "bon", ["Binji"] = "bpj", ["Binongan Itneg"] = "itb", ["Bintauna"] = "bne", ["Bintulu"] = "bny", ["Binumarien"] = "bjr", ["Bipi"] = "biq", ["Birao"] = "brr", ["Birgid"] = "brk", ["Birgit"] = "btf", ["Birhor"] = "biy", ["Biri"] = "bzr", ["Biritai"] = "bqq", ["Birri"] = "bvq", ["Birrpayi"] = "xbj", ["Birwa"] = "brl", ["Biseni"] = "ije", ["Bishnupriya Manipuri"] = "bpy", ["Bishuo"] = "bwh", ["Bisis"] = "bnw", ["Bisorio"] = "bir", ["Bissa"] = "bib", ["Bit"] = "bgk", ["Bitare"] = "brt", ["Bitur"] = "mcc", ["Biwat"] = "bwm", ["Biyo"] = "byo", ["Biyom"] = "bpm", ["Blablanga"] = "blp", ["Blackfoot"] = "bla", ["Blafe"] = "bfh", ["Blang"] = "blr", ["Blin"] = "byn", ["Bo"] = "bgl", ["Bo-Rukul"] = "mae", ["Bo-Ung"] = "mux", ["Boano (Maluku)"] = "bzn", ["Boano (Sulawesi)"] = "bzl", ["Bobongko"] = "bgb", ["Bobot"] = "bty", ["Bodo (Central Africa)"] = "boy", ["Bodo Gadaba"] = "gbj", ["Bodo Parja"] = "bdv", ["Bofi"] = "bff", ["Boga"] = "bvw", ["Bogaya"] = "boq", ["Boghom"] = "bux", ["Boguru"] = "bqu", ["Bohtan Neo-Aramaic"] = "bhn", ["Boikin"] = "bzf", ["Bokar"] = "sit-bok", ["Bokha"] = "ybk", ["Boko"] = "bqc", ["Bokobaru"] = "bus", ["Bokoto"] = "bdt", ["Bokyi"] = "bky", ["Bola"] = "bnp", ["Bolak"] = "art-blk", ["Bolango"] = "bld", ["Bolgo"] = "bvo", ["Bolia"] = "bli", ["Bolivian Sign Language"] = "bvl", ["Boloki"] = "bkt", ["Bolon"] = "bof", ["Bolondo"] = "bzm", ["Bolyu"] = "ply", ["Bom"] = "bmf", ["Boma Nkuu"] = "bnt-bon", ["Boma Yumu"] = "bnt-boy", ["Bomboli"] = "bml", ["Bomboma"] = "bws", ["Bomitaba"] = "zmx", ["Bomu"] = "bmq", ["Bomwali"] = "bmw", ["Bon Gula"] = "glc", ["Bonan"] = "peh", ["Bondei"] = "bou", ["Bondo"] = "bfw", ["Bondoukou Kulango"] = "kzc", ["Bondum Dom Dogon"] = "dbu", ["Bonerate"] = "bna", ["Bonggi"] = "bdg", ["Bonggo"] = "bpg", ["Bongili"] = "bui", ["Bongo"] = "bot", ["Bongu"] = "bpu", ["Bonjo"] = "bok", ["Bonkeng"] = "bvg", ["Bonkiman"] = "bop", ["Bookan"] = "bnb", ["Boon"] = "bnl", ["Boor"] = "bvf", ["Bora"] = "boa", ["Border Kuna"] = "kvn", ["Borei"] = "gai", ["Boro"] = "xxb", ["Borong"] = "ksr", ["Boruca"] = "brn", ["Borôro"] = "bor", ["Boselewa"] = "bwf", ["Bosngun"] = "bqs", ["Bote-Majhi"] = "bmj", ["Botlikh"] = "bph", ["Botolan Sambal"] = "sbl", ["Bouna Kulango"] = "nku", ["Bourguignon"] = "roa-brg", ["Bozaba"] = "bzo", ["Bragat"] = "aof", ["Brazilian Sign Language"] = "bzs", ["Brek Karen"] = "kvl", ["Brem"] = "buq", ["Breri"] = "brq", ["Bribri"] = "bzd", ["British Sign Language"] = "bfi", ["Brokkat"] = "bro", ["Brokpake"] = "sgt", ["Brokskat"] = "bkk", ["Broome Pearling Lugger Pidgin"] = "bpl", ["Brunei Bisaya"] = "bsb", ["Bruny Island"] = "xpz", ["Bu"] = "jid", ["Bu-Nao Bunu"] = "bwx", ["Bua"] = "bub", ["Bualkhaw Chin"] = "cbl", ["Buamu"] = "box", ["Bube"] = "bvb", ["Bubi"] = "buw", ["Bubia"] = "bbx", ["Budeh Stieng"] = "stt", ["Budibud"] = "btp", ["Budong-Budong"] = "bdx", ["Budu"] = "buu", ["Budukh"] = "bdk", ["Buduma"] = "bdm", ["Budza"] = "bja", ["Buena Vista Yokuts"] = "yok-bvy", ["Bugan"] = "bbh", ["Bughotu"] = "bgt", ["Buglere"] = "sab", ["Bugun"] = "bgg", ["Buhi'non Bikol"] = "ubl", ["Buhid"] = "bku", ["Buhutu"] = "bxh", ["Bujhyal"] = "byh", ["Bukar-Sadung Bidayuh"] = "sdo", ["Bukat"] = "bvk", ["Bukawa"] = "buk", ["Bukhari"] = "bhh", ["Bukit Malay"] = "bvu", ["Bukitan"] = "bkn", ["Bukiyip"] = "ape", ["Buksa"] = "tkb", ["Bukusu"] = "bxk", ["Bulgar"] = "xbo", ["Bulgarian Sign Language"] = "bqn", ["Bulgebi"] = "bmp", ["Buli (Ghana)"] = "bwu", ["Buli (Indonesia)"] = "bzq", ["Bulo Stieng"] = "sti", ["Bulu (Cameroon)"] = "bum", ["Bulu (New Guinea)"] = "bjl", ["Bulungan"] = "blj", ["Bum"] = "bmv", ["Bumaji"] = "byp", ["Bumang"] = "bvp", ["Bumbita Arapesh"] = "aon", ["Bumthangkha"] = "kjz", ["Bun"] = "buv", ["Buna"] = "bvn", ["Bunaba"] = "bck", ["Bunak"] = "bfn", ["Bunama"] = "bdd", ["Bundeli"] = "bns", ["Bung"] = "bqd", ["Bungain"] = "but", ["Bunganditj"] = "xbg", ["Bungku"] = "bkz", ["Bungu"] = "wun", ["Bunoge"] = "dgb", ["Bunun"] = "bnn", ["Buol"] = "blf", ["Bura"] = "bwr", ["Bura Mabang"] = "mde", ["Burak"] = "bys", ["Buraka"] = "bkg", ["Burarra"] = "bvr", ["Burate"] = "bti", ["Burduna"] = "bxn", ["Bure"] = "bvh", ["Burgundian"] = "gme-bur", ["Burji"] = "bji", ["Burmbar"] = "vrt", ["Burmeso"] = "bzu", ["Buru (Indonesia)"] = "mhs", ["Buru (Nigeria)"] = "bqw", ["Burui"] = "bry", ["Burumakok"] = "aip", ["Burun"] = "bdi", ["Burunge"] = "bds", ["Burushaski"] = "bsk", ["Burusu"] = "bqr", ["Buruwai"] = "asi", ["Busa"] = "bqp", ["Busam"] = "bxs", ["Busami"] = "bsm", ["Busang Kayan"] = "bfg", ["Bushoong"] = "buf", ["Buso"] = "bso", ["Busoa"] = "bup", ["Bussa"] = "dox", ["Busuu"] = "bju", ["Butbut Kalinga"] = "kyb", ["Butchulla"] = "xby", ["Butmas-Tur"] = "bnr", ["Butuanon"] = "btw", ["Buwal"] = "bhs", ["Buyeo"] = "xpy", ["Buyu"] = "byi", ["Buyuan Jino"] = "jiy", ["Bwa"] = "bww", ["Bwaidoka"] = "bwd", ["Bwala"] = "bnt-bwa", ["Bwanabwana"] = "tte", ["Bwatoo"] = "bwa", ["Bwe Karen"] = "bwe", ["Bwela"] = "bwl", ["Bwile"] = "bwc", ["Bwisi"] = "bwz", ["Byangsi"] = "bee", ["Byep"] = "mkk", ["Bädi Kanum"] = "khd", ["Caac"] = "msq", ["Cabiyarí"] = "cbb", ["Cabre"] = "awd-cab", ["Cabécar"] = "cjp", ["Cacaloxtepec Mixtec"] = "miu", ["Cacaopera"] = "ccr", ["Cacgia Roglai"] = "roc", ["Cacua"] = "cbv", ["Cacán"] = "sai-cac", ["Caddo"] = "cad", ["Cafundó"] = "ccd", ["Cahuarano"] = "cah", ["Cahuilla"] = "chl", ["Caijia"] = "sit-cai", ["Cajonos Zapotec"] = "zad", ["Caka"] = "ckx", ["Cakfem-Mushere"] = "cky", ["Calabrian Greek"] = "grk-cal", ["Calamian Tagbanwa"] = "tbk", ["Calusa"] = "nai-cal", ["Caluyanun"] = "clu", ["Caló"] = "rmq", ["Camarines Norte Agta"] = "abd", ["Cambodian Sign Language"] = "csx", ["Cameroon Mambila"] = "mcu", ["Cameroon Pidgin"] = "wes", ["Campalagian"] = "cml", ["Camsá"] = "kbh", ["Camtho"] = "cmt", ["Camunic"] = "xcc", ["Candoshi-Shapra"] = "cbu", ["Canela"] = "ram", ["Canichana"] = "caz", ["Cantabrian"] = "roa-can", ["Caolan"] = "mlc", ["Capanahua"] = "kaq", ["Capiznon"] = "cps", ["Cappadocian Greek"] = "cpg", ["Caquinte"] = "cot", ["Cara"] = "cfd", ["Carabayo"] = "cby", ["Caramanta"] = "crf", ["Caranqui"] = "sai-caq", ["Carapana"] = "cbc", ["Carian"] = "xcr", ["Cariay"] = "awd-kar", ["Carijona"] = "cbd", ["Carolina Algonquian"] = "crr", ["Carolinian"] = "cal", ["Carpathian Romani"] = "rmc", ["Carrier"] = "crx", ["Cashibo-Cacataibo"] = "cbr", ["Cashinahua"] = "cbs", ["Casiguran Dumagat Agta"] = "dgc", ["Casuarina Coast Asmat"] = "asc", ["Catacao"] = "sai-cat", ["Catalan Sign Language"] = "csc", ["Catawba"] = "chc", ["Catuquinaru"] = "sai-ctq", ["Catío Chibcha"] = "cba-cat", ["Cauca"] = "cca", ["Cavineña"] = "cav", ["Cayubaba"] = "cyb", ["Cayuga"] = "cay", ["Cayuse"] = "xcy", ["Cazcan"] = "azc-caz", ["Cañari"] = "sai-cnr", ["Cebaara Senoufo"] = "sef", ["Celtiberian"] = "xce", ["Cen"] = "cen", ["Central Asmat"] = "cns", ["Central Atlas Tamazight"] = "tzm", ["Central Awyu"] = "awu", ["Central Bai"] = "bca", ["Central Bontoc"] = "lbk", ["Central Cagayan Agta"] = "agt", ["ฟรังโกเนียตอนกลาง"] = "gmw-cfr", ["Central Grebo"] = "grv", ["Central Huasteca Nahuatl"] = "nch", ["Central Huishui Hmong"] = "hmc", ["Central Mahuatlán Zapotec"] = "zam", ["Central Mansi"] = "mns-cen", ["Central Masela"] = "mxz", ["Central Mashan Hmong"] = "hmm", ["Central Mazahua"] = "maz", ["Central Melanau"] = "mel", ["Central Ojibwa"] = "ojc", ["Central Pame"] = "pbs", ["Central Pomo"] = "poo", ["Central Puebla Nahuatl"] = "ncx", ["Central Siberian Yupik"] = "ess", ["Central Sierra Miwok"] = "csm", ["Central Subanen"] = "syb", ["Central Tagbanwa"] = "tgt", ["Central Tarahumara"] = "tar", ["Central Teke"] = "nzu", ["Central Tunebo"] = "tuf", ["Centúúm"] = "cet", ["Cerma"] = "cme", ["Ch'olti'"] = "myn-chl", ["Ch'orti'"] = "caa", ["Chaap Wuurong"] = "tjw", ["Chachi"] = "cbi", ["Chadian Arabic"] = "shu", ["Chadian Sign Language"] = "cds", ["Chadong"] = "cdy", ["Chaha"] = "sem-cha", ["Chaima"] = "ciy", ["Chairel"] = "sit-cha", ["Chak"] = "ckh", ["Chakali"] = "cli", ["Chala"] = "cll", ["Chaldean Neo-Aramaic"] = "cld", ["Chali"] = "tgf", ["Chamacoco"] = "ceg", ["Chamalal"] = "cji", ["Chamba Daka"] = "ccg", ["Chamba Leko"] = "ndi", ["Chambeali"] = "cdh", ["Chambri"] = "can", ["Chamicuro"] = "ccc", ["Chamling"] = "rab", ["Champenois"] = "roa-cha", ["Chang"] = "nbc", ["Changriwa"] = "cga", ["Changthang"] = "cna", ["Chantyal"] = "chx", ["Chaná"] = "sai-chn", ["Chané"] = "caj", ["Chapacura"] = "sai-chp", ["Chara"] = "cra", ["Charrua"] = "sai-chr", ["Chaudangsi"] = "cdn", ["Chaura"] = "crv", ["Chayahuita"] = "cbt", ["Chayuco Mixtec"] = "mih", ["Chazumba Mixtec"] = "xtb", ["Che"] = "ruk", ["Cheke Holo"] = "mrn", ["Chemakum"] = "xch", ["Chenapian"] = "cjn", ["Chenchu"] = "cde", ["Chenoua"] = "cnu", ["Chepang"] = "cdm", ["Chepya"] = "ycp", ["Cherepon"] = "cpn", ["Chesu"] = "ych", ["Chetco-Tolowa"] = "ctc", ["Chewong"] = "cwg", ["Chhattisgarhi"] = "hne", ["Chhintange"] = "ctn", ["Chhulung"] = "cur", ["Chiangmai Sign Language"] = "csd", ["Chiapanec"] = "cip", ["Chibcha"] = "chb", ["Chicahuaxtla Triqui"] = "trs", ["Chichicapan Zapotec"] = "zpv", ["Chichimeca-Jonaz"] = "pei", ["Chichonyi-Chidzihana-Chikauma"] = "coh", ["Chickasaw"] = "cic", ["Chicomuceltec"] = "cob", ["Chiduruma"] = "dug", ["Chigmecatitlán Mixtec"] = "mii", ["Chilcotin"] = "clc", ["Chilean Sign Language"] = "csg", ["Chilisso"] = "clh", ["Chiltepec Chinantec"] = "csa", ["Chimalapa Zoque"] = "zoh", ["Chimariko"] = "cid", ["Chimila"] = "cbg", ["Chimwiini"] = "bnt-cmw", ["Chinali"] = "cih", ["Chinbon Chin"] = "cnb", ["Chinese Pidgin English"] = "cpi", ["Chinese Sign Language"] = "csl", ["Chinook"] = "chh", ["Chinook Jargon"] = "chn", ["Chipaya"] = "cap", ["Chipewyan"] = "chp", ["Chiquihuitlán Mazatec"] = "maq", ["Chiquimulilla"] = "nai-chi", ["Chiquitano"] = "cax", ["Chiricahua"] = "apm", ["Chirino"] = "sai-chi", ["Chiripá"] = "nhd", ["Chiru"] = "cdf", ["Chitimacha"] = "ctm", ["Chitkuli Kinnauri"] = "cik", ["Chittagonian"] = "ctg", ["Chitwania Tharu"] = "the", ["Chiwere"] = "iow", ["Choapan Zapotec"] = "zpc", ["Chocangaca"] = "cgk", ["Chochotec"] = "coz", ["Choctaw"] = "cho", ["Chodri"] = "cdi", ["Chokri Naga"] = "nri", ["Chokwe"] = "cjk", ["Chol"] = "ctu", ["Cholón"] = "cht", ["Choni"] = "cda", ["Chono"] = "sai-cno", ["Chontal Maya"] = "chf", ["Chopi"] = "cce", ["Chothe Naga"] = "nct", ["Chrau"] = "crw", ["Chru"] = "cje", ["Chuabo"] = "chw", ["Chuanqiandian Cluster Miao"] = "cqd", ["Chuave"] = "cjv", ["Chug"] = "cvg", ["Chuj"] = "cac", ["Chuka"] = "cuh", ["Chukwa"] = "cuw", ["Chulym"] = "clw", ["Chumburung"] = "ncu", ["Churahi"] = "cdj", ["Church Slavonic"] = "zls-chs", ["Churuya"] = "sai-chu", ["Chut"] = "scb", ["Chuukese"] = "chk", ["Chuvan"] = "xcv", ["Chácobo"] = "cao", ["Ci Gbe"] = "cib", ["Cia-Cia"] = "cia", ["Cibak"] = "ckl", ["Cicipu"] = "awc", ["Ciguayo"] = "nai-cig", ["Cimbrian"] = "cim", ["Cinamiguin Manobo"] = "mkx", ["Cinda-Regi-Tiyal"] = "cdr", ["Cineni"] = "cie", ["Cinta Larga"] = "cin", ["Cishingini"] = "asg", ["Citak"] = "txt", ["Ciwogai"] = "tgd", ["แกลิกคลาสสิก"] = "ghc", ["Classical Mandaic"] = "myz", ["ซีรีแอกคลาสสิก"] = "syc", ["Coahuilteco"] = "xcw", ["Coast Miwok"] = "csi", ["Coastal Konjo"] = "kjc", ["Coatecas Altas Zapotec"] = "zca", ["Coatepec Nahuatl"] = "naz", ["Coatlán Mixe"] = "mco", ["Coatlán Zapotec"] = "zps", ["Coatzospan Mixtec"] = "miz", ["Cocama"] = "cod", ["Cochimi"] = "coj", ["Cocopa"] = "coc", ["Cocos Islands Malay"] = "coa", ["Coeruna"] = "sai-coe", ["Coeur d'Alene"] = "crd", ["Cofán"] = "con", ["Cogui"] = "kog", ["Col"] = "liw", ["Colombian Sign Language"] = "csn", ["Colonia Tovar German"] = "gct", ["Columbia-Wenatchi"] = "col", ["Colán"] = "sai-col", ["Comaltepec Chinantec"] = "cco", ["Comanche"] = "com", ["Comechingon"] = "sai-cmg", ["Comecrudo"] = "xcm", ["Communicationssprache"] = "art-com", ["Como Karim"] = "cfg", ["Comox"] = "coo", ["Con"] = "cno", ["Coos"] = "csz", ["Copainalá Zoque"] = "zoc", ["Copala Triqui"] = "trc", ["Copallén"] = "sai-cop", ["Coquille"] = "coq", ["Cora"] = "crn", ["Cori"] = "cry", ["Coroado Puri"] = "sai-crd", ["Cosoleacaque Nahuatl"] = "nhk", ["Costa Rican Sign Language"] = "csr", ["Cotabato Manobo"] = "mta", ["Cotoname"] = "xcn", ["Cowlitz"] = "cow", ["Coyaima"] = "coy", ["Coyotepec Popoloca"] = "pbf", ["Coyutla Totonac"] = "toc", ["Creek"] = "mus", ["Croatian Sign Language"] = "csq", ["Cross River Mbembe"] = "mfn", ["Crow"] = "cro", ["Cruzeño"] = "crz", ["Cua"] = "cua", ["Cuban Sign Language"] = "csf", ["Cubeo"] = "cub", ["Cueva"] = "sai-cva", ["Cuiba"] = "cui", ["Cuitlatec"] = "cuy", ["Culina"] = "cul", ["Culli"] = "sai-cul", ["Cumanagoto"] = "cuo", ["Cumbric"] = "xcb", ["Cung"] = "cug", ["Cupeño"] = "cup", ["Curonian"] = "xcu", ["Curripaco"] = "kpc", ["Cutchi-Swahili"] = "ccl", ["Cuvok"] = "cuv", ["Cuyamecalco Mixtec"] = "xtu", ["Cuyunon"] = "cyo", ["Cwi Bwamu"] = "bwy", ["Czech Sign Language"] = "cse", ["Cèmuhî"] = "cam", ["Cốông"] = "cnc", ["Da'a Kaili"] = "kzf", ["Daai Chin"] = "dao", ["Daakaka"] = "bpa", ["Daantanai'"] = "lni", ["Daasanach"] = "dsh", ["Daba"] = "dbq", ["Dabarre"] = "dbr", ["Dabe"] = "dbe", ["Dacian"] = "xdc", ["Dadanitic"] = "sem-dad", ["Dadi Dadi"] = "dda", ["Dadibi"] = "mps", ["Dadiya"] = "dbd", ["Daga"] = "dgz", ["Dagaari Dioula"] = "dgd", ["Dagba"] = "dgk", ["Dagbani"] = "dag", ["Dagik"] = "dec", ["Dagoman"] = "dgn", ["Dahalik"] = "dlk", ["Dahalo"] = "dal", ["Daho-Doo"] = "das", ["Dai"] = "dij", ["Dair"] = "drb", ["Dairi Batak"] = "btd", ["Dakka"] = "dkk", ["Dakpa"] = "dka", ["Daloa Bété"] = "bev", ["Dama (Nigeria)"] = "dmm", ["Dama (Sierra Leone)"] = "dmn-dam", ["Damakawa"] = "dam", ["Damal"] = "uhn", ["Dambi"] = "dac", ["Dameli"] = "dml", ["Dampelas"] = "dms", ["Dan"] = "dnj", ["Danaru"] = "dnr", ["Danau"] = "dnu", ["Dandami Maria"] = "daq", ["Dangaléat"] = "daa", ["Dangaura Tharu"] = "thl", ["Danish Sign Language"] = "dsl", ["Dano"] = "aso", ["Danu"] = "dnv", ["Danuwar"] = "dhw", ["Dao"] = "daz", ["Daonda"] = "dnd", ["Dar Daju Daju"] = "djc", ["Dar Fur Daju"] = "daj", ["Dar Sila Daju"] = "dau", ["Darai"] = "dry", ["Dargwa"] = "dar", ["Darkinjung"] = "xda", ["Darlong"] = "dln", ["Darmiya"] = "drd", ["Daro-Matu Melanau"] = "dro", ["Darumbal"] = "xgm", ["Dass"] = "dot", ["Datian Min"] = "nan-dat", ["Datooga"] = "tcc", ["Daungwurrung"] = "dgw", ["Daur"] = "dta", ["Davawenyo"] = "daw", ["Dawawa"] = "dww", ["Dawera-Daweloor"] = "ddw", ["Day"] = "dai", ["Dayi"] = "dax", ["Dazaga"] = "dzg", ["Deccani"] = "dcc", ["Dedua"] = "ded", ["Defaka"] = "afn", ["Defi Gbe"] = "gbh", ["Deg"] = "mzw", ["Deg Xinag"] = "ing", ["Degema"] = "deg", ["Degenan"] = "dge", ["Dehwari"] = "deh", ["Dela-Oenale"] = "row", ["Delo"] = "ntr", ["Delta Yokuts"] = "yok-dly", ["Dem"] = "dem", ["Dema"] = "dmx", ["Demisa"] = "dei", ["Demotic Egyptian"] = "egx-dem", ["Demta"] = "dmy", ["Dena'ina"] = "tfn", ["Dendi"] = "ddn", ["Dengese"] = "dez", ["Dengka"] = "dnk", ["Deno"] = "dbb", ["Denya"] = "anv", ["Dení"] = "dny", ["Deori"] = "der", ["Desano"] = "des", ["Desiya"] = "dso", ["Dewas Rai"] = "dwz", ["Dewoin"] = "dee", ["Dezfuli"] = "def", ["Dghwede"] = "dgh", ["Dhaiso"] = "dhs", ["Dhalandji"] = "dhl", ["Dhangu"] = "dhg", ["Dhanki"] = "dhn", ["Dhao"] = "nfa", ["Dharug"] = "xdk", ["Dhatki"] = "mki", ["Dhimal"] = "dhi", ["Dhodia"] = "dho", ["Dhofari Arabic"] = "adf", ["Dhudhuroa"] = "ddr", ["Dhundhari"] = "dhd", ["Dhungaloo"] = "dhx", ["Dhurga"] = "dhu", ["Dhuwal"] = "dwu", ["Dhuwaya"] = "dwy", ["Dia"] = "dia", ["Dibabawon Manobo"] = "mbd", ["Dibiyaso"] = "dby", ["Dibo"] = "dio", ["Dicamay Agta"] = "duy", ["Didinga"] = "did", ["Dieri"] = "dif", ["Digo"] = "dig", ["Dii"] = "dur", ["Dijim-Bwilim"] = "cfa", ["Dilling"] = "dil", ["Dima"] = "jma", ["Dimasa"] = "dis", ["Dimbong"] = "dii", ["Dime"] = "dim", ["Dinapigue Agta"] = "phi-din", ["Dineor"] = "mrx", ["Ding"] = "diz", ["Dinka"] = "din", ["Diodio"] = "ddi", ["Dirasha"] = "gdl", ["Diri"] = "dwa", ["Dirim"] = "dir", ["Disa"] = "dsi", ["Ditammari"] = "tbz", ["Ditidaht"] = "dtd", ["Diuwe"] = "diy", ["Diuxi-Tilantongo Mixtec"] = "xtd", ["Dixon Reef"] = "dix", ["Dizin"] = "mdx", ["Djadjawurrung"] = "dja", ["Djambarrpuyngu"] = "djr", ["Djangun"] = "djf", ["Djauan"] = "djn", ["Djawi"] = "djw", ["Djimini"] = "dyi", ["Djinang"] = "dji", ["Djinba"] = "djb", ["Djiwarli"] = "djl", ["Dobel"] = "kvo", ["Dobu"] = "dob", ["Doe"] = "doe", ["Doga"] = "dgg", ["Doghoro"] = "dgx", ["Dogoso"] = "dgs", ["Dogosé"] = "dos", ["Dogri"] = "doi", ["Dogrib"] = "dgr", ["Dogul Dom"] = "dbg", ["Doka"] = "dbi", ["Doko-Uyanga"] = "uya", ["Dolgan"] = "dlg", ["Dom"] = "doa", ["Domaaki"] = "dmk", ["Domari"] = "rmt", ["Dominican Sign Language"] = "doq", ["Dompo"] = "doy", ["Domu"] = "dof", ["Domung"] = "dev", ["Dondo"] = "dok", ["Dong"] = "doh", ["Dongo"] = "doo", ["Dongolawi"] = "kzh", ["Dongotono"] = "ddd", ["Dongshanba Lalo"] = "yik", ["Donno So Dogon"] = "dds", ["Doondo"] = "dde", ["Dorasque"] = "cba-dor", ["Dori'o"] = "dor", ["Dorig"] = "wwo", ["Doromu-Koki"] = "kqc", ["Dorze"] = "doz", ["Doso"] = "dol", ["Doteli"] = "dty", ["Dothraki"] = "art-dtk", ["Doura"] = "don", ["Doutai"] = "tds", ["Doyayo"] = "dow", ["Drehu"] = "dhv", ["Drung"] = "duu", ["Duala"] = "dua", ["Duano"] = "dup", ["Duau"] = "dva", ["Dubli"] = "dub", ["Dubu"] = "dmu", ["Dugun"] = "ndu", ["Duguri"] = "dbm", ["Dugwor"] = "dme", ["Duhwa"] = "kbz", ["Duit"] = "cba-dui", ["Duke"] = "nke", ["Dukhan"] = "trk-dkh", ["Dulbu"] = "dbo", ["Duli"] = "duz", ["Duma"] = "dma", ["Dumaitic"] = "sem-dum", ["Dumbea"] = "duf", ["Dumi"] = "dus", ["Dumpas"] = "dmv", ["Dumun"] = "dui", ["Duna"] = "duc", ["Dungmali"] = "raa", ["Dungra Bhil"] = "duh", ["Dungu"] = "dbv", ["Dupaningan Agta"] = "duo", ["Dura"] = "drq", ["Duri"] = "mvp", ["Duriankere"] = "dbn", ["Duruwa"] = "pci", ["Dusner"] = "dsn", ["Dusun Deyah"] = "dun", ["Dusun Malang"] = "duq", ["Dusun Witu"] = "duw", ["Dutch Low Saxon"] = "nds-nl", ["Dutch Sign Language"] = "dse", ["Duun"] = "dux", ["Duupa"] = "dae", ["Duvle"] = "duv", ["Duwai"] = "dbp", ["Duwet"] = "gve", ["Dwang"] = "nnu", ["Dyaabugay"] = "dyy", ["Dyaberdyaber"] = "dyb", ["Dyan"] = "dya", ["Dyangadi"] = "dyn", ["Dyirbal"] = "dbl", ["Dyugun"] = "dyd", ["Dyula"] = "dyu", ["Dza"] = "jen", ["Dzala"] = "dzl", ["Dzando"] = "dzn", ["Dzao Min"] = "bpn", ["Dzodinka"] = "add", ["Dzuun"] = "dnn", ["Dâw"] = "kwa", ["E"] = "eee", ["E'ma Buyang"] = "yzg", ["Early Old Oghuz"] = "trk-eog", ["Early Tripuri"] = "xtr", ["East Damar"] = "dmr", ["East Franconian"] = "vmf", ["East Futuna"] = "fud", ["East Kewa"] = "kjs", ["East Limba"] = "lma", ["East Masela"] = "vme", ["East Nyala"] = "nle", ["East Tarangan"] = "tre", ["East Yugur"] = "yuy", ["Eastern Acipa"] = "acp", ["Eastern Arrernte"] = "aer", ["Eastern Bolivian Guarani"] = "gui", ["Eastern Bontoc"] = "ebk", ["Eastern Canadian Inuktitut"] = "ike", ["Eastern Durango Nahuatl"] = "azd", ["Eastern Gorkha Tamang"] = "tge", ["Eastern Gurung"] = "ggn", ["Eastern Highland Chatino"] = "cly", ["Eastern Highland Otomi"] = "otm", ["Eastern Huasteca Nahuatl"] = "nhe", ["Eastern Huishui Hmong"] = "hme", ["Eastern Karaboro"] = "xrb", ["Eastern Keres"] = "kee", ["Eastern Khanty"] = "kca-eas", ["Eastern Krahn"] = "kqo", ["Eastern Lalu"] = "yit", ["Eastern Magar"] = "mgp", ["Eastern Maninkakan"] = "emk", ["Eastern Mari"] = "mhr", ["Eastern Meohang"] = "emg", ["Eastern Mnong"] = "mng", ["Eastern Muria"] = "emu", ["Eastern Ngad'a"] = "nea", ["Eastern Nisu"] = "nos", ["Eastern Ojibwa"] = "ojg", ["Eastern Parbate Kham"] = "kif", ["Eastern Penan"] = "pez", ["Eastern Pomo"] = "peb", ["Eastern Qiandong Miao"] = "hmq", ["Eastern Subanun"] = "sfe", ["Eastern Tamang"] = "taj", ["Eastern Tawbuid"] = "bnj", ["Eastern Xiangxi Miao"] = "muq", ["Eastern Xwla Gbe"] = "gbx", ["Ebira"] = "igb", ["Eblaite"] = "xeb", ["Ebrié"] = "ebr", ["Ebughu"] = "ebg", ["Ecuadorian Sign Language"] = "ecs", ["Ede Cabe"] = "cbj", ["Ede Ica"] = "ica", ["Ede Idaca"] = "idd", ["Ede Ije"] = "ijj", ["Ede Nago"] = "nqg", ["Edera Awyu"] = "awy", ["Edo"] = "bin", ["Edolo"] = "etr", ["Edopi"] = "dbf", ["Efai"] = "efa", ["Efe"] = "efe", ["Efik"] = "efi", ["Efutop"] = "ofu", ["Ega"] = "ega", ["Eggon"] = "ego", ["Egyptian Sign Language"] = "esl", ["Ehueun"] = "ehu", ["Eipomek"] = "eip", ["Eitiep"] = "eit", ["Ejagham"] = "etu", ["Ejamat"] = "eja", ["Ekajuk"] = "eka", ["Ekari"] = "ekg", ["Ekele"] = "khy", ["Eki"] = "eki", ["Ekit"] = "eke", ["Ekpeye"] = "ekp", ["El Alto Zapotec"] = "zpp", ["El Hugeirat"] = "elh", ["El Molo"] = "elo", ["Elamite"] = "elx", ["Eleme"] = "elm", ["Elepi"] = "ele", ["Elip"] = "ekm", ["Elkei"] = "elk", ["Eloi"] = "art-elo", ["Elotepec Zapotec"] = "zte", ["Eloyi"] = "afo", ["Elseng"] = "mrf", ["Elu"] = "elu", ["Elymian"] = "xly", ["Emae"] = "mmw", ["Emai"] = "ema", ["Eman"] = "emn", ["Embaloh"] = "emb", ["Emberá-Baudó"] = "bdc", ["Emberá-Catío"] = "cto", ["Emberá-Chamí"] = "cmi", ["Emberá-Tadó"] = "tdc", ["Embu"] = "ebu", ["Emem"] = "enr", ["Emerillon"] = "eme", ["Emplawas"] = "emw", ["En"] = "enc", ["Enawené-Nawé"] = "unk", ["Ende"] = "end", ["Enga"] = "enq", ["Engenni"] = "enn", ["Enggano"] = "eno", ["Enlhet"] = "enl", ["Enrekang"] = "ptt", ["Enu"] = "enu", ["Enwan"] = "env", ["Enwang"] = "enw", ["Enxet"] = "enx", ["Enya"] = "gey", ["Eotile"] = "eot", ["Epena"] = "sja", ["Epi-Olmec"] = "xep", ["Epie"] = "epi", ["Epigraphic Mayan"] = "emy", ["Eravallan"] = "era", ["Erave"] = "kjy", ["Ere"] = "twp", ["Erie"] = "iro-ere", ["Eritai"] = "ert", ["Erokwanas"] = "erw", ["Erre"] = "err", ["Erromintxela"] = "emx", ["Ersu"] = "ers", ["Eruwa"] = "erh", ["Esan"] = "ish", ["Ese"] = "mcq", ["Ese Ejja"] = "ese", ["Esimbi"] = "ags", ["Eskayan"] = "esy", ["Esmeralda"] = "sai-esm", ["Esselen"] = "esq", ["Estado de México Otomi"] = "ots", ["Estonian Sign Language"] = "eso", ["Esuma"] = "esm", ["Etchemin"] = "etc", ["Etebi"] = "etb", ["Eten"] = "etx", ["Eteocretan"] = "ecr", ["Eteocypriot"] = "ecy", ["Ethiopian Sign Language"] = "eth", ["Etkywan"] = "ich", ["Eton (Cameroon)"] = "eto", ["Eton (Vanuatu)"] = "etn", ["Etulo"] = "utr", ["Evant"] = "bzz", ["Ewage-Notu"] = "nou", ["Ewarhuyana"] = "sai-ewa", ["Ewondo"] = "ewo", ["Eyak"] = "eya", ["Ezaa"] = "eza", ["Fagani"] = "faf", ["Faire Atta"] = "azt", ["Faita"] = "faj", ["Faiwol"] = "fai", ["Fakkanci"] = "gel", ["Falam Chin"] = "cfm", ["Fali"] = "fli", ["Fam"] = "fam", ["Fanagalo"] = "fng", ["Fanamaket"] = "bjp", ["Fang (Bantu)"] = "fan", ["Fang (Beboid)"] = "fak", ["Fania"] = "fni", ["Far Western Muria"] = "fmu", ["ฟราฟรา"] = "gur", ["Fas"] = "fqs", ["Fasu"] = "faa", ["Fataleka"] = "far", ["Fataluku"] = "ddg", ["Fayu"] = "fau", ["Fe'fe'"] = "fmp", ["Fedan"] = "pdn", ["Fembe"] = "agl", ["Fer"] = "kah", ["Feroge"] = "fer", ["Filomena Mata-Coahuitlán Totonac"] = "tlp", ["Fingallian"] = "gmw-fin", ["Finisterre Yau"] = "yuw", ["Finnish Sign Language"] = "fse", ["Finnish-Swedish Sign Language"] = "fss", ["Finongan"] = "fag", ["Fipa"] = "fip", ["Firan"] = "fir", ["Fiwaga"] = "fiw", ["Flemish Sign Language"] = "vgt", ["Flinders Island"] = "fln", ["Foau"] = "flh", ["Fogaha"] = "ber-fog", ["Foi"] = "foi", ["Foia Foia"] = "ffi", ["Folopa"] = "ppo", ["Foma"] = "fom", ["Fon"] = "fon", ["Fongoro"] = "fgr", ["Foodo"] = "fod", ["Forak"] = "frq", ["Fordata"] = "frd", ["Fore"] = "for", ["Forest Enets"] = "enf", ["Forest Nenets"] = "yrk-for", ["Fortsenal"] = "frt", ["Fox"] = "sac", ["Franc-Comtois"] = "roa-fcm", ["Francisco León Zoque"] = "zos", ["French Belgian Sign Language"] = "sfb", ["French Sign Language"] = "fsl", ["Fuliiru"] = "flr", ["Fulniô"] = "fun", ["Fum"] = "fum", ["Fungwa"] = "ula", ["Fur"] = "fvr", ["Furu"] = "fuu", ["Futuna-Aniwa"] = "fut", ["Fuyug"] = "fuy", ["Fwe"] = "fwe", ["Fwâi"] = "fwa", ["Fyam"] = "pym", ["Fyer"] = "fie", ["Ga"] = "gaa", ["Ga'anda"] = "gqa", ["Ga'dang"] = "gdg", ["Gaa"] = "ttb", ["Gaam"] = "tbi", ["Gabadi"] = "kbt", ["Gabi"] = "gbw", ["Gabri"] = "gab", ["Gabrielino-Fernandeño"] = "xgf", ["Gadang"] = "gdk", ["Gaddang"] = "gad", ["Gaddi"] = "gbk", ["Gade"] = "ged", ["Gadjerawang"] = "gdh", ["Gadsup"] = "gaj", ["Gafat"] = "gft", ["Gagadu"] = "gbu", ["Gagnoa Bété"] = "btg", ["Gahri"] = "bfu", ["Gaikundi"] = "gbf", ["Gaina"] = "gcn", ["Gal"] = "gap", ["Galambu"] = "glo", ["Galatian"] = "xga", ["Galela"] = "gbi", ["Galeya"] = "gar", ["Galice"] = "gce", ["Galindian"] = "xgl", ["Gallaecian"] = "cel-gal", ["Gallo"] = "roa-gal", ["Gallo-Italic of Basilicata"] = "roa-gib", ["Gallo-Italic of Sicily"] = "roa-gis", ["Gallurese"] = "sdn", ["Galo"] = "adl", ["Galoli"] = "gal", ["Gamale Kham"] = "kgj", ["Gambera"] = "gma", ["Gamela"] = "sai-gam", ["Gamilaraay"] = "kld", ["Gamit"] = "gbl", ["Gamkonora"] = "gak", ["Gamo-Ningi"] = "bte", ["Gana"] = "gnq", ["Ganang"] = "gne", ["Gane"] = "gzn", ["Ganggalida"] = "gcd", ["Ganglau"] = "ggl", ["Gangte"] = "gnb", ["Gangulu"] = "gnl", ["Gants"] = "gao", ["Ganza"] = "gza", ["Ganzi"] = "gnz", ["Gao"] = "gga", ["Gapapaiwa"] = "pwg", ["Garawa"] = "wrk", ["Garhwali"] = "gbm", ["Garifuna"] = "cab", ["Garingbal"] = "xgi", ["Garre"] = "gex", ["Garus"] = "gyb", ["Garza"] = "xgr", ["Gashowu Yokuts"] = "yok-gsy", ["Gata'"] = "gaq", ["Gavak"] = "dmc", ["Gavar"] = "gou", ["Gavião do Jiparaná"] = "gvo", ["Gawar-Bati"] = "gwt", ["Gawwada"] = "gwd", ["Gaya"] = "zra", ["Gayil"] = "gyl", ["Gayo"] = "gay", ["Gayón"] = "sai-gay", ["Gbagyi"] = "gbr", ["Gban"] = "ggu", ["Gbanu"] = "gbv", ["Gbanziri"] = "gbg", ["Gbari"] = "gby", ["Gbaya-Bossangoa"] = "gbp", ["Gbaya-Bozoum"] = "gbq", ["Gbaya-Mbodomo"] = "gmm", ["Gbayi"] = "gyg", ["Gbesi Gbe"] = "gbs", ["Gbii"] = "ggb", ["Gbin"] = "xgb", ["Gbiri-Niragu"] = "grh", ["Gboloo Grebo"] = "gec", ["Gciriku"] = "diu", ["Gcwi"] = "gwj", ["Ge"] = "hmj", ["Geba Karen"] = "kvq", ["Gebe"] = "gei", ["Gedaged"] = "gdd", ["Gedeo"] = "drs", ["Geji"] = "gji", ["Geko Karen"] = "ghk", ["Gela"] = "nlg", ["Gele'"] = "sbc", ["Geme"] = "geq", ["Gen"] = "gej", ["Gende"] = "gaf", ["Gengle"] = "geg", ["Gepo"] = "ygp", ["Gera"] = "gew", ["Gerka"] = "gek", ["German Sign Language"] = "gsg", ["Geruma"] = "gea", ["Geser-Gorom"] = "ges", ["Geshiza"] = "ero-gsz", ["Gey"] = "guv", ["Ghadames"] = "gha", ["Ghanaian Sign Language"] = "gse", ["Ghandruk Sign Language"] = "gds", ["Ghanongga"] = "ghn", ["Ghari"] = "gri", ["Ghayavi"] = "bmk", ["Ghera"] = "ghr", ["Ghomala'"] = "bbj", ["Ghomara"] = "gho", ["Ghotuo"] = "aaa", ["Ghulfan"] = "ghl", ["Giangan"] = "bgi", ["Gibanawa"] = "gib", ["Gidar"] = "gid", ["Gikyode"] = "acd", ["Gilaki"] = "glk", ["Gilima"] = "gix", ["Gimi (Austronesian)"] = "gip", ["Gimi (Papuan)"] = "gim", ["Gimme"] = "kmp", ["Gimnime"] = "gmn", ["Ginuman"] = "gnm", ["Girawa"] = "bbr", ["Girirra"] = "gii", ["Giryama"] = "nyf", ["Githabul"] = "gih", ["Gitua"] = "ggt", ["Gitxsan"] = "git", ["Giyug"] = "giy", ["Gizrra"] = "tof", ["Glaro-Twabo"] = "glr", ["Glavda"] = "glw", ["Glio-Oubi"] = "oub", ["Glosa"] = "igs", ["Gnau"] = "gnu", ["Goa'uld"] = "art-gld", ["Goaria"] = "gig", ["Gobasi"] = "goi", ["Gobu"] = "gox", ["Godié"] = "god", ["Godoberi"] = "gdo", ["Godwari"] = "gdx", ["Goemai"] = "ank", ["Gogo"] = "gog", ["Gogodala"] = "ggw", ["Goguryeo"] = "zkg", ["Gojri"] = "gju", ["Gokana"] = "gkn", ["Gokhy"] = "tbq-gkh", ["Gola"] = "gol", ["Golin"] = "gvf", ["Golpa"] = "lja", ["Gone Dau"] = "goo", ["Gongduk"] = "goe", ["Gonja"] = "gjn", ["Goo"] = "gov", ["Gor"] = "gqr", ["Gorakor"] = "goc", ["Gorap"] = "goq", ["Goreng"] = "xgg", ["Gorontalo"] = "gor", ["Gorovu"] = "grq", ["Gorwaa"] = "gow", ["Gottscheerish"] = "gmw-gts", ["Goundo"] = "goy", ["Gourmanchéma"] = "gux", ["Gowlan"] = "goj", ["Gowro"] = "gwf", ["Gozarkhani"] = "goz", ["Grangali"] = "nli", ["Grass Koiari"] = "kbk", ["Greek Sign Language"] = "gss", ["Green Gelao"] = "giq", ["Grenadian Creole English"] = "gcl", ["Gresi"] = "grs", ["Groma"] = "gro", ["Gros Ventre"] = "ats", ["Gua"] = "gwx", ["Guachí"] = "sai-gua", ["Guahibo"] = "guh", ["Guajajára"] = "gub", ["Guajá"] = "gvj", ["Guambiano"] = "gum", ["Guamo"] = "sai-gmo", ["Guanano"] = "gvc", ["Guanche"] = "gnc", ["Guarayu"] = "gyr", ["Guatemalan Sign Language"] = "gsm", ["Guató"] = "gta", ["Guayabero"] = "guo", ["Guazacapán"] = "nai-guz", ["Gudang"] = "xgd", ["Gudanji"] = "nji", ["Gude"] = "gde", ["Gudu"] = "gdu", ["Guduf-Gava"] = "gdf", ["Guerrero Amuzgo"] = "amu", ["Guerrero Nahuatl"] = "ngu", ["Guevea de Humboldt Zapotec"] = "zpg", ["Gugadj"] = "ggd", ["Gugu Badhun"] = "gdc", ["Gugu Warra"] = "wrw", ["Guhu-Samane"] = "ghs", ["Guianese Creole"] = "gcr", ["Guiberoua Bété"] = "bet", ["Guinau"] = "awd-gnu", ["Guinea Kpelle"] = "gkp", ["Guinea-Bissau Sign Language"] = "lgs", ["Guinean Sign Language"] = "gus", ["Guiqiong"] = "gqi", ["Gula"] = "glu", ["Gula'alaa"] = "gmb", ["Gulay"] = "gvl", ["Gule"] = "gly", ["Gulf Arabic"] = "afb", ["Gullah"] = "gul", ["Gumalu"] = "gmu", ["Gumatj"] = "gnn", ["Gumawana"] = "gvs", ["Gumuz"] = "guk", ["Gun"] = "guw", ["Gundi"] = "gdi", ["Gunditjmara"] = "gjm", ["Gundungurra"] = "xrd", ["Gungabula"] = "gyf", ["Gungu"] = "rub", ["Guntai"] = "gnt", ["Gunu"] = "yas", ["Gunwinggu"] = "gup", ["Gunya"] = "gyy", ["Gupa-Abawa"] = "gpa", ["Gupapuyngu"] = "guf", ["Gur Lama"] = "las", ["Guragone"] = "gge", ["Guramalum"] = "grz", ["Gurani"] = "hac", ["Gureng Gureng"] = "gnr", ["Gurgula"] = "ggg", ["Guriaso"] = "grx", ["Gurindji"] = "gue", ["Gurindji Kriol"] = "gjr", ["Gurmana"] = "gvm", ["Guro"] = "goa", ["Guruntum"] = "grd", ["Gusan"] = "gsn", ["Gusii"] = "guz", ["Gusilay"] = "gsl", ["Gutnish"] = "gmq-gut", ["Guugu Yimidhirr"] = "kky", ["Guwa"] = "xgw", ["Guwamu"] = "gwu", ["Guwar"] = "aus-guw", ["Guya"] = "gka", ["Guyanese Creole English"] = "gyn", ["Guyani"] = "gvy", ["Guébie"] = "gie", ["Gvoko"] = "ngs", ["Gwa"] = "gwb", ["Gwahatike"] = "dah", ["Gwak"] = "jgk", ["Gwamhi-Wuri"] = "bga", ["Gwandara"] = "gwn", ["Gwara"] = "alv-gwa", ["Gweda"] = "grw", ["Gweno"] = "gwe", ["Gwere"] = "gwr", ["Gwich'in"] = "gwi", ["Gyalsumdo"] = "gyo", ["Gyele"] = "gyi", ["Gyem"] = "gye", ["Güenoa"] = "sai-gue", ["Habu"] = "hbu", ["Hachijō"] = "jpx-hcj", ["Hadiyya"] = "hdy", ["Hadoti"] = "hoj", ["Hadrami"] = "xhd", ["Hadza"] = "hts", ["Haeke"] = "aek", ["Hahon"] = "hah", ["Haida"] = "hai", ["Haigwai"] = "hgw", ["Hailufeng Min"] = "nan-hlh", ["Hainyaxo Bozo"] = "bzx", ["Haiphong Sign Language"] = "haf", ["Haisla"] = "has", ["Haitian Vodoun Culture Language"] = "hvc", ["Haiǁom"] = "hgm", ["Haji"] = "hji", ["Hakö"] = "hao", ["Halang"] = "hal", ["Halang Doan"] = "hld", ["Halbi"] = "hlb", ["Halia"] = "hla", ["Halkomelem"] = "hur", ["Hamap"] = "hmu", ["Hamba"] = "hba", ["Hamer-Banna"] = "amf", ["Hamtai"] = "hmt", ["Hanga"] = "hag", ["Hanga Hundi"] = "wos", ["Hani"] = "hni", ["Hanoi Sign Language"] = "hab", ["Harami"] = "xha", ["Harappan"] = "xiv", ["Harari"] = "har", ["Haraza"] = "nub-har", ["Harijan Kinnauri"] = "kjo", ["Haroi"] = "hro", ["Harsusi"] = "hss", ["Haruai"] = "tmd", ["Haruku"] = "hrk", ["Haryanvi"] = "bgc", ["Harzani"] = "hrz", ["Hasaitic"] = "sem-has", ["Hasha"] = "ybj", ["Hassaniya Arabic"] = "mey", ["Hatam"] = "had", ["Hattic"] = "xht", ["Hausa Sign Language"] = "hsl", ["Haush"] = "sai-hau", ["Havasupai-Walapai-Yavapai"] = "yuf", ["Haveke"] = "hvk", ["Havu"] = "hav", ["Hawai'i Pidgin Sign Language"] = "hps", ["Hawaiian Creole"] = "hwc", ["Haya"] = "hay", ["Hdi"] = "xed", ["Hehe"] = "heh", ["Heiban"] = "hbn", ["Heiltsuk"] = "hei", ["Helong"] = "heg", ["Hema"] = "nix", ["Hemba"] = "hem", ["Herdé"] = "hed", ["Hermit"] = "llf", ["Hernican"] = "xhr", ["Hewa"] = "ham", ["Heyo"] = "auk", ["Hibito"] = "hib", ["Hidatsa"] = "hid", ["Higaonon"] = "mba", ["High Valyrian"] = "art-vlh", ["Highland Konjo"] = "kjk", ["Highland Oaxaca Chontal"] = "chd", ["Highland Popoluca"] = "poi", ["Highland Puebla Nahuatl"] = "azz", ["Highland Totonac"] = "tos", ["Hijuk"] = "hij", ["Hill Maria"] = "mrr", ["Himarimã"] = "hir", ["Hindi Dogri"] = "dgo", ["Hinduri"] = "hii", ["Hinukh"] = "gin", ["Hismaic"] = "sem-his", ["Hitchiti"] = "nai-hit", ["Hittite"] = "hit", ["Hitu"] = "htu", ["Hiw"] = "hiw", ["Hixkaryana"] = "hix", ["Hlepho Phowa"] = "yhl", ["Hlersu"] = "hle", ["Hmar"] = "hmr", ["Hmong Don"] = "hmf", ["Hmong Dô"] = "hmv", ["Hmong Shua"] = "hmz", ["Hmwaveke"] = "mrk", ["Ho"] = "hoc", ["Ho Chi Minh City Sign Language"] = "hos", ["Hoava"] = "hoa", ["Hobyót"] = "hoh", ["Hoia Hoia"] = "hhi", ["Holikachuk"] = "hoi", ["Holiya"] = "hoy", ["Holma"] = "hod", ["Holoholo"] = "hoo", ["Holu"] = "hol", ["Homa"] = "hom", ["Honduran Lenca"] = "len", ["Honduras Sign Language"] = "hds", ["Hone"] = "juh", ["Hong Kong Sign Language"] = "hks", ["Honi"] = "how", ["Hopi"] = "hop", ["Horned Miao"] = "hrm", ["Horo"] = "hor", ["Horom"] = "hoe", ["Hote"] = "hot", ["Hoti"] = "hti", ["Hovongan"] = "hov", ["Hoyahoya"] = "hhy", ["Hozo"] = "hoz", ["Hpon"] = "hpo", ["Hrangkhol"] = "hra", ["Hruso"] = "hru", ["Hrê"] = "hre", ["Hu"] = "huo", ["Huachipaeri"] = "hug", ["Huambisa"] = "hub", ["Huaorani"] = "auc", ["Huarijio"] = "var", ["Huaulu"] = "hud", ["Huautla Mazatec"] = "mau", ["Huave"] = "huv", ["Huaxcaleca Nahuatl"] = "nhq", ["Huba"] = "hbb", ["Huehuetla Tepehua"] = "tee", ["Huetar"] = "cba-hue", ["Huichol"] = "hch", ["Huilliche"] = "huh", ["Huitepec Mixtec"] = "mxs", ["Huizhou"] = "czh", ["Hukumina"] = "huw", ["Hula"] = "hul", ["Hulaulá"] = "huy", ["Huli"] = "hui", ["Hulung"] = "huk", ["Humburi Senni"] = "hmb", ["Humene"] = "huf", ["Hun"] = "uth", ["Hunde"] = "hke", ["Hung"] = "hnu", ["Hungana"] = "hum", ["Hungarian Sign Language"] = "hsh", ["Hungworo"] = "nat", ["Hunjara-Kaina Ke"] = "hkk", ["Hunnic"] = "xhc", ["Hunzib"] = "huz", ["Hupa"] = "hup", ["Hupdë"] = "jup", ["Hupla"] = "hap", ["Hutterisch"] = "geh", ["Hwana"] = "hwo", ["Hya"] = "hya", ["Hyam"] = "jab", ["Hän"] = "haa", ["Hértevin"] = "hrt", ["I-Wak"] = "iwk", ["Iaai"] = "iai", ["Iamalele"] = "yml", ["Iatmul"] = "ian", ["Iau"] = "tmu", ["Ibali Teke"] = "tek", ["Ibaloi"] = "ibl", ["Ibanag"] = "ibg", ["Ibani"] = "iby", ["Ibatan"] = "ivb", ["Iberian"] = "xib", ["Ibibio"] = "ibb", ["Ibino"] = "ibn", ["Iboko"] = "bkp", ["Ibu"] = "ibu", ["Ibuoro"] = "ibr", ["Icelandic Sign Language"] = "icl", ["Iceve-Maci"] = "bec", ["Idakho-Isukha-Tiriki"] = "ida", ["Idaté"] = "idt", ["Idere"] = "ide", ["Idesa"] = "ids", ["Idi"] = "idi", ["Idiom Neutral"] = "mis-idn", ["Idoma"] = "idu", ["Idon"] = "idc", ["Idu"] = "clk", ["Idun"] = "ldb", ["Iduna"] = "viv", ["Ifo"] = "iff", ["Ifè"] = "ife", ["Igala"] = "igl", ["Igana"] = "igg", ["Igede"] = "ige", ["Ignaciano"] = "ign", ["Igo"] = "ahl", ["Iguta"] = "nar", ["Igwe"] = "igw", ["Iha"] = "ihp", ["Ihievbe"] = "ihi", ["Ija-Zuba"] = "vki", ["Ik"] = "ikx", ["Ika"] = "ikk", ["Ikaranggal"] = "ikr", ["Ikizu"] = "ikz", ["Iko"] = "iki", ["Ikobi-Mena"] = "meb", ["Ikoma"] = "ntk", ["Ikpeng"] = "txi", ["Ikpeshi"] = "ikp", ["Ikposo"] = "kpo", ["Iku-Gora-Ankwa"] = "ikv", ["Ikulu"] = "ikl", ["Ikwere"] = "ikw", ["Ikwo"] = "iqw", ["Ila"] = "ilb", ["Ile Ape"] = "ila", ["Ilgar"] = "ilg", ["Ili Turki"] = "ili", ["Ili'uun"] = "ilu", ["Ilianen Manobo"] = "mbi", ["Illyrian"] = "xil", ["Ilongot"] = "ilk", ["Ilue"] = "ilv", ["Ilwana"] = "mlk", ["Imbongu"] = "imo", ["Imonda"] = "imn", ["Imroing"] = "imr", ["Inabaknon"] = "abx", ["Inapang"] = "mzu", ["Indanga"] = "bnt-ind", ["Indo-Portuguese"] = "idb", ["Indri"] = "idr", ["Indus Kohistani"] = "mvy", ["Inebu One"] = "oin", ["Ineseño"] = "inz", ["Inga"] = "inb", ["Inlaod Itneg"] = "iti", ["Inoke-Yate"] = "ino", ["Inonhan"] = "loc", ["Inor"] = "ior", ["Inpui Naga"] = "nkf", ["International Sign"] = "ils", ["Interslavic"] = "isv", ["Intha"] = "int", ["Inuinnaqtun"] = "esx-inq", ["Inuit Sign Language"] = "iks", ["Inuktun"] = "esx-ink", ["Inupiaq"] = "ik", ["Inuvialuktun"] = "ikt", ["Ipai"] = "nai-ipa", ["Ipalapa Amuzgo"] = "azm", ["Ipiko"] = "ipo", ["Ipili"] = "ipi", ["Ipulo"] = "ass", ["Iquito"] = "iqu", ["Ir"] = "irr", ["Irantxe"] = "irn", ["Iraqw"] = "irk", ["Irarutu"] = "irh", ["Iraya"] = "iry", ["Iresim"] = "ire", ["Iriga Bicolano"] = "bto", ["Irish Sign Language"] = "isg", ["Irula"] = "iru", ["Isabi"] = "isa", ["Isanzu"] = "isn", ["Isarog Agta"] = "agk", ["Isaurian"] = "mis-isa", ["Isconahua"] = "isc", ["Isebe"] = "igo", ["Ishkashimi"] = "isk", ["Isinai"] = "inn", ["Isirawa"] = "srl", ["Islander Creole English"] = "icr", ["Isnag"] = "isd", ["Isoko"] = "iso", ["Israeli Sign Language"] = "isr", ["Isthmus Mixe"] = "mir", ["Isthmus Zapotec"] = "zai", ["Istro-Romanian"] = "ruo", ["Isu"] = "isu", ["Isubu"] = "szv", ["Italian Sign Language"] = "ise", ["Italiot Greek"] = "grk-ita", ["Itawit"] = "itv", ["Itelmen"] = "itl", ["Itene"] = "ite", ["Iteri"] = "itr", ["Itik"] = "itx", ["Ito"] = "itw", ["Itonama"] = "ito", ["Itsekiri"] = "its", ["Itu Mbon Uzo"] = "itm", ["Itundujia Mixtec"] = "mce", ["Itza'"] = "itz", ["Ivatan"] = "ivv", ["Iwaidja"] = "ibd", ["Iwal"] = "kbm", ["Iwam"] = "iwm", ["Iwur"] = "iwo", ["Ixcatec"] = "ixc", ["Ixcatlán Mazatec"] = "mzi", ["Ixil"] = "ixl", ["Ixtayutla Mixtec"] = "vmj", ["Ixtenco Otomi"] = "otz", ["Iyayu"] = "iya", ["Iyive"] = "uiv", ["Iyo"] = "nca", ["Iyo'wujwa Chorote"] = "crq", ["Iyojwa'ja Chorote"] = "crt", ["Izere"] = "izr", ["Izi"] = "izz", ["Izi-Ezaa-Ikwo-Mgbo"] = "izi", ["Izon"] = "ijc", ["Izora"] = "cbo", ["Iñapari"] = "inp", ["Jabem"] = "jae", ["Jabutí"] = "jbt", ["Jad"] = "jda", ["Jadgali"] = "jdg", ["Jah Hut"] = "jah", ["Jahanka"] = "jad", ["Jair Awyu"] = "awv", ["Jakaltek"] = "jac", ["Jakati"] = "jat", ["Jalapa de Díaz Mazatec"] = "maj", ["Jalkunan"] = "bxl", ["Jamaican Country Sign Language"] = "jcs", ["Jamaican Sign Language"] = "jls", ["Jamamadí"] = "jaa", ["Jambi Malay"] = "jax", ["Jamiltepec Mixtec"] = "mxt", ["Jaminjung"] = "djd", ["Jamsay"] = "djm", ["Jamtish"] = "gmq-jmk", ["Jandavra"] = "jnd", ["Janday"] = "jan", ["Jangkang"] = "djo", ["Jangshung"] = "jna", ["Janji"] = "jni", ["Japanese Sign Language"] = "jsl", ["Japhug"] = "sit-jap", ["Japrería"] = "jru", ["Jaqaru"] = "jqr", ["Jara"] = "jaf", ["Jarai"] = "jra", ["Jarawa"] = "anq", ["Jaru"] = "ddj", ["Jassic"] = "ysc", ["Jaunsari"] = "jns", ["Javindo"] = "jvd", ["Jawe"] = "jaz", ["Jaya"] = "jyy", ["Jebero"] = "jeb", ["Jeh"] = "jeh", ["Jehai"] = "jhi", ["Jeikó"] = "sai-jko", ["Jemez"] = "tow", ["Jenaama Bozo"] = "bze", ["Jeng"] = "jeg", ["Jennu Kurumba"] = "xuj", ["Jere"] = "jer", ["Jeri Kuo"] = "jek", ["Jersey Dutch"] = "gmw-jdt", ["Jeru"] = "akj", ["Jerung"] = "jee", ["Jhankot Sign Language"] = "jhs", ["Jiba"] = "juo", ["Jibu"] = "jib", ["Jicarilla"] = "apj", ["Jie"] = "mis-jie", ["Jiiddu"] = "jii", ["Jilbe"] = "jie", ["Jili"] = "mgi", ["Jilim"] = "jil", ["Jimi"] = "jmi", ["Jimjimen"] = "jim", ["Jina"] = "jia", ["Jingulu"] = "jig", ["Jiongnai Bunu"] = "pnu", ["Jirajara"] = "sai-jrj", ["Jirel"] = "jul", ["Jiru"] = "jrr", ["Jita"] = "jit", ["Jizhao"] = "mis-jzh", ["Jju"] = "kaj", ["Joba"] = "job", ["Jofotek-Bromnya"] = "jbr", ["Jola-Fonyi"] = "dyo", ["Jola-Kasa"] = "csk", ["Jonkor Bourmataguil"] = "jeu", ["Jordanian Sign Language"] = "jos", ["Jorá"] = "jor", ["Jowulu"] = "jow", ["Ju"] = "juu", ["Juang"] = "jun", ["Juba Arabic"] = "pga", ["Judeo-Italian"] = "itk", ["Judeo-Persian"] = "jpr", ["Judeo-Tat"] = "jdt", ["Jukun Takum"] = "jbu", ["Jumaytepeque"] = "nai-jum", ["Jumjum"] = "jum", ["Jumla Sign Language"] = "jus", ["Jumli"] = "jml", ["Jungle Inga"] = "inj", ["Juquila Mixe"] = "mxq", ["Jur Modo"] = "bex", ["Juray"] = "juy", ["Jurúna"] = "jur", ["Jutiapa"] = "nai-jtp", ["Jutish"] = "jut", ["Juwal"] = "mwb", ["Juxtlahuaca Mixtec"] = "vmc", ["Juǀ'hoan"] = "ktz", ["Jwira-Pepesa"] = "jwi", ["Júma"] = "jua", ["K'iche'"] = "quc", ["Kaamba"] = "xku", ["Kaan"] = "ldl", ["Kaang Chin"] = "ckn", ["Kaansa"] = "gna", ["Kaapor Sign Language"] = "uks", ["Kaba"] = "ksp", ["Kabalai"] = "kvf", ["Kabatei"] = "xkp", ["Kabba-Laka"] = "lap", ["Kabishiana"] = "tup-kab", ["Kabiyé"] = "kbp", ["Kabola"] = "klz", ["Kabore One"] = "onk", ["Kabras"] = "lkb", ["Kaburi"] = "uka", ["Kabutra"] = "kbu", ["Kabwa"] = "cwa", ["Kabwari"] = "kcw", ["Kachama-Ganjule"] = "kcx", ["Kachari"] = "xac", ["Kachi Koli"] = "gjk", ["Kacipo-Balesi"] = "koe", ["Kaco'"] = "xkk", ["Kadai"] = "kzd", ["Kadar"] = "kej", ["Kadara"] = "kad", ["Kadaru"] = "kdu", ["Kadiwéu"] = "kbc", ["Kado"] = "kdv", ["Kadugli"] = "xtc", ["Kaduo"] = "ktp", ["Kaera"] = "jka", ["Kafa"] = "kbr", ["Kafoa"] = "kpu", ["Kagate"] = "syw", ["Kagayanen"] = "cgc", ["Kagoma"] = "kdm", ["Kagoro"] = "xkg", ["Kagulu"] = "kki", ["Kahe"] = "hka", ["Kahua"] = "agw", ["Kaian"] = "kct", ["Kaibobo"] = "kzb", ["Kaidipang"] = "kzp", ["Kaiep"] = "kbw", ["Kaikadi"] = "kep", ["Kaike"] = "kzq", ["Kaiku"] = "kkq", ["Kaimbulawa"] = "zka", ["Kaimbé"] = "xai", ["Kaingang"] = "kgp", ["Kairak"] = "ckr", ["Kairiru"] = "kxa", ["Kairui-Midiki"] = "krd", ["Kais"] = "kzm", ["Kaitag"] = "xdq", ["Kaivi"] = "kce", ["Kaiwá"] = "kgk", ["Kaiy"] = "tcq", ["Kajakse"] = "ckq", ["Kajali"] = "xkj", ["Kajaman"] = "kag", ["Kakabai"] = "kqf", ["Kakabe"] = "kke", ["Kakanda"] = "kka", ["Kaki Ae"] = "tbd", ["Kakihum"] = "kxe", ["Kako"] = "kkj", ["Kakwa"] = "keo", ["Kala"] = "kcl", ["Kala Lagaw Ya"] = "mwp", ["Kalaamaya"] = "lkm", ["Kalabakan"] = "kve", ["Kalabari"] = "ijn", ["Kalabra"] = "kzz", ["Kalaktang Monpa"] = "kkf", ["Kalam"] = "kmh", ["Kalami"] = "gwc", ["Kalamsé"] = "knz", ["Kalanadi"] = "wkl", ["Kalanga"] = "kck", ["Kalao"] = "kly", ["Kalapuya"] = "kyl", ["Kalarko"] = "kba", ["Kalasha"] = "kls", ["Kalasuri"] = "xme-kls", ["Kalašma"] = "ine-kal", ["Kalenjin"] = "kln", ["Kalinago"] = "crb", ["Kalkatungu"] = "ktg", ["Kalkoti"] = "xka", ["Kallawaya"] = "caw", ["Kalo Finnish Romani"] = "rmf", ["Kalou"] = "ywa", ["Kaluli"] = "bco", ["Kalumpang"] = "kli", ["Kam"] = "kdx", ["Kamakan"] = "vkm", ["Kamang"] = "woi", ["Kamano"] = "kbq", ["Kamantan"] = "kci", ["Kamar"] = "keq", ["Kamara"] = "jmr", ["Kamarian"] = "kzx", ["Kamaru"] = "kgx", ["Kamasa"] = "klp", ["Kamasau"] = "kms", ["Kamassian"] = "xas", ["Kamayo"] = "kyk", ["Kamayurá"] = "kay", ["Kamba"] = "kam", ["Kambaata"] = "ktb", ["Kambaira"] = "kyy", ["Kamberataro"] = "kbv", ["Kamberau"] = "irx", ["Kambiwá"] = "xbw", ["Kami"] = "kmi", ["Kamkata-viri"] = "bsh", ["Kamo"] = "kcq", ["Kamoro"] = "kgq", ["Kamta"] = "rkt", ["Kamu"] = "xmu", ["Kamula"] = "xla", ["Kamwe"] = "hig", ["Kanakanabu"] = "xnb", ["Kanakuru"] = "kna", ["Kanamari"] = "knm", ["Kanashi"] = "xns", ["Kanasi"] = "soq", ["Kandas"] = "kqw", ["Kandawo"] = "gam", ["Kande"] = "kbs", ["Kang"] = "kyp", ["Kanga"] = "kcp", ["Kangean"] = "kkv", ["Kanggape"] = "igm", ["Kangjia"] = "kxs", ["Kango"] = "kty", ["Kango-Sua"] = "kzy", ["Kangri"] = "xnr", ["Kaniet"] = "ktk", ["Kanikkaran"] = "kev", ["Kaningdon-Nindem"] = "kdp", ["Kaningi"] = "kzo", ["Kaningra"] = "knr", ["Kaninuwa"] = "wat", ["Kanite"] = "kmu", ["Kanjari"] = "kft", ["Kanju"] = "kbe", ["Kannada Kurumba"] = "kfi", ["Kannauji"] = "bjj", ["Kanowit"] = "kxn", ["Kanoé"] = "kxo", ["Kansa"] = "ksk", ["Kantosi"] = "xkt", ["Kanu"] = "khx", ["Kanufi"] = "kni", ["Kanyok"] = "kny", ["Kao"] = "kax", ["Kaonde"] = "kqn", ["Kap"] = "ykm", ["Kapauri"] = "khp", ["Kapin"] = "tbx", ["Kapinawá"] = "xpn", ["Kapingamarangi"] = "kpg", ["Kapriman"] = "dju", ["Kaptiau"] = "kbi", ["Kapya"] = "klo", ["Kaqchikel"] = "cak", ["Kaqchikel-K'iche' Mixed Language"] = "ckz", ["Kara (New Guinea)"] = "leu", ["Kara (Tanzania)"] = "reg", ["Karachay-Balkar"] = "krc", ["Karadjeri"] = "gbd", ["Karaga Mandaya"] = "mry", ["Karaim"] = "kdr", ["Karajá"] = "kpj", ["Karakhanid"] = "xqa", ["Karami"] = "xar", ["Karamojong"] = "kdj", ["Karang"] = "kzr", ["Karanga"] = "kth", ["Karankawa"] = "zkk", ["Karas"] = "kgv", ["Karata"] = "kpt", ["Karawa"] = "xrw", ["Karbi"] = "mjw", ["Kare (Central Africa)"] = "kbn", ["Kare (New Guinea)"] = "kmf", ["Karekare"] = "kai", ["Karey"] = "kyd", ["Kari"] = "kbj", ["Kari'na"] = "car", ["Karingani"] = "kgn", ["Karipuna"] = "kuq", ["Karipúna Creole French"] = "kmv", ["Kariri"] = "kzw", ["Karitiâna"] = "ktn", ["Kariya"] = "kil", ["Kariyarra"] = "vka", ["Karkar-Yuri"] = "yuj", ["Karkin"] = "krb", ["Karko"] = "kko", ["Karnai"] = "bbv", ["Karo"] = "kxh", ["Karo Batak"] = "btx", ["Karok"] = "kyh", ["Karolanos"] = "kyn", ["Karon"] = "krx", ["Karon Dori"] = "kgw", ["Karore"] = "xkx", ["Karranga"] = "xrq", ["Karuwali"] = "rxw", ["Kasanga"] = "ccj", ["Kasem"] = "xsm", ["Kashaya"] = "kju", ["Kasiguranin"] = "ksn", ["Kaska"] = "kkz", ["Kaskean"] = "zsk", ["Kaskihá"] = "gva", ["Kassite"] = "mis-kas", ["Kassonke"] = "kao", ["Kasua"] = "khs", ["Kataang"] = "kgd", ["Katabaga"] = "ktq", ["Katawixi"] = "xat", ["Katembri"] = "sai-kat", ["Kathlamet"] = "nai-kat", ["Kathoriya Tharu"] = "tkt", ["Kathu"] = "ykt", ["Katkari"] = "kfu", ["Katla"] = "kcr", ["Kato"] = "ktw", ["Katso"] = "kaf", ["Katua"] = "kta", ["Katukina"] = "knt", ["Kaulong"] = "pss", ["Kaur"] = "vkk", ["Kaure"] = "bpp", ["Kaurna"] = "zku", ["Kauwera"] = "xau", ["Kavet"] = "krv", ["Kawacha"] = "kcb", ["Kawaiisu"] = "xaw", ["Kawe"] = "kgb", ["Kawishana"] = "awd-kaw", ["Kawésqar"] = "alc", ["Kaxararí"] = "ktx", ["Kaxuyana"] = "kbb", ["Kayabí"] = "kyz", ["Kayagar"] = "kyt", ["Kayan Mahakam"] = "xay", ["Kayan River Kayan"] = "xkn", ["Kayapa Kallahan"] = "kak", ["Kayapó"] = "txu", ["Kayardild"] = "gyd", ["Kayeli"] = "kzl", ["Kayong"] = "kxy", ["Kayort"] = "kyv", ["Kaytetye"] = "gbb", ["Kayupulau"] = "kzu", ["Kazukuru"] = "kzk", ["Ke'o"] = "xxk", ["Keak"] = "keh", ["Keapara"] = "khz", ["Kedang"] = "ksx", ["Keder"] = "kdy", ["Kehu"] = "khh", ["Kei"] = "kei", ["Keiga"] = "kec", ["Kein"] = "bmh", ["Keiyo"] = "eyo", ["Kela-Yela"] = "kel", ["Kelabit"] = "kzi", ["Kelantan Peranakan Hokkien"] = "mis-hkl", ["Keley-I Kallahan"] = "ify", ["Keliko"] = "kbo", ["Kelo"] = "xel", ["Kelon"] = "kyo", ["Kemak"] = "kem", ["Kembayan"] = "xem", ["Kemberano"] = "bzp", ["Kembra"] = "xkw", ["Kemezung"] = "dmo", ["Kemi Sami"] = "sjk", ["Kemiehua"] = "kfj", ["Kemtuik"] = "kmt", ["Kenaboi"] = "xbn", ["Kenati"] = "gat", ["Kendayan"] = "knx", ["Kendeje"] = "klf", ["Kendem"] = "kvm", ["Kenga"] = "kyq", ["Keningau Murut"] = "kxi", ["Keninjal"] = "knl", ["Kensiu"] = "kns", ["Kenswei Nsei"] = "ndb", ["Kenyan Sign Language"] = "xki", ["Kenyang"] = "ken", ["Kenyi"] = "lke", ["Keoru-Ahia"] = "xeu", ["Kepkiriwát"] = "kpn", ["Kepo'"] = "kuk", ["Kera"] = "ker", ["Kerak"] = "hhr", ["Kereho"] = "xke", ["Kerek"] = "krk", ["Kerewe"] = "ked", ["Kerewo"] = "kxz", ["Kerinci"] = "kvr", ["Kermanic"] = "xme-ker", ["Kesawai"] = "xes", ["Ket"] = "ket", ["Ketangalan"] = "kae", ["Kete"] = "kcv", ["Ketengban"] = "xte", ["Ketum"] = "ktt", ["Kewa"] = "kew", ["Keyagana"] = "kyg", ["Kgalagadi"] = "xkv", ["Khalaj"] = "klj", ["Khaling"] = "klr", ["Khamnigan Mongol"] = "ykh", ["Khamyang"] = "ksu", ["Khana"] = "ogo", ["Khandeshi"] = "khn", ["Khao"] = "xao", ["Kharam Naga"] = "kfw", ["Kharia"] = "khr", ["Kharia Thar"] = "ksy", ["Khayo"] = "lko", ["Khazar"] = "zkz", ["Khe"] = "kqg", ["Khehek"] = "tlx", ["Khengkha"] = "xkf", ["Khetrani"] = "xhe", ["Khezha Naga"] = "nkh", ["Khiamniungan Naga"] = "kix", ["Khinalug"] = "kjj", ["Khirwar"] = "kwx", ["Khisa"] = "kqm", ["Khlor"] = "llo", ["Khlula"] = "ykl", ["Khoekhoe"] = "naq", ["Khoibu Naga"] = "nkb", ["Khoini"] = "xkc", ["Kholok"] = "ktc", ["Kholosi"] = "inc-kho", ["Khorasani Turkish"] = "kmz", ["Khorezmian Turkic"] = "zkh", ["Khowar"] = "khw", ["Khroskyabs"] = "jiq", ["Khua"] = "xhv", ["Khuen"] = "khf", ["Khumi Chin"] = "cnk", ["Khvarshi"] = "khv", ["Khwarezmian"] = "xco", ["Khwe"] = "xuu", ["Kháng"] = "kjm", ["Kiautschou German Pidgin"] = "crp-kia", ["Kibala"] = "blv", ["Kibena"] = "bez", ["Kibet"] = "kie", ["Kibiri"] = "prm", ["Kichwa"] = "qwe-kch", ["Kickapoo"] = "kic", ["Kikai"] = "kzg", ["Kikami"] = "kcu", ["Kili"] = "tuw-kli", ["Kilit"] = "xme-klt", ["Kilivila"] = "kij", ["Kiliwa"] = "klb", ["Kilmeri"] = "kih", ["Kim"] = "kia", ["Kim Mun"] = "mji", ["Kimaama"] = "kig", ["Kimaragang"] = "kqr", ["Kimbu"] = "kiv", ["Kimbundu"] = "kmb", ["Kimki"] = "sbt", ["Kimré"] = "kqp", ["Kinabalian"] = "cbw", ["Kinalakna"] = "kco", ["Kinaray-a"] = "krj", ["Kinga"] = "zga", ["Kings River Yokuts"] = "yok-kry", ["Kinikinao"] = "gqn", ["Kinnauri"] = "kfk", ["Kintaq"] = "knq", ["Kinuku"] = "kkd", ["Kioko"] = "ues", ["Kiong"] = "kkm", ["Kiorr"] = "xko", ["Kiowa"] = "kio", ["Kipfokomo"] = "pkb", ["Kipsigis"] = "sgc", ["Kiput"] = "kyi", ["Kir-Balar"] = "kkr", ["Kire"] = "geb", ["Kirfi"] = "kks", ["Kirike"] = "okr", ["Kirikiri"] = "kiy", ["Kirya-Konzel"] = "fkk", ["Kis"] = "kis", ["Kisa"] = "lks", ["Kisan"] = "xis", ["Kisankasa"] = "kqh", ["Kisar"] = "kje", ["Kisi"] = "kiz", ["Kistane"] = "gru", ["Kita Maninkakan"] = "mwk", ["Kitanemuk"] = "azc-ktn", ["Kitembo"] = "tbt", ["Kitja"] = "gia", ["Kitsai"] = "kii", ["Kituba"] = "ktu", ["Kiunum"] = "wei", ["Kla"] = "lda", ["Klallam"] = "clm", ["Klamath-Modoc"] = "kla", ["Klao"] = "klu", ["Klias River Kadazan"] = "kqt", ["Klingon"] = "tlh", ["Knaanic"] = "czk", ["Ko"] = "fuj", ["Koalib"] = "kib", ["Koasati"] = "cku", ["Koba"] = "kpd", ["Kobiana"] = "kcj", ["Kobol"] = "kgu", ["Kobon"] = "kpw", ["Koch"] = "kdq", ["Kochila Tharu"] = "thq", ["Koda"] = "cdz", ["Kodaku"] = "ksz", ["Kodava"] = "kfa", ["Kodeoha"] = "vko", ["Kodi"] = "kod", ["Kodia"] = "kwp", ["Koenoem"] = "kcs", ["Kofa"] = "kso", ["Kofei"] = "kpi", ["Kofyar"] = "kwl", ["Kohin"] = "kkx", ["Kohistani Shina"] = "plk", ["Kohumono"] = "bcs", ["Koi"] = "kkt", ["Koibal"] = "zkb", ["Koireng"] = "nkd", ["Koitabu"] = "kqi", ["Koiwat"] = "kxt", ["Kok-Nar"] = "gko", ["Kok-Paponk"] = "okg", ["Kokata"] = "ktd", ["Koke"] = "kou", ["Koko-Bera"] = "kkp", ["Kokoda"] = "xod", ["Kokola"] = "kzn", ["Kokota"] = "kkk", ["Kol (Cameroon)"] = "biw", ["Kol (New Guinea)"] = "kol", ["Kola"] = "kvv", ["Kolami"] = "kfb", ["Kolbila"] = "klc", ["Kolhe"] = "ekl", ["Kolibugan Subanon"] = "skn", ["Kolom"] = "klm", ["Koluwawa"] = "klx", ["Kom (Cameroon)"] = "bkm", ["Kom (India)"] = "kmm", ["Koma"] = "kmy", ["Komba"] = "kpf", ["Kombai"] = "tyn", ["Kombio"] = "xbi", ["Komering"] = "kge", ["Komi-Permyak"] = "koi", ["Komi-Yazva"] = "urj-kya", ["Komi-Zyrian"] = "kpv", ["Kominimung"] = "xoi", ["Komo"] = "xom", ["Komodo"] = "kvh", ["Kompane"] = "kvp", ["Komyandaret"] = "kzv", ["Kon Keu"] = "kkn", ["Konabéré"] = "bbo", ["Konai"] = "kxw", ["Konda"] = "knd", ["Konda-Dora"] = "kfc", ["Kondekor"] = "gau", ["Koneraw"] = "kdw", ["Konkomba"] = "xon", ["Konni"] = "kma", ["Kono (Guinea)"] = "knu", ["Kono (Nigeria)"] = "klk", ["Kono (Sierra Leone)"] = "kno", ["Konomala"] = "koa", ["Konomihu"] = "nai-knm", ["Konongo"] = "kcz", ["Konso"] = "kxc", ["Konyak Naga"] = "nbe", ["Konyanka Maninka"] = "mku", ["Konzo"] = "koo", ["Koonzime"] = "ozm", ["Koorete"] = "kqy", ["Kopar"] = "xop", ["Kopkaka"] = "opk", ["Korafe-Yegha"] = "kpr", ["Korak"] = "koz", ["Korana"] = "kqz", ["Korandje"] = "kcy", ["Korean Sign Language"] = "kvk", ["Koreguaje"] = "coe", ["Koresh-e Rostam"] = "okh", ["Korku"] = "kfq", ["Korlai Creole Portuguese"] = "vkp", ["Koro (India)"] = "jkr", ["Koro (Vanuatu)"] = "krf", ["Koro (West Africa)"] = "kfo", ["Koromfé"] = "kfz", ["Koromira"] = "kqj", ["Koronadal Blaan"] = "bpr", ["Koroni"] = "xkq", ["Korop"] = "krp", ["Koropó"] = "xxr", ["Koroshi"] = "ktl", ["Korowai"] = "khe", ["Korra Koraga"] = "kfd", ["Korubo"] = "xor", ["Korupun-Sela"] = "kpq", ["Korwa"] = "kfp", ["Koryak"] = "kpy", ["Kosadle"] = "kiq", ["Kosarek Yale"] = "kkl", ["Koshin"] = "kid", ["Kosraean"] = "kos", ["Kota (Gabon)"] = "koq", ["Kota (India)"] = "kfe", ["Kota Bangun Kutai Malay"] = "mqg", ["Kota Marudu Talantang"] = "grm", ["Kota Marudu Tinagas"] = "ktr", ["Kotafon Gbe"] = "kqk", ["Koti"] = "eko", ["Kott"] = "zko", ["Kou"] = "snz", ["Kouya"] = "kyf", ["Kovai"] = "kqb", ["Kove"] = "kvc", ["Kowaki"] = "xow", ["Kowiai"] = "kwh", ["Koy Sanjaq Surat"] = "kqd", ["Koya"] = "kff", ["Koyaga"] = "kga", ["Koyo"] = "koh", ["Koyra Chiini"] = "khq", ["Koyraboro Senni"] = "ses", ["Koyukon"] = "koy", ["Kpagua"] = "kuw", ["Kpala"] = "kpl", ["Kpan"] = "kpk", ["Kpasam"] = "pbn", ["Kpati"] = "koc", ["Kpatili"] = "kym", ["Kpee"] = "cpo", ["Kpelle"] = "kpe", ["Kpessi"] = "kef", ["Kplang"] = "kph", ["Krache"] = "kye", ["Krahô"] = "xra", ["Kraol"] = "rka", ["Krenak"] = "kqq", ["Kresh"] = "krs", ["Krevinian"] = "zkv", ["Kreye"] = "xre", ["Krikati-Timbira"] = "xri", ["Krim"] = "krm", ["Krio"] = "kri", ["Krisa"] = "ksi", ["Kristang"] = "mcm", ["Krobu"] = "kxb", ["Krongo"] = "kgo", ["Kru'ng"] = "krr", ["Krymchak"] = "jct", ["Kryts"] = "kry", ["Ktunaxa"] = "kut", ["Kua"] = "tyu", ["Kua-nsi"] = "ykn", ["Kuamasi"] = "yku", ["Kuan"] = "uan", ["Kuanhua"] = "xnh", ["Kube"] = "kgf", ["Kubi"] = "kof", ["Kubo"] = "jko", ["Kubu"] = "kvb", ["Kucong"] = "lkc", ["Kudiya"] = "kfg", ["Kudmali"] = "kyw", ["Kudu-Camo"] = "kov", ["Kugama"] = "kow", ["Kugbo"] = "kes", ["Kugu-Muminh"] = "xmh", ["Kui (India)"] = "kxu", ["Kui (Indonesia)"] = "kvd", ["Kuijau"] = "dkr", ["Kuikúro"] = "kui", ["Kujarge"] = "vkj", ["Kuk"] = "kfn", ["Kukatja"] = "kux", ["Kukele"] = "kez", ["Kukkuzi"] = "urj-kuk", ["Kukna"] = "kex", ["Kuku-Mangk"] = "xmq", ["Kuku-Mu'inh"] = "xmp", ["Kuku-Thaypan"] = "typ", ["Kuku-Ugbanh"] = "ugb", ["Kuku-Uwanh"] = "uwa", ["Kuku-Yalanji"] = "gvn", ["Kula"] = "tpg", ["Kulaal"] = "glj", ["Kulere"] = "kul", ["Kulfa"] = "kxj", ["Kulina"] = "xpk", ["Kulisusu"] = "vkl", ["Kullu Pahari"] = "kfx", ["Kulon"] = "uon", ["Kulon-Pazeh"] = "uun", ["Kulung"] = "kle", ["Kumak"] = "nee", ["Kumalu"] = "ksl", ["Kumam"] = "kdi", ["Kuman"] = "kue", ["Kumaoni"] = "kfy", ["Kumarbhag Paharia"] = "kmj", ["Kumba"] = "ksm", ["Kumbainggar"] = "kgs", ["Kumbaran"] = "wkb", ["Kumbewaha"] = "xks", ["Kumeyaay"] = "nai-kum", ["Kumhali"] = "kra", ["Kumu"] = "kmw", ["Kumukio"] = "kuo", ["Kumzari"] = "zum", ["Kuna"] = "cuk", ["Kunama"] = "kun", ["Kunbarlang"] = "wlg", ["Kunda"] = "kdn", ["Kundal Shahi"] = "shd", ["Kunduvadi"] = "wku", ["Kung"] = "kfl", ["Kungarakany"] = "ggk", ["Kungardutyi"] = "gdt", ["Kunggari"] = "kgl", ["Kungkari"] = "lku", ["Kuni"] = "kse", ["Kuni-Boazi"] = "kvg", ["Kunimaipa"] = "kup", ["Kunja"] = "pep", ["Kunjen"] = "kjn", ["Kunyi"] = "njx", ["Kunza"] = "kuz", ["Kuo"] = "xuo", ["Kuot"] = "kto", ["Kupa"] = "kug", ["Kupang Malay"] = "mkn", ["Kupia"] = "key", ["Kupsabiny"] = "kpz", ["Kur"] = "kuv", ["Kura Ede Nago"] = "nqk", ["Kurama"] = "krh", ["Kuranko"] = "knk", ["Kuri"] = "nbn", ["Kuria"] = "kuj", ["Kurichiya"] = "kfh", ["Kurmukar"] = "kfv", ["Kurnai"] = "unn", ["Kurrama"] = "vku", ["Kurti"] = "ktm", ["Kurtjar"] = "gdj", ["Kurtöp"] = "xkz", ["Kurudu"] = "kjr", ["Kuruáya"] = "kyr", ["Kusaal"] = "kus", ["Kusaghe"] = "ksg", ["Kushi"] = "kuh", ["Kustenau"] = "awd-kus", ["Kusu"] = "ksv", ["Kusunda"] = "kgg", ["Kutang Ghale"] = "ght", ["Kutep"] = "kub", ["Kuthant"] = "xut", ["Kutto"] = "kpa", ["Kutu"] = "kdc", ["Kuturmi"] = "khj", ["Kuuk Thaayorre"] = "thd", ["Kuuk Yak"] = "uky", ["Kuuku-Ya'u"] = "kuy", ["Kuvale"] = "olu", ["Kuvi"] = "kxv", ["Kuwaa"] = "blh", ["Kuwaataay"] = "cwt", ["Kuwani"] = "paa-kwn", ["Kven"] = "fkv", ["Kw'adza"] = "wka", ["Kwa'"] = "bko", ["Kwaami"] = "ksq", ["Kwadi"] = "kwz", ["Kwaio"] = "kwd", ["Kwaja"] = "kdz", ["Kwak"] = "kwq", ["Kwak'wala"] = "kwk", ["Kwakum"] = "kwu", ["Kwalhioqua-Tlatskanai"] = "qwt", ["Kwama"] = "kmq", ["Kwambi"] = "kwm", ["Kwamera"] = "tnk", ["Kwami"] = "ktf", ["Kwamtim One"] = "okk", ["Kwang"] = "kvi", ["Kwanga"] = "kwj", ["Kwangali"] = "kwn", ["Kwanja"] = "knp", ["Kwanka"] = "bij", ["Kwanyama"] = "kj", ["Kwara'ae"] = "kwf", ["Kwasio"] = "nmg", ["Kwaya"] = "kya", ["Kwaza"] = "xwa", ["Kwegu"] = "xwg", ["Kwer"] = "kwr", ["Kwerba"] = "kwe", ["Kwerba Mamberamo"] = "xwr", ["Kwere"] = "cwe", ["Kwerisa"] = "kkb", ["Kwese"] = "kws", ["Kwesten"] = "kwt", ["Kwini"] = "gww", ["Kwinsu"] = "kuc", ["Kwinti"] = "kww", ["Kwoma"] = "kmo", ["Kwomtari"] = "kwo", ["Kyak"] = "bka", ["Kyaka"] = "kyc", ["Kyakala"] = "tuw-kkl", ["Kyan-Karyaw Naga"] = "nqq", ["Kyenele"] = "kql", ["Kyenga"] = "tye", ["Kyerung"] = "kgy", ["Kâte"] = "kmg", ["Kélé"] = "keb", ["Kómnzo"] = "paa-kom", ["La'bi"] = "lbi", ["Laal"] = "gdm", ["Laalaa"] = "cae", ["Laba"] = "lau", ["Label"] = "lbb", ["Labir"] = "jku", ["Labo"] = "mwi", ["Labo Phowa"] = "ypb", ["Labu"] = "lbu", ["Labuk-Kinabatangan Kadazan"] = "dtb", ["Lacandon"] = "lac", ["Lachi"] = "lbt", ["Lachiguiri Zapotec"] = "zpa", ["Lachixío Zapotec"] = "zpl", ["Ladji-Ladji"] = "llj", ["Laeko-Libuat"] = "lkl", ["Lafofa"] = "laf", ["Laghu"] = "lgb", ["Laghuu"] = "lgh", ["Lagwan"] = "kot", ["Laha (Indonesia)"] = "lhh", ["Laha (Vietnam)"] = "lha", ["Lahanan"] = "lhn", ["Lahnda"] = "lah", ["Lahta Karen"] = "kvt", ["Lahu"] = "lhu", ["Lahu Shi"] = "lhi", ["Lahul Lohar"] = "lhl", ["Lai"] = "cnh", ["Laimbue"] = "lmx", ["Laitu Chin"] = "clj", ["Laiyolo"] = "lji", ["Laka"] = "lak", ["Lakalei"] = "lka", ["Lake Miwok"] = "lmw", ["Lakha"] = "lkh", ["Laki"] = "lki", ["Lakon"] = "lkn", ["Lakondê"] = "lkd", ["Lakota"] = "lkt", ["Lakota Dida"] = "dic", ["Lala (New Guinea)"] = "nrz", ["Lala (South Africa)"] = "bnt-lal", ["Lala-Bisa"] = "leb", ["Lala-Roba"] = "lla", ["Lalana Chinantec"] = "cnl", ["Lama Bai"] = "lay", ["Lamaholot"] = "slp", ["Lamalera"] = "lmr", ["Lamang"] = "hia", ["Lamatuka"] = "lmq", ["Lamba"] = "lam", ["Lambadi"] = "lmn", ["Lambichhong"] = "lmh", ["Lambya"] = "lai", ["Lame"] = "bma", ["Lamenu"] = "lmu", ["Lamet"] = "lbn", ["Lamja-Dengsa-Tola"] = "ldh", ["Lamkang"] = "lmk", ["Lamma"] = "lev", ["Lamnso'"] = "lns", ["Lamogai"] = "lmg", ["Lampung Api"] = "ljp", ["Lamu"] = "llh", ["Lamu-Lamu"] = "lby", ["Lanas Lobu"] = "ruu", ["Landoma"] = "ldm", ["Lang'e"] = "yne", ["Langam"] = "lnm", ["Langbashe"] = "lna", ["Langi"] = "lag", ["Langnian Buyang"] = "yln", ["Lango (Sudan)"] = "lno", ["Lango (Uganda)"] = "laj", ["Lanima"] = "lnw", ["Lanoh"] = "lnh", ["Lao Naga"] = "nlq", ["Laomian"] = "lwm", ["Laopang"] = "lbg", ["Laos Sign Language"] = "lso", ["Lapaguía-Guivini Zapotec"] = "ztl", ["Lapine"] = "art-lap", ["Lapuyan Subanun"] = "laa", ["Laragia"] = "lrg", ["Larantuka Malay"] = "lrt", ["Lardil"] = "lbz", ["Larestani"] = "lrl", ["Larike-Wakasihu"] = "alo", ["Laro"] = "lro", ["Larteh"] = "lar", ["Laru"] = "lan", ["Larëvat"] = "lrv", ["Lasalimu"] = "llm", ["Lasgerdi"] = "lsa", ["Lashi"] = "lsi", ["Lasi"] = "lss", ["Latu"] = "ltu", ["Latundê"] = "ltn", ["Latvian Sign Language"] = "lsl", ["Lau"] = "llu", ["Laua"] = "luf", ["Lauan"] = "llx", ["Lauje"] = "law", ["Laura"] = "lur", ["Laurentian"] = "lre", ["Lavatbura-Lamusong"] = "lbv", ["Lave"] = "brb", ["Laven"] = "lbo", ["Lavukaleve"] = "lvk", ["Lawangan"] = "lbx", ["Lawi"] = "lvi", ["Lawu"] = "lwu", ["Lawunuia"] = "tgi", ["Layakha"] = "lya", ["Laze"] = "tbq-laz", ["Lealao Chinantec"] = "cle", ["Leco"] = "lec", ["Ledo Kaili"] = "lew", ["Leelau"] = "ldk", ["Lefa"] = "lfa", ["Lega-Mwenga"] = "lgm", ["Lega-Shabunda"] = "lea", ["Legbo"] = "agb", ["Legenyem"] = "lcc", ["Lehali"] = "tql", ["Leinong Naga"] = "lzn", ["Leipon"] = "lek", ["Lela"] = "dri", ["Lelak"] = "llk", ["Lele (Chad)"] = "lln", ["Lele (Congo)"] = "lel", ["Lele (Guinea)"] = "llc", ["Lele (New Guinea)"] = "lle", ["Lelemi"] = "lef", ["Lelepa"] = "lpa", ["Lembena"] = "leq", ["Lemerig"] = "lrz", ["Lemio"] = "lei", ["Lemnian"] = "xle", ["Lemolang"] = "ley", ["Lemoro"] = "ldj", ["Lenakel"] = "tnl", ["Lendu"] = "led", ["Lengilu"] = "lgi", ["Lengo"] = "lgr", ["Lengola"] = "lej", ["Lenje"] = "leh", ["Lenkau"] = "ler", ["Lenyima"] = "ldg", ["Lepcha"] = "lep", ["Lepki"] = "lpe", ["Lepontic"] = "xlp", ["Lere"] = "gnh", ["Lese"] = "les", ["Lesing-Gelimi"] = "let", ["Letemboi"] = "nms", ["Leti"] = "lti", ["Levuka"] = "lvu", ["Lewo"] = "lww", ["Lewo Eleng"] = "lwe", ["Lewotobi"] = "lwt", ["Leyigha"] = "ayi", ["Lhao Vo"] = "mhx", ["Lhokpu"] = "lhp", ["Li'o"] = "ljl", ["Liabuku"] = "lix", ["Liana-Seti"] = "ste", ["Liangmai Naga"] = "njn", ["Liberia Kpelle"] = "xpe", ["Liberian Kreyol"] = "lir", ["Libido"] = "liq", ["Libinza"] = "liz", ["Libon Bikol"] = "lbl", ["Liburnian"] = "xli", ["Libyan Sign Language"] = "lbs", ["Ligbi"] = "lig", ["Ligenza"] = "lgz", ["Lihir"] = "lih", ["Lika"] = "lik", ["Liki"] = "lio", ["Likila"] = "lie", ["Likuba"] = "kxx", ["Likum"] = "lib", ["Likwala"] = "kwc", ["Lilau"] = "lll", ["Lillooet"] = "lil", ["Limassa"] = "bme", ["Limbum"] = "lmp", ["Limi"] = "ylm", ["Limilngan"] = "lmc", ["Limos Kalinga"] = "kmk", ["Linear A"] = "lab", ["Lingkhim"] = "lii", ["Lingua Franca Nova"] = "lfn", ["Linngithigh"] = "lnj", ["Lipan"] = "apl", ["Lipo"] = "lpo", ["Lisabata-Nuniali"] = "lcs", ["Lisela"] = "lcl", ["Lish"] = "lsh", ["Lishana Deni"] = "lsd", ["Lishanid Noshan"] = "aij", ["Lishán Didán"] = "trg", ["Lithuanian Sign Language"] = "lls", ["Little Swanport"] = "aus-lsw", ["Litzlitz"] = "lzl", ["Lizu"] = "sit-liz", ["Lo-Toga"] = "lht", ["Loarki"] = "lrk", ["Lobala"] = "loq", ["Lobi"] = "lob", ["Lodhi"] = "lbm", ["Logba"] = "lgq", ["Logo"] = "log", ["Logol"] = "lof", ["Logooli"] = "rag", ["Logorik"] = "liu", ["Lokaa"] = "yaz", ["Loko"] = "lok", ["Lokoya"] = "lky", ["Lola"] = "lcd", ["Lolak"] = "llq", ["Lole"] = "llg", ["Lolo"] = "llb", ["Loloda"] = "loa", ["Lolopo"] = "ycl", ["Loma"] = "lom", ["Lomaiviti"] = "lmv", ["Lomakka"] = "loi", ["Lomavren"] = "rmi", ["Lombi"] = "lmi", ["Lombo"] = "loo", ["Lomwe"] = "ngl", ["Loncong"] = "lce", ["Long Phuri Naga"] = "lpn", ["Long Wat"] = "ttw", ["Longgu"] = "lgu", ["Longjia"] = "sit-lnj", ["Longto"] = "wok", ["Longuda"] = "lnu", ["Longyan Min"] = "nan-lnx", ["Loniu"] = "los", ["Lonwolwol"] = "crc", ["Loo"] = "ldo", ["Lopa"] = "lop", ["Lope"] = "yiu", ["Lopi"] = "lov", ["Lopit"] = "lpx", ["Lorang"] = "lrn", ["Lorediakarkar"] = "lnn", ["Lorrain"] = "roa-lor", ["Lote"] = "uvl", ["Lotha Naga"] = "njh", ["Lotud"] = "dtr", ["Lotuko"] = "lot", ["Lou"] = "loj", ["Loun"] = "lox", ["Loup A"] = "xlo", ["Loup B"] = "xlb", ["Lovono"] = "vnk", ["Lower Burdekin"] = "xbb", ["Lower Chehalis"] = "cea", ["Lower Grand Valley Dani"] = "dni", ["Lower Nossob"] = "nsb", ["Lower Southern Aranda"] = "axl", ["Lower Ta'oih"] = "tto", ["Lower Tanana"] = "taa", ["Lowland Oaxaca Chontal"] = "clo", ["Lowland Tarahumara"] = "tac", ["Loxicha Zapotec"] = "ztp", ["Lozi"] = "loz", ["Luang"] = "lex", ["Luba-Kasai"] = "lua", ["Luba-Katanga"] = "lu", ["Lubila"] = "kcc", ["Lubu"] = "lcf", ["Lubuagan Kalinga"] = "knb", ["Luchazi"] = "lch", ["Lucumí"] = "luq", ["Ludian"] = "lud", ["Lufu"] = "ldq", ["Lugbara"] = "lgg", ["Luguru"] = "ruf", ["Luhu"] = "lcq", ["Luhya"] = "luy", ["Luimbi"] = "lum", ["Luiseño"] = "lui", ["Lukpa"] = "dop", ["Lule"] = "ule", ["Lumba-Yakkha"] = "luu", ["Lumbee"] = "lmz", ["Lumbu"] = "lup", ["Lumun"] = "lmd", ["Lun Bawang"] = "lnd", ["Luna"] = "luj", ["Lunanakha"] = "luk", ["Lunda"] = "lun", ["Lungga"] = "lga", ["Luo"] = "luo", ["Luopohe Hmong"] = "hml", ["Luren"] = "sit-lrn", ["Luri (Nigeria)"] = "ldd", ["Lusengo"] = "lse", ["Lushootseed"] = "lut", ["Lusi"] = "khl", ["Lusitanian"] = "xls", ["Lutachoni"] = "lts", ["Lutos"] = "ndy", ["Lutuv"] = "clt", ["Luvale"] = "lue", ["Luwati"] = "luv", ["Luwian"] = "xlu", ["Luwo"] = "lwo", ["Luyana"] = "lyn", ["Lwalu"] = "lwa", ["Lwel"] = "lvl", ["Lycian"] = "xlc", ["Lydian"] = "xld", ["Lyélé"] = "lee", ["Láadan"] = "ldn", ["Láá Láá Bwamu"] = "bwj", ["Löyöp"] = "urr", ["Ma"] = "msj", ["Ma Manda"] = "skc", ["Ma'anyan"] = "mhy", ["Ma'di"] = "mhi", ["Ma'ya"] = "slz", ["Maaka"] = "mew", ["Maale"] = "mdy", ["Maay"] = "ymm", ["Maba"] = "mqa", ["Mabaale"] = "mmz", ["Mabaan"] = "mfz", ["Mabaka Valley Kalinga"] = "kkg", ["Mabire"] = "muj", ["Maca"] = "mca", ["Macaguaje"] = "mcl", ["Macaguán"] = "mbn", ["Macau Pidgin Portuguese"] = "crp-mpp", ["Machame"] = "jmc", ["Machiguenga"] = "mcb", ["Machinere"] = "mpd", ["Machinga"] = "mvw", ["Macoris"] = "nai-mac", ["Macuna"] = "myy", ["Macushi"] = "mbc", ["Mada (Cameroon)"] = "mxu", ["Mada (Nigeria)"] = "mda", ["Madagascar Sign Language"] = "mzc", ["Madak"] = "mmx", ["Maden"] = "xmx", ["Madhi Madhi"] = "dmd", ["Madi"] = "grg", ["Madngele"] = "zml", ["Madukayang Kalinga"] = "kmd", ["Madurese"] = "mad", ["Maeng Itneg"] = "itt", ["Mafa"] = "maf", ["Mag-Anchi Ayta"] = "sgb", ["Mag-Indi Ayta"] = "blx", ["Magahat"] = "mtw", ["Magdalena Peñasco Mixtec"] = "xtm", ["Magiyi"] = "gmg", ["Magoma"] = "gmx", ["Magori"] = "zgr", ["Magɨ"] = "gkd", ["Mahali"] = "mjx", ["Mahasu Pahari"] = "bfz", ["Mahican"] = "mjy", ["Mahongwe"] = "mhb", ["Mahou"] = "mxx", ["Maiadomu"] = "mzz", ["Maiani"] = "tnh", ["Maii"] = "mmm", ["Mailu"] = "mgu", ["Maindo"] = "cwb", ["Maipure"] = "awd-mpr", ["Mairasi"] = "zrs", ["Maisin"] = "mbq", ["Maiwa (Indonesia)"] = "wmm", ["Maiwa (New Guinea)"] = "mti", ["Maiwala"] = "mum", ["Majang"] = "mpe", ["Majera"] = "xmj", ["Majhi"] = "mjz", ["Majhwar"] = "mmj", ["Mak (China)"] = "mkg", ["Mak (Nigeria)"] = "pbl", ["Makaa"] = "mcp", ["Makah"] = "myh", ["Makalero"] = "mjb", ["Makasae"] = "mkz", ["Makassar Malay"] = "mfp", ["Makayam"] = "aup", ["Makhuwa"] = "vmw", ["Makhuwa-Marrevone"] = "xmc", ["Makhuwa-Meetto"] = "mgh", ["Makhuwa-Moniga"] = "mhm", ["Makhuwa-Saka"] = "xsq", ["Makhuwa-Shirima"] = "vmk", ["Maklew"] = "mgf", ["Makolkol"] = "zmh", ["Makonde"] = "kde", ["Maku"] = "xak", ["Maku'a"] = "lva", ["Makuri Naga"] = "jmn", ["Makuráp"] = "mpu", ["Makwe"] = "ymk", ["Makyan Naga"] = "umn", ["Mal Paharia"] = "mkb", ["Mala (New Guinea)"] = "ped", ["Mala (Nigeria)"] = "ruy", ["Mala Malasar"] = "ima", ["Malaccan Creole Malay"] = "ccm", ["Malalamai"] = "mmt", ["Malalí"] = "sai-mal", ["Malango"] = "mln", ["Malankuravan"] = "mjo", ["Malapandaram"] = "mjp", ["Malaryan"] = "mjq", ["Malas"] = "mkr", ["Malasanga"] = "mqz", ["Malasar"] = "ymr", ["Malavedan"] = "mjr", ["Malawi Lomwe"] = "lon", ["Malawian Sign Language"] = "lws", ["Malayic Dayak"] = "xdy", ["Malaynon"] = "mlz", ["Malaysian Sign Language"] = "xml", ["Malba Birifor"] = "bfo", ["Male"] = "mdc", ["Malecite-Passamaquoddy"] = "pqm", ["Maleng"] = "pkt", ["Maleu-Kilenge"] = "mgl", ["Malfaxal"] = "mlx", ["Malgana"] = "vml", ["Malgbe"] = "mxf", ["Mali"] = "gcc", ["Malibu"] = "sai-mlb", ["Malila"] = "mgq", ["Malimba"] = "mzd", ["Malimpung"] = "mli", ["Malinaltepec Tlapanec"] = "tcf", ["Malol"] = "mbk", ["Maltese Sign Language"] = "mdl", ["Malua Bay"] = "mll", ["Malvi"] = "mup", ["Maléku Jaíka"] = "gut", ["Mam"] = "mam", ["Mama"] = "mma", ["Mamaa"] = "mhf", ["Mamaindé"] = "wmd", ["Mamanwa"] = "mmn", ["Mamara Senoufo"] = "myk", ["Mamasa"] = "mqj", ["Mambae"] = "mgm", ["Mambai"] = "mcs", ["Mamboru"] = "mvd", ["Mambwe-Lungu"] = "mgr", ["Mampruli"] = "maw", ["Mamuju"] = "mqx", ["Mamulique"] = "emm", ["Mamusi"] = "kdf", ["Mamvu"] = "mdi", ["Man Met"] = "mml", ["มลายูแบบมานาโด"] = "xmm", ["Manam"] = "mva", ["Manambu"] = "mle", ["Manangba"] = "nmm", ["Manangkari"] = "znk", ["Manao"] = "awd-man", ["Manda (Australia)"] = "zma", ["Manda (India)"] = "mha", ["Manda (Tanzania)"] = "mgs", ["Mandahuaca"] = "mht", ["Mandaic"] = "mid", ["Mandailing Batak"] = "btm", ["Mandalorian"] = "art-man", ["Mandan"] = "mhq", ["Mandandanyi"] = "zmk", ["Mandar"] = "mdr", ["Mandara"] = "tbf", ["Mandari"] = "mqu", ["Mandeali"] = "mjl", ["Mander"] = "mqr", ["Mandingo"] = "man", ["Mandinka"] = "mnk", ["Mandjak"] = "mfv", ["Mandobo Atas"] = "aax", ["Mandobo Bawah"] = "bwp", ["Manem"] = "jet", ["Mang"] = "zng", ["Mangala"] = "mem", ["Mangarayi"] = "mpc", ["Mangarevan"] = "mrv", ["Mangas"] = "zns", ["Mangayat"] = "myj", ["Mangbetu"] = "mdj", ["Mangbutu"] = "mdk", ["Mangerr"] = "zme", ["Mangga Buang"] = "mmo", ["Manggarai"] = "mqy", ["Mangghuer"] = "mjg-mgr", ["Mango"] = "mge", ["Mangole"] = "mqc", ["Mangseng"] = "mbh", ["Manigri-Kambolé Ede Nago"] = "xkb", ["Manikion"] = "mnx", ["Manipa"] = "mqp", ["Mankanya"] = "knf", ["Mankiyali"] = "nlm", ["Manna-Dora"] = "mju", ["Mannan"] = "mjv", ["Mano"] = "mev", ["Manombai"] = "woo", ["Mansaka"] = "msk", ["Mansoanka"] = "msw", ["Manta"] = "myg", ["Mantsi"] = "nty", ["Manumanaw Karen"] = "kxf", ["Manus Koro"] = "kxr", ["Manusela"] = "wha", ["Manya"] = "mzj", ["Manyawa"] = "mny", ["Manza"] = "mzv", ["Mao Naga"] = "nbi", ["Maonan"] = "mmd", ["Maore Comorian"] = "swb", ["Mape"] = "mlh", ["Mapena"] = "mnm", ["Mapia"] = "mpy", ["Mapidian"] = "mpw", ["Mapos Buang"] = "bzh", ["Mapoyo"] = "mcg", ["Mapudungun"] = "arn", ["Mapun"] = "sjm", ["Mara"] = "mec", ["Mara Chin"] = "mrh", ["Marachi"] = "lri", ["Maraghei"] = "vmh", ["Maragus"] = "mrs", ["Maram Naga"] = "nma", ["Marama"] = "lrm", ["Maranungku"] = "zmr", ["Mararit"] = "mgb", ["Maratino"] = "sai-mar", ["Marau"] = "mvr", ["Marawan"] = "awd-mar", ["Marba"] = "mpg", ["Marenje"] = "vmr", ["Marfa"] = "mvu", ["Margany"] = "zmc", ["Marghi South"] = "mfm", ["Margi"] = "mrt", ["Maria"] = "mds", ["Mariaté"] = "awd-mrt", ["Maricopa"] = "mrc", ["Maridan"] = "zmd", ["Maridjabin"] = "zmj", ["Marik"] = "dad", ["Marimanindji"] = "zmm", ["Marind"] = "mrz", ["Maring"] = "mbw", ["Maring Naga"] = "nng", ["Maringarr"] = "zmt", ["Mariri"] = "mqi", ["Maritime Sign Language"] = "nsr", ["Maritsauá"] = "msp", ["Mariupol Greek"] = "grk-mar", ["Mariyedi"] = "zmy", ["Marka"] = "rkm", ["Markweeta"] = "enb", ["Marma"] = "rmz", ["Maroon Spirit Language"] = "crp-mar", ["Marovo"] = "mvo", ["Marrgu"] = "mhg", ["Marriammu"] = "xru", ["Marrithiyel"] = "mfr", ["Marrucinian"] = "umc", ["Marsian"] = "ims", ["Martha's Vineyard Sign Language"] = "mre", ["Marti Ke"] = "zmg", ["Martu Wangka"] = "mpj", ["Martuthunira"] = "vma", ["Marúbo"] = "mzr", ["Masaba"] = "myx", ["Masadiit Itneg"] = "tis", ["Masakará"] = "sai-msk", ["Masalit"] = "mls", ["Masana"] = "mcn", ["Masbate Sorsogon"] = "bks", ["Mashco Piro"] = "cuj", ["Mashi"] = "mho", ["Masimasi"] = "ism", ["Masiwang"] = "bnf", ["Maskelynes"] = "klv", ["Maslam"] = "msv", ["Masmaje"] = "mes", ["Massachusett"] = "wam", ["Massalat"] = "mdg", ["Massep"] = "mvs", ["Matagalpa"] = "mtn", ["Matal"] = "mfh", ["Matanawi"] = "sai-mat", ["Matbat"] = "xmt", ["Matengo"] = "mgv", ["Matepi"] = "mqe", ["Matigsalug Manobo"] = "mbt", ["Matipuhy"] = "mzo", ["Matlatzinca"] = "mat", ["Mato"] = "met", ["Mator"] = "mtm", ["Matsés"] = "mcf", ["Mattole"] = "mvb", ["Matukar"] = "mjk", ["Matumbi"] = "mgw", ["Matya Samo"] = "stj", ["Matís"] = "mpq", ["Maung"] = "mph", ["Mauritian Sign Language"] = "lsy", ["Mauwake"] = "mhl", ["Mav̋ea"] = "mkv", ["Mawa"] = "mcw", ["Mawak"] = "mjj", ["Mawan"] = "mcz", ["Mawayana"] = "mzx", ["Mawchi"] = "mke", ["Mawes"] = "mgk", ["Maxakalí"] = "mbl", ["Maxi Gbe"] = "mxl", ["Maya Samo"] = "sym", ["Mayaguduna"] = "xmy", ["Mayangna"] = "yan", ["Mayawali"] = "yxa", ["Maybrat"] = "ayz", ["Mayeka"] = "myc", ["Mayi-Thakurti"] = "xyt", ["Maykulan"] = "mnt", ["Maynas"] = "sai-mys", ["Mayo"] = "mfy", ["Mayogo"] = "mdm", ["Mayoyao Ifugao"] = "ifu", ["Mazagway"] = "dkx", ["Mazaltepec Zapotec"] = "zpy", ["Mazatlán Mazatec"] = "vmz", ["Mazatlán Mixe"] = "mzl", ["Mba"] = "mfc", ["Mbabaram"] = "vmb", ["Mbala"] = "mdp", ["Mbalanhu"] = "lnb", ["Mbandja"] = "zmz", ["Mbangala"] = "mxg", ["Mbangi"] = "mgn", ["Mbangwe"] = "zmn", ["Mbara (Australia)"] = "mvl", ["Mbara (Chad)"] = "mpk", ["Mbariman-Gudhinma"] = "zmv", ["Mbati"] = "mdn", ["Mbato"] = "gwa", ["Mbay"] = "myb", ["Mbe"] = "mfo", ["Mbe'"] = "mtk", ["Mbelime"] = "mql", ["Mbere"] = "mdt", ["Mbesa"] = "zms", ["Mbiywom"] = "aus-mbi", ["Mbo (Cameroon)"] = "mbo", ["Mbo (Congo)"] = "zmw", ["Mboi"] = "moi", ["Mboko"] = "mdu", ["Mbole"] = "mdq", ["Mbonga"] = "xmb", ["Mbongno"] = "bgu", ["Mbosi"] = "mdw", ["Mbowe"] = "mxo", ["Mbre"] = "mka", ["Mbu'"] = "muc", ["Mbudum"] = "xmd", ["Mbugu"] = "mhd", ["Mbugwe"] = "mgz", ["Mbuko"] = "mqb", ["Mbukushu"] = "mhw", ["Mbula"] = "mna", ["Mbula-Bwazza"] = "mbu", ["Mbule"] = "mlb", ["Mbulungish"] = "mbv", ["Mbum"] = "mdd", ["Mbunda"] = "mck", ["Mbunga"] = "mgy", ["Mburku"] = "bbt", ["Mbuun"] = "zmp", ["Mbwela"] = "mfu", ["Mbya Guarani"] = "gun", ["Me'en"] = "mym", ["Mebu"] = "mjn", ["Mecayapan Nahuatl"] = "nhx", ["Medebur"] = "mjm", ["Medefaidrin"] = "dmf", ["Media Lengua"] = "mue", ["Mednyj Aleut"] = "mud", ["Medumba"] = "byv", ["Mefele"] = "mfj", ["Megam"] = "mef", ["Megleno-Romanian"] = "ruq", ["Mehek"] = "nux", ["Mehináku"] = "mmh", ["Mehri"] = "gdq", ["Mekeo"] = "mek", ["Mekmek"] = "mvk", ["Mekwei"] = "msf", ["Mekéns"] = "skf", ["Mel-Khaonh"] = "hkn", ["Mele-Fila"] = "mxe", ["Melo"] = "mfx", ["Melpa"] = "med", ["Memoni"] = "mby", ["Mendalam Kayan"] = "xkd", ["Mendankwe-Nkwen"] = "mfd", ["Mende"] = "men", ["Mengaka"] = "xmg", ["Mengen"] = "mee", ["Mengisa"] = "leo", ["Menien"] = "sai-men", ["Menka"] = "mea", ["Menominee"] = "mez", ["Mentawai"] = "mwv", ["Menya"] = "mcr", ["Meoswar"] = "mvx", ["Mer"] = "mnu", ["Meramera"] = "mxm", ["Merei"] = "lmb", ["Merey"] = "meq", ["Meriam"] = "ulk", ["Meroitic"] = "xmr", ["Meru"] = "mer", ["Mesaka"] = "iyo", ["Mese"] = "mci", ["Mesme"] = "zim", ["Mesmes"] = "mys", ["Mesqan"] = "mvz", ["Messapic"] = "cms", ["Meta'"] = "mgo", ["Metlatónoc Mixtec"] = "mxv", ["Mewati"] = "wtm", ["Mexican Sign Language"] = "mfs", ["Meyah"] = "mej", ["Mezontla Popoloca"] = "pbe", ["Mezquital Otomi"] = "ote", ["Meänkieli"] = "fit", ["Mfinu"] = "zmf", ["Mfumte"] = "nfu", ["Mgbo"] = "gmz", ["Mi'kmaq"] = "mic", ["Miami"] = "mia", ["Mian"] = "mpt", ["Miani"] = "pla", ["Micha"] = "yiq", ["Michif"] = "crg", ["Michigamea"] = "cmm", ["Michoacán Mazahua"] = "mmc", ["Michoacán Nahuatl"] = "ncl", ["Mid Grand Valley Dani"] = "dnt", ["Mid-Southern Banda"] = "bjo", ["Middle Cornish"] = "cnx", ["Middle Kannada"] = "dra-mkn", ["Middle Median"] = "xme-mid", ["Middle Scots"] = "gmw-msc", ["Middle Watut"] = "mpl", ["Midob"] = "mei", ["Migaama"] = "mmy", ["Migabac"] = "mpp", ["Miji"] = "sjl", ["Miju"] = "mxj", ["Mikasuki"] = "mik", ["Milang"] = "tbq-mil", ["Mili"] = "ymh", ["Millcayac"] = "sai-mil", ["Miltu"] = "mlj", ["Miluk"] = "iml", ["Milyan"] = "imy", ["Mimi of Decorse"] = "mis-mmd", ["Mimi of Nachtigal"] = "mis-mmn", ["Mina"] = "hna", ["Minaean"] = "inm", ["Minang"] = "xrg", ["Minaveha"] = "mvn", ["Minderico"] = "drc", ["Mindiri"] = "mpn", ["Mingang Doso"] = "mko", ["Mingo"] = "iro-min", ["Minica Huitoto"] = "hto", ["Minidien"] = "wii", ["Minigir"] = "vmg", ["Minjungbal"] = "xjb", ["Minkin"] = "xxm", ["Minokok"] = "mqq", ["Minriq"] = "mnq", ["Mintil"] = "mzt", ["Miraya Bikol"] = "rbl", ["Mire"] = "mvh", ["Mirgan"] = "zrg", ["Miriti"] = "mmv", ["Miriwoong Sign Language"] = "rsm", ["Miriwung"] = "mep", ["Mirning"] = "gmr", ["Mirpur Panjabi"] = "pmu", ["Misantla Totonac"] = "tlc", ["Miship"] = "mjs", ["Misima-Paneati"] = "mpx", ["Mising"] = "mrg", ["Miskito"] = "miq", ["Mitla Zapotec"] = "zaw", ["Mitlatongo Mixtec"] = "vmm", ["Mittu"] = "mwu", ["Mituku"] = "zmq", ["Miu"] = "mpo", ["Miwa"] = "vmi", ["Mixed Great Andamanese"] = "gac", ["Mixifore"] = "mfg", ["Mixtepec Mixtec"] = "mix", ["Mixtepec Zapotec"] = "zpm", ["Miya"] = "mkf", ["Miyobe"] = "soy", ["Mlabri"] = "mra", ["Mlahsö"] = "lhs", ["Mlap"] = "kja", ["Mlomp"] = "mlo", ["Mmaala"] = "mmu", ["Mmani"] = "buy", ["Mmen"] = "bfm", ["Mo"] = "wkd", ["Mo'da"] = "gbn", ["Moba"] = "mfq", ["Mobilian"] = "mod", ["Mobu"] = "ahm", ["Mocana"] = "sai-mcn", ["Mochi"] = "old", ["Mochica"] = "omc", ["Mocho"] = "mhc", ["Mocoví"] = "moc", ["Modang"] = "mxd", ["Modole"] = "mqo", ["Moere"] = "mvq", ["Mofu-Gudur"] = "mif", ["Mogholi"] = "mhj", ["Mogum"] = "mou", ["Mohawk"] = "moh", ["Mohegan-Pequot"] = "xpq", ["Moi (Congo)"] = "mow", ["Moi (Indonesia)"] = "mxn", ["Moikodi"] = "mkp", ["Moingi"] = "mwz", ["Mojave"] = "mov", ["Moji"] = "ymi", ["Mok"] = "mqt", ["Moken"] = "mwt", ["Mokerang"] = "mft", ["Moklen"] = "mkm", ["Mokole"] = "mkl", ["Mokpwe"] = "bri", ["Molale"] = "mbe", ["Molbog"] = "pwm", ["Moldova Sign Language"] = "vsi", ["Molengue"] = "bxc", ["Molima"] = "mox", ["Molmo One"] = "aun", ["Molo"] = "zmo", ["Molof"] = "msl", ["Moloko"] = "mlw", ["Mom Jango"] = "ver", ["Moma"] = "myl", ["Momare"] = "msz", ["Mombo Dogon"] = "dmb", ["Mombum"] = "mso", ["Momina"] = "mmb", ["Momuna"] = "mqf", ["Monastic Sign Language"] = "mzg", ["Mondropolon"] = "npn", ["Mondé"] = "mnd", ["Mongghul"] = "mjg-mgl", ["Mongo"] = "lol", ["Mongol"] = "mgt", ["Mongolian Sign Language"] = "msr", ["Mongondow"] = "mog", ["Moni"] = "mnz", ["Monimbo"] = "mom", ["Mono (California)"] = "mnr", ["Mono (Cameroon)"] = "mru", ["Mono (Congo)"] = "mnh", ["Monom"] = "moo", ["Monsang Naga"] = "nmh", ["Montana Salish"] = "fla", ["Montol"] = "mtl", ["Monumbo"] = "mxk", ["Monzombo"] = "moj", ["Moo"] = "gwg", ["Moore"] = "mos", ["Moose Cree"] = "crm", ["Mopan Maya"] = "mop", ["Mor (Austronesian)"] = "mhz", ["Mor (Papuan)"] = "moq", ["Moraid"] = "msg", ["Moran"] = "tbq-mor", ["Morawa"] = "mze", ["Morelos Nahuatl"] = "nhm", ["Morerebi"] = "xmo", ["Moresada"] = "msx", ["Mori Atas"] = "mzq", ["Mori Bawah"] = "xmz", ["Morigi"] = "mdb", ["Moro"] = "mor", ["Moroccan Amazigh"] = "zgh", ["Moroccan Sign Language"] = "xms", ["Morokodo"] = "mgc", ["Morom"] = "bdo", ["Moronene"] = "mqn", ["Morori"] = "mok", ["Morouas"] = "mrp", ["Mortlockese"] = "mrl", ["Moru"] = "mgd", ["Mosimo"] = "mqv", ["Moskona"] = "mtj", ["Mota"] = "mtt", ["Motembo"] = "tmv", ["Motu"] = "meu", ["Mouk-Aria"] = "mwh", ["Mount Iraya Agta"] = "atl", ["Mount Iriga Agta"] = "agz", ["Mountain Koiari"] = "kpx", ["Mouwase"] = "jmw", ["Movima"] = "mzp", ["Moyadan Itneg"] = "ity", ["Moyon Naga"] = "nmo", ["Mozambican Sign Language"] = "mzy", ["Mozarabic"] = "mxi", ["Mpade"] = "mpi", ["Mpalitjanh"] = "xpj", ["Mpi"] = "mpz", ["Mpiemo"] = "mcx", ["Mpiin"] = "bnt-mpi", ["Mpinda"] = "pnd", ["Mpongmpong"] = "mgg", ["Mpoto"] = "mpa", ["Mpotovoro"] = "mvt", ["Mpuono"] = "bnt-mpu", ["Mpur"] = "akc", ["Mro Chin"] = "cmr", ["Mru"] = "mro", ["Mser"] = "kqx", ["Muak Sa-aak"] = "ukk", ["Mualang"] = "mtd", ["Mubami"] = "tsx", ["Mubi"] = "mub", ["Mucuchí"] = "sai-muc", ["Muda"] = "ymd", ["Mudburra"] = "dmw", ["Mudu Koraga"] = "vmd", ["Muduapa"] = "wiv", ["Muduga"] = "udg", ["Muellama"] = "sai-mue", ["Mufian"] = "aoj", ["Muher"] = "sem-mhr", ["Muinane"] = "bmr", ["Mukha-Dora"] = "mmk", ["Mukulu"] = "moz", ["Mulaha"] = "mfw", ["Mulam"] = "mlm", ["Mulao"] = "giu", ["Mullu Kurumba"] = "kpb", ["Mullukmulluk"] = "mpb", ["Muluridyi"] = "vmu", ["Mum"] = "kqa", ["Mumuye"] = "mzm", ["Muna"] = "mnb", ["Munda"] = "unx", ["Mundabli"] = "boe", ["Mundang"] = "mua", ["Mundani"] = "mnf", ["Mundari"] = "unr", ["Mundat"] = "mmf", ["Mundolinco"] = "art-mun", ["Mundurukú"] = "myu", ["Mungaka"] = "mhk", ["Mungbam"] = "mij", ["Munggui"] = "mth", ["Mungkip"] = "mpv", ["Muniche"] = "myr", ["Munit"] = "mtc", ["Munji"] = "mnj", ["Munsee"] = "umu", ["Mur Pano"] = "tkv", ["Muratayak"] = "asx", ["Murik (Malaysia)"] = "mxr", ["Murik (New Guinea)"] = "mtf", ["Murkim"] = "rmh", ["Murle"] = "mur", ["Murrinh-Patha"] = "mwf", ["Mursi"] = "muz", ["Murui Huitoto"] = "huu", ["Murupi"] = "mqw", ["Muruwari"] = "zmu", ["Musan"] = "mmp", ["Musar"] = "mmi", ["Musasa"] = "smm", ["Musey"] = "mse", ["Musgu"] = "mug", ["Muskum"] = "mje", ["Musom"] = "msu", ["Mussau-Emira"] = "emi", ["Muthuvan"] = "muv", ["Mutu"] = "tuc", ["Muya"] = "mvm", ["Muyang"] = "muy", ["Muyuw"] = "myw", ["Muzi"] = "ymz", ["Muzo"] = "sai-muz", ["Mvanip"] = "mcj", ["Mvuba"] = "mxh", ["Mwaghavul"] = "sur", ["Mwali Comorian"] = "wlc", ["Mwan"] = "moa", ["Mwatebu"] = "mwa", ["Mwera"] = "mwe", ["Mwerlap"] = "mrm", ["Mwimbi-Muthambi"] = "mws", ["Mwotlap"] = "mlv", ["Myene"] = "mye", ["Mysian"] = "yms", ["Mzieme Naga"] = "nme", ["Mághdì"] = "gmd", ["Mün Chin"] = "mwq", ["Mündü"] = "muh", ["N'Ko"] = "nqo", ["Na"] = "nbt", ["Naaba"] = "nao", ["Naba"] = "mne", ["Nabak"] = "naf", ["Nabi"] = "mty", ["Nachering"] = "ncd", ["Nadruvian"] = "ndf", ["Nadëb"] = "mbj", ["Nafaanra"] = "nfr", ["Nafi"] = "srf", ["Nafri"] = "nxx", ["Naga Pidgin"] = "nag", ["Nagarchal"] = "nbg", ["Nage"] = "nxe", ["Nagtipunan Agta"] = "phi-nag", ["Nagu"] = "ngr", ["Nagumi"] = "ngv", ["Nahali"] = "nlx", ["Nahari"] = "nhh", ["Nahavaq"] = "sns", ["Nai"] = "bio", ["Najdi Arabic"] = "ars", ["Naka'ela"] = "nae", ["Nakai"] = "nkj", ["Nakame"] = "nib", ["Nakanai"] = "nak", ["Nakara"] = "nck", ["Nake"] = "nbk", ["Naki"] = "mff", ["Nakwi"] = "nax", ["Nalca"] = "nlc", ["Nali"] = "nss", ["Nalik"] = "nal", ["Nalu"] = "naj", ["Nalögo"] = "nlz", ["Namakura"] = "nmk", ["Namat"] = "nkm", ["Nambikwara"] = "nab", ["Nambo"] = "ncm", ["Nambya"] = "nmq", ["Namia"] = "nnm", ["Namiae"] = "nvm", ["Namibian Sign Language"] = "nbs", ["Namla"] = "naa", ["Namo"] = "mxw", ["Namonuito"] = "nmt", ["Namosi-Naitasiri-Serua"] = "bwb", ["Namuyi"] = "nmy", ["Nanai"] = "gld", ["Nancere"] = "nnc", ["Nande"] = "nnb", ["Nandi"] = "niq", ["Nanerigé Sénoufo"] = "sen", ["Nanga Dama Dogon"] = "nzz", ["Nankina"] = "nnk", ["Nanti"] = "cox", ["Nanticoke"] = "nnt", ["Nanubae"] = "afk", ["Naolan"] = "nai-nao", ["Napu"] = "npy", ["Nar Phu"] = "npa", ["Nara"] = "nrb", ["Narak"] = "nac", ["Narango"] = "nrg", ["Narim"] = "loh", ["Naro"] = "nhr", ["Narom"] = "nrm", ["Narragansett"] = "xnt", ["Narua"] = "nru", ["Narungga"] = "nnr", ["Naruo"] = "ylo", ["Nasal"] = "nsy", ["Nasarian"] = "nvh", ["Nasioi"] = "nas", ["Naskapi"] = "nsk", ["Nasu"] = "ywq", ["Natagaimas"] = "nts", ["Natchez"] = "ncz", ["Nateni"] = "ntm", ["Natioro"] = "nti", ["Natú"] = "sai-nat", ["Natügu"] = "ntu", ["Nauete"] = "nxa", ["Naukanski"] = "ynk", ["Nauna"] = "ncn", ["Nauo"] = "nwo", ["Navut"] = "nsw", ["Nawaru"] = "nwr", ["Nawathinehena"] = "nwa", ["Nawdm"] = "nmz", ["Nawuri"] = "naw", ["Naxi"] = "nxq", ["Nayi"] = "noz", ["Naʼvi"] = "art-nav", ["Ncane"] = "ncr", ["Nchumbulu"] = "nlu", ["Nda'nda'"] = "nnz", ["Ndai"] = "gke", ["Ndaka"] = "ndk", ["Ndali"] = "ndh", ["Ndam"] = "ndm", ["Ndamba"] = "ndj", ["Ndambomo"] = "nxo", ["Ndasa"] = "nda", ["Ndau"] = "ndc", ["Nde-Gbite"] = "ned", ["Nde-Nsele-Nta"] = "ndd", ["Ndemli"] = "nml", ["Ndendeule"] = "dne", ["Ndengereko"] = "ndg", ["Nding"] = "eli", ["Ndjébbana"] = "djj", ["Ndo"] = "ndp", ["Ndobo"] = "ndw", ["Ndoe"] = "nbb", ["Ndogo"] = "ndz", ["Ndolo"] = "ndl", ["Ndom"] = "nqm", ["Ndombe"] = "ndq", ["Ndonga"] = "ng", ["Ndoola"] = "ndr", ["Ndrulo"] = "dno", ["Nduga"] = "ndx", ["Ndumu"] = "nmd", ["Ndunda"] = "nuh", ["Ndunga"] = "ndt", ["Ndut"] = "ndv", ["Ndyuka-Trio Pidgin"] = "njt", ["Ndzwani Comorian"] = "wni", ["Nedebang"] = "nec", ["Nefamese"] = "nef", ["Nefusa"] = "jbn", ["Negeri Sembilan Malay"] = "zmi", ["Negidal"] = "neg", ["Nehan"] = "nsn", ["Nek"] = "nif", ["Nekgini"] = "nkg", ["Neko"] = "nej", ["Neku"] = "nek", ["Neme"] = "nex", ["Nemi"] = "nem", ["Nen"] = "nqn", ["Nend"] = "anh", ["Nengone"] = "nen", ["Neo"] = "neu", ["Nepali Kurux"] = "kxl", ["Nete"] = "net", ["Neve'ei"] = "vnm", ["Neverver"] = "lgk", ["New River Shasta"] = "nai-nrs", ["New Zealand Sign Language"] = "nzs", ["Neyo"] = "ney", ["Nez Perce"] = "nez", ["Nga La"] = "hlt", ["Ngaanyatjarra"] = "ntj", ["Ngadha"] = "nxg", ["Ngadjunmaya"] = "nju", ["Ngadjuri"] = "jui", ["Ngaing"] = "nnf", ["Ngaju"] = "nij", ["Ngala"] = "nud", ["Ngalakan"] = "nig", ["Ngalkbun"] = "ngk", ["Ngalum"] = "szb", ["Ngam"] = "nmc", ["Ngamambo"] = "nbv", ["Ngambay"] = "sba", ["Ngamini"] = "nmv", ["Ngamo"] = "nbh", ["Ngan'gityemerri"] = "nam", ["Nganakarti"] = "xnk", ["Nganasan"] = "nio", ["Ngandi"] = "nid", ["Ngando (Central African Republic)"] = "ngd", ["Ngando (Congo)"] = "nxd", ["Ngandyera"] = "nne", ["Ngangam"] = "gng", ["Ngantangarra"] = "ntg", ["Nganyaywana"] = "nyx", ["Ngardi"] = "rxd", ["Ngarigu"] = "xni", ["Ngarinman"] = "nbj", ["Ngarinyin"] = "ung", ["Ngarla"] = "nrk", ["Ngarluma"] = "nrl", ["Ngarrindjeri"] = "nay", ["Ngas"] = "anc", ["Ngasa"] = "nsg", ["Ngatik Men's Creole"] = "ngm", ["Ngawn Chin"] = "cnw", ["Ngawun"] = "nxn", ["Ngazidja Comorian"] = "zdj", ["Ngbaka"] = "nga", ["Ngbaka Ma'bo"] = "nbm", ["Ngbaka Manza"] = "ngg", ["Ngbee"] = "jgb", ["Ngbinda"] = "nbd", ["Ngbundu"] = "nuu", ["Ngelima"] = "agh", ["Ngemba"] = "nge", ["Ngen of Djonkro"] = "gnj", ["Ngendelengo"] = "nql", ["Ngeq"] = "ngt", ["Ngete"] = "nnn", ["Nggem"] = "nbq", ["Nggwahyi"] = "ngx", ["Ngie"] = "ngj", ["Ngiemboon"] = "nnh", ["Ngile"] = "jle", ["Ngindo"] = "nnq", ["Ngiti"] = "niy", ["Ngiyambaa"] = "wyb", ["Ngizim"] = "ngi", ["Ngkoth"] = "aus-ngk", ["Ngkâlmpw Kanum"] = "kcd", ["Ngochang"] = "tbq-ngo", ["Ngom"] = "nra", ["Ngomba"] = "jgo", ["Ngombale"] = "nla", ["Ngombe (Central African Republic)"] = "nmj", ["Ngombe (Congo)"] = "ngc", ["Ngong"] = "nnx", ["Ngongo"] = "noq", ["Ngoni"] = "ngo", ["Ngoreme"] = "ngq", ["Ngoshie"] = "nsh", ["Ngul"] = "nlo", ["Ngulu"] = "ngp", ["Nguluwan"] = "nuw", ["Ngumbi"] = "nui", ["Ngunawal"] = "xul", ["Ngundi"] = "ndn", ["Ngundu"] = "nue", ["Ngungwel"] = "ngz", ["Ngurmbur"] = "nrx", ["Ngwaba"] = "ngw", ["Ngwe"] = "nwe", ["Ngwo"] = "ngn", ["Ngäbere"] = "gym", ["Nhanda"] = "nha", ["Nheengatu"] = "yrl", ["Nhirrpi"] = "hrp", ["Nhuwala"] = "nhf", ["Nias"] = "nia", ["Nicaraguan Creole"] = "bzk", ["Nicaraguan Sign Language"] = "ncs", ["Nicola"] = "ath-nic", ["Niellim"] = "nie", ["Nigeria Mambila"] = "mzk", ["Nigerian Pidgin"] = "pcm", ["Nigerian Sign Language"] = "nsi", ["Nihali"] = "nll", ["Nii"] = "nii", ["Niksek"] = "gbe", ["Nila"] = "nil", ["Nilamba"] = "nim", ["Nimadi"] = "noe", ["Nimanbur"] = "nmp", ["Nimbari"] = "nmr", ["Nimboran"] = "nir", ["Nimi"] = "nis", ["Nimo"] = "niw", ["Nimoa"] = "nmw", ["Ninam"] = "shb", ["Nindi"] = "nxi", ["Ningera"] = "nby", ["Ninggerum"] = "nxr", ["Ningil"] = "niz", ["Ninia Yali"] = "nlk", ["Ninzo"] = "nin", ["Nipsan"] = "nps", ["Nisa"] = "njs", ["Nisenan"] = "nsz", ["Nisga'a"] = "ncg", ["Nisi"] = "yso", ["Niuafo'ou"] = "num", ["Niuatoputapu"] = "nkp", ["Nivaclé"] = "cag", ["Nivkh"] = "niv", ["Niwer Mil"] = "hrc", ["Niya Prakrit"] = "pra-niy", ["Njalgulgule"] = "njl", ["Njebi"] = "nzb", ["Njen"] = "njj", ["Njerep"] = "njr", ["Njyem"] = "njy", ["Nkami"] = "nkq", ["Nkangala"] = "nkn", ["Nkari"] = "nkz", ["Nkem-Nkum"] = "isi", ["Nkhumbi"] = "khu", ["Nkongho"] = "nkc", ["Nkonya"] = "nko", ["Nkoroo"] = "nkx", ["Nkoya"] = "nka", ["Nkukoli"] = "nbo", ["Nkutu"] = "nkw", ["Nnam"] = "nbp", ["Noakhali"] = "oak", ["Nobiin"] = "fia", ["Nobonob"] = "gaw", ["Nocamán"] = "nom", ["Nocte"] = "njb", ["Nogai"] = "nog", ["Noiri"] = "noi", ["Nokuku"] = "nkk", ["Nomaande"] = "lem", ["Nomane"] = "nof", ["Nomatsiguenga"] = "not", ["Nomlaki"] = "nol", ["Nomu"] = "noh", ["Nonuya"] = "noj", ["Nooksack"] = "nok", ["Noon"] = "snf", ["Noone"] = "nhu", ["Nootka"] = "nuk", ["Nopala Chatino"] = "cya", ["Noric"] = "nrc", ["Norn"] = "nrn", ["Norra"] = "nrr", ["North Ambrym"] = "mmg", ["North Asmat"] = "nks", ["North Awyu"] = "yir", ["North Babar"] = "bcd", ["North Boma"] = "boh", ["North Central Mixe"] = "neq", ["North Efate"] = "llp", ["North Fali"] = "fll", ["North Giziga"] = "gis", ["North Levantine Arabic"] = "apc", ["North Marquesan"] = "mrq", ["North Mofu"] = "mfk", ["North Moluccan Malay"] = "max", ["North Muyu"] = "kti", ["North Nuaulu"] = "nni", ["North Picene"] = "nrp", ["North Slavey"] = "scs", ["North Tairora"] = "tbg", ["North Tanna"] = "tnn", ["North Wahgi"] = "whg", ["North Watut"] = "una", ["Northeast Kiwai"] = "kiw", ["Northeast Maidu"] = "nmu", ["Northeast Malakula"] = "upv", ["Northeast Pashayi"] = "aee", ["Northeastern Dinka"] = "dip", ["Northeastern Pomo"] = "pef", ["Northern Alta"] = "aqn", ["Northern Bontoc"] = "rbk", ["Northern Catanduanes Bicolano"] = "cts", ["Northern Dagara"] = "dgi", ["Northern East Cree"] = "crl", ["Northern Emberá"] = "emp", ["Northern Ghale"] = "ghh", ["Northern Grebo"] = "gbo", ["Northern Guiyang Hmong"] = "huj", ["Northern Haida"] = "hdn", ["Northern Hindko"] = "hno", ["Northern Huishui Hmong"] = "hmi", ["Northern Kalapuya"] = "nrt", ["Northern Khanty"] = "kca-nor", ["Northern Kissi"] = "kqs", ["Northern Lorung"] = "lbr", ["Northern Luri"] = "lrc", ["Northern Mansi"] = "mns-nor", ["Northern Mashan Hmong"] = "hmp", ["Northern Muji"] = "ymx", ["Northern Ndebele"] = "nd", ["Northern Ngbandi"] = "ngb", ["Northern Nisu"] = "yiv", ["Northern Nuni"] = "nuv", ["Northern Oaxaca Nahuatl"] = "nhy", ["Northern Ohlone"] = "cst", ["Northern One"] = "onr", ["Northern Paiute"] = "pao", ["Northern Pame"] = "pmq", ["Northern Pomo"] = "pej", ["Northern Puebla Nahuatl"] = "ncj", ["Northern Pumi"] = "pmi", ["Northern Qiandong Miao"] = "hea", ["Northern Qiang"] = "cng", ["Northern Rengma Naga"] = "nnl", ["Northern Roglai"] = "rog", ["Northern Saharan Berber"] = "mzb", ["Northern Selkup"] = "sel-nor", ["Northern Sierra Miwok"] = "nsq", ["Northern Subanen"] = "stb", ["Northern Tarahumara"] = "thh", ["Northern Tepehuan"] = "ntp", ["Northern Tidung"] = "ntd", ["Northern Tlaxiaco Mixtec"] = "xtn", ["Northern Toussian"] = "tsp", ["Northern Tujia"] = "tji", ["Northern Tutchone"] = "ttm", ["Northern Valley Yokuts"] = "yok-nvy", ["Northern Yukaghir"] = "ykg", ["Northwest Gbaya"] = "gya", ["Northwest Maidu"] = "mjd", ["Northwest Oaxaca Mixtec"] = "mxa", ["Northwest Pashayi"] = "glh", ["Northwestern Dinka"] = "diw", ["Northwestern Fars"] = "faz", ["Northwestern Ojibwa"] = "ojb", ["Northwestern Tamang"] = "tmk", ["Norwegian Sign Language"] = "nsl", ["Notre"] = "bly", ["Notsi"] = "ncf", ["Nottoway"] = "ntw", ["Nottoway-Meherrin"] = "nwy", ["Noy"] = "noy", ["Nsari"] = "asj", ["Nsenga"] = "nse", ["Nshi"] = "nsc", ["Nsong"] = "soo", ["Nsongo"] = "nsx", ["Ntcham"] = "bud", ["Ntomba"] = "nto", ["Ntra'ngith"] = "dgt", ["Nubaca"] = "baf", ["Nubi"] = "kcn", ["Nuer"] = "nus", ["Nuguria"] = "nur", ["Nuk"] = "noc", ["Nukak Makú"] = "mbr", ["Nukna"] = "klt", ["Nukuini"] = "nuc", ["Nukumanu"] = "nuq", ["Nukunu"] = "nnv", ["Nukunul"] = "xnu", ["Nukuoro"] = "nkr", ["Numana"] = "nbr", ["Numanggang"] = "nop", ["Numbami"] = "sij", ["Nume"] = "tgs", ["Numidian"] = "nxm", ["Numèè"] = "kdk", ["Nungali"] = "nug", ["Nunggubuyu"] = "nuy", ["Nungon"] = "paa-nun", ["Nungu"] = "rin", ["Nupbikha"] = "npb", ["Nupe"] = "nup", ["Nusa Laut"] = "nul", ["Nusu"] = "nuf", ["Nutabe"] = "cba-nut", ["Nyabwa"] = "nwb", ["Nyagrong Minyag"] = "ero-nya", ["Nyaheun"] = "nev", ["Nyakyusa"] = "nyy", ["Nyali"] = "nlj", ["Nyam"] = "nmi", ["Nyamal"] = "nly", ["Nyambo"] = "now", ["Nyamusa-Molo"] = "nwm", ["Nyamwanga"] = "mwn", ["Nyamwezi"] = "nym", ["Nyaneka"] = "nyk", ["Nyang'i"] = "nyp", ["Nyanga (Congo)"] = "nyj", ["Nyanga (Togo)"] = "ayg", ["Nyanga-li"] = "nyc", ["Nyangatom"] = "nnj", ["Nyangbo"] = "nyb", ["Nyangga"] = "nny", ["Nyangumarta"] = "nna", ["Nyankole"] = "nyn", ["Nyarafolo Senoufo"] = "sev", ["Nyaturu"] = "rim", ["Nyawaygi"] = "nyt", ["Nyelâyu"] = "yly", ["Nyemba"] = "nba", ["Nyengo"] = "nye", ["Nyenkha"] = "neh", ["Nyeu"] = "nyl", ["Nyigina"] = "nyh", ["Nyiha"] = "nih", ["Nyika"] = "nkt", ["Nyimang"] = "nyi", ["Nyindrou"] = "lid", ["Nyindu"] = "nyg", ["Nyishi"] = "njz", ["Nyiyaparli"] = "xny", ["Nyokon"] = "nvo", ["Nyole (Kenya)"] = "nyd", ["Nyole (Uganda)"] = "nuj", ["Nyong"] = "muo", ["Nyoro"] = "nyo", ["Nyulnyul"] = "nyv", ["Nyunga"] = "nys", ["Nyungwe"] = "nyu", ["Nzadi"] = "nzd", ["Nzakambay"] = "nzy", ["Nzakara"] = "nzk", ["Nzanyi"] = "nja", ["Nzima"] = "nzi", ["Ná-Meo"] = "neo", ["Nüpode Huitoto"] = "hux", ["Nǀuu"] = "ngh", ["O'chi'chi'"] = "xoc", ["O'du"] = "tyh", ["O'odham"] = "ood", ["Obanliku"] = "bzy", ["Obispeño"] = "obi", ["Oblo"] = "obl", ["Obo Manobo"] = "obo", ["Obokuitai"] = "afz", ["Obolo"] = "ann", ["Obulom"] = "obu", ["Ocaina"] = "oca", ["Ocotepec Mixtec"] = "mie", ["Ocotlán Zapotec"] = "zac", ["Od"] = "odk", ["Odiai"] = "bhf", ["Odoodee"] = "kkc", ["Odual"] = "odu", ["Odut"] = "oda", ["Ofayé"] = "opy", ["Ofo"] = "ofo", ["Ogbah"] = "ogc", ["Ogbia"] = "ogb", ["Ogbogolo"] = "ogg", ["Ogbronuagum"] = "ogu", ["Ogea"] = "eri", ["Oirata"] = "oia", ["Ojitlán Chinantec"] = "chj", ["Okanagan"] = "oka", ["Okiek"] = "oki", ["Oko-Eni-Osayen"] = "oks", ["Oko-Juwoi"] = "okj", ["Okobo"] = "okb", ["Okodia"] = "okd", ["Okolod"] = "kqv", ["Okpamheri"] = "opa", ["Okpe (Northwestern Edo)"] = "okx", ["Okpe (Southwestern Edo)"] = "oke", ["Okpela"] = "atg", ["Oksapmin"] = "opm", ["Oku"] = "oku", ["Okwanuchu"] = "nai-okw", ["Old Awadhi"] = "inc-oaw", ["Old Gutnish"] = "gmq-ogt", ["Old Kannada"] = "dra-okn", ["Old Kentish Sign Language"] = "okl", ["Old Komi"] = "urj-koo", ["Old Median"] = "xme-old", ["Old Navarro-Aragonese"] = "roa-ona", ["Old Novgorodian"] = "zle-ono", ["Old Prussian"] = "prg", ["รูซินเก่า"] = "zle-ort", ["Old South Arabian"] = "sem-srb", ["Old Sundanese"] = "osn", ["Old Tati"] = "xme-ott", ["Old Telugu"] = "dra-ote", ["Olekha"] = "ole", ["Ollari"] = "gdb", ["Olo"] = "ong", ["Oloma"] = "olm", ["Olrat"] = "olr", ["Olu'bo"] = "lul", ["Olukumi"] = "ulb", ["Olulumo-Ikom"] = "iko", ["Oluta Popoluca"] = "plo", ["Olutsotso"] = "lto", ["Omagua"] = "omg", ["Omaha-Ponca"] = "oma", ["Omba"] = "omb", ["Ombamba"] = "mbm", ["Ombo"] = "oml", ["Ometepec Nahuatl"] = "nht", ["Omi"] = "omi", ["Omok"] = "omk", ["Omotik"] = "omt", ["Omurano"] = "omu", ["Oneida"] = "one", ["Ong"] = "oog", ["Ongota"] = "bxe", ["Onin"] = "oni", ["Onjob"] = "onj", ["Ono"] = "ons", ["Onobasulu"] = "onn", ["Onondaga"] = "ono", ["Ontenu"] = "ont", ["Ontong Java"] = "ojv", ["Oorlams"] = "oor", ["Opao"] = "opo", ["Opata"] = "opt", ["Opuuo"] = "lgn", ["Opón"] = "sai-opo", ["Oraon Sadri"] = "sdr", ["Orejón"] = "ore", ["Oring"] = "org", ["Orizaba Nahuatl"] = "nlv", ["Orléanais"] = "roa-orl", ["Ormu"] = "orz", ["Ormuri"] = "oru", ["Oro"] = "orx", ["Oro Win"] = "orw", ["Oroch"] = "oac", ["Oroha"] = "ora", ["Orok"] = "oaa", ["Orokaiva"] = "okv", ["Oroko"] = "bdu", ["Orokolo"] = "oro", ["Oroqen"] = "orh", ["Orowe"] = "bpk", ["Oruma"] = "orr", ["Orya"] = "ury", ["Osage"] = "osa", ["Osamayi"] = "syx", ["Osatu"] = "ost", ["Oscan"] = "osc", ["Ososo"] = "oso", ["Ot Danum"] = "otd", ["Otank"] = "uta", ["Oti"] = "oti", ["Otomaco"] = "sai-oto", ["Otoro"] = "otr", ["Ottawa"] = "otw", ["Otuke"] = "otu", ["Ouma"] = "oum", ["Oune"] = "oue", ["Owa"] = "stn", ["Owenia"] = "wsr", ["Owiniga"] = "owi", ["Oy"] = "oyb", ["Oya'oya"] = "oyy", ["Oyda"] = "oyd", ["Ozolotepec Zapotec"] = "zao", ["Ozumacín Chinantec"] = "chz", ["Pa"] = "ppt", ["Pa Di"] = "pdi", ["Pa'a"] = "pqa", ["Pa-Hng"] = "pha", ["Paamese"] = "pma", ["Paasaal"] = "sig", ["Pacahuara"] = "pcp", ["Padoe"] = "pdo", ["Paelignian"] = "pgn", ["Paeonian"] = "ine-pae", ["Pagi"] = "pgi", ["Pagibete"] = "pae", ["Pagu"] = "pgu", ["Pahanan Agta"] = "apf", ["Pahari-Potwari"] = "phr", ["Pahi"] = "lgt", ["Pahlavani"] = "phv", ["Pai Tavytera"] = "pta", ["Paicî"] = "pri", ["Paikoneka"] = "awd-pai", ["Paipai"] = "ppi", ["Paite"] = "pck", ["Pajapan Nahuatl"] = "nhp", ["Pak-Tong"] = "pkg", ["Pakanha"] = "pkn", ["Pakistan Sign Language"] = "pks", ["Paku"] = "pku", ["Paku Karen"] = "jkp", ["Pal"] = "abw", ["Palaic"] = "plq", ["Palaka Senoufo"] = "plr", ["Palantla Chinantec"] = "cpa", ["Palawan Batak"] = "bya", ["Paleni"] = "pnl", ["Palenquero"] = "pln", ["Palewyami Yokuts"] = "yok-ply", ["Palikur"] = "plu", ["Paliyan"] = "pcf", ["Pallanganmiddang"] = "pmd", ["Palor"] = "fap", ["Palta"] = "sai-pal", ["Palu'e"] = "ple", ["Paluan"] = "plz", ["Palula"] = "phl", ["Palya Bareli"] = "bpx", ["Pam"] = "pmn", ["Pambia"] = "pmb", ["Pamigua"] = "sai-pam", ["Pamlico"] = "pmk", ["Pamona"] = "pmf", ["Pamosu"] = "hih", ["Pamplona Atta"] = "att", ["Pana (Central Africa)"] = "pnz", ["Pana (West Africa)"] = "pnq", ["Panamanian Sign Language"] = "lsp", ["Panamint"] = "par", ["Panare"] = "pbh", ["Panará"] = "kre", ["Panasuan"] = "psn", ["Panawa"] = "pwb", ["Pancana"] = "pnp", ["Panchpargania"] = "tdb", ["Pande"] = "bkj", ["Pangasinan"] = "pag", ["Pangseng"] = "pgs", ["Pangwa"] = "pbr", ["Panim"] = "pnr", ["Paniya"] = "pcg", ["Pankararé"] = "pax", ["Pankararú"] = "paz", ["Pankhu"] = "pkh", ["Pannei"] = "pnc", ["Panobo"] = "pno", ["Panyi Bai"] = "bfc", ["Panyjima"] = "pnw", ["Panzaleo"] = "sai-pnz", ["Pao"] = "ppa", ["Papantla Totonac"] = "top", ["Papapana"] = "ppn", ["Papar"] = "dpp", ["Papasena"] = "pas", ["Papel"] = "pbo", ["Papi"] = "ppe", ["Papora"] = "ppu", ["Papua New Guinean Sign Language"] = "pgz", ["Papuan Malay"] = "pmy", ["Papuma"] = "ppm", ["Para Naga"] = "pzn", ["Parachi"] = "prc", ["Paraguayan Sign Language"] = "pys", ["Parakanã"] = "pak", ["Paranan"] = "prf", ["Paranawát"] = "paf", ["Paratió"] = "sai-par", ["Paraujano"] = "pbg", ["Parauk"] = "prk", ["Parawen"] = "prw", ["Pardhan"] = "pch", ["Pardhi"] = "pcl", ["Pare"] = "asa", ["Pareci"] = "pab", ["Paredarerme"] = "xpd", ["Parenga"] = "pcj", ["Parkari Koli"] = "kvx", ["พาร์เทีย"] = "xpr", ["Parya"] = "paq", ["Pará Gavião"] = "gvp", ["Pasi"] = "psq", ["Pass Valley Yali"] = "yac", ["Pasé"] = "awd-pas", ["Patagón"] = "sai-ptg", ["Patamona"] = "pbc", ["Patani"] = "ptn", ["Pataxó Hã-Ha-Hãe"] = "pth", ["Patep"] = "ptp", ["Pathiya"] = "pty", ["Patpatar"] = "gfk", ["Pattani"] = "lae", ["Pattapu"] = "ptq", ["Patwin"] = "pwi", ["Paulohi"] = "plh", ["Paumarí"] = "pad", ["Paunaka"] = "pnk", ["Pauri Bareli"] = "bfb", ["Pauserna"] = "psm", ["Pawaia"] = "pwa", ["Pawnee"] = "paw", ["Payaguá"] = "sai-pyg", ["Paynamar"] = "pmr", ["Pazeh"] = "pzh", ["Pe"] = "pai", ["Pear"] = "pcb", ["Peba"] = "sai-peb", ["Pech"] = "pay", ["Pecheneg"] = "xpc", ["Peerapper"] = "xpw", ["Peere"] = "pfe", ["Pei"] = "ppq", ["Pekal"] = "pel", ["Pela"] = "bxd", ["Pele-Ata"] = "ata", ["Pemon"] = "aoc", ["Penang Sign Language"] = "psg", ["Penchal"] = "pek", ["Pendau"] = "ums", ["Pengo"] = "peg", ["Penobscot"] = "aaq", ["Penrhyn"] = "pnh", ["Pentlatch"] = "ptw", ["Perai"] = "wet", ["Peranakan Indonesian"] = "pea", ["Perema"] = "wom", ["Pericú"] = "nai-per", ["Pero"] = "pip", ["Persian Sign Language"] = "psc", ["Peruvian Sign Language"] = "prl", ["Petapa Zapotec"] = "zpe", ["Petats"] = "pex", ["Petjo"] = "pey", ["Peñoles Mixtec"] = "mil", ["Phai"] = "prt", ["Phala"] = "ypa", ["Phana'"] = "phq", ["Phangduwali"] = "phw", ["Phende"] = "pem", ["Philippine Sign Language"] = "psp", ["Philistine"] = "mis-phi", ["Phimbi"] = "phm", ["Phola"] = "ypg", ["Pholo"] = "yip", ["Phom"] = "nph", ["Phong-Kniang"] = "pnx", ["Phrygian"] = "xpg", ["Phudagi"] = "phd", ["Phuie"] = "pug", ["Phukha"] = "phh", ["Phuma"] = "ypm", ["Phuong"] = "phg", ["Phupa"] = "ypp", ["Phupha"] = "yph", ["Phuthi"] = "bnt-phu", ["Phuza"] = "ypz", ["Piamatsina"] = "ptr", ["Piame"] = "pin", ["Piapoco"] = "pio", ["Piaroa"] = "pid", ["Pichinglis"] = "fpe", ["Pichis Ashéninka"] = "cpu", ["Pictish"] = "xpi", ["Picuris"] = "nai-pic", ["Pidgin Delaware"] = "dep", ["Pidgin Iha"] = "ihb", ["Pidgin Onin"] = "onx", ["Pijao"] = "pij", ["Pije"] = "piz", ["Pijin"] = "pis", ["Pilagá"] = "plg", ["Pileni"] = "piv", ["Pima Bajo"] = "pia", ["Pimbwe"] = "piw", ["Pinai-Hagahai"] = "pnn", ["Pingelapese"] = "pif", ["Pini"] = "pii", ["Pinigura"] = "pnv", ["Pinjarup"] = "pnj", ["Pinji"] = "pic", ["Pinotepa Nacional Mixtec"] = "mio", ["Pintiini"] = "pti", ["Pintupi-Luritja"] = "piu", ["Pinyin"] = "pny", ["Pirahã"] = "myp", ["Piratapuyo"] = "pir", ["Pirlatapa"] = "bxi", ["Piro"] = "pie", ["Pirriya"] = "xpa", ["Pisabo"] = "pig", ["Pisaflores Tepehua"] = "tpp", ["Piscataway"] = "psy", ["Pisidian"] = "xps", ["Pitcairn-Norfolk"] = "pih", ["Piti"] = "pcn", ["Pitjantjatjara"] = "pjt", ["Pitta-Pitta"] = "pit", ["Piu"] = "pix", ["Piya-Kwonci"] = "piy", ["Plains Apache"] = "apk", ["Plains Cree"] = "crk", ["Plains Indian Sign Language"] = "psd", ["Plains Miwok"] = "pmw", ["Plapo Krumen"] = "ktj", ["Playero"] = "gob", ["Pochuri Naga"] = "npo", ["Pochutec"] = "xpo", ["Podoko"] = "pbi", ["Pogali"] = "hkh", ["Pogolo"] = "poy", ["Pohnpeian"] = "pon", ["Poitevin-Saintongeais"] = "roa-poi", ["Pokangá"] = "pok", ["Poke"] = "pof", ["Pol"] = "pmm", ["Polabian"] = "pox", ["Polci"] = "plj", ["Polish Sign Language"] = "pso", ["Polonombauk"] = "plb", ["Pom"] = "pmo", ["Ponam"] = "ncc", ["Pongu"] = "png", ["Ponosakan"] = "pns", ["Pontic Greek"] = "pnt", ["Ponyo"] = "npg", ["Poqomam"] = "poc", ["Poqomchi'"] = "poh", ["Porohanon"] = "prh", ["Port Sandwich"] = "psw", ["Port Sorell"] = "xpl", ["Port Vato"] = "ptv", ["Portuguese Sign Language"] = "psr", ["Potawatomi"] = "pot", ["Potiguára"] = "pog", ["Poumei Naga"] = "pmx", ["Pouye"] = "bye", ["Powari"] = "pwr", ["Powhatan"] = "pim", ["Poyanáwa"] = "pyn", ["Prasuni"] = "prn", ["Pre-Samnite"] = "itc-psa", ["Primitive Irish"] = "pgl", ["Principense"] = "pre", ["Proto-Abkhaz-Abaza"] = "cau-abz-pro", ["Proto-Amuesha-Chamicuro"] = "awd-amc-pro", ["Proto-Andian"] = "cau-and-pro", ["Proto-Apachean"] = "apa-pro", ["Proto-Arawa"] = "auf-pro", ["Proto-Arawak"] = "awd-pro", ["Proto-Arnhem"] = "aus-arn-pro", ["Proto-Aroid"] = "omv-aro-pro", ["Proto-Aslian"] = "mkh-asl-pro", ["Proto-Atayalic"] = "map-ata-pro", ["Proto-Athabaskan"] = "ath-pro", ["Proto-Avaro-Andian"] = "cau-ava-pro", ["Proto-Bahnaric"] = "mkh-ban-pro", ["Proto-Bai"] = "sit-bai-pro", ["Proto-Batak"] = "btk-pro", ["Proto-Binanderean"] = "paa-bin-pro", ["Proto-Bodish"] = "sit-bdi-pro", ["Proto-Bongo-Bagirmi"] = "csu-bba-pro", ["Proto-Boran"] = "sai-bor-pro", ["Proto-Bua"] = "alv-bua-pro", ["Proto-Bungku-Tolaki"] = "poz-btk-pro", ["Proto-Burmish"] = "tbq-brm-pro", ["Proto-Caddoan"] = "cdd-pro", ["Proto-Cangin"] = "alv-cng-pro", ["Proto-Cariban"] = "sai-car-pro", ["Proto-Central Jê"] = "sai-cje-pro", ["Proto-Central Naga"] = "sit-aao-pro", ["Proto-Central New South Wales"] = "aus-cww-pro", ["Proto-Central Sudanic"] = "csu-pro", ["Proto-Central Togo"] = "alv-gtm-pro", ["Proto-Cerrado"] = "sai-cer-pro", ["Proto-Chatino"] = "omq-cha-pro", ["Proto-Chibchan"] = "cba-pro", ["Proto-Chimakuan"] = "chi-pro", ["Proto-Chinookan"] = "nai-ckn-pro", ["Proto-Chukotko-Kamchatkan"] = "qfa-cka-pro", ["Proto-Chumash"] = "nai-chu-pro", ["Proto-Circassian"] = "cau-cir-pro", ["Proto-Cupan"] = "azc-cup-pro", ["Proto-Cushitic"] = "cus-pro", ["Proto-Daju"] = "sdv-daj-pro", ["Proto-Daly"] = "aus-dal-pro", ["Proto-Dangari"] = "inc-dng-pro", ["Proto-Dargwa"] = "cau-drg-pro", ["Proto-Dizoid"] = "omv-diz-pro", ["Proto-Eastern Jebel"] = "sdv-eje-pro", ["Proto-Eastern Oti-Volta"] = "nic-eov-pro", ["Proto-Edekiri"] = "alv-edk-pro", ["Proto-Edoid"] = "alv-edo-pro", ["Proto-Ersuic"] = "sit-ers-pro", ["Proto-Eskimo-Aleut"] = "esx-pro", ["Proto-Fali"] = "alv-fli-pro", ["Proto-Gbaya"] = "gba-pro", ["Proto-Grassfields"] = "nic-grf-pro", ["Proto-Guang"] = "alv-gng-pro", ["Proto-Gurunsi"] = "nic-gns-pro", ["Proto-Halmahera-Cenderawasih"] = "poz-hce-pro", ["Proto-Heiban"] = "alv-hei-pro", ["Proto-Highland East Cushitic"] = "cus-hec-pro", ["Proto-Hrusish"] = "sit-hrs-pro", ["Proto-Hurro-Urartian"] = "qfa-hur-pro", ["Proto-Idomoid"] = "alv-ido-pro", ["Proto-Igboid"] = "alv-igb-pro", ["Proto-Ijoid"] = "ijo-pro", ["Proto-Iroquoian"] = "iro-pro", ["Proto-Iwaidjan"] = "aus-wdj-pro", ["Proto-Jukunoid"] = "nic-jkn-pro", ["Proto-Jê"] = "sai-jee-pro", ["Proto-Kadu"] = "qfa-kad-pro", ["Proto-Kalapuyan"] = "nai-klp-pro", ["Proto-Kam-Sui"] = "qfa-kms-pro", ["Proto-Kampa"] = "awd-kmp-pro", ["Proto-Kamta"] = "inc-krd-pro", ["Proto-Katuic"] = "mkh-kat-pro", ["Proto-Kham"] = "sit-kha-pro", ["Proto-Khanty"] = "kca-pro", ["Proto-Kho-Bwa"] = "sit-khb-pro", ["Proto-Khoe"] = "khi-kho-pro", ["Proto-Koman"] = "ssa-kom-pro", ["Proto-Komisenian"] = "ira-kms-pro", ["Proto-Kru"] = "kro-pro", ["Proto-Kuki-Chin"] = "tbq-kuk-pro", ["Proto-Kuliak"] = "ssa-klk-pro", ["Proto-Kwa"] = "alv-kwa-pro", ["Proto-Lalo"] = "tbq-lal-pro", ["Proto-Lezghian"] = "cau-lzg-pro", ["Proto-Lower Cross River"] = "nic-lcr-pro", ["Proto-Maidun"] = "nai-mdu-pro", ["Proto-Mande"] = "dmn-pro", ["Proto-Mangbetu"] = "csu-maa-pro", ["Proto-Mansi"] = "mns-pro", ["Proto-Mari"] = "chm-pro", ["Proto-Masa"] = "cdc-mas-pro", ["Proto-Mazatec"] = "omq-maz-pro", ["Proto-Medo-Parthian"] = "ira-mpr-pro", ["Proto-Mixe-Zoque"] = "nai-miz-pro", ["Proto-Mixtec"] = "omq-mxt-pro", ["Proto-Mixtecan"] = "omq-mix-pro", ["Proto-Mordvinic"] = "urj-mdv-pro", ["Proto-Mumuye"] = "alv-mum-pro", ["Proto-Munji-Yidgha"] = "ira-mny-pro", ["Proto-Muskogean"] = "nai-mus-pro", ["Proto-Na-Dene"] = "xnd-pro", ["Proto-Naish"] = "sit-nas-pro", ["Proto-Nawiki"] = "awd-nwk-pro", ["Proto-Nilo-Saharan"] = "ssa-pro", ["Proto-Nilotic"] = "sdv-nil-pro", ["Proto-North Halmahera"] = "paa-nha-pro", ["Proto-North Iroquoian"] = "iro-nor-pro", ["Proto-Northern Jê"] = "sai-nje-pro", ["Proto-Northern Naga"] = "sit-kon-pro", ["Proto-Numic"] = "azc-num-pro", ["Proto-Nupoid"] = "alv-nup-pro", ["Proto-Nuristani"] = "iir-nur-pro", ["Proto-Nyima"] = "sdv-nyi-pro", ["Proto-Nyulnyulan"] = "aus-nyu-pro", ["Proto-Ogoni"] = "nic-ogo-pro", ["Proto-Omotic"] = "omv-pro", ["Proto-Ongan"] = "qfa-ong-pro", ["Proto-Oti-Volta"] = "nic-ovo-pro", ["Proto-Oto-Manguean"] = "omq-pro", ["Proto-Oto-Pamean"] = "omq-otp-pro", ["Proto-Otomi"] = "oto-otm-pro", ["Proto-Otomian"] = "oto-pro", ["Proto-Pakanic"] = "mkh-pkn-pro", ["Proto-Pama-Nyungan"] = "aus-pam-pro", ["Proto-Paresi-Waura"] = "awd-prw-pro", ["Proto-Pearic"] = "mkh-pea-pro", ["Proto-Plateau"] = "nic-plt-pro", ["Proto-Plateau Penutian"] = "nai-plp-pro", ["Proto-Pomo"] = "nai-pom-pro", ["Proto-Puroik"] = "sit-khp-pro", ["Proto-Rukai"] = "dru-pro", ["Proto-Ryukyuan"] = "jpx-ryu-pro", ["Proto-Sabaki"] = "bnt-sab-pro", ["Proto-Saka"] = "xsc-sak-pro", ["Proto-Saka-Wakhi"] = "xsc-skw-pro", ["Proto-Salish"] = "sal-pro", ["Proto-Samoyedic"] = "syd-pro", ["Proto-Sanglechi-Ishkashimi"] = "ira-sgi-pro", ["Proto-Sara"] = "csu-sar-pro", ["Proto-Sarmatian"] = "xsc-sar-pro", ["Proto-Scythian"] = "xsc-pro", ["Proto-Selkup"] = "sel-pro", ["Proto-Shughni-Roshani"] = "ira-shr-pro", ["Proto-Shughni-Yazghulami"] = "ira-shy-pro", ["Proto-Shughni-Yazghulami-Munji"] = "ira-sym-pro", ["Proto-Siouan"] = "sio-pro", ["Proto-Siouan-Catawban"] = "nai-sca-pro", ["Proto-Songhay"] = "son-pro", ["Proto-Sotho-Tswana"] = "bnt-sts-pro", ["Proto-South Cushitic"] = "cus-sou-pro", ["Proto-Southern Jê"] = "sai-sje-pro", ["Proto-Ta-Arawak"] = "awd-taa-pro", ["Proto-Takic"] = "azc-tak-pro", ["Proto-Taman"] = "sdv-tmn-pro", ["Proto-Tamangic"] = "sit-tam-pro", ["Proto-Tangkhulic"] = "sit-tng-pro", ["Proto-Tani"] = "sit-tan-pro", ["Proto-Taranoan"] = "sai-tar-pro", ["Proto-Tatic"] = "xme-ttc-pro", ["Proto-Totozoquean"] = "nai-tot-pro", ["Proto-Trans-New Guinea"] = "ngf-pro", ["Proto-Triqui"] = "omq-tri-pro", ["Proto-Tsezian"] = "cau-tsz-pro", ["Proto-Tsimshianic"] = "nai-tsi-pro", ["Proto-Tungusic"] = "tuw-pro", ["Proto-Ubangian"] = "nic-ubg-pro", ["Proto-Upper Cross River"] = "nic-ucr-pro", ["Proto-Utian"] = "nai-utn-pro", ["Proto-Western Kho-Bwa"] = "sit-khw-pro", ["Proto-Western Mande"] = "dmn-mdw-pro", ["Proto-Witotoan"] = "sai-wit-pro", ["Proto-Yeniseian"] = "qfa-yen-pro", ["Proto-Yukaghir"] = "qfa-yuk-pro", ["Proto-Yupik"] = "ypk-pro", ["Proto-Zapotec"] = "omq-zpc-pro", ["Proto-Zapotecan"] = "omq-zap-pro", ["Proto-Zaza-Gorani"] = "ira-zgr-pro", ["Providencia Sign Language"] = "prz", ["Psikye"] = "kvj", ["Puare"] = "pux", ["Pudtol Atta"] = "atp", ["Puebla Mazatec"] = "pbm", ["Puelche"] = "pue", ["Puerto Rican Sign Language"] = "psl", ["Puimei Naga"] = "npu", ["Puinave"] = "pui", ["Puiron"] = "sit-prn", ["Pulabu"] = "pup", ["Puluwat"] = "puw", ["Puma"] = "pum", ["Pumpokol"] = "xpm", ["Pumé"] = "yae", ["Punan Aput"] = "pud", ["Punan Bah-Biau"] = "pna", ["Punan Batu"] = "pnm", ["Punan Merah"] = "puf", ["Punan Merap"] = "puc", ["Punan Tubu"] = "puj", ["Punic"] = "xpu", ["Punu"] = "puu", ["Puoc"] = "puo", ["Puquina"] = "puq", ["Puragi"] = "pru", ["Purari"] = "iar", ["Purepecha"] = "pua", ["Puri"] = "prr", ["Purik"] = "prx", ["Purisimeño"] = "puy", ["Puroik"] = "suv", ["Puruborá"] = "pur", ["Puruhá"] = "sai-prh", ["Purukotó"] = "sai-pur", ["Purum"] = "pub", ["Putai"] = "mfl", ["Putoh"] = "put", ["Putukwam"] = "afe", ["Puyo-Paekche"] = "xpp", ["Puyuma"] = "pyu", ["Pwaamèi"] = "pme", ["Pwapwâ"] = "pop", ["Pyapun"] = "pcw", ["Pye Krumen"] = "pye", ["Pyemmairre"] = "xpb", ["Pyen"] = "pyy", ["Pykobjê"] = "sai-pyk", ["Pyu (New Guinea)"] = "pby", ["Páez"] = "pbb", ["Pááfang"] = "pfa", ["Päri"] = "lkr", ["Pémono"] = "pev", ["Pévé"] = "lme", ["Pökoot"] = "pko", ["Q'anjob'al"] = "kjb", ["Q'eqchi"] = "kek", ["Qabiao"] = "laq", ["Qaqet"] = "byx", ["Qatabanian"] = "xqt", ["Qau"] = "gqu", ["Qila Muji"] = "ymq", ["Qimant"] = "ahg", ["Quapaw"] = "qua", ["Quebec Sign Language"] = "fcs", ["Querétaro Otomi"] = "otq", ["Quetzaltepec Mixe"] = "pxm", ["Queyu"] = "qvy", ["Quiavicuzas Zapotec"] = "zpj", ["Quileute"] = "qui", ["Quimbaya"] = "sai-qmb", ["Quinault"] = "qun", ["Quinigua"] = "nai-qng", ["Quinqui"] = "quq", ["Quioquitani-Quierí Zapotec"] = "ztq", ["Quiotepec Chinantec"] = "chq", ["Quiripi"] = "qyp", ["Quitemo"] = "sai-qtm", ["Rabha"] = "rah", ["Rabona"] = "sai-rab", ["Rade"] = "rad", ["Raetic"] = "xrr", ["Raga"] = "lml", ["Rahambuu"] = "raz", ["Rajah Kabunsuwan Manobo"] = "mqk", ["Raji"] = "rji", ["Rajong"] = "rjg", ["Rajput Garasia"] = "gra", ["Rakahanga-Manihiki"] = "rkh", ["Ralte"] = "ral", ["Rama"] = "rma", ["Ramandi"] = "tks", ["Ramanos"] = "sai-ram", ["Ramoaaina"] = "rai", ["Ramopa"] = "kjx", ["Rampi"] = "lje", ["Rana Tharu"] = "thr", ["Rang"] = "rax", ["Rangkas"] = "rgk", ["Ranglong"] = "rnl", ["Rao"] = "rao", ["Rapa"] = "ray", ["Rapoisi"] = "kyx", ["Rapting"] = "rpt", ["Rara Bakati'"] = "lra", ["Rasawa"] = "rac", ["Ratagnon"] = "btn", ["Ratahan"] = "rth", ["Rathawi"] = "rtw", ["Rathwi Bareli"] = "bgd", ["Raute"] = "rau", ["Ravula"] = "yea", ["Rawa"] = "rwo", ["Rawat"] = "jnl", ["Rawo"] = "rwa", ["Rayón Zoque"] = "zor", ["Razajerdi"] = "rat", ["Razihi"] = "rzh", ["Reang"] = "ria", ["Red Gelao"] = "gir", ["Reel"] = "atu", ["Rejang"] = "rej", ["Rejang Kayan"] = "ree", ["Reli"] = "rei", ["Rema"] = "bow", ["Rembarunga"] = "rmb", ["Rembong"] = "reb", ["Remo"] = "rem", ["Remontado Agta"] = "agv", ["Rempi"] = "rmp", ["Remun"] = "lkj", ["Rendille"] = "rel", ["Rengao"] = "ren", ["Rennellese"] = "mnv", ["Repanbitip"] = "rpn", ["Rer Bare"] = "rer", ["Rerau"] = "rea", ["Rerep"] = "pgk", ["Reshe"] = "res", ["Resígaro"] = "rgr", ["Retta"] = "ret", ["Reyesano"] = "rey", ["ฟรังโกเนียแบบไรน์"] = "gmw-rfr", ["Riang"] = "ril", ["Riantana"] = "ran", ["Ribun"] = "rir", ["Rigwe"] = "iri", ["Rikbaktsa"] = "rkb", ["Rincón Zapotec"] = "zar", ["Ringgou"] = "rgu", ["Ririo"] = "rri", ["Ritarungo"] = "rit", ["Riung"] = "riu", ["Riverain Sango"] = "snj", ["Rogo"] = "rod", ["Roma"] = "rmm", ["Romam"] = "rmx", ["Romanian Sign Language"] = "rms", ["Romano-Greek"] = "rge", ["Romano-Serbian"] = "rsb", ["Romanova"] = "rmv", ["Romblomanon"] = "rol", ["Rombo"] = "rof", ["Romkun"] = "rmk", ["Ron"] = "cla", ["Ronga"] = "rng", ["Rongga"] = "ror", ["Rongmei Naga"] = "nbu", ["Rongpo"] = "rnp", ["Ronji"] = "roe", ["Roon"] = "rnn", ["Roria"] = "rga", ["Roro"] = "rro", ["Rotokas"] = "roo", ["Rotuman"] = "rtm", ["Rouran"] = "mis-rou", ["Roviana"] = "rug", ["Ruching Palaung"] = "pce", ["Rudbari"] = "rdb", ["Rufiji"] = "rui", ["Ruga"] = "ruh", ["Rukai"] = "dru", ["Rukiga"] = "cgg", ["Ruma"] = "ruz", ["Rumai Palaung"] = "rbb", ["Rumu"] = "klq", ["Runga"] = "rou", ["Rungtu"] = "rtc", ["Rungus"] = "drg", ["Rungwa"] = "rnw", ["Russenorsk"] = "crp-rsn", ["Rutul"] = "rut", ["Ruuli"] = "ruc", ["Ruwund"] = "rnd", ["Rwa"] = "rwk", ["Rwandan Sign Language"] = "rsn", ["Réunion Creole French"] = "rcf", ["Sa"] = "sax", ["Sa'a"] = "apb", ["Sa'ban"] = "snv", ["Saafi-Saafi"] = "sav", ["Saam"] = "raq", ["Saamia"] = "lsm", ["Saanich"] = "str", ["Saare"] = "uss", ["Saaroa"] = "sxr", ["Saba"] = "saa", ["Sabaean"] = "xsa", ["Sabah Bisaya"] = "bsy", ["Sabah Malay"] = "msi", ["Sabanê"] = "sae", ["Sabaot"] = "spy", ["Sabine"] = "sbv", ["Sabir"] = "pml", ["Sabu"] = "hvn", ["Sabüm"] = "sbo", ["Sacapulteco"] = "quv", ["Sadri"] = "sck", ["Saep"] = "spd", ["Safaitic"] = "sem-saf", ["Safaliba"] = "saf", ["Safeyoka"] = "apz", ["Safwa"] = "sbk", ["Sagala"] = "sbm", ["Sagalla"] = "tga", ["Sahaptin"] = "nai-spt", ["Sahu"] = "saj", ["Saisiyat"] = "xsy", ["Sajau Basap"] = "sjb", ["Sakachep"] = "sch", ["Sakam"] = "skm", ["Sakao"] = "sku", ["Sakata"] = "skt", ["Sake"] = "sak", ["Sala"] = "shq", ["Salampasu"] = "slx", ["Salas"] = "sgu", ["Saleman"] = "sau", ["Saliba (Colombia)"] = "slc", ["Saliba (New Guinea)"] = "sbe", ["Salinan"] = "sln", ["Salt-Yui"] = "sll", ["Saluan"] = "loe", ["Salumá"] = "slj", ["Salvadoran Lenca"] = "nai-sln", ["Salvadoran Sign Language"] = "esn", ["Sam"] = "snx", ["Sama"] = "smd", ["Samalian"] = "sem-sam", ["Samaritan Aramaic"] = "sam", ["Samaritan Hebrew"] = "smp", ["Samarokena"] = "tmj", ["Samatao"] = "ysd", ["Samba"] = "smx", ["Sambalpuri"] = "spv", ["Sambe"] = "xab", ["Samberigi"] = "ssx", ["Samburu"] = "saq", ["Samei"] = "smh", ["Samo"] = "smq", ["Samoan Plantation Pidgin"] = "crp-spp", ["Samogitian"] = "sgs", ["Samosa"] = "swm", ["Sampang"] = "rav", ["Samtao"] = "stu", ["Samvedi"] = "smv", ["San Agustín Mixtepec Zapotec"] = "ztm", ["San Baltazar Loxicha Zapotec"] = "zpx", ["San Felipe Otlaltepec Popoloca"] = "pow", ["San Jerónimo Tecóatl Mazatec"] = "maa", ["San Juan Atzingo Popoloca"] = "poe", ["San Juan Colorado Mixtec"] = "mjc", ["San Juan Guelavía Zapotec"] = "zab", ["San Juan Quiahije Chatino"] = "omq-sjq", ["San Juan Teita Mixtec"] = "xtj", ["San Luís Temalacayuca Popoloca"] = "pps", ["San Marcos Tlalcoyalco Popoloca"] = "pls", ["San Martín Itunyoso Triqui"] = "trq", ["San Miguel Creole French"] = "scf", ["San Miguel Piedras Mixtec"] = "xtp", ["San Miguel el Grande Mixtec"] = "mig", ["San Pablo Güilá Zapotec"] = "ztu", ["San Pedro Amuzgos Amuzgo"] = "azg", ["San Pedro Quiatoni Zapotec"] = "zpf", ["San Vicente Coatlán Zapotec"] = "zpt", ["Sanapaná"] = "spn", ["Sanaviron"] = "sai-san", ["Sandawe"] = "sad", ["Sanga (Congo)"] = "sng", ["Sanga (Nigeria)"] = "xsn", ["Sanggau"] = "scg", ["Sangil"] = "snl", ["Sangir"] = "sxn", ["Sangisari"] = "sgr", ["Sangkong"] = "sgk", ["Sanglechi"] = "sgy", ["Sangtam Naga"] = "nsa", ["Sangu (Gabon)"] = "snq", ["Sangu (Tanzania)"] = "sbp", ["Sani"] = "ysn", ["Sanie"] = "ysy", ["Saniyo-Hiyewe"] = "sny", ["Sankaran Maninka"] = "msc", ["Sansi"] = "ssi", ["Santa Catarina Albarradas Zapotec"] = "ztn", ["Santa Inés Ahuatempan Popoloca"] = "pca", ["Santa Inés Yatzechi Zapotec"] = "zpn", ["Santa Lucía Monteverde Mixtec"] = "mdv", ["Santa María La Alta Nahuatl"] = "nhz", ["Santa María Quiegolani Zapotec"] = "zpi", ["Santa María Zacatepec Mixtec"] = "mza", ["Santa Teresa Cora"] = "cok", ["Santiago Xanica Zapotec"] = "zpr", ["Santo Domingo Albarradas Zapotec"] = "zas", ["Sanumá"] = "xsu", ["Sanxiang Min"] = "nan-zsh", ["Saparua"] = "spr", ["Sapará"] = "sai-sap", ["Sapo"] = "krn", ["Saponi"] = "spi", ["Saposa"] = "sps", ["Sapuan"] = "spu", ["Sapé"] = "spc", ["Sar"] = "mwm", ["Sara"] = "sre", ["Sara Kaba"] = "sbz", ["Sara Kaba Deme"] = "kwg", ["Sara Kaba Náà"] = "kwv", ["Saraiki"] = "skr", ["Saramaccan"] = "srm", ["Sarangani Blaan"] = "bps", ["Sarangani Manobo"] = "mbs", ["Sarasira"] = "zsa", ["Saraveca"] = "sar", ["Sarawak Malay"] = "poz-sml", ["Sarikoli"] = "srh", ["Sarli"] = "sdf", ["Sartang"] = "onp", ["Sarua"] = "swy", ["Sarudu"] = "sdu", ["Saruga"] = "sra", ["Sasak"] = "sas", ["Sasaru"] = "sxs", ["Satawalese"] = "stw", ["Sateré-Mawé"] = "mav", ["Sathmar Swabian"] = "gmw-stm", ["Saudi Arabian Sign Language"] = "sdl", ["Saurashtra"] = "saz", ["Sauri"] = "srt", ["Sause"] = "sao", ["Sausi"] = "ssj", ["Savi"] = "sdg", ["Savosavo"] = "svs", ["Sawai"] = "szw", ["Saweru"] = "swr", ["Sawi"] = "saw", ["Sawila"] = "swt", ["Sawriya Paharia"] = "mjt", ["Saxwe Gbe"] = "sxw", ["Saya"] = "say", ["Sayula Popoluca"] = "pos", ["Scanian"] = "gmq-scy", ["Seba"] = "kdg", ["Sebat Bet Gurage"] = "sgw", ["Seberuang"] = "sbx", ["Sebop"] = "sib", ["Sebuyau"] = "snb", ["Sechelt"] = "sec", ["Sechura"] = "sai-sec", ["Secoya"] = "sey", ["Sedang"] = "sed", ["Sedoa"] = "tvw", ["Seenku"] = "sos", ["Segai"] = "sge", ["Segeju"] = "seg", ["Seget"] = "sbg", ["Sehwi"] = "sfw", ["Seim"] = "sim", ["Seimat"] = "ssg", ["Seit-Kaitetu"] = "hik", ["Sekani"] = "sek", ["Sekapan"] = "skp", ["Sekar"] = "skz", ["Seke"] = "skj", ["Sekele"] = "vaj", ["Seki"] = "syi", ["Seko Padang"] = "skx", ["Seko Tengah"] = "sko", ["Sekpele"] = "lip", ["Selangor Sign Language"] = "kgi", ["Selaru"] = "slu", ["Selayar"] = "sly", ["Selee"] = "snw", ["Selepet"] = "spl", ["Selk'nam"] = "ona", ["Selonian"] = "sxl", ["Selungai Murut"] = "slg", ["Seluwasan"] = "sws", ["Sema"] = "nsm", ["Semandang"] = "sdm", ["Semaq Beri"] = "szc", ["Sembakung Murut"] = "sbr", ["Semelai"] = "sza", ["Semigallian"] = "xzm", ["Semimi"] = "etz", ["Semnam"] = "ssm", ["Semnani"] = "smy", ["Sempan"] = "xse", ["Sena"] = "seh", ["Senara Sénoufo"] = "seq", ["Senaya"] = "syn", ["Sene"] = "sej", ["Seneca"] = "see", ["Sengele"] = "szg", ["Senggi"] = "snu", ["Sengo"] = "spk", ["Sengseng"] = "ssz", ["Senhaja de Srair"] = "sjs", ["Sensi"] = "sni", ["Sentani"] = "set", ["Senthang Chin"] = "sez", ["Sentinelese"] = "std", ["Sepa (Indonesia)"] = "spb", ["Sepa (New Guinea)"] = "spe", ["Sepen"] = "spm", ["Sepik Iwam"] = "iws", ["Sepik Mari"] = "mbx", ["Sera"] = "sry", ["Sere"] = "swf", ["Serer"] = "srr", ["Seri"] = "sei", ["Serili"] = "sve", ["Seroa"] = "kqu", ["Serrano"] = "ser", ["Seru"] = "szd", ["Serua"] = "srw", ["Serudung Murut"] = "srk", ["Serui-Laut"] = "seu", ["Seta"] = "stf", ["Setaman"] = "stm", ["Seti"] = "sbi", ["Severn Ojibwa"] = "ojs", ["Sewa Bay"] = "sew", ["Seychellois Creole"] = "crs", ["Seze"] = "sze", ["Sha"] = "scw", ["Shabak"] = "sdb", ["Shabo"] = "sbf", ["Shahmirzadi"] = "srz", ["Shahrudi"] = "shm", ["Shall-Zwall"] = "sha", ["Shama-Sambuga"] = "sqa", ["Shamang"] = "xsh", ["Shambala"] = "ksb", ["Shanenawa"] = "swo", ["Shanga"] = "sho", ["Shangzhai"] = "jih", ["Shaojiang Min"] = "sjc", ["Shaozhou Tuhua"] = "zhx-sht", ["Sharanahua"] = "mcd", ["Shark Bay"] = "ssv", ["Sharwa"] = "swq", ["Shasta"] = "sht", ["Shatt"] = "shj", ["Shau"] = "sqh", ["Shawnee"] = "sjw", ["She"] = "shx", ["Shebayo"] = "awd-she", ["Shehri"] = "shv", ["Shekkacho"] = "moy", ["Sheko"] = "she", ["Shelta"] = "sth", ["Shendu"] = "shl", ["Sheni"] = "scv", ["Sherbro"] = "bun", ["Sherdukpen"] = "sdp", ["Sheshi Kham"] = "kip", ["Shetland"] = "scz", ["Shi"] = "shr", ["Shihhi Arabic"] = "ssh", ["Shiki"] = "gua", ["Shilluk"] = "shk", ["Shina"] = "scl", ["Shinasha"] = "bwo", ["Shipibo-Conibo"] = "shp", ["Shixing"] = "sxg", ["Sholaga"] = "sle", ["Shom Peng"] = "sii", ["Shoo-Minda-Nye"] = "bcv", ["Shoshone"] = "shh", ["Shua"] = "shg", ["Shuar"] = "jiv", ["Shughni"] = "sgh", ["Shumashti"] = "sts", ["Shumcho"] = "scu", ["Shuswap"] = "shs", ["Shuwa-Zamani"] = "ksa", ["Shwai"] = "shw", ["Shwe Palaung"] = "pll", ["Sialum"] = "slw", ["Siamou"] = "sif", ["Sian"] = "spg", ["Siane"] = "snp", ["Siang"] = "sya", ["Siar-Lak"] = "sjr", ["Sibe"] = "nco", ["Siberian Tatar"] = "sty", ["Sibu Melanau"] = "sdx", ["Sicanian"] = "sxc", ["Sicel"] = "scx", ["Siculo-Arabic"] = "sqr", ["Sidetic"] = "xsd", ["Sie"] = "erg", ["Sierra Leone Sign Language"] = "sgx", ["Sierra Negra Nahuatl"] = "nsu", ["Sierra de Juárez Zapotec"] = "zaa", ["Sighu"] = "sxe", ["Sihan"] = "snr", ["Sika"] = "ski", ["Sikaritai"] = "tty", ["Sikiana"] = "sik", ["Sikule"] = "skh", ["Sila"] = "slt", ["Silacayoapan Mixtec"] = "mks", ["Sileibi"] = "sbq", ["Silimo"] = "wul", ["Siliput"] = "mkc", ["Silopi"] = "xsp", ["Silt'e"] = "stv", ["Simaa"] = "sie", ["Simalungun Batak"] = "bts", ["Simba"] = "sbw", ["Simbali"] = "smg", ["Simbari"] = "smb", ["Simbo"] = "sbb", ["Simeku"] = "smz", ["Simeulue"] = "smr", ["Simte"] = "smt", ["Sinacantán"] = "nai-sin", ["Sinagen"] = "siu", ["Sinasina"] = "sst", ["Sinaugoro"] = "snc", ["Sindhi Bhil"] = "sbn", ["Sindihui Mixtec"] = "xts", ["Singa"] = "sgm", ["Singapore Sign Language"] = "sls", ["Singpho"] = "sgp", ["Sinicahua Mixtec"] = "xti", ["Sininkere"] = "skq", ["Sinte Romani"] = "rmo", ["Sinyar"] = "sys", ["Sinúfana"] = "sai-sin", ["Sio"] = "xsi", ["Siona"] = "snn", ["Sipakapense"] = "qum", ["Sira"] = "swj", ["Siraya"] = "fos", ["Sirenik"] = "ysr", ["Siri"] = "sir", ["Siriano"] = "sri", ["Sirionó"] = "srq", ["Sirmauri"] = "srx", ["Siroi"] = "ssd", ["Sisaala"] = "sld", ["Sissano"] = "sso", ["Situ"] = "sit-sit", ["Siuslaw"] = "sis", ["Sivandi"] = "siy", ["Sivia Sign Language"] = "lsv", ["Siwai"] = "siw", ["Siwi"] = "siz", ["Siwu"] = "akp", ["Siyin Chin"] = "csy", ["Skagit"] = "ska", ["Skalvian"] = "svx", ["Ske"] = "ske", ["Skepi Creole Dutch"] = "skw", ["Skolt Sami"] = "sms", ["Skou"] = "skv", ["Slavomolisano"] = "svm", ["Slovakian Sign Language"] = "svk", ["Small Flowery Miao"] = "sfm", ["Smärky Kanum"] = "kxq", ["Snohomish"] = "sno", ["So'a"] = "ssq", ["Sobei"] = "sob", ["Sochiapam Chinantec"] = "cso", ["Soga"] = "xog", ["Sogdian"] = "sog", ["Sok"] = "skk", ["Sokna"] = "swn", ["Soko"] = "soc", ["Sokoro"] = "sok", ["Solano"] = "xso", ["Soli"] = "sby", ["Solombala English"] = "crp-slb", ["Solon"] = "tuw-sol", ["Solong"] = "aaw", ["Solos"] = "sol", ["Som"] = "smc", ["Somba-Siawari"] = "bmu", ["Somra"] = "ntx", ["Somrai"] = "sor", ["Somyev"] = "kgt", ["Sonaga"] = "ysg", ["Sonde"] = "shc", ["Songe"] = "sop", ["Songlai Chin"] = "csj", ["Songomeno"] = "soe", ["Songoora"] = "sod", ["Sonha"] = "soi", ["Sonia"] = "siq", ["Soninke"] = "snk", ["Sonsorolese"] = "sov", ["Soo"] = "teu", ["Sop"] = "urw", ["Soqotri"] = "sqt", ["Sora"] = "srb", ["Sori-Harengan"] = "sbh", ["Sorkhei"] = "sqo", ["Sorothaptic"] = "sxo", ["Sorsogon Ayta"] = "ays", ["Sos Kundi"] = "sdk", ["Sota Kanum"] = "krz", ["Sou"] = "sqq", ["South African Sign Language"] = "sfs", ["South Awyu"] = "aws", ["South Boma"] = "bnt-sbo", ["South Central Banda"] = "lnl", ["South Central Dinka"] = "dib", ["South Efate"] = "erk", ["South Fali"] = "fal", ["South Giziga"] = "giz", ["South Lembata"] = "lmf", ["South Marquesan"] = "mqm", ["South Muyu"] = "kts", ["South Nuaulu"] = "nxl", ["South Picene"] = "spx", ["South Slavey"] = "xsl", ["South Tairora"] = "omw", ["South Ucayali Ashéninka"] = "cpy", ["South Watut"] = "mcy", ["Southeast Ambrym"] = "tvk", ["Southeast Babar"] = "vbb", ["Southeast Ijo"] = "ijs", ["Southeast Pashayi"] = "psi", ["Southeast Tasmanian"] = "xpf", ["Southeastern Dinka"] = "dks", ["Southeastern Ixtlán Zapotec"] = "zpd", ["Southeastern Kolami"] = "nit", ["Southeastern Nochixtlán Mixtec"] = "mxy", ["Southeastern Pomo"] = "pom", ["Southeastern Puebla Nahuatl"] = "npl", ["Southeastern Tarahumara"] = "tcu", ["Southeastern Tepehuan"] = "stp", ["Southern Alta"] = "agy", ["Southern Bai"] = "bfs", ["Southern Birifor"] = "biv", ["Southern Bobo"] = "bwq", ["Southern Bontoc"] = "obk", ["Southern Carrier"] = "caf", ["Southern Catanduanes Bicolano"] = "bln", ["Southern Dagaare"] = "dga", ["Southern East Cree"] = "crj", ["Southern Ghale"] = "ghe", ["Southern Grebo"] = "grj", ["Southern Guiyang Hmong"] = "hmy", ["Southern Haida"] = "hax", ["Southern Hindko"] = "hnd", ["Southern Kalapuya"] = "sxk", ["Southern Kalinga"] = "ksc", ["Southern Khanty"] = "kca-sou", ["Southern Kissi"] = "kss", ["Southern Kiwai"] = "kjd", ["Southern Kurdish"] = "sdh", ["Southern Lolopo"] = "ysp", ["Southern Lorung"] = "lrr", ["Southern Luri"] = "luz", ["Southern Ma'di"] = "snm", ["Southern Mansi"] = "mns-sou", ["Southern Mashan Hmong"] = "hma", ["Southern Muji"] = "ymc", ["Southern Ndebele"] = "nr", ["Southern Ngbandi"] = "nbw", ["Southern Nicobarese"] = "nik", ["Southern Nisu"] = "nsd", ["Southern Nuni"] = "nnw", ["Southern Ohlone"] = "css", ["Southern One"] = "osu", ["Southern Pame"] = "pmz", ["Southern Pomo"] = "peq", ["Southern Puebla Mixtec"] = "mit", ["Southern Puget Sound Salish"] = "slh", ["Southern Pumi"] = "pmj", ["Southern Qiandong Miao"] = "hms", ["Southern Qiang"] = "qxs", ["Southern Rengma Naga"] = "nre", ["Southern Rincon Zapotec"] = "zsr", ["Southern Roglai"] = "rgs", ["Southern Sama"] = "ssb", ["Southern Samo"] = "sbd", ["Southern Selkup"] = "sel-sou", ["Southern Sierra Miwok"] = "skd", ["Southern Tidung"] = "itd", ["Southern Tiwa"] = "tix", ["Southern Toussian"] = "wib", ["Southern Tujia"] = "tjs", ["Southern Tutchone"] = "tce", ["Southern Valley Yokuts"] = "yok-svy", ["Southern Yukaghir"] = "yux", ["Southwest Gbaya"] = "gso", ["Southwest Pashayi"] = "psh", ["Southwest Tanna"] = "nwi", ["Southwestern Bontoc"] = "vbk", ["Southwestern Dinka"] = "dik", ["Southwestern Fars"] = "fay", ["Southwestern Guiyang Hmong"] = "hmg", ["Southwestern Huishui Hmong"] = "hmh", ["Southwestern Nisu"] = "nsv", ["Southwestern Tamang"] = "tsf", ["Southwestern Tarahumara"] = "twr", ["Southwestern Tepehuan"] = "tla", ["Southwestern Tlaxiaco Mixtec"] = "meh", ["Sowa"] = "sww", ["Sowanda"] = "sow", ["Soyaltepec Mazatec"] = "vmp", ["Soyaltepec Mixtec"] = "vmq", ["Spanish Sign Language"] = "ssp", ["Spiti Bhoti"] = "spt", ["Spokane"] = "spo", ["Squamish"] = "squ", ["Sranan Tongo"] = "srn", ["Sri Lankan Creole Malay"] = "sci", ["Sri Lankan Sign Language"] = "sqs", ["Stau"] = "ero-tau", ["Stod Bhoti"] = "sbu", ["Stoney"] = "sto", ["Suabo"] = "szp", ["Suarmin"] = "seo", ["Suau"] = "swp", ["Suba"] = "sxb", ["Suba-Simbiti"] = "ssc", ["Subi"] = "xsj", ["Subiya"] = "sbs", ["Subtiaba"] = "sut", ["Sudest"] = "tgo", ["Suena"] = "sue", ["Suga"] = "sgi", ["Suganga"] = "sug", ["Sugut Dusun"] = "kzs", ["Suki"] = "sui", ["Suku"] = "sub", ["Sukuma"] = "suk", ["Sukur"] = "syk", ["Sukurum"] = "zsu", ["Sula"] = "szn", ["Sulka"] = "sua", ["Sulod"] = "srg", ["Suma"] = "sqm", ["Sumariup"] = "siv", ["Sumau"] = "six", ["Sumbawa"] = "smw", ["Sumbwa"] = "suw", ["Sumtu Chin"] = "csv", ["Sunam"] = "ssk", ["Sungwadaga"] = "mwo", ["Sungwadia"] = "mrb", ["Sunum"] = "ymn", ["Sunwar"] = "suz", ["Suoy"] = "syo", ["Supyire"] = "spp", ["Sur"] = "tdl", ["Surbakhal"] = "sbj", ["Suri"] = "suq", ["Surjapuri"] = "sjp", ["Sursurunga"] = "sgz", ["Suruahá"] = "swx", ["Surubu"] = "sde", ["Suruí"] = "sru", ["Suruí Do Pará"] = "mdz", ["Susquehannock"] = "sqn", ["Susu"] = "sus", ["Susuami"] = "ssu", ["Suundi"] = "sdj", ["Suwawa"] = "swu", ["Suyá"] = "suy", ["Svan"] = "sva", ["Swabian"] = "swg", ["Swampy Cree"] = "csw", ["Swazi"] = "ss", ["Swedish Sign Language"] = "swl", ["Swiss-French Sign Language"] = "ssr", ["Swiss-German Sign Language"] = "sgg", ["Swiss-Italian Sign Language"] = "slf", ["Swo"] = "sox", ["Syenara Senoufo"] = "shz", ["Sácata"] = "sai-sac", ["São Paulo Kaingáng"] = "zkp", ["Sãotomense"] = "cri", ["Sìcìté Sénoufo"] = "sep", ["Sîshëë"] = "sih", ["Sô"] = "sss", ["T'en"] = "tct", ["Taabwa"] = "tap", ["Taba"] = "mky", ["Tabaa Zapotec"] = "zat", ["Tabancale"] = "sai-tab", ["Tabaru"] = "tby", ["Tabasco Nahuatl"] = "nhc", ["Tabasco Zoque"] = "zoq", ["Tabla"] = "tnm", ["Tabo"] = "knv", ["Tabriak"] = "tzx", ["Tacahua Mixtec"] = "xtt", ["Tacana"] = "tna", ["Tachawit"] = "shy", ["Tadaksahak"] = "dsq", ["Tadyawan"] = "tdy", ["Tae'"] = "rob", ["Tafi"] = "tcd", ["Tafreshi"] = "xme-taf", ["Tagabawa"] = "bgs", ["Tagal Murut"] = "mvv", ["Tagbu"] = "tbm", ["Tagdal"] = "tda", ["Tagish"] = "tgx", ["Tagoi"] = "tag", ["Tagwana Senoufo"] = "tgw", ["Tahltan"] = "tht", ["Tai"] = "taw", ["Tai Hang Tong"] = "thc", ["Tai Hongjin"] = "tiz", ["Tai Loi"] = "tlq", ["Tai Long"] = "thi", ["Tai Pao"] = "tpo", ["Tai Thanh"] = "tmm", ["Tai Ya"] = "cuu", ["Taiap"] = "gpn", ["Taikat"] = "aos", ["Taimyr Pidgin Russian"] = "crp-tpr", ["Tainae"] = "ago", ["Tairuma"] = "uar", ["Taita"] = "dav", ["Taivoan"] = "tvx", ["Taiwan Sign Language"] = "tss", ["Taje"] = "pee", ["Tajio"] = "tdj", ["Tajuasohn"] = "tja", ["Takelma"] = "tkm", ["Takia"] = "tbc", ["Takua"] = "tkz", ["Takuu"] = "nho", ["Takwane"] = "tke", ["Tal"] = "tal", ["Tala"] = "tak", ["Talaud"] = "tld", ["Taliabu"] = "tlv", ["Talieng"] = "tdf", ["Talinga-Bwisi"] = "tlj", ["Talise"] = "tlr", ["Tallán"] = "sai-tal", ["Talodi"] = "tlo", ["Taloki"] = "tlk", ["Talondo'"] = "tln", ["Talossan"] = "tzl", ["Talu"] = "yta", ["Talysh"] = "tly", ["Tama (Chad)"] = "tma", ["Tama (Colombia)"] = "ten", ["Tamagario"] = "tcg", ["Tamambo"] = "mla", ["Taman (Indonesia)"] = "tmn", ["Taman (Myanmar)"] = "tcl", ["Tamanaku"] = "tmz", ["Tamazola Mixtec"] = "vmx", ["Tambas"] = "tdk", ["Tambora"] = "xxt", ["Tambotalo"] = "tls", ["Tambunan Dusun"] = "kzt", ["Tami"] = "tmy", ["Tamki"] = "tax", ["Tamnim Citak"] = "tml", ["Tampias Lobu"] = "low", ["Tampuan"] = "tpu", ["Tampulma"] = "tpm", ["Tanacross"] = "tcb", ["Tanahmerah"] = "tcm", ["Tanapag"] = "tpv", ["Tanchangya"] = "tnv", ["Tandia"] = "tni", ["Tanema"] = "tnx", ["Tangale"] = "tan", ["Tanggu"] = "tgu", ["Tangkhul Naga"] = "nmf", ["Tangko"] = "tkx", ["Tangoa"] = "tgp", ["Tangsa"] = "nst", ["Tanguat"] = "tbs", ["Tangwang"] = "mis-tnw", ["Tanimbili"] = "tbe", ["Tanimuca-Retuarã"] = "tnc", ["Tanjijili"] = "uji", ["Tanudan Kalinga"] = "kml", ["Tanzanian Sign Language"] = "tza", ["Tapachultec"] = "nai-tap", ["Taparita"] = "sai-tpr", ["Tapayuna"] = "sai-tap", ["Tapeba"] = "tbb", ["Tapei"] = "afp", ["Tapieté"] = "tpj", ["Tapirapé"] = "taf", ["Tar Gula"] = "kcm", ["Tara Baka"] = "bdh", ["Tarairiú"] = "sai-trr", ["Tarantino"] = "roa-tar", ["Tarao"] = "tro", ["Taraon"] = "mhu", ["Tareng"] = "tgr", ["Tariana"] = "tae", ["Tarjumo"] = "txj", ["Tarok"] = "yer", ["Taroko"] = "trv", ["Tarpia"] = "tpf", ["Tartessian"] = "txr", ["Taruma"] = "tdm", ["Tasawaq"] = "twq", ["Tashelhit"] = "shi", ["Tasmate"] = "tmt", ["Tat"] = "ttt", ["Tataltepec Chatino"] = "cta", ["Tatana"] = "txx", ["Tataviam"] = "azc-tat", ["Tatuyo"] = "tav", ["Tauade"] = "ttd", ["Taulil"] = "tuh", ["Taungyo"] = "tco", ["Taupota"] = "tpa", ["Tause"] = "tad", ["Taushiro"] = "trr", ["Tauya"] = "tya", ["Taveta"] = "tvs", ["Tavoyan"] = "tvn", ["Tavringer Romani"] = "rmu", ["Tawala"] = "tbo", ["Tawandê"] = "xtw", ["Tawang Monpa"] = "twm", ["Tawasa"] = "nai-taw", ["Taworta"] = "tbp", ["Tawoyan"] = "twy", ["Tawr Chin"] = "tcp", ["Tay Khang"] = "tnu", ["Tayabas Ayta"] = "ayy", ["Taymanitic"] = "sem-tay", ["Tayo"] = "cks", ["Tchitchege"] = "tck", ["Tchumbuli"] = "bqa", ["Te'un"] = "tve", ["Teanu"] = "tkw", ["Tebul Sign Language"] = "tsy", ["Tebul Ure Dogon"] = "dtu", ["Tecpatlán Totonac"] = "tcw", ["Tedaga"] = "tuq", ["Tedim Chin"] = "ctd", ["Tee"] = "tkq", ["Tefaro"] = "tfo", ["Tegali"] = "ras", ["Tehit"] = "kps", ["Tehuelche"] = "teh", ["Teiwa"] = "twe", ["Tejalapan Zapotec"] = "ztt", ["Teke-Fuumu"] = "ifm", ["Teke-Kukuya"] = "kkw", ["Teke-Laali"] = "lli", ["Teke-Tege"] = "teg", ["Teke-Tsaayi"] = "tyi", ["Teke-Tyee"] = "tyx", ["Tektiteko"] = "ttc", ["Tela-Masbuar"] = "tvm", ["Telefol"] = "tlf", ["Teluti"] = "tlt", ["Tem"] = "kdh", ["Temascaltepec Nahuatl"] = "nhv", ["Tembé"] = "tqb", ["Teme"] = "tdo", ["Temein"] = "teq", ["Temi"] = "soz", ["Temne"] = "tem", ["Temoaya Otomi"] = "ott", ["Temoq"] = "tmo", ["Tempasuk Dusun"] = "tdu", ["Ten'edn"] = "tnz", ["Tenango Otomi"] = "otn", ["Tene Kan Dogon"] = "dtk", ["Tenggarong Kutai Malay"] = "vkt", ["Tengger"] = "tes", ["Tenharim"] = "pah", ["Tenino"] = "tqn", ["Tenis"] = "tns", ["Tennet"] = "tex", ["Teojomulco Chatino"] = "omq-teo", ["Teop"] = "tio", ["Teor"] = "tev", ["Tepecano"] = "tep", ["Tepetotutla Chinantec"] = "cnt", ["Tepeuxila Cuicatec"] = "cux", ["Tepinapa Chinantec"] = "cte", ["Tepo Krumen"] = "ted", ["Teposcolula Mixtec"] = "omq-tel", ["Tequistlatec"] = "nai-teq", ["Ter Sami"] = "sjt", ["Tera"] = "ttr", ["Terebu"] = "trb", ["Terei"] = "buo", ["Tereno"] = "ter", ["Teressa"] = "tef", ["Tereweng"] = "twg", ["Teribe"] = "tfr", ["Terik"] = "tec", ["Termanu"] = "twu", ["Ternateño"] = "tmg", ["Tese"] = "keg", ["Teshenawa"] = "twc", ["Tetela"] = "tll", ["Tetelcingo Nahuatl"] = "nhg", ["Tetete"] = "teb", ["Tetserret"] = "tez", ["Tetun Dili"] = "tdt", ["Teushen"] = "sai-teu", ["Teutila Cuicatec"] = "cut", ["Tewa"] = "tew", ["Texcatepec Otomi"] = "otx", ["Texistepec Popoluca"] = "poq", ["Texmelucan Zapotec"] = "zpz", ["Tezoatlán Mixtec"] = "mxb", ["Tha"] = "thy", ["Thachanadan"] = "thn", ["Thado Chin"] = "tcz", ["Thaiphum Chin"] = "cth", ["Thakali"] = "ths", ["Thamudic"] = "sem-tha", ["Thangal Naga"] = "nki", ["Thangmi"] = "thf", ["Thao"] = "ssf", ["Tharaka"] = "thk", ["Tharrgari"] = "dhr", ["Thawa"] = "xtv", ["Tho"] = "tou", ["Thompson"] = "thp", ["Thopho"] = "ytp", ["Thracian"] = "txh", ["Thu Lao"] = "tyl", ["Thulung"] = "tdh", ["Thurawal"] = "tbh", ["Thuri"] = "thu", ["Tiagba"] = "ahi", ["Tiale"] = "mnl", ["Tiang"] = "tbj", ["Tibea"] = "ngy", ["Tibetan Sign Language"] = "lsn", ["Ticuna"] = "tca", ["Tidaá Mixtec"] = "mtx", ["Tiemacèwè Bozo"] = "boo", ["Tiene"] = "tii", ["Tifal"] = "tif", ["Tigak"] = "tgc", ["Tigon Mbembe"] = "nza", ["Tii"] = "txq", ["Tijaltepec Mixtec"] = "xtl", ["Tikar"] = "tik", ["Tikopia"] = "tkp", ["Tilapa Otomi"] = "otl", ["Tillamook"] = "til", ["Tilquiapan Zapotec"] = "zts", ["Tilung"] = "tij", ["Tima"] = "tms", ["Timbe"] = "tim", ["Timor Pidgin"] = "tvy", ["Timote"] = "sai-tim", ["Timucua"] = "tjm", ["Timugon Murut"] = "tih", ["Tinani"] = "lbf", ["Tindi"] = "tin", ["Tingui-Boto"] = "tgv", ["Tinigua"] = "tit", ["Tinoc Kallahan"] = "tne", ["Tinputz"] = "tpz", ["Tinrin"] = "cir", ["Tipai"] = "nai-tip", ["Tippera"] = "tpe", ["Tira"] = "tic", ["Tirahi"] = "tra", ["Tiranige Diga Dogon"] = "tde", ["Tirax"] = "mme", ["Tita"] = "tdq", ["Titan"] = "ttv", ["Tiv"] = "tiv", ["Tiwa"] = "lax", ["Tiwi"] = "tiw", ["Tiéfo"] = "tiq", ["Tiéyaxo Bozo"] = "boz", ["Tjurruru"] = "tju", ["Tlachichilco Tepehua"] = "tpt", ["Tlacoapa Me'phaa"] = "tpl", ["Tlacoatzintepec Chinantec"] = "ctl", ["Tlacolulita Zapotec"] = "zpk", ["Tlahuica"] = "ocu", ["Tlahuitoltepec Mixe"] = "mxp", ["Tlamacazapa Nahuatl"] = "nuz", ["Tlazoyaltepec Mixtec"] = "mqh", ["Tlingit"] = "tli", ["To"] = "toz", ["To'abaita"] = "mlu", ["Toaripi"] = "tqo", ["Toba"] = "tob", ["Toba Batak"] = "bbc", ["Toba-Maskoy"] = "tmf", ["Tobagonian Creole English"] = "tgh", ["Tobanga"] = "tng", ["Tobati"] = "tti", ["Tobelo"] = "tlb", ["Tobian"] = "tox", ["Tobilung"] = "tgb", ["Tobo"] = "tbv", ["Tocantins Asurini"] = "asu", ["Tocho"] = "taz", ["Todrah"] = "tdr", ["Tofanma"] = "tlg", ["Tofin Gbe"] = "tfi", ["Togbo-Vara Banda"] = "tor", ["Togoyo"] = "tgy", ["Tojolabal"] = "toj", ["Toka-Leya"] = "dov", ["Tokano"] = "zuh", ["Tokelauan"] = "tkl", ["Toki Pona"] = "tok", ["Tol"] = "jic", ["Tolai"] = "ksd", ["Tolaki"] = "lbw", ["Tolomako"] = "tlm", ["Tolowa"] = "tol", ["Toloza"] = "ytl", ["Toma"] = "tod", ["Tomadino"] = "tdi", ["Tombelala"] = "ttp", ["Tombonuo"] = "txa", ["Tombulu"] = "tom", ["Tomini"] = "txm", ["Tommeginne"] = "xpv", ["Tommo So"] = "dto", ["Tomo Kan Dogon"] = "dtm", ["Tomoip"] = "tqp", ["Tondano"] = "tdn", ["Tonga (Malawi)"] = "tog", ["Tonga (Mozambique)"] = "toh", ["Tonga (Zambia)"] = "toi", ["Tongwe"] = "tny", ["Tonjon"] = "tjn", ["Tonkawa"] = "tqw", ["Tonsawang"] = "tnw", ["Tonsea"] = "txs", ["Tontemboan"] = "tnt", ["Toogee"] = "xpx", ["Tooro"] = "ttj", ["Topoiyo"] = "toy", ["Toposa"] = "toq", ["Toraja-Sa'dan"] = "sda", ["Toram"] = "trj", ["Torau"] = "ttu", ["Toro"] = "tdv", ["Toro So Dogon"] = "dts", ["Toro Tegu Dogon"] = "dtt", ["Toromono"] = "tno", ["Torona"] = "tqr", ["Torres Strait Creole"] = "tcs", ["Torricelli"] = "tei", ["Torricelli Yau"] = "yyu", ["Torwali"] = "trw", ["Torá"] = "trz", ["Tosu"] = "sit-tos", ["Totela"] = "ttl", ["Toto"] = "txo", ["Totoli"] = "txe", ["Totomachapan Zapotec"] = "zph", ["Totontepec Mixe"] = "mto", ["Totoro"] = "ttk", ["Touo"] = "tqu", ["Toura"] = "neb", ["Towei"] = "ttn", ["Transylvanian Saxon"] = "gmw-tsx", ["Traveller Danish"] = "rmd", ["Traveller Norwegian"] = "rmg", ["Traveller Scottish"] = "trl", ["Tregami"] = "trm", ["Tremembé"] = "tme", ["Trieng"] = "stg", ["Trimuris"] = "tip", ["Tring"] = "tgq", ["Tringgus"] = "trx", ["Trinidad and Tobago Sign Language"] = "lst", ["Trinidadian Creole English"] = "trf", ["Trinitario"] = "trn", ["Trió"] = "tri", ["Truká"] = "tka", ["Trumai"] = "tpy", ["Ts'ün-Lao"] = "tsl", ["Tsaangi"] = "tsa", ["Tsafiki"] = "cof", ["Tsakhur"] = "tkr", ["Tsakonian"] = "tsd", ["Tsakwambo"] = "kvz", ["Tsamai"] = "tsb", ["Tsat"] = "huq", ["Tsetsaut"] = "txc", ["Tsez"] = "ddo", ["Tshangla"] = "tsj", ["Tshobdun"] = "sit-tsh", ["Tshwa"] = "hio", ["Tsikimba"] = "kdl", ["Tsimané"] = "cas", ["Tsimshian"] = "tsi", ["Tsishingini"] = "tsw", ["Tso"] = "ldp", ["Tsogo"] = "tsv", ["Tsonga"] = "ts", ["Tsotsitaal"] = "fly", ["Tsucuba"] = "cbq", ["Tsum"] = "ttz", ["Tsuut'ina"] = "srs", ["Tsuvadi"] = "tvd", ["Tsuvan"] = "tsh", ["Tswa"] = "tsc", ["Tswapong"] = "two", ["Tuamotuan"] = "pmt", ["Tuareg"] = "tmh", ["Tubar"] = "tbu", ["Tucano"] = "tuo", ["Tugen"] = "tuy", ["Tugun"] = "tzn", ["Tugutil"] = "tuj", ["Tukang Besi North"] = "khc", ["Tukang Besi South"] = "bhq", ["Tuki"] = "bag", ["Tukpa"] = "tpq", ["Tukudede"] = "tkd", ["Tukumanféd"] = "tkf", ["Tula"] = "tul", ["Tule-Kaweah Yokuts"] = "yok-tky", ["Tulehu"] = "tlu", ["Tulishi"] = "tey", ["Tulu-Bohuai"] = "rak", ["Tulua"] = "aus-tul", ["Tuma-Irumu"] = "iou", ["Tumak"] = "tmc", ["Tumbuka"] = "tum", ["Tumi"] = "kku", ["Tumleo"] = "tmq", ["Tumtum"] = "tbr", ["Tumulung Sisaala"] = "sil", ["Tundra Enets"] = "enh", ["Tundra Nenets"] = "yrk-tun", ["Tunen"] = "tvu", ["Tungag"] = "lcm", ["Tunggare"] = "trt", ["Tunia"] = "tug", ["Tunica"] = "tun", ["Tunisian Sign Language"] = "tse", ["Tunjung"] = "tjg", ["Tunni"] = "tqq", ["Tunumiisut"] = "esx-tut", ["Tunzu"] = "dza", ["Tuoba"] = "mis-tuo", ["Tuotomb"] = "ttf", ["Tuparí"] = "tpr", ["Tupinambá"] = "tpn", ["Tupinikin"] = "tpk", ["Tupuri"] = "tui", ["Turaka"] = "trh", ["Turdetanian"] = "mis-tdt", ["Turdulian"] = "mis-tdl", ["Turi"] = "trd", ["Turiwára"] = "twt", ["Turka"] = "tuz", ["Turkana"] = "tuv", ["Turkish Sign Language"] = "tsm", ["Turks and Caicos Creole English"] = "tch", ["Turoyo"] = "tru", ["Turumsa"] = "tqm", ["Tuscarora"] = "tus", ["Tutelo"] = "tta", ["Tutong"] = "ttg", ["Tutsa Naga"] = "tvt", ["Tutuba"] = "tmi", ["Tututepec Mixtec"] = "mtu", ["Tututni"] = "tuu", ["Tuwali Ifugao"] = "ifk", ["Tuwari"] = "tww", ["Tuwuli"] = "bov", ["Tuxináwa"] = "tux", ["Tuxá"] = "tud", ["Tuyuca"] = "tue", ["Tuyuhun"] = "mis-tuh", ["Twana"] = "twa", ["Twendi"] = "twn", ["Tyap"] = "kcg", ["Tyaraity"] = "woa", ["Tyerrernotepanner"] = "xph", ["Tz'utujil"] = "tzj", ["Tzeltal"] = "tzh", ["Tày Tac"] = "tyt", ["Tây Bồi"] = "tas", ["Téén"] = "lor", ["Tübatulabal"] = "tub", ["U"] = "uuu", ["Uab Meto"] = "aoz", ["Uamué"] = "uam", ["Uare"] = "ksj", ["Ubaghara"] = "byc", ["Ubang"] = "uba", ["Ubi"] = "ubi", ["Ubir"] = "ubr", ["Ubykh"] = "uby", ["Ucayali-Yurúa Ashéninka"] = "cpb", ["Uda"] = "uda", ["Udihe"] = "ude", ["Uduk"] = "udu", ["Ufim"] = "ufi", ["Ugandan Sign Language"] = "ugn", ["Ughele"] = "uge", ["Uhami"] = "uha", ["Uisai"] = "uis", ["Ujir"] = "udj", ["Ukaan"] = "kcf", ["Ukhwejo"] = "ukh", ["Ukit"] = "umi", ["Ukpe-Bayobiri"] = "ukp", ["Ukpet-Ehom"] = "akd", ["Ukrainian Sign Language"] = "ukl", ["Ukue"] = "uku", ["Ukuriguma"] = "ukg", ["Ukwa"] = "ukq", ["Ukwuani-Aboh-Ndoni"] = "ukw", ["Ulau-Suain"] = "svb", ["Ulch"] = "ulc", ["Uldeme"] = "udl", ["Ulithian"] = "uli", ["Ullatan"] = "ull", ["Ulumanda'"] = "ulm", ["Ulwa"] = "ulw", ["Uma"] = "ppk", ["Uma' Lasan"] = "xky", ["Uma' Lung"] = "ulu", ["Umanakaina"] = "gdn", ["Umatilla"] = "uma", ["Umbindhamu"] = "umd", ["Umbu-Ungu"] = "ubu", ["Umbugarla"] = "umr", ["Umbundu"] = "umb", ["Umbuygamu"] = "umg", ["Ume Sami"] = "sju", ["Umeda"] = "upi", ["Umiida"] = "xud", ["Umiray Dumaget Agta"] = "due", ["Umon"] = "umm", ["Umotína"] = "umo", ["Umpila"] = "ump", ["Una"] = "mtg", ["Unami"] = "unm", ["Unde Kaili"] = "unz", ["Undetermined"] = "und", ["Uneapa"] = "bbn", ["Uneme"] = "une", ["Unggaranggu"] = "xun", ["Unggumi"] = "xgu", ["Unua"] = "onu", ["Unubahe"] = "unu", ["Uokha"] = "uok", ["Upper Chehalis"] = "cjh", ["Upper Grand Valley Dani"] = "dna", ["Upper Kuskokwim"] = "kuu", ["Upper Necaxa Totonac"] = "tku", ["Upper Ta'oih"] = "tth", ["Upper Tanana"] = "tau", ["Upper Taromi"] = "tov", ["Upper Umpqua"] = "xup", ["Ura (New Guinea)"] = "uro", ["Ura (Vanuatu)"] = "uur", ["Uradhi"] = "urf", ["Urali"] = "url", ["Urapmin"] = "urm", ["Urarina"] = "ura", ["Urartian"] = "xur", ["Urat"] = "urt", ["Urhobo"] = "urh", ["Uri"] = "uvh", ["Urigina"] = "urg", ["Urim"] = "uri", ["Urimo"] = "urx", ["Urningangg"] = "urc", ["Uru"] = "ure", ["Uru-Eu-Wau-Wau"] = "urz", ["Uru-Pa-In"] = "urp", ["Uruangnirin"] = "urn", ["Uruava"] = "urv", ["Urubú-Kaapor"] = "urb", ["Uruguayan Sign Language"] = "ugy", ["Urum"] = "uum", ["Urumi"] = "uru", ["Usaghade"] = "usk", ["Usan"] = "wnu", ["Usarufa"] = "usa", ["Ushojo"] = "ush", ["Usila Chinantec"] = "cuc", ["Uspanteco"] = "usp", ["Usui"] = "usi", ["Utarmbung"] = "omo", ["Ute"] = "ute", ["Utu"] = "utu", ["Uvbie"] = "evh", ["Uwinymil"] = "aus-uwi", ["Uya"] = "usu", ["Uyajitaya"] = "duk", ["Uzekwe"] = "eze", ["Vaagri Booli"] = "vaa", ["Vaghri"] = "vgr", ["Vaghua"] = "tva", ["Vagla"] = "vag", ["Vaiphei"] = "vap", ["Vale"] = "vae", ["Valencian Sign Language"] = "vsv", ["Valle Nacional Chinantec"] = "cvn", ["Valley Maidu"] = "vmv", ["Valman"] = "van", ["Valpei"] = "vlp", ["Vamale"] = "mkt", ["Vame"] = "mlr", ["Vangunu"] = "mpr", ["Vanimo"] = "vam", ["Vanji"] = "ira-wnj", ["Vanuma"] = "vau", ["Vao"] = "vao", ["Varhadi"] = "vah", ["Varisi"] = "vrs", ["Varli"] = "vav", ["Vasavi"] = "vas", ["Vayu"] = "vay", ["Veddah"] = "ved", ["Vehes"] = "val", ["Vemgo-Mabas"] = "vem", ["Venetic"] = "xve", ["Venezuelan Sign Language"] = "vsl", ["Ventureño"] = "veo", ["Vera'a"] = "vra", ["Vestinian"] = "xvs", ["Vidunda"] = "vid", ["Viemo"] = "vig", ["Vilela"] = "vil", ["Vili"] = "vif", ["Villa Viciosa Agta"] = "dyg", ["Vincentian Creole English"] = "svc", ["Virgin Islands Creole"] = "vic", ["Vishavan"] = "vis", ["Viti"] = "vit", ["Vitou"] = "vto", ["Viya"] = "gev", ["Vlax Romani"] = "rmy", ["Volscian"] = "xvo", ["Vono"] = "kch", ["Voro"] = "vor", ["Vumbu"] = "vum", ["Vunapu"] = "vnp", ["Vunjo"] = "vun", ["Vurës"] = "msn", ["Vute"] = "vut", ["Wa"] = "wbm", ["Wa'ema"] = "wag", ["Waama"] = "wwa", ["Waamwang"] = "wmn", ["Wab"] = "wab", ["Wabo"] = "wbb", ["Waboda"] = "kmx", ["Waci Gbe"] = "wci", ["Wadaginam"] = "wdg", ["Waddar"] = "wbq", ["Wadi Wadi"] = "xwd", ["Wadiyara Koli"] = "kxp", ["Wadjabangayi"] = "wdy", ["Wadjiginy"] = "wdj", ["Wadjigu"] = "wdu", ["Wae Rana"] = "wrx", ["Waffa"] = "waj", ["Wagawaga"] = "wgb", ["Wagaya"] = "wga", ["Wagdi"] = "wbr", ["Wageman"] = "waq", ["Wagi"] = "fad", ["Wahau Kayan"] = "whu", ["Wahau Kenyah"] = "whk", ["Wahgi"] = "wgi", ["Waigali"] = "wbk", ["Waigeo"] = "wgo", ["Waikuri"] = "nai-wai", ["Wailaki"] = "wlk", ["Wailapa"] = "wlr", ["Waima'a"] = "wmh", ["Waimaha"] = "bao", ["Waimiri-Atroari"] = "atr", ["Wainumá"] = "awd-wai", ["Waioli"] = "wli", ["Waitaká"] = "sai-wai", ["Waiwai"] = "waw", ["Waja"] = "wja", ["Wajarri"] = "wbv", ["Wajuk"] = "xwj", ["Waka"] = "wav", ["Wakawaka"] = "wkw", ["Wakhi"] = "wbl", ["Wakoná"] = "waf", ["Wala"] = "lgl", ["Walak"] = "wlw", ["Walangama"] = "nlw", ["Wali (Ghana)"] = "wlx", ["Wali (Sudan)"] = "wll", ["Waling"] = "wly", ["Walio"] = "wla", ["Walla Walla"] = "waa", ["Wallisian"] = "wls", ["Walmajarri"] = "wmt", ["Wam"] = "wmo", ["Wamas"] = "wmc", ["Wambaya"] = "wmb", ["Wambon"] = "wms", ["Wambule"] = "wme", ["Wamey"] = "cou", ["Wamin"] = "wmi", ["Wampar"] = "lbq", ["Wampur"] = "waz", ["Wan"] = "wan", ["Wanambre"] = "wnb", ["Wanap"] = "wnp", ["Wancho"] = "nnp", ["Wanda"] = "wbh", ["Wandala"] = "mfi", ["Wandamen"] = "wad", ["Wandarang"] = "wnd", ["Wandji"] = "wdd", ["Waneci"] = "wne", ["Wanga"] = "lwg", ["Wanggamala"] = "wnm", ["Wangganguru"] = "wgg", ["Wanggom"] = "wng", ["Wangkayutyuru"] = "wky", ["Wangkumara"] = "xwk", ["Wanham"] = "sai-wnm", ["Wanji"] = "wbi", ["Wanman"] = "wbt", ["Wannu"] = "jub", ["Wano"] = "wno", ["Wantoat"] = "wnc", ["Wanukaka"] = "wnk", ["Wanyi"] = "wny", ["Wané"] = "hwa", ["Wapan"] = "juk", ["Wapishana"] = "wap", ["Wappo"] = "wao", ["War-Jaintia"] = "aml", ["Wara"] = "wbf", ["Warapu"] = "wra", ["Waray Sorsogon"] = "srv", ["Wardaman"] = "wrr", ["Wardandi"] = "wxw", ["Warekena"] = "gae", ["Warembori"] = "wsa", ["Wari'"] = "pav", ["Waris"] = "wrs", ["Waritai"] = "wbe", ["Wariyangga"] = "wri", ["Warji"] = "wji", ["Warkay-Bipim"] = "bgv", ["Warlmanpa"] = "wrl", ["Warlpiri"] = "wbp", ["Warluwara"] = "wrb", ["Warnang"] = "wrn", ["Waropen"] = "wrp", ["Warray"] = "wrz", ["Warrgamay"] = "wgy", ["Warrwa"] = "wwr", ["Waru"] = "wru", ["Warumungu"] = "wrm", ["Waruna"] = "wrv", ["Warungu"] = "wrg", ["Warwar Feni"] = "hrw", ["Wasco-Wishram"] = "wac", ["Wasembo"] = "gsp", ["Washo"] = "was", ["Waskia"] = "wsk", ["Wastek"] = "hus", ["Wasu"] = "wsu", ["Watakataui"] = "wtk", ["Watam"] = "wax", ["Wathaurong"] = "wth", ["Watiwa"] = "wtf", ["Watubela"] = "wah", ["Waube"] = "kop", ["Wauja"] = "wau", ["Wauyai"] = "wuy", ["Wawa"] = "www", ["Wawonii"] = "wow", ["Waxiang"] = "wxa", ["Wayampi"] = "oym", ["Wayana"] = "way", ["Wayanad Chetti"] = "ctt", ["Wayoró"] = "wyr", ["Wayumara"] = "sai-way", ["Wayuu"] = "guc", ["Wedau"] = "wed", ["Weh"] = "weh", ["Welaung"] = "weu", ["Weliki"] = "klh", ["Welsh Romani"] = "rmw", ["Wemale"] = "weo", ["Wemba-Wemba"] = "xww", ["Weme Gbe"] = "wem", ["Wendat"] = "wdt", ["Weri"] = "wer", ["Wersing"] = "kvw", ["West Albay Bikol"] = "fbl", ["West Ambae"] = "nnd", ["West Central Banda"] = "bbp", ["West Damar"] = "drn", ["West Flemish"] = "vls", ["West Greenlandic Pidgin"] = "crp-gep", ["West Lembata"] = "lmj", ["West Makian"] = "mqs", ["West Masela"] = "mss", ["West Tarangan"] = "txn", ["West Uvean"] = "uve", ["West-Central Limba"] = "lia", ["Western Arrernte"] = "are", ["Western Bolivian Guarani"] = "gnw", ["Western Bukidnon Manobo"] = "mbb", ["Western Dani"] = "dnw", ["Western Durango Nahuatl"] = "azn", ["Western Fijian"] = "wyy", ["Western Gurung"] = "gvr", ["Western Highland Chatino"] = "ctp", ["Western Huasteca Nahuatl"] = "nhw", ["Western Jicaque"] = "nai-wji", ["Western Juxtlahuaca Mixtec"] = "jmx", ["Western Karaboro"] = "kza", ["Western Keres"] = "kjq", ["Western Krahn"] = "krw", ["Western Lalu"] = "ywl", ["Western Magar"] = "mrd", ["Western Maninkakan"] = "mlq", ["Western Mari"] = "mrj", ["Western Mashan Hmong"] = "hmw", ["Western Meohang"] = "raf", ["Western Muria"] = "mut", ["Western Neo-Aramaic"] = "amw", ["Western Ojibwa"] = "ojw", ["Western Parbate Kham"] = "kjl", ["Western Penan"] = "pne", ["Western Sisaala"] = "ssl", ["Western Subanon"] = "suc", ["Western Tamang"] = "tdg", ["Western Tawbuid"] = "twb", ["Western Totonac"] = "tqt", ["Western Tunebo"] = "tnb", ["Western Xiangxi Miao"] = "mmr", ["Western Xwla Gbe"] = "xwl", ["Western Yugur"] = "ybe", ["Wewaw"] = "wea", ["Weyewa"] = "wew", ["Weyto"] = "woy", ["White Gelao"] = "giw", ["White Lachi"] = "lwh", ["Whitesands"] = "tnp", ["Wiarumus"] = "tua", ["Wichita"] = "wic", ["Wichí Lhamtés Güisnay"] = "mzh", ["Wichí Lhamtés Nocten"] = "mtp", ["Wichí Lhamtés Vejoz"] = "wlv", ["Wik-Epa"] = "wie", ["Wik-Iiyanh"] = "wij", ["Wik-Keyangan"] = "wif", ["Wik-Me'anha"] = "wih", ["Wik-Mungkan"] = "wim", ["Wik-Ngathana"] = "wig", ["Wikalkan"] = "wik", ["Wikngenchera"] = "wua", ["Wilawila"] = "wil", ["Wintu"] = "wnw", ["Winyé"] = "kst", ["Wipi"] = "gdr", ["Wiradjuri"] = "wrh", ["Wiraféd"] = "wir", ["Wirangu"] = "wgu", ["Wiru"] = "wiu", ["Wirö"] = "wpc", ["Wiwa"] = "mbp", ["Wiyot"] = "wiy", ["Wobé"] = "wob", ["Woccon"] = "xwc", ["Wogamusin"] = "wog", ["Wogeo"] = "woc", ["Woi"] = "wbw", ["Woiwurrung"] = "wyi", ["Wojenaka"] = "jod", ["Wolane"] = "wle", ["Wolani"] = "wod", ["Wolaytta"] = "wal", ["Woleaian"] = "woe", ["Wolio"] = "wlo", ["Womo"] = "wmx", ["Wong-gie"] = "aus-won", ["Wongo"] = "won", ["Woods Cree"] = "cwd", ["Woria"] = "wor", ["Worimi"] = "kda", ["Worodougou"] = "jud", ["Worora"] = "wro", ["Wotapuri-Katarqalai"] = "wsv", ["Wotu"] = "wtw", ["Woun Meu"] = "noa", ["Written Oirat"] = "xwo", ["Wudu"] = "wud", ["Wuhuan"] = "mis-wuh", ["Wulguru"] = "aus-wul", ["Wuliwuli"] = "wlu", ["Wulna"] = "wux", ["Wumboko"] = "bqm", ["Wumbvu"] = "wum", ["Wumeng"] = "ywu", ["Wunai Bunu"] = "bwn", ["Wunambal"] = "wub", ["Wurrugu"] = "wur", ["Wusa"] = "yig", ["Wushi"] = "bse", ["Wusi"] = "wsi", ["Wutung"] = "wut", ["Wutunhua"] = "wuh", ["Wuvulu-Aua"] = "wuv", ["Wyandot"] = "wya", ["Wára"] = "tci", ["Wãpha"] = "juw", ["Wè Southern"] = "gxx", ["Wè Western"] = "wec", ["Xadani Zapotec"] = "zax", ["Xakriabá"] = "xkr", ["Xamtanga"] = "xan", ["Xanaguía Zapotec"] = "ztg", ["Xavante"] = "xav", ["Xerénte"] = "xer", ["Xetá"] = "xet", ["Xianbei"] = "mis-xbi", ["Xibe"] = "sjo", ["Xicotepec de Juárez Totonac"] = "too", ["Xinca"] = "xin", ["Xingú Asuriní"] = "asn", ["Xiongnu"] = "mis-xnu", ["Xipaya"] = "xiy", ["Xiri"] = "xii", ["Xiriâna"] = "xir", ["Xishanba Lalo"] = "ywt", ["Xocó"] = "sai-xoc", ["Xokleng"] = "xok", ["Xukurú"] = "xoo", ["Xwela Gbe"] = "xwe", ["Xârâgurè"] = "axx", ["Yaa"] = "iyx", ["Yaaku"] = "muu", ["Yabarana"] = "yar", ["Yabaâna"] = "ybn", ["Yaben"] = "ybm", ["Yabong"] = "ybo", ["Yabula Yabula"] = "yxy", ["Yace"] = "ekr", ["Yafi"] = "wfg", ["Yagara"] = "yxg", ["Yagaria"] = "ygr", ["Yaghnobi"] = "yai", ["Yagomi"] = "ygm", ["Yagua"] = "yad", ["Yagwoia"] = "ygw", ["Yahadian"] = "ner", ["Yahang"] = "rhp", ["Yahuna"] = "ynu", ["Yaka"] = "yaf", ["Yakaikeke"] = "ykk", ["Yakima"] = "yak", ["Yakkha"] = "ybh", ["Yakoma"] = "yky", ["Yala"] = "yba", ["Yalahatan"] = "jal", ["Yalakalore"] = "xyl", ["Yalarnnga"] = "ylr", ["Yale"] = "nce", ["Yaleba"] = "ylb", ["Yalunka"] = "yal", ["Yalálag Zapotec"] = "zpu", ["Yamap"] = "ymp", ["Yamba"] = "yam", ["Yamben"] = "ynb", ["Yambes"] = "ymb", ["Yambeta"] = "yat", ["Yamdena"] = "jmd", ["Yameo"] = "yme", ["Yaminahua"] = "yaa", ["Yamongeri"] = "ymg", ["Yamphu"] = "ybi", ["Yan-nhangu"] = "jay", ["Yana"] = "ynn", ["Yanda"] = "yda", ["Yanda Dogon"] = "dym", ["Yandjibara"] = "xyb", ["Yandruwandha"] = "ynd", ["Yanesha'"] = "ame", ["Yangben"] = "yav", ["Yangkaal"] = "aus-ynk", ["Yangkam"] = "bsx", ["Yangman"] = "jng", ["Yango"] = "yng", ["Yangulam"] = "ynl", ["Yangum Dey"] = "yde", ["Yangum Gel"] = "ygl", ["Yangum Mon"] = "ymo", ["Yankunytjatjara"] = "kdd", ["Yanomam"] = "wca", ["Yanomamö"] = "guu", ["Yansi"] = "yns", ["Yanyuwa"] = "jao", ["Yao"] = "yao", ["Yao (South America)"] = "sai-yao", ["Yaosakor Asmat"] = "asy", ["Yaouré"] = "yre", ["Yapese"] = "yap", ["Yapunda"] = "yev", ["Yaqay"] = "jaq", ["Yaqui"] = "yaq", ["Yarawata"] = "yrw", ["Yareba"] = "yrb", ["Yareni Zapotec"] = "zae", ["Yarli"] = "yxl", ["Yarluyandi"] = "yry", ["Yarumá"] = "sai-yar", ["Yarí"] = "yri", ["Yasa"] = "yko", ["Yatay"] = "yty", ["Yatee Zapotec"] = "zty", ["Yatzachi Zapotec"] = "zav", ["Yaul"] = "yla", ["Yaur"] = "jau", ["Yautepec Zapotec"] = "zpb", ["Yavitero"] = "yvt", ["Yawa"] = "yva", ["Yawalapití"] = "yaw", ["Yawanawa"] = "ywn", ["Yawarawarga"] = "yww", ["Yaweyuha"] = "yby", ["Yawijibaya"] = "jbw", ["Yawiyo"] = "ybx", ["Yawuru"] = "ywr", ["Yaygir"] = "xya", ["Yazghulami"] = "yah", ["Ye'kwana"] = "mch", ["Yei"] = "jei", ["Yekhee"] = "ets", ["Yekora"] = "ykr", ["Yele"] = "yle", ["Yelmek"] = "jel", ["Yelogu"] = "ylg", ["Yemaek"] = "hmk", ["Yemba"] = "ybb", ["Yemsa"] = "jnj", ["Yendang"] = "yen", ["Yeni"] = "yei", ["Yenish"] = "yec", ["Yerakai"] = "yra", ["Yeretuar"] = "gop", ["Yerong"] = "yrn", ["Yerukula"] = "yeu", ["Yeskwa"] = "yes", ["Yessan-Mayo"] = "yss", ["Yetfa"] = "yet", ["Yevanic"] = "yej", ["Yeyi"] = "yey", ["Yidgha"] = "ydg", ["Yidiny"] = "yii", ["Yil"] = "yll", ["Yilan Creole"] = "ycr", ["Yimas"] = "yee", ["Yimchungru Naga"] = "yim", ["Yinbaw Karen"] = "kvu", ["Yinchia"] = "yin", ["Yindjibarndi"] = "yij", ["Yindjilandji"] = "yil", ["Yine"] = "pib", ["Yinggarda"] = "yia", ["Yinhawangka"] = "ywg", ["Yiningayi"] = "ygi", ["Yintale Karen"] = "kvy", ["Yinwum"] = "yxm", ["Yir-Yoront"] = "yiy", ["Yirandali"] = "ljw", ["Yis"] = "yis", ["Yitha Yitha"] = "xth", ["Yoba"] = "yob", ["Yocoboué Dida"] = "gud", ["Yoidik"] = "ydk", ["Yoke"] = "yki", ["Yolmo"] = "scp", ["Yolngu Sign Language"] = "ygs", ["Yoloxochitl Mixtec"] = "xty", ["Yom"] = "pil", ["Yombe"] = "yom", ["Yongkom"] = "yon", ["Yopno"] = "yut", ["Yora"] = "mts", ["Yorta Yorta"] = "xyy", ["Yosondúa Mixtec"] = "mpm", ["Youle Jino"] = "jiu", ["Younuo Bunu"] = "buh", ["Yout Wam"] = "ytw", ["Yoy"] = "yoy", ["Yuanga"] = "nua", ["Yucatec Maya"] = "yua", ["Yucatec Maya Sign Language"] = "msd", ["Yuchi"] = "yuc", ["Yucuañe Mixtec"] = "mvg", ["Yucuna"] = "ycn", ["Yug"] = "yug", ["Yugambal"] = "yub", ["Yugoslavian Sign Language"] = "ysl", ["Yugul"] = "ygu", ["Yuhup"] = "yab", ["Yuki"] = "yuk", ["Yukpa"] = "yup", ["Yukuben"] = "ybl", ["Yulu"] = "yul", ["Yuma"] = "yum", ["Yumana"] = "awd-yum", ["Yupiltepeque"] = "nai-yup", ["Yupua"] = "sai-yup", ["Yuqui"] = "yuq", ["Yuracare"] = "yuz", ["Yuri"] = "sai-yri", ["Yurok"] = "yur", ["Yuru"] = "ljx", ["Yurumanguí"] = "sai-yur", ["Yurutí"] = "yui", ["Yutanduchi Mixtec"] = "mab", ["Yuwana"] = "yau", ["Yuyu"] = "yxu", ["Zaachila Zapotec"] = "ztx", ["Zabana"] = "kji", ["Zacatepec Chatino"] = "ctz", ["Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"] = "nhi", ["Zaghawa"] = "zag", ["Zaiwa"] = "atb", ["Zakhring"] = "zkr", ["Zambian Sign Language"] = "zsl", ["Zan Gula"] = "zna", ["Zanaki"] = "zak", ["Zande"] = "zne", ["Zangwal"] = "zah", ["Zaniza Zapotec"] = "zpw", ["Zapotec"] = "zap", ["Zaramo"] = "zaj", ["Zari"] = "zaz", ["Zarma"] = "dje", ["Zauzou"] = "zal", ["Zay"] = "zwa", ["Zayein Karen"] = "kxk", ["Zayse-Zergulla"] = "zay", ["Zazao"] = "jaj", ["Zbu"] = "sit-zbu", ["Zealandic"] = "zea", ["Zeem"] = "zua", ["Zemba"] = "dhm", ["Zeme Naga"] = "nzm", ["Zenag"] = "zeg", ["Zenaga"] = "zen", ["Zenzontepec Chatino"] = "czn", ["Zhaba"] = "zhb", ["Zhang-Zhung"] = "xzh", ["Zhenan Min"] = "nan-zhe", ["Zhire"] = "zhi", ["Zhoa"] = "zhw", ["Zhár"] = "jjr", ["Zia"] = "zia", ["Zialo"] = "zil", ["Zigula"] = "ziw", ["Zimakani"] = "zik", ["Zimba"] = "zmb", ["Zimbabwe Sign Language"] = "zib", ["Zinza"] = "zin", ["Zirenkel"] = "zrn", ["Ziriya"] = "zir", ["Zizilivakan"] = "ziz", ["Zo'é"] = "pto", ["Zokhuo"] = "yzk", ["Zoogocho Zapotec"] = "zpq", ["Zotung Chin"] = "czt", ["Zou"] = "zom", ["Zulgo-Gemzek"] = "gnd", ["Zumaya"] = "zuy", ["Zumbun"] = "jmb", ["Zuwara"] = "ber-zuw", ["Zyphe"] = "zyp", ["Záparo"] = "zro", ["Àhàn"] = "ahn", ["Áncá"] = "acb", ["Äiwoo"] = "nfl", ["Äynu"] = "aib", ["Ömie"] = "aom", ["Önge"] = "oon", ["ǀXam"] = "xam", ["ǁAni"] = "hnh", ["ǁGana"] = "gnk", ["ǁXegwi"] = "xeg", ["ǂHoan"] = "huc", ["ǃKung"] = "khi-kun", ["ǃXóõ"] = "nmn", ["กงกัณ"] = "kok", ["กบาลัน"] = "ckv", ["กรีก"] = "el", ["กรีกแบบไมซีนี"] = "gmy", ["กรีกโบราณ"] = "grc", ["กรีนแลนด์"] = "kl", ["กวางตุ้ง"] = "yue", ["กอกบอรอก"] = "trp", ["กอท"] = "got", ["กอทแบบไครเมีย"] = "gme-cgo", ["กอล"] = "cel-gau", ["กะดู"] = "zkd", ["กะตูตะวันตก"] = "kuf", ["กะตูตะวันออก"] = "ktv", ["กะยัน"] = "pdu", ["กะยาตะวันตก"] = "kyu", ["กะยาตะวันออก"] = "eky", ["กะเหรี่ยงดั้งเดิม"] = "kar-pro", ["กะเหรี่ยงปะโอ"] = "blk", ["กะเหรี่ยงสะกอ"] = "ksw", ["กะเหรี่ยงโปตะวันตก"] = "pwo", ["กะเหรี่ยงโปตะวันออก"] = "kjp", ["กะเหรี่ยงโปเหนือ"] = "pww", ["กะเหรี่ยงโปแพร่"] = "kjt", ["กะไบล์"] = "kab", ["กัจฉ์"] = "kfr", ["กันกานาอือ"] = "kne", ["กันกานาอือเหนือ"] = "xnn", ["กันนฑะ"] = "kn", ["กัมเบอรา"] = "xbr", ["กัวรานีคลาสสิก"] = "gn-cls", ["กัวรานีแบบปารากวัย"] = "gug", ["กั้น"] = "gan", ["กากาอุซ"] = "gag", ["กาดาซันชายฝั่ง"] = "kzj", ["กาตาลา"] = "ca", ["กาตาลาเก่า"] = "roa-oca", ["กานูรี"] = "kr", ["กาปัมปางัน"] = "pam", ["กามรูป"] = "inc-kam", ["การากัลปัก"] = "kaa", ["กาลากัน"] = "kqe", ["กาลากันแบบกากัน"] = "kll", ["กาลากันแบบตากาเกาลู"] = "klg", ["กาลิเซีย"] = "gl", ["กาลิเซีย-โปรตุเกสเก่า"] = "roa-opt", ["กาเรา"] = "kyj", ["กาโม"] = "gmv", ["กาโร"] = "grt", ["กิลเบิร์ต"] = "gil", ["กีนาบาตางันตอนบน"] = "dmg", ["กืออึซ"] = "gez", ["กุรุข"] = "kru", ["กูนียันดี"] = "gni", ["กูย"] = "kdt", ["กูร์ดั้งเดิม"] = "nic-gur-pro", ["กฺ๋อง"] = "ugo", ["กเบดั้งเดิม"] = "alv-gbe-pro", ["ขมุ"] = "kjg", ["ขมุอิกดั้งเดิม"] = "mkh-khm-pro", ["ขร้า-ไทดั้งเดิม"] = "qfa-tak-pro", ["ขร้าดั้งเดิม"] = "qfa-kra-pro", ["ครี"] = "cr", ["ครีโอลกาบูเวร์ดี"] = "kea", ["ครีโอลกินี-บิสเซา"] = "pov", ["ครีโอลจาเมกา"] = "jam", ["ครีโอลมอริเชียส"] = "mfe", ["ครีโอลมาเก๊า"] = "mzs", ["ครีโอลลุยเซียนา"] = "lou", ["ครีโอลเฮติ"] = "ht", ["คองโก"] = "kg", ["คอปติก"] = "cop", ["คอร์ซิกา"] = "co", ["คอร์นวอลล์"] = "kw", ["คอร์นวอลล์เก่า"] = "oco", ["คอเคเซียนตะวันตกเฉียงเหนือดั้งเดิม"] = "cau-nwc-pro", ["คอเคเซียนตะวันออกเฉียงเหนือดั้งเดิม"] = "cau-nec-pro", ["คังรังชือ"] = "ane", ["คัลมึค"] = "xal", ["คาคัส"] = "kjh", ["คาชุบ"] = "csb", ["คาซัค"] = "kk", ["คาซี"] = "kha", ["คานธาระ"] = "pgd", ["คาบาร์เดีย"] = "kbd", ["คาร์ทเวเลียนดั้งเดิม"] = "ccs-pro", ["คาร์นิโคบาร์"] = "caq", ["คาลาเมียนดั้งเดิม"] = "phi-kal-pro", ["คาเซียนดั้งเดิม"] = "aav-khs-pro", ["คาเรเลีย"] = "krl", ["คำตี้"] = "kht", ["คำเมือง"] = "nod", ["คีตัน"] = "zkt", ["คีร์กีซ"] = "ky", ["คุชราต"] = "gu", ["คุชราตกลาง"] = "inc-mgu", ["คุชราตเก่า"] = "inc-ogu", ["คูนิงามิ"] = "xug", ["คูมาน"] = "qwm", ["คูมุก"] = "kum", ["งูนีดั้งเดิม"] = "bnt-ngu-pro", ["จอร์เจีย"] = "ka", ["จอร์เจียน-แซนดั้งเดิม"] = "ccs-gzn-pro", ["จอร์เจียเก่า"] = "oge", ["จักมา"] = "ccp", ["จามตะวันตก"] = "cja", ["จามตะวันออก"] = "cjm", ["จามิกดั้งเดิม"] = "cmc-pro", ["จิ่งเผาะ"] = "kac", ["จิ้น"] = "cjy", ["จีน"] = "zh", ["จีนกลาง"] = "cmn", ["จีนยุคกลาง"] = "ltc", ["จีนวรรณกรรม"] = "lzh", ["จีนเก่า"] = "och", ["จุน"] = "cuq", ["จูร์เชน"] = "juc", ["จ้วง"] = "za", ["จ้วงแบบจั่วเจียง"] = "zzj", ["จ้วงแบบหนง"] = "zhn", ["ชวา"] = "jv", ["ชวาเก่า"] = "kaw", ["ชวาแบบนิวแคลิโดเนีย"] = "jas", ["ชวาแบบแคริบเบียน"] = "jvn", ["ชอง"] = "cog", ["ชากาทาย"] = "chg", ["ชาดิกดั้งเดิม"] = "cdc-pro", ["ชาดิกตอนกลางดั้งเดิม"] = "cdc-cbm-pro", ["ชาบากาโน"] = "cbk", ["ชามอร์โร"] = "ch", ["ชุกชี"] = "ckt", ["ชูวัช"] = "cv", ["ซอกดิกดั้งเดิม"] = "ira-sgc-pro", ["ซองคา"] = "dz", ["ซอร์บตอนบน"] = "hsb", ["ซอร์บตอนล่าง"] = "dsb", ["ซังโก"] = "sg", ["ซันสการ์"] = "zau", ["ซัมบัล"] = "xsb", ["ซัสซารี"] = "sdc", ["ซากีซายา"] = "szy", ["ซาคา"] = "sah", ["ซาซา"] = "zza", ["ซาปา"] = "tys", ["ซามัว"] = "sm", ["ซามาตอนกลาง"] = "sml", ["ซามาแบบปางูตารัน"] = "slm", ["ซามิกดั้งเดิม"] = "smi-pro", ["ซามีเหนือ"] = "se", ["ซามีแบบกิลดิน"] = "sjd", ["ซามีแบบปีเต"] = "sje", ["ซามีแบบลูเล"] = "smj", ["ซามีแบบอีนารี"] = "smn", ["ซามีใต้"] = "sma", ["ซาราวักเหนือดั้งเดิม"] = "poz-swa-pro", ["ซาร์ดิเนีย"] = "sc", ["ซาลาร์"] = "slr", ["ซาโฮ"] = "ssy", ["ซิซิลี"] = "scn", ["ซินดาริน"] = "sjn", ["ซีกายานา"] = "sky", ["ซีดามา"] = "sid", ["ซีโน-ทิเบตันดั้งเดิม"] = "sit-pro", ["ซุนดา"] = "su", ["ซูก"] = "tsg", ["ซูทู"] = "st", ["ซูทูเหนือ"] = "nso", ["ซูนี"] = "zun", ["ซูรีเกาโนน"] = "sgd", ["ซูลาเวซีใต้ดั้งเดิม"] = "poz-ssw-pro", ["ซูลู"] = "zu", ["ซูเมอร์"] = "sux", ["ซูโดเวีย"] = "xsv", ["ญัฮกุร"] = "cbn", ["ญี่ปุ่น"] = "ja", ["ญี่ปุ่นเก่า"] = "ojp", ["ญ้อ"] = "nyw", ["ดราวิเดียนดั้งเดิม"] = "dra-pro", ["ดราวิเดียนตอนกลางดั้งเดิม"] = "dra-cen-pro", ["ดราวิเดียนเหนือดั้งเดิม"] = "dra-nor-pro", ["ดราวิเดียนใต้ดั้งเดิม"] = "dra-sou-pro", ["ดราวิเดียนใต้ที่สองดั้งเดิม"] = "dra-sdt-pro", ["ดราวิเดียนใต้ที่หนึ่งดั้งเดิม"] = "dra-sdo-pro", ["ดัตช์"] = "nl", ["ดัตช์กลาง"] = "dum", ["ดัตช์เก่า"] = "odt", ["ดาโคตา"] = "dak", ["ดุงกาน"] = "dng", ["ดูซุนตอนกลาง"] = "dtp", ["ตงเซียง"] = "sce", ["ตองงา"] = "to", ["ตังกุต"] = "txg", ["ตันดากาโนน"] = "tgn", ["ตั่ย"] = "tyz", ["ตากาล็อก"] = "tl", ["ตางัม"] = "sit-tgm", ["ตาตาร์"] = "tt", ["ตาตาร์แบบไครเมีย"] = "crh", ["ตาอีโน"] = "tnq", ["ตาฮีตี"] = "ty", ["ตีรูไร"] = "tiy", ["ตีโดเร"] = "tvo", ["ตุมซุก"] = "xtq", ["ตุรกี"] = "tr", ["ตุรกีแบบออตโตมัน"] = "ota", ["ตุรกีแบบอานาโตเลียเก่า"] = "trk-oat", ["ตุรุง"] = "try", ["ตูปี-กัวรานีดั้งเดิม"] = "tup-gua-pro", ["ตูปีเก่า"] = "tpw", ["ตูลู"] = "tcy", ["ตูวา"] = "tyv", ["ตูวาลู"] = "tvl", ["ตูเปียนดั้งเดิม"] = "tup-pro", ["ตโบลี"] = "tbl", ["ต้งเหนือ"] = "doc", ["ต้งใต้"] = "kmc", ["ทมิฬ"] = "ta", ["ทมิฬเก่า"] = "oty", ["ตอกปีซิน"] = "tpi", ["ทะวืง"] = "thm", ["ทาจิก"] = "tg", ["ทาบาซารัน"] = "tab", ["ทิเบต"] = "bo", ["ทิเบตคลาสสิก"] = "xct", ["ทิเบตเก่า"] = "otb", ["ทือกรึญญา"] = "ti", ["ทือเกร"] = "tig", ["นอซู"] = "ii", ["นอร์มัน"] = "nrf", ["นอร์สดั้งเดิม"] = "gmq-pro", ["นอร์สเก่า"] = "non", ["นอร์เวย์"] = "no", ["นอร์เวย์กลาง"] = "gmq-mno", ["นอร์เวย์แบบนือนอสก์"] = "nn", ["นอร์เวย์แบบบุ๊กมอล"] = "nb", ["นัคดั้งเดิม"] = "cau-nkh-pro", ["นาวัตล์"] = "nah", ["นาวัตล์คลาสสิก"] = "nci", ["นาวัตล์ตอนกลาง"] = "nhn", ["นาวันดั้งเดิม"] = "azc-nah-pro", ["นาวาโฮ"] = "nv", ["นาอูรู"] = "na", ["นาโปลี"] = "nap", ["นิวเคลียร์พอลินีเชียนดั้งเดิม"] = "poz-pnp-pro", ["นิวเบียเก่า"] = "onw", ["นิโคบารีสดั้งเดิม"] = "aav-nic-pro", ["นิโคบาร์กลาง"] = "ncb", ["นีวเว"] = "niu", ["นุง"] = "nut", ["นูเบียนดั้งเดิม"] = "nub-pro", ["บราฮุอี"] = "brh", ["บริทอนิกดั้งเดิม"] = "cel-bry-pro", ["บรูตะวันตก"] = "brv", ["บรูตะวันออก"] = "bru", ["บลาการ์"] = "beu", ["บอลโต-สลาวิกดั้งเดิม"] = "ine-bsl-pro", ["บะห์นัร"] = "bdq", ["บัตส์"] = "bbl", ["บันจาร์"] = "bjn", ["บัมบารา"] = "bm", ["บัลติ"] = "bft", ["บัลแกเรีย"] = "bg", ["บาลี"] = "pi", ["บาวาเรีย"] = "bar", ["บาสก์"] = "eu", ["บาสก์ดั้งเดิม"] = "euq-pro", ["บาหลี"] = "ban", ["บาเจาแบบอินโดนีเซีย"] = "bdl", ["บาเจาแบบเวสต์โคสต์"] = "bdr", ["บาโลจ"] = "bal", ["บิสลามา"] = "bi", ["บีซู"] = "bzi", ["บีนูกิด"] = "bkd", ["บีโคลตอนกลาง"] = "bcl", ["บูกิส"] = "bug", ["บูร์บอแน-แบรีชง"] = "roa-bbn", ["บูร์ยัต"] = "bua", ["ปนัร"] = "pbv", ["ปนัร-คาซี-ลึงงัมดั้งเดิม"] = "aav-pkl-pro", ["ปยู"] = "pyx", ["ปรากฤต"] = "pra", ["ปรากฤตแบบอโศก"] = "inc-ash", ["ปะหล่องดั้งเดิม"] = "mkh-pal-pro", ["ปักษ์ใต้"] = "sou", ["ปังควาฬฺ"] = "pgg", ["ปัญจาบ"] = "pa", ["ปัญจาบเก่า"] = "inc-opa", ["ปาทาน"] = "ps", ["ปาทานดั้งเดิม"] = "ira-pat-pro", ["ปาลาวาโนตอนกลาง"] = "plc", ["ปาลาวาโนตะวันตกเฉียงใต้"] = "plv", ["ปาลาวาโนแบบบรูกส์พอยต์"] = "plw", ["ปาเปียเมนตู"] = "pap", ["ปาเลา"] = "pau", ["ปาโกะห์"] = "pac", ["ปีการ์"] = "pcd", ["ปีปิล"] = "ppl", ["ปีเยมอนเต"] = "pms", ["ปูกาปูกา"] = "pkp", ["ปู้อี"] = "pcc", ["ผิงเหนือ"] = "cnp", ["ผิงใต้"] = "csp", ["ผูเซียน"] = "cpx", ["ผู้น้อย"] = "pho", ["ผู้ไท"] = "pht", ["ฝรั่งเศส"] = "fr", ["ฝรั่งเศสกลาง"] = "frm", ["ฝรั่งเศสเก่า"] = "fro", ["พทคะ"] = "bfq", ["พม่า"] = "my", ["พม่าเก่า"] = "obr", ["พรัช"] = "bra", ["พวน"] = "phu", ["พอลินีเชียนดั้งเดิม"] = "poz-pol-pro", ["พอลินีเชียนตะวันออกดั้งเดิม"] = "poz-pep-pro", ["พิหาร"] = "bh", ["พ่าเก"] = "phk", ["ฟรียูลี"] = "fur", ["ฟรีเชียตะวันตก"] = "fy", ["ฟรีเชียเก่า"] = "ofs", ["ฟรีเชียเหนือ"] = "frr", ["ฟรีเชียแบบซาเทอร์ลันท์"] = "stq", ["ฟร็องโก-พรอว็องส์"] = "frp", ["ฟาลา"] = "fax", ["ฟาลิสกุส"] = "xfa", ["ฟินนิกดั้งเดิม"] = "urj-fin-pro", ["ฟินิเชีย"] = "phn", ["ฟินแลนด์"] = "fi", ["ฟิลิปปินส์ดั้งเดิม"] = "phi-pro", ["ฟีจี"] = "fj", ["ฟูลา"] = "ff", ["มคหะ"] = "mag", ["มงตาแญ"] = "moe", ["มณีปุระ"] = "mni", ["มณีปุระเก่า"] = "omp", ["มนองตอนกลาง"] = "cmo", ["มนองใต้"] = "mnn", ["มราฐี"] = "mr", ["มราฐีเก่า"] = "omr", ["มลยาฬัม"] = "ml", ["มลายูตอนกลาง"] = "pse", ["มลายูแบบตรังกานู"] = "poz-ter", ["มลายูแบบบรูไน"] = "kxd", ["มลายูแบบปัตตานี"] = "mfa", ["มลายูแบบเกอดะฮ์"] = "meo", ["มวานี"] = "wmw", ["มอกชา"] = "mdf", ["มองโกลิกดั้งเดิม"] = "xgn-pro", ["มองโกเลีย"] = "mn", ["มองโกเลียกลาง"] = "xng", ["มองโกเลียคลาสสิก"] = "cmg", ["มอญ"] = "mnw", ["มอญ-เขมรดั้งเดิม"] = "mkh-pro", ["มอญกลาง"] = "mkh-mmn", ["มอญดั้งเดิม"] = "mkh-mnc-pro", ["มอญเก่า"] = "omx", ["มอญแบบไทย"] = "mnw-tha", ["มอลตา"] = "mt", ["มอแซนแดรอน"] = "mzn", ["มัล"] = "mlf", ["มัลดีฟส์"] = "dv", ["มัสบาเต"] = "msb", ["มากัซซาร์"] = "mak", ["มากินดาเนา"] = "mdh", ["มาซิโดเนีย"] = "mk", ["มายันดั้งเดิม"] = "myn-pro", ["มาราเนา"] = "mrw", ["มาร์วาร์"] = "mwr", ["มาร์แชลล์"] = "mh", ["มาลากาซี"] = "mg", ["มาลาโย-จามิกดั้งเดิม"] = "poz-mcm-pro", ["มาลาโย-ซุมบาวันดั้งเดิม"] = "poz-msa-pro", ["มาลาโย-พอลินีเชียนดั้งเดิม"] = "poz-pro", ["มาลาโย-พอลินีเชียนตอนกลาง-ตะวันออกดั้งเดิม"] = "poz-cet-pro", ["มาลาโย-พอลินีเชียนตะวันออกดั้งเดิม"] = "pqe-pro", ["มาวรี"] = "mi", ["มาเลย์อิกดั้งเดิม"] = "poz-mly-pro", ["มาเลเซีย"] = "ms", ["มาไซ"] = "mas", ["มิงเกรเลีย"] = "xmf", ["มิยาโกะ"] = "mvi", ["มีนังกาเบา"] = "min", ["มีรังดา"] = "mwl", ["มีโซ"] = "lus", ["มือรัสเซีย"] = "rsl", ["มืออินเดีย"] = "ins", ["มืออินโดนีเซีย"] = "inl", ["มืออเมริกัน"] = "ase", ["มือเนปาล"] = "nsp", ["มือไทย"] = "tsq", ["มุนดาดั้งเดิม"] = "mun-pro", ["มูซี"] = "mui", ["ม้ง-เมี่ยนดั้งเดิม"] = "hmx-pro", ["ม้งขาว"] = "mww", ["ม้งดั้งเดิม"] = "hmn-pro", ["ม้งเขียว"] = "hnj", ["ยอง"] = "yno", ["ยอลอ"] = "yol", ["ยะไข่"] = "rki", ["ยากัน"] = "yka", ["ยามานา"] = "yag", ["ยามี"] = "tao", ["ยาเอยามะ"] = "rys", ["ยิดดิช"] = "yi", ["ยุปปิก"] = "esu", ["ยูกริกดั้งเดิม"] = "urj-ugr-pro", ["ยูการิต"] = "uga", ["ยูราลิกดั้งเดิม"] = "urj-pro", ["ยูเครน"] = "uk", ["ยูโต-แอซเทกันดั้งเดิม"] = "azc-pro", ["รวันดา-รุนดี"] = "rw", ["รัสเซีย"] = "ru", ["ราชพังสี"] = "rjs", ["ราปานูอี"] = "rap", ["ราโรโตงา"] = "rar", ["ริฟ"] = "rif", ["รูซินแบบคาร์พาเทีย"] = "rue", ["รูซินแบบพันโนเนีย"] = "rsk", ["ร่วม"] = "mul", ["ลอมบาร์ด"] = "lmo", ["ละติน"] = "la", ["ลัก"] = "lbe", ["ลักเกีย"] = "lbc", ["ลักเซมเบิร์ก"] = "lb", ["ลัซ"] = "lzz", ["ลัตเกล"] = "ltg", ["ลัตเวีย"] = "lv", ["ลัมปุงกิกดั้งเดิม"] = "poz-lgx-pro", ["ลัมโบยา"] = "lmy", ["ลาดัก"] = "lbj", ["ลาดิน"] = "lld", ["ลาดิโน"] = "lad", ["ลาว"] = "lo", ["ลิงกาลา"] = "ln", ["ลิทัวเนีย"] = "lt", ["ลิทัวเนียเก่า"] = "olt", ["ลินดู"] = "klw", ["ลิมบู"] = "lif", ["ลิมเบิร์ก"] = "li", ["ลิววี"] = "olo", ["ลีกูเรีย"] = "lij", ["ลีสู่"] = "lis", ["ลีโวเนีย"] = "liv", ["ลึงงัม"] = "lyg", ["ลูกันดา"] = "lg", ["ลูอิชดั้งเดิม"] = "sit-luu-pro", ["วอลตา-คองโกดั้งเดิม"] = "nic-vco-pro", ["วอลตา-ไนเจอร์ดั้งเดิม"] = "alv-von-pro", ["วันดัล"] = "xvn", ["วัลลูน"] = "wa", ["วาราโอ"] = "wba", ["วาไร"] = "war", ["วินเนอเบโก"] = "win", ["วีลามอวิตแซ"] = "wym", ["สกอต"] = "sco", ["สมราย"] = "smu", ["สลาวอนิกคริสตจักรเก่า"] = "cu", ["สลาวิกดั้งเดิม"] = "sla-pro", ["สลาวิกตะวันออกเก่า"] = "orv", ["สวานา"] = "tn", ["สวาฮีลี"] = "sw", ["สวีเดน"] = "sv", ["สวีเดนเก่า"] = "gmq-osw", ["สะโอจ"] = "scq", ["สันถาลี"] = "sat", ["สันสกฤต"] = "sa", ["สำเร"] = "sxm", ["สิกขิม"] = "sip", ["สิงหล"] = "si", ["สินธ์"] = "sd", ["สิเลฏ"] = "syl", ["สุ่ย"] = "swi", ["สเปน"] = "es", ["สเปนเก่า"] = "osp", ["สโลวัก"] = "sk", ["สโลวักเก่า"] = "zlw-osk", ["สโลวินช์"] = "zlw-slv", ["สโลวีเนีย"] = "sl", ["หง่วน"] = "nuo", ["หมะ"] = "cma", ["หมิ่นดั้งเดิม"] = "zhx-min-pro", ["หมิ่นตอนกลาง"] = "czo", ["หมิ่นตะวันออก"] = "cdo", ["หมิ่นเหนือ"] = "mnp", ["หมิ่นใต้"] = "nan", ["หล่อยแอว๋"] = "luh", ["ห่อยซัน"] = "zhx-tai", ["อวัธ"] = "awa", ["ออสซีเซีย"] = "os", ["ออสโตรนีเซียนดั้งเดิม"] = "map-pro", ["ออสโตรเอเชียติกดั้งเดิม"] = "aav-pro", ["ออโรโม"] = "om", ["อะดีเกยา"] = "ady", ["อะตง"] = "aot", ["อะวาร์"] = "av", ["อะวาร์เก่า"] = "oav", ["อะแพชีตะวันตก"] = "apw", ["อักลัน"] = "akl", ["อังกฤษ"] = "en", ["อังกฤษกลาง"] = "enm", ["อังกฤษเก่า"] = "ang", ["อับคาเซีย"] = "ab", ["อัมฮารา"] = "am", ["อัมโมน"] = "sem-amm", ["อัลไตเหนือ"] = "atv", ["อัลไตใต้"] = "alt", ["อัสตูเรียส"] = "ast", ["อัสสัม"] = "as", ["อัสสัมกลาง"] = "inc-mas", ["อัสสัมช่วงต้น"] = "inc-oas", ["อากูตายา"] = "agn", ["อาข่า"] = "ahk", ["อาคัน"] = "ak", ["อาซี"] = "bno", ["อานาโตเลียนดั้งเดิม"] = "ine-ana-pro", ["อาบาซา"] = "abq", ["อาฟรีกานส์"] = "af", ["อาฟาร์"] = "aa", ["อามามิโอชิมะเหนือ"] = "ryn", ["อามามิโอชิมะใต้"] = "ams", ["อารากอน"] = "an", ["อารามายา"] = "arc", ["อาร์มีเนีย"] = "hy", ["อาร์มีเนียกลาง"] = "axm", ["อาร์มีเนียนดั้งเดิม"] = "hyx-pro", ["อาร์มีเนียเก่า"] = "xcl", ["อาลูตีก"] = "ems", ["อาหม"] = "aho", ["อาหรับ"] = "ar", ["อาหรับแบบซูดาน"] = "apd", ["อาหรับแบบตูนิเซีย"] = "aeb", ["อาหรับแบบทาจิกิสถาน"] = "abh", ["อาหรับแบบบาห์เรน"] = "abv", ["อาหรับแบบลิเบีย"] = "ayl", ["อาหรับแบบลิแวนต์ใต้"] = "ajp", ["อาหรับแบบอันดะลุส"] = "xaa", ["อาหรับแบบอิรัก"] = "acm", ["อาหรับแบบอียิปต์"] = "arz", ["อาหรับแบบอุซเบกิสถาน"] = "auz", ["อาหรับแบบฮิญาซ"] = "acw", ["อาหรับแบบเมโสโปเตเมียเหนือ"] = "ayp", ["อาหรับแบบเยเมน"] = "ayn", ["อาหรับแบบแอลจีเรีย"] = "arq", ["อาหรับแบบโมร็อกโก"] = "ary", ["อาหรับแบบโอมาน"] = "acx", ["อาหรับแบบไซปรัส"] = "acy", ["อาเจะฮ์"] = "ace", ["อาเซอร์ไบจาน"] = "az", ["อาเนตยูม"] = "aty", ["อาเบ"] = "aba", ["อิกโบ"] = "ig", ["อิงกุช"] = "inh", ["อิงเกรีย"] = "izh", ["อิตาลิกดั้งเดิม"] = "itc-pro", ["อิตาลี"] = "it", ["อินุกติตุต"] = "iu", ["อินุอิตดั้งเดิม"] = "esx-inu-pro", ["อินเทร์ลิงเกว"] = "ie", ["อินเทอร์ลิงกวา"] = "ia", ["อินโด-ยูโรเปียนดั้งเดิม"] = "ine-pro", ["อินโด-อารยันดั้งเดิม"] = "inc-pro", ["อินโด-อิเรเนียนดั้งเดิม"] = "iir-pro", ["อินโดนีเซีย"] = "id", ["อิสเตรีย"] = "ist", ["อิเรเนียนดั้งเดิม"] = "ira-pro", ["อีดาอัน"] = "dbj", ["อีทรัสคัน"] = "ett", ["อีบัน"] = "iba", ["อียิปต์"] = "egy", ["อีรานุน"] = "ill", ["อีสาน"] = "tts", ["อีโด"] = "io", ["อีโลกาโน"] = "ilo", ["อุซเบก"] = "uz", ["อุดมูร์ต"] = "udm", ["อุตซิตา"] = "oc", ["อุตซิตาเก่า"] = "pro", ["อุนเซอร์ด็อยทช์"] = "uln", ["อุมเบรีย"] = "xum", ["อุยกูร์"] = "ug", ["อุยกูร์เก่า"] = "oui", ["อูดี"] = "udi", ["อูรดู"] = "ur", ["อูรักลาโวยจ"] = "urk", ["อู๋"] = "wuu", ["อเวสตะ"] = "ae", ["อ่ายตน"] = "aio", ["ฮกเกี้ยน"] = "nan-hbl", ["ฮังการี"] = "hu", ["ฮังการีเก่า"] = "ohu", ["ฮาชอง"] = "haj", ["ฮานูโนโอ"] = "hnn", ["ฮาวาย"] = "haw", ["ฮินดี"] = "hi", ["ฮินดีเก่า"] = "inc-ohi", ["ฮินดีแบบฟีจี"] = "hif", ["ฮินดูสตานีแบบแคริบเบียน"] = "hns", ["ฮีบรู"] = "he", ["ฮีรีโมตู"] = "ho", ["ฮีลีไกโนน"] = "hil", ["ฮุนสริก"] = "hrx", ["ฮูร์เรีย"] = "xhu", ["เกชวนดั้งเดิม"] = "qwe-pro", ["เกชัว"] = "qu", ["เกชัวคลาสสิก"] = "qwc", ["เกรตอันดามันนีสดั้งเดิม"] = "qfa-adm-pro", ["เกอฮอ"] = "kpm", ["เกาหลี"] = "ko", ["เกาหลีกลาง"] = "okm", ["เกาหลีดั้งเดิม"] = "qfa-kor-pro", ["เกาหลีเก่า"] = "oko", ["เกาหลีใหม่ช่วงต้น"] = "ko-ear", ["เกโกโย"] = "ki", ["เขมร"] = "km", ["เขมรกลาง"] = "xhm", ["เขมรดั้งเดิม"] = "mkh-kmr-pro", ["เขมรเก่า"] = "okz", ["เขมรเหนือ"] = "kxm", ["เขิน"] = "kkh", ["เคลติกดั้งเดิม"] = "cel-pro", ["เควนยา"] = "qya", ["เคอร์ดิชดั้งเดิม"] = "ku-pro", ["เคิร์ดตอนกลาง"] = "ckb", ["เคิร์ดเหนือ"] = "kmr", ["เจวา"] = "ny", ["เจอร์แมนิกดั้งเดิม"] = "gem-pro", ["เจอร์แมนิกตะวันตกดั้งเดิม"] = "gmw-pro", ["เจียเม่า"] = "jio", ["เฉ่าเหมียว"] = "cov", ["เชจู"] = "jje", ["เชเชน"] = "ce", ["เชเยนน์"] = "chy", ["เชโรกี"] = "chr", ["เช็ก"] = "cs", ["เช็กเก่า"] = "zlw-ocs", ["เซบัวโน"] = "ceb", ["เซมิติกดั้งเดิม"] = "sem-pro", ["เซมิติกตะวันตกดั้งเดิม"] = "sem-wes-pro", ["เซอร์โบ-โครเอเชีย"] = "sh", ["เซอไม"] = "sea", ["เซียง"] = "hsn", ["เดนมาร์ก"] = "da", ["เดนมาร์กเก่า"] = "gmq-oda", ["เดาโร"] = "dwr", ["เตตุน"] = "tet", ["เตลูกู"] = "te", ["เตอร์กิกดั้งเดิม"] = "trk-pro", ["เตอร์กิกเก่า"] = "otk", ["เตอร์นาเต"] = "tft", ["เตอเมียร์"] = "tea", ["เติร์กเมน"] = "tk", ["เทาส์"] = "twf", ["เนปาล"] = "ne", ["เนวาร์"] = "new", ["เนวาร์กลาง"] = "nwx", ["เนวาร์คลาสสิก"] = "nwc", ["เนเกอร์ฮอลันดส์"] = "dcr", ["เบ"] = "onb", ["เบ-ไทดั้งเดิม"] = "qfa-bet-pro", ["เบงกอล"] = "bn", ["เบงกอลกลาง"] = "inc-mbn", ["เบงกอลเก่า"] = "inc-obn", ["เบดั้งเดิม"] = "qfa-onb-pro", ["เบนูเอ-คองโกดั้งเดิม"] = "nic-bco-pro", ["เบรอตง"] = "br", ["เบรอตงกลาง"] = "xbm", ["เบรอตงเก่า"] = "obt", ["เบลารุส"] = "be", ["เบอตาวี"] = "bew", ["เบอราวัน"] = "lod", ["เบอร์เบอร์ดั้งเดิม"] = "ber-pro", ["เบอร์เบอร์แบบตูนีเซีย"] = "sds", ["เปอร์มิกดั้งเดิม"] = "urj-prm-pro", ["เปอร์เซีย"] = "fa", ["เปอร์เซียกลาง"] = "pal", ["เปอร์เซียเก่า"] = "peo", ["เพลาท์ดิทช์"] = "pdt", ["เมวาร์"] = "mtr", ["เมี่ยน"] = "ium", ["เมี่ยนดั้งเดิม"] = "hmx-mie-pro", ["เยอรมัน"] = "de", ["เยอรมันตอนกลางตะวันออก"] = "gmw-ecg", ["เยอรมันต่ำ"] = "nds", ["เยอรมันต่ำกลาง"] = "gml", ["เยอรมันต่ำแบบเยอรมนี"] = "nds-de", ["เยอรมันสูงกลาง"] = "gmh", ["เยอรมันสูงเก่า"] = "goh", ["เยอรมันแบบซิพเซอร์"] = "gmw-zps", ["เยอรมันแบบว็อลกา"] = "gmw-vog", ["เยอรมันแบบอลามันเนีย"] = "gsw", ["เยอรมันแบบเพนซิลเวเนีย"] = "pdc", ["เรอหวั่ง"] = "raw", ["เลซกี"] = "lez", ["เลออน"] = "roa-leo", ["เลออนเก่า"] = "roa-ole", ["เลอเวือะตะวันตก"] = "lcp", ["เลอเวือะตะวันออก"] = "lwl", ["เวนดา"] = "ve", ["เวปส์"] = "vep", ["เวลส์"] = "cy", ["เวลส์กลาง"] = "wlm", ["เวลส์เก่า"] = "owl", ["เวอโร"] = "vro", ["เวียดนาม"] = "vi", ["เวียดนามกลาง"] = "mkh-mvi", ["เวียตติกดั้งเดิม"] = "mkh-vie-pro", ["เวเนโต"] = "vec", ["เศรปา"] = "xsr", ["เสฉวน"] = "zhx-sic", ["เหมื่อง"] = "mtq", ["เอชเตฮาร์ด"] = "esh", ["เอซเตรมาดูรา"] = "ext", ["เอมีเลีย"] = "egl", ["เอร์เซีย"] = "myv", ["เอสกิโมดั้งเดิม"] = "esx-esk-pro", ["เอสเปรันโต"] = "eo", ["เอสโตเนีย"] = "et", ["เอเว"] = "ee", ["เอเวนค์"] = "evn", ["เอเว็น"] = "eve", ["เอโดม"] = "xdm", ["เฮลเลนิกดั้งเดิม"] = "grk-pro", ["เฮาซา"] = "ha", ["เฮเรโร"] = "hz", ["แกลิกแบบสกอตแลนด์"] = "gd", ["แคชเมียร์"] = "ks", ["แคะ"] = "hak", ["แจพอนิกดั้งเดิม"] = "jpx-pro", ["แซกซันเก่า"] = "osx", ["แดลเมเชีย"] = "dlm", ["แต้จิ๋ว"] = "nan-tws", ["แบกเตรีย"] = "xbc", ["แบชเคียร์"] = "ba", ["แบนทอยด์ดั้งเดิม"] = "nic-bod-pro", ["แบนทูดั้งเดิม"] = "bnt-pro", ["แบล็กสปีช"] = "art-bsp", ["แพ็กเจ"] = "pkc", ["แฟโร"] = "fo", ["แมงซ์"] = "gv", ["แมนจู"] = "mnc", ["แสก"] = "skb", ["แอกแคด"] = "akk", ["แอตแลนติก-คองโกดั้งเดิม"] = "alv-pro", ["แอฟโฟรเอเชียติกดั้งเดิม"] = "afa-pro", ["แอลกองเคียนดั้งเดิม"] = "alg-pro", ["แอลจิกดั้งเดิม"] = "aql-pro", ["แอลฟ์ดาเลิน"] = "ovd", ["แอละแบมา"] = "akz", ["แอลเบเนีย"] = "sq", ["แอลเบเนียนดั้งเดิม"] = "sqj-pro", ["โกฟา"] = "gof", ["โคซา"] = "xh", ["โคณฑี"] = "gon", ["โคตาน"] = "kho", ["โคทาวา"] = "avk", ["โจว"] = "tsu", ["โชนา"] = "sn", ["โชร์"] = "cjs", ["โซตซิล"] = "tzo", ["โซมาลอยด์ดั้งเดิม"] = "cus-som-pro", ["โซมาลี"] = "so", ["โซ่ง"] = "soa", ["โตทา"] = "tcx", ["โตฟา"] = "kim", ["โทกูโนชิมะ"] = "tkn", ["โทแคเรียนดั้งเดิม"] = "ine-toc-pro", ["โทแคเรียนบี"] = "txb", ["โทแคเรียนเอ"] = "xto", ["โนเวียล"] = "nov", ["โบล"] = "bol", ["โบลีเนา"] = "smk", ["โบโด"] = "brx", ["โบโด-กาโรดั้งเดิม"] = "tbq-bdg-pro", ["โปรตุเกส"] = "pt", ["โปแลนด์"] = "pl", ["โปแลนด์เก่า"] = "zlw-opl", ["โภชปุระ"] = "bho", ["โมกิล"] = "mkj", ["โมอับ"] = "obm", ["โมเชโน"] = "mhn", ["โยกัด"] = "yog", ["โยนางูนิ"] = "yoi", ["โยรง"] = "yox", ["โยรูบอยด์ดั้งเดิม"] = "alv-yrd-pro", ["โยรูบา"] = "yo", ["โยรูบาดั้งเดิม"] = "alv-yor-pro", ["โรมัญญา"] = "rgn", ["โรมานช์"] = "rm", ["โรมานี"] = "rom", ["โรมาเนีย"] = "ro", ["โรฮีนจา"] = "rhg", ["โลจบาน"] = "jbo", ["โลโกโน"] = "arw", ["โลโล-เบอร์มีซดั้งเดิม"] = "tbq-lob-pro", ["โลโลอิชดั้งเดิม"] = "tbq-lol-pro", ["โวต"] = "vot", ["โวลอฟ"] = "wo", ["โวลาปุก"] = "vo", ["โอกินาวะ"] = "ryu", ["โอกิโนเอราบุ"] = "okn", ["โอจิบเว"] = "oj", ["โอซิง"] = "osi", ["โอริยา"] = "or", ["โอริยากลาง"] = "inc-mor", ["โอริยาเก่า"] = "inc-oor", ["โอเชียนิกดั้งเดิม"] = "poz-oce-pro", ["ไซลีเซีย"] = "szl", ["ไทขาว"] = "twh", ["ไทดั้งเดิม"] = "tai-pro", ["ไทดำ"] = "blt", ["ไทตะวันตกเฉียงใต้ดั้งเดิม"] = "tai-swe-pro", ["ไทย"] = "th", ["ไทลื้อ"] = "khb", ["ไทแดง"] = "tyr", ["ไทแมน"] = "tyj", ["ไทแหล่ง"] = "tjl", ["ไทใต้คง"] = "tdd", ["ไทใหญ่"] = "shn", ["ไนเจอร์-คองโกดั้งเดิม"] = "nic-pro", ["ไปวัน"] = "pwn", ["ไมถิลี"] = "mai", ["ไมนอส"] = "omn", ["ไมยา"] = "sks", ["ไมโครนีเซียนดั้งเดิม"] = "poz-mic-pro", ["ไว"] = "vai", ["ไหล"] = "lic", ["ไหลดั้งเดิม"] = "qfa-lic-pro", ["ไหหลำ"] = "hnm", ["ไอซ์แลนด์"] = "is", ["ไอนุ"] = "ain", ["ไอย์มารา"] = "ay", ["ไอริช"] = "ga", ["ไอริชกลาง"] = "mga", ["ไอริชเก่า"] = "sga", ["Ỹaroamë"] = "yro", } j4pa79rk9g4btwc8v0rt0jq4n4i3oal Laoso 0 215041 5723305 5693169 2026-05-20T07:02:39Z OctraBot 3198 /* ภาษาเอสเปรันโต */ เก็บกวาด 5723305 wikitext text/x-wiki == ภาษาเอสเปรันโต == {{wp|eo:}} [[ไฟล์:Laos in its region.svg|thumb|450px|'''Laoso''']] === การออกเสียง === {{eo-pr|a=Eo-Laoso.ogg;LL-Q143 (epo)-Lepticed7-Laoso.wav;LL-Q143 (epo)-Robin van der Vliet-Laoso.wav}} === คำวิสามานยนาม === {{eo-head}} # {{tcl|eo|ลาว|id=Q819}} === ดูเพิ่ม === {{compass|eo|n=Ĉinio|e=Vjetnamio|s=Kamboĝo|w=Birmo,Tajlando}} h0yrfy6j4g5p1v329l27bhzaegpiqel มอดูล:ar-nominals 828 243322 5723275 5634108 2026-05-20T04:50:57Z OctraBot 3198 5723275 Scribunto text/plain -- Author: Benwing, based on early version by CodeCat. --[[ FIXME: Nouns/adjectives to create to exemplify complex declensions: -- riḍan (رِضًا or رِضًى) --]] local m_utilities = require("Module:utilities") local m_links = require("Module:links") local ar_utilities = require("Module:ar-utilities") local lang = require("Module:languages").getByCode("ar") local u = require("Module:string/char") local rfind = mw.ustring.find local rsubn = mw.ustring.gsub local rmatch = mw.ustring.match local rsplit = mw.text.split -- This is used in place of a transliteration when no manual -- translit is specified and we're unable to automatically generate -- one (typically because some vowel diacritics are missing). local BOGUS_CHAR = u(0xFFFD) -- hamza variants local HAMZA = u(0x0621) -- hamza on the line (stand-alone hamza) = ء local HAMZA_ON_ALIF = u(0x0623) local HAMZA_ON_W = u(0x0624) local HAMZA_UNDER_ALIF = u(0x0625) local HAMZA_ON_Y = u(0x0626) local HAMZA_ANY = "[" .. HAMZA .. HAMZA_ON_ALIF .. HAMZA_UNDER_ALIF .. HAMZA_ON_W .. HAMZA_ON_Y .. "]" local HAMZA_PH = u(0xFFF0) -- hamza placeholder -- various letters local ALIF = u(0x0627) -- ʾalif = ا local AMAQ = u(0x0649) -- ʾalif maqṣūra = ى local AMAD = u(0x0622) -- ʾalif madda = آ local TAM = u(0x0629) -- tāʾ marbūṭa = ة local T = u(0x062A) -- tāʾ = ت local HYPHEN = u(0x0640) local N = u(0x0646) -- nūn = ن local W = u(0x0648) -- wāw = و local Y = u(0x064A) -- yā = ي -- diacritics local A = u(0x064E) -- fatḥa local AN = u(0x064B) -- fatḥatān (fatḥa tanwīn) local U = u(0x064F) -- ḍamma local UN = u(0x064C) -- ḍammatān (ḍamma tanwīn) local I = u(0x0650) -- kasra local IN = u(0x064D) -- kasratān (kasra tanwīn) local SK = u(0x0652) -- sukūn = no vowel local SH = u(0x0651) -- šadda = gemination of consonants local DAGGER_ALIF = u(0x0670) local DIACRITIC_ANY_BUT_SH = "[" .. A .. I .. U .. AN .. IN .. UN .. SK .. DAGGER_ALIF .. "]" -- common combinations local NA = N .. A local NI = N .. I local AH = A .. TAM local AT = A .. T local AA = A .. ALIF local AAMAQ = A .. AMAQ local AAH = AA .. TAM local AAT = AA .. T local II = I .. Y local IIN = II .. N local IINA = II .. NA local IY = II local UU = U .. W local UUN = UU .. N local UUNA = UU .. NA local AY = A .. Y local AW = A .. W local AYSK = AY .. SK local AWSK = AW .. SK local AAN = AA .. N local AANI = AA .. NI local AYN = AYSK .. N local AYNI = AYSK .. NI local AWN = AWSK .. N local AWNA = AWSK .. NA local AYNA = AYSK .. NA local AYAAT = AY .. AAT local UNU = "[" .. UN .. U .. "]" -- optional diacritics/letters local AOPT = A .. "?" local AOPTA = A .. "?" .. ALIF local IOPT = I .. "?" local UOPT = U .. "?" local UNOPT = UN .. "?" local UNUOPT = UNU .. "?" local SKOPT = SK .. "?" -- lists of consonants -- exclude tāʾ marbūṭa because we don't want it treated as a consonant -- in patterns like أَفْعَل local consonants_needing_vowels_no_tam = "بتثجحخدذرزسشصضطظعغفقكلمنهپچڤگڨڧأإؤئء" -- consonants on the right side; includes alif madda local rconsonants_no_tam = consonants_needing_vowels_no_tam .. "ويآ" -- consonants on the left side; does not include alif madda local lconsonants_no_tam = consonants_needing_vowels_no_tam .. "وي" local CONS = "[" .. lconsonants_no_tam .. "]" local CONSPAR = "([" .. lconsonants_no_tam .. "])" local LRM = u(0x200E) --left-to-right mark -- First syllable or so of elative/color-defect adjective local ELCD_START = "^" .. HAMZA_ON_ALIF .. AOPT .. CONSPAR local export = {} -------------------- -- Utility functions -------------------- function ine(x) -- If Not Empty if x == nil then return nil elseif rfind(x, '^".*"$') then local ret = rmatch(x, '^"(.*)"$') return ret elseif rfind(x, "^'.*'$") then local ret = rmatch(x, "^'(.*)'$") return ret elseif x == "" then return nil else return x end end -- Compare two items, recursively comparing arrays. -- FIXME, doesn't work for tables that aren't arrays. function equals(x, y) if type(x) == "table" and type(y) == "table" then if #x ~= #y then return false end for key, value in ipairs(x) do if not equals(value, y[key]) then return false end end return true end return x == y end -- true if array contains item function contains(tab, item) for _, value in pairs(tab) do if equals(value, item) then return true end end return false end -- append to array if element not already present function insert_if_not(tab, item) if not contains(tab, item) then table.insert(tab, item) end end -- version of rsubn() that discards all but the first return value function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- version of rsub() that asserts that a match occurred function assert_rsub(term, foo, bar) local retval, numsub = rsubn(term, foo, bar) assert(numsub > 0) return retval end function make_link(arabic) --return m_links.full_link(nil, arabic, lang, nil, "term", nil, {tr = "-"}, false) return m_links.full_link({lang = lang, alt = arabic}, "term") end function track(page) require("Module:debug").track("ar-nominals/" .. page) return true end ------------------------------------- -- Functions for building inflections ------------------------------------- -- Functions that do the actual inflecting by creating the forms of a basic term. local inflections = {} local max_mods = 9 -- maximum number of modifiers local mod_list = {"mod"} -- list of "mod", "mod2", "mod3", ... for i=2,max_mods do table.insert(mod_list, "mod" .. i) end -- Create and return the 'data' structure that will hold all of the -- generated declensional forms, as well as other ancillary information -- such as the possible numbers, genders and cases the the actual numbers -- and states to store (in 'data.numbers' and 'data.states' respectively). function init_data() -- FORMS contains a table of forms for each inflectional category, -- e.g. "nom_sg_ind" for nouns or "nom_m_sg_ind" for adjectives. The value -- of an entry is an array of alternatives (e.g. different plurals), where -- each alternative is either a string of the form "ARABIC" or -- "ARABIC/TRANSLIT", or an array of such strings (this is used for -- alternative spellings involving different hamza seats, -- e.g. مُبْتَدَؤُون or مُبْتَدَأُون). Alternative hamza spellings are separated -- in display by an "inner separator" (/), while alternatives on -- the level of different plurals are separated by an "outer separator" (;). return {forms = {}, title = nil, categories = {}, allgenders = {"m", "f"}, allstates = {"ind", "def", "con"}, allnumbers = {"sg", "du", "pl"}, states = {}, -- initialized later numbers = {}, -- initialized later engnumbers = {sg="เอกพจน์", du="ทวิพจน์", pl="พหูพจน์", coll="คำสมุหนาม", sing="คำเอกนาม", pauc="ตัวบอกความน้อย"}, engnumberscap = {sg="เอกพจน์", du="ทวิพจน์", pl="พหูพจน์", coll="คำสมุหนาม", sing="คำเอกนาม", pauc="ตัวบอกความน้อย (3-10)"}, allcases = {"nom", "acc", "gen", "inf"}, allcases_with_lemma = {"nom", "acc", "gen", "inf", "lemma"}, -- index into endings array indicating correct ending for given -- combination of state and case statecases = { ind = {nom = 1, acc = 2, gen = 3, inf = 10, lemma = 13}, def = {nom = 4, acc = 5, gen = 6, inf = 11, lemma = 14}, -- used for a definite adjective modifying a construct-state noun defcon = {nom = 4, acc = 5, gen = 6, inf = 11, lemma = 14}, con = {nom = 7, acc = 8, gen = 9, inf = 12, lemma = 15}, }, } end -- Initialize and return ARGS, ORIGARGS and DATA (see init_data()). -- ARGS is a table of user-supplied arguments, massaged from the original -- arguments by converting empty-string arguments to nil and appending -- translit arguments to their base arguments with a separating slash. -- ORIGARGS is the original table of arguments. function init(origargs) -- Massage arguments by converting empty arguments to nil, and -- "" or '' arguments to empty. local args = {} for k, v in pairs(origargs) do args[k] = ine(v) end -- Further massage arguments by appending translit arguments to the -- corresponding base arguments, with a slash separator, as is expected -- in the rest of the code. -- -- FIXME: We should consider separating translit and base arguments by the -- separators ; , | (used in overrides; see handle_lemma_and_overrides()) -- and matching up individual parts, to allow separate translit arguments -- to be specified for overrides. But maybe not; the point of allowing -- separate translit arguments is for compatibility with headword -- templates such as "ar-noun" and "ar-adj", and those templates don't -- handle override arguments. local function dotr(arg, argtr) if not args[arg] then error("Argument '" .. argtr .."' specified but not corresponding base argument '" .. arg .. "'") end args[arg] = args[arg] .. "/" .. args[argtr] end -- By convention, corresponding to arg 1 is tr; corresponding to -- head2, head3, ... is tr2, tr3, ...; corresponding to -- modhead2, modhead3, ... is modtr2, modtr3, ...; corresponding to -- modNhead2, modNhead3, ... is modNtr2, modNtr3, ..; corresponding to -- all other arguments FOO, FOO2, ... is FOOtr, FOO2tr, ... for k, v in pairs(args) do if k == "tr" then dotr(1, "tr") elseif rfind(k, "tr[0-9]+$") then dotr(assert_rsub(k, "tr([0-9]+)$", "head%1"), k) elseif rfind(k, "tr$") then dotr(assert_rsub(k, "tr$", ""), k) end end -- Construct data. local data = init_data() return args, origargs, data end -- Parse the user-specified state spec and other related arguments. The -- user can specify, using idafaN=, how modifiers are related to previous -- words. The user can also manually specify which states are to appear; -- whether to omit the definite article in the definite state; and -- how/whether to restrict modifiers to a particular state, case or number. -- Normally the modN_* parameters and basestate= do not need to be set -- directly; instead, use idafaN=. It may be necessary to explicitly -- specify state= in the presence of proper nouns or definite-only -- adjectival expressions. NOTE: At the time this function is called, -- data.numbers has not yet been initialized. function parse_state_etc_spec(data, args) local function check(arg, dataval, allvalues) if args[arg] then if not contains(allvalues, args[arg]) then error("For " .. arg .. "=, value '" .. args[arg] .. "' should be one of " .. table.concat(allvalues, ", ")) end data[dataval] = args[arg] end end local function check_boolean(arg, dataval) check(arg, dataval, {"yes", "no"}) if data[dataval] == "yes" then data[dataval] = true elseif data[dataval] == "no" then data[dataval] = false end end -- Make sure no holes in mod values for i=1,(#mod_list)-1 do if args[mod_list[i+1]] and not args[mod_list[i]] then error("Hole in modifier arguments -- " .. mod_list[i+1] .. " present but not " .. mod_list[i]) end end -- FIXME! Remove this once we're sure there are no instances of mod2 -- that haven't been converted to modhead2. if args["mod2"] then track("mod2") end -- Set default value; may be overridden e.g. by arg["state"] or -- by idafaN=. data.states = data.allstates -- List of pairs of idafaN/modN parameters local idafa_mod_list = {{"idafa", "mod"}} for i=2,max_mods do table.insert(idafa_mod_list, {"idafa" .. i, "mod" .. i}) end -- True if the value of an |idafa= param is a valid adjectival modifier -- value. local function valid_adjectival_idafaval(idafaval) return idafaval == "adj" or idafaval == "adj-base" or idafaval == "adj-mod" or rfind(idafaval, "^adj%-mod[0-9]+$") end -- Extract the referent (base or modifier) of an adjectival |idafa= param. -- Assumes the value is valid. local function adjectival_idafaval_referent(idafaval) if idafaval == "adj" then return "base" end return assert_rsub(idafaval, "^adj%-", "") end -- Convert a base/mod spec to an index: 0=base, 1=mod, 2=mod2, etc. local function basemod_to_index(basemod) if basemod == "base" then return 0 end if basemod == "mod" then return 1 end return tonumber(assert_rsub(basemod, "^mod", "")) end -- Recognize idafa spec and handle it. -- We do the following: -- (1) Check that if idafaN= is given, then modN= is also given. -- (2) Check that adjectival modifiers aren't followed by idafa modifiers. -- (3) Check that adjectival modifiers are modifying the base or an -- ʾidāfa modifier, not another adjectival modifier. -- (4) Support idafa values "adj-base", "adj-mod", "adj-mod2", "adj" -- (="adj-base") etc. and check that we're referring to an earlier -- word. -- (5) For ʾidāfa modifiers, set basestate=con, set modN_case=gen, -- set modN_idafa=true, and set modN_number to the number specified -- in the parameter value (e.g. 'sg' or 'def-pl'); and if the -- parameter value specifies a state (e.g. 'def' or 'ind-du'), -- set modN_state= to this value, and if this is the last ʾidāfa -- modifier, also set state= to this value; if this is not the last -- ʾidāfa modifier, set modN_state=con and disallow a state to be -- specified in the parameter value. -- (6) For adjectival modifiers of the base, do nothing. -- (7) For adjectival modifiers of ʾidāfa modifiers, set modN_case=gen; -- set modN_idafa=false; and set modN_number=, modN_numgen= and -- modN_state= to match the values of the idafa modifier. -- error checking and find last ʾidāfa modifier local last_is_idafa = true local last_idafa_mod = "base" for _, idafa_mod in ipairs(idafa_mod_list) do local idafaparam = idafa_mod[1] local mod = idafa_mod[2] local idafaval = args[idafaparam] if idafaval then local paramval = idafaparam .. "=" .. idafaval if not args[mod] then error("'" .. idafaparam .. "' parameter without corresponding '" .. mod .. "' parameter") end if not valid_adjectival_idafaval(idafaval) then -- We're a construct (ʾidāfa) modifier if not last_is_idafa then error("ʾidāfa modifier " .. paramval .. " follows adjectival modifier") end last_idafa_mod = mod else last_is_idafa = false local adjref = adjectival_idafaval_referent(idafaval) if adjref ~= "base" then if basemod_to_index(adjref) >= basemod_to_index(mod) then error(paramval .. " can only refer to an earlier element") end local idafaref = assert_rsub(adjref, "^mod", "idafa") if not args[idafaref] then error(paramval .. " cannot refer to a missing modifier") elseif valid_adjectival_idafaval(args[idafaref]) then error(paramval .. " cannot refer to an adjectival modifier") end end end end end -- Now go through and set all the modN_ data values appropriately. for _, idafa_mod in ipairs(idafa_mod_list) do local idafaparam = idafa_mod[1] local mod = idafa_mod[2] local idafaval = args[idafaparam] if idafaval then local paramval = idafaparam .. "=" .. idafaval local bad_idafa = true if idafaval == "yes" then idafaval = "sg" end if idafaval == "ind-def" or contains(data.allstates, idafaval) then idafaval = idafaval .. "-sg" end if not idafaval then bad_idafa = false elseif valid_adjectival_idafaval(idafaval) then local adjref = adjectival_idafaval_referent(idafaval) if adjref ~= "base" then data[mod .. "_case"] = "gen" data[mod .. "_state"] = data[adjref .. "_state"] -- if agreement is with ind-def, make it def if data[mod .. "_state"] == "ind-def" then data[mod .. "_state"] = "def" end data[mod .. "_number"] = data[adjref .. "_number"] data[mod .. "_numgen"] = data[adjref .. "_numgen"] data[mod .. "_idafa"] = false end bad_idafa = false elseif contains(data.allnumbers, idafaval) then data.basestate = "con" data[mod .. "_case"] = "gen" data[mod .. "_number"] = idafaval data[mod .. "_idafa"] = true if mod ~= last_idafa_mod then data[mod .. "_state"] = "con" end bad_idafa = false elseif rfind(idafaval, "%-") then local state_num = rsplit(idafaval, "%-") -- Support ind-def as a possible value. We set modstate to -- ind-def, which will signal definite agreement with adjectival -- modifiers; then later on we change the value to ind. if #state_num == 3 and state_num[1] == "ind" and state_num[2] == "def" then state_num[1] = "ind-def" state_num[2] = state_num[3] table.remove(state_num) end if #state_num == 2 then local state = state_num[1] local num = state_num[2] if (state == "ind-def" or contains(data.allstates, state)) and contains(data.allnumbers, num) then if mod == last_idafa_mod then if state == "ind-def" then data.states = {"def"} else data.states = {state} end else error(paramval .. " cannot specify a state because it is not the last ʾidāfa modifier") end data.basestate = "con" data[mod .. "_case"] = "gen" data[mod .. "_state"] = state data[mod .. "_number"] = num data[mod .. "_idafa"] = true bad_idafa = false end end end if bad_idafa then error(paramval .. " should be one of yes, def, sg, def-sg, adj, adj-base, adj-mod, adj-mod2 or similar") end end end if args["state"] == "ind-def" then data.states = {"def"} data.basestate = "ind" elseif args["state"] then data.states = rsplit(args["state"], ",") for _, state in ipairs(data.states) do if not contains(data.allstates, state) then error("For state=, value '" .. state .. "' should be one of " .. table.concat(data.allstates, ", ")) end end end -- Now process explicit settings, so that they can override the -- settings based on idafaN=. check("basestate", "basestate", data.allstates) check_boolean("noirreg", "noirreg") check_boolean("omitarticle", "omitarticle") data.prefix = args.prefix for _, mod in ipairs(mod_list) do check(mod .. "state", mod .. "_state", data.allstates) check(mod .. "case", mod .. "_case", data.allcases) check(mod .. "number", mod .. "_number", data.allnumgens) check(mod .. "numgen", mod .. "_numgen", data.allnumgens) check_boolean(mod .. "idafa", mod .. "_idafa") check_boolean(mod .. "omitarticle", mod .. "_omitarticle") data[mod .. "_prefix"] = args[mod .. "prefix"] end -- Make sure modN_numgen is initialized, to modN_number if necessary. -- This simplifies logic in certain places, e.g. call_inflections(). -- Also convert ind-def to ind. for _, mod in ipairs(mod_list) do data[mod .. "_numgen"] = data[mod .. "_numgen"] or data[mod .. "_number"] if data[mod .. "_state"] == "ind-def" then data[mod.. "_state"] = "ind" end end end -- Parse the user-specified number spec. The user can manually specify which -- numbers are to appear. Return true if |number= was specified. function parse_number_spec(data, args) if args["number"] then data.numbers = rsplit(args["number"], ",") for _, num in ipairs(data.numbers) do if not contains(data.allnumbers, num) then error("For number=, value '" .. num .. "' should be one of " .. table.concat(data.allnumbers, ", ")) end end return true else data.numbers = data.allnumbers return false end end -- Determine which numbers will appear using the logic for nouns. -- See comment just below. function determine_noun_numbers(data, args, pls) -- Can manually specify which numbers are to appear, and exactly those -- numbers will appear. Otherwise, if any plurals given, duals and plurals -- appear; else, only singular (on the assumption that the word is a proper -- noun or abstract noun that exists only in the singular); however, -- singular won't appear if "-" given for singular, and similarly for dual. if not parse_number_spec(data, args) then data.numbers = {} local sgarg1 = args[1] local duarg1 = args["d"] if sgarg1 ~= "-" then table.insert(data.numbers, "sg") end if #pls["base"] > 0 then -- Dual appears if either: explicit dual stem (not -) is given, or -- default dual is used and explicit singular stem (not -) is given. if (duarg1 and duarg1 ~= "-") or (not duarg1 and sgarg1 ~= "-") then table.insert(data.numbers, "du") end table.insert(data.numbers, "pl") elseif duarg1 and duarg1 ~= "-" then -- If explicit dual but no plural given, include it. Useful for -- dual tantum words. table.insert(data.numbers, "du") end end end -- For stem STEM, convert to stem-and-type format and insert stem and type -- into RESULTS, checking to make sure it's not already there. SGS is the -- list of singular items to base derived forms off of (masculine or feminine -- as appropriate), an array of length-two arrays of {COMBINED_STEM, TYPE} as -- returned by stem_and_type(); ISFEM is true if this is feminine gender; -- NUM is "sg", "du" or "pl". POS is the part of speech, generally "noun" or -- "adjective". function insert_stems(stem, results, sgs, isfem, num, pos) if stem == "-" then return end for _, sg in ipairs(sgs) do local combined_stem, ty = export.stem_and_type(stem, sg[1], sg[2], isfem, num, pos) insert_if_not(results, {combined_stem, ty}) end end -- Handle manually specified overrides of individual forms. Separate -- outer-level alternants with ; or , or the Arabic equivalents; separate -- inner-level alternants with | (we can't use / because it's already in -- use separating Arabic from translit). -- -- Also determine lemma and allow it to be overridden. -- Also allow POS (part of speech) to be overridden. function handle_lemma_and_overrides(data, args) local function handle_override(arg) if args[arg] then local ovval = {} local alts1 = rsplit(args[arg], "[;,؛،]") for _, alt1 in ipairs(alts1) do local alts2 = rsplit(alt1, "|") table.insert(ovval, alts2) end data.forms[arg] = ovval end end local function do_overrides(mod) for _, numgen in ipairs(data.allnumgens) do for _, state in ipairs(data.allstates) do for _, case in ipairs(data.allcases) do local arg = mod .. case .. "_" .. numgen .. "_" .. state handle_override(arg) if args[arg] and not data.noirreg then insert_cat(data, mod, numgen, "Arabic NOUNs with irregular SINGULAR", "SINGULAR of irregular NOUN") end end end end end do_overrides("") for _, mod in ipairs(mod_list) do do_overrides(mod .. "_") end local function get_lemma(mod) for _, numgen in ipairs(data.numgens()) do for _, state in ipairs(data.states) do local arg = mod .. "lemma_" .. numgen .. "_" .. state if data.forms[arg] and #data.forms[arg] > 0 then return data.forms[arg] end end end return nil end data.forms["lemma"] = get_lemma("") for _, mod in ipairs(mod_list) do data.forms[mod .. "_lemma"] = get_lemma(mod .. "_") end handle_override("lemma") for _, mod in ipairs(mod_list) do handle_override(mod .. "_lemma") end end -- Return the part of speech based on the part of speech contained in -- data.pos and MOD (either "", "mod_", "mod2_", etc., same as in -- do_gender_number_1()). If we're a modifier, don't use data.pos but -- instead choose based on whether modifier is adjectival or nominal -- (ʾiḍāfa). function get_pos(data, mod) local ismod = mod ~= "" if not ismod then return data.pos elseif data[mod .. "idafa"] then return "คำนาม" else return "คำคุณศัพท์" end end -- Find the stems associated with a particular gender/number combination. -- ARGS is the set of all arguments. ARGPREFS is an array of argument prefixes -- (e.g. "f" for the actual arguments "f", "f2", ..., for the feminine -- singular; we allow more than one to handle "cpl"). SGS is a -- "stem-type list" (see do_gender_number()), and is the list of stems to -- base derived forms off of (masculine or feminine as appropriate), an array -- of length-two arrays of {COMBINED_STEM, TYPE} as returned by -- stem_and_type(). DEFAULT, ISFEM and NUM are as in do_gender_number(). -- MOD is either "", "mod_", "mod2_", etc. depending if we're working on a -- base or modifier argument (in the latter case, basically if the argument -- begins with "mod"). function do_gender_number_1(data, args, argprefs, sgs, default, isfem, num, mod) local results = {} local function handle_stem(stem) insert_stems(stem, results, sgs, isfem, num, get_pos(data, mod)) end -- If no arguments specified, use the default instead. need_default = true for _, argpref in ipairs(argprefs) do if args[argpref] then need_default = false break end end if need_default then if not default then return results end handle_stem(default) return results end -- For explicitly specified arguments, make sure there's at least one -- stem to generate off of; otherwise specifying e.g. 'sing=- pauc=فُلَان' -- won't override paucal. if #sgs == 0 then sgs = {{"", ""}} end for _, argpref in ipairs(argprefs) do if args[argpref] then handle_stem(args[argpref]) end local i = 2 while args[argpref .. i] do handle_stem(args[argpref .. i]) i = i + 1 end end return results end -- For a given gender/number combination, parse and return the full set -- of stems for both base and modifier. The return value is a -- "stem specification", i.e. table with a "base" key for the base, a -- "mod" key for the first modifier (see below), a "mod2" key for the -- second modifier, etc. listing all stems for both the base and modifier(s). -- The value of each key is a "stem-type list", i.e. an array of stem-type -- pairs, where each element is a size-two array of {COMBINED_STEM, STEM_TYPE}. -- COMBINED_STEM is a stem with attached transliteration in the form -- STEM/TRANSLIT (where the transliteration is either manually specified in -- the stem argument, e.g. 'pl=لُورْدَات/lordāt', or auto-transliterated from -- the Arabic, with BOGUS_CHAR substituting for the transliteration if -- auto-translit fails). STEM_TYPE is the declension of the stem, either -- manually specified, e.g. 'بَبَّغَاء:di' for manually-specified diptote, or -- auto-detected (see stem_and_type() and detect_type()). -- -- DATA and ARGS are as in init(). ARGPREFS is an array of the prefixes for -- the argument(s) specifying the stem (and optional translit and declension -- type). For a given ARGPREF, we check ARGPREF, ARGPREF2, ARGPREF3, ... in -- turn for the base, and modARGPREF, modARGPREF2, modARGPREF3, ... in turn -- for the first modifier, and mod2ARGPREF, mod2ARGPREF2, mod2ARGPREF3, ... -- for the second modifier, etc. SGS is a stem specification (see above), -- giving the stems that are used to base derived forms off of (e.g. if a stem -- type "smp" appears in place of a stem, the sound masculine plural of the -- stems in SGS will be derived). DEFAULT is a single stem (i.e. a string) that -- is used when no stems were explicitly given by the user (typically either -- "f", "m", "d" or "p"), or nil for no default. ISFEM is true if we're -- accumulating stems for a feminine number/gender category, and NUM is the -- number (expected to be "sg", "du" or "pl") of the number/gender category -- we're accumulating stems for. -- -- About bases and modifiers: Note that e.g. in the noun phrase يَوْم الاِثْنَيْن -- the head noun يَوْم is the base and the noun الاِثْنَيْن is the modifier. -- In a noun phrase like البَحْر الأَبْيَض المُتَوَسِّط, there are two modifiers. -- Note that modifiers come in two varieties, adjectival modifiers and -- construct (ʾidāfa) modifiers. The first above noun phrase is an example -- of a noun phrase with a construct modifier, where the base is fixed in -- the construct state and the modifier is fixed in number and case -- (which is always genitive) and possibly in state. The second above noun -- phrase is an example of a noun phrase with two adjectival modifiers. -- A construct modifier is generally a noun, whereas an adjectival modifier -- is an adjective that usually agrees in state, number and case with the -- base noun. (Note that in the case of multiple modifiers, it is possible -- for e.g. the second modifier to be an adjectival modifier that agrees -- with the first, construct, modifier, in which case its case will be fixed -- to genitive, its number will be fixed to the same number as the first -- modifier and its state will vary or not depending on whether the first -- modifier's state varies. It is not possible in general to distinguish -- adjectival and construct modifiers by looking at the values of -- modN_state, modN_case or modN_number, since e.g. a third modifier could -- have all of them specified and be either kind. Thus we have modN_idafa, -- which is true for a construct modifier, false otherwise.) function do_gender_number(data, args, argprefs, sgs, default, isfem, num) local results = do_gender_number_1(data, args, argprefs, sgs["base"], default, isfem, num, "") basemodtable = {base=results} for _, mod in ipairs(mod_list) do local modn_argprefs = {} for _, argpref in ipairs(argprefs) do table.insert(modn_argprefs, mod .. argpref) end local modn_results = do_gender_number_1(data, args, modn_argprefs, sgs[mod] or {}, default, isfem, num, mod .. "_") basemodtable[mod] = modn_results end return basemodtable end -- Generate inflections for the given combined stem and type, for MOD -- (either "" if we're working on the base or "mod_", "mod2_", etc. if we're -- working on a modifier) and NUMGEN (number or number-gender combination, -- of the sort that forms part of the keys in DATA.FORMS). function call_inflection(combined_stem, ty, data, mod, numgen) if ty == "-" then return end if not inflections[ty] then error("Unknown inflection type '" .. ty .. "'") end local ar, tr = split_arabic_tr(combined_stem) inflections[ty](ar, tr, data, mod, numgen) end -- Generate inflections for the stems of a given number/gender combination -- and for either the base or the modifier. STEMTYPES is a stem-type list -- (see do_gender_number()), listing all the stems and corresponding -- declension types. MOD is either "", "mod_", "mod2_", etc. depending on -- whether we're working on the base or a modifier. NUMGEN is the number or -- number-gender combination we're working on, of the sort that forms part -- of the keys in DATA.FORMS, e.g. "sg" or "m_sg". function call_inflections(stemtypes, data, mod, numgen) local mod_with_modnumgen = mod ~= "" and data[mod .. "numgen"] -- If modN_numgen= is given, do nothing if NUMGEN isn't the same if mod_with_modnumgen and data[mod .. "numgen"] ~= numgen then return end -- always call inflection() if mod_with_modnumgen since it may affect -- other numbers (cf. يَوْم الاِثْنَيْن) if mod_with_modnumgen or contains(data.numbers, rsub(numgen, "^.*_", "")) then for _, stemtype in ipairs(stemtypes) do call_inflection(stemtype[1], stemtype[2], data, mod, numgen) end end end -- Generate the entire set of inflections for a noun or adjective. -- Also handle any manually-specified part of speech and any manual -- inflection overrides. The value of INFLECTIONS is an array of stem -- specifications, one per number, where each element is a size-two -- array of a stem specification (containing the set of stems and -- corresponding declension types for the base and any modifiers; -- see do_gender_number()) and a NUMGEN string, i.e. a string identifying -- the number or number/gender in question (e.g. "sg", "du", "pl", -- "m_sg", "f_pl", etc.). function do_inflections_and_overrides(data, args, inflections) -- do this before generating inflections so POS change is reflected in -- categories if args["pos"] then data.pos = args["pos"] end for _, inflection in ipairs(inflections) do call_inflections(inflection[1]["base"] or {}, data, "", inflection[2]) for _, mod in ipairs(mod_list) do call_inflections(inflection[1][mod] or {}, data, mod .. "_", inflection[2]) end end handle_lemma_and_overrides(data, args) end -- Helper function for get_heads(). Parses the stems for either the -- base or the modifier (see do_gender_number()). ARG1 is the argument -- for the first stem and ARGN is the prefix of the arguments for the -- remaining stems. For example, for the singular base, ARG1=1 and -- ARGN="head"; for the first singular modifier, ARG1="mod" and -- ARGN="modhead"; for the plural base, ARG1=ARGN="pl". The arguments -- other than the first are numbered 2, 3, ..., which is appended to -- ARGN. MOD is either "", "mod_", "mod2_", etc. depending if we're -- working on a base or modifier argument. The returned value is an -- array of stems, where each element is a size-two array of -- {COMBINED_STEM, STEM_TYPE}. See do_gender_number(). function get_heads_1(data, args, arg1, argn, mod) if not args[arg1] then return {} end local heads if args[arg1] == "-" then heads = {{"", "-"}} else heads = {} insert_stems(args[arg1], heads, {{args[arg1], ""}}, false, "sg", get_pos(data, mod)) end local i = 2 while args[argn .. i] do local arg = args[argn .. i] insert_stems(arg, heads, {{arg, ""}}, false, "sg", get_pos(data, mod)) i = i + 1 end return heads end -- Very similar to do_gender_number(), and returns the same type of -- structure, but works specifically for the stems of the head (the -- most basic gender/number combiation, e.g. singular for nouns, -- masculine singular for adjectives and gendered nouns, collective -- for collective nouns, etc.), including both base and modifier. -- See do_gender_number(). Note that the actual return value is -- two items, the first of which is the same type of structure -- returned by do_gender_number() and the second of which is a boolean -- indicating whether we were called from within a template documentation -- page (in which case no user-specified arguments exist and we -- substitute sample ones). The reason for this boolean is to indicate -- whether sample arguments need to be substituted for other numbers -- as well. function get_heads(data, args, headtype) if not args[1] and mw.title.getCurrentTitle().nsText == "แม่แบบ" then return {base={{"{{{1}}}", "tri"}}}, true end if not args[1] then error("Parameter 1 (" .. headtype .. " stem) may not be empty.") end local base = get_heads_1(data, args, 1, "head", "") basemodtable = {base=base} for _, mod in ipairs(mod_list) do local modn = get_heads_1(data, args, mod, mod .. "head", mod .. "_") basemodtable[mod] = modn end return basemodtable, false end -- The main entry point for noun tables. function export.show_noun(frame) local args, origargs, data = init(frame:getParent().args) data.pos = "คำนาม" data.numgens = function() return data.numbers end data.allnumgens = data.allnumbers local sgs, is_template = get_heads(data, args, "singular") local pls = is_template and {base={{"{{{pl}}}", "tri"}}} or do_gender_number(data, args, {"pl", "cpl"}, sgs, nil, false, "pl") -- always do dual so cases like يَوْم الاِثْنَيْن work -- a singular with -- a dual modifier, where data.number refers only the singular -- but we need to go ahead and compute the dual so it parses the -- "modd" modifier dual argument. When the modifier dual argument -- is parsed, it will store the resulting dual declension for اِثْنَيْن -- in the modifier slot for all numbers, including specifically -- the singular. local dus = do_gender_number(data, args, {"d"}, sgs, "d", false, "du") parse_state_etc_spec(data, args) determine_noun_numbers(data, args, pls) do_inflections_and_overrides(data, args, {{sgs, "sg"}, {dus, "du"}, {pls, "pl"}}) -- Make the table return make_noun_table(data) end function any_feminine(data, stem_spec) for basemod, stemtypelist in pairs(stem_spec) do -- Only check modifiers if modN_numgen= not given. If not given, the -- modifier needs to be declined for all numgens; else only for the -- given numgen, which should be explicitly specified. if not (basemod ~= "base" and data[basemod .. "_numgen"]) then for _, stemtype in ipairs(stemtypelist) do if rfind(stemtype[1], TAM .. UNUOPT .. "/") then return true end end end end return false end function all_feminine(data, stem_spec) for basemod, stemtypelist in pairs(stem_spec) do -- Only check modifiers if modN_numgen= not given. If not given, the -- modifier needs to be declined for all numgens; else only for the -- given numgen, which should be explicitly specified. if not (basemod ~= "base" and data[basemod .. "_numgen"]) then for _, stemtype in ipairs(stemtypelist) do if not rfind(stemtype[1], TAM .. UNUOPT .. "/") then return false end end end end return true end -- The main entry point for collective noun tables. function export.show_coll_noun(frame) local args, origargs, data = init(frame:getParent().args) data.pos = "คำนาม" data.allnumbers = {"coll", "sing", "du", "pauc", "pl"} data.engnumberscap["pl"] = "plural of variety" data.numgens = function() return data.numbers end data.allnumgens = data.allnumbers local colls, is_template = get_heads(data, args, "collective") local pls = is_template and {base={{"{{{pl}}}", "tri"}}} or do_gender_number(data, args, {"pl", "cpl"}, colls, nil, false, "pl") parse_state_etc_spec(data, args) -- If collective noun is already feminine in form, don't try to -- form a feminine singulative local collfem = any_feminine(data, colls) local sings = do_gender_number(data, args, {"sing"}, colls, not already_feminine and "f" or nil, true, "sg") local singfem = all_feminine(data, sings) local dus = do_gender_number(data, args, {"d"}, sings, "d", singfem, "du") local paucs = do_gender_number(data, args, {"pauc"}, sings, "paucp", singfem, "pl") -- Can manually specify which numbers are to appear, and exactly those -- numbers will appear. Otherwise, if any plurals given, plurals appear, -- and if singulative given, dual and paucal appear. if not parse_number_spec(data, args) then data.numbers = {} if args[1] ~= "-" then table.insert(data.numbers, "coll") end if #sings["base"] > 0 then table.insert(data.numbers, "sing") end if #dus["base"] > 0 then table.insert(data.numbers, "du") end if #paucs["base"] > 0 then table.insert(data.numbers, "pauc") end if #pls["base"] > 0 then table.insert(data.numbers, "pl") end end -- Generate the collective, singulative, dual, paucal and plural forms do_inflections_and_overrides(data, args, {{colls, "coll"}, {sings, "sing"}, {dus, "du"}, {paucs, "pauc"}, {pls, "pl"}}) -- Make the table return make_noun_table(data) end -- The main entry point for singulative noun tables. function export.show_sing_noun(frame) local args, origargs, data = init(frame:getParent().args) data.pos = "คำนาม" data.allnumbers = {"sing", "coll", "du", "pauc", "pl"} data.engnumberscap["pl"] = "plural of variety" data.numgens = function() return data.numbers end data.allnumgens = data.allnumbers parse_state_etc_spec(data, args) local sings, is_template = get_heads(data, args, "singulative") -- If all singulative nouns feminine in form, form a masculine collective local singfem = all_feminine(data, sings) local colls = do_gender_number(data, args, {"coll"}, sings, singfem and "m" or nil, false, "sg") local dus = do_gender_number(data, args, {"d"}, sings, "d", singfem, "du") local paucs = do_gender_number(data, args, {"pauc"}, sings, "paucp", singfem, "pl") local pls = is_template and {base={{"{{{pl}}}", "tri"}}} or do_gender_number(data, args, {"pl", "cpl"}, colls, nil, false, "pl") -- Can manually specify which numbers are to appear, and exactly those -- numbers will appear. Otherwise, if any plurals given, plurals appear; -- if singulative given or derivable, it and dual and paucal will appear. if not parse_number_spec(data, args) then data.numbers = {} if args[1] ~= "-" then table.insert(data.numbers, "sing") end if #colls["base"] > 0 then table.insert(data.numbers, "coll") end if #dus["base"] > 0 then table.insert(data.numbers, "du") end if #paucs["base"] > 0 then table.insert(data.numbers, "pauc") end if #pls["base"] > 0 then table.insert(data.numbers, "pl") end end -- Generate the singulative, collective, dual, paucal and plural forms do_inflections_and_overrides(data, args, {{sings, "sing"}, {colls, "coll"}, {dus, "du"}, {paucs, "pauc"}, {pls, "pl"}}) -- Make the table return make_noun_table(data) end -- The implementation of the main entry point for adjective and -- gendered noun tables. function show_gendered(frame, isadj, pos) local args, origargs, data = init(frame:getParent().args) data.pos = pos data.numgens = function() local numgens = {} for _, gender in ipairs(data.allgenders) do for _, number in ipairs(data.numbers) do table.insert(numgens, gender .. "_" .. number) end end return numgens end data.allnumgens = {} for _, gender in ipairs(data.allgenders) do for _, number in ipairs(data.allnumbers) do table.insert(data.allnumgens, gender .. "_" .. number) end end parse_state_etc_spec(data, args) local msgs = get_heads(data, args, 'masculine singular') -- Always do all of these so cases like يَوْم الاِثْنَيْن work. -- See comment in show_noun(). local fsgs = do_gender_number(data, args, {"f"}, msgs, "f", true, "sg") local mdus = do_gender_number(data, args, {"d"}, msgs, "d", false, "du") local fdus = do_gender_number(data, args, {"fd"}, fsgs, "d", true, "du") local mpls = do_gender_number(data, args, {"pl", "cpl"}, msgs, isadj and "p" or nil, false, "pl") local fpls = do_gender_number(data, args, {"fpl", "cpl"}, fsgs, "fp", true, "pl") if isadj then parse_number_spec(data, args) else determine_noun_numbers(data, args, mpls) end -- Generate the singular, dual and plural forms do_inflections_and_overrides(data, args, {{msgs, "m_sg"}, {fsgs, "f_sg"}, {mdus, "m_du"}, {fdus, "f_du"}, {mpls, "m_pl"}, {fpls, "f_pl"}}) -- Make the table if isadj then return make_adj_table(data) else return make_gendered_noun_table(data) end end -- The main entry point for gendered noun tables. function export.show_gendered_noun(frame) return show_gendered(frame, false, "คำนาม") end -- The main entry point for numeral tables. Same as using show_gendered_noun() -- with pos=numeral. function export.show_numeral(frame) return show_gendered(frame, false, "เลข") end -- The main entry point for adjective tables. function export.show_adj(frame) return show_gendered(frame, true, "คำคุณศัพท์") end -- Inflection functions function do_translit(term) --return (lang:transliterate(term)) or track("cant-translit") and BOGUS_CHAR return require("Module:ar-translit-Latn").tr(term) or track("cant-translit") and BOGUS_CHAR end function split_arabic_tr(term) if term == "" then return "", "" elseif not rfind(term, "/") then return term, do_translit(term) else splitvals = rsplit(term, "/") if #splitvals ~= 2 then error("Must have at most one slash in a combined Arabic/translit expr: '" .. term .. "'") end return splitvals[1], splitvals[2] end end function reorder_shadda(word) -- shadda+short-vowel (including tanwīn vowels, i.e. -an -in -un) gets -- replaced with short-vowel+shadda during NFC normalisation, which -- MediaWiki does for all Unicode strings; however, it makes the -- detection process inconvenient, so undo it. word = rsub(word, "(" .. DIACRITIC_ANY_BUT_SH .. ")" .. SH, SH .. "%1") return word end -- Combine PREFIX, AR/TR, and ENDING in that order. PREFIX and ENDING -- can be of the form ARABIC/TRANSLIT. The Arabic and translit parts are -- separated out and grouped together, resulting in a string of the -- form ARABIC/TRANSLIT (TRANSLIT will always be present, computed -- automatically if not present in the source). The return value is actually a -- list of ARABIC/TRANSLIT strings because hamza resolution is applied to -- ARABIC, which may produce multiple outcomes (all of which will have the -- same TRANSLIT). function combine_with_ending(prefix, ar, tr, ending) local prefixar, prefixtr = split_arabic_tr(prefix) local endingar, endingtr = split_arabic_tr(ending) -- When calling hamza_seat(), leave out prefixes, which we expect to be -- clitics like وَ. (In case the prefix is a separate word, it won't matter -- whether we include it in the text passed to hamza_seat().) allar = hamza_seat(ar .. endingar) -- Convert ...īān to ...iyān in case of stems ending in -ī or -ū -- (e.g. kubrī "bridge"). if rfind(endingtr, "^[aeiouāēīōū]") then if rfind(tr, "ī$") then tr = rsub(tr, "ī$", "iy") elseif rfind(tr, "ū$") then tr = rsub(tr, "ū$", "uw") end end tr = prefixtr .. tr .. endingtr allartr = {} for _, arval in ipairs(allar) do table.insert(allartr, prefixar .. arval .. "/" .. tr) end return allartr end -- Combine PREFIX, STEM/TR and ENDING in that order and insert into the -- list of items in DATA[KEY], initializing it if empty and making sure -- not to insert duplicates. ENDING can be a list of endings, will be -- distributed over the remaining parts. PREFIX and/or ENDING can be -- of the form ARABIC/TRANSLIT (the stem is already split into Arabic STEM -- and Latin TR). Note that what's inserted into DATA[KEY] is actually a -- list of ARABIC/TRANSLIT strings; if more than one is present in the list, -- they represent hamza variants, i.e. different ways of writing a hamza -- sound, such as مُبْتَدَؤُون vs. مُبْتَدَأُون (see init_data()). function add_inflection(data, key, prefix, stem, tr, ending) if data.forms[key] == nil then data.forms[key] = {} end if type(ending) ~= "table" then ending = {ending} end for _, endingval in ipairs(ending) do insert_if_not(data.forms[key], combine_with_ending(prefix, stem, tr, endingval)) end end -- Form inflections from combination of STEM, with transliteration TR, -- and ENDINGS (and definite article where necessary, plus any specified -- prefixes) and store in DATA, for the number or gender/number -- determined by MOD ("", "mod_", "mod2_", etc.; see call_inflection()) and -- NUMGEN ("sg", "du", "pl", or "m_sg", "f_pl", etc. for adjectives). ENDINGS -- is an array of 15 values, each of which is a string or array of -- alternatives. The order of ENDINGS is indefinite nom, acc, gen; definite -- nom, acc, gen; construct-state nom, acc, gen; informal indefinite, definite, -- construct; lemma indefinite, definite, construct. (Normally the lemma is -- based off of the indefinite, but if the inflection has been restricted to -- particular states, it comes from one of those states, in the order -- indefinite, definite, construct.) See also add_inflection() for more info -- on exactly what is inserted into DATA. function add_inflections(stem, tr, data, mod, numgen, endings) stem = canon_hamza(stem) assert(#endings == 15) local ismod = mod ~= "" -- If working on modifier and modN_numgen= is given, it better agree with -- NUMGEN; the case where it doesn't agree should have been caught in -- call_inflections(). if ismod and data[mod .. "numgen"] then assert(data[mod .. "numgen"] == numgen) end -- Return a list of combined of ar/tr forms, with the ending tacked on. -- There may be more than one form because of alternative hamza seats that -- may be supplied, e.g. مُبْتَدَؤُون or مُبْتَدَأُون (mubtadaʾūn "(grammatical) subjects"). local defstem, deftr if stem == "?" or data[mod .. "omitarticle"] then defstem = stem deftr = tr else -- apply sun-letter assimilation and hamzat al-wasl elision defstem = rsub("الْ" .. stem, "^الْ([سشصتثطدذضزژظنرل])", "ال%1ّ") defstem = rsub(defstem, "^الْ([اٱ])([ًٌٍَُِ])", "ال%2%1") deftr = rsub("al-" .. tr, "^al%-([sšṣtṯṭdḏḍzžẓnrḷ])", "a%1-%1") end -- For a given MOD spec, is the previous word (base or modifier) a noun? -- We assume the base is always a noun in this case, and otherwise -- look at the value of modN_idafa. local function prev_mod_is_noun(mod) if mod == "mod_" then return true end if mod == "mod2_" then return data["mod_idafa"] end modnum = assert_rsub(mod, "^mod([0-9]+)_$", "%1") modnum = modnum - 1 return data["mod" .. modnum .. "_idafa"] end local numgens = ismod and data[mod .. "numgen"] and data.numgens() or {numgen} -- "defcon" means definite adjective modifying construct state noun. We -- add a ... before the adjective (and after the construct-state noun) to -- indicate that a nominal modifier would go between noun and adjective. local stems = {ind = stem, def = defstem, con = stem, defcon = "... " .. defstem} local trs = {ind = tr, def = deftr, con = tr, defcon = "... " .. deftr} for _, ng in ipairs(numgens) do for _, state in ipairs(data.allstates) do for _, case in ipairs(data.allcases_with_lemma) do -- We are generating the inflections for STATE, but sometimes -- we want to use the inflected form of a different state, e.g. -- if modN_state= or basestate= is set to some particular state. -- If we're dealing with an adjectival modifier, then in -- place of "con" we use "defcon" if immediately after a noun -- (see comment above), else "def". local thestate = ismod and data[mod .. "state"] or ismod and not data[mod .. "idafa"] and state == "con" and (prev_mod_is_noun(mod) and "defcon" or "def") or not ismod and data.basestate or state local is_lemmainf = case == "lemma" or case == "inf" -- Don't substitute value of modcase for lemma/informal "cases" local thecase = is_lemmainf and case or ismod and data[mod .. "case"] or case add_inflection(data, mod .. case .. "_" .. ng .. "_" .. state, data[mod .. "prefix"] or "", stems[thestate], trs[thestate], endings[data.statecases[thestate][thecase]]) end end end end -- Insert into a category and a type variable (e.g. m_sg_type) for the -- declension type of a particular declension (e.g. masculine singular for -- adjectives). MOD and NUMGEN are as in call_inflection(). CATVALUE is the -- category and ENGVALUE is the English description of the declension type. -- In these values, NOUN is replaced with either "noun" or "adjective", -- SINGULAR is replaced with the English equivalent of the number in NUMGEN -- (e.g. "singular", "dual" or "plural") while BROKSING is the same but uses -- "broken plural" in place of "plural" and "broken paucal" in place of -- "paucal". function insert_cat(data, mod, numgen, catvalue, engvalue) local singpl = data.engnumbers[rsub(numgen, "^.*_", "")] assert(singpl ~= nil) local broksingpl = rsub(singpl, "plural", "broken plural") broksingpl = rsub(broksingpl, "paucal", "broken paucal") if rfind(broksingpl, "broken plural") and (rfind(catvalue, "BROKSING") or rfind(engvalue, "BROKSING")) then table.insert(data.categories, "Arabic " .. data.pos .. "s with broken plural") end if rfind(catvalue, "irregular") or rfind(engvalue, "irregular") then table.insert(data.categories, "Arabic irregular " .. data.pos .. "s") end catvalue = rsub(catvalue, "NOUN", data.pos) catvalue = rsub(catvalue, "SINGULAR", singpl) catvalue = rsub(catvalue, "BROKSING", broksingpl) engvalue = rsub(engvalue, "NOUN", data.pos) engvalue = rsub(engvalue, "SINGULAR", singpl) engvalue = rsub(engvalue, "BROKSING", broksingpl) -- add links to specialised grammatical terms engvalue = rsub(engvalue, "triptote", "[[triptote]]") engvalue = rsub(engvalue, "diptote", "[[diptote]]") engvalue = rsub(engvalue, "broken plural", "BBB") engvalue = rsub(engvalue, "sound plural", "SSS") engvalue = rsub(engvalue, "broken", "[[broken plural|broken]]") engvalue = rsub(engvalue, "sound", "[[sound plural|sound]]") engvalue = rsub(engvalue, "BBB", "[[broken plural]]") engvalue = rsub(engvalue, "SSS", "[[sound plural]]") if mod == "" and catvalue ~= "" then insert_if_not(data.categories, catvalue) end if engvalue ~= "" then local key = mod .. numgen .. "_type" if data.forms[key] == nil then data.forms[key] = {} end insert_if_not(data.forms[key], engvalue) end if contains(data.states, "def") and not contains(data.states, "ind") then insert_if_not(data.categories, "Arabic definite " .. data.pos .. "s") end end -- Return true if we're handling modifier inflections and the modifier's -- case is limited to an oblique case (gen or acc; typically genitive, -- in an ʾidāfa construction). This is used when returning lemma -- inflections -- the modifier part of the lemma should agree in case -- with modifier's case if it's restricted in case. function mod_oblique(mod, data) return mod ~= "" and data[mod .. "case"] and ( data[mod .. "case"] == "acc" or data[mod .. "case"] == "gen") end -- Similar to mod_oblique but specifically when the modifier case is -- limited to the accusative (which is rare or nonexistent in practice). function mod_acc(mod, data) return mod ~= "" and data[mod .. "case"] and data[mod .. "case"] == "acc" end -- Handle triptote and diptote inflections function triptote_diptote(stem, tr, data, mod, numgen, is_dip, lc) -- Remove any case ending if rfind(stem, "[" .. UN .. U .. "]$") then stem = rsub(stem, "[" .. UN .. U .. "]$", "") tr = rsub(tr, "un?$", "") end -- special-case for صلوة pronounced ṣalāh; check translit local is_aah = rfind(stem, TAM .. "$") and rfind(tr, "āh$") if rfind(stem, TAM .. "$") then if rfind(tr, "h$") then tr = rsub(tr, "h$", "t") elseif not rfind(tr, "t$") then tr = tr .. "t" end end add_inflections(stem, tr, data, mod, numgen, {is_dip and U or UN, is_dip and A or AN .. ((rfind(stem, "[" .. HAMZA_ON_ALIF .. TAM .. "]$") or rfind(stem, "[" .. AMAD .. ALIF .. "]" .. HAMZA .. "$") ) and "" or ALIF), is_dip and A or IN, U, A, I, lc and UU or U, lc and AA or A, lc and II or I, {}, {}, {}, -- omit informal inflections {}, {}, {}, -- omit lemma inflections }) -- add category and informal and lemma inflections local tote = lc and "long construct" or is_dip and "diptote" or "triptote" local singpl_tote = "BROKSING " .. tote local cat_prefix = "Arabic NOUNs with " .. tote .. " BROKSING" -- since we're checking translit for -āh we probably don't need to -- check stem too if is_aah or rfind(stem, "[" .. AMAD .. ALIF .. "]" .. TAM .. "$") then add_inflections(stem, rsub(tr, "t$", ""), data, mod, numgen, {{}, {}, {}, {}, {}, {}, {}, {}, {}, "/t", "/t", "/t", -- informal pron. is -āt "/h", "/h", "/t", -- lemma uses -āh }) insert_cat(data, mod, numgen, cat_prefix .. " in -āh", singpl_tote .. " in " .. make_link(HYPHEN .. AAH)) elseif rfind(stem, TAM .. "$") then add_inflections(stem, rsub(tr, "t$", ""), data, mod, numgen, {{}, {}, {}, {}, {}, {}, {}, {}, {}, "", "", "/t", "", "", "/t", }) insert_cat(data, mod, numgen, cat_prefix .. " in -a", singpl_tote .. " in " .. make_link(HYPHEN .. AH)) elseif lc then add_inflections(stem, tr, data, mod, numgen, {{}, {}, {}, {}, {}, {}, {}, {}, {}, "", "", UU, "", "", UU, }) insert_cat(data, mod, numgen, cat_prefix, singpl_tote) else -- also special-case the nisba ending, which has an informal -- pronunciation. if rfind(stem, IY .. SH .. "$") then local infstem = rsub(stem, SH .. "$", "") local inftr = rsub(tr, "iyy$", "ī") -- add informal and lemma inflections separately add_inflections(infstem, inftr, data, mod, numgen, {{}, {}, {}, {}, {}, {}, {}, {}, {}, "", "", "", {}, {}, {}, }) add_inflections(stem, tr, data, mod, numgen, {{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, "", "", "", }) else add_inflections(stem, tr, data, mod, numgen, {{}, {}, {}, {}, {}, {}, {}, {}, {}, "", "", "", "", "", "", }) end insert_cat(data, mod, numgen, "Arabic NOUNs with basic " .. tote .. " BROKSING", "basic " .. singpl_tote) end end -- Regular triptote inflections["tri"] = function(stem, tr, data, mod, numgen) triptote_diptote(stem, tr, data, mod, numgen, false) end -- Regular diptote inflections["di"] = function(stem, tr, data, mod, numgen) triptote_diptote(stem, tr, data, mod, numgen, true) end -- Elative and color/defect adjective: usually same as diptote, -- might be invariable function elative_color_defect(stem, tr, data, mod, numgen) if rfind(stem, "[" .. ALIF .. AMAQ .. "]$") then invariable(stem, tr, data, mod, numgen) else triptote_diptote(stem, tr, data, mod, numgen, true) end end -- Elative: usually same as diptote, might be invariable inflections["el"] = function(stem, tr, data, mod, numgen) elative_color_defect(stem, tr, data, mod, numgen) end -- Color/defect adjective: Same as elative inflections["cd"] = function(stem, tr, data, mod, numgen) elative_color_defect(stem, tr, data, mod, numgen) end -- Triptote with lengthened ending in the construct state inflections["lc"] = function(stem, tr, data, mod, numgen) triptote_diptote(stem, tr, data, mod, numgen, false, true) end function in_defective(stem, tr, data, mod, numgen, tri) if not rfind(stem, IN .. "$") then error("'in' declension stem should end in -in: '" .. stem .. "'") end stem = rsub(stem, IN .. "$", "") tr = rsub(tr, "in$", "") local acc_ind_ending = tri and IY .. AN .. ALIF or IY .. A add_inflections(stem, tr, data, mod, numgen, {IN, acc_ind_ending, IN, II, IY .. A, II, II, IY .. A, II, II, II, II, -- FIXME: What should happen with the lemma when modifier case -- is limited to the accusative and modifier state is e.g. definite? -- Should the lemma end in -iya or -ī? In practice this will rarely -- if ever happen. mod_acc(mod, data) and acc_ind_ending or IN, II, II, }) local tote = tri and "triptote" or "diptote" insert_cat(data, mod, numgen, "Arabic NOUNs with " .. tote .. " BROKSING in -in", "BROKSING " .. tote .. " in " .. make_link(HYPHEN .. IN)) end function detect_in_type(stem, ispl) if ispl and rfind(stem, "^" .. CONS .. AOPT .. CONS .. AOPTA .. CONS .. IN .. "$") then -- layālin return "diin" else -- other -in words return "triin" end end -- Defective in -in inflections["in"] = function(stem, tr, data, mod, numgen) in_defective(stem, tr, data, mod, numgen, detect_in_type(stem, rfind(numgen, "pl")) == "triin") end -- Defective in -in, force "triptote" variant inflections["triin"] = function(stem, tr, data, mod, numgen) in_defective(stem, tr, data, mod, numgen, true) end -- Defective in -in, force "diptote" variant inflections["diin"] = function(stem, tr, data, mod, numgen) in_defective(stem, tr, data, mod, numgen, false) end -- Defective in -an (comes in two variants, depending on spelling with tall alif or alif maqṣūra) inflections["an"] = function(stem, tr, data, mod, numgen) local tall_alif if rfind(stem, AN .. ALIF .. "$") then tall_alif = true stem = rsub(stem, AN .. ALIF .. "$", "") elseif rfind(stem, AN .. AMAQ .. "$") then tall_alif = false stem = rsub(stem, AN .. AMAQ .. "$", "") else error("Invalid stem for 'an' declension type: " .. stem) end tr = rsub(tr, "an$", "") if tall_alif then add_inflections(stem, tr, data, mod, numgen, {AN .. ALIF, AN .. ALIF, AN .. ALIF, AA, AA, AA, AA, AA, AA, AA, AA, AA, AN .. ALIF, AA, AA, }) else add_inflections(stem, tr, data, mod, numgen, {AN .. AMAQ, AN .. AMAQ, AN .. AMAQ, AAMAQ, AAMAQ, AAMAQ, AAMAQ, AAMAQ, AAMAQ, AAMAQ, AAMAQ, AAMAQ, AN .. AMAQ, AAMAQ, AAMAQ, }) end -- FIXME: Should we distinguish between tall alif and alif maqṣūra? insert_cat(data, mod, numgen, "Arabic NOUNs with BROKSING in -an", "BROKSING in " .. make_link(HYPHEN .. AN .. (tall_alif and ALIF or AMAQ))) end function invariable(stem, tr, data, mod, numgen) add_inflections(stem, tr, data, mod, numgen, {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", }) insert_cat(data, mod, numgen, "Arabic NOUNs with invariable BROKSING", "BROKSING invariable") end -- Invariable in -ā (non-loanword type) inflections["inv"] = function(stem, tr, data, mod, numgen) invariable(stem, tr, data, mod, numgen) end -- Invariable in -ā (loanword type, behaving in the dual as if ending in -a, I think!) inflections["lwinv"] = function(stem, tr, data, mod, numgen) invariable(stem, tr, data, mod, numgen) end -- Duals inflections["d"] = function(stem, tr, data, mod, numgen) if rfind(stem, ALIF .. NI .. "?$") then stem = rsub(stem, AOPTA .. NI .. "?$", "") elseif rfind(stem, AMAD .. NI .. "?$") then stem = rsub(stem, AMAD .. NI .. "?$", HAMZA_PH) else error("Dual stem should end in -ān(i): '" .. stem .. "'") end tr = rsub(tr, "āni?$", "") local mo = mod_oblique(mod, data) add_inflections(stem, tr, data, mod, numgen, {AANI, AYNI, AYNI, AANI, AYNI, AYNI, AA, AYSK, AYSK, AYN, AYN, AYSK, mo and AYN or AAN, mo and AYN or AAN, mo and AYSK or AA, }) insert_cat(data, mod, numgen, "", "dual in " .. make_link(HYPHEN .. AANI)) end -- Sound masculine plural inflections["smp"] = function(stem, tr, data, mod, numgen) if not rfind(stem, UUNA .. "?$") then error("Sound masculine plural stem should end in -ūn(a): '" .. stem .. "'") end stem = rsub(stem, UUNA .. "?$", "") tr = rsub(tr, "ūna?$", "") local mo = mod_oblique(mod, data) add_inflections(stem, tr, data, mod, numgen, {UUNA, IINA, IINA, UUNA, IINA, IINA, UU, II, II, IIN, IIN, II, mo and IIN or UUN, mo and IIN or UUN, mo and II or UU, }) -- use SINGULAR because conceivably this might be used with the paucal -- instead of plural insert_cat(data, mod, numgen, "Arabic NOUNs with sound masculine SINGULAR", "sound masculine SINGULAR") end -- Sound feminine plural inflections["sfp"] = function(stem, tr, data, mod, numgen) if not rfind(stem, "[" .. ALIF .. AMAD .. "]" .. T .. UN .. "?$") then error("Sound feminine plural stem should end in -āt(un): '" .. stem .. "'") end stem = rsub(stem, UN .. "$", "") tr = rsub(tr, "un$", "") add_inflections(stem, tr, data, mod, numgen, {UN, IN, IN, U, I, I, U, I, I, "", "", "", "", "", "", }) -- use SINGULAR because this might be used with the paucal -- instead of plural insert_cat(data, mod, numgen, "Arabic NOUNs with sound feminine SINGULAR", "sound feminine SINGULAR") end -- Plural of defective in -an inflections["awnp"] = function(stem, tr, data, mod, numgen) if not rfind(stem, AWNA .. "?$") then error("'awnp' plural stem should end in -awn(a): '" .. stem .. "'") end stem = rsub(stem, AWNA .. "?$", "") tr = rsub(tr, "awna?$", "") local mo = mod_oblique(mod, data) add_inflections(stem, tr, data, mod, numgen, {AWNA, AYNA, AYNA, AWNA, AYNA, AYNA, AWSK, AYSK, AYSK, AYN, AYN, AYSK, mo and AYN or AWN, mo and AYN or AWN, mo and AYSK or AWSK, }) -- use SINGULAR because conceivably this might be used with the paucal -- instead of plural insert_cat(data, mod, numgen, "Arabic NOUNs with sound SINGULAR in -awna", "sound SINGULAR in " .. make_link(HYPHEN .. AWNA)) end -- Unknown inflections["?"] = function(stem, tr, data, mod, numgen) add_inflections("?", "?", data, mod, numgen, {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", }) insert_cat(data, mod, numgen, "Arabic NOUNs with unknown SINGULAR", "SINGULAR unknown") end -- Detect declension of noun or adjective stem or lemma. We allow triptotes, -- diptotes and sound plurals to either come with ʾiʿrāb or not. We detect -- some cases where vowels are missing, when it seems fairly unambiguous to -- do so. ISFEM is true if we are dealing with a feminine stem (not -- currently used and needs to be rethought). NUM is "sg", "du", or "pl", -- depending on the number of the stem. -- -- POS is the part of speech, generally "noun" or "adjective". Used to -- distinguish nouns and adjectives of the فَعْلَان type. There are nouns of -- this type and they generally are triptotes, e.g. قَطْرَان "tar" -- and شَيْطَان "devil". An additional complication is that the user can set -- the POS to something else, like "numeral". We don't use this POS for -- modifiers, where we determine whether they are noun-like or adjective-like -- according to whether mod_idafa= is true. -- -- Some unexpectedly diptote nouns/adjectives: -- -- jiʿrān in ʾabū jiʿrān "dung beetle" -- distributive numbers: ṯunāʾ "two at a time", ṯulāṯ/maṯlaṯ "three at a time", -- rubāʿ "four at a time" (not a regular diptote pattern, cf. triptote -- junāḥ "misdemeanor, sin", nujār "origin, root", nuḥām "flamingo") -- jahannam (f.) "hell" -- many names: jilliq/jillaq "Damascus", judda/jidda "Jedda", jibrīl (and -- variants) "Gabriel", makka "Mecca", etc. -- jibriyāʾ "pride" -- kibriyāʾ "glory, pride" -- babbaḡāʾ "parrot" -- ʿayāyāʾ "incapable, tired" -- suwaidāʾ "black bile, melancholy" -- Note also: ʾajhar "day-blind" (color-defect) and ʾajhar "louder" (elative) function export.detect_type(stem, isfem, num, pos) local function dotrack(word) track(word) track(word .. "/" .. pos) return true end -- Not strictly necessary because the caller (stem_and_type) already -- reorders, but won't hurt, and may be necessary if this function is -- called from an external caller. stem = reorder_shadda(stem) local origstem = stem -- So that we don't get tripped up by alif madda, we replace alif madda -- with the sequence hamza + fatḥa + alif before the regexps below. stem = rsub(stem, AMAD, HAMZA .. AA) if num == "du" then if rfind(stem, ALIF .. NI .. "?$") then return "d" else error("Malformed stem for dual, should end in the nominative dual ending -ān(i): '" .. origstem .. "'") end end if rfind(stem, IN .. "$") then -- -in words return detect_in_type(stem, num == "pl") elseif rfind(stem, AN .. "[" .. ALIF .. AMAQ .. "]$") then return "an" elseif rfind(stem, AN .. "$") then error("Malformed stem, fatḥatan should be over second-to-last letter: " .. origstem) elseif num == "pl" and rfind(stem, AW .. SKOPT .. N .. AOPT .. "$") then return "awnp" elseif num == "pl" and rfind(stem, ALIF .. T .. UNOPT .. "$") and -- Avoid getting tripped up by plurals like ʾawqāt "times", -- ʾaḥwāt "fishes", ʾabyāt "verses", ʾazyāt "oils", ʾaṣwāt "voices", -- ʾamwāt "dead (pl.)". not rfind(stem, HAMZA_ON_ALIF .. A .. CONS .. SK .. CONS .. AAT .. UNOPT .. "$") then return "sfp" elseif num == "pl" and rfind(stem, W .. N .. AOPT .. "$") and -- Avoid getting tripped up by plurals like ʿuyūn "eyes", -- qurūn "horns" (note we check for U between first two consonants -- so we correctly ignore cases like sinūn "hours" (from sana), -- riʾūn "lungs" (from riʾa) and banūn "sons" (from ibn). not rfind(stem, "^" .. CONS .. U .. CONS .. UUN .. AOPT .. "$") then return "smp" elseif rfind(stem, UN .. "$") then -- explicitly specified triptotes (we catch sound feminine plurals above) return "tri" elseif rfind(stem, U .. "$") then -- explicitly specified diptotes return "di" elseif -- num == "pl" and ( -- various diptote plural patterns; these are diptote even in the singular (e.g. yanāyir "January", falāfil "falafel", tuʾabāʾ "yawn, fatigue" -- currently we sometimes end up with such plural patterns in the "singular" in a singular -- ʾidāfa construction with plural modifier. (FIXME: These should be fixed to the correct number.) rfind(stem, "^" .. CONS .. AOPT .. CONS .. AOPTA .. CONS .. IOPT .. Y .. "?" .. CONS .. "$") and dotrack("fawaakih") or -- fawākih, daqāʾiq, makātib, mafātīḥ rfind(stem, "^" .. CONS .. AOPT .. CONS .. AOPTA .. CONS .. SH .. "$") and not rfind(stem, "^" .. T) and dotrack("mawaadd") or -- mawādd, maqāmm, ḍawāll; exclude t- so we don't catch form-VI verbal nouns like taḍādd (HACK!!!) rfind(stem, "^" .. CONS .. U .. CONS .. AOPT .. CONS .. AOPTA .. HAMZA .. "$") and dotrack("wuzaraa") or -- wuzarāʾ "ministers", juhalāʾ "ignorant (pl.)" rfind(stem, ELCD_START .. SKOPT .. CONS .. IOPT .. CONS .. AOPTA .. HAMZA .. "$") and dotrack("asdiqaa") or -- ʾaṣdiqāʾ rfind(stem, ELCD_START .. IOPT .. CONS .. SH .. AOPTA .. HAMZA .. "$") and dotrack("aqillaa") -- ʾaqillāʾ, ʾajillāʾ "important (pl.)", ʾaḥibbāʾ "lovers" ) then return "di" elseif num == "sg" and ( -- diptote singular patterns (nouns/adjectives) rfind(stem, "^" .. CONS .. A .. CONS .. SK .. CONS .. AOPTA .. HAMZA .. "$") and dotrack("qamraa") or -- qamrāʾ "moon-white, moonlight"; baydāʾ "desert"; ṣaḥrāʾ "desert-like, desert"; tayhāʾ "trackless, desolate region"; not pl. to avoid catching e.g. ʾabnāʾ "sons", ʾaḥmāʾ "fathers-in-law", ʾamlāʾ "steppes, deserts" (pl. of malan), ʾanbāʾ "reports" (pl. of nabaʾ) rfind(stem, ELCD_START .. SK .. CONS .. A .. CONS .. "$") and dotrack("abyad") or -- ʾabyaḍ "white", ʾakbar "greater"; FIXME nouns like ʾaʿzab "bachelor", ʾaḥmad "Ahmed" but not ʾarnab "rabbit", ʾanjar "anchor", ʾabjad "abjad", ʾarbaʿ "four", ʾandar "threshing floor" (cf. diptote ʾandar "rarer") rfind(stem, ELCD_START .. A .. CONS .. SH .. "$") and dotrack("alaff") or -- ʾalaff "plump", ʾaḥabb "more desirable" -- do the following on the origstem so we can check specifically for alif madda rfind(origstem, "^" .. AMAD .. CONS .. A .. CONS .. "$") and dotrack("aalam") -- ʾālam "more painful", ʾāḵar "other" ) then return "di" elseif num == "sg" and pos == "คำคุณศัพท์" and ( -- diptote singular patterns (adjectives) rfind(stem, "^" .. CONS .. A .. CONS .. SK .. CONS .. AOPTA .. N .. "$") and dotrack("kaslaan") or -- kaslān "lazy", ʿaṭšān "thirsty", jawʿān "hungry", ḡaḍbān "angry", tayhān "wandering, perplexed"; but not nouns like qaṭrān "tar", šayṭān "devil", mawtān "plague", maydān "square" -- rfind(stem, "^" .. CONS .. A .. CONS .. SH .. AOPTA .. N .. "$") and dotrack("laffaa") -- excluded because of too many false positives e.g. ḵawwān "disloyal", not to mention nouns like jannān "gardener"; only diptote example I can find is ʿayyān "incapable, weary" (diptote per Lane but not Wehr) rfind(stem, "^" .. CONS .. A .. CONS .. SH .. AOPTA .. HAMZA .. "$") and dotrack("laffaa") -- laffāʾ "plump (fem.)"; but not nouns like jarrāʾ "runner", ḥaddāʾ "camel driver", lawwāʾ "wryneck" ) then return "di" elseif rfind(stem, AMAQ .. "$") then -- kaslā, ḏikrā (spelled with alif maqṣūra) return "inv" elseif rfind(stem, "[" .. ALIF .. SK .. "]" .. Y .. AOPTA .. "$") then -- dunyā, hadāyā (spelled with tall alif after yāʾ) return "inv" elseif rfind(stem, ALIF .. "$") then -- kāmērā, lībiyā (spelled with tall alif; we catch dunyā and hadāyā above) return "lwinv" elseif rfind(stem, II .. "$") then -- cases like كُوبْرِي kubrī "bridge" and صَوَانِي ṣawānī pl. of ṣīniyya; modern words that would probably end with -in dotrack("ii") return "inv" elseif rfind(stem, UU .. "$") then -- FIXME: Does this occur? Check the tracking dotrack("uu") return "inv" else return "tri" end end -- Replace hamza (of any sort) at the end of a word, possibly followed by -- a nominative case ending or -in or -an, with HAMZA_PH, and replace alif -- madda at the end of a word with HAMZA_PH plus fatḥa + alif. To undo these -- changes, use hamza_seat(). function canon_hamza(word) word = rsub(word, AMAD .. "$", HAMZA_PH .. AA) word = rsub(word, HAMZA_ANY .. "([" .. UN .. U .. IN .. "]?)$", HAMZA_PH .. "%1") word = rsub(word, HAMZA_ANY .. "(" .. AN .. "[" .. ALIF .. AMAQ .. "])$", HAMZA_PH .. "%1") return word end -- Supply the appropriate hamza seat(s) for a placeholder hamza. function hamza_seat(word) if rfind(word, HAMZA_PH) then -- optimization to avoid many regexp substs return ar_utilities.process_hamza(word) end return {word} end --[[ -- Supply the appropriate hamza seat for a placeholder hamza in a combined -- Arabic/translation expression. function split_and_hamza_seat(word) if rfind(word, HAMZA_PH) then -- optimization to avoid many regexp substs local ar, tr = split_arabic_tr(word) -- FIXME: Do something with all values returned ar = ar_utilities.process_hamza(ar)[1] return ar .. "/" .. tr end return word end --]] -- Return stem and type of an argument given the singular stem and whether -- this is a plural argument. WORD may be of the form ARABIC, ARABIC/TR, -- ARABIC:TYPE, ARABIC/TR:TYPE, or TYPE, for Arabic stem ARABIC with -- transliteration TR and of type (i.e. declension) TYPE. If the type -- is omitted, it is auto-detected using detect_type(). If the transliteration -- is omitted, it is auto-transliterated from the Arabic. If only the type -- is present, it is a sound plural type ("sf", "sm" or "awn"), -- in which case the stem and translit are generated from the singular by -- regular rules. SG may be of the form ARABIC/TR or ARABIC. ISFEM is true -- if WORD is a feminine stem. NUM is either "sg", "du" or "pl" according to -- the number of the stem. The return value will be in the ARABIC/TR format. -- -- POS is the part of speech, generally "noun" or "adjective". Used to -- distinguish nouns and adjectives of the فَعْلَان type. There are nouns of -- this type and they generally are triptotes, e.g. قَطْرَان "tar" -- and شَيْطَان "devil". An additional complication is that the user can set -- the POS to something else, like "numeral". We don't use this POS for -- modifiers, where we determine whether they are noun-like or adjective-like -- according to whether mod_idafa= is true. function export.stem_and_type(word, sg, sgtype, isfem, num, pos) local rettype = nil if rfind(word, ":") then local split = rsplit(word, ":") if #split > 2 then error("More than one colon found in argument: '" .. word .. "'") end word, rettype = split[1], split[2] end local ar, tr = split_arabic_tr(word) -- Need to reorder shaddas here so that shadda at the end of a stem -- followed by ʾiʿrāb or a plural ending or whatever can get processed -- correctly. This processing happens in various places so make sure -- we return the reordered Arabic in all circumstances. ar = reorder_shadda(ar) local artr = ar .. "/" .. tr -- Now return split-out ARABIC/TR and TYPE, with shaddas reordered in -- the Arabic. if rettype then return artr, rettype end -- Likewise, do shadda reordering for the singular. local sgar, sgtr = split_arabic_tr(sg) sgar = reorder_shadda(sgar) -- Apply a substitution to the singular Arabic and translit. If a -- substitution could be made, return the combined ARABIC/TR with -- substitutions made; else, return nil. The Arabic has ARFROM -- replaced with ARTO, while the translit has TRFROM replaced with -- TRTO, and if that doesn't match, replace TRFROM2 with TRTO2. local function sub(arfrom, arto, trfrom, trto, trfrom2, trto2, trfrom3, trto3) if rfind(sgar, arfrom) then local arret = rsub(sgar, arfrom, arto) local trret = sgtr if rfind(sgtr, trfrom) then trret = rsub(sgtr, trfrom, trto) elseif trfrom2 and rfind(sgtr, trfrom2) then trret = rsub(sgtr, trfrom2, trto2) elseif trfrom3 and rfind(sgtr, trfrom3) then trret = rsub(sgtr, trfrom3, trto3) elseif not rfind(sgtr, BOGUS_CHAR) then error("Transliteration '" .. sgtr .."' does not have same ending as Arabic '" .. sgar .. "'") end return arret .. "/" .. trret else return nil end end if (num ~= "sg" or not isfem) and (word == "elf" or word == "cdf" or word == "intf" or word == "rf" or word == "f") then error("Inference of form for inflection type '" .. word .. "' only allowed in singular feminine") end if num ~= "du" and word == "d" then error("Inference of form for inflection type '" .. word .. "' only allowed in dual") end if num ~= "pl" and (word == "sfp" or word == "smp" or word == "awnp" or word == "cdp" or word == "sp" or word == "fp" or word == "p") then error("Inference of form for inflection type '" .. word .. "' only allowed in plural") end local function is_intensive_adj(ar) return rfind(ar, "^" .. CONS .. A .. CONS .. SK .. CONS .. AOPTA .. N .. UOPT .. "$") or rfind(ar, "^" .. CONS .. A .. CONS .. SK .. AMAD .. N .. UOPT .. "$") or rfind(ar, "^" .. CONS .. A .. CONS .. SH .. AOPTA .. N .. UOPT .. "$") end local function is_feminine_cd_adj(ar) return pos == "คำคุณศัพท์" and (rfind(ar, "^" .. CONS .. A .. CONS .. SK .. CONS .. AOPTA .. HAMZA .. UOPT .. "$") or -- ʾḥamrāʾ/ʿamyāʾ/bayḍāʾ rfind(ar, "^" .. CONS .. A .. CONS .. SH .. AOPTA .. HAMZA .. UOPT .. "$") -- laffāʾ ) end local function is_elcd_adj(ar) return rfind(ar, ELCD_START .. SK .. CONS .. A .. CONS .. UOPT .. "$") or -- ʾabyaḍ "white", ʾakbar "greater" rfind(ar, ELCD_START .. A .. CONS .. SH .. UOPT .. "$") or -- ʾalaff "plump", ʾaqall "fewer" rfind(ar, ELCD_START .. SK .. CONS .. AAMAQ .. "$") or -- ʾaʿmā "blind", ʾadnā "lower" rfind(ar, "^" .. AMAD .. CONS .. A .. CONS .. UOPT .. "$") -- ʾālam "more painful", ʾāḵar "other" end if word == "?" or (rfind(word, "^[a-z][a-z]*$") and sgtype == "?") then --if 'word' is a type, actual value inferred from sg; if sgtype is ?, --propagate it to all derived types return "", "?" end if word == "intf" then if not is_intensive_adj(sgar) then error("Singular stem not in CACCān form: " .. sgar) end local ret = ( sub(AMAD .. N .. UOPT .. "$", AMAD, "nu?$", "") or -- ends in -ʾān sub(AOPTA .. N .. UOPT .. "$", AMAQ, "nu?$", "") -- ends in -ān ) return ret, "inv" end if word == "elf" then local ret = ( sub(ELCD_START .. SK .. "[" .. Y .. W .. "]" .. A .. CONSPAR .. UOPT .. "$", "%1" .. UU .. "%2" .. AMAQ, "ʔa(.)[yw]a(.)u?", "%1ū%2ā") or -- ʾajyad sub(ELCD_START .. SK .. CONSPAR .. A .. CONSPAR .. UOPT .. "$", "%1" .. U .. "%2" .. SK .. "%3" .. AMAQ, "ʔa(.)(.)a(.)u?", "%1u%2%3ā") or -- ʾakbar sub(ELCD_START .. A .. CONSPAR .. SH .. UOPT .. "$", "%1" .. U .. "%2" .. SH .. AMAQ, "ʔa(.)a(.)%2u?", "%1u%2%2ā") or -- ʾaqall sub(ELCD_START .. SK .. CONSPAR .. AAMAQ .. "$", "%1" .. U .. "%2" .. SK .. Y .. ALIF, "ʔa(.)(.)ā", "%1u%2yā") or -- ʾadnā sub("^" .. AMAD .. CONSPAR .. A .. CONSPAR .. UOPT .. "$", HAMZA_ON_ALIF .. U .. "%1" .. SK .. "%2" .. AMAQ, "ʔā(.)a(.)u?", "ʔu%1%2ā") -- ʾālam "more painful", ʾāḵar "other" ) if not ret then error("Singular stem not an elative adjective: " .. sgar) end return ret, "inv" end if word == "cdf" then local ret = ( sub(ELCD_START .. SK .. CONSPAR .. A .. CONSPAR .. UOPT .. "$", "%1" .. A .. "%2" .. SK .. "%3" .. AA .. HAMZA, "ʔa(.)(.)a(.)u?", "%1a%2%3āʔ") or -- ʾaḥmar sub(ELCD_START .. A .. CONSPAR .. SH .. UOPT .. "$", "%1" .. A .. "%2" .. SH .. AA .. HAMZA, "ʔa(.)a(.)%2u?", "%1a%2%2āʔ") or -- ʾalaff sub(ELCD_START .. SK .. CONSPAR .. AAMAQ .. "$", "%1" .. A .. "%2" .. SK .. Y .. AA .. HAMZA, "ʔa(.)(.)ā", "%1a%2yāʔ") -- ʾaʿmā ) if not ret then error("Singular stem not a color/defect adjective: " .. sgar) end return ret, "cd" -- so plural will be correct end -- Regular feminine -- add ة, possibly with stem modifications if word == "rf" then sgar = canon_hamza(sgar) if rfind(sgar, TAM .. UNUOPT .. "$") then --Don't do this or we have problems when forming singulative from --collective with a construct modifier that's feminine --error("Singular stem is already feminine: " .. sgar) return sgar .. "/" .. sgtr, "tri" end local ret = ( sub(AN .. "[" .. ALIF .. AMAQ .. "]$", AAH, "an$", "āh") or -- ends in -an sub(IN .. "$", IY .. AH, "in$", "iya") or -- ends in -in sub(AOPT .. "[" .. ALIF .. AMAQ .. "]$", AAH, "ā$", "āh") or -- ends in alif or alif maqṣūra -- We separate the ʾiʿrāb and no-ʾiʿrāb cases even though we can -- do a single Arabic regexp to cover both because we want to -- remove u(n) from the translit only when ʾiʿrāb is present to -- lessen the risk of removing -un in the actual stem. We also -- allow for cases where the ʾiʿrāb is present in Arabic but not -- in translit. sub(UNU .. "$", AH, "un?$", "a", "$", "a") or -- anything else + -u(n) sub("$", AH, "$", "a") -- anything else ) return ret, "tri" end if word == "f" then if sgtype == "cd" then return export.stem_and_type("cdf", sg, sgtype, true, "sg", pos) elseif sgtype == "el" then return export.stem_and_type("elf", sg, sgtype, true, "sg", pos) elseif sgtype =="di" and is_intensive_adj(sgar) then return export.stem_and_type("intf", sg, sgtype, true, "sg", pos) elseif sgtype == "di" and is_elcd_adj(sgar) then -- If form is elative or color-defect, we don't know which of -- the two it is, and each has a special feminine which isn't -- the regular "just add ة", so shunt to unknown. This will -- ensure that ?'s appear in place of the inflection -- also -- for dual and plural. return export.stem_and_type("?", sg, sgtype, true, "sg", pos) else return export.stem_and_type("rf", sg, sgtype, true, "sg", pos) end end if word == "rm" then sgar = canon_hamza(sgar) --Don't do this or we have problems when forming collective from --singulative with a construct modifier that's not feminine, --e.g. شَجَرَة التُفَّاح --if not rfind(sgar, TAM .. UNUOPT .. "$") then -- error("Singular stem is not feminine: " .. sgar) --end local ret = ( sub(AAH .. UNUOPT .. "$", AN .. AMAQ, "ātun?$", "an", "ā[ht]$", "an") or -- in -āh sub(IY .. AH .. UNUOPT .. "$", IN, "iyatun?$", "in", "iya$", "in") or -- ends in -iya sub(AOPT .. TAM .. UNUOPT .. "$", "", "atun?$", "", "a$", "") or --ends in -a sub("$", "", "$", "") -- do nothing ) return ret, "tri" end if word == "m" then -- FIXME: handle cd (color-defect) -- FIXME: handle el (elative) -- FIXME: handle int (intensive) return export.stem_and_type("rm", sg, sgtype, false, "sg", pos) end -- The plural used for feminine adjectives. If the singular type is -- color/defect or it looks like a feminine color/defect adjective, -- use color/defect plural. Otherwise shunt to sound feminine plural. if word == "fp" then if sgtype == "cd" or is_feminine_cd_adj(sgar) then return export.stem_and_type("cdp", sg, sgtype, true, "pl", pos) else return export.stem_and_type("sfp", sg, sgtype, true, "pl", pos) end end if word == "sp" then if sgtype == "cd" then return export.stem_and_type("cdp", sg, sgtype, isfem, "pl", pos) elseif isfem then return export.stem_and_type("sfp", sg, sgtype, true, "pl", pos) elseif sgtype == "an" then return export.stem_and_type("awnp", sg, sgtype, false, "pl", pos) else return export.stem_and_type("smp", sg, sgtype, false, "pl", pos) end end -- Conservative plural, as used for masculine plural adjectives. -- If singular type is color-defect, shunt to color-defect plural; else -- shunt to unknown, so ? appears in place of the inflections. if word == "p" then if sgtype == "cd" then return export.stem_and_type("cdp", sg, sgtype, isfem, "pl", pos) else return export.stem_and_type("?", sg, sgtype, isfem, "pl", pos) end end -- Special plural used for paucal plurals of singulatives. If ends in -ة -- (most common), use strong feminine plural; if ends with -iyy (next -- most common), use strong masculine plural; ends default to "p" -- (conservative plural). if word == "paucp" then if rfind(sgar, TAM .. UNUOPT .. "$") then return export.stem_and_type("sfp", sg, sgtype, true, "pl", pos) elseif rfind(sgar, IY .. SH .. UNUOPT .. "$") then return export.stem_and_type("smp", sg, sgtype, false, "pl", pos) else return export.stem_and_type("p", sg, sgtype, isfem, "pl", pos) end end if word == "d" then sgar = canon_hamza(sgar) local ret = ( sub(AN .. "[" .. ALIF .. AMAQ .. "]$", AY .. AAN, "an$", "ayān") or -- ends in -an sub(IN .. "$", IY .. AAN, "in$", "iyān") or -- ends in -in sgtype == "lwinv" and sub(AOPTA .. "$", AT .. AAN, "[āa]$", "atān") or -- lwinv, ends in alif; allow translit with short -a sub(AOPT .. "[" .. ALIF .. AMAQ .. "]$", AY .. AAN, "ā$", "ayān") or -- ends in alif or alif maqṣūra -- We separate the ʾiʿrāb and no-ʾiʿrāb cases even though we can -- do a single Arabic regexp to cover both because we want to -- remove u(n) from the translit only when ʾiʿrāb is present to -- lessen the risk of removing -un in the actual stem. We also -- allow for cases where the ʾiʿrāb is present in Arabic but not -- in translit. -- -- NOTE: Collapsing the "h$" and "$" cases into "h?$" doesn't work -- in the case of words ending in -āh, which end up having the -- translit end in -tāntān. sub(TAM .. UNU .. "$", T .. AAN, "[ht]un?$", "tān", "h$", "tān", "$", "tān") or -- ends in tāʾ marbuṭa + -u(n) sub(TAM .. "$", T .. AAN, "h$", "tān", "$", "tān") or -- ends in tāʾ marbuṭa -- Same here as above sub(UNU .. "$", AAN, "un?$", "ān", "$", "ān") or -- anything else + -u(n) sub("$", AAN, "$", "ān") -- anything else ) return ret, "d" end -- Strong feminine plural in -āt, possibly with stem modifications if word == "sfp" then sgar = canon_hamza(sgar) sgar = rsub(sgar, AMAD .. "(" .. TAM .. UNUOPT .. ")$", HAMZA_PH .. AA .. "%1") sgar = rsub(sgar, HAMZA_ANY .. "(" .. AOPT .. TAM .. UNUOPT .. ")$", HAMZA_PH .. "%1") local ret = ( sub(AOPTA .. TAM .. UNUOPT .. "$", AYAAT, "ā[ht]$", "ayāt", "ātun?$", "ayāt") or -- ends in -āh sub(AOPT .. TAM .. UNUOPT .. "$", AAT, "a$", "āt", "atun?$", "āt") or -- ends in -a sub(AN .. "[" .. ALIF .. AMAQ .. "]$", AYAAT, "an$", "ayāt") or -- ends in -an sub(IN .. "$", IY .. AAT, "in$", "iyāt") or -- ends in -in sgtype == "inv" and ( sub(AOPT .. "[" .. ALIF .. AMAQ .. "]$", AYAAT, "ā$", "ayāt") -- ends in alif or alif maqṣūra ) or sgtype == "lwinv" and ( sub(AOPTA .. "$", AAT, "[āa]$", "āt") -- loanword ending in tall alif; allow translit with short -a ) or -- We separate the ʾiʿrāb and no-ʾiʿrāb cases even though we can -- do a single Arabic regexp to cover both because we want to -- remove u(n) from the translit only when ʾiʿrāb is present to -- lessen the risk of removing -un in the actual stem. We also -- allow for cases where the ʾiʿrāb is present in Arabic but not -- in translit. sub(UNU .. "$", AAT, "un?$", "āt", "$", "āt") or -- anything else + -u(n) sub("$", AAT, "$", "āt") -- anything else ) return ret, "sfp" end if word == "smp" then sgar = canon_hamza(sgar) local ret = ( sub(IN .. "$", UUN, "in$", "ūn") or -- ends in -in -- See comments above for why we have two cases, one for UNU and -- one for non-UNU sub(UNU .. "$", UUN, "un?$", "ūn", "$", "ūn") or -- anything else + -u(n) sub("$", UUN, "$", "ūn") -- anything else ) return ret, "smp" end -- Color/defect plural; singular must be masculine or feminine -- color/defect adjective if word == "cdp" then local ret = ( sub(ELCD_START .. SK .. W .. A .. CONSPAR .. UOPT .. "$", "%1" .. UU .. "%2", "ʔa(.)wa(.)u?", "%1ū%2") or -- ʾaswad sub(ELCD_START .. SK .. Y .. A .. CONSPAR .. UOPT .. "$", "%1" .. II .. "%2", "ʔa(.)ya(.)u?", "%1ī%2") or -- ʾabyaḍ sub(ELCD_START .. SK .. CONSPAR .. A .. CONSPAR .. UOPT .. "$", "%1" .. U .. "%2" .. SK .. "%3", "ʔa(.)(.)a(.)u?", "%1u%2%3") or -- ʾaḥmar sub(ELCD_START .. A .. CONSPAR .. SH .. UOPT .. "$", "%1" .. U .. "%2" .. SH, "ʔa(.)a(.)%2u?", "%1u%2%2") or -- ʾalaff sub(ELCD_START .. SK .. CONSPAR .. AAMAQ .. "$", "%1" .. U .. "%2" .. Y, "ʔa(.)(.)ā", "%1u%2y") or -- ʾaʿmā sub("^" .. CONSPAR .. A .. W .. SKOPT .. CONSPAR .. AA .. HAMZA .. UOPT .. "$", "%1" .. UU .. "%2", "(.)aw(.)āʔu?", "%1ū%2") or -- sawdāʾ sub("^" .. CONSPAR .. A .. Y .. SKOPT .. CONSPAR .. AA .. HAMZA .. UOPT .. "$", "%1" .. II .. "%2", "(.)ay(.)āʔu?", "%1ī%2") or -- bayḍāʾ sub("^" .. CONSPAR .. A .. CONSPAR .. SK .. CONSPAR .. AA .. HAMZA .. UOPT .. "$", "%1" .. U .. "%2" .. SK .. "%3", "(.)a(.)(.)āʔu?", "%1u%2%3") or -- ʾḥamrāʾ/ʿamyāʾ sub("^" .. CONSPAR .. A .. CONSPAR .. SH .. AA .. HAMZA .. UOPT .. "$", "%1" .. U .. "%2" .. SH, "(.)a(.)%2āʔu?", "%1u%2%2") -- laffāʾ ) if not ret then error("For 'cdp', singular must be masculine or feminine color/defect adjective: " .. sgar) end return ret, "tri" end if word == "awnp" then local ret = ( sub(AN .. "[" .. ALIF .. AMAQ .. "]$", AWSK .. N, "an$", "awn") -- ends in -an ) if not ret then error("For 'awnp', singular must end in -an: " .. sgar) end return ret, "awnp" end return artr, export.detect_type(ar, isfem, num, pos) end -- need LRM here so multiple Arabic plurals end up agreeing in order with -- the transliteration local outersep = LRM .. "; " local innersep = LRM .. "/" -- Subfunction of show_form(), used to implement recursively generating -- all combinations of elements from FORM and from each of the items in -- LIST_OF_MODS, both of which are either arrays of strings or arrays of -- arrays of strings, where the strings are in the form ARABIC/TRANSLIT, -- as described in show_form(). TRAILING_ARTRMODS is an array of ARTRMOD -- items, each of which is a two-element array of ARMOD (Arabic) and TRMOD -- (transliteration), accumulating all of the suffixes generated so far -- in the recursion process. Each time we recur we take the last MOD item -- off of LIST_OF_MODS, separate each element in MOD into its Arabic and -- Latin parts and to each Arabic/Latin pair we add all elements in -- TRAILING_ARTRMODS, passing the newly generated list of ARTRMOD items -- down the next recursion level with the shorter LIST_OF_MODS. We end up -- returning a string to insert into the Wiki-markup table. function show_form_1(form, list_of_mods, trailing_artrmods, use_parens) if #list_of_mods == 0 then local arabicvals = {} local latinvals = {} local parenvals = {} -- Accumulate separately the Arabic and transliteration into -- ARABICVALS and LATINVALS, then concatenate each down below. -- However, if USE_PARENS, we put each transliteration directly -- after the corresponding Arabic, in parens, and put the results -- in PARENVALS, which get concatenated below. (This is used in the -- title of the declension table.) for _, artrmod in ipairs(trailing_artrmods) do assert(#artrmod == 2) local armod = artrmod[1] local trmod = artrmod[2] for _, subform in ipairs(form) do local ar_span, tr_span local ar_subspan, tr_subspan local ar_subspans = {} local tr_subspans = {} if type(subform) ~= "table" then subform = {subform} end for _, subsubform in ipairs(subform) do local arabic, translit = split_arabic_tr(subsubform) if arabic == "-" then ar_subspan = "&mdash;" tr_subspan = "&mdash;" elseif arabic == "?" then ar_subspan = "?" tr_subspan = "?" else tr_subspan = (rfind(translit, BOGUS_CHAR) or rfind(trmod, BOGUS_CHAR)) and "?" or require("Module:script utilities").tag_translit(translit .. trmod, lang, "default", 'style="color: var(--wikt-palette-grey-8,#888);"') -- implement elision of al- after vowel tr_subspan = rsub(tr_subspan, "([aeiouāēīōū][ %-])a([sšṣtṯṭdḏḍzžẓnrḷl]%-)", "%1%2") tr_subspan = rsub(tr_subspan, "([aeiouāēīōū][ %-])a(llāh)", "%1%2") ar_subspan = m_links.full_link({lang = lang, term = arabic .. armod, tr = "-"}) end insert_if_not(ar_subspans, ar_subspan) insert_if_not(tr_subspans, tr_subspan) end ar_span = table.concat(ar_subspans, innersep) tr_span = table.concat(tr_subspans, innersep) if use_parens then table.insert(parenvals, ar_span .. " (" .. tr_span .. ")") else table.insert(arabicvals, ar_span) table.insert(latinvals, tr_span) end end end if use_parens then return table.concat(parenvals, outersep) else local arabic_span = table.concat(arabicvals, outersep) local latin_span = table.concat(latinvals, outersep) if arabic_span == "?" then return "?" else return arabic_span .. "<br />" .. latin_span end end else local last_mods = table.remove(list_of_mods) local artrmods = {} for _, mod in ipairs(last_mods) do if type(mod) ~= "table" then mod = {mod} end for _, submod in ipairs(mod) do local armod, trmod = split_arabic_tr(submod) -- If the value is -, we need to create a blank entry -- rather than skipping it; if we have no entries at any -- level, then there will be no overall entries at all -- because the inside of the loop at the next level will -- never be executed. if armod == "-" then armod = "" trmod = "" end if armod ~= "" then armod = ' ' .. armod end if trmod ~= "" then trmod = ' ' .. trmod end for _, trailing_artrmod in ipairs(trailing_artrmods) do local trailing_armod = trailing_artrmod[1] local trailing_trmod = trailing_artrmod[2] armod = armod .. trailing_armod trmod = trmod .. trailing_trmod artrmod = {armod, trmod} table.insert(artrmods, artrmod) end end end return show_form_1(form, list_of_mods, artrmods, use_parens) end end -- Generate a string to substitute into a particular form in a Wiki-markup -- table. FORM is the set of inflected forms corresponding to the base, -- either an array of strings (referring e.g. to different possible plurals) -- or an array of arrays of strings (the first level referring e.g. to -- different possible plurals and the inner level referring typically to -- hamza-spelling variants). LIST_OF_MODS is an array of MODS elements, one -- per modifier. Each MODS element is the set of inflected forms corresponding -- to the modifier and is of the same form as FORM, i.e. an array of strings -- or an array of arrays of strings. Each string is typically of the form -- "ARABIC/TRANSLIT", i.e. an Arabic string and a Latin string separated -- by a slash. We loop over all possible combinations of elements from -- each array; this requires recursion. function show_form(form, list_of_mods, use_parens) if not form then return "&mdash;" elseif type(form) ~= "table" then error("a non-table value was given in the list of inflected forms.") end if #form == 0 then return "&mdash;" end -- We need to start the recursion with the third parameter containing -- one blank element rather than no elements, otherwise no elements -- will be propagated to the next recursion level. return show_form_1(form, list_of_mods, {{"", ""}}, use_parens) end -- Create a Wiki-markup table using the values in DATA and the template in -- WIKICODE. function make_table(data, wikicode) -- Function used as replace arg of call to rsub(). Replace the -- specified param with its (HTML) value. The param references appear -- as {{{PARAM}}} in the wikicode. local function repl(param) if param == "pos" then return data.pos elseif param == "info" then return data.title and " (" .. data.title .. ")" or "" elseif rfind(param, "type$") then return table.concat(data.forms[param] or {"&mdash;"}, outersep .. "<br>") else local list_of_mods = {} for _, mod in ipairs(mod_list) do local mods = data.forms[mod .. "_" .. param] if not mods or #mods == 0 then -- We need one blank element rather than no element, -- otherwise no elements will be propagated from one -- recursion level to the next. mods = {""} end table.insert(list_of_mods, mods) end return show_form(data.forms[param], list_of_mods, param == "lemma") end end -- For states not in the list of those to be displayed, clear out the -- corresponding inflections so they appear as a dash. for _, state in ipairs(data.allstates) do if not contains(data.states, state) then for _, numgen in ipairs(data.numgens()) do for _, case in ipairs(data.allcases) do data.forms[case .. "_" .. numgen .. "_" .. state] = {} end end end end return rsub(wikicode, "{{{([a-z_]+)}}}", repl) .. m_utilities.format_categories(data.categories, lang) end -- Generate part of the noun table for a given number spec NUM (e.g. sg) function generate_noun_num(num) return [=[! ไม่ชี้เฉพาะ ! ชี้เฉพาะ ! construct |- ! ไม่ทางการ | {{{inf_]=] .. num .. [=[_ind}}} | {{{inf_]=] .. num .. [=[_def}}} | {{{inf_]=] .. num .. [=[_con}}} |- ! กรรตุการก | {{{nom_]=] .. num .. [=[_ind}}} | {{{nom_]=] .. num .. [=[_def}}} | {{{nom_]=] .. num .. [=[_con}}} |- ! กรรมการก | {{{acc_]=] .. num .. [=[_ind}}} | {{{acc_]=] .. num .. [=[_def}}} | {{{acc_]=] .. num .. [=[_con}}} |- ! สัมพันธการก | {{{gen_]=] .. num .. [=[_ind}}} | {{{gen_]=] .. num .. [=[_def}}} | {{{gen_]=] .. num .. [=[_con}}} ]=] end -- Make the noun table function make_noun_table(data) local wikicode = mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-top', args = { title = 'การผันรูปของ{{{pos}}} {{{lemma}}}', tall = 'yes', palette = "green", category = 'declension', class = 'tr-alongside', -- temp hack to prevent extra line break } } for _, num in ipairs(data.numbers) do if num == "du" then wikicode = wikicode .. [=[|- ! class="outer" | ทวิพจน์ ]=] .. generate_noun_num("du") else wikicode = wikicode .. [=[|- ! class="outer" rowspan=2 | ]=] .. data.engnumberscap[num] .. "\n" .. [=[ ! class="outer" style="font-style:normal" colspan=3 | {{{]=] .. num .. [=[_type}}} |- ]=] .. generate_noun_num(num) end end wikicode = wikicode .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' } return make_table(data, wikicode) end -- Generate part of the gendered-noun table for a given numgen spec -- NUM (e.g. m_sg) function generate_gendered_noun_num(num) return [=[|- ! ไม่ชี้เฉพาะ ! ชี้เฉพาะ ! construct ! ไม่ชี้เฉพาะ ! ชี้เฉพาะ ! construct |- ! ไม่ทางการ | {{{inf_m_]=] .. num .. [=[_ind}}} | {{{inf_m_]=] .. num .. [=[_def}}} | {{{inf_m_]=] .. num .. [=[_con}}} | {{{inf_f_]=] .. num .. [=[_ind}}} | {{{inf_f_]=] .. num .. [=[_def}}} | {{{inf_f_]=] .. num .. [=[_con}}} |- ! กรรตุการก | {{{nom_m_]=] .. num .. [=[_ind}}} | {{{nom_m_]=] .. num .. [=[_def}}} | {{{nom_m_]=] .. num .. [=[_con}}} | {{{nom_f_]=] .. num .. [=[_ind}}} | {{{nom_f_]=] .. num .. [=[_def}}} | {{{nom_f_]=] .. num .. [=[_con}}} |- ! กรรมการก | {{{acc_m_]=] .. num .. [=[_ind}}} | {{{acc_m_]=] .. num .. [=[_def}}} | {{{acc_m_]=] .. num .. [=[_con}}} | {{{acc_f_]=] .. num .. [=[_ind}}} | {{{acc_f_]=] .. num .. [=[_def}}} | {{{acc_f_]=] .. num .. [=[_con}}} |- ! สัมพันธการก | {{{gen_m_]=] .. num .. [=[_ind}}} | {{{gen_m_]=] .. num .. [=[_def}}} | {{{gen_m_]=] .. num .. [=[_con}}} | {{{gen_f_]=] .. num .. [=[_ind}}} | {{{gen_f_]=] .. num .. [=[_def}}} | {{{gen_f_]=] .. num .. [=[_con}}} ]=] end -- Make the gendered noun table function make_gendered_noun_table(data) local wikicode = mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-top', args = { title = 'การผันรูปของ{{{pos}}} {{{lemma}}}', tall = 'yes', palette = "green", category = 'declension', class = 'tr-alongside', -- temp hack to prevent extra line break } } for _, num in ipairs(data.numbers) do if num == "du" then wikicode = wikicode .. [=[|- ! class="outer" rowspan=2 | ทวิพจน์ ! class="outer" colspan=3 | เพศชาย ! class="outer" colspan=3 | เพศหญิง ]=] .. generate_gendered_noun_num("du") else wikicode = wikicode .. [=[|- ! class="outer" rowspan=3 | ]=] .. data.engnumberscap[num] .. "\n" .. [=[ ! class="outer" colspan=3 | เพศชาย ! class="outer" colspan=3 | เพศหญิง |- ! class="outer" style="font-style:normal" colspan=3 | {{{m_]=] .. num .. [=[_type}}} ! class="outer" style="font-style:normal" colspan=3 | {{{f_]=] .. num .. [=[_type}}} ]=] .. generate_gendered_noun_num(num) end end wikicode = wikicode .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' } return make_table(data, wikicode) end -- Generate part of the adjective table for a given numgen spec NUM (e.g. m_sg) function generate_adj_num(num) return [=[|- ! ไม่ชี้เฉพาะ ! ชี้เฉพาะ ! ไม่ชี้เฉพาะ ! ชี้เฉพาะ |- ! ไม่ทางการ | {{{inf_m_]=] .. num .. [=[_ind}}} | {{{inf_m_]=] .. num .. [=[_def}}} | {{{inf_f_]=] .. num .. [=[_ind}}} | {{{inf_f_]=] .. num .. [=[_def}}} |- ! กรรตุการก | {{{nom_m_]=] .. num .. [=[_ind}}} | {{{nom_m_]=] .. num .. [=[_def}}} | {{{nom_f_]=] .. num .. [=[_ind}}} | {{{nom_f_]=] .. num .. [=[_def}}} |- ! กรรมการก | {{{acc_m_]=] .. num .. [=[_ind}}} | {{{acc_m_]=] .. num .. [=[_def}}} | {{{acc_f_]=] .. num .. [=[_ind}}} | {{{acc_f_]=] .. num .. [=[_def}}} |- ! สัมพันธการก | {{{gen_m_]=] .. num .. [=[_ind}}} | {{{gen_m_]=] .. num .. [=[_def}}} | {{{gen_f_]=] .. num .. [=[_ind}}} | {{{gen_f_]=] .. num .. [=[_def}}} ]=] end -- Make the adjective table function make_adj_table(data) local wikicode = mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-top', args = { title = 'การผันรูปของ{{{pos}}} {{{lemma}}}', tall = 'yes', palette = "green", category = 'declension', class = 'tr-alongside', -- temp hack to prevent extra line break } } if contains(data.numbers, "sg") then wikicode = wikicode .. [=[|- ! class="outer" rowspan=3 | เอกพจน์ ! class="outer" colspan=2 | เพศชาย ! class="outer" colspan=2 | เพศหญิง |- ! class="outer" style="font-style:normal" colspan=2 | {{{m_sg_type}}} ! class="outer" style="font-style:normal" colspan=2 | {{{f_sg_type}}} ]=] .. generate_adj_num("sg") end if contains(data.numbers, "du") then wikicode = wikicode .. [=[|- ! class="outer" rowspan=2 | ทวิพจน์ ! class="outer" colspan=2 | เพศชาย ! class="outer" colspan=2 | เพศหญิง ]=] .. generate_adj_num("du") end if contains(data.numbers, "pl") then wikicode = wikicode .. [=[|- ! class="outer" rowspan=3 | พหูพจน์ ! class="outer" colspan=2 | เพศชาย ! class="outer" colspan=2 | เพศหญิง |- ! class="outer" style="font-style:normal" colspan=2 | {{{m_pl_type}}} ! class="outer" style="font-style:normal" colspan=2 | {{{f_pl_type}}} ]=] .. generate_adj_num("pl") end wikicode = wikicode .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' } return make_table(data, wikicode) end return export -- For Vim, so we get 4-space tabs -- vim: set ts=4 sw=4 noet: t4vif5wycnpwk8f7hfqb9y50pr5iarr اسم 0 244596 5723280 1874378 2026-05-20T05:02:29Z OctraBot 3198 /* ภาษาอาหรับ */ เก็บกวาด 5723280 wikitext text/x-wiki == ภาษาอาหรับ == === รากศัพท์ 1 === {{etymon|ar|id=name|:inh|sem-pro:*šim-<id:name>|:root|ar:و س م<id:root>|ar:س م و<id:root>}} จาก{{inh|ar|sem-pro|*šim-}}, จาก{{inh|ar|afa-pro|*sim-|t=ชื่อ}}; Leveled in Arabic to the roots {{ar-root|و س م}} and {{ar-root|س م و}}. ร่วมเชื้อสายกับ{{cog|he|שם|tr=shém}}, {{cog|am|ስም|tr=sɨm}}. ==== การออกเสียง ==== {{ar-pr|اِسْم}} * {{audio|ar|Ar-اسم.ogg}} ** {{a|afb|Gulf}} {{IPA|afb|/ɪ.sɪm/}} ==== คำนาม ==== {{ar-noun|اِسْم|m|pl=أَسْمَاء,أَسَامٍ}} # [[ชื่อ]] #: {{uxa|ar|مَا '''ٱسْمُكَ'''؟|What is '''your name'''?}} #: {{uxa|ar|'''بِسْمِ''' اللّٰهِ الرَّحْمٰنِ الرَّحِيمِ|'''in the name of''' God, the Merciful, the Compassionate}} #: {{uxa|ar|'''بِسْمِ''' ٱلْآبِ وَٱلِٱبْنِ وَٱلرُّوحِ ٱلْقُدُسِ|'''In the name of''' the Father, the Son, and the Holy Ghost}} # [[สมญา]], [[ฉายา]] # [[ชื่อเสียง]], [[เกียรติยศ]] # {{C|ar|Nouns|Parts of speech}} {{lb|ar|grammar}} [[noun]] {{gloss|a category above, including [[pronoun]]s and [[substantive]]s like [[adjective]]s and [[participle]]s, ''see the derived terms to get a picture of the usage''}} ===== การผันรูป ===== {{ar-decl-noun|اِسْم|m|pl=أَسْمَاء|pl2=أَسَامٍ}} ===== ลูกคำ ===== {{col|ar |اَلْأَسْمَاء الْخَمْسَة<t:the five nouns> |اِسْم آلَة<t:nomen instrumenti> |اِسْم إِشَارَة<t:pronomen demonstrativum> |اِسْم اِسْتِفْهَام<t:pronomen interrogativum> |اِسْم تَفْضِيل<t:elativus> |اِسْم جَمْع<t:nomen generis> |اِسْم جِنْس إِفْرَادِيّ |اِسْم جِنْس جَمْعِيّ |اِسْم جِنْس<t:nomen appellativum> |اِسْم زَمَان<t:nomen temporis> |اِسْم عَدَد<t:nomen numeri> |اِسْم عَلَم<t:nomen proprium> |اِسْم فَاعِل<t:participium activum> |اِسْم مَرَّة<t:nomen vicis> |اِسْم مَفْعُول<t:participium passivum> |اِسْم مَقْصُور<t:noun ending in {{l|ar|ى}} or {{l|ar|ا}}> |اِسْم مَكَان<t:nomen loci> |اِسْم مَنْقُوص<t:noun ending in {{l|ar|ـٍ}}> |اِسْم مَوْصُول<t:pronomen relativum> |اِسْم نَوْع<t:nomen speciei> |اِسْم هَيْئَة<t:nomen speciei> |اِسْم وَحْدَة<t:nomen unitatis> |اِسْم وِعَاء<t:nomen vasis> |اِسْمِيّ<t:[[nominal]], [[titular]]> }} ===== คำสืบทอด ===== {{top2}} * {{desc|acy|ism}} * {{desc|arz|اسم|tr=ism}} * {{desc|acw|اسم|tr=isim}} * {{desc|mt|isem}} * {{desc|ary|اسم|tr=ism}} * {{desc|aeb|اسم|tr=ism}} * {{desc|az|isim|bor=1}} * {{desctree|fa-cls|اِسْم|bor=1}} * {{desc|ms|isim|bor=1}} * {{desc|sw|isimu|bor=1}} {{bottom}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{ar-verb form|+سما<I>}} === อ่านเพิ่ม === * {{R:ar:Freytag|volume=2|pages=359–360}} * {{cite-book|editors=Manuel Sartori, Manuela E. B. Giolfo, Philippe Cassuto|title=Approaches to the History and Dialectology of Arabic in Honor of Pierre Larcher|chapter=The Seven Deadly Sins of Arabic Studies|page=519–521|year=2017|publisher=Brill|location=Leiden|author=Carter, Michael George|series=Studies in Semitic Languages and Linguistics|seriesvolume=88|isbn=978-90-04-31150-3}} * {{cite-web|last=Kasher|first=Almog|title=Term Ism in Medieval Arabic Grammatical Tradition: A Hyponym of Itself|url=https://academic.oup.com/jss/article-abstract/54/2/459/1735368|work=Journal of Semitic Studies|publisher=Oxford Academix|date=1 October 2009|accessdate=26 October 2018}} * {{R:ar:Wehr-4|سم}} {{cln|ar|autohyponyms|autological terms}} ifoakvqrer8kkoeee02ja94d9y38heo 5723281 5723280 2026-05-20T05:03:06Z OctraBot 3198 /* คำนาม */ 5723281 wikitext text/x-wiki == ภาษาอาหรับ == === รากศัพท์ 1 === {{etymon|ar|id=name|:inh|sem-pro:*šim-<id:name>|:root|ar:و س م<id:root>|ar:س م و<id:root>}} จาก{{inh|ar|sem-pro|*šim-}}, จาก{{inh|ar|afa-pro|*sim-|t=ชื่อ}}; Leveled in Arabic to the roots {{ar-root|و س م}} and {{ar-root|س م و}}. ร่วมเชื้อสายกับ{{cog|he|שם|tr=shém}}, {{cog|am|ስም|tr=sɨm}}. ==== การออกเสียง ==== {{ar-pr|اِسْم}} * {{audio|ar|Ar-اسم.ogg}} ** {{a|afb|Gulf}} {{IPA|afb|/ɪ.sɪm/}} ==== คำนาม ==== {{ar-noun|اِسْم|m|pl=أَسْمَاء,أَسَامٍ}} # [[ชื่อ]], [[นาม]] #: {{uxa|ar|مَا '''ٱسْمُكَ'''؟|What is '''your name'''?}} #: {{uxa|ar|'''بِسْمِ''' اللّٰهِ الرَّحْمٰنِ الرَّحِيمِ|'''in the name of''' God, the Merciful, the Compassionate}} #: {{uxa|ar|'''بِسْمِ''' ٱلْآبِ وَٱلِٱبْنِ وَٱلرُّوحِ ٱلْقُدُسِ|'''In the name of''' the Father, the Son, and the Holy Ghost}} # [[สมญา]], [[ฉายา]] # [[ชื่อเสียง]], [[เกียรติยศ]] # {{C|ar|Nouns|Parts of speech}} {{lb|ar|grammar}} [[noun]] {{gloss|a category above, including [[pronoun]]s and [[substantive]]s like [[adjective]]s and [[participle]]s, ''see the derived terms to get a picture of the usage''}} ===== การผันรูป ===== {{ar-decl-noun|اِسْم|m|pl=أَسْمَاء|pl2=أَسَامٍ}} ===== ลูกคำ ===== {{col|ar |اَلْأَسْمَاء الْخَمْسَة<t:the five nouns> |اِسْم آلَة<t:nomen instrumenti> |اِسْم إِشَارَة<t:pronomen demonstrativum> |اِسْم اِسْتِفْهَام<t:pronomen interrogativum> |اِسْم تَفْضِيل<t:elativus> |اِسْم جَمْع<t:nomen generis> |اِسْم جِنْس إِفْرَادِيّ |اِسْم جِنْس جَمْعِيّ |اِسْم جِنْس<t:nomen appellativum> |اِسْم زَمَان<t:nomen temporis> |اِسْم عَدَد<t:nomen numeri> |اِسْم عَلَم<t:nomen proprium> |اِسْم فَاعِل<t:participium activum> |اِسْم مَرَّة<t:nomen vicis> |اِسْم مَفْعُول<t:participium passivum> |اِسْم مَقْصُور<t:noun ending in {{l|ar|ى}} or {{l|ar|ا}}> |اِسْم مَكَان<t:nomen loci> |اِسْم مَنْقُوص<t:noun ending in {{l|ar|ـٍ}}> |اِسْم مَوْصُول<t:pronomen relativum> |اِسْم نَوْع<t:nomen speciei> |اِسْم هَيْئَة<t:nomen speciei> |اِسْم وَحْدَة<t:nomen unitatis> |اِسْم وِعَاء<t:nomen vasis> |اِسْمِيّ<t:[[nominal]], [[titular]]> }} ===== คำสืบทอด ===== {{top2}} * {{desc|acy|ism}} * {{desc|arz|اسم|tr=ism}} * {{desc|acw|اسم|tr=isim}} * {{desc|mt|isem}} * {{desc|ary|اسم|tr=ism}} * {{desc|aeb|اسم|tr=ism}} * {{desc|az|isim|bor=1}} * {{desctree|fa-cls|اِسْم|bor=1}} * {{desc|ms|isim|bor=1}} * {{desc|sw|isimu|bor=1}} {{bottom}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{ar-verb form|+سما<I>}} === อ่านเพิ่ม === * {{R:ar:Freytag|volume=2|pages=359–360}} * {{cite-book|editors=Manuel Sartori, Manuela E. B. Giolfo, Philippe Cassuto|title=Approaches to the History and Dialectology of Arabic in Honor of Pierre Larcher|chapter=The Seven Deadly Sins of Arabic Studies|page=519–521|year=2017|publisher=Brill|location=Leiden|author=Carter, Michael George|series=Studies in Semitic Languages and Linguistics|seriesvolume=88|isbn=978-90-04-31150-3}} * {{cite-web|last=Kasher|first=Almog|title=Term Ism in Medieval Arabic Grammatical Tradition: A Hyponym of Itself|url=https://academic.oup.com/jss/article-abstract/54/2/459/1735368|work=Journal of Semitic Studies|publisher=Oxford Academix|date=1 October 2009|accessdate=26 October 2018}} * {{R:ar:Wehr-4|سم}} {{cln|ar|autohyponyms|autological terms}} le3qu62gdlqt0vg0oygyey4nlgoqzhn 5723282 5723281 2026-05-20T05:04:34Z OctraBot 3198 /* คำนาม */ 5723282 wikitext text/x-wiki == ภาษาอาหรับ == === รากศัพท์ 1 === {{etymon|ar|id=name|:inh|sem-pro:*šim-<id:name>|:root|ar:و س م<id:root>|ar:س م و<id:root>}} จาก{{inh|ar|sem-pro|*šim-}}, จาก{{inh|ar|afa-pro|*sim-|t=ชื่อ}}; Leveled in Arabic to the roots {{ar-root|و س م}} and {{ar-root|س م و}}. ร่วมเชื้อสายกับ{{cog|he|שם|tr=shém}}, {{cog|am|ስም|tr=sɨm}}. ==== การออกเสียง ==== {{ar-pr|اِسْم}} * {{audio|ar|Ar-اسم.ogg}} ** {{a|afb|Gulf}} {{IPA|afb|/ɪ.sɪm/}} ==== คำนาม ==== {{ar-noun|اِسْم|m|pl=أَسْمَاء,أَسَامٍ}} # [[ชื่อ]], [[นาม]] #: {{uxa|ar|مَا '''ٱسْمُكَ'''؟|What is '''your name'''?}} #: {{uxa|ar|'''بِسْمِ''' اللّٰهِ الرَّحْمٰنِ الرَّحِيمِ|'''in the name of''' God, the Merciful, the Compassionate}} #: {{uxa|ar|'''بِسْمِ''' ٱلْآبِ وَٱلِٱبْنِ وَٱلرُّوحِ ٱلْقُدُسِ|'''In the name of''' the Father, the Son, and the Holy Ghost}} # [[สมญา]], [[ฉายา]] # [[ชื่อเสียง]], [[เกียรติยศ]] # {{C|ar|Nouns|Parts of speech}} {{lb|ar|grammar}} [[คำนาม]] {{gloss|รวมทุกประเภทไปถึง[[คำสรรพนาม]]และคำอื่นที่ใช้เป็นคำนาม}} ===== การผันรูป ===== {{ar-decl-noun|اِسْم|m|pl=أَسْمَاء|pl2=أَسَامٍ}} ===== ลูกคำ ===== {{col|ar |اَلْأَسْمَاء الْخَمْسَة<t:the five nouns> |اِسْم آلَة<t:nomen instrumenti> |اِسْم إِشَارَة<t:pronomen demonstrativum> |اِسْم اِسْتِفْهَام<t:pronomen interrogativum> |اِسْم تَفْضِيل<t:elativus> |اِسْم جَمْع<t:nomen generis> |اِسْم جِنْس إِفْرَادِيّ |اِسْم جِنْس جَمْعِيّ |اِسْم جِنْس<t:nomen appellativum> |اِسْم زَمَان<t:nomen temporis> |اِسْم عَدَد<t:nomen numeri> |اِسْم عَلَم<t:nomen proprium> |اِسْم فَاعِل<t:participium activum> |اِسْم مَرَّة<t:nomen vicis> |اِسْم مَفْعُول<t:participium passivum> |اِسْم مَقْصُور<t:noun ending in {{l|ar|ى}} or {{l|ar|ا}}> |اِسْم مَكَان<t:nomen loci> |اِسْم مَنْقُوص<t:noun ending in {{l|ar|ـٍ}}> |اِسْم مَوْصُول<t:pronomen relativum> |اِسْم نَوْع<t:nomen speciei> |اِسْم هَيْئَة<t:nomen speciei> |اِسْم وَحْدَة<t:nomen unitatis> |اِسْم وِعَاء<t:nomen vasis> |اِسْمِيّ<t:[[nominal]], [[titular]]> }} ===== คำสืบทอด ===== {{top2}} * {{desc|acy|ism}} * {{desc|arz|اسم|tr=ism}} * {{desc|acw|اسم|tr=isim}} * {{desc|mt|isem}} * {{desc|ary|اسم|tr=ism}} * {{desc|aeb|اسم|tr=ism}} * {{desc|az|isim|bor=1}} * {{desctree|fa-cls|اِسْم|bor=1}} * {{desc|ms|isim|bor=1}} * {{desc|sw|isimu|bor=1}} {{bottom}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{ar-verb form|+سما<I>}} === อ่านเพิ่ม === * {{R:ar:Freytag|volume=2|pages=359–360}} * {{cite-book|editors=Manuel Sartori, Manuela E. B. Giolfo, Philippe Cassuto|title=Approaches to the History and Dialectology of Arabic in Honor of Pierre Larcher|chapter=The Seven Deadly Sins of Arabic Studies|page=519–521|year=2017|publisher=Brill|location=Leiden|author=Carter, Michael George|series=Studies in Semitic Languages and Linguistics|seriesvolume=88|isbn=978-90-04-31150-3}} * {{cite-web|last=Kasher|first=Almog|title=Term Ism in Medieval Arabic Grammatical Tradition: A Hyponym of Itself|url=https://academic.oup.com/jss/article-abstract/54/2/459/1735368|work=Journal of Semitic Studies|publisher=Oxford Academix|date=1 October 2009|accessdate=26 October 2018}} * {{R:ar:Wehr-4|سم}} {{cln|ar|autohyponyms|autological terms}} mkqo29dy8iq4hc9kb16egyct0n63z6t فأرة 0 255356 5723283 1070101 2026-05-20T05:06:45Z OctraBot 3198 เก็บกวาด 5723283 wikitext text/x-wiki == ภาษาอาหรับ == === คำนาม === {{ar-sing-noun|فَأْرَة|pl=فِئْرَان|coll=+}} # [[หนู]] ==== การผันรูป ==== {{ar-decl-sing-noun|فَأْرَة|pl=فِئْرَان}} 3fz8y8ic11m9wvjvib0mpnhzh0uqm3g แม่แบบ:ar-sing-noun 10 255357 5723284 1070102 2026-05-20T05:07:32Z OctraBot 3198 5723284 wikitext text/x-wiki {{#invoke:ar-headword|show|คำเอกนาม}}<!-- --><noinclude>{{documentation}}</noinclude> rqu583x9dzkr5li30m1oog81z0yhlyk มอดูล:form of/data/2 828 272890 5723276 5715166 2026-05-20T04:53:53Z OctraBot 3198 5723276 Scribunto text/plain --[=[ This module lists the less common recognized inflection tags, in the same format as for [[Module:form of/data/1]] (which contains the more common tags). We split the tags this way to save memory, so we avoid loading the less common tags in the majority of cases. ]=] local m_form_of_data = require("Module:form of/data") local APPENDIX = m_form_of_data.APPENDIX local WP = m_form_of_data.WP local WIKT = m_form_of_data.WIKT local tags = {} local shortcuts = {} ----------------------- Person ----------------------- tags["บุรุษที่สี่"] = { "person", "wikt:fourth person", {"4", "fourth-person", "fourth person"}, 3348541, } tags["second-person-object form"] = { "person", APPENDIX, "2o", } ----------------------- Number ----------------------- tags["associative plural"] = { "number", WIKT, {"ass p", "ass pl", "assoc p", "assoc pl"}, } tags["collective"] = { "number", "collective number", "col", 694268, } tags["collective-possession"] = { "number", "collective number", {"cpos", "colpos"}, } tags["distributive paucal"] = { "number", WIKT, "dpau", } tags["ตัวบอกความน้อย"] = { "number", WIKT, {"pau", "paucal"}, 489410, } tags["singulative"] = { "number", "singulative number", "sgl", 1450795, } tags["transnumeral"] = { "number", APPENDIX, "trn", 113631596, display = "เอกพจน์หรือพหูพจน์", } tags["ไตรพจน์"] = { "number", APPENDIX, {"tri", "trial", "trial number"}, 2142560, } ----------------------- Gender ----------------------- tags["natural feminine"] = { "gender", "gender", "natf", } tags["virile"] = { "gender", APPENDIX, "vr", } ----------------------- Animacy ----------------------- ----------------------- Tense/aspect ----------------------- tags["abtemporal"] = { "tense-aspect", WIKT, "abtemp", } tags["anterior"] = { "tense-aspect", "w:relative and absolute tense", "ant", } tags["cessative"] = { "tense-aspect", WP, "cess", 17027342, } -- Aspect in Tagalog; presumably similar to the perfect tense/aspect but not necessarily similar enough to use the same -- Wikidata ID tags["complete"] = { "tense-aspect", "w:Tagalog grammar#Aspect", "compl", } tags["concomitant"] = { "tense-aspect", WIKT, "concom", } tags["confirmative"] = { "tense-aspect", WIKT, "conf", } -- Aspect in Tagalog tags["contemplative"] = { "tense-aspect", "w:Tagalog grammar#Aspect", "contem", } tags["contemporal"] = { "tense-aspect", WIKT, "contemp", } tags["continuative"] = { "tense-aspect", WP, nil, 28130104, } tags["continuous"] = { "tense-aspect", "w:continuous aspect", "cont", 12721117, } tags["delimitative"] = { "tense-aspect", "w:delimitative aspect", "delim", 5316270, } tags["durative"] = { "tense-aspect", WP, "dur", } tags["futuritive"] = { "tense-aspect", WP, {"futv", "futrv"}, } tags["frequentative"] = { "tense-aspect", WP, "freq", 467562, } tags["habitual"] = { "tense-aspect", "w:habitual aspect", "hab", 5636904, } -- same as the habitual; used in Mongolian linguistics tags["habitive"] = { "tense-aspect", WP, "habv", } tags["immediative"] = { "tense-aspect", WIKT, {"imm", "immed"}, } tags["incidental"] = { "tense-aspect", WIKT, "incid", } tags["iterative"] = { "tense-aspect", "w:iterative aspect", "iter", 2866772, } tags["momentane"] = { "tense-aspect", WP, nil, 6897160, } tags["momentaneous"] = { "tense-aspect", WIKT, "mom", 115110791, } tags["posterior"] = { "tense-aspect", "w:relative and absolute tense", "post", } tags["preconditional"] = { "tense-aspect", WIKT, "precond", } -- Type of participle in Hindi; also called agentive or agentive-prospective tags["prospective"] = { "tense-aspect", "w:prospective aspect", "pros", } tags["purposive"] = { "tense-aspect", WIKT, "purp", } -- Aspect in Tagalog; presumably similar to the perfect tense/aspect but not necessarily similar enough to use the same -- Wikidata ID tags["recently complete"] = { "tense-aspect", "w:Tagalog grammar#Aspect", "rcompl", } tags["resultative"] = { "tense-aspect", WP, "res", 7316356, } tags["semelfactive"] = { "tense-aspect", WP, "semf", 7449203, } tags["serial"] = { "tense-aspect", WIKT, "ser", } tags["successive"] = { "tense-aspect", WIKT, "succ", } -- be careful not to clash with terminative case tag tags["terminative aspect"] = { "tense-aspect", "w:cessative aspect", "term", display = "terminative", } ----------------------- Mood ----------------------- tags["benedictive"] = { "mood", WP, "bened", 4887358, } tags["cohortative"] = { "mood", "w:cohortative mood", {"coho", "cohort"}, } tags["concessive"] = { "mood", WIKT, "conc", } tags["contrafactual"] = { "mood", WIKT, "cfact", 110323459, } -- Same as the contrafactual, but terminology depends on language. tags["counterfactual"] = { "mood", WP, "counterf", 1783264, -- for "counterfactual conditional" } tags["desiderative"] = { "mood", WP, {"des", "desid"}, 1200631, } tags["dubitative"] = { "mood", "w:dubitative mood", "dub", 1263049, } tags["energetic"] = { "mood", "w:energetic mood", "ener", } tags["inferential"] = { "mood", "w:inferential mood", {"infer", "infr"}, -- Per [[w:inferential mood]], also called "renarrative mood" or (in Estonian) "oblique mood" (but -- "renarrative mood" may be different, see its entry). 3332616, } -- It's not clear that this is exactly a mood, but I'm not sure where -- else to group it tags["intensive"] = { "mood", WP, "inten", 10965321, -- for "intensive word form" } tags["intentional"] = { "mood", WIKT, "intent", } tags["มาลาถาม"] = { "mood", WP, {"interr", "interrog", "interrogative"}, 12021746, } tags["necessitative"] = { "mood", WIKT, "nec", } tags["permissive"] = { "mood", "w:permissive mood", "perm", 4351483, } tags["potential"] = { "mood", "w:potential mood", "potn", 2296856, } tags["precative"] = { "mood", WIKT, "prec", } tags["prescriptive"] = { "mood", WIKT, "prescr", } tags["presumptive"] = { "mood", "w:presumptive mood", "presump", 25463575, } -- Exists at least in Estonian tags["quotative"] = { "mood", "w:quotative evidential mood", "quot", -- 7272884, -- this is for "quotative" morphemes, not the same } tags["renarrative"] = { "mood", "w:renarrative mood", "renarr", -- Per [[w:inferential mood]], renarrative and inferential mood are the same; but per -- [[w:Bulgarian verbs#Evidentials]], they are different, and Bulgarian has both. 3332616, } tags["volitive"] = { "mood", "w:volitive mood", "voli", 10716592, } tags["voluntative"] = { "mood", WIKT, {"voln", "volun"}, } ----------------------- Voice/valence ----------------------- tags["antipassive"] = { "voice-valence", "w:antipassive voice", {"apass", "apasv", "apsv"}, 287232, } tags["applicative"] = { "voice-valence", "w:applicative voice", "appl", 621634, } tags["cooperative"] = { -- ("all together") used in Mongolian "voice-valence", "wikt:cooperative voice", "coop", 114033228, } tags["pluritative"] = { -- ("many together") used in Mongolian "voice-valence", "wikt:pluritative voice", "plur", 114033289, } tags["reciprocal"] = { "voice-valence", "w:reciprocal (grammar)", {"recp", "recip"}, 1964083, } -- Specific to Modern Irish, similar to impersonal tags["autonomous"] = { "voice-valence", WIKT, "auton", } ----------------------- Non-finite ----------------------- -- be careful not to clash with agentive case tag tags["agentive"] = { "non-finite", "w:agent noun", {"ag", "agent"}, } -- Latin etc. tags["gerundive"] = { "non-finite", WP, "gerv", 731298, -- Wikidata claims this is a grammatical mood, which is not really correct } -- Old Irish etc. tags["verbal of necessity"] = { "non-finite", "w:gerundive", "verbnec", 731298, -- gerundive } tags["l-participle"] = { "non-finite", "participle", {"l-ptcp", "lptcp"}, 814722, -- "participle" } -- Finnish agent participle tags["agent participle"] = { "non-finite", "w:Finnish grammar#Agent participle", "agentpart", } -- Hungarian participle tags["verbal participle"] = { "non-finite", WIKT, nil, 2361676, -- attributive verb, aka verbal participle } tags["converb"] = { "non-finite", WP, "conv", 149761, } tags["connegative"] = { "non-finite", APPENDIX, {"conn", "conneg"}, 5161718, } -- Occurs in Hindi as a type of participle used to conjoin two clauses; similarly occurs in Japanese as the "te-form" tags["conjunctive"] = { "non-finite", "w:serial verb construction", -- FIXME! No good link for "conjunctive"; another possibility is "converb" "conj", } tags["absolutive verb form"] = { "non-finite", "wikt:absolutive#Noun", "absvf", display = "absolutive", } -- FIXME! Should this be a mood? tags["debitive"] = { "non-finite", WP, "deb", 17119041, } ----------------------- Case ----------------------- tags["abessive"] = { "case", "w:abessive case", "abe", 319822, } tags["absolutive"] = { "case", "w:absolutive case", "absv", -- FIXME, find uses of "abs" = absolutive 332734, } tags["adessive"] = { "case", "w:adessive case", "ade", 281954, } -- be careful not to clash with adverbial grammar tag tags["วิเศษณการก"] = { "case", WP, {"advc", "adverbial case"}, --display = "adverbial", } -- be careful not to clash with agentive non-finite tag tags["agentive case"] = { "case", WP, "agc", display = "agentive", } tags["allative"] = { "case", "wikt:allative case", "all", 655020, } --No evidence of the existence of this case on the web, and the shortcuts are better used elsewhere. --tags["anterior"] = { -- "case", -- nil, -- {"ant"}, --} tags["associative"] = { "case", "w:associative case", {"ass", "assoc"}, 15948746, } tags["อุปถัมภการก"] = { "case", "w:benefactive case", {"ben", "bene", "benefactive", "benefactive case"}, 664905, } tags["causal"] = { "case", "w:causal case", {"cauc", "causc"}, 2943136, } tags["causal-final"] = { "case", "w:causal-final case", {"cfi", "cfin"}, 18012653, } tags["comitative"] = { "case", "w:comitative case", "com", 838581, } -- be careful not to clash with comparative degree tags["comparative case"] = { "case", WP, "comc", 5155633, display = "comparative", } tags["delative"] = { "case", "w:delative case", "del", 1183901, } tags["การกตรง"] = { "case", APPENDIX, {"dir", "direct", "direct case"}, 1751855, } tags["directive"] = { "case", "wikt:directive case", "dirc", 56526905, } tags["distributive"] = { "case", "w:distributive case", {"dis", "dist", "distr"}, 492457, } tags["elative"] = { "case", "elative case", "ela", 394253, } tags["สาธกการก"] = { "case", APPENDIX, {"erg", "ergative", "ergative case"}, 324305, } -- be careful not to clash with equative degree tag tags["equative"] = { "case", "w:equative case", "equc", 3177653, } tags["essive-formal"] = { "case", "w:essive-formal case", {"esf", "efor"}, 3827688, } tags["essive-modal"] = { "case", "w:essive-modal case", {"esm", "emod"}, 3827703, } tags["essive"] = { "case", "w:essive case", "ess", 148465, } --No evidence of the existence of this case on the web, and the shortcuts are better used elsewhere. --tags["exclusive"] = { -- "case", -- nil, -- {"exc", "excl"}, --} tags["illative"] = { "case", "w:illative case", "ill", 474668, } --[=[ ใช้รวมกับ oblique tags["indirect"] = { "case", "w:direct case", "indir", 1233197, -- Same as oblique. } --]=] tags["inessive"] = { "case", "w:inessive case", "ine", 282031, } tags["instructive"] = { "case", "w:instructive case", "ist", 1665275, } tags["lative"] = { "case", "w:lative case", "lat", 260425, } tags["limitative"] = { "case", "w:list of grammatical cases", "lim", 35870079, } tags["locative-qualitative"] = { "case", "locative-qualitative case", {"lqu", "lqua"}, } tags["objective"] = { "case", "objective case", "objv", -- obj used for "object" 1233197, -- Same as oblique. } tags["การกอ้อม"] = { "case", APPENDIX, {"obl", "oblique", "oblique case", "indir", "indirect", "indirect case"}, 1233197, } tags["ภาคยการก"] = { "case", APPENDIX, {"ptv", "par", "partitive", "partitive case"}, 857325, } --certain languages use this term for the abessive tags["privative"] = { "case", "w:privative case", "priv", 319822, } tags["prolative"] = { "case", "w:prolative case", {"pro", "prol"}, 952933, } tags["สหัตถการก"] = { "case", "w:sociative case", {"soc", "sociative", "sociative case"}, 3773161, } tags["subjective"] = { "case", "w:subjective case", {"subjv", "sbjv"}, -- "sub" and "subj" used for subjunctive, "sbj" for "subject" 131105, -- Same as nominative. } tags["sublative"] = { "case", "w:sublative case", {"sbl", "subl"}, 2120615, } tags["superessive"] = { "case", "w:superessive case", {"spe", "supe"}, 222355, } tags["temporal"] = { "case", "w:temporal case", {"tem", "temp"}, 3235219, } -- be careful not to clash with terminative aspect tag tags["terminative case"] = { "case", "w:terminative case", "ter", 747019, display = "terminative", } tags["translative"] = { "case", "w:translative case", {"tra", "tran"}, 950170, } ----------------------- State ----------------------- tags["independent genitive"] = { "state", WIKT, "indgen", } tags["possessor"] = { "state", WIKT, {"posr", "possr"}, } tags["reflexive possessive"] = { "state", WIKT, {"reflposs", "refl poss"}, } tags["substantive"] = { "state", APPENDIX, {"subs", "subst"}, } ----------------------- Degrees of comparison ----------------------- tags["absolute superlative degree"] = { "comparison", "wikt:absolute superlative", {"asupd", "absolute superlative"}, } tags["relative superlative degree"] = { "comparison", "wikt:relative superlative", {"rsupd", "relative superlative"}, } tags["elative degree"] = { "comparison", "elative", "elad", -- Can't use "elative" as shortcut because that's already used for the elative case 1555419, } -- be careful not to clash with equative case tag tags["equative degree"] = { "comparison", "w:equative", "equd", 5384239, } tags["excessive degree"] = { "comparison", nil, "excd", } ----------------------- Register ----------------------- tags["familiar"] = { "register", "w:T–V distinction", "fam", } tags["สุภาพ"] = { "register", "w:T–V distinction", {"pol", "polite"}, } tags["intimate"] = { "register", -- "intimate" is also a possible formality level in the sociolinguistic register sense. "w:T–V distinction", "intim", } tags["ทางการ"] = { "register", "w:register (sociolinguistics)", {"formal"}, } tags["ไม่ทางการ"] = { "register", "w:register (sociolinguistics)", {"inform", "informal"}, } tags["ภาษาปาก"] = { "register", "w:colloquialism", {"colloq", "colloquial", "ปาก"}, } tags["สแลง"] = { "register", WP, {"slang"}, } tags["ร่วมสมัย"] = { "register", WIKT, {"conty", "contemporary"}, } tags["ภาษาหนังสือ"] = { "register", "w:literary language", {"lit", "literary", "หนังสือ", "แบบ"}, } tags["ล้าสมัย"] = { "register", WIKT, {"dated", "ล้า"}, } tags["โบราณ"] = { "register", "w:archaism", {"arch", "archaic", "โบ"}, } tags["เลิกใช้"] = { "register", WIKT, {"obs", "obsolete", "เลิก"}, } tags["emphatic"] = { "register", WIKT, "emph", } ----------------------- Deixis ----------------------- tags["proximal"] = { "deixis", "w:deixis", {"prox", "prxl"}, } tags["medial"] = { "deixis", "w:deixis", "medl", } tags["distal"] = { "deixis", "w:deixis", "dstl", } ----------------------- Clusivity ----------------------- tags["inclusive"] = { "clusivity", "w:clusivity", "incl", } tags["exclusive"] = { "clusivity", "w:clusivity", "excl", } tags["obviative"] = { "clusivity", "w:clusivity", "obv", } ----------------------- Inflectional class ----------------------- tags["absolute"] = { "grammar", WIKT, "abs", } tags["conjunct"] = { "grammar", WP, "conjt", } tags["deuterotonic"] = { "grammar", "w:dependent and independent verb forms", "deut", } tags["prototonic"] = { "grammar", "w:dependent and independent verb forms", "prot", } ----------------------- Attitude ----------------------- tags["endearing"] = { "attitude", -- FIXME! No good glossary entry for this; the entry for "hypocoristic" refers specifically to proper names. "w:hypocoristic", "end", 1130279, -- entry for "hypocorism" } tags["moderative"] = { "attitude", WIKT, "moder", } ----------------------- Sound changes ----------------------- tags["alliterative"] = { "sound change", "w:alliteration", nil, 484495, } tags["back"] = { "sound change", "w:back vowel", nil, 853589, } tags["front"] = { "sound change", "w:front vowel", nil, 5505949, } tags["rounded"] = { "sound change", "w:roundedness", "round", } tags["sigmatic"] = { "sound change", WIKT, "sigm", } tags["unrounded"] = { "sound change", "w:roundedness", "unround", } tags["vowel harmonic"] = { "sound change", "w:vowel harmony", "vharm", 147137, } ----------------------- Misc grammar ----------------------- tags["relative"] = { "grammar", WIKT, "rel", } tags["direct relative"] = { "grammar", "w:relative_clause#Celtic_languages", "dirrel", } tags["indirect relative"] = { "grammar", "w:relative_clause#Celtic_languages", "indrel", } tags["synthetic"] = { "grammar", WIKT, "synth", } tags["analytic"] = { "grammar", WIKT, {"anal", "analytical"}, } tags["periphrastic"] = { "grammar", WIKT, "peri", } tags["affirmative"] = { "grammar", "w:affirmation and negation", "aff", } tags["possessed"] = { "grammar", "w:possessive affix", {"possd", "possed"}, -- posd = positive degree 804020, -- for possessive affix } tags["non-possessed"] = { "grammar", "w:possessive affix", {"npossd", "npossed", "nonpossessed"}, } tags["possessive affix"] = { "grammar", WP, {"posaf", "possaf"}, 804020, } tags["possessive suffix"] = { "grammar", "w:possessive affix", "possuf", 804020, } tags["possessive prefix"] = { "grammar", "w:possessive affix", {"pospref", "posspref"}, 804020, } tags["prefix"] = { "grammar", APPENDIX, "pref", -- pre = prepositional 134830, } tags["prefixal"] = { "grammar", WIKT, "prefl", -- pre = prepositional 134830, } tags["suffix"] = { "grammar", APPENDIX, {"suf", "suff"}, 102047, } tags["suffixal"] = { "grammar", WIKT, {"sufl", "suffl"}, 102047, } tags["affix"] = { "grammar", WP, "af", -- aff = affirmative 62155, } tags["affixal"] = { "grammar", WIKT, "afl", -- aff = affirmative 62155, } tags["circumfix"] = { "grammar", WP, {"circ", "cirf", "circf"}, 124939, } tags["circumfixal"] = { "grammar", WIKT, {"circl", "cirfl", "circfl"}, 124939, } tags["infix"] = { "grammar", WP, "infx", 201322, } tags["infixal"] = { "grammar", WIKT, "infxl", 201322, } tags["nonfinite"] = { "grammar", APPENDIX, "nonfin", 1050494, -- entry for "non-finite verb" } tags["อกาล"] = { "grammar", WIKT, "tenseless", } tags["aspect"] = { "grammar", APPENDIX, "asp", 208084, } tags["augmented"] = { "grammar", "augment", nil, 760437, } tags["unaugmented"] = { "grammar", "augment", nil, 760437, } ----------------------- Other tags ----------------------- tags["–"] = { -- Unicode en-dash "other", no_space_on_left = true, no_space_on_right = true, } tags["—"] = { -- Unicode em-dash "other", no_space_on_left = true, no_space_on_right = true, } ----------------------- Create the shortcuts list ----------------------- m_form_of_data.finalize(tags, shortcuts) return {tags = tags, shortcuts = shortcuts} qe0el5dw5y1f0t904lj7wu5av9jytjb มอดูล:languages/data/3/g/extra 828 312319 5723238 5719158 2026-05-20T03:22:24Z OctraBot 3198 5723238 Scribunto text/plain local m = {} m["gaa"] = { } m["gab"] = { aliases = {"Southern Gabri"}, } m["gac"] = { other_names = {"Great Andamanese creole", "Great Andamanese"}, } m["gad"] = { -- not to be confused with gdk, gdg other_names = {"Cagayan"}, } m["gae"] = { other_names = {"Guarequena", "Arekena"}, } m["gaf"] = { other_names = {"Gendeka", "Gene"}, } m["gag"] = { aliases = {"กากาอูซียา", "Gagauz"}, } m["gah"] = { other_names = {"Gahuku"}, } m["gai"] = { } m["gaj"] = { } m["gak"] = { } m["gal"] = { other_names = {"Galolen", "Talur"}, } m["gam"] = { other_names = {"Narake"}, } m["gan"] = { aliases = {"จีนกั้น", "Gan"}, } m["gao"] = { other_names = {"Gaj"}, } m["gap"] = { } m["gaq"] = { } m["gar"] = { } m["gas"] = { } m["gat"] = { } m["gau"] = { other_names = {"Gadaba", "San Gadaba", "Gadba", "Sano", "Kondekar", "Kondkor", "Konḍekor Gadaba", "Mudhili Gadaba"}, } m["gaw"] = { other_names = {"Garuh", "Nobanob", "Nobnob"}, } m["gay"] = { } m["gbb"] = { } m["gbd"] = { aliases = {"Garadjari", "Karajarri"}, } m["gbe"] = { } m["gbf"] = { } m["gbg"] = { other_names = {"Banziri", "Gbandere", "Gbanzili"}, } m["gbh"] = { } m["gbi"] = { } m["gbj"] = { other_names = {"Gutob", "Gadaba", "Gadba", "Gutop", "Gudwa", "Godwa", "Gadwa", "Boi Gadaba"}, } m["gbk"] = { } m["gbl"] = { } m["gbm"] = { } m["gbn"] = { } m["gbo"] = { } m["gbp"] = { other_names = {"Bossangoa", "Gbaya of Bossangoa"}, } m["gbq"] = { other_names = {"Bozom", "Gbaya of Bozom", "Gbaya-Bozom"}, } m["gbr"] = { } m["gbs"] = { } m["gbu"] = { } m["gbv"] = { } m["gbw"] = { aliases = {"Gabi-Gabi", "Gabi Gabi", "Gubbi-Gubbi", "Gubbi Gubbi"}, -- contrast xby } m["gbx"] = { other_names = {"Houla", "Kpla", "Offra", "Ophra", "Phla", "Pla", "Popo", "Xwla"}, } m["gby"] = { } m["gcc"] = { } m["gcd"] = { } m["gce"] = { } m["gcf"] = { other_names = {"Antillean Creole French", "Guadeloupean Creole", "Guadeloupean Creole French", "Saint Lucian Creole", "Saint Lucian Creole French"}, } m["gcl"] = { } m["gcn"] = { } m["gcr"] = { other_names = {"French Guianese Creole", "Guianese French Creole", "Guyanais", "Guyanese French Creole"}, } m["gct"] = { other_names = {"Alemán Coloniero"}, } m["gdb"] = { other_names = {"Pottangi Ollar Gadaba", "Ollar Gadaba", "Ollaro", "Hallari", "Allar", "Hollar Gadbas"}, } m["gdc"] = { } m["gdd"] = { } m["gde"] = { } m["gdf"] = { } m["gdg"] = { -- not to be confused with gad, gdk } m["gdh"] = { } m["gdi"] = { } m["gdj"] = { other_names = {"Gurdjar", "Kunggara"}, } m["gdk"] = { -- not to be confused with gad, gdg } m["gdl"] = { } m["gdm"] = { } m["gdn"] = { } m["gdo"] = { aliases = {"Ghodoberi"}, } m["gdq"] = { aliases = {"Mahri"}, } m["gdr"] = { } m["gds"] = { } m["gdt"] = { } m["gdu"] = { } m["gdx"] = { } m["gea"] = { } m["geb"] = { } m["gec"] = { } m["ged"] = { } m["geg"] = { } m["geh"] = { aliases = {"Hutterite German", "Tirolean"}, } m["gei"] = { } m["gej"] = { } m["gek"] = { other_names = {"Yiwom"}, } m["gel"] = { other_names = {"Kag-Fer-Jiir-Koor-Ror-Us-Zuksun", "ut-Ma'in", "Fakai", "Kag", "Puku", "Fakanchi", "Et-Kag", "Jiir", "Gelanchi", "Et-Jiir", "Kur", "Kere", "Kar", "Keri-Ni", "Kelli-Ni", "Kelanchi", "Kelinci", "Zuksun", "Zussun", "Et-Zuksun", "Ror", "Et-Maror", "Tudanchi", "Er-Gwar", "Fer", "Fere", "Et-Fer", "Wipsi-Ni", "Kukum", "Us", "Et-Us", "Koor", "Kulu"}, } m["geq"] = { } m["ges"] = { } m["gev"] = { aliases = {"Eviya"}, } m["gew"] = { } m["gex"] = { } m["gey"] = { } m["gez"] = { aliases = {"เอธิโอเปีย", "Ge'ez", "Ethiopic", "Gi'iz", "Geez"}, } m["gfk"] = { } m["gft"] = { } m["gga"] = { } m["ggb"] = { } m["ggd"] = { } m["gge"] = { } m["ggg"] = { } m["ggk"] = { } m["ggl"] = { } m["ggn"] = { } m["ggt"] = { } m["ggu"] = { } m["ggw"] = { } m["gha"] = { aliases = {"Ghadamès"}, } m["ghc"] = { aliases = {"ไอริชใหม่ช่วงต้น", "แกลิกใหม่ช่วงต้น", "Classical Gaelic", "Early Modern Irish", "Early Modern Gaelic", "Hiberno-Scottish Gaelic"}, } m["ghe"] = { } m["ghh"] = { } m["ghk"] = { } m["ghl"] = { } m["ghn"] = { } m["gho"] = { } m["ghr"] = { } m["ghs"] = { } m["ght"] = { } m["gia"] = { } m["gib"] = { } m["gid"] = { } m["gie"] = { other_names = {"Gaɓogbo", "Gabogbo"}, } m["gig"] = { } m["gih"] = { } m["gii"] = { aliases = {"Gariire"}, } m["gil"] = { aliases = {"คิริบาส", "Gilbertese", "Kiribati", "Kiribatese"}, } m["gim"] = { aliases = {"Gimi", "Papuan Gimi", "Labogai"}, } m["gin"] = { aliases = {"Hinuq", "Hinux", "Ginukh", "Ginux"}, } m["gip"] = { aliases = {"Gimi", "Austronesian Gimi", "Loko"}, } m["giq"] = { other_names = {"Hagei", "Hakhi"}, } m["gir"] = { other_names = {"Vandu"}, } m["gis"] = { } m["git"] = { } m["giu"] = { } m["giw"] = { other_names = {"Telue", "Doulou", "Tolo"}, } m["gix"] = { } m["giy"] = { } m["giz"] = { } m["gji"] = { } m["gjk"] = { } m["gjm"] = { } m["gjn"] = { } m["gjr"] = { } m["gju"] = { aliases = {"Gojari", "Gujari", "Gujuri", "Gujjari", "Gujri", "Gurjari"}, } m["gka"] = { } m["gkd"] = { aliases = {"Magi"}, } m["gke"] = { } m["gkn"] = { } m["gko"] = { } m["gkp"] = { } m["glc"] = { } m["gld"] = { other_names = {"Goldi", "Hezhen"}, } m["glh"] = { } m["glj"] = { } m["glk"] = { } m["glo"] = { } m["glr"] = { } m["glu"] = { aliases = {"Sara Gula"}, } m["glw"] = { } m["gly"] = { } m["gma"] = { } m["gmb"] = { } m["gmd"] = { } m["gmg"] = { aliases = {"Magɨyi"}, } m["gmh"] = { aliases = {"Middle High German"}, } m["gml"] = { aliases = {"Middle Low German"}, } m["gmm"] = { } m["gmn"] = { } m["gmu"] = { } m["gmv"] = { aliases = {"เกมู", "Gamo", "Gemu"}, } m["gmx"] = { } m["gmy"] = { aliases = {"Mycenaean Greek"}, } m["gmz"] = { other_names = {"Mgbolizhia"}, } m["gna"] = { } m["gnb"] = { } m["gnc"] = { } m["gnd"] = { other_names = {"Zulgo", "Gemzek", "Mineo"}, } m["gne"] = { } m["gng"] = { } m["gnh"] = { } m["gni"] = { aliases = {"Guniyandi"}, } m["gnj"] = { aliases = {"Ngen"}, } m["gnk"] = { aliases = {"Gana", "Gǁana", "Gxana", "Dxana", "Xgana"}, } m["gnl"] = { } m["gnm"] = { } m["gnn"] = { } m["gnq"] = { } m["gnr"] = { } m["gnt"] = { } m["gnu"] = { } m["gnw"] = { other_names = {"Simba", "Simba Guarani"}, } m["gnz"] = { } m["goa"] = { } m["gob"] = { } m["goc"] = { } m["god"] = { } m["goe"] = { } m["gof"] = { aliases = {"โกฟฟา", "Gofa", "Goffa"}, } m["gog"] = { } m["goh"] = { aliases = {"เยอรมันสูงโบราณ", "Old High German"}, } m["goi"] = { other_names = {"Gobosi", "Gebusi", "Bibo", "Nomad"}, } m["goj"] = { } -- gok is a spurious language, see [[w:Spurious languages]] m["gol"] = { } m["gon"] = { aliases = {"Gondi"}, varieties = {"Southern Gondi", "Northern Gondi", "Aheri Gondi", "Adilabad Gondi", "Dorla Gondi", "Koya Gondi", "Maria Gondi", "Muria Gondi", "Raj Gondi"}, } m["goo"] = { } m["gop"] = { } m["goq"] = { } m["gor"] = { } m["got"] = { aliases = {"กอทิก", "กอทิค", "กอธิก", "กอธิค", "โกทิก", "โกทิค", "โกธิก", "โกธิค", "Gothic"}, } m["gou"] = { aliases = {"Gawar"}, } m["gov"] = { } m["gow"] = { } m["gox"] = { } m["goy"] = { } m["goz"] = { } m["gpa"] = { } m["gpn"] = { other_names = {"Tayap", "Gapun"}, } m["gqa"] = { } m["gqi"] = { aliases = {"Guìqióng", "Guichong"}, } m["gqn"] = { -- a variety of 'ter' other_names = {"Guana", "Guaná", "Guana (Brazil)", "Arawakan Guana"}, } m["gqr"] = { } m["gqu"] = { other_names = {"Gao", "Aqao", "Qau Gelao"}, } m["gra"] = { } m["grb"] = { } m["grc"] = { aliases = {"กรีกคลาสสิก", "Ancient Greek", "Classical Greek"}, varieties = {"Egyptian Ancient Greek"}, } m["grd"] = { } m["grg"] = { } m["grh"] = { } m["gri"] = { other_names = {"Gari", "Tangarare", "Sughu", "West Guadalcanal"}, } m["grj"] = { } m["grm"] = { } m["gro"] = { } m["grq"] = { } m["grs"] = { } m["grt"] = { aliases = {"Garo", "Garrow", "Mandi", "Mande"}, } m["gru"] = { other_names = {"Soddo", "Aymälläl"}, } m["grv"] = { } m["grw"] = { } m["grx"] = { } m["gry"] = { } m["grz"] = { } m["gse"] = { } m["gsg"] = { aliases = {"Deutsche Gebärdensprache"}, } m["gsl"] = { } m["gsm"] = { } m["gsn"] = { } m["gso"] = { } m["gsp"] = { } m["gss"] = { } m["gsw"] = { aliases = {"เยอรมันแบบสวิส", "Alemannic German", "Swiss German"}, varieties = {"Walser German", "Walserdeutsch", "Walser", "Wallisertiitsch", "Italian Walser", "Pomattertitsch", "Formazza", "Kampel", "Remmaljertittschu", "Rimella", "Chalchoufe", "Titzschu", "Alagna", "Greschóneytitsch", "Greschóney", "Greschoney", "Gressoney", "Éischemtöitschu", "Issime"}, } m["gta"] = { } m["gtu"] = { aliases = {"Aghu Tharnggala", "Aghu Tharnggalu", "Tharrnggala", "Gogo Mini", "Kuku Mini"}, } m["gua"] = { } m["gub"] = { } m["guc"] = { aliases = {"Guajiro", "Goajiro", "Uagiro"}, } m["gud"] = { } m["gue"] = { } m["guf"] = { } m["gug"] = { aliases = {"Paraguayan Guarani", "Jopará", "Yopará"}, } m["guh"] = { } m["gui"] = { other_names = {"Ava Guaraní", "Chiriguanos"}, } m["guk"] = { } m["gul"] = { other_names = {"Geechee", "Sea Island Creole English"}, } m["gum"] = { } m["gun"] = { other_names = {"Mbyá", "Mbya", "Mbyhá", "Mbiá", "Mbua", "Mbüá", "Mbü'a", "Mbü'a Guaraní", "Jeguaká Tenondé", "Bwihá", "Caiua", "Kaiwá", "Kayová", "Cahygua", "Caingua"}, } m["guo"] = { } m["gup"] = { other_names = {"Bininj Gunwok", "Bininj Gun-Wok", "Bininj Kunwok", "Bininj Kun-Wok", "Kunwinjkuan", "Kunwinjku", "Gunwinjgu", "Kuninjku", "Kundjeyhmi", "Gundjeihmi", "Manyallaluk Mayali", "Mayali", "Kundedjnjenghmi", "Kune Dulerayek", "Kune Narayek", "Kune"}, } m["guq"] = { other_names = {"Guayaki"}, } m["gur"] = { aliases = {"แฟร์แฟร์", "Frafra", "Farefare"}, other_names = {"Gurene", "Gurenɛ", "Gurenne", "Gudenne", "Gudeni", "Zuadeni", "Nankani", "Naani", "Nankanse", "Ninkare", "Booni"}, } m["gus"] = { } m["gut"] = { } m["guu"] = { } m["guv"] = { } m["guw"] = { other_names = {"Gun-Gbe", "Gungbe"}, } m["gux"] = { } m["guz"] = { } m["gva"] = { other_names = {"Guana", "Guaná", "Guana (Paraguay)", "Mascoian Guana"}, } m["gvc"] = { } m["gve"] = { } m["gvf"] = { } m["gvj"] = { other_names = {"Awá", "Ayaya", "Guaxare", "Wazaizara"}, } m["gvl"] = { } m["gvm"] = { } m["gvn"] = { } m["gvo"] = { other_names = {"Gavião of Jiparaná", "Digüt", "Ikolen", "Gavião do Rondônia", "Zoró"}, } m["gvp"] = { } m["gvr"] = { } m["gvs"] = { } m["gvy"] = { } m["gwa"] = { } m["gwb"] = { } m["gwc"] = { } m["gwd"] = { } m["gwe"] = { } m["gwf"] = { } m["gwg"] = { } m["gwi"] = { other_names = {"Gwich’in", "Kutchin", "Takudh", "Tukudh", "Loucheux"}, } m["gwj"] = { aliases = {"Gǀwi", "Gǀui", "ǀGwi", "Dcui", "Gcui", "Cgui"}, } m["gwm"] = { } m["gwn"] = { } m["gwr"] = { } m["gwt"] = { } m["gwu"] = { } m["gww"] = { } m["gwx"] = { } m["gxx"] = { } m["gya"] = { } m["gyb"] = { } m["gyd"] = { } m["gye"] = { } m["gyf"] = { } m["gyg"] = { } m["gyi"] = { } m["gyl"] = { } m["gym"] = { } m["gyn"] = { aliases = {"Guyanese Creole", "Creolese", "Guyanese"}, } m["gyo"] = { } m["gyr"] = { aliases = {"Gwarayú"}, } m["gyy"] = { } m["gza"] = { } m["gzn"] = { } return m 3omfi01rv813c0cnj9w4s25bsmtc29y มอดูล:languages/data/3/a/extra 828 312391 5723245 5684384 2026-05-20T03:28:22Z OctraBot 3198 5723245 Scribunto text/plain local m = {} m["aaa"] = { aliases = {"Otuo"}, } m["aab"] = { other_names = {"Alumu", "Tesu"}, } m["aac"] = { } m["aad"] = { other_names = {"Alai"}, } m["aaf"] = { aliases = {"Eranadan"}, } m["aag"] = { } m["aah"] = { other_names = {"Abu' Arapesh", "Ua"}, } m["aai"] = { other_names = {"Arifama", "Miniafia"}, } m["aak"] = { aliases = {"Angave"}, } m["aal"] = { } m["aan"] = { aliases = {"Anambe"}, } m["aap"] = { other_names = {"Arára"}, } m["aaq"] = { other_names = {"Eastern Abenaki", "Eastern Abnaki"}, } m["aas"] = { other_names = {"Aasáx", "Asa", "Aramanik", "Laramanik"}, } m["aau"] = { } m["aaw"] = { other_names = {"Arove", "Arawe"}, } m["aax"] = { } m["aaz"] = { } m["aba"] = { aliases = {"อับเบ", "Abé", "Abbé", "Abbey", "Abi"}, } m["abb"] = { other_names = {"Abo", "Bo", "Abaw", "Miang", "Mandouka"}, } m["abc"] = { } m["abd"] = { other_names = {"Manide"}, } m["abe"] = { other_names = {"Western Abenaki", "Abnaki", "Western Abnaki"}, } m["abf"] = { } m["abg"] = { } m["abh"] = { aliases = {"Tajiki Arabic"}, } m["abi"] = { } m["abj"] = { other_names = {"Bea", "Aka-Bea-da", "Akabeada", "Aka-Bia", "Bia", "Aka-Bia-da", "Akabiada", "Bojingiji"}, } m["abl"] = { other_names = {"Pepadun", "Lampung Nyo"}, } m["abm"] = { } m["abn"] = { } m["abo"] = { aliases = {"Abɔ̃"}, } m["abp"] = { } m["abq"] = { aliases = {"Abaza"}, } m["abr"] = { other_names = {"Brong"}, } m["abs"] = { } m["abt"] = { } m["abu"] = { } m["abv"] = { aliases = {"Baharna Arabic", "Bahrani Arabic"}, } m["abw"] = { } m["abx"] = { } m["aby"] = { } m["abz"] = { } m["aca"] = { aliases = {"Achawa", "Ajagua", "Axagua", "Achugua", "Ajaga", "Xagua", "Jagua"}, } m["acb"] = { } m["acd"] = { } m["ace"] = { aliases = {"อาเจะห์", "Acehnese", "Achinese", "Atjehnese"}, } m["ach"] = { aliases = {"Acoli", "Shuli", "Acooli"}, } m["aci"] = { other_names = {"Cari", "Aka-Kari", "Kari", "Chariar"}, } m["ack"] = { other_names = {"Kora"}, } m["acl"] = { other_names = {"Bale", "Bele", "Akar-Bele", "Balawa", "Balwa", "Bojingiji"}, } m["acm"] = { aliases = {"อาหรับแบบเมโสโปเตเมีย", "Iraqi Arabic", "Mesopotamian Arabic"}, } m["acn"] = { other_names = {"Xiandao", "Chintaw"}, } m["acp"] = { } m["acr"] = { other_names = {"Achí", "Achi Maya", "Cubulco Achi", "Cubulco Achí", "Cubulco Achi'"}, } m["acs"] = { aliases = {"Akroá", "Coroá", "Acroa"}, } m["acu"] = { other_names = {"Achuar-Shiwiar"}, } m["acv"] = { } m["acw"] = { aliases = {"Hijazi Arabic", "Hejazi Arabic", "West Arabian Arabic"}, } m["acx"] = { aliases = {"Omani Arabic"}, } m["acy"] = { aliases = {"Cypriot Arabic", "Cypriot Maronite Arabic", "Sanna"}, } m["acz"] = { aliases = {"Asheron"}, } m["ada"] = { aliases = {"Dangme"}, } m["adb"] = { } m["add"] = { other_names = {"Lidzonka"}, } m["ade"] = { } m["adf"] = { } m["adg"] = { } m["adh"] = { } m["adi"] = { other_names = {"Abor", "Ashing", "Minyong", "Mising", "Padam", "Panggi", "Pasi", "Shimong", "Ajukru"}, } m["adj"] = { aliases = {"Adjukru", "Adyoukrou", "Adyukru", "Ajukru"}, } m["adl"] = { other_names = {"Gallong"}, } m["adn"] = { } m["ado"] = { other_names = {"Adjora"}, } m["adp"] = { } m["adq"] = { other_names = {"Agotime"}, } m["adr"] = { } m["ads"] = { } m["adt"] = { } m["adu"] = { } m["adw"] = { aliases = {"Amundava"}, } m["ady"] = { aliases = {"Adyghe", "West Circassian"}, } m["adz"] = { } m["aea"] = { } m["aeb"] = { aliases = {"Tunisian Arabic"}, varieties = {"Judeo-Tunisian Arabic"}, --formerly ajt } m["aed"] = { } m["aee"] = { other_names = {"Northeast Pashai", "Pashai"}, } m["aek"] = { } m["ael"] = { } m["aem"] = { } m["aen"] = { } m["aeq"] = { } m["aer"] = { } m["aes"] = { other_names = {"Yaquina", "Yakwina", "Alseya", "Yakona"}, -- names of the two dialects that make up the language } m["aeu"] = { other_names = {"Chepya"}, } m["aew"] = { other_names = {"Aion", "Porapora"}, } m["aey"] = { } m["aez"] = { other_names = {"Aiga", "Orokaiva"}, -- last is the name of a macrolanguage } m["afb"] = { } m["afd"] = { } m["afe"] = { } m["afg"] = { } m["afh"] = { } m["afi"] = { } m["afk"] = { } m["afn"] = { } m["afo"] = { } m["afp"] = { } m["afs"] = { } m["aft"] = { other_names = {"Affiti", "Ditti"}, } m["afu"] = { aliases = {"Efutu"}, } m["afz"] = { } m["aga"] = { } m["agb"] = { } m["agc"] = { } m["agd"] = { } m["age"] = { } m["agf"] = { } m["agg"] = { } m["agh"] = { } m["agi"] = { } m["agj"] = { } m["agk"] = { } m["agl"] = { other_names = {"Agala"}, } m["agm"] = { } m["agn"] = { aliases = {"อากูไตนึน", "Agutaynen"}, } m["ago"] = { } m["agq"] = { } m["agr"] = { } m["ags"] = { aliases = {"Isimbi"}, } m["agt"] = { } m["agu"] = { aliases = {"Aguacatec", "Aguacateco", "Awakatek", "Awakateko", "Awakateka"}, } m["agv"] = { other_names = {"Remontado Dumagat", "Sinauna", "Hatang Kayey"}, } m["agw"] = { } m["agx"] = { aliases = {"Agul"}, } m["agy"] = { } m["agz"] = { } m["aha"] = { } m["ahb"] = { } m["ahg"] = { } m["ahh"] = { } m["ahi"] = { } m["ahk"] = { aliases = {"Akha", "Aka", "Ako"}, } m["ahl"] = { } m["ahm"] = { } m["ahn"] = { aliases = {"Ahan", "Ahaan"}, } m["aho"] = { aliases = {"อะหม", "Ahom"}, } m["ahp"] = { } m["ahr"] = { other_names = {"Khandeshi", "Khandesi"}, } m["ahs"] = { } m["aht"] = { } m["aia"] = { } m["aib"] = { other_names = {"Aynu", "Ainu", "Ainu (China)", "Aini", "Eyni", "Ejnu", "Abdal", "Äynú"}, } m["aic"] = { } m["aid"] = { } m["aie"] = { } m["aif"] = { } m["aig"] = { other_names = {"Leeward Caribbean Creole English", "Antiguan Creole English", "Kokoy Creole English", "Saint Kitts Creole", "Montserrat Creole", "Anguillan Creole"}, } m["aih"] = { } m["aii"] = { aliases = {"Assyrian Neo-Aramaic"}, } m["aij"] = { } m["aik"] = { } m["ail"] = { } m["aim"] = { } m["ain"] = { aliases = {"Ainu", "Ainu (Japan)"}, } m["aio"] = { aliases = {"ไทอ่ายตน", "Aiton", "Tai Aiton", "Aitonia", "Sham Doaniya"}, } m["aip"] = { } m["air"] = { } m["ait"] = { } m["aiw"] = { } m["aix"] = { } m["aiy"] = { } m["aja"] = { aliases = {"Adja", "Aja (Sudan)"}, } m["ajg"] = { aliases = {"Aja", "Aja (Benin)", "Aja (Togo)", "Ajagbe"}, } m["aji"] = { other_names = {"Houailou"}, } m["ajn"] = { } m["ajp"] = { aliases = {"South Levantine Arabic"}, } -- m["ajt"] Judeo-Tunisian Arabic now included in Tunisian Arabic -- m["aju"] Judeo-Moroccan Arabic now included in Moroccan Arabic m["ajw"] = { } m["ajz"] = { } m["akb"] = { aliases = {"Batak Angkola"}, } m["akc"] = { } m["akd"] = { } m["ake"] = { aliases = {"Acauayo", "Acaguayo", "Akawai", "Acawai", "Accawai"}, } m["akf"] = { } m["akg"] = { } m["akh"] = { } m["aki"] = { aliases = {"Aiom", "Ayom"}, } m["akj"] = { other_names = {"Aka-Jeru"}, } m["akk"] = { aliases = {"Akkadian"}, } m["akl"] = { aliases = {"อักลาโนน", "Aklanon", "Aklan", "Akeanon"}, } m["akm"] = { other_names = {"Ba", "Bo"}, } m["ako"] = { } m["akp"] = { } m["akq"] = { } m["akr"] = { } m["aks"] = { other_names = {"Tchamba", "Akasele", "Tsamba"}, } m["akt"] = { } m["aku"] = { } m["akv"] = { } m["akw"] = { } m["akx"] = { other_names = {"Kede"}, } m["aky"] = { other_names = {"Kol", "Kawl", "Aka-Kawl", "Bojingiji"}, } m["akz"] = { aliases = {"Alabama"}, } m["ala"] = { } m["alc"] = { other_names = {"Qawasqar", "Alacaluf"}, } m["ald"] = { other_names = {"Alladyan", "Allagian", "Alaguian"}, } m["ale"] = { aliases = {"Aleutian"}, } m["alf"] = { } m["alh"] = { } m["ali"] = { } m["alj"] = { } m["alk"] = { } m["all"] = { other_names = {"Chatan"}, } m["alm"] = { } m["alo"] = { } m["alp"] = { } m["alq"] = { } m["alr"] = { aliases = {"Alyutor"}, } m["alt"] = { aliases = {"Southern Altai", "Southern Altay", "Altai", "Altay"}, } m["alu"] = { aliases = {"Areare"}, } m["alw"] = { other_names = {"Alaba-K'abeena", "Alaaba", "K'abeena"}, } m["alx"] = { } m["aly"] = { } m["alz"] = { } m["ama"] = { } m["amb"] = { } m["amc"] = { } m["ame"] = { other_names = {"Amuesha"}, } m["amf"] = { } m["amg"] = { other_names = {"Amarag"}, } m["ami"] = { other_names = {"Nataoran Amis"}, } m["amj"] = { other_names = {"Biltine", "Mimi"}, } m["amk"] = { other_names = {"Wadapi-Laut"}, } m["aml"] = { } m["amm"] = { aliases = {"Ama (New Guinea)", "Ama (Papua New Guinea)"}, } m["amn"] = { } m["amo"] = { other_names = {"Timap", "Map", "Among", "Amap", "Amon"}, } m["amp"] = { } m["amq"] = { } m["amr"] = { } m["ams"] = { aliases = {"Southern Amami-Oshima"}, } m["amt"] = { } m["amu"] = { other_names = {"Amuzgo", "Xochistlahuaca Amuzgo", "Northern Amuzgo", "Southern Amuzgo"}, } m["amv"] = { } m["amw"] = { } m["amx"] = { other_names = {"Namfau"}, } m["amy"] = { other_names = {"Ame", "Amijangal"}, } m["amz"] = { } m["ana"] = { aliases = {"Andaquí", "Andakí", "Andaki"}, } m["anb"] = { other_names = {"Shimigae", "Semigae", "Gae", "Gay", "Gaye", "Siaviri", "Katsakáti"}, } m["anc"] = { other_names = {"Angas", "Angass", "Hill Ngas", "Plain Ngas", "Hill Angas", "Plain Angas", "Karang", "Kerang"}, } m["and"] = { } m["ane"] = { aliases = {"Xârâcùù"}, } m["anf"] = { } m["ang"] = { aliases = {"อังกฤษโบราณ", "แองโกล-แซกซัน", "Old English", "Anglo-Saxon"}, } m["anh"] = { other_names = {"Nent", "Angaua"}, } m["ani"] = { } m["anj"] = { } m["ank"] = { } m["anl"] = { other_names = {"Khaungtso", "Anu-Hkongso", "Anu-Hkongso Chin"}, -- the last is the ISO's unattested blend of the names of its two dialects and half of the name of the place where it's spoken } m["anm"] = { other_names = {"Anaal", "Namfau"}, -- Namfau is actually a placename } m["ann"] = { } m["ano"] = { } m["anp"] = { } m["anq"] = { aliases = {"Jarawa (India)"}, } m["anr"] = { } m["ans"] = { } m["ant"] = { } m["anu"] = { aliases = {"Anyua", "Anywa", "Anyuak"}, } m["anv"] = { } m["anw"] = { other_names = {"Anang", "Annang", "Western Ibibio"}, } m["anx"] = { } m["any"] = { aliases = {"Anyin"}, } m["anz"] = { aliases = {"Anêm"}, } m["aoa"] = { } m["aob"] = { } m["aoc"] = { other_names = {"Pemón", "Arekuna", "Arecuna", "Taurepan", "Taurepán", "Taurepang", "Taulipang", "Taulipáng", "Kamarakoto", "Camaracoto", "Camaragoto"}, } m["aod"] = { } m["aoe"] = { } m["aof"] = { } m["aog"] = { other_names = {"Pondo", "Kanda", "Maramba"}, } m["aoi"] = { aliases = {"Enindhilyagwa"}, } m["aoj"] = { } m["aok"] = { } m["aol"] = { aliases = {"Alorese"}, } m["aom"] = { } m["aon"] = { } m["aor"] = { } m["aos"] = { } m["aot"] = { aliases = {"Atong (India)", "Atong", "A'tong"}, } m["aou"] = { other_names = {"Ayo", "A'ou Gelao"}, } m["aox"] = { } m["aoz"] = { } m["apb"] = { other_names = {"South Malaita", "Apae'aa"}, } m["apc"] = { } m["apd"] = { aliases = {"Sudanese Arabic"}, } m["ape"] = { } m["apf"] = { } m["apg"] = { } m["aph"] = { other_names = {"Athpariya"}, } m["api"] = { aliases = {"Apiacá"}, } m["apj"] = { aliases = {"Jicarilla Apache"}, } m["apk"] = { aliases = {"Kiowa Apache"}, } m["apl"] = { aliases = {"Lipan Apache"}, } m["apm"] = { other_names = {"Mescalero", "Mescalero-Chiricahua Apache"}, -- two dialects combined by Ethnologue } m["apn"] = { aliases = {"Apinajé", "Apinagé", "Apinaye", "Apinaje", "Apinage"}, } m["apo"] = { } m["app"] = { } m["apq"] = { other_names = {"Pucikwar", "Puchikwar", "Aka-Pucikwar", "Pujjukar", "Bójigiáb", "Bojigiab", "Bojigyab"}, -- last three may apply also to other languages } m["apr"] = { } m["aps"] = { } m["apt"] = { other_names = {"Apa Tani", "Tanii"}, } m["apu"] = { } m["apv"] = { } m["apw"] = { aliases = {"Western Apache"}, } m["apx"] = { } m["apy"] = { aliases = {"Apalai"}, } m["apz"] = { } m["aqc"] = { } m["aqd"] = { } m["aqg"] = { } m["aqm"] = { } m["aqn"] = { } m["aqp"] = { other_names = {"Akokisa", "Orcoquiza", "Eastern Atakapa", "Western Atakapa"}, } m["aqr"] = { } m["aqt"] = { } m["aqz"] = { } m["arc"] = { aliases = {"แอราเมอิก", "Aramaic", "Aramaean", "Aramean"}, -- varieties are in [[Module:etymology language/data]] } m["ard"] = { } m["are"] = { } m["arh"] = { other_names = {"Ika"}, } m["ari"] = { } m["arj"] = { } m["ark"] = { } m["arl"] = { } m["arn"] = { other_names = {"Mapuche", "Mapudungün", "Mapuzugün", "Mapudungu", "Araucanian"}, } m["aro"] = { } m["arp"] = { } m["arq"] = { aliases = {"Algerian Arabic"}, } m["arr"] = { other_names = {"Karo", "Karo (Brazil)", "Ramarama", "Itanga", "Itogapuc", "Itogapúk", "Ntogapid", "Ntogapig", "Arára", "Arára de Rondonia", "Arára do Jiparaná", "Uruku", "Urukú"}, } m["ars"] = { } m["aru"] = { aliases = {"Aruá", "Arawa", "Arawá"}, -- extinct, northern Brazil, cf. 'arx' } m["arv"] = { } m["arw"] = { aliases = {"อาราวัก", "อาโรวัก", "อารวก", "โลโคโน", "Lokono", "Arawak", "Arowak", "Aruak", "Locono"}, } m["arx"] = { aliases = {"Arua", "Aruashi", "Aruáshi", "Aruachi"}, -- moribund, central Brazil, cf 'aru' } m["ary"] = { aliases = {"Moroccan Arabic"}, varieties = {"Judeo-Moroccan Arabic"}, -- formerly aju } m["arz"] = { aliases = {"Egyptian Arabic"}, } m["asa"] = { other_names = {"Asu", "Asu (Tanzania)", "Chasu", "Kipare", "Southern Pare", "South Pare"}, } m["asb"] = { } m["asc"] = { } m["ase"] = { aliases = {"American Sign Language", "Ameslan", "ASL"}, } m["asf"] = { aliases = {"Australian Sign Language"}, } m["asg"] = { aliases = {"Shingini"}, } m["ash"] = { other_names = {"Tequiraca", "Tekiráka", "Avishiri", "Auishiri", "Agouisiri", "Avirxiri", "Abiquira", "Abigira", "Aiwa", "Aewa"}, } m["asi"] = { } m["asj"] = { aliases = {"Sari", "Saari"}, } m["ask"] = { } m["asl"] = { } m["asn"] = { } m["aso"] = { } m["asp"] = { } m["asq"] = { } m["asr"] = { aliases = {"Asur"}, } m["ass"] = { } m["ast"] = { aliases = {"Asturian"}, } m["asu"] = { other_names = {"Asurini", "Asuriní", "Asuriní of Tocantins", "Asuriní do Tocantins", "Akwawa", "Akwáwa"}, } m["asv"] = { } m["asw"] = { aliases = {"Australian Aborigines Sign Language"}, } m["asx"] = { } m["asy"] = { } m["asz"] = { } m["ata"] = { other_names = {"Ata", "Wasi"}, } m["atb"] = { } m["atc"] = { } m["atd"] = { } m["ate"] = { } m["atg"] = { other_names = {"Ivbie North", "Arhe", "Ivbie North-Okpela-Arhe"}, } m["ati"] = { } m["atj"] = { } m["atk"] = { } m["atl"] = { } m["atm"] = { } m["ato"] = { aliases = {"Atoŋ", "Atong"}, } m["atp"] = { } m["atq"] = { } m["atr"] = { } m["ats"] = { other_names = {"Atsina"}, } m["att"] = { } m["atu"] = { } m["atv"] = { aliases = {"Northern Altai", "Northern Altay", "Altai", "Altay"}, } m["atw"] = { aliases = {"Atsugé"}, } m["atx"] = { } m["aty"] = { aliases = {"Aneityum"}, } m["atz"] = { } m["aua"] = { } m["aub"] = { } m["auc"] = { other_names = {"Waorani", "Sabela", "Wao", "Huao", "Aushiri", "Ssabela", "Wao Terero", "Auka", "Auca"}, } m["aud"] = { } m["aug"] = { } m["auh"] = { } m["aui"] = { } m["auj"] = { aliases = {"Awjilah", "Augila"}, } m["auk"] = { } m["aul"] = { } m["aum"] = { other_names = {"Abewa", "Asu (Nigeria)"}, } m["aun"] = { } m["auo"] = { } m["aup"] = { other_names = {"Tirio", "Makaeyam", "Aturu", "Atura", "Adulu"}, } m["auq"] = { other_names = {"A", "Korur", "Korurnus"}, -- no name attested? lect may be same as 'pdn' } m["aur"] = { } m["aut"] = { } m["auu"] = { aliases = {"Auwje"}, } m["auw"] = { aliases = {"Awye"}, } m["aux"] = { } m["auy"] = { aliases = {"Awiyaana"}, } m["auz"] = { aliases = {"Uzbeki Arabic", "Uzbek Arabic"}, } m["avb"] = { } m["avd"] = { other_names = {"Alviri", "Vidari"}, } m["avi"] = { } m["avk"] = { aliases = {"Kotava"}, } m["avm"] = { } m["avn"] = { } m["avo"] = { } m["avs"] = { } m["avt"] = { } m["avu"] = { } m["avv"] = { other_names = {"Avá", "Canoe"}, } m["awa"] = { aliases = {"อวธี", "โอธี", "Awadhi", "Oudhi"}, } m["awb"] = { aliases = {"Awa", "Awa (Papua New Guinea)"}, } m["awc"] = { aliases = {"Cipu"}, } m["awe"] = { } m["awg"] = { other_names = {"Alngith", "Leningitij", "Mpakwithi"}, } m["awh"] = { } m["awi"] = { other_names = {"Awin"}, } m["awk"] = { } m["awm"] = { } m["awn"] = { } m["awo"] = { } m["awr"] = { } m["aws"] = { } m["awt"] = { } m["awu"] = { } m["awv"] = { } m["aww"] = { } m["awx"] = { } m["awy"] = { } m["axb"] = { other_names = {"Abipon", "Callaga", "Kalyaga"}, } m["axe"] = { } m["axg"] = { } m["axk"] = { other_names = {"Yaka", "Yaka (Central African Republic)", "Aka", "Beka"}, -- cf 'iyx', 'yaf' } m["axl"] = { other_names = {"Lower Southern Arrernte", "Southern Arrernte", "Southern Aranda"}, } m["axm"] = { aliases = {"Middle Armenian"}, } m["axx"] = { aliases = {"Xaragure"}, } m["aya"] = { } m["ayb"] = { aliases = {"Ayizo Gbe"}, } m["ayd"] = { aliases = {"Ayapathu", "Badhu"}, } m["aye"] = { } m["ayg"] = { aliases = {"Nyanga", "Ginyanga"}, } m["ayi"] = { } m["ayk"] = { } m["ayl"] = { aliases = {"Libyan Arabic"}, } m["ayn"] = { aliases = {"Yemeni Arabic"}, } m["ayo"] = { other_names = {"Morotoco", "Moro", "Ayoweo", "Ayoré", "Pyeta Yovai"}, } m["ayp"] = { aliases = {"North Mesopotamian Arabic"}, } m["ayq"] = { aliases = {"Ayi (New Guinea)", "Ayi (Papua New Guinea)"}, } m["ays"] = { } m["ayt"] = { other_names = {"Magbukun Ayta", "Mariveleño"}, } m["ayu"] = { } m["ayy"] = { } m["ayz"] = { other_names = {"Mai Brat", "Ajamaru", "Ayamaru"}, } m["aza"] = { } m["azd"] = { } m["azg"] = { other_names = {"Upper Eastern Amuzgo", "Oaxaca Amuzgo"}, } m["azm"] = { other_names = {"Lower Eastern Amuzgo"}, } m["azn"] = { } m["azo"] = { } m["azt"] = { } m["azz"] = { } return m 53dzjkn85ixqas50s58haie9tm6qi1d بدأ 0 332070 5723278 2000956 2026-05-20T04:59:59Z OctraBot 3198 /* ภาษาอาหรับ */ เก็บกวาด 5723278 wikitext text/x-wiki == ภาษาอาหรับ == {{ar-rootbox|ب د ء}} === รากศัพท์ === {{etymon|ar|:root|ب د ء}} ร่วมเชื้อสายกับ{{cog|hbo|בדא|tr=badā|t=คิดค้น}} === การออกเสียง === {{ar-pr|بَدَأَ}} === คำกริยา === {{ar-verb|I/a~a.pass.vn:بَدْء,بَدْأَة,بِدَايَة,مَبْدَأ,بُدَاءَة,بَدَاءَة}} # [[เริ่ม]], [[เริ่มต้น]] ==== การผันรูป ==== {{ar-conj|I/a~a.pass.vn:بَدْء,بَدْأَة,بِدَايَة,مَبْدَأ,بُدَاءَة,بَدَاءَة}} ==== ดูเพิ่ม ==== {{list:kāda and her sisters/ar}} === อ้างอิง === * {{R:ar:Wehr-4|بدء}} bdzh35veyovplyidgkz6kteu7nwqsz8 5723279 5723278 2026-05-20T05:00:24Z OctraBot 3198 /* รากศัพท์ */ 5723279 wikitext text/x-wiki == ภาษาอาหรับ == {{ar-rootbox|ب د ء}} === รากศัพท์ === {{etymon|ar|:root|ب د ء}} ร่วมเชื้อสายกับ{{cog|hbo|בדא|tr=badā|t=ประดิษฐ์}} === การออกเสียง === {{ar-pr|بَدَأَ}} === คำกริยา === {{ar-verb|I/a~a.pass.vn:بَدْء,بَدْأَة,بِدَايَة,مَبْدَأ,بُدَاءَة,بَدَاءَة}} # [[เริ่ม]], [[เริ่มต้น]] ==== การผันรูป ==== {{ar-conj|I/a~a.pass.vn:بَدْء,بَدْأَة,بِدَايَة,مَبْدَأ,بُدَاءَة,بَدَاءَة}} ==== ดูเพิ่ม ==== {{list:kāda and her sisters/ar}} === อ้างอิง === * {{R:ar:Wehr-4|بدء}} 3vkkv6fu5wh05rhz1sa6c2qpn14jepw มอดูล:th-utilities 828 338046 5723272 5688507 2026-05-20T04:48:03Z OctraBot 3198 5723272 Scribunto text/plain local export = {} local sub = mw.ustring.sub local gsub = mw.ustring.gsub local len = mw.ustring.len local find = mw.ustring.find local match = mw.ustring.match local en_utilities = require("Module:en-utilities") local thai_digits = {"๐", "๑", "๒", "๓", "๔", "๕", "๖", "๗", "๘", "๙"} local thai_words = {"ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า"} local thai_words2 = {["."]="จุด",["-"]="ขีด",["+"]="บวก",["−"]="ลบ",["/"]="ทับ"} -- from [[Module:headword/data]] local thai_pos = { -- these are lemmas ["abbreviations"] = "คำย่อ", ["acronyms"] = "อักษรย่อรวมพยางค์", ["adjectives"] = "คำคุณศัพท์", --["adnominals"] = "adnominals", --["adpositions"] = "adpositions", ["adverbs"] = "คำกริยาวิเศษณ์", ["affixes"] = "หน่วยคำเติม", --["ambipositions"] = "ambipositions", ["articles"] = "คำกำกับนาม", ["circumfixes"] = "หน่วยคำเติมคร่อม", --["circumpositions"] = "circumpositions", ["classifiers"] = "คำลักษณนาม", ["cmavo"] = "ชมาโว", --["cmavo clusters"] = "cmavo clusters", ["cmene"] = "ชเมเน", --["combining forms"] = "combining forms", ["conjunctions"] = "คำสันธาน", --["counters"] = "counters", ["determiners"] = "ตัวกำหนด", --["diacritical marks"] = "diacritical marks", ["digraphs"] = "ทวิอักษร", ["fu'ivla"] = "ฟูฮิฝลา", ["gismu"] = "กิสมู", ["Han characters"] = "อักษรจีน", ["Han tu"] = "ฮั้นถื่อ", ["hanja"] = "ฮันจา", ["hanzi"] = "ฮั่นจื้อ", --["ideophones"] = "ideophones", ["idioms"] = "สำนวน", ["infixes"] = "อาคม", ["initialisms"] = "อักษรย่อ", ["iteration marks"] = "เครื่องหมายซ้ำ", ["interfixes"] = "หน่วยคำเติมเชื่อม", ["interjections"] = "คำอุทาน", ["kana"] = "คานะ", ["kanji"] = "คันจิ", ["letters"] = "ตัวอักษร", ["ligatures"] = "ตัวอักษรควบ", --["logograms"] = "logograms", ["lujvo"] = "ลุฌโว", ["morae"] = "มอรา", ["morphemes"] = "หน่วยคำ", --["non-constituents"] = "non-constituents", ["nouns"] = "คำนาม", ["numbers"] = "จำนวน", ["numeral symbols"] = "ตัวเลข", ["numerals"] = "เลข", ["num"] = "เลข", ["particles"] = "คำอนุภาค", ["phrases"] = "วลี", ["postpositions"] = "คำปัจฉบท", --["postpositional phrases"] = "postpositional phrases", --["predicatives"] = "predicatives", ["prefixes"] = "อุปสรรค", --["prepositional phrases"] = "prepositional phrases", ["prepositions"] = "คำบุพบท", ["preverbs"] = "คำกริยาเติมหน้า", --["pronominal adverbs"] = "pronominal adverbs", ["pronouns"] = "คำสรรพนาม", ["proper nouns"] = "คำวิสามานยนาม", ["propn"] = "คำวิสามานยนาม", ["proverbs"] = "สุภาษิต", ["punctuation marks"] = "เครื่องหมายวรรคตอน", --["relatives"] = "relatives", ["roots"] = "ราก", ["stems"] = "ต้นเค้าศัพท์", ["suffixes"] = "ปัจจัย", ["syllables"] = "พยางค์", ["symbols"] = "สัญลักษณ์", ["verbs"] = "คำกริยา", -- these are non-lemmas ["active participle forms"] = "รูปผันรูปกริยาขยายกรรตุวาจก", ["active participles"] = "รูปกริยาขยายกรรตุวาจก", ["adjectival participles"] = "รูปกริยาขยายเชิงคุณศัพท์", --["adjective case forms"] = "adjective case forms", ["adjective forms"] = "รูปคุณศัพท์", --["adjective feminine forms"] = "adjective feminine forms", ["adjective plural forms"] = "รูปคุณศัพท์พหูพจน์", ["adverb forms"] = "รูปกริยาวิเศษณ์", ["adverbial participles"] = "รูปกริยาขยายเชิงกริยาวิเศษณ์", --["agent participles"] = "agent participles", ["article forms"] = "รูปกำกับนาม", ["circumfix forms"] = "รูปหน่วยคำเติมคร่อม", --["combined forms"] = "combined forms", ["comparative adjective forms"] = "รูปคุณศัพท์ขั้นกว่า", ["comparative adjectives"] = "คำคุณศัพท์ขั้นกว่า", ["comparative adverb forms"] = "รูปกริยาวิเศษณ์ขั้นกว่า", ["comparative adverbs"] = "คำกริยาวิเศษณ์ขั้นกว่า", ["conjunction forms"] = "รูปสันธาน", ["contractions"] = "รูปหดย่อ", --["converbs"] = "converbs", ["determiner comparative forms"] = "รูปตัวกำหนดขั้นกว่า", ["determiner forms"] = "รูปตัวกำหนด", ["determiner superlative forms"] = "รูปตัวกำหนดขั้นสุด", ["diminutive nouns"] = "คำนามบอกความเล็ก", --["elative adjectives"] = "elative adjectives", ["equative adjective forms"] = "รูปคุณศัพท์ขั้นเท่า", ["equative adjectives"] = "คำคุณศัพท์ขั้นเท่า", ["future participles"] = "รูปกริยาขยายอนาคตกาล", ["gerunds"] = "รูปกริยาเป็นนาม", ["infinitive forms"] = "รูปผันรูปกริยากลาง", ["infinitives"] = "รูปกริยากลาง", ["interjection forms"] = "รูปอุทาน", ["jyutping"] = "ยฺหวืดเพ็ง", ["misspellings"] = "รูปสะกดผิด", --["negative participles"] = "negative participles", --["nominal participles"] = "nominal participles", --["noun case forms"] = "noun case forms", ["noun dual forms"] = "รูปนามทวิพจน์", ["noun forms"] = "รูปนาม", ["nf"] = "รูปนาม", ["nounf"] = "รูปนาม", ["noun paucal forms"] = "รูปนามบอกความน้อย", ["noun plural forms"] = "รูปนามพหูพจน์", --["noun possessive forms"] = "noun possessive forms", --["noun singulative forms"] = "noun singulative forms", ["numeral forms"] = "รูปเลข", ["participles"] = "รูปกริยาขยาย", ["participle forms"] = "รูปผันรูปกริยาขยาย", ["particle forms"] = "รูปอนุภาค", ["passive participles"] = "รูปกริยาขยายกรรมวาจก", ["past active participles"] = "รูปกริยาขยายกรรตุวาจกอดีตกาล", ["past participles"] = "รูปกริยาขยายอดีตกาล", ["past participle forms"] = "รูปผันรูปกริยาขยายอดีตกาล", ["past passive participles"] = "รูปกริยาขยายกรรมวาจกอดีตกาล", --["perfect active participles"] = "perfect active participles", --["perfect participles"] = "perfect participles", --["perfect passive participles"] = "perfect passive participles", ["pinyin"] = "พินอิน", ["plurals"] = "พหูพจน์", ["postposition forms"] = "รูปปัจฉบท", ["prefix forms"] = "รูปอุปสรรค", --["preposition contractions"] = "preposition contractions", ["preposition forms"] = "รูปบุพบท", --["prepositional pronouns"] = "prepositional pronouns", ["present active participles"] = "รูปกริยาขยายกรรตุวาจกปัจจุบันกาล", ["present participles"] = "รูปกริยาขยายปัจจุบันกาล", ["present passive participles"] = "รูปกริยาขยายกรรมวาจกปัจจุบันกาล", ["pronoun forms"] = "รูปสรรพนาม", --["pronoun possessive forms"] = "pronoun possessive forms", ["proper noun forms"] = "รูปวิสามานยนาม", ["proper noun plural forms"] = "รูปวิสามานยนามพหูพจน์", ["rafsi"] = "รัฟซี", ["romanizations"] = "การถอดเป็นอักษรโรมัน", --["root forms"] = "root forms", --["singulatives"] = "singulatives", ["suffix forms"] = "รูปปัจจัย", ["superlative adjective forms"] = "รูปคุณศัพท์ขั้นสุด", ["superlative adjectives"] = "คำคุณศัพท์ขั้นสุด", ["superlative adverb forms"] = "รูปกริยาวิเศษณ์ขั้นสุด", ["superlative adverbs"] = "คำกริยาวิเศษณ์ขั้นสุด", ["verb forms"] = "รูปกริยา", ["verbal nouns"] = "คำกริยานาม", -- these are something else ["cardinal nouns"] = "คำนามเชิงการนับ", ["abstract nouns"] = "คำอาการนาม", ["auxiliary verbs"] = "คำกริยาช่วย", ["cardinal adjectives"] = "คำคุณศัพท์เชิงการนับ", } function export.th_pos(pos) return thai_pos[pos] or thai_pos[en_utilities.pluralize(pos)] or pos end -- Converts Thai "lemma" category name into Thai "non-lemma form" category name function export.th_pos_to_form(pos) if pos == "" or pos == "คำหลัก" or pos == "รูปผัน" then return "รูปผัน" end if find(pos, "^คำ") then return gsub(pos, "^คำ", "รูป") end if find(pos, "^รูป") then return "รูปผัน" .. pos else return "รูป" .. pos end end -- Insert a full language name into a category name by Thai logic function export.th_categorize(cat, langname) local isEndWithThai = find(cat, "[ก-๛]$") if find(cat, "^ศัพท์") then return "ศัพท์" .. langname .. sub(cat, 6) elseif find(cat, "^รายการ") then return "รายการ" .. langname .. sub(cat, 7) elseif find(cat, "★") then return gsub(cat, "★", langname) -- insert in-between at ★ else return cat .. (isEndWithThai and "" or " ") .. langname end end -- Converts Arabic numbers (e.g., "123") to Thai numbers (e.g., "๑๒๓") function export.arabic_to_thai_digits(num) local str = tostring(num) for i = 0, 9 do str = gsub(str, tostring(i), thai_digits[i + 1]) end return str end -- Converts Thai numbers (e.g., "๑๒๓") to Arabic numbers (e.g., "123") function export.thai_to_arabic_digits(str) str = tostring(str) for i, thai_char in ipairs(thai_digits) do str = gsub(str, thai_char, tostring(i - 1)) end return str end -- Read Number as Value function export.number_to_thai_words(num) local str = tostring(num) str = gsub(str, ",", "") str = export.thai_to_arabic_digits(str) -- Handle signs local prefix = "" local first_char = sub(str, 1, 1) if first_char == "-" then prefix = thai_words2["−"] -- Mathematical "ลบ" str = sub(str, 2) elseif first_char == "+" then prefix = thai_words2["+"] str = sub(str, 2) end -- Split string into integer and decimal parts local intPart, decPart = match(str, "^(%d*)%.?(%d*)$") if (not intPart or intPart == "") and (not decPart or decPart == "") then return "Invalid input" end -- Strip leading zeros from integer part if intPart == "" then intPart = "0" end intPart = match(intPart, "^0*(.+)$") or "0" -- Helper: Process Integer Part local function get_integer_words(s) if s == "0" then return thai_words[1] end local positions = {"", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน"} local result = "" local length = len(s) for i = 1, length do local d = tonumber(sub(s, i, i)) local pos = length - i + 1 local effPos = ((pos - 1) % 6) + 1 if d ~= 0 then local word = thai_words[d + 1] if d == 1 and effPos == 1 and i > 1 then word = "เอ็ด" end if d == 1 and effPos == 2 then word = "" end if d == 2 and effPos == 2 then word = "ยี่" end result = result .. word .. positions[effPos] end if pos > 1 and effPos == 1 then result = result .. "ล้าน" end end return result end -- Helper: Process Decimal Part local function get_decimal_words(s) if not s or s == "" then return "" end local result = thai_words2["."] for i = 1, len(s) do local d = tonumber(sub(s, i, i)) result = result .. thai_words[d + 1] end return result end return prefix .. get_integer_words(intPart) .. get_decimal_words(decPart) end -- Read Number in Sequence function export.read_number_in_sequence(num) local str = tostring(num) str = gsub(str, ",", "") str = export.thai_to_arabic_digits(str) local has_math_minus = false if find(str, "−") then has_math_minus = true str = gsub(str, "−", "") end local result = "" if has_math_minus then result = result .. thai_words2["−"] end for i = 1, len(str) do local char = sub(str, i, i) local d = tonumber(char) if d then result = result .. thai_words[d + 1] elseif thai_words2[char] then result = result .. thai_words2[char] end end return result end return export fxl3y2udshspfv4sb473snz6dqws3um มอดูล:sem-arb-headword 828 372774 5723271 5685355 2026-05-20T04:47:25Z OctraBot 3198 5723271 Scribunto text/plain -- Based on [[Module:ar-headword]] by: Benwing, CodeCat -- Adapted by Fenakhay local sc = require("Module:scripts").getByCode("Arab") local lang = require("Module:languages").getByCode("ar") local export = {} local pos_functions = {} ----------------------- -- Utility functions -- ----------------------- -- If Not Empty local function ine(arg) if arg == "" then return nil else return arg end end local function list_to_set(list) local set = {} for _, item in ipairs(list) do set[item] = true end return set end -- version of mw.ustring.gsub() that discards all but the first return value function rsub(term, foo, bar) local retval = mw.ustring.gsub(term, foo, bar) return retval end -- Tracking functions local trackfn = require("Module:debug").track function track(page) trackfn(lang:getCode() .. "-headword/" .. page) return true end local function append_cat(data, pos) table.insert(data.categories, pos .. lang:getCategoryName()) --th end local function glossary_link(entry, text) text = text or entry return "[[ภาคผนวก:อภิธานศัพท์#" .. entry .. "|" .. text .. "]]" end function remove_links(text) text = rsub(text, "%[%[[^|%]]*|", "") text = rsub(text, "%[%[", "") text = rsub(text, "%]%]", "") return text end local function make_unused_key_tracker(t) local unused_keys = require "Module:table".listToSet(require "Module:table".keysToList(t)) local mt = { __index = function(_, key) if key ~= nil then unused_keys[key] = nil end return t[key] end, __newindex = function(_, key, value) t[key] = value end } local proxy_table = setmetatable({}, mt) return proxy_table, unused_keys end -- The main entry point. function export.show(frame) local PAGENAME = mw.loadData("Module:headword/data").pagename local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.") -- หมวดหมู่เป็นภาษาไทย local poscat_th = require("Module:th-utilities").th_pos(poscat) local args, unused_keys = make_unused_key_tracker(frame:getParent().args) if frame.args["lang"] then lang = require("Module:languages").getByCode(frame.args["lang"]) else error("Please specify a language code.") end -- Gather parameters local data = { lang = lang, pos_category = poscat_th, categories = {}, heads = {}, translits = {}, genders = {}, inflections = {} } local saw_head = false local head = ine(args["head"]) if head then saw_head = true else head = PAGENAME end local translit = ine(args["tr"]) local i = 1 while head do table.insert(data.heads, head) data.translits[#data.heads] = translit i = i + 1 head = ine(args["head" .. i]) if head then saw_head = true end translit = ine(args["tr" .. i]) end data.no_redundant_head_cat = not saw_head if pos_functions[poscat_th] then pos_functions[poscat_th].func(args, data) end local unused_key_list = require "Module:table".keysToList(unused_keys) if #unused_key_list > 0 then local unused_key_string = require "Module:array"(unused_key_list):map( function(key) return "|" .. key .. "=" .. args[key] end ):concat("\n") error("Unused arguments: " .. unused_key_string) end return require("Module:headword").full_headword(data) end -- Get a list of inflections. See handle_infl() for meaning of ARGS, ARGPREF -- and DEFGENDER. local function getargs(args, argpref, defgender) -- Gather parameters local forms = {} if ine(args[position]) then form = ine(args[position]) else form = ine(args[argpref]) end local translit = ine(args[argpref .. "tr"]) local gender = ine(args[argpref .. "g"]) local gender2 = ine(args[argpref .. "g2"]) local i = 1 while form do local genderlist = (gender or gender2) and {gender, gender2} or defgender and {defgender} or nil table.insert(forms, {term = form, tr = translit, genders = genderlist}) i = i + 1 form = ine(args[argpref .. i]) translit = ine(args[argpref .. i .. "tr"]) gender = ine(args[argpref .. i .. "g"]) gender2 = ine(args[argpref .. i .. "g2"]) end return forms end local function handle_infl(args, data, argpref, label, defgender, position) local newinfls = getargs(args, argpref, defgender, position) newinfls.label = label if #newinfls > 0 then table.insert(data.inflections, newinfls) end end local function handle_all_infl(args, data, argpref, label, nobase, position) if not nobase and argpref ~= "" then handle_infl(args, data, argpref, label, nil, position) end local labelsp = label == "" and "" or label .. " " handle_infl(args, data, argpref .. "cons", labelsp .. "construct state") end -- Handle the case where pl=-, indicating an uncountable noun. local function handle_noun_plural(args, data) if args["pl"] == "-" then table.insert(data.inflections, {label = "โดยปกติ[[ภาคผนวก:อภิธานศัพท์#นับไม่ได้|นับไม่ได้]]"}) append_cat(data, "คำนามนับไม่ได้") else handle_infl(args, data, "pl", "พหูพจน์") handle_infl(args, data, "pauc", "ตัวบอกความน้อย") end end local valid_genders = list_to_set( { "s", "m", "m-s", "f", "f-s", "m-p", "f-p", "p", "d", "m-d", "f-d", "mfbysense", "mf" } ) local function handle_gender(args, data, default, nonlemma, optional) local g = ine(args["g"]) or default local g2 = ine(args["g2"]) local function process_gender(gender) if not gender and not optional then table.insert(data.genders, "?") elseif not gender and optional then -- do nothing elseif valid_genders[g] then table.insert(data.genders, gender) else error("Unrecognized gender: " .. gender) end end process_gender(g) if g2 then process_gender(g2) end if nonlemma then return end if g and g2 then append_cat(data, "nouns with multiple genders") end end -- Part-of-speech functions pos_functions["คำคุณศัพท์"] = { func = function(args, data) if args[1] == "-" then local forms = {} forms.label = "ผันรูปไม่ได้" table.insert(data.inflections, forms) else handle_all_infl(args, data, "f", "เพศหญิง") handle_all_infl(args, data, "cpl", "พหูพจน์เพศรวม") handle_all_infl(args, data, "pl", "พหูพจน์เพศชาย") handle_all_infl(args, data, "fpl", "พหูพจน์เพศหญิง") handle_all_infl(args, data, "dim", "ตัวบอกความเล็ก") handle_infl(args, data, "el", "elative") if ine(args["der"]) then if args["der"] == "active" then append_cat(data, "terms derived from active participles") elseif args["der"] == "passive" then append_cat(data, "terms derived from passive participles") end end end end } function handle_sing_coll_noun_infls(args, data) handle_infl(args, data, "", "") handle_infl(args, data, "d", "ทวิพจน์") handle_infl(args, data, "pauc", "ตัวบอกความน้อย") handle_infl(args, data, "pl", "พหูพจน์") end pos_functions["คำสมุหนาม"] = { func = function(args, data) data.pos_category = "คำนาม" append_cat(data, "คำสมุหนาม") table.insert(data.inflections, {label = glossary_link("คำสมุหนาม")}) handle_gender(args, data, "m") -- Handle sing= (the corresponding singulative noun) and singg= (its gender) handle_infl(args, data, "sing", "คำเอกนาม", "f") handle_sing_coll_noun_infls(args, data) end } pos_functions["คำเอกนาม"] = { func = function(args, data) data.pos_category = "คำนาม" append_cat(data, "คำเอกนาม") table.insert(data.inflections, {label = glossary_link("คำเอกนาม")}) handle_gender(args, data, "f") -- Handle coll= (the corresponding collective noun) and collg= (its gender) handle_infl(args, data, "coll", "คำสมุหนาม", "m") handle_sing_coll_noun_infls(args, data) end } function handle_noun_infls(args, data, singonly) handle_all_infl(args, data, "", "") if not singonly then handle_all_infl(args, data, "d", "ทวิพจน์") handle_noun_plural(args, data) handle_all_infl(args, data, "pl", "พหูพจน์", "nobase") handle_all_infl(args, data, "pauc", "ตัวบอกความน้อย", "nobase") end handle_all_infl(args, data, "f", "เพศหญิง") handle_all_infl(args, data, "m", "เพศชาย") if not singonly then handle_all_infl(args, data, "dim", "ตัวบอกความเล็ก") end end pos_functions["คำนาม"] = { func = function(args, data) handle_gender(args, data) handle_noun_infls(args, data) local g = ine(args["g"]) or default local g2 = ine(args["g2"]) end } pos_functions["คำกริยานาม"] = { func = function(args, data) handle_gender(args, data) handle_infl(args, data, "inst", "instance noun") end } pos_functions["เลข"] = { func = function(args, data) append_cat(data, "เลขเชิงการนับ") handle_gender(args, data, nil, nil, true) handle_noun_infls(args, data) end } pos_functions["คำวิสามานยนาม"] = { func = function(args, data) handle_gender(args, data) handle_noun_infls(args, data, "เอกพจน์เท่านั้น") end } pos_functions["คำสรรพนาม"] = { params = { ["g"] = {}, ["g2"] = {} }, func = function(args, data) handle_gender(args, data, nil, nil, true) handle_infl(args, data, "encl", "enclitic form") handle_infl(args, data, "f", "เพศหญิง") handle_infl(args, data, "pl", "พหูพจน์") end } pos_functions["รูปคุณศัพท์เพศหญิง"] = { params = { ["g"] = {}, ["g2"] = {}, ["pl"] = {}, ["islemma"] = {type = boolean} }, func = function(args, data) data.pos_category = "รูปคุณศัพท์เพศหญิง" handle_noun_plural(args, data) handle_gender(args, data, "f", "nonlemma") end } pos_functions["รูปคุณศัพท์พหูพจน์"] = { params = { ["g"] = {}, ["g2"] = {} }, func = function(args, data) data.pos_category = "รูปคุณศัพท์พหูพจน์" handle_gender(args, data, "p", "nonlemma") end } pos_functions["รูปนาม"] = { params = { ["g"] = {}, ["g2"] = {} }, func = function(args, data) handle_gender(args, data, nil, "nonlemma") end } pos_functions["รูปนามทวิพจน์"] = { params = { ["g"] = {}, ["g2"] = {} }, func = function(args, data) append_cat(data, "รูปนามทวิพจน์") handle_gender(args, data, "m-d", "nonlemma") end } pos_functions["active participles"] = { params = { [2] = {} }, func = function(args, data) data.pos_category = "รูปกริยาขยาย" append_cat(data, "รูปกริยาขยายกรรตุวาจก") handle_infl(args, data, "", "") handle_infl(args, data, "f", "เพศหญิง") handle_infl(args, data, "cpl", "พหูพจน์เพศรวม") handle_infl(args, data, "pl", "พหูพจน์เพศชาย") handle_infl(args, data, "fpl", "พหูพจน์เพศหญิง") end } pos_functions["passive participles"] = { params = { [2] = {} }, func = function(args, data) data.pos_category = "รูปกริยาขยาย" append_cat(data, "รูปกริยาขยายกรรมวาจก") handle_infl(args, data, "", "") handle_infl(args, data, "f", "เพศหญิง") handle_infl(args, data, "cpl", "พหูพจน์เพศรวม") handle_infl(args, data, "pl", "พหูพจน์เพศชาย") handle_infl(args, data, "fpl", "พหูพจน์เพศหญิง") end } local verb_forms = { ["I"] = true, ["II"] = true, ["III"] = true, ["IV"] = true, ["V"] = true, ["VI"] = true, ["VII"] = true, ["VIII"] = true, ["IX"] = true, ["X"] = true, ["XI"] = true, ["Iq"] = true, ["IIq"] = true } local lang_exception = { ["ajp"] = true, ["acy"] = true} pos_functions["คำกริยา"] = { func = function(args, data) data.pos_category = "คำกริยา" if ine(args[1]) then if verb_forms[args[1]] then data.gloss = '<abbr title="Form ' .. args[1] .. '">[[ภาคผนวก:คำกริยาภาษาอาหรับ#รูป ' .. args[1] .. '|' .. args[1] .. ']]</abbr>' append_cat(data, "คำกริยารูป " .. args[1]) else error("Invalid verb form. Please provide a valid one.") end elseif mw.title.getCurrentTitle().nsText ~= "แม่แบบ" or args[1] ~= "-" then track("verbs lacking forms") end if lang_exception[lang:getCode()] then handle_infl(args, data, "pres", "present") handle_infl(args, data, "subj", "subjunctive") else handle_infl(args, data, "np", "non-past") end handle_infl(args, data, "vn", "คำกริยานาม") handle_infl(args, data, "ap", "รูปกริยาขยายกรรตุวาจก") handle_infl(args, data, "pp", "รูปกริยาขยายกรรมวาจก") end } local function handle_conj_form(args, data) local form = ine(args[1]) if form then if not verb_forms[form] then error("Invalid verb conjugation form " .. form) end table.insert(data.inflections, {label = "[[ภาคผนวก:คำกริยาภาษาอาหรับ#รูป " .. form .. "|form " .. form .. "]]"}) end end pos_functions["รูปกริยา"] = { params = { [1] = {} }, func = function(args, data) handle_conj_form(args, data) end } pos_functions["คำบุพบท"] = { params = { ["g"] = {}, ["g2"] = {} }, func = function(args, data) if ine(args["g"]) or ine(args["g2"]) then handle_gender(args, data) end handle_infl(args, data, "f", "เพศหญิง") handle_infl(args, data, "pl", "พหูพจน์") end } pos_functions["ตัวกำหนด"] = { params = { ["g"] = {}, ["g2"] = {} }, func = function(args, data) handle_gender(args, data, nil, nil, true) handle_infl(args, data, "f", "เพศหญิง") handle_infl(args, data, "pl", "พหูพจน์") end } pos_functions["คำกริยาวิเศษณ์"] = { func = function(args, data) handle_infl(args, data, "obl", "oblique form") end } pos_functions["ปัจจัย"] = { params = { ["g"] = {} }, func = function(args, data) handle_gender(args, data, nil, nil, true) handle_infl(args, data, "f", "เพศหญิง") handle_infl(args, data, "pl", "พหูพจน์") end } return export 3grn9frslewhnpiznh1eashphy2b48w คุยกับผู้ใช้:Peterxy 3 1857796 5723307 4933458 2026-05-20T10:44:55Z Neriah 12116 Neriah ย้ายหน้า [[คุยกับผู้ใช้:Peterxy12]] ไปยัง [[คุยกับผู้ใช้:Peterxy]]: ย้ายหน้าอัตโนมัติขณะเปลี่ยนชื่อผู้ใช้ "[[Special:CentralAuth/Peterxy12|Peterxy12]]" เป็น "[[Special:CentralAuth/Peterxy|Peterxy]]" 4933458 wikitext text/x-wiki {{Template:Welcome|realName=|name=Peterxy12}} -- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 20:04, 20 กันยายน 2568 (+07) h374qtp05eiq02go449v4cheiskjqd2 ʻIlana 0 2326658 5723297 5715111 2026-05-20T06:57:50Z OctraBot 3198 /* คำกริยา */ 5723297 wikitext text/x-wiki == ภาษาฮาวาย == === การออกเสียง === * {{haw-IPA}} === คำวิสามานยนาม === {{head|haw|คำวิสามานยนาม}} # {{tcl|haw|อิหร่าน|id=Q794}} # [[ชาว]][[อิหร่าน]] === คำกริยา === {{head|haw|คำกริยา}} # {{lb|haw|stative}} คือ/เป็นอิหร่าน bocz6tawhnylzdt5x2hxunimqtd5dp6 มอดูล:mt-headword 828 2331348 5723274 5723132 2026-05-20T04:49:19Z OctraBot 3198 5723274 Scribunto text/plain -- Based on [[Module:ar-headword]] by: Benwing, CodeCat -- Adapted by Fenakhay local lang = require("Module:languages").getByCode("mt") local export = {} local pos_functions = {} local u = mw.ustring.char local function glossary_link(entry, text) text = text or entry return "[[ภาคผนวก:อภิธานศัพท์#" .. entry .. "|" .. text .. "]]" end local function parse_qualifiers(quals, sense) if quals == nil and sense == nil then return nil end local qualifiers = { } if quals ~= nil then local list_quals = mw.text.split(quals, ',%s*') for _, qual in ipairs(list_quals) do table.insert(qualifiers, qual) end end return qualifiers end ----------------------- -- Utility functions -- ----------------------- -- If Not Empty local function ine(arg) if arg == "" then return nil else return arg end end local function list_to_set(list) local set = {} for _, item in ipairs(list) do set[item] = true end return set end -- version of mw.ustring.gsub() that discards all but the first return value local function rsub(term, foo, bar) local retval = mw.ustring.gsub(term, foo, bar) return retval end local rfind = mw.ustring.find -- Tracking functions local trackfn = require("Module:debug").track local function track(page) trackfn("mt-headword/" .. page) return true end local function append_cat(data, pos) table.insert(data.categories, pos .. lang:getCategoryName()) --th end local function remove_links(text) text = rsub(text, "%[%[[^|%]]*|", "") text = rsub(text, "%[%[", "") text = rsub(text, "%]%]", "") return text end local function make_unused_key_tracker(t) local unused_keys = require "Module:table".listToSet(require "Module:table".keysToList(t)) local mt = { __index = function(self, key) if key ~= nil then unused_keys[key] = nil end return t[key] end, __newindex = function(self, key, value) t[key] = value end } local proxy_table = setmetatable({}, mt) return proxy_table, unused_keys end -- The main entry point. function export.show(frame) local PAGENAME = mw.loadData("Module:headword/data").pagename local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.") -- หมวดหมู่เป็นภาษาไทย local poscat_th = require("Module:th-utilities").th_pos(poscat) local params = { [1] = {list = "head", allow_holes = true, default = ""}, ["head"] = {default = ""} } local args, unused_keys = make_unused_key_tracker(frame:getParent().args) -- Gather parameters local data = {lang = lang, pos_category = poscat_th, categories = {}, heads = {}, genders = {}, inflections = {}} local saw_head = false local head = ine(args["head"]) if head then saw_head = true else head = PAGENAME end local i = 1 while head do table.insert(data.heads, head) i = i + 1 head = ine(args["head" .. i]) if head then saw_head = true end end data.no_redundant_head_cat = not saw_head if pos_functions[poscat_th] then pos_functions[poscat_th].func(args, data) end local unused_key_list = require "Module:table".keysToList(unused_keys) if #unused_key_list > 0 then local unused_key_string = require "Module:array"(unused_key_list) :map(function(key) return "|" .. key .. "=" .. args[key] end) :concat("\n") error("Unused arguments: " .. unused_key_string) end if mw.ustring.match(PAGENAME, "[Gg]ħ") then append_cat(data, "terms spelled with Għ") end return require("Module:headword").full_headword(data) end local function getargs(args, argpref, defgender, position) -- Gather parameters local forms = {} local form if ine(args[position]) then form = ine(args[position]) else form = ine(args[argpref]) end local gender = ine(args[argpref .. "g"]) local gender2 = ine(args[argpref .. "g2"]) local qualifiers = ine(args[argpref .. "q"]) local senses = ine(args[argpref .. "id"]) if form ~= nil and rfind(form, "%*") ~= nil then track("cleanup shit") end local i = 1 while form do local genderlist = (gender or gender2) and {gender, gender2} or defgender and {defgender} or nil table.insert(forms, {term = form, gender = genderlist, q = parse_qualifiers(qualifiers, senses)}) i = i + 1 form = ine(args[argpref .. i]) if form ~= nil and rfind(form, "%*") ~= nil then track("cleanup shit") end gender = ine(args[argpref .. i .. "g"]) gender2 = ine(args[argpref .. i .. "g2"]) qualifiers = ine(args[argpref .. i .. "q"]) senses = ine(args[argpref .. i .. "id"]) end return forms end local function handle_infl(args, data, argpref, label, defgender, position) local newinfls = getargs(args, argpref, defgender, position) newinfls.label = label if #newinfls > 0 then table.insert(data.inflections, newinfls) end end local function handle_all_infl(args, data, argpref, label, nobase, position) if not nobase and argpref ~= "" then handle_infl(args, data, argpref, label, nil, position) end local labelsp = label == "" and "" or label .. " " handle_infl(args, data, argpref .. "cons", labelsp .. "construct state") end -- Handle the case where p=-, indicating an uncountable noun. local function handle_noun_plural(args, data) if args["p"] == "-" then table.insert(data.inflections, {label = "usually [[Appendix:Glossary#uncountable|uncountable]]"}) append_cat(data, "คำนามนับไม่ได้") else handle_infl(args, data, "p", "พหูพจน์") handle_infl(args, data, "pauc", "ตัวบอกความน้อย") end end local valid_genders = list_to_set( {"m", "m-s", "f", "f-s", "m-p", "f-p", "p", "d", "m-d", "f-d", "mf", "mfbysense" }) local function is_masc_sg(g) return g == "m" or g == "m-s" or g == "m-p" or g == "m-d" or g == "mf" or g == "mfbysense" end local function is_fem_sg(g) return g == "f" or g == "f-s" or g == "f-p" or g == "f-d" or g == "mf" or g == "mfbysense" end local function handle_gender(args, data, default, nonlemma, optional) local g = ine(args["g"]) or default local g2 = ine(args["g2"]) local function process_gender(gender) if not gender and not optional then table.insert(data.genders, "?") elseif not gender and optional then -- do nothing elseif valid_genders[g] then table.insert(data.genders, gender) else error("Unrecognized gender: " .. gender) end end process_gender(g) if g2 then process_gender(g2) end if nonlemma then return end end -- Part-of-speech functions pos_functions["คำคุณศัพท์"] = { func = function(args, data) if args[1] == "-" then local forms = {} forms.label = glossary_link("ผันรูปไม่ได้") append_cat(data, "คำคุณศัพท์ผันรูปไม่ได้") table.insert(data.inflections, forms) else handle_all_infl(args, data, "f", "เพศหญิงเอกพจน์") handle_all_infl(args, data, "p", "พหูพจน์") end handle_all_infl(args, data, "dim", "ตัวบอกความเล็ก") handle_all_infl(args, data, "comp", "ขั้นกว่า") end } local function handle_sing_coll_noun_infls(args, data) handle_all_infl(args, data, "", "") handle_all_infl(args, data, "d", "ทวิพจน์") handle_noun_plural(args, data) end pos_functions["คำสมุหนาม"] = { func = function(args, data) data.pos_category = "คำนาม" append_cat(data, "คำสมุหนาม") table.insert(data.inflections, {label = "คำสมุหนาม"}) handle_gender(args, data, "m") -- Handle sing= (the corresponding singulative noun) and singg= (its gender) handle_infl(args, data, "sing", "คำเอกนาม", "f") handle_sing_coll_noun_infls(args, data) handle_all_infl(args, data, "dim", "ตัวบอกความเล็ก") end } pos_functions["คำเอกนาม"] = { func = function(args, data) data.pos_category = "รูปนาม" append_cat(data, "คำเอกนาม") table.insert(data.inflections, {label = "คำเอกนาม"}) handle_gender(args, data, "f") -- Handle coll= (the corresponding collective noun) and collg= (its gender) handle_infl(args, data, "coll", "คำสมุหนาม", "m") handle_sing_coll_noun_infls(args, data) handle_all_infl(args, data, "dim", "ตัวบอกความเล็ก") end } local function handle_noun_infls(args, data, singonly) handle_all_infl(args, data, "", "") if not singonly then handle_all_infl(args, data, "d", "ทวิพจน์") handle_noun_plural(args, data) handle_all_infl(args, data, "p", "พหูพจน์", "nobase") handle_all_infl(args, data, "pauc", "ตัวบอกความน้อย", "nobase") end handle_all_infl(args, data, "f", "เพศหญิง") handle_all_infl(args, data, "m", "เพศชาย") if not singonly then handle_all_infl(args, data, "dim", "ตัวบอกความเล็ก") end end pos_functions["คำนาม"] = { func = function(args, data) handle_gender(args, data) handle_noun_infls(args, data) local g = ine(args["g"]) or default local g2 = ine(args["g2"]) if is_masc_sg(g) or is_masc_sg(g2) then append_cat(data, "คำนามเพศชาย") elseif is_fem_sg(g) or is_fem_sg(g2) then append_cat(data, "คำนามเพศหญิง") end end } pos_functions["เลข"] = { func = function(args, data) append_cat(data, "เลขเชิงการนับ") handle_gender(args, data) handle_noun_infls(args, data) end } pos_functions["คำวิสามานยนาม"] = { func = function(args, data) handle_gender(args, data, nil, nil, true) handle_noun_infls(args, data, "เอกพจน์เท่านั้น") end } pos_functions["คำกริยานาม"] = { func = function(args, data) data.pos_category = "คำนาม" handle_gender(args, data) handle_all_infl(args, data, "inst", "instance noun") handle_all_infl(args, data, "p", "พหูพจน์") end } pos_functions["รูปคุณศัพท์เพศหญิง"] = { func = function(args, data) data.pos_category = "รูปคุณศัพท์เพศหญิง" handle_gender(args, data, "f", "nonlemma") end } pos_functions["รูปคุณศัพท์พหูพจน์"] = { func = function(args, data) data.pos_category = "รูปคุณศัพท์พหูพจน์" handle_gender(args, data, "p", "nonlemma") end } pos_functions["รูปคุณศัพท์เพศหญิงพหูพจน์"] = { func = function(args, data) data.pos_category = nil append_cat(data, "รูปคุณศัพท์พหูพจน์") append_cat(data, "รูปคุณศัพท์เพศหญิง") handle_gender(args, data, nil, "nonlemma", true) end } pos_functions["รูปนาม"] = { func = function(args, data) data.pos_category = "รูปนาม" handle_gender(args, data, nil, "nonlemma", true) end } pos_functions["รูปนามทวิพจน์"] = { params = { ["g"] = {}, ["g2"] = {}, }, func = function(args, data) append_cat(data, "รูปนามทวิพจน์") handle_gender(args, data, "d", "nonlemma") end } pos_functions["รูปนามเพศหญิงพหูพจน์"] = { func = function(args, data) data.pos_category = nil append_cat(data, "รูปนามพหูพจน์") append_cat(data, "คำนามเพศหญิง") append_cat(data, "คำหลัก") handle_gender(args, data, nil, "nonlemma", true) end } pos_functions["คำกริยา"] = { func = function(args, data) data.pos_category = "คำกริยา" handle_all_infl(args, data, "imper", "ไม่สมบูรณ์", nil, 1) handle_all_infl(args, data, "pp", "รูปกริยาขยายอดีตกาล", nil, 2) handle_all_infl(args, data, "ap", "รูปกริยาขยายกรรตุวาจก", nil, 3) handle_all_infl(args, data, "vn", "คำกริยานาม", nil, 4) if ine(args["ap"]) ~= nil or ine(args[3]) ~= nil then track("active participle") end end } pos_functions["คำกริยาวิเศษณ์"] = { func = function(args, data) data.pos_category = "คำกริยาวิเศษณ์" handle_all_infl(args, data, "stem", "stem") handle_all_infl(args, data, "emph", "emphatic") end } pos_functions["รูปเลข"] = { func = function(args, data) data.pos_category = "รูปเลข" handle_gender(args, data) end } pos_functions["รูปกริยาขยายอดีตกาล"] = { func = function(args, data) data.pos_category = "รูปกริยาขยาย" append_cat(data, "รูปกริยาขยายอดีตกาล") handle_all_infl(args, data, "f", "เพศหญิง") handle_all_infl(args, data, "p", "พหูพจน์") end } pos_functions["รูปกริยาขยายกรรตุวาจก"] = { func = function(args, data) data.pos_category = "รูปกริยาขยาย" append_cat(data, "รูปกริยาขยายกรรตุวาจก") handle_all_infl(args, data, "f", "เพศหญิง") handle_all_infl(args, data, "p", "พหูพจน์") end } pos_functions["ตัวกำหนด"] = { func = function(args, data) data.pos_category = "ตัวกำหนด" handle_all_infl(args, data, "m", "เพศชาย") handle_all_infl(args, data, "f", "เพศหญิง") handle_all_infl(args, data, "p", "พหูพจน์") end } pos_functions["ปัจจัย"] = { func = function(args, data) data.pos_category = "ปัจจัย" handle_gender(args, data, nil, nil, true) handle_all_infl(args, data, "f", "เพศหญิง") handle_all_infl(args, data, "d", "ทวิพจน์") handle_all_infl(args, data, "p", "พหูพจน์") end } pos_functions["อุปสรรค"] = { func = function(args, data) data.pos_category = "อุปสรรค" handle_gender(args, data, nil, nil, true) handle_all_infl(args, data, "f", "เพศหญิง") handle_all_infl(args, data, "d", "ทวิพจน์") handle_all_infl(args, data, "p", "พหูพจน์") end } pos_functions["คำสรรพนาม"] = { func = function(args, data) data.pos_category = "คำสรรพนาม" handle_gender(args, data, nil, nil, true) handle_all_infl(args, data, "f", "เพศหญิง") handle_all_infl(args, data, "d", "ทวิพจน์") handle_all_infl(args, data, "p", "พหูพจน์") end } return export faj09g64put3qpz3uc9e5xfss2z4s06 ผู้ใช้:OctraBot/กระบะทราย1 2 2331405 5723234 2026-05-20T03:02:25Z OctraBot 3198 สร้างหน้าด้วย "{{trans-top|id=Q819|ประเทศในเอเชียตะวันออกเฉียงใต้}} * Abkhaz: {{t|ab|Лаос}} * Afrikaans: {{t|af|Laos}} * Albanian: {{t|sq|Laos|m}} {{qualifier|indefinite}}, {{t+|sq|Laosi|m}} {{qualifier|definite}} * Amharic: {{t|am|ላዎስ}} * Arabic: {{t|ar|لَاوْس|f}}, {{t|ar|لَاوُس|f|tr=lāwos}} * Aramaic: *: Assyrian Neo-Aramaic: {{t|aii|ܠܵܘܣ|f|tr=laws}} * Armenian: {{t+|hy|Լաո..." 5723234 wikitext text/x-wiki {{trans-top|id=Q819|ประเทศในเอเชียตะวันออกเฉียงใต้}} * Abkhaz: {{t|ab|Лаос}} * Afrikaans: {{t|af|Laos}} * Albanian: {{t|sq|Laos|m}} {{qualifier|indefinite}}, {{t+|sq|Laosi|m}} {{qualifier|definite}} * Amharic: {{t|am|ላዎስ}} * Arabic: {{t|ar|لَاوْس|f}}, {{t|ar|لَاوُس|f|tr=lāwos}} * Aramaic: *: Assyrian Neo-Aramaic: {{t|aii|ܠܵܘܣ|f|tr=laws}} * Armenian: {{t+|hy|Լաոս}} * Assamese: {{t|as|লাউচ}} * Asturian: {{t+|ast|Laos}} * Azerbaijani: {{t+|az|Laos}} * Bashkir: {{t|ba|Лаос}} * Belarusian: {{t|be|Лао́с|m}} * Bengali: {{t+|bn|লাওস}} * Breton: {{t|br|Laos}} * Bulgarian: {{t+|bg|Лао́с|m}} * Burmese: {{t|my|လာအို}} * Catalan: {{t+|ca|Laos|m}} * Chinese: *: Mandarin: {{t+|cmn|老撾}}, {{t+|cmn|寮國}} {{qualifier|Taiwan}} * Crimean Tatar: {{t|crh|Laos}} *: Dobrujan Tatar: {{t|crh|Law}} * Czech: {{t+|cs|Laos|m}} * Danish: {{t|da|Laos|n}} * Dhivehi: {{t|dv|ލާއޯސް}} * Dutch: {{t+|nl|Laos|n}} * Esperanto: {{t+|eo|Laoso}} * Estonian: {{t+|et|Laos}} * Farefare: {{t|gur|Laogo}} * Faroese: {{t|fo|Laos|n}} * Finnish: {{t+|fi|Laos}} * French: {{t+|fr|Laos|m}} * Georgian: {{t+|ka|ლაოსი}} * German: {{t+|de|Laos|n}} * Greek: {{t+|el|Λάος|n}} * Hausa: {{t|ha|Laos}} * Hebrew: {{t|he|לָאוֹס|f|tr=laos}} * Hindi: {{t+|hi|लाओस|m}} * Hmong: *: Green Hmong: {{t|hnj|Los Tsuas}}, {{t|hnj|Nplog Teb}} {{qualifier|informal}} *: White Hmong: {{t|mww|Los Tsuas}}, {{t|mww|Nplog Teb}} {{qualifier|informal}} * Hungarian: {{t+|hu|Laosz}} * Icelandic: {{t+|is|Laos|n}} * Ido: {{t+|io|Laos}} * Indonesian: {{t+|id|Laos}} * Interlingua: {{t|ia|Laos}} * Irish: {{t|ga|Laos|m}} * Italian: {{t+|it|Laos|m}} * Japanese: {{t+|ja|ラオス|tr=Raosu}} * Kazakh: {{t+|kk|Лаос}} * Khmer: {{t+|km|លាវ}}, {{t+|km|ឡាវ}} * Korean: {{t+|ko|^라오스}} * Kurdish: *: Northern Kurdish: {{t+|kmr|Laos}} * Kyrgyz: {{t+|ky|Лаос}} * Lao: {{t+|lo|ລາວ}}, {{t|lo|ເມືອງລາວ}}<!-- sum of parts -->, {{t|lo|ປະເທດລາວ}}<!-- sum of parts --> * Latvian: {{t+|lv|Laosa|f}} * Lithuanian: {{t+|lt|Laosas|m}} * Lü: {{t|khb|ᦟᦱᧁ}} * Macedonian: {{t+|mk|Лаос|m}} * Malay: {{t+|ms|Laos}} * Maltese: {{t+|mt|Laos}} * Māori: {{t+|mi|Rāoho}} * Mongolian: *: Cyrillic: {{t+|mn|Лаос}} *: Mongolian script: {{t|mn|ᠯᠠᠣᠰ}} * Navajo: {{t|nv|Lááʼos}} * Nepali: {{t|ne|लाओस}} * Norman: {{t|nrf|Laos|m}} * Norwegian: *: Bokmål: {{t+|nb|Laos|n}} *: Nynorsk: {{t+|nn|Laos|n}} * Pashto: {{t|ps|لاوس|m|tr=lāwos}} * Persian: *: Dari: {{t|prs|لَائوس}} *: Iranian Persian: {{t+|fa-ira|لائوس}} * Polish: {{t+|pl|Laos|m-in}} * Portuguese: {{t+|pt|Laos}} * Romanian: {{t+|ro|Laos|n}} * Russian: {{t+|ru|Лао́с|m}} * Santali: {{t|sat|ᱞᱟᱣᱚᱥ}} * Scots: {{t|sco|Laos}} * Serbo-Croatian: *: Cyrillic: {{t|sh|Ла̏ос|m}} *: Latin: {{t|sh|Lȁos|m}} * Sinhalese: {{t|si|ලාඕසය}} * Slovak: {{t+|sk|Laos|m}} * Slovene: {{t+|sl|Laos|m}} * Spanish: {{t+|es|Laos}} * Swahili: {{t|sw|Laos}} * Swedish: {{t+|sv|Laos|n}} * Tagalog: {{t+|tl|Laos}} * Tajik: {{t+|tg|Лаос}} * Tatar: {{t|tt|Лаос}} * Telugu: {{t+|te|లావోస్}} * Tetum: {{t|tet|Laos}} * Thai: {{t+|th|ลาว}} *: Northern Thai: {{t|nod|ᩃᩣ᩠ᩅ}} * Tibetan: {{t|bo|ལའོ་སུ}} * Turkish: {{t+|tr|Laos}} * Turkmen: {{t|tk|Laos}} * Ukrainian: {{t+|uk|Лао́с|m}} * Urdu: {{t|ur|لاؤس|m}} * Uyghur: {{t|ug|لائوس}} * Uzbek: {{t+|uz|Laos}} * Vietnamese: {{t+|vi|Lào}}, {{t|vi|[[nước]] [[Lào]]}} * Yiddish: {{t|yi|לאַאָס|n}} * Yoruba: {{t|yo|Laosi}} * Zhuang: {{t|za|Laujvoh}} {{trans-bottom}} eoxvcwfzdf15u5w9fhlzt1ruwbnjd3j 5723235 5723234 2026-05-20T03:05:17Z OctraBot 3198 5723235 wikitext text/x-wiki {{trans-top|id=Q819|ประเทศในเอเชียตะวันออกเฉียงใต้}} * Abkhaz: {{t|ab|Лаос}} * Afrikaans: {{t|af|Laos}} * Albanian: {{t|sq|Laos|m}} {{qualifier|indefinite}}, {{t+|sq|Laosi|m}} {{qualifier|definite}} * Amharic: {{t|am|ላዎስ}} * Arabic: {{t|ar|لَاوْس|f}}, {{t|ar|لَاوُس|f|tr=lāwos}} * Aramaic: *: Assyrian Neo-Aramaic: {{t|aii|ܠܵܘܣ|f|tr=laws}} * Armenian: {{t+|hy|Լաոս}} * Assamese: {{t|as|লাউচ}} * Asturian: {{t+|ast|Laos}} * Azerbaijani: {{t+|az|Laos}} * Bashkir: {{t|ba|Лаос}} * Belarusian: {{t|be|Лао́с|m}} * Bengali: {{t+|bn|লাওস}} * Breton: {{t|br|Laos}} * Bulgarian: {{t+|bg|Лао́с|m}} * Burmese: {{t|my|လာအို}} * Catalan: {{t+|ca|Laos|m}} * Chinese: *: Mandarin: {{t+|cmn|老撾}}, {{t+|cmn|寮國}} {{qualifier|Taiwan}} * Crimean Tatar: {{t|crh|Laos}} *: Dobrujan Tatar: {{t|crh|Law}} * Czech: {{t+|cs|Laos|m}} * Danish: {{t|da|Laos|n}} * Dhivehi: {{t|dv|ލާއޯސް}} * Dutch: {{t+|nl|Laos|n}} * Esperanto: {{t+|eo|Laoso}} * Estonian: {{t+|et|Laos}} * Farefare: {{t|gur|Laogo}} * Faroese: {{t|fo|Laos|n}} * Finnish: {{t+|fi|Laos}} * French: {{t+|fr|Laos|m}} * Georgian: {{t+|ka|ლაოსი}} * German: {{t+|de|Laos|n}} * Greek: {{t+|el|Λάος|n}} * Hausa: {{t|ha|Laos}} * Hebrew: {{t|he|לָאוֹס|f|tr=laos}} * Hindi: {{t+|hi|लाओस|m}} * Hmong: *: Green Hmong: {{t|hnj|Los Tsuas}}, {{t|hnj|Nplog Teb}} {{qualifier|informal}} *: White Hmong: {{t|mww|Los Tsuas}}, {{t|mww|Nplog Teb}} {{qualifier|informal}} * Hungarian: {{t+|hu|Laosz}} * Icelandic: {{t+|is|Laos|n}} * Ido: {{t+|io|Laos}} * Indonesian: {{t+|id|Laos}} * Interlingua: {{t|ia|Laos}} * Irish: {{t|ga|Laos|m}} * Italian: {{t+|it|Laos|m}} * Japanese: {{t+|ja|ラオス|tr=Raosu}} * Kazakh: {{t+|kk|Лаос}} * Khmer: {{t+|km|លាវ}}, {{t+|km|ឡាវ}} * Korean: {{t+|ko|^라오스}} * Kurdish: *: Northern Kurdish: {{t+|kmr|Laos}} * Kyrgyz: {{t+|ky|Лаос}} * Lao: {{t+|lo|ລາວ}} * Latvian: {{t+|lv|Laosa|f}} * Lithuanian: {{t+|lt|Laosas|m}} * Lü: {{t|khb|ᦟᦱᧁ}} * Macedonian: {{t+|mk|Лаос|m}} * Malay: {{t+|ms|Laos}} * Maltese: {{t+|mt|Laos}} * Māori: {{t+|mi|Rāoho}} * Mongolian: *: Cyrillic: {{t+|mn|Лаос}} *: Mongolian script: {{t|mn|ᠯᠠᠣᠰ}} * Navajo: {{t|nv|Lááʼos}} * Nepali: {{t|ne|लाओस}} * Norman: {{t|nrf|Laos|m}} * Norwegian: *: Bokmål: {{t+|nb|Laos|n}} *: Nynorsk: {{t+|nn|Laos|n}} * Pashto: {{t|ps|لاوس|m|tr=lāwos}} * Persian: *: Dari: {{t|prs|لَائوس}} *: Iranian Persian: {{t+|fa-ira|لائوس}} * Polish: {{t+|pl|Laos|m-in}} * Portuguese: {{t+|pt|Laos}} * Romanian: {{t+|ro|Laos|n}} * Russian: {{t+|ru|Лао́с|m}} * Santali: {{t|sat|ᱞᱟᱣᱚᱥ}} * Scots: {{t|sco|Laos}} * Serbo-Croatian: *: Cyrillic: {{t|sh|Ла̏ос|m}} *: Latin: {{t|sh|Lȁos|m}} * Sinhalese: {{t|si|ලාඕසය}} * Slovak: {{t+|sk|Laos|m}} * Slovene: {{t+|sl|Laos|m}} * Spanish: {{t+|es|Laos}} * Swahili: {{t|sw|Laos}} * Swedish: {{t+|sv|Laos|n}} * Tagalog: {{t+|tl|Laos}} * Tajik: {{t+|tg|Лаос}} * Tatar: {{t|tt|Лаос}} * Telugu: {{t+|te|లావోస్}} * Tetum: {{t|tet|Laos}} * English: {{t+|en|Laos}} * Northern Thai: {{t|nod|ᩃᩣ᩠ᩅ}} * Tibetan: {{t|bo|ལའོ་སུ}} * Turkish: {{t+|tr|Laos}} * Turkmen: {{t|tk|Laos}} * Ukrainian: {{t+|uk|Лао́с|m}} * Urdu: {{t|ur|لاؤس|m}} * Uyghur: {{t|ug|لائوس}} * Uzbek: {{t+|uz|Laos}} * Vietnamese: {{t+|vi|Lào}}, {{t|vi|[[nước]] [[Lào]]}} * Yiddish: {{t|yi|לאַאָס|n}} * Yoruba: {{t|yo|Laosi}} * Zhuang: {{t|za|Laujvoh}} * Shan: {{t|shn|လၢဝ်း}}, {{t|shn|ယူၼ်း}} {{trans-bottom}} r763314x0duk5yfe81bwdxpd50mwk10 5723236 5723235 2026-05-20T03:07:52Z OctraBot 3198 5723236 wikitext text/x-wiki {{trans-top|id=Q819|ประเทศในเอเชียตะวันออกเฉียงใต้}} * {{#if:|อับคาเซีย|อับคาเซีย}}: {{t|ab|Лаос}} * {{#if:|อาฟรีกานส์|อาฟรีกานส์}}: {{t|af|Laos}} * {{#if:|แอลเบเนีย|แอลเบเนีย}}: {{t|sq|Laos|m}} {{qualifier|ไม่ชี้เฉพาะ}}, {{t+|sq|Laosi|m}} {{qualifier|ชี้เฉพาะ}} * {{#if:|อัมฮารา|อัมฮารา}}: {{t|am|ላዎስ}} * {{#if:|อาหรับ|อาหรับ}}: {{t|ar|لَاوْس|f}}, {{t|ar|لَاوُس|f|tr=lāwos}} * อารามายา: *: {{#if:|Assyrian Neo-Aramaic|Assyrian Neo-Aramaic}}: {{t|aii|ܠܵܘܣ|f|tr=laws}} * {{#if:|อาร์มีเนีย|อาร์มีเนีย}}: {{t+|hy|Լաոս}} * {{#if:|อัสสัม|อัสสัม}}: {{t|as|লাউচ}} * {{#if:|อัสตูเรียส|อัสตูเรียส}}: {{t+|ast|Laos}} * {{#if:|อาเซอร์ไบจาน|อาเซอร์ไบจาน}}: {{t+|az|Laos}} * {{#if:|แบชเคียร์|แบชเคียร์}}: {{t|ba|Лаос}} * {{#if:|เบลารุส|เบลารุส}}: {{t|be|Лао́с|m}} * {{#if:|เบงกอล|เบงกอล}}: {{t+|bn|লাওস}} * {{#if:|เบรอตง|เบรอตง}}: {{t|br|Laos}} * {{#if:|บัลแกเรีย|บัลแกเรีย}}: {{t+|bg|Лао́с|m}} * {{#if:|พม่า|พม่า}}: {{t|my|လာအို}} * {{#if:|กาตาลา|กาตาลา}}: {{t+|ca|Laos|m}} * จีน: *: {{#if:|จีนกลาง|จีนกลาง}}: {{t+|cmn|老撾}}, {{t+|cmn|寮國}} {{qualifier|Taiwan}} * {{#if:|ตาตาร์แบบไครเมีย|ตาตาร์แบบไครเมีย}}: {{t|crh|Laos}} *: {{#if:|ตาตาร์แบบไครเมีย|ตาตาร์แบบไครเมีย}}: {{t|crh|Law}} * {{#if:|เช็ก|เช็ก}}: {{t+|cs|Laos|m}} * {{#if:|เดนมาร์ก|เดนมาร์ก}}: {{t|da|Laos|n}} * {{#if:|มัลดีฟส์|มัลดีฟส์}}: {{t|dv|ލާއޯސް}} * {{#if:|ดัตช์|ดัตช์}}: {{t+|nl|Laos|n}} * {{#if:|เอสเปรันโต|เอสเปรันโต}}: {{t+|eo|Laoso}} * {{#if:|เอสโตเนีย|เอสโตเนีย}}: {{t+|et|Laos}} * {{#if:|Farefare|Farefare}}: {{t|gur|Laogo}} * {{#if:|แฟโร|แฟโร}}: {{t|fo|Laos|n}} * {{#if:|ฟินแลนด์|ฟินแลนด์}}: {{t+|fi|Laos}} * {{#if:|ฝรั่งเศส|ฝรั่งเศส}}: {{t+|fr|Laos|m}} * {{#if:|จอร์เจีย|จอร์เจีย}}: {{t+|ka|ლაოსი}} * {{#if:|เยอรมัน|เยอรมัน}}: {{t+|de|Laos|n}} * {{#if:|กรีก|กรีก}}: {{t+|el|Λάος|n}} * {{#if:|เฮาซา|เฮาซา}}: {{t|ha|Laos}} * {{#if:|ฮีบรู|ฮีบรู}}: {{t|he|לָאוֹס|f|tr=laos}} * {{#if:|ฮินดี|ฮินดี}}: {{t+|hi|लाओस|m}} * Hmong: *: {{#if:|ม้งเขียว|ม้งเขียว}}: {{t|hnj|Los Tsuas}}, {{t|hnj|Nplog Teb}} {{qualifier|ไม่ทางการ}} *: {{#if:|ม้งขาว|ม้งขาว}}: {{t|mww|Los Tsuas}}, {{t|mww|Nplog Teb}} {{qualifier|ไม่ทางการ}} * {{#if:|ฮังการี|ฮังการี}}: {{t+|hu|Laosz}} * {{#if:|ไอซ์แลนด์|ไอซ์แลนด์}}: {{t+|is|Laos|n}} * {{#if:|อีโด|อีโด}}: {{t+|io|Laos}} * {{#if:|อินโดนีเซีย|อินโดนีเซีย}}: {{t+|id|Laos}} * {{#if:|อินเทอร์ลิงกวา|อินเทอร์ลิงกวา}}: {{t|ia|Laos}} * {{#if:|ไอริช|ไอริช}}: {{t|ga|Laos|m}} * {{#if:|อิตาลี|อิตาลี}}: {{t+|it|Laos|m}} * {{#if:|ญี่ปุ่น|ญี่ปุ่น}}: {{t+|ja|ラオス|tr=Raosu}} * {{#if:|คาซัค|คาซัค}}: {{t+|kk|Лаос}} * {{#if:|เขมร|เขมร}}: {{t+|km|លាវ}}, {{t+|km|ឡាវ}} * {{#if:|เกาหลี|เกาหลี}}: {{t+|ko|^라오스}} * Kurdish: *: {{#if:|เคิร์ดเหนือ|เคิร์ดเหนือ}}: {{t+|kmr|Laos}} * {{#if:|คีร์กีซ|คีร์กีซ}}: {{t+|ky|Лаос}} * {{#if:|ลาว|ลาว}}: {{t+|lo|ລາວ}} * {{#if:|ลัตเวีย|ลัตเวีย}}: {{t+|lv|Laosa|f}} * {{#if:|ลิทัวเนีย|ลิทัวเนีย}}: {{t+|lt|Laosas|m}} * {{#if:|ไทลื้อ|ไทลื้อ}}: {{t|khb|ᦟᦱᧁ}} * {{#if:|มาซิโดเนีย|มาซิโดเนีย}}: {{t+|mk|Лаос|m}} * {{#if:|มาเลเซีย|มาเลเซีย}}: {{t+|ms|Laos}} * {{#if:|มอลตา|มอลตา}}: {{t+|mt|Laos}} * {{#if:|มาวรี|มาวรี}}: {{t+|mi|Rāoho}} * Mongolian: *: {{#if:|มองโกเลีย|มองโกเลีย}}: {{t+|mn|Лаос}} *: {{#if:|มองโกเลีย|มองโกเลีย}}: {{t|mn|ᠯᠠᠣᠰ}} * {{#if:|นาวาโฮ|นาวาโฮ}}: {{t|nv|Lááʼos}} * {{#if:|เนปาล|เนปาล}}: {{t|ne|लाओस}} * {{#if:|นอร์มัน|นอร์มัน}}: {{t|nrf|Laos|m}} * Norwegian: *: {{#if:|นอร์เวย์แบบบุ๊กมอล|นอร์เวย์แบบบุ๊กมอล}}: {{t+|nb|Laos|n}} *: {{#if:|นอร์เวย์แบบนือนอสก์|นอร์เวย์แบบนือนอสก์}}: {{t+|nn|Laos|n}} * {{#if:|ปาทาน|ปาทาน}}: {{t|ps|لاوس|m|tr=lāwos}} * Persian: *: {{#if:|ดารี|<strong class="error"><span class="scribunto-error mw-scribunto-error-89797950">ข้อผิดพลาด Lua ใน มอดูล:parameters บรรทัดที่ 677: Parameter 1 must be a valid language code; the value &quot;prs&quot; is not valid. See [[WT:LOL]].</span></strong>}}: {{t|prs|لَائوس}} *: {{#if:|เปอร์เซียแบบอิหร่าน|<strong class="error"><span class="scribunto-error mw-scribunto-error-dc155273">ข้อผิดพลาด Lua ใน มอดูล:parameters บรรทัดที่ 677: Parameter 1 must be a valid language code; the value &quot;fa-ira&quot; is not valid. See [[WT:LOL]].</span></strong>}}: {{t+|fa-ira|لائوس}} * {{#if:|โปแลนด์|โปแลนด์}}: {{t+|pl|Laos|m-in}} * {{#if:|โปรตุเกส|โปรตุเกส}}: {{t+|pt|Laos}} * {{#if:|โรมาเนีย|โรมาเนีย}}: {{t+|ro|Laos|n}} * {{#if:|รัสเซีย|รัสเซีย}}: {{t+|ru|Лао́с|m}} * {{#if:|สันถาลี|สันถาลี}}: {{t|sat|ᱞᱟᱣᱚᱥ}} * {{#if:|สกอต|สกอต}}: {{t|sco|Laos}} * Serbo-Croatian: *: {{#if:|เซอร์โบ-โครเอเชีย|เซอร์โบ-โครเอเชีย}}: {{t|sh|Ла̏ос|m}} *: {{#if:|เซอร์โบ-โครเอเชีย|เซอร์โบ-โครเอเชีย}}: {{t|sh|Lȁos|m}} * {{#if:|สิงหล|สิงหล}}: {{t|si|ලාඕසය}} * {{#if:|สโลวัก|สโลวัก}}: {{t+|sk|Laos|m}} * {{#if:|สโลวีเนีย|สโลวีเนีย}}: {{t+|sl|Laos|m}} * {{#if:|สเปน|สเปน}}: {{t+|es|Laos}} * {{#if:|สวาฮีลี|สวาฮีลี}}: {{t|sw|Laos}} * {{#if:|สวีเดน|สวีเดน}}: {{t+|sv|Laos|n}} * {{#if:|ตากาล็อก|ตากาล็อก}}: {{t+|tl|Laos}} * {{#if:|ทาจิก|ทาจิก}}: {{t+|tg|Лаос}} * {{#if:|ตาตาร์|ตาตาร์}}: {{t|tt|Лаос}} * {{#if:|เตลูกู|เตลูกู}}: {{t+|te|లావోస్}} * {{#if:|เตตุน|เตตุน}}: {{t|tet|Laos}} * {{#if:|อังกฤษ|อังกฤษ}}: {{t+|en|Laos}} * {{#if:|คำเมือง|คำเมือง}}: {{t|nod|ᩃᩣ᩠ᩅ}} * {{#if:|ทิเบต|ทิเบต}}: {{t|bo|ལའོ་སུ}} * {{#if:|ตุรกี|ตุรกี}}: {{t+|tr|Laos}} * {{#if:|เติร์กเมน|เติร์กเมน}}: {{t|tk|Laos}} * {{#if:|ยูเครน|ยูเครน}}: {{t+|uk|Лао́с|m}} * {{#if:|อูรดู|อูรดู}}: {{t|ur|لاؤس|m}} * {{#if:|อุยกูร์|อุยกูร์}}: {{t|ug|لائوس}} * {{#if:|อุซเบก|อุซเบก}}: {{t+|uz|Laos}} * {{#if:|เวียดนาม|เวียดนาม}}: {{t+|vi|Lào}}, {{t|vi|[[nước]] [[Lào]]}} * {{#if:|ยิดดิช|ยิดดิช}}: {{t|yi|לאַאָס|n}} * {{#if:|โยรูบา|โยรูบา}}: {{t|yo|Laosi}} * {{#if:|จ้วง|จ้วง}}: {{t|za|Laujvoh}} * {{#if:|ไทใหญ่|ไทใหญ่}}: {{t|shn|လၢဝ်း}}, {{t|shn|ယူၼ်း}} {{trans-bottom}} gd1ay3zc3etmmjwmyq8nhabjxhvhy97 5723237 5723236 2026-05-20T03:12:37Z OctraBot 3198 5723237 wikitext text/x-wiki {{trans-top|id=Q819|ประเทศในเอเชียตะวันออกเฉียงใต้}} * อับคาเซีย: {{t|ab|Лаос}} * อาฟรีกานส์: {{t|af|Laos}} * แอลเบเนีย: {{t|sq|Laos|m}} {{qualifier|ไม่ชี้เฉพาะ}}, {{t+|sq|Laosi|m}} {{qualifier|ชี้เฉพาะ}} * อัมฮารา: {{t|am|ላዎስ}} * อาหรับ: {{t|ar|لَاوْس|f}}, {{t|ar|لَاوُس|f|tr=lāwos}} * อารามายา: *: อารามายาใหม่แบบอัสซีเรีย: {{t|aii|ܠܵܘܣ|f|tr=laws}} * อาร์มีเนีย: {{t+|hy|Լաոս}} * อัสสัม: {{t|as|লাউচ}} * อัสตูเรียส: {{t+|ast|Laos}} * อาเซอร์ไบจาน: {{t+|az|Laos}} * แบชเคียร์: {{t|ba|Лаос}} * เบลารุส: {{t|be|Лао́с|m}} * เบงกอล: {{t+|bn|লাওস}} * เบรอตง: {{t|br|Laos}} * บัลแกเรีย: {{t+|bg|Лао́с|m}} * พม่า: {{t|my|လာအို}} * กาตาลา: {{t+|ca|Laos|m}} * จีน: *: จีนกลาง: {{t+|cmn|老撾}}, {{t+|cmn|寮國}} {{qualifier|ไต้หวัน}} * ตาตาร์แบบไครเมีย: {{t|crh|Laos}} *: ตาตาร์แบบโดบรูจา: {{t|crh|Law}} * เช็ก: {{t+|cs|Laos|m}} * เดนมาร์ก: {{t|da|Laos|n}} * มัลดีฟส์: {{t|dv|ލާއޯސް}} * ดัตช์: {{t+|nl|Laos|n}} * เอสเปรันโต: {{t+|eo|Laoso}} * เอสโตเนีย: {{t+|et|Laos}} * Farefare: {{t|gur|Laogo}} * แฟโร: {{t|fo|Laos|n}} * ฟินแลนด์: {{t+|fi|Laos}} * ฝรั่งเศส: {{t+|fr|Laos|m}} * จอร์เจีย: {{t+|ka|ლაოსი}} * เยอรมัน: {{t+|de|Laos|n}} * กรีก: {{t+|el|Λάος|n}} * เฮาซา: {{t|ha|Laos}} * ฮีบรู: {{t|he|לָאוֹס|f|tr=laos}} * ฮินดี: {{t+|hi|लाओस|m}} * ม้ง: *: ม้งเขียว: {{t|hnj|Los Tsuas}}, {{t|hnj|Nplog Teb}} {{qualifier|ไม่ทางการ}} *: ม้งขาว: {{t|mww|Los Tsuas}}, {{t|mww|Nplog Teb}} {{qualifier|ไม่ทางการ}} * ฮังการี: {{t+|hu|Laosz}} * ไอซ์แลนด์: {{t+|is|Laos|n}} * อีโด: {{t+|io|Laos}} * อินโดนีเซีย: {{t+|id|Laos}} * อินเทอร์ลิงกวา: {{t|ia|Laos}} * ไอริช: {{t|ga|Laos|m}} * อิตาลี: {{t+|it|Laos|m}} * ญี่ปุ่น: {{t+|ja|ラオス|tr=Raosu}} * คาซัค: {{t+|kk|Лаос}} * เขมร: {{t+|km|លាវ}}, {{t+|km|ឡាវ}} * เกาหลี: {{t+|ko|^라오스}} * เคิร์ด: *: เคิร์ดเหนือ: {{t+|kmr|Laos}} * คีร์กีซ: {{t+|ky|Лаос}} * ลาว: {{t+|lo|ລາວ}} * ลัตเวีย: {{t+|lv|Laosa|f}} * ลิทัวเนีย: {{t+|lt|Laosas|m}} * ไทลื้อ: {{t|khb|ᦟᦱᧁ}} * มาซิโดเนีย: {{t+|mk|Лаос|m}} * มาเลเซีย: {{t+|ms|Laos}} * มอลตา: {{t+|mt|Laos}} * มาวรี: {{t+|mi|Rāoho}} * มองโกเลีย: *: อักษรซีริลลิก: {{t+|mn|Лаос}} *: อักษรมองโกเลีย: {{t|mn|ᠯᠠᠣᠰ}} * นาวาโฮ: {{t|nv|Lááʼos}} * เนปาล: {{t|ne|लाओस}} * นอร์มัน: {{t|nrf|Laos|m}} * นอร์เวย์: *: นอร์เวย์แบบบุ๊กมอล: {{t+|nb|Laos|n}} *: นอร์เวย์แบบนือนอสก์: {{t+|nn|Laos|n}} * ปาทาน: {{t|ps|لاوس|m|tr=lāwos}} * เปอร์เซีย: *: ดารี: {{t|prs|لَائوس}} *: เปอร์เซียแบบอิหร่าน: {{t+|fa-ira|لائوس}} * โปแลนด์: {{t+|pl|Laos|m-in}} * โปรตุเกส: {{t+|pt|Laos}} * โรมาเนีย: {{t+|ro|Laos|n}} * รัสเซีย: {{t+|ru|Лао́с|m}} * สันถาลี: {{t|sat|ᱞᱟᱣᱚᱥ}} * สกอต: {{t|sco|Laos}} * เซอร์โบ-โครเอเชีย: *: อักษรซีริลลิก: {{t|sh|Ла̏ос|m}} *: อักษรละติน: {{t|sh|Lȁos|m}} * สิงหล: {{t|si|ලාඕසය}} * สโลวัก: {{t+|sk|Laos|m}} * สโลวีเนีย: {{t+|sl|Laos|m}} * สเปน: {{t+|es|Laos}} * สวาฮีลี: {{t|sw|Laos}} * สวีเดน: {{t+|sv|Laos|n}} * ตากาล็อก: {{t+|tl|Laos}} * ทาจิก: {{t+|tg|Лаос}} * ตาตาร์: {{t|tt|Лаос}} * เตลูกู: {{t+|te|లావోస్}} * เตตุน: {{t|tet|Laos}} * อังกฤษ: {{t+|en|Laos}} * คำเมือง: {{t|nod|ᩃᩣ᩠ᩅ}} * ทิเบต: {{t|bo|ལའོ་སུ}} * ตุรกี: {{t+|tr|Laos}} * เติร์กเมน: {{t|tk|Laos}} * ยูเครน: {{t+|uk|Лао́с|m}} * อูรดู: {{t|ur|لاؤس|m}} * อุยกูร์: {{t|ug|لائوس}} * อุซเบก: {{t+|uz|Laos}} * เวียดนาม: {{t+|vi|Lào}}, {{t|vi|[[nước]] [[Lào]]}} * ยิดดิช: {{t|yi|לאַאָס|n}} * โยรูบา: {{t|yo|Laosi}} * จ้วง: {{t|za|Laujvoh}} * ไทใหญ่: {{t|shn|လၢဝ်း}}, {{t|shn|ယူၼ်း}} {{trans-bottom}} kv2a1l44i9ugvstn25407q263bidj63 5723240 5723237 2026-05-20T03:22:56Z OctraBot 3198 5723240 wikitext text/x-wiki {{trans-top|id=Q819|ประเทศในเอเชียตะวันออกเฉียงใต้}} * อับคาเซีย: {{t|ab|Лаос}} * อาฟรีกานส์: {{t|af|Laos}} * แอลเบเนีย: {{t|sq|Laos|m}} {{qualifier|ไม่ชี้เฉพาะ}}, {{t+|sq|Laosi|m}} {{qualifier|ชี้เฉพาะ}} * อัมฮารา: {{t|am|ላዎስ}} * อาหรับ: {{t|ar|لَاوْس|f}}, {{t|ar|لَاوُس|f|tr=lāwos}} * อารามายา: *: อารามายาใหม่แบบอัสซีเรีย: {{t|aii|ܠܵܘܣ|f|tr=laws}} * อาร์มีเนีย: {{t+|hy|Լաոս}} * อัสสัม: {{t|as|লাউচ}} * อัสตูเรียส: {{t+|ast|Laos}} * อาเซอร์ไบจาน: {{t+|az|Laos}} * แบชเคียร์: {{t|ba|Лаос}} * เบลารุส: {{t|be|Лао́с|m}} * เบงกอล: {{t+|bn|লাওস}} * เบรอตง: {{t|br|Laos}} * บัลแกเรีย: {{t+|bg|Лао́с|m}} * พม่า: {{t|my|လာအို}} * กาตาลา: {{t+|ca|Laos|m}} * จีน: *: จีนกลาง: {{t+|cmn|老撾}}, {{t+|cmn|寮國}} {{qualifier|ไต้หวัน}} * ตาตาร์แบบไครเมีย: {{t|crh|Laos}} *: ตาตาร์แบบโดบรูจา: {{t|crh|Law}} * เช็ก: {{t+|cs|Laos|m}} * เดนมาร์ก: {{t|da|Laos|n}} * มัลดีฟส์: {{t|dv|ލާއޯސް}} * ดัตช์: {{t+|nl|Laos|n}} * เอสเปรันโต: {{t+|eo|Laoso}} * เอสโตเนีย: {{t+|et|Laos}} * ฟราฟรา: {{t|gur|Laogo}} * แฟโร: {{t|fo|Laos|n}} * ฟินแลนด์: {{t+|fi|Laos}} * ฝรั่งเศส: {{t+|fr|Laos|m}} * จอร์เจีย: {{t+|ka|ლაოსი}} * เยอรมัน: {{t+|de|Laos|n}} * กรีก: {{t+|el|Λάος|n}} * เฮาซา: {{t|ha|Laos}} * ฮีบรู: {{t|he|לָאוֹס|f|tr=laos}} * ฮินดี: {{t+|hi|लाओस|m}} * ม้ง: *: ม้งเขียว: {{t|hnj|Los Tsuas}}, {{t|hnj|Nplog Teb}} {{qualifier|ไม่ทางการ}} *: ม้งขาว: {{t|mww|Los Tsuas}}, {{t|mww|Nplog Teb}} {{qualifier|ไม่ทางการ}} * ฮังการี: {{t+|hu|Laosz}} * ไอซ์แลนด์: {{t+|is|Laos|n}} * อีโด: {{t+|io|Laos}} * อินโดนีเซีย: {{t+|id|Laos}} * อินเทอร์ลิงกวา: {{t|ia|Laos}} * ไอริช: {{t|ga|Laos|m}} * อิตาลี: {{t+|it|Laos|m}} * ญี่ปุ่น: {{t+|ja|ラオス|tr=Raosu}} * คาซัค: {{t+|kk|Лаос}} * เขมร: {{t+|km|លាវ}}, {{t+|km|ឡាវ}} * เกาหลี: {{t+|ko|^라오스}} * เคิร์ด: *: เคิร์ดเหนือ: {{t+|kmr|Laos}} * คีร์กีซ: {{t+|ky|Лаос}} * ลาว: {{t+|lo|ລາວ}} * ลัตเวีย: {{t+|lv|Laosa|f}} * ลิทัวเนีย: {{t+|lt|Laosas|m}} * ไทลื้อ: {{t|khb|ᦟᦱᧁ}} * มาซิโดเนีย: {{t+|mk|Лаос|m}} * มาเลเซีย: {{t+|ms|Laos}} * มอลตา: {{t+|mt|Laos}} * มาวรี: {{t+|mi|Rāoho}} * มองโกเลีย: *: อักษรซีริลลิก: {{t+|mn|Лаос}} *: อักษรมองโกเลีย: {{t|mn|ᠯᠠᠣᠰ}} * นาวาโฮ: {{t|nv|Lááʼos}} * เนปาล: {{t|ne|लाओस}} * นอร์มัน: {{t|nrf|Laos|m}} * นอร์เวย์: *: นอร์เวย์แบบบุ๊กมอล: {{t+|nb|Laos|n}} *: นอร์เวย์แบบนือนอสก์: {{t+|nn|Laos|n}} * ปาทาน: {{t|ps|لاوس|m|tr=lāwos}} * เปอร์เซีย: *: ดารี: {{t|prs|لَائوس}} *: เปอร์เซียแบบอิหร่าน: {{t+|fa-ira|لائوس}} * โปแลนด์: {{t+|pl|Laos|m-in}} * โปรตุเกส: {{t+|pt|Laos}} * โรมาเนีย: {{t+|ro|Laos|n}} * รัสเซีย: {{t+|ru|Лао́с|m}} * สันถาลี: {{t|sat|ᱞᱟᱣᱚᱥ}} * สกอต: {{t|sco|Laos}} * เซอร์โบ-โครเอเชีย: *: อักษรซีริลลิก: {{t|sh|Ла̏ос|m}} *: อักษรละติน: {{t|sh|Lȁos|m}} * สิงหล: {{t|si|ලාඕසය}} * สโลวัก: {{t+|sk|Laos|m}} * สโลวีเนีย: {{t+|sl|Laos|m}} * สเปน: {{t+|es|Laos}} * สวาฮีลี: {{t|sw|Laos}} * สวีเดน: {{t+|sv|Laos|n}} * ตากาล็อก: {{t+|tl|Laos}} * ทาจิก: {{t+|tg|Лаос}} * ตาตาร์: {{t|tt|Лаос}} * เตลูกู: {{t+|te|లావోస్}} * เตตุน: {{t|tet|Laos}} * อังกฤษ: {{t+|en|Laos}} * คำเมือง: {{t|nod|ᩃᩣ᩠ᩅ}} * ทิเบต: {{t|bo|ལའོ་སུ}} * ตุรกี: {{t+|tr|Laos}} * เติร์กเมน: {{t|tk|Laos}} * ยูเครน: {{t+|uk|Лао́с|m}} * อูรดู: {{t|ur|لاؤس|m}} * อุยกูร์: {{t|ug|لائوس}} * อุซเบก: {{t+|uz|Laos}} * เวียดนาม: {{t+|vi|Lào}}, {{t|vi|[[nước]] [[Lào]]}} * ยิดดิช: {{t|yi|לאַאָס|n}} * โยรูบา: {{t|yo|Laosi}} * จ้วง: {{t|za|Laujvoh}} * ไทใหญ่: {{t|shn|လၢဝ်း}}, {{t|shn|ယူၼ်း}} {{trans-bottom}} 9vf2gbmv6nsh869u3gr6anzu8q8wf7b 5723243 5723240 2026-05-20T03:26:51Z OctraBot 3198 5723243 wikitext text/x-wiki {{trans-top|id=Q819|ประเทศในเอเชียตะวันออกเฉียงใต้}} * กรีก: {{t+|el|Λάος|n}} * กาตาลา: {{t+|ca|Laos|m}} * เกาหลี: {{t+|ko|^라오스}} * เขมร: {{t+|km|លាវ}}, {{t+|km|ឡាវ}} * คาซัค: {{t+|kk|Лаос}} * คำเมือง: {{t|nod|ᩃᩣ᩠ᩅ}} * คีร์กีซ: {{t+|ky|Лаос}} * เคิร์ด: *: เคิร์ดเหนือ: {{t+|kmr|Laos}} * จ้วง: {{t|za|Laujvoh}} * จอร์เจีย: {{t+|ka|ლაოსი}} * จีน: *: จีนกลาง: {{t+|cmn|老撾}}, {{t+|cmn|寮國}} {{qualifier|ไต้หวัน}} * เช็ก: {{t+|cs|Laos|m}} * เซอร์โบ-โครเอเชีย: *: อักษรซีริลลิก: {{t|sh|Ла̏ос|m}} *: อักษรละติน: {{t|sh|Lȁos|m}} * ญี่ปุ่น: {{t+|ja|ラオス|tr=Raosu}} * ดัตช์: {{t+|nl|Laos|n}} * เดนมาร์ก: {{t|da|Laos|n}} * ตากาล็อก: {{t+|tl|Laos}} * ตาตาร์: {{t|tt|Лаос}} * ตาตาร์แบบไครเมีย: {{t|crh|Laos}} *: ตาตาร์แบบโดบรูจา: {{t|crh|Law}} * ตุรกี: {{t+|tr|Laos}} * เตตุน: {{t|tet|Laos}} * เตลูกู: {{t+|te|లావోస్}} * เติร์กเมน: {{t|tk|Laos}} * ทาจิก: {{t+|tg|Лаос}} * ทิเบต: {{t|bo|ལའོ་སུ}} * ไทลื้อ: {{t|khb|ᦟᦱᧁ}} * ไทใหญ่: {{t|shn|လၢဝ်း}}, {{t|shn|ယူၼ်း}} * นอร์มัน: {{t|nrf|Laos|m}} * นอร์เวย์: *: นอร์เวย์แบบบุ๊กมอล: {{t+|nb|Laos|n}} *: นอร์เวย์แบบนือนอสก์: {{t+|nn|Laos|n}} * นาวาโฮ: {{t|nv|Lááʼos}} * เนปาล: {{t|ne|लाओस}} * บัลแกเรีย: {{t+|bg|Лао́с|m}} * เบงกอล: {{t+|bn|লাওস}} * เบรอตง: {{t|br|Laos}} * เบลารุส: {{t|be|Лао́с|m}} * แบชเคียร์: {{t|ba|Лаос}} * ปาทาน: {{t|ps|لاوس|m|tr=lāwos}} * เปอร์เซีย: *: ดารี: {{t|prs|لَائوس}} *: เปอร์เซียแบบอิหร่าน: {{t+|fa-ira|لائوس}} * โปรตุเกส: {{t+|pt|Laos}} * โปแลนด์: {{t+|pl|Laos|m-in}} * ฝรั่งเศส: {{t+|fr|Laos|m}} * พม่า: {{t|my|လာအို}} * ฟราฟรา: {{t|gur|Laogo}} * ฟินแลนด์: {{t+|fi|Laos}} * แฟโร: {{t|fo|Laos|n}} * ม้ง: *: ม้งเขียว: {{t|hnj|Los Tsuas}}, {{t|hnj|Nplog Teb}} {{qualifier|ไม่ทางการ}} *: ม้งขาว: {{t|mww|Los Tsuas}}, {{t|mww|Nplog Teb}} {{qualifier|ไม่ทางการ}} * มองโกเลีย: *: อักษรซีริลลิก: {{t+|mn|Лаос}} *: อักษรมองโกเลีย: {{t|mn|ᠯᠠᠣᠰ}} * มอลตา: {{t+|mt|Laos}} * มัลดีฟส์: {{t|dv|ލާއޯސް}} * มาซิโดเนีย: {{t+|mk|Лаос|m}} * มาเลเซีย: {{t+|ms|Laos}} * มาวรี: {{t+|mi|Rāoho}} * ยิดดิช: {{t|yi|לאַאָס|n}} * ยูเครน: {{t+|uk|Лао́с|m}} * เยอรมัน: {{t+|de|Laos|n}} * โยรูบา: {{t|yo|Laosi}} * รัสเซีย: {{t+|ru|Лао́с|m}} * โรมาเนีย: {{t+|ro|Laos|n}} * ลัตเวีย: {{t+|lv|Laosa|f}} * ลาว: {{t+|lo|ລາວ}} * ลิทัวเนีย: {{t+|lt|Laosas|m}} * เวียดนาม: {{t+|vi|Lào}}, {{t|vi|[[nước]] [[Lào]]}} * สกอต: {{t|sco|Laos}} * สเปน: {{t+|es|Laos}} * สโลวัก: {{t+|sk|Laos|m}} * สโลวีเนีย: {{t+|sl|Laos|m}} * สวาฮีลี: {{t|sw|Laos}} * สวีเดน: {{t+|sv|Laos|n}} * สันถาลี: {{t|sat|ᱞᱟᱣᱚᱥ}} * สิงหล: {{t|si|ලාඕසය}} * อังกฤษ: {{t+|en|Laos}} * อับคาเซีย: {{t|ab|Лаос}} * อัมฮารา: {{t|am|ላዎስ}} * อัสตูเรียส: {{t+|ast|Laos}} * อัสสัม: {{t|as|লাউচ}} * อาเซอร์ไบจาน: {{t+|az|Laos}} * อาฟรีกานส์: {{t|af|Laos}} * อาร์มีเนีย: {{t+|hy|Լաոս}} * อารามายา: *: อารามายาใหม่แบบอัสซีเรีย: {{t|aii|ܠܵܘܣ|f|tr=laws}} * อาหรับ: {{t|ar|لَاوْس|f}}, {{t|ar|لَاوُس|f|tr=lāwos}} * อิตาลี: {{t+|it|Laos|m}} * อินโดนีเซีย: {{t+|id|Laos}} * อินเทอร์ลิงกวา: {{t|ia|Laos}} * อีโด: {{t+|io|Laos}} * อุซเบก: {{t+|uz|Laos}} * อุยกูร์: {{t|ug|لائوس}} * อูรดู: {{t|ur|لاؤس|m}} * เอสโตเนีย: {{t+|et|Laos}} * เอสเปรันโต: {{t+|eo|Laoso}} * แอลเบเนีย: {{t|sq|Laos|m}} {{qualifier|ไม่ชี้เฉพาะ}}, {{t+|sq|Laosi|m}} {{qualifier|ชี้เฉพาะ}} * ไอซ์แลนด์: {{t+|is|Laos|n}} * ไอริช: {{t|ga|Laos|m}} * ฮังการี: {{t+|hu|Laosz}} * ฮินดี: {{t+|hi|लाओस|m}} * ฮีบรู: {{t|he|לָאוֹס|f|tr=laos}} * เฮาซา: {{t|ha|Laos}} {{trans-bottom}} eyz27qu10s8am3hbphwh6sz9ol3708i ឡាវ 0 2331406 5723252 2026-05-20T03:37:37Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723252 wikitext text/x-wiki == ภาษาเขมร == {{wp|km:}} === รูปแบบอื่น === * {{l|km|លាវ}} === การออกเสียง === {{km-IPA}} === คำวิสามานยนาม === {{km-proper noun}} # {{tcl|km|Laos|id=Q819}} # [[ภาษาลาว]] #: {{km-x|ភាសា ឡាវ|Lao (language)}} ===Noun=== {{km-noun}} # [[ชาวลาว]] #: {{km-x|ជាតិ ឡាវ|Laos (person)}} {{C|km|ชื่อภาษา}} gwfl45sb3yyefow1cwevia9yvct6vgw 5723253 5723252 2026-05-20T03:38:18Z OctraBot 3198 /* คำวิสามานยนาม */ 5723253 wikitext text/x-wiki == ภาษาเขมร == {{wp|km:}} === รูปแบบอื่น === * {{l|km|លាវ}} === การออกเสียง === {{km-IPA}} === คำวิสามานยนาม === {{km-proper noun}} # {{tcl|km|ลาว|id=Q819}} # [[ภาษาลาว]] #: {{km-x|ភាសា ឡាវ|Lao (language)}} ===Noun=== {{km-noun}} # [[ชาวลาว]] #: {{km-x|ជាតិ ឡាវ|Laos (person)}} {{C|km|ชื่อภาษา}} 1j761uezdpvoy4vum0t0efh4aay9nyy Laujvoh 0 2331407 5723254 2026-05-20T03:41:29Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723254 wikitext text/x-wiki == ภาษาจ้วง == === รากศัพท์ === {{bor+|za|cmn|-}} {{zh-l|老撾}} === การออกเสียง === * {{za-pron}} === คำวิสามานยนาม === {{za-head|proper noun}} # {{tcl|za|ลาว|id=Q819}} 3p57n2jolpnj5m755oa5s61cpnfgvjd Raosu 0 2331408 5723256 2026-05-20T03:43:03Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723256 wikitext text/x-wiki == ภาษาญี่ปุ่น == === การถอดเป็นอักษรโรมัน === {{ja-romaji}} # {{ja-romanization of|ラオス}} siu9qkgxompn1h7j92943fqm06vn24q 羅宇 0 2331409 5723257 2026-05-20T03:44:42Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723257 wikitext text/x-wiki == ภาษาญี่ปุ่น == {{ja-kanjitab|ら|おす|yomi=irr}} === รากศัพท์ === รูปสะกดคันจิที่เป็นตัวอย่างหนึ่งของ {{ateji|sort=らおす}}, จาก{{bor|ja|zh|sort=らおす|羅宇}} === คำวิสามานยนาม === {{ja-pos|proper|らおす}} # {{dated spelling of|ja|ラオス|tr=Raosu|t={{place|ja|t=ลาว|ประเทศ}}}} === อ้างอิง === * {{R:Kanjipedia Kotoba|0007017200|〈羅宇〉}} gyj5elg5m5amz2iv6cqee7htlzk2j83 లావోస్ 0 2331410 5723258 2026-05-20T03:45:50Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723258 wikitext text/x-wiki == ภาษาเตลูกู == === คำนาม === {{te-noun}} # {{tcl|te|ลาว|id=Q819}} 3erq8guserbpkit028o6wizfpkisgrr ལའོ་སུ 0 2331411 5723259 2026-05-20T03:46:08Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723259 wikitext text/x-wiki == ภาษาทิเบต == === คำวิสามานยนาม === {{head|bo|คำวิสามานยนาม}} # {{tcl|bo|ลาว|id=Q819}} gbtt6skub8p7wzlarhy37gnbmr6gf6w Lááʼos 0 2331412 5723261 2026-05-20T03:52:11Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723261 wikitext text/x-wiki == ภาษานาวาโฮ == {{wp|nv:}} === คำวิสามานยนาม === {{head|nv|คำวิสามานยนาม}} # {{tcl|nv|ลาว|id=Q819}} c6vcorf80xgnssmoxykyt3bcgmtupen লাওস 0 2331413 5723263 2026-05-20T03:53:37Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723263 wikitext text/x-wiki == ภาษาเบงกอล == {{wp|bn:}} === การออกเสียง === * {{audio|bn|LL-Q9610 (ben)-Titodutta-লাওস.wav}} === คำวิสามานยนาม === {{head|bn|คำวิสามานยนาม}} # {{tcl|bn|ลาว|id=Q819}} m570xg0agpilg2k07k1f4hccpbrdcvi فأر 0 2331414 5723285 2026-05-20T05:09:09Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723285 wikitext text/x-wiki == ภาษาอาหรับ == === รากศัพท์ === จาก{{inh|ar|sem-pro|*paʔr-}} === การออกเสียง === {{ar-pr|فَأْر}} === คำนาม === {{ar-coll-noun|فَأْر|pl=فِئْرَان|sing=+}} # [[หนู]] #: {{syn|ar|فَرْنِب|جُرَذ}} # [[ฝูง]]หนู ==== การผันรูป ==== {{ar-decl-coll-noun|فَأْر|pl=فِئْرَان}} ==== คำสืบทอด ==== * {{desc|afb|فار|tr=far}} * {{desc|mt|far}} * {{desc|ary|فار|tr=fār}} * {{desc|ajp|فار|tr=fār}} {{C|ar|Rodents}} mzw29f971tc1aj83iexs0lt2uxi4851 فئران 0 2331415 5723286 2026-05-20T05:10:09Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723286 wikitext text/x-wiki == ภาษาอาหรับ == === การออกเสียง === {{ar-pr|فِئْرَان}} === คำนาม === {{ar-head|nounf|فِئْرَان|m-p}} # {{plural of|ar|فَأْر}}, [[หนู]] ==== การผันรูป ==== {{ar-decl-noun|-|pl=فِئْرَان|number=pl}} === อ้างอิง === * {{R:ar:Baranov}} * {{R:ar:Lane}} * {{R:ar:Wehr-3}} e645vq4vt63efhdmuijavizi0675y7v แม่แบบ:ar-head 10 2331416 5723287 2026-05-20T05:10:21Z OctraBot 3198 นำเข้าจาก enwikt 5723287 wikitext text/x-wiki {{#invoke:ar-headword|show}}<!-- --><noinclude>{{documentation}}</noinclude> a5ufxtgvx8d52i2dof9ho3zn8ogqogn Laosas 0 2331417 5723291 2026-05-20T06:53:53Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723291 wikitext text/x-wiki == ภาษาลิทัวเนีย == {{wp|lt:}} [[ไฟล์:LocationLaos.png|thumb|Laosas]] === การออกเสียง === {{lt-pr|Laòsas}} === คำวิสามานยนาม === {{lt-proper noun|m}} # {{tcl|lt|ลาว|id=Q819}} ==== การผันรูป ==== {{lt-noun-m-as-unc|Laos}} ==== คำพ้องความ ==== * {{l|lt|Laoso Liáudies Demokrãtinė Respùblika}} ==== คำเกี่ยวข้อง ==== * {{l|lt|laosietis|g=m}}, {{l|lt|laosietė|g=f}} 0ug1poreha50b6460lodjiavixdezl0 Los Tsuas 0 2331418 5723292 2026-05-20T06:55:02Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5723292 wikitext text/x-wiki == ภาษาม้งขาว == === รากศัพท์ === จาก{{bor|mww|cmn|-}} {{zh-l|老撾|tr=Lǎozhuā|t=ลาว}} === การออกเสียง === {{mww-pron}} === คำวิสามานยนาม === {{head|mww|คำวิสามานยนาม}} # {{tcl|mww|ลาว|id=Q819}} === คำคุณศัพท์ === {{head|mww|คำคุณศัพท์}} # ที่เกี่ยวกับ[[ลาว]] == ภาษาม้งเขียว == === รากศัพท์ === จาก{{bor|hnj|cmn|-}} {{zh-l|老撾|tr=Lǎozhuā|t=ลาว}} === การออกเสียง === * {{IPA|hnj|/lɒ˩.t͡ʂu̯ə˩/}} === คำวิสามานยนาม === {{head|hnj|คำวิสามานยนาม}} # {{tcl|hnj|ลาว|id=Q819}} === คำคุณศัพท์ === {{head|hnj|คำคุณศัพท์}} # ที่เกี่ยวกับ[[ลาว]] 4b9z5sjgegq4a2gg0fkqgcuzl9d21xc ލާއޯސް 0 2331419 5723293 2026-05-20T06:55:39Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723293 wikitext text/x-wiki == ภาษามัลดีฟส์ == === รากศัพท์ === {{bor+|dv|en|Laos}} === การออกเสียง === * {{IPA|dv|/laː.oːs̺/|[laː.oːs̺]}} * {{hyph|dv|ލާ|އޯސް}} === คำวิสามานยนาม === {{wp|dv:}} {{head|dv|คำวิสามานยนาม}} # {{tcl|dv|ลาว|id=Q819}} 3x5kaexkmfazquvtw9e2hgesd06bqts Rāoho 0 2331420 5723294 2026-05-20T06:55:52Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723294 wikitext text/x-wiki == ภาษามาวรี == === คำวิสามานยนาม === {{mi-proper noun}} # {{tcl|mi|ลาว|id=Q819}} hvur8y9d4f87cln9eixkq9o22jkv5ja Laosi 0 2331421 5723295 2026-05-20T06:56:17Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723295 wikitext text/x-wiki == ภาษาอังกฤษ == === คำวิสามานยนาม === {{en-proper noun}} # {{alternative spelling of|en|Laozi}} === คำสลับอักษร === * {{anagrams|en|a=ailos|Isola|Laois|sialo-}} {{C|en|Individuals}} mp854xd5s7sltzzzmgb55m15901dyyq Laosa 0 2331422 5723296 2026-05-20T06:57:15Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5723296 wikitext text/x-wiki == ภาษาลัตเวีย == {{wp|lv:}} === คำวิสามานยนาม === {{lv-proper noun|f|4th}} # {{tcl|lv|ลาว|id=Q819}} ==== การผันรูป ==== {{lv-decl-noun|Laos|a|4th|no-pl||||proper}} == ภาษาฮาวาย == === รากศัพท์ === {{bor+|haw|en|Laos}} === การออกเสียง === * {{haw-IPA}} === คำวิสามานยนาม === {{head|haw|คำวิสามานยนาม}} # {{tcl|haw|ลาว|id=Q819}} # [[ชาวลาว]] === คำกริยา === {{head|haw|คำกริยา}} # {{lb|haw|stative}} [[เป็น]]ลาว #: {{uxi|haw|ʻōlelo '''Laosa'''|'''Lao''' language}} === อ้างอิง === * {{R:haw:Pukui:1986}} ej1pmqsnd8eqvhsqjjehmg71a0f37wr 5723298 5723296 2026-05-20T06:58:06Z OctraBot 3198 /* คำกริยา */ 5723298 wikitext text/x-wiki == ภาษาลัตเวีย == {{wp|lv:}} === คำวิสามานยนาม === {{lv-proper noun|f|4th}} # {{tcl|lv|ลาว|id=Q819}} ==== การผันรูป ==== {{lv-decl-noun|Laos|a|4th|no-pl||||proper}} == ภาษาฮาวาย == === รากศัพท์ === {{bor+|haw|en|Laos}} === การออกเสียง === * {{haw-IPA}} === คำวิสามานยนาม === {{head|haw|คำวิสามานยนาม}} # {{tcl|haw|ลาว|id=Q819}} # [[ชาวลาว]] === คำกริยา === {{head|haw|คำกริยา}} # {{lb|haw|stative}} คือ/เป็นลาว #: {{uxi|haw|ʻōlelo '''Laosa'''|'''Lao''' language}} === อ้างอิง === * {{R:haw:Pukui:1986}} 3o0030xaiq4cggekkbc930d38kmz71z หมวดหมู่:ศัพท์ภาษาเวียดนามที่ยืมมาจากภาษาลาว 14 2331423 5723300 2026-05-20T06:59:16Z OctraBot 3198 สร้างหมวดหมู่อัตโนมัติ 5723300 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Լաոս 0 2331424 5723301 2026-05-20T06:59:48Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723301 wikitext text/x-wiki == ภาษาอาร์มีเนีย == === การออกเสียง === {{hy-IPA}} === คำวิสามานยนาม === {{wp|hy:}} {{hy-h|propn}} # {{tcl|hy|ลาว|id=Q819}} ==== การผันรูป ==== {{hy-noun-ի-ներ|unc=on}} r58lse003tkyk23ujp5q7nkdakxdmzl ܠܘܣ 0 2331425 5723302 2026-05-20T07:00:32Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723302 wikitext text/x-wiki == ภาษาอารามายาใหม่แบบอัสซีเรีย == [[ไฟล์:LocationLaos.png|thumb|{{lang|aii|ܠܘܣ}}]] [[ไฟล์:Flag of Laos.svg|thumb|{{lang|aii|ܐܬܐ ܕܠܘܣ}}]] === รูปแบบอื่น === {{alt|aii|ܠܵܐܘܣ}} === รากศัพท์ === {{intnat|aii}} จาก{{bor|aii|fr|Laos}} === การออกเสียง === * {{IPA|aii|[laws]|a=มาตรฐาน}} === คำวิสามานยนาม === {{aii-proper-noun|ܠܵܘܣ|f}} # {{tcl|aii|ลาว|id=Q819}} ==== ลูกคำ ==== * {{l|aii|ܠܵܘܣܵܝܵܐ|t=ที่เกี่ยวกับลาว}} ler44bmhdgmrey97em5cj451jah7303 لائوس 0 2331426 5723303 2026-05-20T07:01:04Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด 5723303 wikitext text/x-wiki == ภาษาเปอร์เซีย == {{wp|fa:}} === การออกเสียง === {{fa-IPA|ir=lā`'ūs|dari=lā`'ōs}} === คำวิสามานยนาม === {{fa-regional|{{PAGENAME}}|{{PAGENAME}}|Лаос}} {{fa-proper noun|tr=lâ'us}} # {{tcl|fa|ลาว|id=Q819}} m91zmqyxs4rfl3klqb55d3rsxh8pfo1 แม่แบบ:vi-type 10 2331427 5723306 2026-05-20T07:35:18Z OctraBot 3198 นำเข้าจาก enwikt 5723306 wikitext text/x-wiki <includeonly>({{m|vi|{{{1}}}}} ~{{#if:{{{2|}}}|, {{m|vi|{{{2|}}}}} ~}}{{#if:{{{3|}}}|, {{m|vi|{{{3|}}}}} ~}})</includeonly><noinclude>{{documentation}}</noinclude> eswuja732bc18kjobttku3zo5ubd45s คุยกับผู้ใช้:Peterxy12 3 2331428 5723308 2026-05-20T10:44:56Z Neriah 12116 Neriah ย้ายหน้า [[คุยกับผู้ใช้:Peterxy12]] ไปยัง [[คุยกับผู้ใช้:Peterxy]]: ย้ายหน้าอัตโนมัติขณะเปลี่ยนชื่อผู้ใช้ "[[Special:CentralAuth/Peterxy12|Peterxy12]]" เป็น "[[Special:CentralAuth/Peterxy|Peterxy]]" 5723308 wikitext text/x-wiki #เปลี่ยนทาง [[คุยกับผู้ใช้:Peterxy]] ngtfhkumasfc8xo0mo1paejpp5p5vwv