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.11 case-sensitive สื่อ พิเศษ พูดคุย ผู้ใช้ คุยกับผู้ใช้ วิกิพจนานุกรม คุยเรื่องวิกิพจนานุกรม ไฟล์ คุยเรื่องไฟล์ มีเดียวิกิ คุยเรื่องมีเดียวิกิ แม่แบบ คุยเรื่องแม่แบบ วิธีใช้ คุยเรื่องวิธีใช้ หมวดหมู่ คุยเรื่องหมวดหมู่ ภาคผนวก คุยเรื่องภาคผนวก ดัชนี คุยเรื่องดัชนี สัมผัส คุยเรื่องสัมผัส อรรถาภิธาน คุยเรื่องอรรถาภิธาน TimedText TimedText talk มอดูล คุยเรื่องมอดูล Event Event talk หิ่งห้อย 0 3585 5729375 4755093 2026-07-20T07:36:58Z Alifshinobi 397 /* รากศัพท์ */ 5729375 wikitext text/x-wiki == ภาษาไทย == [[ไฟล์:Lampyris noctiluca.jpg|thumb|250px|[1] หิ่งห้อย]] {{วิกิพีเดีย}} === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|lo|ຫິ່ງຫ້ອຍ}}, {{cog|khb|ᦠᦲᧂᧈᦠᦾᧉ}}, {{cog|shn|ႁိင်ႇႁွႆႈ}}, {{cog|za|hing hoij}} (หิงห้อย), {{cog|zzj|yieng hoij}} (เหยียงห้อย-Daxin) === การออกเสียง === {{th-pron|หิ่ง-ฮ็่อย}} === คำนาม === {{th-noun|ตัว}} # [[แมลงปีกแข็ง]]ในวงศ์ {{species|Lampyridae}} อันดับ {{species|Coleoptera}} มีแสงเรือง ๆ ที่ก้น ==== คำพ้องความ ==== {{col4|th |ทิ้งถ่วง }} {{topics|th|แมลง}} 0ykilizajghmg7ah1jpazp6vn5foetl ก่ง 0 4081 5729413 5689727 2026-07-20T08:53:17Z Heavenchris 5375 /* รากศัพท์ */ 5729413 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === , {{cog|zzj|goengq||ค่อม งอ โค้ง}}, {{cog|za|goengq||ค่อม งอ โค้ง}} {{bor+|th|mkh-pro|*koŋ||โค้ง; งอ}}; ร่วมเชื้อสายกับ {{cog|th|ก้งโค้ง}}, {{m|th|โกง}}, {{m|th|โก่ง}}, {{m|th|โก้งโค้ง}}, {{m|th|โค้ง}} === การออกเสียง === {{th-pron}} === คำกริยา === {{th-verb}} # [[ทำให้]][[งอ]][[เป็น]][[รูป]][[โค้ง]], ทำให้โค้ง #: #: {{ux|th|ก่ง[[ศร]]}} #: #: {{ux|th|ก่งคอ}} ==== คำพ้องความ ==== * {{l|th|โก่ง}} ==== คำแปลภาษาอื่น ==== {{trans-top|ทำให้โค้ง}} * อังกฤษ: {{t+|en|bend}} {{trans-bottom}} === คำคุณศัพท์ === {{th-adj}} # [[เป็น]][[รูป]][[โค้ง]] ==== คำพ้องความ ==== * {{l|th|โก่ง}} ==== คำแปลภาษาอื่น ==== {{trans-top|เป็นรูปโค้ง}} * อังกฤษ: {{t+|en|curved}}, {{t+|en|arched}} {{trans-bottom}} == ภาษาคำเมือง == === คำกริยา === {{nod-verb}} # {{alternative spelling of|nod|ᨠᩫ᩠᩵ᨦ||ทำให้โค้ง}} === คำคุณศัพท์ === {{nod-adj}} # {{alternative spelling of|nod|ᨠᩫ᩠᩵ᨦ||โค้ง}} gw4yvet3ipn0yxz1f8f9oj16dac64u2 5729414 5729413 2026-07-20T08:53:43Z Heavenchris 5375 5729414 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === {{cog|zzj|goengq||ค่อม งอ โค้ง}}, {{cog|za|goengq||ค่อม งอ โค้ง}}, {{bor+|th|mkh-pro|*koŋ||โค้ง; งอ}}; ร่วมเชื้อสายกับ {{cog|th|ก้งโค้ง}}, {{m|th|โกง}}, {{m|th|โก่ง}}, {{m|th|โก้งโค้ง}}, {{m|th|โค้ง}} === การออกเสียง === {{th-pron}} === คำกริยา === {{th-verb}} # [[ทำให้]][[งอ]][[เป็น]][[รูป]][[โค้ง]], ทำให้โค้ง #: #: {{ux|th|ก่ง[[ศร]]}} #: #: {{ux|th|ก่งคอ}} ==== คำพ้องความ ==== * {{l|th|โก่ง}} ==== คำแปลภาษาอื่น ==== {{trans-top|ทำให้โค้ง}} * อังกฤษ: {{t+|en|bend}} {{trans-bottom}} === คำคุณศัพท์ === {{th-adj}} # [[เป็น]][[รูป]][[โค้ง]] ==== คำพ้องความ ==== * {{l|th|โก่ง}} ==== คำแปลภาษาอื่น ==== {{trans-top|เป็นรูปโค้ง}} * อังกฤษ: {{t+|en|curved}}, {{t+|en|arched}} {{trans-bottom}} == ภาษาคำเมือง == === คำกริยา === {{nod-verb}} # {{alternative spelling of|nod|ᨠᩫ᩠᩵ᨦ||ทำให้โค้ง}} === คำคุณศัพท์ === {{nod-adj}} # {{alternative spelling of|nod|ᨠᩫ᩠᩵ᨦ||โค้ง}} sbyzhyrqwrfqwb0s94a47h63uvc6h2j 5729415 5729414 2026-07-20T08:54:13Z Heavenchris 5375 5729415 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === {{cog|zzj|goengq||ค่อม งอ โค้ง}}, {{cog|za|goengq||ค่อม งอ โค้ง}},{{bor+|th|mkh-pro|*koŋ||โค้ง; งอ}}; ร่วมเชื้อสายกับ {{cog|th|ก้งโค้ง}}, {{m|th|โกง}}, {{m|th|โก่ง}}, {{m|th|โก้งโค้ง}}, {{m|th|โค้ง}} === การออกเสียง === {{th-pron}} === คำกริยา === {{th-verb}} # [[ทำให้]][[งอ]][[เป็น]][[รูป]][[โค้ง]], ทำให้โค้ง #: #: {{ux|th|ก่ง[[ศร]]}} #: #: {{ux|th|ก่งคอ}} ==== คำพ้องความ ==== * {{l|th|โก่ง}} ==== คำแปลภาษาอื่น ==== {{trans-top|ทำให้โค้ง}} * อังกฤษ: {{t+|en|bend}} {{trans-bottom}} === คำคุณศัพท์ === {{th-adj}} # [[เป็น]][[รูป]][[โค้ง]] ==== คำพ้องความ ==== * {{l|th|โก่ง}} ==== คำแปลภาษาอื่น ==== {{trans-top|เป็นรูปโค้ง}} * อังกฤษ: {{t+|en|curved}}, {{t+|en|arched}} {{trans-bottom}} == ภาษาคำเมือง == === คำกริยา === {{nod-verb}} # {{alternative spelling of|nod|ᨠᩫ᩠᩵ᨦ||ทำให้โค้ง}} === คำคุณศัพท์ === {{nod-adj}} # {{alternative spelling of|nod|ᨠᩫ᩠᩵ᨦ||โค้ง}} 6jo4w04aoptn5kv2g0tru9z459x4egf ก้วย 0 8797 5729046 1879524 2026-07-19T23:28:04Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729046 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/koːj˦˦ʔ/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨠᩖ᩠ᩅ᩠᩶ᨿ|t=[[กล้วย]]}} == ภาษาญ้อ == === คำนาม === {{nyw-noun}} # [[กล้วย]] == ภาษาอีสาน == === คำนาม === {{tts-noun}} # [[กล้วย]] sas07mg0u4mrp9g6x79drzaobdiqc0g กก 0 10497 5729411 5689726 2026-07-20T08:47:32Z Heavenchris 5375 5729411 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == {{วิกิพีเดีย}} === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === ==== คำนาม ==== {{th-noun}} # [[เรียก]][[คำ]][[หรือ]][[พยางค์]][[ที่]][[มี]][[ตัว]] [[ก]] [[ข]] [[ค]] [[ฆ]] [[สะกด]][[ว่า]] [[แม่กก]] หรือ [[มาตรากก]] === รากศัพท์ 2 === ร่วมเชื้อสายกับ{{cog|lo|ກົກ}}, {{cog|blt|ꪶꪀꪀ}}, {{cog|zzj|goek}}, {{cog|za|goek}} ==== คำนาม ==== {{th-noun}} # [[โคน]] #: {{ux|th|กกไม้}} # [[ต้น]] #: {{ux|th|กกขา}} # [[ลำต้น]] #: {{ux|th|กกเสา}} ===== ลูกคำ ===== {{col2|th|กกหู|กกเสา}} === รากศัพท์ 3 === ==== คำนาม ==== {{th-noun}} # [[ชื่อ]][[ไม้ล้มลุก]][[ใน]][[วงศ์]] Cyperaceae [[เกิด]]ในที่[[ชุ่ม]][[แฉะ]] [[ชนิด]]ลำต้น[[กลม]] [[ใช้]][[ทอ]]หรือ[[สาน]][[เสื่อ]] เรียกว่า [[กกกลม]] หรือ [[กกเสื่อ]] '' (Cyperus corymbosus'' Rottb., ''C. tegetiformis'' Roxb.) ที่ลำต้น[[เป็น]][[สามเหลี่ยม]] [[เช่น]] [[กกลังกา]] (''C. alternifolius'' L.) [[กกสามเหลี่ยม]] [''Schoenoplectus grossus'' (L.f.) Palla] [[กกขนาก]] หรือ [[กกกระหนาก]] (''C. difformis'' L.) === รากศัพท์ 4 === ==== คำกริยา ==== {{th-verb}} # [[แนบ]][[ไว้]][[กับ]][[อก]] [[โดย]][[ปรกติ]]เป็น[[อิริยาบถ]][[นอน]] #: {{ux|th|กกกอด}} #: {{ux|th|กกไข่}} #: {{ux|th|กกลูก}} # {{lb|th|โดยปริยาย}} [[เก็บ]][[นิ่ง]]ไว้[[นาน]][[เกิน]][[ควร]] #: {{ux|th|เอาเรื่องไปกกไว้}} === รากศัพท์ 5 === ==== คำนาม ==== {{th-noun}} # [[ซอก]][[ด้าน]]ในหรือซอกด้าน[[หลัง]][[ของ]][[บาน]][[ประตู]]หรือ[[หน้าต่าง]], [[ถ้า]]เป็นด้านหลังของ[[แผ่นบาน]]ประตู เรียกว่า กกประตู, ถ้าเป็นด้านหลังของ[[แผ่น]]บานหน้าต่าง เรียกว่า กกหน้าต่าง === รากศัพท์ 6 === ==== คำนาม ==== {{th-noun}} # [[กะวะ]], ชื่อ[[นกเงือก]]ชนิด ''Buceros bicornis'' === คำสลับอักษร === {{th-anagram}} {{topics|th|พืช|นก}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/kok˨˦/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{alternative spelling of|nod|ᨠᩫ᩠ᨠ|t=[[ตัด]], [[บั่น]]}} #: {{ux|nod|'''กก'''กิ่ง|ตัดกิ่ง|inline=1}} #: {{ux|nod|'''กก'''ยอด|ตัดยอด|inline=1}} == ภาษาญ้อ == === คำคุณศัพท์ === {{nyw-adj}} # ต้น, [[แรก]] == ภาษาอูรักลาโวยจ == === รูปแบบอื่น === * {{alt|urk|โกก}} === การออกเสียง === * {{IPA|urk|/kok̚/}} === คำนาม === {{head|urk|คำนาม}} # [[กระดูกงู]][[เรือ]] rblsszyy9ut9q5h7fot3w4ct2hnqtg4 กง 0 10692 5729412 2188713 2026-07-20T08:50:47Z Heavenchris 5375 /* รากศัพท์ 4 */ 5729412 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === ==== คำนาม ==== {{th-noun}} # [[เรียก]][[คำ]][[หรือ]][[พยางค์]][[ที่]][[มี]][[ตัว]] [[ง]] [[สะกด]] [[ว่า]] [[มาตรากง]]หรือ[[แม่กง]] === รากศัพท์ 2 === เทียบ{{cog|khb|ᦷᦂᧂ||ขอบเขตที่ล้อม}}, {{cog|nod|ᨠᩫ᩠ᨦ||อาณาเขต}} ==== คำนาม ==== {{th-noun}} # [[วง]], [[ส่วน]][[รอบ]][[ของ]][[ล้อ]][[เกวียน]]หรือล้อ[[รถม้า]][[เป็นต้น]] {{cls|th|กง|วง}} # เรียก[[สิ่ง]]ที่มี[[ลักษณะ]][[คล้ายคลึง]][[เช่น]][[นั้น]], [[บาง]][[ที]][[ก็]][[ใช้]][[เข้า]][[คู่]][[กับ]]คำ วง ว่า เป็นวงเป็นกง #: {{ux|th|ขนมกง}} # [[ไร่]][[ล้มลุก]]ที่[[ถาง]][[ป่า]][[เป็น]][[หย่อม]] ๆ [[ตาม]][[เนื้อที่]][[และ]][[กั้น]]เป็น[[ขอบเขต]][[ไว้]] {{cls|th|กง}} ===== ลูกคำ ===== {{col2|th|กงจักร|กงพัด|กงเกวียน|กงเกวียนกำเกวียน|กงเวียน}} ==== คำกริยา ==== {{th-verb|-}} # {{lb|th|กลอน}} [[แวดล้อม]] #: {{ux|th|ม้ากันม้ากง}} ==== คำวิสามานยนาม ==== {{th-proper noun}} # {{ตำบล|กงไกรลาศ|สุโขทัย}} === รากศัพท์ 3 === เทียบ{{cog|ms|lengkung}} ==== คำนาม ==== {{th-noun}} # [[ไม้]][[รูป]][[โค้ง]]ที่[[ตั้ง]]เป็น[[โครง]][[เรือ]] # [[เสลี่ยง]]ที่มี[[พนัก]]โค้ง[[เหมือน]]กงเรือ เรียกว่า เสลี่ยงกง ===== ลูกคำ ===== {{col2|th|กงข้าง|กงค้าง|กงวาน}} === รากศัพท์ 4 === เทียบ{{cog|och|-}} {{och-l|弓|คันธนู}}, {{cog|aho|𑜀𑜨𑜂𑜫||ไม้กงดีดฝ้าย; คันกระสุน}}, {{cog|nod|ᨠᩫ᩠ᨦ||คันธนู; คันกระสุน}}, {{cog|zzj|goeng||ดีดฝ้าย}}, {{cog|za|goeng||ดีดฝ้าย}} ==== คำนาม ==== {{th-noun|คัน}} # ไม้[[สำหรับ]][[ดีด]][[ฝ้าย]] มีรูปเหมือน[[คัน]][[ธนู]] เรียกว่า [[ไม้กง]] หรือ ไม้กงดีดฝ้าย === รากศัพท์ 5 === ==== คำนาม ==== {{th-noun}} # [[ปลา]][[มังกง]] (ประถม ก กา ในจินดามณี) ===== คำพ้องความ ===== * {{l|th|มังกง}}, {{l|th|แขยงหนู}} {{topics|th|ปลา}} === รากศัพท์ 6 === ==== คำนาม ==== {{th-noun}} # [[จงโคร่ง]] {{gloss|ชื่อสัตว์สะเทินน้ำสะเทินบกชนิด ''Bufo asper'' Gravenhorst}} ===== คำพ้องความ ===== * {{l|th|กระทาทอง}}, {{l|th|กระหอง}}, {{l|th|จงโคร่ง}}, {{l|th|โจงโคร่ง}} {{topics|th|สัตว์สะเทินน้ำสะเทินบก}} === รากศัพท์ 7 === ==== คำคุณศัพท์ ==== {{th-adj|-}} # {{lb|th|ถิ่น}} [[ตรง]] ==== คำบุพบท ==== {{th-prep}} # {{lb|th|ถิ่น}} [[ตรง]] === รากศัพท์ 8 === ==== คำนาม ==== {{th-noun}} # [[ปลา]][[มังกง]] (ประถม ก กา ในจินดามณี) === รากศัพท์ 9 === {{bor+|th|nan-tws|公||คำยกย่องชายที่นับถือ|tr=กง/กัง}} ==== คำนาม ==== {{th-noun}} # {{lb|th|ปาก}} [[คำ]][[เรียก]][[ชาย]][[ชรา]][[ชาว]][[จีน]] ===== คำพ้องความ ===== * {{sense|ชายชรา}} {{l|th|แปะ}}, {{l|th|แป๊ะ}} == ภาษากฺ๋อง == === การออกเสียง === * {{IPA|ugo|/koŋ/}} === คำนาม === {{ugo-noun}} # [[ตะกร้า]] rgjiwxglbzfzdsxbjz90qewsl0i2t2i กรอบ 0 10796 5729417 5686290 2026-07-20T09:06:47Z Heavenchris 5375 5729417 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron|กฺรอบ}} === รากศัพท์ 1 === เป็นไปได้ว่าเกี่ยวข้องกับ {{m|th|ขอบ}},{{cog|zzj|gop}},เช่น gop ndoeng(กอบ ด้ง) แปลว่า กรอบกระด้ง ==== คำนาม ==== {{th-noun}} # [[สิ่ง]][[ที่]][[ประกอบ]][[ตาม]][[ริม]][[วัตถุ]][[มี]][[รูปภาพ]][[เป็นต้น]] #: {{ux|th|กรอบรูป}} #: {{ux|th|กรอบตัวอย่าง}} # {{lb|th|โดยปริยาย}} [[ขอบเขต]][[กำหนด]] #: {{ux|th|ทำงานอยู่ในกรอบ}} ===== ลูกคำ ===== {{col2|th|กรอบหน้า|กรอบเช็ดหน้า}} ==== คำคุณศัพท์ ==== {{th-adj|-}} # {{lb|th|ปาก}} [[แทบ]][[ดำรง]][[ตน]][[ไป]][[ไม่]][[รอด]], [[จน]]มาก #: {{ux|th|จนกรอบ}} ===== คำสืบทอด ===== * {{desc|lo|ກອບ|bor=1}} === รากศัพท์ 2 === ร่วมเชื้อสายกับ{{cog|shn|ၶွပ်ႈ}} ==== คำคุณศัพท์ ==== {{th-adj}} # [[แตก]][[หัก]][[เป็น]][[ชิ้น]][[เล็ก]]ชิ้น[[น้อย]][[ได้]][[ง่าย]], [[เปราะ]] #: {{ux|th|ทอดกรอบ}} ===== ลูกคำ ===== {{col2|th|กรอบเกรียบ|กรอบเค็ม|กรอบแกรบ}} aqdi0dc0p8up7c859s88at2cpdj0qw8 วัน 0 10978 5729351 5724776 2026-07-20T07:28:10Z Alifshinobi 397 /* รากศัพท์ 2 */ 5729351 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รูปแบบอื่น === * {{alt|th|วนน||เลิกใช้}} === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === {{inh+|th|tai-swe-pro|*ŋwanᴬ²}}, จาก{{inh|th|tai-pro|*ŋwanᴬ}}; ร่วมเชื้อสายกับ{{cog|nod|ᩅᩢ᩠ᨶ}}, {{cog|lo|ວັນ}}, {{cog|khb|ᦞᧃ}}, {{cog|shn|ဝၼ်း}}, {{cog|kht|ဝꩫ်း}}, {{cog|tdd|ᥝᥢᥰ}}, {{cog|blt|ꪫꪽ}}, {{cog|aho|𑜈𑜃𑜫,𑜚𑜃𑜫}}, {{cog|za|ngoenz}}, {{cog|pcc|nguanz}}, {{cog|zzj|vaenz}}; เทียบ{{cog|swi|vanl}}, {{cog|qfa-onb-pro|*vɨnᴬ²}}, {{cog|qfa-lic-pro|*hŋwən||วัน; กลางวัน; เที่ยงวัน; ดวงอาทิตย์}} ==== คำนาม ==== {{th-noun}} # [[ระยะ]][[เวลา]] 24 [[ชั่วโมง]] [[ตั้งแต่]][[ย่ำรุ่ง]][[ถึง]]ย่ำรุ่ง [[หรือ]]ตั้งแต่[[เที่ยงคืน]]ถึงเที่ยงคืน {{cls|th|วัน}} #: {{ux|th|วันเฉลิมพระชนมพรรษาหยุดราชการ 1 วัน}} # ระยะเวลา 12 ชั่วโมง ตั้งแต่ย่ำรุ่งถึง[[ย่ำค่ำ]] [[เรียก]][[ว่า]] [[กลางวัน]], [[มัก]]เรียก[[สั้น]] ๆ ว่า วัน, [[ตรงข้าม]][[กับ]] [[คืน]] {{cls|th|วัน}} #: {{ux|th|เขาไปสัมมนาที่พัทยา 2 วัน 1 คืน}} # [[ช่วง]]เวลากลางวัน {{cls|th|วัน}} #: {{ux|th|เช้าขึ้นมาก็รีบไปทำงานทุกวัน}} # {{lb|th|กฎ}} เวลา[[ทำการ]][[ตาม]][[ที่]][[ได้]][[กำหนด]][[ขึ้น]][[โดย]][[กฎหมาย]] [[คำสั่ง]][[ศาล]] หรือ[[ระเบียบ]][[ข้อบังคับ]] หรือเวลาทำการตาม[[ปรกติ]][[ของ]][[กิจการ]][[นั้น]][[แล้วแต่]][[กรณี]] (ใช้ในทาง[[คดีความ]] ในทาง[[ราชการ]] หรือทาง[[ธุรกิจ]][[การค้า]] และการ[[อุตสาหกรรม]]) ===== คำพ้องความ ===== * (1) {{l|th|ทิน}} ===== คำแปลภาษาอื่น ===== {{trans-top|ระยะเวลา 24 ชั่วโมง}} * โยรูบา: {{t|yo|ọjọ́}} * ไทใหญ่: {{t+|shn|ဝၼ်း}} * ฝรั่งเศส: {{t+|fr|jour|m|tr=ฌูร์}} * เยอรมัน: {{t+|de|Tag|m}} * ลาว: {{t+|lo|ມື້}} * อังกฤษ: {{t+|en|day|tr=เดย์}} {{trans-bottom}} ===== ดูเพิ่ม ===== * {{รายชื่อ:หน่วยเวลา/th}} * {{l|th|วัน ๆ}} === รากศัพท์ 2 === ร่วมเชื้อสายกับ{{cog|lo|ແມງວັນ}}, {{cog|khb|ᦶᦙᧂᦞᧃ}} ==== คำนาม ==== {{th-noun}} # {{lang|th|([[แมลง]]~, [[แมง]]~)}} [[ชื่อ]][[แมลง]][[หลาย]][[ชนิด]] หลาย[[สกุล]] หลาย[[วงศ์]] [[ใน]][[อันดับ]] Diptera [[มี]][[ปีก]] 1 [[คู่]] [[ลักษณะ]][[บาง]][[ใส]] มี[[อวัยวะ]][[เป็น]][[ติ่ง]][[แทน]]ปีกคู่ที่ 2 [[ช่วย]]ใน[[การทรงตัว]] [[ปาก]]เป็นชนิด[[ซับ]][[ดูด]] [[หนวด]]มี 3 [[ปล้อง]] ปล้อง[[ปลาย]][[ใหญ่]][[สุด]][[และ]]มี[[ขน]] 1 [[เส้น]] ที่[[พบ]][[ทั่วไป]] [[เช่น]] แมลงวัน[[บ้าน]] (''Musca domestica'' Linn.) ในวงศ์ Muscidae [[ลำตัว]][[ยาว]][[ประมาณ]] 6 [[มิลลิเมตร]] [[สี]][[น้ำตาล]][[ดำ]] [[กิน]][[อาหาร]][[หลากหลาย]] {{cls|th|ตัว}} #: {{syn|th|มักขิกา|มักขิกาชาติ|รุย|ละลัด}} === รากศัพท์ 3 === {{bor+|th|pi|วน||ป่าไม้}} ==== คำนาม ==== {{th-noun}} # {{lb|th|แบบ|กลอน}} [[ป่าไม้]], [[ดง]] #: {{ux|th|อัมพวัน|ป่ามะม่วง}} {{topics|th|เวลา}} igp6gkwtcs9lcvannl4xxg9y6xk0r7c 5729362 5729351 2026-07-20T07:34:03Z Alifshinobi 397 5729362 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รูปแบบอื่น === * {{alt|th|วนน||เลิกใช้}} === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === {{inh+|th|tai-swe-pro|*ŋwanᴬ²}}, จาก{{inh|th|tai-pro|*ŋwanᴬ}}; ร่วมเชื้อสายกับ{{cog|nod|ᩅᩢ᩠ᨶ}}, {{cog|lo|ວັນ}}, {{cog|khb|ᦞᧃ}}, {{cog|shn|ဝၼ်း}}, {{cog|kht|ဝꩫ်း}}, {{cog|tdd|ᥝᥢᥰ}}, {{cog|blt|ꪫꪽ}}, {{cog|aho|𑜈𑜃𑜫,𑜚𑜃𑜫}}, {{cog|za|ngoenz}}, {{cog|pcc|nguanz}}, {{cog|zzj|vaenz}}; เทียบ{{cog|swi|vanl}}, {{cog|qfa-onb-pro|*vɨnᴬ²}}, {{cog|qfa-lic-pro|*hŋwən||วัน; กลางวัน; เที่ยงวัน; ดวงอาทิตย์}} ==== คำนาม ==== {{th-noun}} # [[ระยะ]][[เวลา]] 24 [[ชั่วโมง]] [[ตั้งแต่]][[ย่ำรุ่ง]][[ถึง]]ย่ำรุ่ง [[หรือ]]ตั้งแต่[[เที่ยงคืน]]ถึงเที่ยงคืน {{cls|th|วัน}} #: {{ux|th|วันเฉลิมพระชนมพรรษาหยุดราชการ 1 วัน}} # ระยะเวลา 12 ชั่วโมง ตั้งแต่ย่ำรุ่งถึง[[ย่ำค่ำ]] [[เรียก]][[ว่า]] [[กลางวัน]], [[มัก]]เรียก[[สั้น]] ๆ ว่า วัน, [[ตรงข้าม]][[กับ]] [[คืน]] {{cls|th|วัน}} #: {{ux|th|เขาไปสัมมนาที่พัทยา 2 วัน 1 คืน}} # [[ช่วง]]เวลากลางวัน {{cls|th|วัน}} #: {{ux|th|เช้าขึ้นมาก็รีบไปทำงานทุกวัน}} # {{lb|th|กฎ}} เวลา[[ทำการ]][[ตาม]][[ที่]][[ได้]][[กำหนด]][[ขึ้น]][[โดย]][[กฎหมาย]] [[คำสั่ง]][[ศาล]] หรือ[[ระเบียบ]][[ข้อบังคับ]] หรือเวลาทำการตาม[[ปรกติ]][[ของ]][[กิจการ]][[นั้น]][[แล้วแต่]][[กรณี]] (ใช้ในทาง[[คดีความ]] ในทาง[[ราชการ]] หรือทาง[[ธุรกิจ]][[การค้า]] และการ[[อุตสาหกรรม]]) ===== คำพ้องความ ===== * (1) {{l|th|ทิน}} ===== คำแปลภาษาอื่น ===== {{trans-top|ระยะเวลา 24 ชั่วโมง}} * โยรูบา: {{t|yo|ọjọ́}} * ไทใหญ่: {{t+|shn|ဝၼ်း}} * ฝรั่งเศส: {{t+|fr|jour|m|tr=ฌูร์}} * เยอรมัน: {{t+|de|Tag|m}} * ลาว: {{t+|lo|ມື້}} * อังกฤษ: {{t+|en|day|tr=เดย์}} {{trans-bottom}} ===== ดูเพิ่ม ===== * {{รายชื่อ:หน่วยเวลา/th}} * {{l|th|วัน ๆ}} === รากศัพท์ 2 === ร่วมเชื้อสายกับ{{cog|lo|ແມງວັນ}}, {{cog|khb|ᦶᦙᧂᦞᧃ}} ==== คำนาม ==== {{th-noun}} # {{lang|th|([[แมลง]]~, [[แมง]]~)}} [[ชื่อ]][[แมลง]][[หลาย]][[ชนิด]] หลาย[[สกุล]] หลาย[[วงศ์]] [[ใน]][[อันดับ]] Diptera [[มี]][[ปีก]] 1 [[คู่]] [[ลักษณะ]][[บาง]][[ใส]] มี[[อวัยวะ]][[เป็น]][[ติ่ง]][[แทน]]ปีกคู่ที่ 2 [[ช่วย]]ใน[[การทรงตัว]] [[ปาก]]เป็นชนิด[[ซับ]][[ดูด]] [[หนวด]]มี 3 [[ปล้อง]] ปล้อง[[ปลาย]][[ใหญ่]][[สุด]][[และ]]มี[[ขน]] 1 [[เส้น]] ที่[[พบ]][[ทั่วไป]] [[เช่น]] แมลงวัน[[บ้าน]] (''Musca domestica'' Linn.) ในวงศ์ Muscidae [[ลำตัว]][[ยาว]][[ประมาณ]] 6 [[มิลลิเมตร]] [[สี]][[น้ำตาล]][[ดำ]] [[กิน]][[อาหาร]][[หลากหลาย]] {{cls|th|ตัว}} #: {{syn|th|มักขิกา|มักขิกาชาติ|รุย|ละลัด}} ===== คำแปลภาษาอื่น ===== {{trans-top|แมลงในอันดับ Diptera}} * คำเมือง: {{t+|nod|ᨾᩖᩯᨦᨦᩫ᩠ᨶ}} * ไทใหญ่: {{t+|shn|မႅင်းမူၼ်း}} * ลาว: {{t+|lo|ແມງວັນ}} * อังกฤษ: {{t+|en|fly|tr=ฟลาย}} {{trans-bottom}} === รากศัพท์ 3 === {{bor+|th|pi|วน||ป่าไม้}} ==== คำนาม ==== {{th-noun}} # {{lb|th|แบบ|กลอน}} [[ป่าไม้]], [[ดง]] #: {{ux|th|อัมพวัน|ป่ามะม่วง}} {{topics|th|เวลา}} 6r8akdslhha7h441j2xfdyeloldt9y8 กลิ่น 0 16082 5729424 5673965 2026-07-20T09:25:21Z Heavenchris 5375 5729424 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron|กฺลิ่น}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|nod|ᨠᩖᩥ᩵ᩁ}}, {{cog|kkh|ᨠᩥ᩠᩵ᨶ}}, {{cog|lo|ກິ່ນ}}, {{cog|khb|ᦂᦲᧃᧈ}}, {{cog|zzj|ginq}}(กิ่น) ==== คำนาม ==== {{th-noun}} # [[สิ่ง]][[ที่]][[รู้]][[ได้]][[ด้วย]][[จมูก]] [[คือ]] [[เหม็น]] [[หอม]] [[และ]][[อื่น]] ๆ # [[บาง]][[ที]][[ใช้]][[หมายความ]][[ว่า]] เหม็น #: {{ux|th|แกงหม้อนี้เริ่มมี'''กลิ่น'''}} # {{lb|th|โดยปริยาย}} [[ลักษณะ]][[ไม่]][[น่า]][[ไว้วางใจ]] #: {{ux|th|เรื่องนี้ชักมี'''กลิ่น'''}} #: {{ux|th|การประมูลครั้งนี้เริ่มส่ง'''กลิ่น'''}} ===== ลูกคำ ===== {{col4|th|กลิ่นตุ ๆ|กลิ่นอาย|ชื่นกลิ่น|ชูกลิ่น|ซ่อนกลิ่น|ได้กลิ่น|ปากไม่สิ้นกลิ่นน้ำนม|ผิดกลิ่น|ผิดสีผิดกลิ่น|พู่กลิ่น|ส่งกลิ่น|กลิ่นตัว|ยาดับกลิ่น}} ===== คำสืบทอด ===== * {{desc|km|ក្លិន|bor=1}} === รากศัพท์ 2 === ==== คำนาม ==== {{th-noun}} # [[ชื่อ]][[พวง]][[ดอกไม้]][[ร้อย]][[มี]][[รูป]][[แบน]][[ประกอบ]]ด้วย[[อุบะ]], [[ถ้า]][[ทำ]][[ให้]][[ผูก]][[แขวน]][[คว่ำ]][[ลง]][[มา]] [[เรียก]]ว่า กลิ่นคว่ำ, ถ้าทำให้ผูกแขวน[[ตะแคง]] เรียกว่า กลิ่นตะแคง 1e3krc28x5tqjefec9hfrmvnfvf685n 5729427 5729424 2026-07-20T09:26:09Z Heavenchris 5375 5729427 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron|กฺลิ่น}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|nod|ᨠᩖᩥ᩵ᩁ}}, {{cog|kkh|ᨠᩥ᩠᩵ᨶ}}, {{cog|lo|ກິ່ນ}}, {{cog|khb|ᦂᦲᧃᧈ}}, {{cog|zzj|ginq}}(กิ่น-เมืองตงซิง) ==== คำนาม ==== {{th-noun}} # [[สิ่ง]][[ที่]][[รู้]][[ได้]][[ด้วย]][[จมูก]] [[คือ]] [[เหม็น]] [[หอม]] [[และ]][[อื่น]] ๆ # [[บาง]][[ที]][[ใช้]][[หมายความ]][[ว่า]] เหม็น #: {{ux|th|แกงหม้อนี้เริ่มมี'''กลิ่น'''}} # {{lb|th|โดยปริยาย}} [[ลักษณะ]][[ไม่]][[น่า]][[ไว้วางใจ]] #: {{ux|th|เรื่องนี้ชักมี'''กลิ่น'''}} #: {{ux|th|การประมูลครั้งนี้เริ่มส่ง'''กลิ่น'''}} ===== ลูกคำ ===== {{col4|th|กลิ่นตุ ๆ|กลิ่นอาย|ชื่นกลิ่น|ชูกลิ่น|ซ่อนกลิ่น|ได้กลิ่น|ปากไม่สิ้นกลิ่นน้ำนม|ผิดกลิ่น|ผิดสีผิดกลิ่น|พู่กลิ่น|ส่งกลิ่น|กลิ่นตัว|ยาดับกลิ่น}} ===== คำสืบทอด ===== * {{desc|km|ក្លិន|bor=1}} === รากศัพท์ 2 === ==== คำนาม ==== {{th-noun}} # [[ชื่อ]][[พวง]][[ดอกไม้]][[ร้อย]][[มี]][[รูป]][[แบน]][[ประกอบ]]ด้วย[[อุบะ]], [[ถ้า]][[ทำ]][[ให้]][[ผูก]][[แขวน]][[คว่ำ]][[ลง]][[มา]] [[เรียก]]ว่า กลิ่นคว่ำ, ถ้าทำให้ผูกแขวน[[ตะแคง]] เรียกว่า กลิ่นตะแคง jozobxdvmu5w6v7uhlkvimkv6ea3wm9 ผึ้ง 0 16866 5729037 5726597 2026-07-19T22:59:33Z Alifshinobi 397 /* คำแปลภาษาอื่น */ 5729037 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == {{wp}} [[ไฟล์:Bombus hypnorum male - side (aka).jpg|thumb|ผึ้ง]] === รากศัพท์ === {{bor+|th|ltc|-}} {{ltc-l|蜂|id=2}}; ร่วมเชื้อสายกับ{{cog|tts|เผิ้ง}}, {{cog|lo|ເຜິ້ງ,ເຜີ້ງ}}, {{cog|nod|ᨹᩮᩥ᩠᩶ᨦ}}, {{cog|kkh|ᨹᩨ᩠᩶ᨦ}}, {{cog|khb|ᦕᦹᧂᧉ}}, {{cog|blt|ꪹꪠꪷ꫁ꪉ}}, {{cog|shn|ၽိုင်ႈ}}, {{cog|tdd|ᥚᥪᥒᥲ}}, {{cog|aho|𑜇𑜢𑜤𑜂𑜫}}, {{cog|zzj|paengj|tr=ผั้ง}} (Jingxi) === การออกเสียง === {{th-pron|พึ่ง}} === คำนาม === {{th-noun|ตัว}} # ชื่อ[[แมลง]]หลายชนิดใน[[วงศ์]] {{species|Apidae}} [[มี]][[ปีก]]บางใส 2 คู่ ปีกคู่หลังเล็กกว่าปีกคู่หน้า ปากใช้ทั้งกัดอาหารและดูดกินของเหลวได้ ท้องปล้องแรกที่ติดกับอกเล็กมาก ปล้องที่ 2 มีขนาดไล่เลี่ยกัน ปล้องที่เหลือมีขนาดไล่เลี่ยกับอก ยกเว้นปล้องสุดท้ายที่มีขนาดเล็กกว่ามี[[ขน]][[ปกคลุม]]ตาม[[ลำตัว]] รวมตัว[[อยู่]][[เป็น]][[ฝูง]] [[แบ่ง]]ชั้น[[วรรณะ]] เก็บ[[เกสร]]และ[[น้ำ]][[หวาน]][[ดอกไม้]]มาทำ[[น้ำผึ้ง]] ==== คำพ้องความ ==== {{col|th|ขมุม|ภมร|ภมรี|ภระมร|ภระมรี|ภุมระ|ภุมรา|ภุมริน|ภุมรี|ภุมเรศ|มธุกร|มธุกรี|มธุการี|มธุปะ|มธุพรต|มธุลีห์|มธุมักขิกา}} ==== คำแปลภาษาอื่น ==== {{trans-top|ชื่อแมลงหลายชนิดในวงศ์ ''Apidae''}} * กรีก: {{t+|el|μέλισσα|f}} * เกาหลี: {{t+|ko|벌}}, {{t+|ko|밀봉(蜜蜂)}} * เขมร: {{t+|km|ឃ្មុំ}} * เขมรเหนือ: {{t|kxm|คมุม}} * คำตี้: {{t|kht|ၸိုင်ႛ}} * คำเมือง: {{t|nod|ᨹᩮᩥ᩠᩶ᨦ}} * จีน: *: กวางตุ้ง: {{t|yue|蜜蜂}} *: ดุงกาน: {{t|dng|мифыр}}, {{t|dng|фыр}}, {{t|dng|мифынзы}} *: หมิ่นตะวันออก: {{t|cdo|蜜蜂}} *: กั้น: {{t|gan|蜜蜂}} *: แคะ: {{t|hak|蜂仔|tr=phûng-é}}, {{t|hak|糖蜂仔|tr=thòng-phûng-é / thòng-fûng-é}} *: หมิ่นใต้: {{t+|nan-hbl|蜂|tr=phang}} *: จิ้น: {{t|cjy|蜜蜂}} *: จีนกลาง: {{t+|cmn|蜜蜂}}, {{t+|cmn|蠟蜂}} *: หมิ่นเหนือ: {{t|mnp|糖蜂}} *: อู๋: {{t|wuu|蜜蜂}} *: เซียง: {{t|hsn|蜜蜂子}} * เจียเม่า: {{t|jio|tej¹}} * ชอง: {{t|cog|มะง่าม}}, {{t|cog|ง่าม}} * เช็ก: {{t+|cs|včela|f}} * เซอร์โบ-โครเอเชีย: *: ซีริลลิก: {{t|sh|пчѐла|f}} *: ละติน: {{t+|sh|pčèla|f}} * ญัฮกุร: {{t|cbn|ชาย}} * ญี่ปุ่น: {{t+|ja|蜂|tr=はち, hachi}}, {{t+|ja|花蜂|tr=はなばち, hanabachi}} * ดัตช์: {{t+|nl|bij|f}}, {{t+|nl|honingbij|f}}, {{t+|nl|imme|f}} * เดนมาร์ก: {{t+|da|bi|c}} * ตากาล็อก: {{t+|tl|bubuyog}}, {{t|tl|pukyot}} * ทมิฬ: {{t+|ta|தேனீ}} * ไทดำ: {{t|blt|ꪹꪠꪷ꫁ꪉ}} * ไทลื้อ: {{t|khb|ᦕᦹᧂᧉ}} * ไทใหญ่: {{t+|shn|ၽိုင်ႈ}} * นอร์เวย์: {{t+|no|bie|m|f}} * บัลแกเรีย: {{t+|bg|пчела́|f}} * บาสก์: {{t+|eu|erle}} * ปาเลา: {{t|pau|chelakngikl}}, {{t|pau|chelatngikl}}, {{t|pau|hats}} * โปรตุเกส: {{t+|pt|abelha|f}} * โปแลนด์: {{t+|pl|pszczoła|f}} * ฝรั่งเศส: {{t+|fr|abeille|f}} * พม่า: {{t+|my|ပျား}} * ฟรียูลี: {{t|fur|âf|f}}, {{t|fur|âv|f}} * มอญ: {{t|mnw|သာဲ}} * มาซิโดเนีย: {{t+|mk|пчела|f}} * มาเลเซีย: {{t+|ms|lebah}}, {{t|ms|tawon}} * ไมยา: {{t|sks|kakape}} * เยอรมัน: {{t+|de|Biene|f}} * รัสเซีย: {{t+|ru|пчела́|f}} * ลาว: {{t+|lo|ເຜິ້ງ}}, {{t|lo|ຜຶ້ງ}} * เลอเวือะ: *: ตะวันตก: {{t|lcp|แฮ}} *: ตะวันออก: {{t|lwl|แฮ}} * เวียดนาม: {{t+|vi|ong}} * สเปน: {{t+|es|abeja|f}} * สวาฮีลี: {{t+|sw|nyuki|c9|c10}} * สวีเดน: {{t+|sv|bi|n}} * แสก: {{t|skb|โหร่ย}} * อังกฤษ: {{t+|en|bee}} * อิตาลี: {{t+|it|ape|f}}, {{t+|it|pecchia|f}} * อินโดนีเซีย: {{t+|id|lebah}}, {{t+|id|tawon}} * อีสาน: {{t|tts|เผิ้ง}} * อุตซิตา: {{t+|oc|abelha|f}} * อูรักลาโวยจ: {{t|urk|มาทู}} * เอสเปรันโต: {{t+|eo|abelo}} * ฮินดี: {{t+|hi|मधुमक्खी|f}} * ฮีบรู: {{t+|he|דְּבוֹרָה|f}} {{trans-bottom}} pvtj9gefn5p9ovr596jhx4nsgifnzf9 ขด 0 17490 5729055 1880441 2026-07-20T01:24:13Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729055 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|lo|ຂົດ}}, {{cog|shn|ၶူတ်း}}, {{cog|za|gyoet}}, {{cog|zzj|koet}} === การออกเสียง === {{th-pron}} === คำกริยา === {{th-verb}} # [[ม้วน]][[ตัว]][[ให้]][[เป็น]][[วง]] ๆ #: {{ux|th|งูเห่าขดตัวอยู่ใต้กองไม้}} # [[ทำให้]]เป็น[[วง]] ๆ #: {{ux|th|เอาลวดมาขด}} # ทำให้[[งอ]] #: {{ux|th|นอนขด}} #: {{ux|th|ขดให้เป็นลวดลาย}} # [[งอ]] === คำนาม === {{th-noun}} # [[สิ่ง]][[ที่]][[เป็น]][[วง]] ๆ === ลักษณนาม === {{th-cls}} # เรียก[[สิ่งของ]][[ที่]][[เป็น]][[วง]] ๆ #: {{ux|th|เชือก 3 ขด}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xot˨˦/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} {{altform|nod|ᨡᩫ᩠ᨯ|t=[[ขยด]], [[เขยิบ]], [[กระเถิบ]]}} tbyb248nw0s1zz1khm9qwgshth36aa1 ฮด 0 17918 5729200 1884701 2026-07-20T03:34:45Z Alifshinobi 397 5729200 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/hot˨˦/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᩉᩫ᩠ᨯ|t=[[รด]], รด[[น้ำ]][[ให้]]}} === คำนาม === {{nod-noun}} # {{altform|nod|ᩉᩫ᩠ᨯ|t=[[พิธี]]รดน้ำ[[เนื่องใน]][[การแต่งตั้ง]][[พระ]]}} kcmednc9a3u5s1rxmv4e0qqmgomffx4 หม้อห้อม 0 18743 5729104 1510128 2026-07-20T02:09:42Z Alifshinobi 397 5729104 wikitext text/x-wiki == ภาษาไทย == {{wp}} === การออกเสียง === {{th-pron|ม่อ-ห้อม}} === คำนาม === {{th-noun}} # [[เสื้อ]][[คอกลม]] แขนสั้น[[ผ่าอก]]ตลอด มักย้อมสีน้ำเงินเข้มหรือดำ == ภาษาคำเมือง == === รูปแบบอื่น === * [[ม่อห้อม]] * [[ม่อฮ่อม]] === การออกเสียง === * {{IPA|nod|/mɔː˦˦ʔ.hɔːm˦˦ʔ/|a=เชียงใหม่}} * {{คำอ่านไทย|หม้อ-ห้อม (เสียงโทพิเศษทั้งสองพยางค์)}} === คำนาม === {{nod-noun}} # {{altform|nod|ᩉ᩠ᨾᩬᩴ᩶ᩉᩬ᩶ᨾ|t=เสื้อคอกลม แขนสั้นผ่าอกตลอด มัก[[ย้อม]]สี[[น้ำเงิน]]เข้มหรือ[[ดำ]]}} eyhme983j1q3vcwvh2vywm5yj2hlw1f โกน 0 19960 5729028 5624995 2026-07-19T20:30:35Z Alifshinobi 397 5729028 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === เทียบ{{cog|xhm|កោរ}}, {{m|xhm|កោ||โกน, ถาก}}; ร่วมเชื้อสายกับ{{cog|lo|ໂກນ}}<!--SEAlang Lao mentioned Pali but no such word.--> ==== คำกริยา ==== {{th-verb}} # {{lb|th|สกรรม}} [[ขูด]]ผมหรือขนด้วย[[คม]]มีด #: {{ux|th|'''โกน'''ผม}} ===== คำแปลภาษาอื่น ===== {{trans-top|ขูดผมหรือขนด้วยคมมีด}} * เขิน: {{t+|kkh|ᨡᩪᨯ}}, {{t+|kkh|ᨳᩣ}} * จีน: *: จีนกลาง: {{t+|cmn|剃|tr=tì}}, {{t+|cmn|刮|tr=guā}} * ไทลื้อ: {{t+|khb|ᦃᦳᧆᧈ}} * ไทใหญ่: {{t+|shn|ထႃ}} * ลาว: {{t+|lo|ແຖ}} * อังกฤษ: {{t+|en|shave|tr=เฌฝ}} {{trans-bottom}} ==== คำนาม ==== {{th-noun}} # {{lb|th|พุทธ}} ชื่อวันที่[[พระสงฆ์]]ในเมืองไทย[[ปลงผม]] ตรงกับวัน[[ขึ้น]] 14 [[ค่ำ]] หรือ [[แรม]] 14 ค่ำ ถ้าเป็น[[เดือนขาด]]ก็เป็นแรม 13 ค่ำ, คู่กับ [[วันพระ]] # {{lb|th|พุทธ|ปาก}} ชื่อวันก่อนวันพระวันหนึ่งได้แก่วันขึ้น 7 ค่ำ ขึ้น 14 ค่ำ แรม 7 ค่ำ และแรม 14 ค่ำ ถ้าเป็นเดือนขาดก็แรม 13 ค่ำ ==== คำพ้องความ ==== * (1, 2) [[วันโกน]] === รากศัพท์ 2 === {{bor+|th|okz-pre|កោន៑}}, {{m|okz|កោន្ន៑}}, {{m|okz|កុន៑}}, {{m|okz|ក្វន៑||ลูก}}; เทียบ{{cog|km|កូន}}, {{cog|mnw|ကောန်}}, {{cog|vi|con}}; {{doublet|th|กูน}} ==== คำนาม ==== {{th-noun}} # {{lb|th|กลอน}} [[ลูก]] == ภาษาเขมรเหนือ == === รากศัพท์ === เทียบ{{cog|km|កូន}} === การออกเสียง === * {{IPA|kxm|/koːn/}} === คำนาม === {{kxm-noun}} # [[ลูก]] (ของคนหรือสัตว์) # [[ต้น]][[อ่อน]] # [[สิ่งของ]][[ที่]][[เล็ก]][[กว่า]][[ใน]][[ประเภท]][[เดียว]][[กัน]] == ภาษาอีสาน == === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|lo|ໂກນ}}, {{cog|nod|ᨠᩰᩫ᩠ᨶ}}, {{cog|kkh|ᨠ᩠ᩅᩁ}} (ในคำว่า {{m|kkh|ᨠ᩠ᩅᩁᨹᩨ᩠᩶ᨦ}}), {{cog|khb|ᦷᦂᧃ}}; อาจเกี่ยวข้องกับ{{cog|th|กลวง}} ==== คำนาม ==== {{tts-noun}} # [[โพรง]] === รากศัพท์ 2 === ==== คำกริยา ==== {{tts-verb}} # [[กรน]] tcgcr8edhlu2umwof9w1nrm1h31aa3m แก้ 0 20023 5729018 5723781 2026-07-19T16:46:56Z Alifshinobi 397 5729018 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === {{inh+|th|tai-pro|*keːꟲ}}, จาก{{der|th|ltc|-}} {{ltc-l|解|id=2}}; ร่วมเชื้อสายกับ{{cog|lo|ແກ້}}, {{cog|nod|ᨠᩯ᩶}}, {{cog|khb|ᦶᦂᧉ}}, {{cog|blt|ꪵꪀ꫁}}, {{cog|shn|ၵႄႈ}}, {{cog|aho|𑜀𑜦𑜧}}, {{cog|zzj|gej}} ==== คำกริยา ==== {{th-verb}} # ทำให้[[คลาย]]จากลักษณะที่[[แน่น]]ที่[[ติดขัด]]หรือที่เป็น[[เงื่อน]]เป็น[[ปม]]อยู่ #: {{ux|th|แก้ปม}} #: {{ux|th|แก้เงื่อน}} # ทำให้[[หลุด]]ให้[[พ้น]]ไป #: {{ux|th|แก้คดี}} # ทำให้[[ดี]][[ขึ้น]], ทำให้[[ใช้]][[การ]]ได้, ทำส่วนที่[[เสีย]]ให้[[คืน]]ดีอย่าง[[เดิม]], [[ดัดแปลง]]ให้ดีขึ้น, [[แก้ไข]] ก็ว่า #: {{ux|th|แก้นาฬิกา}} #: {{ux|th|แก้เครื่องจักร}} # ทำให้[[หาย]] #: {{ux|th|แก้เก้อแก้ขวย}} #: {{ux|th|แก้จน}} #: {{ux|th|แก้โรค}} # [[เฉลย]], [[อธิบาย]]ให้[[เข้าใจ]] #: {{ux|th|แก้ปัญหา}} #: {{ux|th|แก้กระทู้}} # [[ร้อง]][[เพลง]]หรือ[[ลำตัด]]เป็นต้น[[โต้ตอบ]]กัน # เอา[[กลับ]]คืนมาให้ได้ #: {{ux|th|ไปตีแก้เอาเมืองคืน}} ===== ลูกคำ ===== {{col4|th |แก้เกี้ยว |แก้ขวย |แก้เขิน |แก้ขัด |แก้ไข |แก้เคล็ด |แก้แค้น |แก้เชิง |แก้ตก |แก้ตัว |แก้ต่าง |แก้ที |แก้โทษ |แก้บน |แก้บาป |แก้ผ้า |แก้เผ็ด |แก้ฝัน |แก้ฟ้อง |แก้มือ |แก้ลำ |แก้หน้า }} ===== คำแปลภาษาอื่น ===== {{trans-top| (5)}} * อังกฤษ: to {{t+|en|solve|tr=ซอล์ฟว์}} {{trans-bottom}} === รากศัพท์ 2 === ==== คำนาม ==== {{th-noun}} # [[ชื่อ]][[เบี้ย]]ตัวโต ๆ สำหรับ[[ขัด]][[ผ้านุ่ง]]ให้[[ผิว]]เป็น[[มัน]] #: {{ux|th|ผ้าลายเรียกว่า เบี้ยอี'''แก้''' หรือ เบี้ย'''แก้'''ใหญ่}} ===== ลูกคำ ===== {{col4|th |เบี้ยแก้ |เบี้ยแก้ใหญ่ |เบี้ยอีแก้ }} icwjkns7r0s0riv0c7eth1lcxypsezc 5729019 5729018 2026-07-19T16:49:30Z Alifshinobi 397 /* คำแปลภาษาอื่น */ 5729019 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === {{inh+|th|tai-pro|*keːꟲ}}, จาก{{der|th|ltc|-}} {{ltc-l|解|id=2}}; ร่วมเชื้อสายกับ{{cog|lo|ແກ້}}, {{cog|nod|ᨠᩯ᩶}}, {{cog|khb|ᦶᦂᧉ}}, {{cog|blt|ꪵꪀ꫁}}, {{cog|shn|ၵႄႈ}}, {{cog|aho|𑜀𑜦𑜧}}, {{cog|zzj|gej}} ==== คำกริยา ==== {{th-verb}} # ทำให้[[คลาย]]จากลักษณะที่[[แน่น]]ที่[[ติดขัด]]หรือที่เป็น[[เงื่อน]]เป็น[[ปม]]อยู่ #: {{ux|th|แก้ปม}} #: {{ux|th|แก้เงื่อน}} # ทำให้[[หลุด]]ให้[[พ้น]]ไป #: {{ux|th|แก้คดี}} # ทำให้[[ดี]][[ขึ้น]], ทำให้[[ใช้]][[การ]]ได้, ทำส่วนที่[[เสีย]]ให้[[คืน]]ดีอย่าง[[เดิม]], [[ดัดแปลง]]ให้ดีขึ้น, [[แก้ไข]] ก็ว่า #: {{ux|th|แก้นาฬิกา}} #: {{ux|th|แก้เครื่องจักร}} # ทำให้[[หาย]] #: {{ux|th|แก้เก้อแก้ขวย}} #: {{ux|th|แก้จน}} #: {{ux|th|แก้โรค}} # [[เฉลย]], [[อธิบาย]]ให้[[เข้าใจ]] #: {{ux|th|แก้ปัญหา}} #: {{ux|th|แก้กระทู้}} # [[ร้อง]][[เพลง]]หรือ[[ลำตัด]]เป็นต้น[[โต้ตอบ]]กัน # เอา[[กลับ]]คืนมาให้ได้ #: {{ux|th|ไปตีแก้เอาเมืองคืน}} ===== ลูกคำ ===== {{col4|th |แก้เกี้ยว |แก้ขวย |แก้เขิน |แก้ขัด |แก้ไข |แก้เคล็ด |แก้แค้น |แก้เชิง |แก้ตก |แก้ตัว |แก้ต่าง |แก้ที |แก้โทษ |แก้บน |แก้บาป |แก้ผ้า |แก้เผ็ด |แก้ฝัน |แก้ฟ้อง |แก้มือ |แก้ลำ |แก้หน้า }} ===== คำแปลภาษาอื่น ===== {{trans-top|อธิบายให้เข้าใจ}} * อังกฤษ: to {{t+|en|solve|tr=ซอล์ฟว์}} {{trans-bottom}} === รากศัพท์ 2 === ==== คำนาม ==== {{th-noun}} # [[ชื่อ]][[เบี้ย]]ตัวโต ๆ สำหรับ[[ขัด]][[ผ้านุ่ง]]ให้[[ผิว]]เป็น[[มัน]] #: {{ux|th|ผ้าลายเรียกว่า เบี้ยอี'''แก้''' หรือ เบี้ย'''แก้'''ใหญ่}} ===== ลูกคำ ===== {{col4|th |เบี้ยแก้ |เบี้ยแก้ใหญ่ |เบี้ยอีแก้ }} jfhxtql44rbncr3wlzqdh7pegz4hxd3 หญุ้ง 0 22102 5729174 1884200 2026-07-20T03:06:13Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729174 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ɲuŋ˦˦ʔ/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} {{pronunciation spelling of|nod|ᩉ᩠ᨿᩩ᩶ᨦ|t=[[ยุ่ง]]}} == ภาษาอีสาน == === คำกริยา === {{tts-verb}} # [[ยุ่ง]] hk27k2gbpzg7i58egpv2jxvmrr7gw7n บวก 0 23027 5729039 1882430 2026-07-19T23:16:54Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729039 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == {{wp}} === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === {{bor+|th|okz|បូក}}; ร่วมเชื้อสายกับ{{cog|km|បូក}}, {{cog|lo|ບວກ}} ==== คำกริยา ==== {{th-verb}} # [[เอา]][[จำนวน]][[หนึ่ง]][[รวม]][[เข้า]][[กับ]][[อีก]]จำนวนหนึ่ง[[หรือ]][[หลาย]]จำนวน[[ให้]][[เป็น]]จำนวน[[เพิ่ม]][[ขึ้น]]จำนวน[[เดียว]][[กัน]] # [[เพิ่มเติม]]เข้า[[ไป]] ==== คำคุณศัพท์ ==== {{th-adj|-}} # [[ที่]]เป็นไป[[ใน]][[ทาง]][[สนับสนุน]] ทาง[[ดี]] หรือ[[เชิง]][[สร้างสรรค์]] #: {{ux|th|มองในทางบวก}} # {{lb|th|คณิต}} [[เรียก]]จำนวน[[เลข]]ที่[[มี]][[ค่า]][[มาก]][[กว่า]][[ศูนย์]] [[ว่า]] จำนวนบวก ==== คำนาม ==== {{th-noun}} # เรียก[[เครื่องหมาย]][[คณิตศาสตร์]][[รูป]][[ดัง]][[นี้]] [[+]] ว่า เครื่องหมายบวก === รากศัพท์ 2 === ==== คำกริยา ==== {{th-verb}} # {{lb|th|ปาก|สแลง}} [[ปะทะ]]กัน #: {{ux|th|รถกระบะบวกรถบรรทุก}} #: {{ux|th|หนุ่มเมาแล้วขับ คุมรถไม่อยู่บวกเสาไฟฟ้า เจ็บสาหัส}} # {{lb|th|ปาก|สแลง}} [[ชก]] #: {{ux|th|เปิดฉากยกแรก ทั้งคู่บวกหมัดชุดแลกกันทันที}} #: {{ux|th|ขุนศึก ภ.สวนทอง บวกหมัดจน ช้างศึก เกียรติทรงฤทธิ์ หลับเพียงยก 2 เท่านั้น}} === รากศัพท์ 3 === ==== คำกริยา ==== {{th-verb|-}} # {{lb|th|โบ}} [[โบก]] == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/buak˨˩/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨷ᩠ᩅᨠ|t=[[แอ่ง]][[น้ำ]]; [[ปลัก]]}} == ภาษาอีสาน == === คำนาม === {{tts-noun}} # [[ปลัก]] 4sfrkgii3rn9erh4cojh8sh03nz6k1q เออะ 0 23446 5729059 1390645 2026-07-20T01:35:42Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729059 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ʔɤʔ˨˦/|a=เชียงใหม่}} === คำกริยา === {{nod-verb|tl=1}} # {{lb|nod|อกรรม}} {{altform|nod|ᩋᩮᩬᩥᩡ|t=[[เรอ]]}} pcuww4vjylodkx9hkc61bo6pxl6ttws อี่รุย 0 23449 5729324 1386600 2026-07-20T05:54:17Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729324 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ʔiː˨˩.huj˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ตัว|tl=1}} # {{altform|nod|ᩋᩦ᩵ᩁᩩ᩠ᨿ|t=[[ชะนี]]}} #: {{syn|nod|อี่วุย|อี่ฮุย}} moqawu1c50qj6at4vbs35ignez56tuw 5729325 5729324 2026-07-20T05:58:50Z Alifshinobi 397 5729325 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ʔiː˨˩.huj˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ตัว|tl=1}} # {{altform|nod|ᩋᩦ᩵ᩁᩩ᩠ᨿ|t=[[ชะนี]]}} #: {{syn|nod|นางณี|อี่วุย|อี่ฮุย}} s6iasbwwd3z1dn1fqf2etfb4tq8jhrl อี่ค่าง 0 23450 5729051 1386593 2026-07-19T23:37:28Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729051 wikitext text/x-wiki #เปลี่ยนทาง [[ค่าง]] 938l38t9xilr3ypsb91g6e8lr5l4ve8 โอ่ย 0 23456 5729204 1885884 2026-07-20T03:38:25Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729204 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ʔoːj˨˩/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} {{pronunciation spelling of|nod|ᩋ᩠ᩅ᩠᩵ᨿ|t=[[ใช้]][[เงิน]][[อย่าง]][[สุรุ่ยสุร่าย]]}} 9yp01towo432k8agnuahl6mqmfsxmms อุ๊ย 0 23463 5729299 5719862 2026-07-20T05:33:11Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729299 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron}} === คำอุทาน === {{th-interj}} # คำที่เปล่งออกมาแสดงอาการ[[ตกใจ]] มักเป็นเสียงผู้หญิง == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ʔuj˦˥/|a=เชียงใหม่}} * {{คำอ่านไทย|อุ๊ย, อุ้ย}} === คำนาม === {{nod-noun}} # {{pronunciation spelling of|nod|ᩋᩩ᩠᩶ᨿ|t=[[ปู่]][[ย่า]][[ตา]][[ยาย]]}} #: {{syn|nod|ตุ๊ย|ป้ออุ๊ย|แม่อุ๊ย}} ==== ลูกคำ ==== {{col4|nod |อุ๊ยหม่อน }} {{topics|nod|ครอบครัว}} ln6culnab8310aolaukxzc31m8o0t4c เบียน 0 23475 5729197 1553071 2026-07-20T03:28:54Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729197 wikitext text/x-wiki == ภาษาไทย == === รูปแบบอื่น === * {{alt|th|เบียฬ||เลิกใช้}} === การออกเสียง === {{th-pron}} === คำกริยา === {{th-verb}} # [[รบกวน]], [[ทำ]][[ให้]][[เดือดร้อน]], [[มัก]][[ใช้]][[เข้า]][[คู่]][[กับ]][[คำ]] [[เบียด]] [[เป็น]] [[เบียดเบียน]] # {{lb|th|โหร}} [[เปลี่ยนแปลง]] #: {{ux|th|ดาวพระศุกร์ถูกราหูเบียน}} === คำนาม === {{th-noun}} # [[เรียก]][[สัตว์]][[หรือ]][[พืช]][[ที่]][[อาศัย]][[อยู่]][[ภาย]][[นอก]][[หรือ]][[ภาย]][[ใน]][[สัตว์]][[หรือ]][[พืช]][[อื่น]][[โดย]][[แย่ง]][[กิน]][[อาหาร]][[ว่า]] [[ตัวเบียน]] == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/bian˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨷ᩠ᨿᩁ|t=[[ฝา]][[กระบุง]]}} obixsvg2jigl0cwe90v4mrqogx8ig05 จั๋กขุ๋ 0 23484 5729207 5719847 2026-07-20T03:43:48Z Alifshinobi 397 Alifshinobi ย้ายหน้า [[จักหุ]] ไปยัง [[จั๋กขุ๋]]: สะกดผิด 5719847 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/tɕǎk.hǔʔ/}} === คำนาม === {{nod-noun}} # [[ตั๊กแตน]][[ตัว]][[ใหญ่]] {{topics|nod|แมลง}} lt290aaaco7628i49t9npxk798eimpb 5729211 5729207 2026-07-20T03:46:42Z Alifshinobi 397 5729211 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/t͡ɕak˨˦.xuʔ˨˦/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{pronunciation spelling of|nod|ᨧᩢ᩠ᨠᨡᩩ|t=[[ตั๊กแตน]][[สีเขียว]][[ชนิด]][[หนึ่ง]]}} # {{pronunciation spelling of|nod|ᨧᨠ᩠ᨡᩩ|t=[[จักขุ]] [ตา], ดวงตา}} {{topics|nod|แมลง}} 4v5mwzl8hgo1ouxd8lns94rktzhx8b3 โจก 0 23495 5729108 1952246 2026-07-20T02:15:05Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729108 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/t͡ɕoːk˨˩/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᨧᩰᩫ᩠ᨠ|t=[[เท]][[น้ำ]]}} mml3g3b34dlqnrz9g25k4bf94loam1w ชืน 0 23497 5729321 1881537 2026-07-20T05:47:25Z Alifshinobi 397 Alifshinobi ย้ายหน้า [[ชึน]] ไปยัง [[ชืน]]: น่าจะสะกดผิด 1881537 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/tɕɯn/}} === คำนาม === {{nod-noun}} # [[ตะกั่ว]] r3j3ps98kqms0g99ffd2vepnjulpxmi 5729323 5729321 2026-07-20T05:48:31Z Alifshinobi 397 5729323 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/t͡ɕɯːn˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun|tl=1}} # {{altform|nod|ᨩᩨ᩠ᨶ|t=[[ตะกั่ว]]}} ayw10cf0mgv5upz8isvv5w6u8j8smof ถ่ายหุ่น 0 23505 5729319 1372401 2026-07-20T05:44:02Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729319 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/tʰaːj˨˩.hun˨˩/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} [[ถ่ายรูป]] b0co5xplzi7stt7xeu02gcvhq360iyz 5729320 5729319 2026-07-20T05:44:42Z Alifshinobi 397 5729320 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/tʰaːj˨˩.hun˨˩/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} {{altform|nod|ᨳ᩵ᩣ᩠ᨿᩉᩩ᩵ᩁ|t=[[ถ่ายรูป]]}} 8wrx3qtq6i1yanov49cfzcco708pg3q ผีเสื้อ 0 24142 5729348 5627965 2026-07-20T07:20:51Z Alifshinobi 397 /* คำแปลภาษาอื่น */ 5729348 wikitext text/x-wiki == ภาษาไทย == {{wp}} [[File:Prioneris philonome 3.jpg|thumb|ผีเสื้อขอบปีกเลื่อยจุดแดง]] === รากศัพท์ === แผลงมาจาก{{com|th|ผี|เชื้อ}} === การออกเสียง === {{th-pron|ผี-เสื้อ}} === คำนาม === {{th-noun|ตัว}} # ชื่อ[[แมลง]]จำพวกหนึ่ง มี[[ปีก]]เป็นแผ่นบาง 2 คู่ # ชื่อ[[ปลา]][[ทะเล]]จำพวกหนึ่ง อาศัยอยู่ตามแนว[[หินปะการัง]] ==== ลูกคำ ==== {{col4|th |ผีเสื้อกลางคืน }} ==== คำแปลภาษาอื่น ==== {{trans-top|ชื่อแมลง}} * กะเหรี่ยง: *: ปะโอ: {{t|blk|လိုႏ}} *: สะกอ: {{t|ksw|စီးကပ့ၤ}} * เกาหลี: {{t+|ko|나비}}, {{t|ko|호접(胡蝶)}} * กฺ๋อง: {{t|ugo|ลาบู้}} * เขมร: {{t+|km|មេអំបៅ}} * คำเมือง: {{t|nod|ᨠᨷᩮᩬᩥ᩶}}, {{t|nod|ᨠᩣᩴᨷᩮᩬᩥ᩶}} * จอร์เจีย: {{t+|ka|პეპელა}} * จีน: *: กวางตุ้ง: {{t|yue|蝴蝶|tr=wu4 dip6-2}} *: ดุงกาน: {{t|dng|хўте}} *: หมิ่นตะวันออก: {{t|cdo|蝴蝶|tr=hù-diĕk}} *: กั้น: {{t|gan|蝴蝶|tr=fu4 tiet}} *: แคะ: {{t|hak|揚蝶仔|tr=yòng-ya̍k-é, yòng-ya̍p-é}} *: หมิ่นใต้: {{t+|nan-hbl|蝶仔|tr=ia̍h-á}}, {{t+|nan-hbl|蝴蝶|tr=ô͘-tia̍p}}, {{t+|nan-hbl|尾蝶|tr=bóe-ia̍h, bé-ia̍h}}, {{t|nan-hbl|尾蝶仔|tr=bóe-ia̍h-á, bé-ia̍h-á}}, {{t|nan-hbl|蝶婆|tr=ia̍h-pô}} *: จิ้น: {{t|cjy|蝴蝶|tr=hu1 dieh5}} *: จีนกลาง: {{t+|cmn|蝴蝶|tr=húdié}} *: อู๋: {{t|wuu|蝴蝶}} *: เซียง: {{t|hsn|蝴蝶|tr=fu2 tie6}} * ญี่ปุ่น: {{t+|ja|胡蝶|tr=kochō}}, {{t+|ja|蝶々|tr=chōchō}}, {{t+|ja|蝶|tr=chō}}, {{t+|ja|チョウ|tr=chō}}, {{t+|ja|蝶|tr=kawahirako}} * ดัตช์: {{t+|nl|vlinder|m}} * ตองงา: {{t|to|pepe}} * ตากาล็อก: {{t|tl|paruparo}}, {{t|tl|mariposa}} * ไทดำ: {{t|blt|ꪀꪱꪚ‌ꪹꪚ꫁}} * ไทลื้อ: {{t+|khb|ᦂᦱᧇᦵᦢᦲᧉ}} * ไทใหญ่: {{t+|shn|ၵၢပ်ႇမိူဝ်ႈ}} * นาวัตล์: *: คลาสสิก: {{t|nci|papalotl}} * บีซู: {{t|bzi|ตอลอ}} * ปัญจาบ: {{t|pa|ਤਿਤਲੀ|f}} * เปอร์เซีย: {{t|fa|پَرْوانِه}}, {{t|fa|پِرْپِروک}} * โปรตุเกส: {{t+|pt|borboleta|f}}, {{t+|pt|panapaná|m}} * โปแลนด์: {{t+|pl|motyl|m}} * ฝรั่งเศส: {{t+|fr|papillon|m}} * พม่า: {{t+|my|လိပ်ပြာ}} * มาร์แชลล์: {{t|mh|babbūb}} * มาเลเซีย: {{t|ms|kupu-kupu}}, {{t|ms|rama-rama}}, {{t|ms|kulimambang}} * เยอรมัน: {{t+|de|Schmetterling|m}}, {{t+|de|Falter|m}}, {{t+|de|Tagfalter|m}} * รัสเซีย: {{t+|ru|ба́бочка|f}}, {{t+|ru|мотылёк|m}}, {{t+|ru|моты́ль|m}} * ลาว: {{t+|lo|ແມງກະເບື້ອ}} * เลอเวือะตะวันออก: {{t|lwl|บุ̱งบ̱ัง}} * เวียดนาม: {{t+|vi|bươm bướm}}, {{t+|vi|bướm}} * สเปน: {{t+|es|mariposa|f}} * สวีเดน: {{t+|sv|fjäril|c}}, {{t+|sv|dagfjäril|c}} * อังกฤษ: {{t+|en|butterfly|tr=บัตเทอร์ฟลาย}} * อิตาลี: {{t+|it|farfalla|f}} * อินโดนีเซีย: {{t+|id|kupu-kupu}}, {{t|id|rama-rama}} * เอสเปรันโต: {{t+|eo|papilio}} * ไอซ์แลนด์: {{t+|is|fiðrildi|n}} * ฮินดี: {{t+|hi|तितली|f}} {{trans-bottom}} {{topics|th|แมลง}} 8pmew9f53n5vg2lz82amgt5u0tj7v3s แฅ่ 0 25324 5729111 1391042 2026-07-20T02:18:27Z Alifshinobi 397 5729111 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xɛː˦˨/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨤᩯ᩵|t=[[ไต้]]}} ox45ogqcgn4sqss3xxe86amcwp77xi7 5729112 5729111 2026-07-20T02:18:37Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729112 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xɛː˦˨/|a=เชียงใหม่}} === คำนาม === {{nod-noun|tl=1}} # {{altform|nod|ᨤᩯ᩵|t=[[ไต้]]}} 5ga1i83af3of1cxp2ypccta2adsfw68 ล้ำ 0 25327 5729047 1883665 2026-07-19T23:28:31Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729047 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === เปรียบ {{cog|vi|lắm||มาก}} === การออกเสียง === {{th-pron}} === คำกริยา === {{th-verb}} # [[ล่วง]][[เข้า]][[ไป]][[เกิน]][[เขต]][[ที่]][[กำหนด]] #: {{ux|th|ล้ำเขตแดน}} #: {{ux|th|ล้ำแดนข้าศึก}} === คำวิเศษณ์ === {{th-adj}} # [[ยิ่ง]], [[ล้น]] #: {{ux|th|สูงล้ำ}} #: {{ux|th|ปัญญาล้ำ}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/lam˦˥/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᩃ᩶ᩣᩴ|t=[[ล่วง]][[เข้า]][[ไป]]}} 03io3ljnm9gqf1mrf2jwo802vql9e56 ห้วย 0 26174 5729068 1884391 2026-07-20T01:53:05Z Heavenchris 5375 5729068 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === {{inh+|th|tai-pro|*qrwɤjꟲ||ธารน้ำจากภูเขา}}; ร่วมเชื้อสายกับ{{cog|lo|ຫ້ວຍ}}, {{cog|khb|ᦠᦽᧉ}}, {{cog|shn|ႁူၺ်ႈ}}, {{cog|aho|𑜍𑜤𑜐𑜫}}, {{cog|skb|รี̂}}, {{cog|zzj|kuij(เมืองหนิงหมิง)}} หรือ {{m|za|huij}}, {{cog|swi|kui3}}; เทียบ{{cog|ltc|-}} {{ltc-l|海}} === การออกเสียง === {{th-pron|ฮ่วย}} === คำนาม === {{th-noun}} # [[แอ่ง]][[น้ำ]][[ลึก]][[กว้าง]][[มี]][[ทาง]]น้ำ[[ไหล]][[จาก]][[ภูเขา]][[มา]][[ขัง]][[อยู่]][[ตลอด]][[ปี]] [[หรือ]][[แห้ง]][[บ้าง]][[เป็น]][[บาง]][[คราว]] # [[ธาร]]น้ำจากภูเขา ==== คำแปลภาษาอื่น ==== {{trans-top|แอ่งน้ำ}} {{trans-bottom}} izy6g3icgm8t152pu9xwgfashai1xql 5729105 5729068 2026-07-20T02:11:53Z Alifshinobi 397 /* รากศัพท์ */ 5729105 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === {{inh+|th|tai-pro|*qrwɤjꟲ||ธารน้ำจากภูเขา}}; ร่วมเชื้อสายกับ{{cog|lo|ຫ້ວຍ}}, {{cog|nod|ᩉ᩠᩶ᩅ᩠ᨿ}}, {{cog|khb|ᦠᦽᧉ}}, {{cog|blt|ꪬ꫁ꪺꪥ}}, {{cog|twh|ꪬꪺꪥꫂ}}, {{cog|shn|ႁူၺ်ႈ}}, {{cog|aho|𑜍𑜤𑜐𑜫}}, {{cog|skb|รี̂}}, {{cog|zzj|kuij}} (เมืองหนิงหมิง) หรือ {{m|za|huij}}, {{cog|swi|kui3}}; เทียบ{{cog|ltc|-}} {{ltc-l|海}} === การออกเสียง === {{th-pron|ฮ่วย}} === คำนาม === {{th-noun}} # [[แอ่ง]][[น้ำ]][[ลึก]][[กว้าง]][[มี]][[ทาง]]น้ำ[[ไหล]][[จาก]][[ภูเขา]][[มา]][[ขัง]][[อยู่]][[ตลอด]][[ปี]] [[หรือ]][[แห้ง]][[บ้าง]][[เป็น]][[บาง]][[คราว]] # [[ธาร]]น้ำจากภูเขา ==== คำแปลภาษาอื่น ==== {{trans-top|แอ่งน้ำ}} {{trans-bottom}} kza3d9zlpmw9n4rxeuyju9gq9rktr2n 5729106 5729105 2026-07-20T02:12:11Z Alifshinobi 397 /* รากศัพท์ */ 5729106 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === {{inh+|th|tai-pro|*qrwɤjꟲ||ธารน้ำจากภูเขา}}; ร่วมเชื้อสายกับ{{cog|lo|ຫ້ວຍ}}, {{cog|nod|ᩉ᩠ᩅ᩠᩶ᨿ}}, {{cog|khb|ᦠᦽᧉ}}, {{cog|blt|ꪬ꫁ꪺꪥ}}, {{cog|twh|ꪬꪺꪥꫂ}}, {{cog|shn|ႁူၺ်ႈ}}, {{cog|aho|𑜍𑜤𑜐𑜫}}, {{cog|skb|รี̂}}, {{cog|zzj|kuij}} (เมืองหนิงหมิง) หรือ {{m|za|huij}}, {{cog|swi|kui3}}; เทียบ{{cog|ltc|-}} {{ltc-l|海}} === การออกเสียง === {{th-pron|ฮ่วย}} === คำนาม === {{th-noun}} # [[แอ่ง]][[น้ำ]][[ลึก]][[กว้าง]][[มี]][[ทาง]]น้ำ[[ไหล]][[จาก]][[ภูเขา]][[มา]][[ขัง]][[อยู่]][[ตลอด]][[ปี]] [[หรือ]][[แห้ง]][[บ้าง]][[เป็น]][[บาง]][[คราว]] # [[ธาร]]น้ำจากภูเขา ==== คำแปลภาษาอื่น ==== {{trans-top|แอ่งน้ำ}} {{trans-bottom}} 9pcs3vsymfcmb0vpclavaskei7krxv1 กลีบ 0 27112 5729431 5725502 2026-07-20T09:26:42Z Heavenchris 5375 5729431 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|lo|ກີບ}}, {{cog|nod|ᨠᩖᩦᨷ}}, {{cog|za|gip|tr=กีบ|t=กลีบดอกไม้}}; เป็นไปได้ว่าเกี่ยวข้องกับ {{m|th|จีบ}} === การออกเสียง === {{th-pron|กฺลีบ}} === คำนาม === {{th-noun}} # ส่วนของ[[ดอกไม้]]ที่เรียง[[ซ้อน]]กันเป็นชั้น ๆ รอบ[[เกสร]] # ใช้เรียกของอื่น ๆ ที่มีลักษณะเช่นนั้น ==== คำเกี่ยวข้อง ==== * [[กลีบเดียวกระเทียมโทน]] ==== คำสืบทอด ==== * {{desc|kxm|กลีบ||bor=1}} == ภาษาเขมรเหนือ == === รากศัพท์ === {{bor+|kxm|th|กลีบ}} === การออกเสียง === * {{IPA|kxm|/kliːp/}} === คำนาม === {{kxm-noun}} # [[กลีบ]] (ของดอกไม้) jmtpm0fng38oe3c6szlr48zck8ttlxm เกงเคง 0 28748 5729025 5719865 2026-07-19T20:17:55Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729025 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/keŋ˨˦.xeŋ˧˧/|a=เชียงใหม่}} * {{คำอ่านไทย|เก๋งเค็ง}} === คำนาม === {{nod-noun|tl=1}} # {{altform|nod|ᨠᩮ᩠ᨦᨤᩮ᩠ᨦ,ᨠᩮ᩠ᨦᨣᩕᩮ᩠ᨦ|t=ต้น[[กระเจี๊ยบเปรี้ยว]]}} #: {{syn|nod|เกงเขง}} {{topics|nod|พืช}} q2b4pb0w9mtol1xgwmxsopxwrkhqsr5 เก็ด 0 28754 5729038 5719867 2026-07-19T23:12:36Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729038 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ket˨˦/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨠᩮᩢ᩠ᨯ|t=ชื่อไม้ต้นหลายชนิดใน[[สกุล]] ''Dalbergia'' [[วงศ์]] Leguminosae เช่น เก็ดดำ เก็ดแดง เนื้อไม้ใช้ทำ[[เครื่องเรือน]]ได้}} {{topics|nod|พืช}} ovr15v03bqsjk3u26etx5ye63ru73tq คด 0 29330 5729245 2188833 2026-07-20T04:07:24Z Alifshinobi 397 /* รากศัพท์ 1 */ 5729245 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|lo|ຄົດ}}, {{cog|nod|ᨣᩫ᩠ᨯ}}, {{cog|kkh|ᨣᩫ᩠ᨯ}}, {{cog|khb|ᦷᦅᧆ}}, {{cog|blt|ꪶꪁꪒ}}, {{cog|twh|ꪁꪺꪒ}}, {{cog|shn|ၵူတ်ႉ}}, {{cog|zzj|koet|tr=คด|t=ไม่ตรง, คด}} ==== คำคุณศัพท์ ==== {{th-adj}} # ลักษณะที่ไม่[[ตรง]]ตลอด # ไม่[[ซื่อ]] ==== คำนาม ==== {{th-noun}} # สิ่งปลูกสร้างซึ่งมี[[สัณฐาน]][[หักมุม]]เป็น[[ข้อศอก]] #: {{ux|th|วิหารคด}} ==== ลูกคำ ==== * [[คดกริช]] * [[คดโกง]] * [[คดเคี้ยว]] * [[คดงอ]] * [[คดซ่าง]], [[คดสร้าง]] * [[คดในข้องอในกระดูก]] === รากศัพท์ 2 === ร่วมเชื้อสายกับ{{cog|lo|ຄົດ}}, {{cog|nod|ᨤᩫ᩠ᨯ}}, {{cog|shn|ၶူတ်ႉ}} ==== คำกริยา ==== {{th-verb}} # {{lb|th|สกรรม}} ตัก[[ข้าวสุก]]ออกจาก[[หม้อ]] === รากศัพท์ 3 === {{rfe|th}} ==== คำนาม ==== {{th-noun}} # วัตถุแข็งคล้ายหินที่มีในสัตว์หรือต้นไม้ นับถือกันว่าเป็น[[เครื่องราง]] gm3kjn2opf8y57821mhoufbo5ld1v2l ป้ออุ๊ย 0 29777 5729306 5719852 2026-07-20T05:37:40Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729306 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === รากศัพท์ === {{com|nod|ป้อ|อุ๊ย|t1=พ่อ|t2=ปู่ย่าตายาย}} === การออกเสียง === * {{IPA|nod|/pɔː˦˨.ʔuj˦˥/|a=เชียงใหม่}} * {{คำอ่านไทย|ป้อ-อุ๊ย}} === คำนาม === {{nod-noun}} # {{pronunciation spelling of|nod|ᨻᩬᩴ᩵ᩋᩩ᩠᩶ᨿ|t=[[ปู่]], [[ตา]]}} #: {{syn|nod|อุ๊ย}} #: {{ant|nod|แม่อุ๊ย}} {{topics|nod|ครอบครัว}} icv7d5jocds1wwnhxbvuh50wij9mub8 แม่อุ๊ย 0 29778 5729311 5719870 2026-07-20T05:38:25Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729311 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === รากศัพท์ === {{com|nod|แม่|อุ๊ย|t1=แม่|t2=ปูย่าตายาย}} === การออกเสียง === * {{IPA|nod|/mɛː˦˨.ʔuj˦˥/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{pronunciation spelling of|nod|ᨾᩯ᩵ᩋᩩ᩠᩶ᨿ|t=[[ย่า]], [[ยาย]]}} #: {{syn|nod|อุ๊ย}} #: {{ant|nod|ป้ออุ๊ย}} {{topics|nod|ครอบครัว}} tw0h5d35no22ag0c0aynbdep1cf4y69 แขวด 0 29785 5729053 1390973 2026-07-20T01:22:43Z Alifshinobi 397 5729053 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xwɛːt˨˩/|a=เชียงใหม่}} * คำอ่านภาษาไทย : แขฺวด === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᨡ᩠ᩅᩯᨯ|t=[[กำหนด]], ทำ[[เครื่องหมาย]]}} mbkzo32uj7lqye3qlxot0o2lx6340n8 ญวา 0 29788 5729196 1371699 2026-07-20T03:17:29Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729196 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ɲwaː˧˧/|a=เชียงใหม่}} * {{คำอ่านไทย|อยวา|ญฺวา}} === คำคุณศัพท์ === {{nod-adj}} # {{pronunciation spelling of|nod|ᨿ᩠ᩅᩣ|t=[[ซึม]]}} 94k2w2mtgnoxspnokndz8lnvr8ve83u เกียว 0 29805 5729040 1884860 2026-07-19T23:20:30Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729040 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/kiaw˧˧/}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨣ᩠ᨿᩅ|t=[[เคียว]]}} #: {{syn|nod|เคียว}} p92pcxh1qns54q9pgfh5zolt2op6kai ข่าม 0 29807 5729054 1880841 2026-07-20T01:23:07Z Alifshinobi 397 5729054 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xaːm˨˩/|a=เชียงใหม่}} * {{คำอ่านไทย|ข่าม}} === คำคุณศัพท์ === {{nod-adj}} # {{altform|nod|ᨡ᩵ᩣ᩠ᨾ|t=[[ขลัง]]}} 3o5ofh5410vsqhcym3xzddpvoqrawp3 ກະເບື້ອ 0 30122 5729347 5721868 2026-07-20T07:19:50Z Alifshinobi 397 /* รากศัพท์ */ 5729347 wikitext text/x-wiki == ภาษาลาว == === รากศัพท์ === น่าจะแผลงมาจาก {{m|lo|ກາບເບື້ອ}}; ร่วมเชื้อสายกับ{{cog|tts|กะเบื้อ}}, {{cog|nod|ᨠᩣᩴᨷᩮᩬᩥ᩶,ᨠᨷᩮᩬᩥ᩶}}, {{cog|khb|ᦂᦱᧇᦵᦢᦲᧉ}}, {{cog|shn|ၵၢပ်ႇမိူဝ်ႈ,ၵၢပ်ႇဝိူဝ်ႈ}} ===การออกเสียง=== {{lo-pron|ກະ-ເບື້ອ}} === คำนาม === {{lo-noun|ໂຕ}} # {{lang|lo|([[ແມງ]]~)}} [[ผีเสื้อ]] {{gl|ชื่อแมลง}} ==== คำพ้องความ ==== {{col4|lo|title=ผีเสื้อ |ກະບີ້ |ກາບເບື້ອ }} === อ้างอิง === {{รายการอ้างอิง}} * ''SEAlang library Lao lexicography''. SEAlang Projects. http://sealang.net/lao/dictionary.htm {{topics|lo|แมลง}} li5e616fy99ocrkz02ubenlteplm423 ທະນີ 0 30139 5729332 1916028 2026-07-20T06:11:56Z Alifshinobi 397 /* คำนาม */ 5729332 wikitext text/x-wiki {{also/auto}} == ภาษาลาว == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|th|ชะนี}} === การออกเสียง === {{lo-pron|ທະ-ນີ}} === คำนาม === {{lo-noun|ໂຕ}} # [[ชะนี]] #: {{syn|lo|ຊະນີ|ນາງນີ}} {{topics|lo|สัตว์เลี้ยงลูกด้วยน้ำนม}} a07xjg06prytte98py0on5hokasel03 ຫ້ວຍ 0 30336 5729107 1901171 2026-07-20T02:12:23Z Alifshinobi 397 /* รากศัพท์ */ 5729107 wikitext text/x-wiki {{also/auto}} == ภาษาลาว == === รูปแบบอื่น === {{lo-alt}} === รากศัพท์ === {{inh+|lo|tai-pro|*qrwɤjꟲ||ธารน้ำจากภูเขา}}; ร่วมเชื้อสายกับ{{cog|th|ห้วย}}, {{cog|nod|ᩉ᩠ᩅ᩠᩶ᨿ}}, {{cog|khb|ᦠᦽᧉ}}, {{cog|blt|ꪬ꫁ꪺꪥ}}, {{cog|twh|ꪬꪺꪥꫂ}}, {{cog|shn|ႁူၺ်ႈ}}, {{cog|aho|𑜍𑜤𑜐𑜫}}, {{cog|skb|รี̂}}, {{cog|zzj|khui}} [หนิงหมิง] หรือ {{m|zzj|hui}} [หลงโจว] === การออกเสียง === {{lo-pron}} === คำนาม === {{lo-noun}} # [[ห้วย]] ==== ดูเพิ่ม ==== {{col4|lo |ແມ່ນ້ຳ |ຮ່ອງ }} 4u9tvq1f4aurjgnbfhwwbyziyxtij5k ຂົດ 0 30498 5729056 1887251 2026-07-20T01:24:46Z Alifshinobi 397 5729056 wikitext text/x-wiki {{also/auto}} == ภาษาลาว == === การออกเสียง === {{lo-pron}} === รากศัพท์ 1 === {{rfe|lo}} ==== คำกริยา ==== {{lo-verb}} # {{lb|lo|อกรรม|สกรรม}} [[ขด]] === รากศัพท์ 2 === {{rfe|lo}} ==== คำคุณศัพท์ ==== {{lo-adj}} # [[คด]] === รากศัพท์ 3 === {{rfe|lo}} ==== คำกริยา ==== {{lo-verb}} # {{lb|lo|อกรรม|สกรรม}} [[ย้าย]] dh01yn6onqipg8ygnevy58ff1hsjbtl โก๋น 0 32217 5729026 2757759 2026-07-19T20:20:35Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729026 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/koːn˨˦/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨠᩰᩫ᩠ᨶ|t=[[โพรง]][[ไม้]], [[รู]]ที่อยู่ตาม[[ลำต้น]]ไม้}} === คำคุณศัพท์ === {{nod-adj|-}} # {{altform|nod|ᨠᩰᩫ᩠ᨶ|t=[ [[ผึ้ง]] ] ที่[[ทำ]][[รัง]]ในโพรงไม้}} ==== ลูกคำ ==== {{col4|nod |ผึ้งโก๋น }} == ภาษาอีสาน == === คำนาม === {{tts-noun}} # [[โพรงไม้]], [[รู]]ที่อยู่ตาม[[ลำต้น]]ไม้ === คำคุณศัพท์ === {{tts-adj|-}} # ([[ผึ้ง]]) ที่[[ทำรัง]]ในโพรงไม้ ==== คำเกี่ยวข้อง ==== * [[ผึ้งโก๋น]] jx77eujs5o6pwaene9k8in0iel1k3gd 5729029 5729026 2026-07-19T20:33:05Z Alifshinobi 397 /* ภาษาอีสาน */ 5729029 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/koːn˨˦/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨠᩰᩫ᩠ᨶ|t=[[โพรง]][[ไม้]], [[รู]]ที่อยู่ตาม[[ลำต้น]]ไม้}} === คำคุณศัพท์ === {{nod-adj|-}} # {{altform|nod|ᨠᩰᩫ᩠ᨶ|t=[ [[ผึ้ง]] ] ที่[[ทำ]][[รัง]]ในโพรงไม้}} ==== ลูกคำ ==== {{col4|nod |ผึ้งโก๋น }} == ภาษาอีสาน == === คำนาม === {{tts-noun}} # {{altform|tts|โกน|t=[[โพรง]][[ไม้]], [[รู]]ที่อยู่ตาม[[ลำต้น]]ไม้}} === คำคุณศัพท์ === {{tts-adj|-}} # {{altform|tts|โกน|t=[ [[ผึ้ง]] ] ที่[[ทำ]][[รัง]]ในโพรงไม้}} ==== ลูกคำ ==== {{col4|tts |ผึ้งโก๋น }} ntxfzpucyqwrmfb8ee2vzgee38pyzt4 ผึ้งโก๋น 0 32218 5729030 1952484 2026-07-19T20:35:21Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729030 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/pʰɯŋ˦˦ʔ.koːn˨˦/|a=เชียงใหม่}} * {{คำอ่านไทย|ผึ้ง (โทพิเศษ)-โก๋น}} === คำนาม === {{nod-noun|head=[[ผึ้ง]][[โก๋น]]}} # {{synonym of|nod|เผิ้งโก๋น|t=[[ผึ้ง]]ที่[[ทำ]][[รัง]]ใน[[โพรง]][[ไม้]]}} == ภาษาอีสาน == === คำนาม === {{tts-noun|head=[[ผึ้ง]][[โก๋น]]}} # [[ผึ้ง]]ที่[[ทำรัง]]ใน[[โพรงไม้]] fydsgj61ogdwq8cu57tk33ugzofatdc ป้ำ 0 33466 5729173 1882553 2026-07-20T03:03:31Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729173 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron}} === คำวิเศษณ์ === {{th-adj}} # [[กล้าได้กล้าเสีย]] [[ใน]][[คำ]][[ว่า]] [[ใจป้ำ]] == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/pam˦˦ʔ/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{pronunciation spelling of|nod|ᨸᩖ᩶ᩣᩴ|t=[[โค่น]] [ [[ทำ]][[ให้]][[ล้ม]] ]}} 4x5w2d2mlojji3wradnldfrtxbfxgox ไหล่ 0 34870 5729020 5729008 2026-07-19T16:51:07Z Alifshinobi 397 /* รากศัพท์ */ 5729020 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === {{unknown|th}}; ร่วมเชื้อสายกับ{{cog|lo|ໄຫຼ່}}, {{cog|nod|ᩉᩖᩯ᩵}} === การออกเสียง === {{th-pron|ไหฺล่}} === คำนาม === {{th-noun}} # [[ส่วน]][[ของ]][[บ่า]][[ตอน]][[ที่]][[ติด]][[กับ]][[ต้น]][[แขน]] ==== ลูกคำ ==== {{col4|th|กระทบไหล่|เคียงบ่าเคียงไหล่|ตีไหล่|เทียมบ่าเทียมไหล่|ผาลาเพียงไหล่|เพียงไหล่|เสมอบ่าเสมอไหล่|ห่อไหล่|หัวไหล่|ไหล่เขา|ไหล่ถนน|ไหล่ทาง|ไหล่ทวีป|ไหล่รวบ|ไหล่ลู่|ไหล่ห่อ|อกผายไหล่ผึ่ง}} nd1ha9ijpsqthhhtrqtgqqj47q99z0z หมอย 0 36079 5729101 3430909 2026-07-20T02:07:19Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729101 wikitext text/x-wiki == ภาษาไทย == === รูปแบบอื่น === * {{alt|th|หม็อย}} === รากศัพท์ === {{inh+|th|tai-pro|*ʰmwuːjᴬ}}; ร่วมเชื้อสายกับ{{cog|lo|ໝອຍ}}, {{cog|shn|မွႆ}}, {{cog|aio|မွႝ}}, {{cog|phk|မွႝ}}, {{cog|aho|𑜉𑜨𑜩}}, {{cog|za|moi}} === การออกเสียง === {{th-pron|หฺมอย|หฺม็อย}} === คำนาม === {{th-noun}} # {{lb|th|vulgar}} [[ขน]][[ที่]][[ของลับ]] # [[เรียก]][[สิ่ง]]ที่[[มี]][[ลักษณะ]][[เป็น]][[เส้น]]เป็น[[ฝอย]]ที่[[ปลาย]][[ฝัก]][[ข้าวโพด]][[ว่า]] หมอยข้าวโพด == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/mɔːj˨˦/|a=เชียงใหม่}} === คำนาม === {{nod-noun|tl=1}} # {{altform|nod|ᩉ᩠ᨾᩬ᩠ᨿ|t=[[ขน]][[ที่]][[ช่อง]][[ลับ]]}} #: {{ux|nod|'''หมอย'''[[คาง]]|'''ขน'''คาง (หมายถึง เครา)}} #: {{ux|nod|'''หมอย'''[[ปาก]]|'''ขน'''ปาก (หมายถึง หนวด)}} #: {{ux|nod|'''หมอย'''[[แร้]]|'''ขน'''รักแร้}} koafnjmt1slekv2hu97uquo6dct99tu 5729102 5729101 2026-07-20T02:07:56Z Alifshinobi 397 /* รากศัพท์ */ 5729102 wikitext text/x-wiki == ภาษาไทย == === รูปแบบอื่น === * {{alt|th|หม็อย}} === รากศัพท์ === {{inh+|th|tai-pro|*ʰmwuːjᴬ}}; ร่วมเชื้อสายกับ{{cog|lo|ໝອຍ}}, {{cog|nod|ᩉ᩠ᨾᩬ᩠ᨿ}}, {{cog|shn|မွႆ}}, {{cog|aio|မွႝ}}, {{cog|phk|မွႝ}}, {{cog|aho|𑜉𑜨𑜩}}, {{cog|za|moi}} === การออกเสียง === {{th-pron|หฺมอย|หฺม็อย}} === คำนาม === {{th-noun}} # {{lb|th|vulgar}} [[ขน]][[ที่]][[ของลับ]] # [[เรียก]][[สิ่ง]]ที่[[มี]][[ลักษณะ]][[เป็น]][[เส้น]]เป็น[[ฝอย]]ที่[[ปลาย]][[ฝัก]][[ข้าวโพด]][[ว่า]] หมอยข้าวโพด == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/mɔːj˨˦/|a=เชียงใหม่}} === คำนาม === {{nod-noun|tl=1}} # {{altform|nod|ᩉ᩠ᨾᩬ᩠ᨿ|t=[[ขน]][[ที่]][[ช่อง]][[ลับ]]}} #: {{ux|nod|'''หมอย'''[[คาง]]|'''ขน'''คาง (หมายถึง เครา)}} #: {{ux|nod|'''หมอย'''[[ปาก]]|'''ขน'''ปาก (หมายถึง หนวด)}} #: {{ux|nod|'''หมอย'''[[แร้]]|'''ขน'''รักแร้}} c5hud1z6l8lwsd0lx85z322bhcrqa1q มอดูล:languages/data/3/s 828 36368 5729119 5726530 2026-07-20T02:24:08Z Octahedron80 267 5729119 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["saa"] = { "Saba", 3914885, "cdc-est", "Latn", } m["sab"] = { "Buglere", 3368506, "cba", "Latn", } m["sac"] = { "Fox", 12714767, "alg-sfk", "Latn", } m["sad"] = { "Sandawe", 34016, "qfa-iso", "Latn", } m["sae"] = { "Sabanê", 3460478, "sai-nmk", "Latn", } m["saf"] = { "Safaliba", 36432, "nic-mre", "Latn", } m["sah"] = { "ซาคา", 34299, "trk-nsb", "Cyrl", translit = "sah-translit", override_translit = true, } m["saj"] = { "Sahu", 7399757, "paa-nha", "Latn", } m["sak"] = { "Sake", 36425, "bnt-kel", "Latn", } m["sam"] = { "Samaritan Aramaic", 56612, "sem-arw", "Samr", translit = "Samr-translit", -- Samr strip_diacritics, sort_key in [[Module:scripts/data]] } m["sao"] = { "Sause", 4409155, "paa-tkw", "Latn", } m["saq"] = { "Samburu", 56536, "sdv-lma", } m["sar"] = { "Saraveca", 3450556, "awd", "Latn", } m["sas"] = { "Sasak", 1294047, "poz-bss", "Latn, Bali, Java", } m["sat"] = { "สันถาลี", 33965, "mun", "Olck", translit = "Olck-translit", override_translit = true, } m["sau"] = { "Saleman", 7404262, "poz-cet", } m["sav"] = { "Saafi-Saafi", 36308, "alv-cng", "Arab, Latn", } m["saw"] = { "Sawi", 677064, "ngf-gaw", "Latn", } m["sax"] = { "Sa", 3460352, "poz-vnn", "Latn", } m["say"] = { "Saya", 3914431, "cdc-wst", "Latn", } m["saz"] = { "Saurashtra", 13292, "inc-wes", "Saur, Latn, Taml, Deva", translit = { Taml = "Taml-translit", Deva = "Deva-translit", }, ancestors = "inc-ogu", } m["sba"] = { "Ngambay", 2372207, "csu-sar", "Latn", } m["sbb"] = { "Simbo", 3484101, "poz-ocw", } m["sbc"] = { "Gele'", 3194847, "poz-aay", "Latn", } m["sbd"] = { "Southern Samo", 33122730, "dmn-sam", "Latn", } m["sbe"] = { "Saliba (New Guinea)", 3469737, "poz-ocw", } m["sbf"] = { "Shabo", 36342, "ssa", "Latn", } m["sbg"] = { "Seget", 7446237, "paa-wbh", "Latn", } m["sbh"] = { "Sori-Harengan", 36515, "poz-aay", "Latn", } m["sbi"] = { "Seti", 7456682, "paa-tor", "Latn", } m["sbj"] = { "Surbakhal", 759995, } m["sbk"] = { "Safwa", 4121160, "bnt-mby", "Latn", } m["sbl"] = { "Botolan Sambal", 4095195, "phi", "Latn", } m["sbm"] = { "Sagala", 11732610, "bnt-ruv", "Latn", } m["sbn"] = { "Sindhi Bhil", 25559289, "inc-snd", "Arab, Deva, Sind, Guru", translit = { Deva = "Deva-translit", Sind = "Sind-translit", Guru = "Guru-translit", }, ancestors = "sd", } m["sbo"] = { "Sabüm", 7396535, "mkh-asl", } m["sbp"] = { "Sangu (Tanzania)", 7418149, "bnt-bki", "Latn", } m["sbq"] = { "Sileibi", 7514337, "ngf-nso", "Latn", } m["sbr"] = { "Sembakung Murut", 7449148, "poz-san", } m["sbs"] = { "Subiya", 6442073, "bnt-bot", "Latn", } m["sbt"] = { "Kimki", 6410160, "paa-pau", } m["sbu"] = { "Stod Bhoti", 15622700, "sit-las", } m["sbv"] = { "Sabine", 65455885, "itc-sbl", "Latn", display_text = s["itc-Latn-displaytext"], strip_diacritics = s["itc-Latn-stripdiacritics"], sort_key = s["itc-Latn-sortkey"], } m["sbw"] = { "Simba", 36430, "bnt-tso", "Latn", } m["sbx"] = { "Seberuang", 12473470, "poz-mly", } m["sby"] = { "Soli", 7557754, "bnt-bot", "Latn", } m["sbz"] = { "Sara Kaba", 25559318, "csu-kab", "Latn", } m["scb"] = { "Chut", 2967709, "mkh-vie", "Latn", } m["sce"] = { "ตงเซียง", 32947, "xgn-shr", "Arab, Latn", } m["scf"] = { "San Miguel Creole French", 12953094, "crp", "Latn", ancestors = "gcf", sort_key = s["roa-oil-sortkey"], } m["scg"] = { "Sanggau", 12473466, "day", } m["sch"] = { "Sakachep", 37054, "tbq-kuk", } m["sci"] = { "Sri Lankan Creole Malay", 1089151, "crp", "Latn", ancestors = "ms", } m["sck"] = { "Sadri", 765922, "inc-bih", "Deva, Kthi", translit = { Deva = "Deva-translit", Kthi = "Kthi-translit", }, } m["scl"] = { "Shina", 1353320, "inc-shn", "ur-Arab, Deva", translit = { Deva = "Deva-translit", }, } m["scn"] = { "ซิซิลี", 33973, "roa-itr", "Latn", } m["sco"] = { "สกอต", 14549, "gmw-ang", "Latn", ancestors = "gmw-msc", } m["scp"] = { "Yolmo", 22662107, "sit-kyk", "Deva", translit = { Deva = "Deva-translit", }, } m["scq"] = { "สะโอจ", 6583617, "mkh-pea", } m["scs"] = { "North Slavey", 20628, "den", "Latn", } m["scu"] = { "Shumcho", 22077739, "sit-kin", } m["scv"] = { "Sheni", 11015820, "nic-jer", "Latn", ancestors = "zir", } m["scw"] = { "Sha", 3438816, "cdc-wst", "Latn", } m["scx"] = { "Sicel", 36667, "itc", "Polyt", -- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["scz"] = { "Shetland", 3069598, "qfa-mix", "Latn", ancestors = "nrn, gmw-msc", standard_chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzØøÖüÜü0123456789" .. c.punc, } m["sda"] = { "Toraja-Sa'dan", 36673, "poz-ssw", "Latn", } m["sdb"] = { "Shabak", 3289596, "ira-zgr", ancestors = "hac", } m["sdc"] = { "ซัสซารี", 845441, "roa-itr", "Latn", } m["sde"] = { "Surubu", 3913336, "nic-kau", "Latn", } m["sdf"] = { "Sarli", 7424256, "ira-zgr", ancestors = "hac", } m["sdg"] = { "Savi", 3474654, "inc-dng", } m["sdh"] = { "Southern Kurdish", 1496597, "ku", "ku-Arab", translit = "sdh-translit", strip_diacritics = {remove_diacritics = c.kasra .. c.sukun}, } m["sdj"] = { "Suundi", 7650407, "bnt-kng", "Latn", } m["sdk"] = { "Sos Kundi", 7563811, "paa-ndu", "Latn", } m["sdl"] = { "Saudi Arabian Sign Language", 3504160, "sgn", } m["sdm"] = { "Semandang", 7449012, "day", } m["sdn"] = { "Gallurese", 612220, "roa-itr", "Latn", ancestors = "co", } m["sdo"] = { "Bukar-Sadung Bidayuh", 2927799, "day", "Latn", } m["sdp"] = { "Sherdukpen", 7494785, "sit-khm", } m["sdr"] = { "Oraon Sadri", 12953860, "inc-bih", } m["sds"] = { "เบอร์เบอร์แบบตูนีเซีย", 5329732, "ber", } m["sdu"] = { "Sarudu", 7424700, "poz-cet", } m["sdx"] = { "Sibu Melanau", 18642842, "poz-bnn", } m["sea"] = { "เซอไม", 3135426, "mkh-asl", "Latn", } -- seb is a duplicate code of spp m["sec"] = { "Sechelt", 7442898, "sal", "Latn", } m["sed"] = { "Sedang", 56448, "mkh-nbn", "Latn", } m["see"] = { "Seneca", 1185133, "iro-nor", "Latn", } m["sef"] = { "Cebaara Senoufo", 10975121, "alv-snr", "Latn", } m["seg"] = { "Segeju", 17584599, "bnt-mij", "Latn", } m["seh"] = { "Sena", 2964008, "bnt-sna", "Latn", } m["sei"] = { "Seri", 36583, "qfa-iso", "Latn", } m["sej"] = { "Sene", 7450252, "ngf-huo", "Latn", } m["sek"] = { "Sekani", 28562, "ath-nor", "Latn", } m["sen"] = { "Nanerigé Sénoufo", 36002, "alv-sma", } m["seo"] = { "Suarmin", 7630513, "qfa-dis", -- Papuan; isolate or unclassified in Glottolog; Sepik language in Foley (2018) "Latn", } m["sep"] = { "Sìcìté Sénoufo", 56787, "alv-sma", } m["seq"] = { "Senara Sénoufo", 35210, "alv-snr", } m["ser"] = { "Serrano", 3479942, "azc-tak", "Latn", } m["ses"] = { "Koyraboro Senni", 35655, "son", "Latn", } m["set"] = { "Sentani", 3441672, "paa-sen", "Latn", } m["seu"] = { "Serui-Laut", 7455503, "poz-hce", "Latn", } m["sev"] = { "Nyarafolo Senoufo", 36306, "alv-snr", } m["sew"] = { "Sewa Bay", 7458126, "poz-ocw", } m["sey"] = { "Secoya", 3477218, "sai-tuc", "Latn", } m["sez"] = { "Senthang Chin", 7451223, "tbq-kuk", } m["sfb"] = { "French Belgian Sign Language", 3217332, "sgn", } m["sfe"] = { "Eastern Subanun", 63311321, "phi", "Latn", } m["sfm"] = { "Small Flowery Miao", 7542773, "hmn", } m["sfs"] = { "South African Sign Language", 3322093, "sgn", } m["sfw"] = { "Sehwi", 36593, "alv-ctn", "Latn", } m["sga"] = { "ไอริชเก่า", 35308, "cel-gae", "Latn, Ogam", strip_diacritics = {remove_diacritics = c.dotabove .. c.diaer .. "·"}, sort_key = "sga-sortkey", standard_chars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíLlMmNnOoÓóPpRrSsTtUuÚú0123456789ᚁᚂᚃᚄᚅᚆᚇᚈᚉᚊᚋᚌᚍᚎᚏᚐᚑᚒᚓᚔ" .. c.punc, } m["sgb"] = { "Mag-Anchi Ayta", 4356243, "phi", "Latn", } m["sgc"] = { "Kipsigis", 56339, "sdv-nma", } m["sgd"] = { "ซูรีเกาโนน", 34140, "phi", "Latn", } m["sge"] = { "Segai", 7446180, } m["sgg"] = { "Swiss-German Sign Language", 35150, "sgn", } m["sgh"] = { "Shughni", 34053, "ira-shr", "Latn, Cyrl", translit = "sgh-translit", override_translit = true, } m["sgi"] = { "Suga", 36475, "nic-mmb", "Latn", } m["sgk"] = { "Sangkong", 2945610, "tbq-bis", } m["sgm"] = { "Singa", 7522797, "bnt-lok", "Latn", } m["sgp"] = { "Singpho", 7524158, "sit-jnp", "Latn", } m["sgr"] = { "Sangisari", 3394363, "ira-kms", "Arab", } m["sgs"] = { "Samogitian", 213434, "bat-eas", "Latn", wikimedia_codes = "bat-smg", ancestors = "olt", display_text = "lt-common", strip_diacritics = "lt-common", sort_key = "lt-common", } m["sgt"] = { "Brokpake", 56603, "sit-tib", "Tibt", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["sgu"] = { "Salas", 7403694, "poz-cma", } m["sgw"] = { "Sebat Bet Gurage", 2707343, "sem-eth", "Ethi", } m["sgx"] = { "Sierra Leone Sign Language", 7511448, "sgn", } m["sgy"] = { "Sanglechi", 3472220, "ira-sgi", } m["sgz"] = { "Sursurunga", 36511, "poz-ocw", "Latn", } m["sha"] = { "Shall-Zwall", 3915355, "nic-beo", } m["shb"] = { "Ninam", 3436586, "sai-ynm", "Latn", } m["shc"] = { "Sonde", 7560881, "bnt-pen", "Latn", } m["shd"] = { "Kundal Shahi", 6444265, "inc-shn", "Arab", } m["she"] = { "Sheko", 3183355, "omv-diz", } m["shg"] = { "Shua", 3501092, "khi-kal", "Latn", } m["shh"] = { "Shoshone", 33811, "azc-num", "Latn", } m["shi"] = { "Tashelhit", 34152, "ber", "Latn, Arab, Tfng, Hebr", ancestors = "shi-med", translit = { Tfng = "Tfng-translit", }, strip_diacritics = { Arab = "ar-stripdiacritics", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["shj"] = { "Shatt", 56344, "sdv-daj", } m["shk"] = { "Shilluk", 36486, "sdv-lon", "Latn", } m["shl"] = { "Shendu", 22074616, "tbq-kuk", } m["shm"] = { "Shahrudi", 7462280, "xme-ttc", "fa-Arab, Latn", ancestors = "xme-ttc-cen", } m["shn"] = { "ไทใหญ่", 56482, "tai-swe", "Mymr", translit = "shn-translit", sort_key = { from = {"[ၢႃ]", "ဵ", "ႅ", "ႇ", "ႈ", "း", "ႉ", "ႊ"}, to = {"ာ", "ေ", "ႄ", "႒", "႓", "႔", "႕", "႖"} }, } m["sho"] = { "Shanga", 3913931, "dmn-bbu", "Latn", } m["shp"] = { "Shipibo-Conibo", 2671988, "sai-pan", "Latn", } m["shq"] = { "Sala", 10961665, "bnt-bot", "Latn", } m["shr"] = { "Shi", 3481999, "bnt-shh", "Latn", } m["shs"] = { "Shuswap", 3482685, "sal", "Latn", } m["sht"] = { "Shasta", 56396, "nai-shs", "Latn", } m["shu"] = { "Chadian Arabic", 56497, "sem-arb", "Arab", strip_diacritics = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, from = {u(0x0671)}, to = {u(0x0627)} }, } m["shv"] = { "Shehri", 33445, "sem-sar", "Arab, Latn", } m["shw"] = { "Shwai", 36527, "alv-hei", } m["shx"] = { "She", 2605689, "hmn", } m["shy"] = { "Tachawit", 33274, "ber", "Tfng, Arab, Latn", translit = "Tfng-translit", } m["shz"] = { "Syenara Senoufo", 36316, "alv-snr", } m["sia"] = { "Akkala Sami", 35241, "smi", "Cyrl, Latn", translit = "sia-translit", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = "'ˈ"}, } m["sib"] = { "Sebop", 7442799, "poz-swa", "Latn", } m["sid"] = { "ซีดามา", 33786, "cus-hec", "Latn, Ethi", } m["sie"] = { "Simaa", 7517329, "bnt-kav", "Latn", } m["sif"] = { "Siamou", 36252, } m["sig"] = { "Paasaal", 36426, "nic-sis", "Latn", } m["sih"] = { "Sîshëë", 8072753, "poz-cln", "Latn", } m["sii"] = { "Shom Peng", 1039346, "aav", } m["sij"] = { "Numbami", 3346277, "poz-ocw", "Latn", } m["sik"] = { "Sikiana", 3443734, "sai-prk", "Latn", } m["sil"] = { "Tumulung Sisaala", 25383006, "nic-sis", "Latn", } m["sim"] = { "Seim", 7446815, "paa-spk", "Latn", } m["sip"] = { "สิกขิม", 35285, "sit-tib", "Tibt", ancestors = "xct", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["siq"] = { "Sonia", 7561770, "ngf-bos", "Latn", } m["sir"] = { "Siri", 3438729, "cdc-wst", "Latn", } m["sis"] = { "Siuslaw", 2315424, } m["siu"] = { "Sinagen", 7521655, "paa-tor", "Latn", } m["siv"] = { "Sumariup", 7636966, "paa-spk", "Latn", } m["siw"] = { "Siwai", 7532519, "paa-sbo", "Latn", } m["six"] = { "Sumau", 7637021, "ngf-pek", "Latn", } m["siy"] = { "Sivandi", 13269, "xme", "fa-Arab, Latn", ancestors = "xme-mid", } m["siz"] = { "Siwi", 36814, "ber", "Tfng, Arab, Latn", } m["sja"] = { "Epena", 3055682, "sai-chc", "Latn", } m["sjb"] = { "Sajau Basap", 4684353, "poz-bnn", } m["sjc"] = { "Shaojiang Min", 3431451, "zhx-inm", "Hants", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["sjd"] = { "ซามีแบบกิลดิน", 33656, "smi", "Cyrl", translit = "sjd-translit", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = "'ˈ"}, } m["sje"] = { "ซามีแบบปีเต", 56314, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.macron .. "'ˈ"}, sort_key = "sje-sortkey", } m["sjg"] = { "Assangori", 3502255, "sdv-tmn", } m["sjk"] = { "Kemi Sami", 35871, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = "'ˈ"}, } m["sjl"] = { "Miji", 6845470, "sit-hrs", } m["sjm"] = { "Mapun", 3287253, "poz-sbj", "Latn", } m["sjn"] = { "ซินดาริน", 56437, "art", "Latn, Teng", type = "appendix-constructed", } m["sjo"] = { "Xibe", 13223, "tuw-jrc", "sjo-Mong", ancestors = "mnc", } m["sjp"] = { "Surjapuri", 7645351, "inc-krd", "Deva, as-Beng, Kthi", translit = { Deva = "Deva-translit", ["as-Beng"] = "Beng-translit", Kthi = "Kthi-translit", }, } m["sjr"] = { "Siar-Lak", 3482907, "poz-ocw", } m["sjs"] = { "Senhaja de Srair", 56744, "ber", "Latn, Tfng, Arab", strip_diacritics = { Arab = "ar-stripdiacritics", }, translit = { Tfng = "Tfng-translit", } } m["sjt"] = { "Ter Sami", 36656, "smi", "Cyrl, Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = "'ˈ"}, translit = "sjt-translit", } m["sju"] = { "Ume Sami", 56415, "smi", "Latn", strip_diacritics = {remove_diacritics = c.macron .. "'ˈ"}, display_text = { from = {"'"}, to = {"ˈ"} }, sort_key = "sju-sortkey", } m["sjw"] = { "Shawnee", 2669206, "alg", "Latn", } m["ska"] = { "Skagit", 25559652, "sal", "Latn", } m["skb"] = { "แสก", 36437, "tai-nor", "Thai", --sort_key = "Thai-sortkey", } m["skc"] = { "Ma Manda", 6720783, "ngf-fin", "Latn", } m["skd"] = { "Southern Sierra Miwok", 3492334, "nai-utn", "Latn", } m["ske"] = { "Ske", 7534244, "poz-vnn", "Latn", } m["skf"] = { "Mekéns", 3304806, "tup", "Latn", } m["skh"] = { "Sikule", 3121081, "poz-nws", } m["ski"] = { "Sika", 33960, "poz-cet", "Latn", } m["skj"] = { -- compare 'ths' "Seke", 30226846, "sit-tam", } m["skk"] = { "Sok", 12953887, "mkh-ban", } m["skm"] = { "Sakam", 6448517, "ngf-fin", "Latn", } m["skn"] = { "Kolibugan Subanon", 18755617, "phi", "Latn", } m["sko"] = { "Seko Tengah", 15613270, "poz", } m["skp"] = { "Sekapan", 7447132, "poz-bnn", } m["skq"] = { "Sininkere", 3914896, "dmn-man", "Latn", } m["skr"] = { "Saraiki", 33902, "inc-pan", "pa-Arab, Mult, Deva", ancestors = "lah", strip_diacritics = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna}, translit = { ["pa-Arab"] = "pa-Arab-translit", Deva = "Deva-translit", Mult = "Mult-translit", }, } m["sks"] = { "ไมยา", 12952760, "ngf-kau", "Latn", } m["skt"] = { "Sakata", 36691, "bnt-bnm", "Latn", } m["sku"] = { "Sakao", 3298421, "poz-vnn", "Latn", } m["skv"] = { "Skou", 3915200, "paa-msk", "Latn", } m["skw"] = { "Skepi Creole Dutch", 2522153, "crp", "Latn", ancestors = "nl", } m["skx"] = { "Seko Padang", 15613282, "poz-ssw", "Latn", } m["sky"] = { "ซีกายานา", 7439242, "poz-pnp", "Latn", } m["skz"] = { "Sekar", 7447136, "poz-cet", } m["slc"] = { "Saliba (Colombia)", 3441097, nil, "Latn", } m["sld"] = { "Sisaala", 11020264, "nic-sis", "Latn", } m["sle"] = { "Sholaga", 7500203, "dra-kan", "Knda", -- Knda translit in [[Module:scripts/data]] } m["slf"] = { "Swiss-Italian Sign Language", 12953479, "sgn", } m["slg"] = { "Selungai Murut", 7448844, "poz-san", } m["slh"] = { "Southern Puget Sound Salish", 12642471, "sal", "Latn", } -- "sli" "Silesian German" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["slj"] = { "Salumá", 7406296, "sai-prk", "Latn", } m["sll"] = { "Salt-Yui", 7405785, "ngf-chw", "Latn", } m["slm"] = { "ซามาแบบปางูตารัน", 3362086, "poz-sbj", "Latn", } m["sln"] = { "Salinan", 1568938, "qfa-iso", "Latn", } m["slp"] = { "Lamaholot", 6480777, "poz-cet", "Latn", } m["slr"] = { "ซาลาร์", 33963, "trk-ogz", "Arab, Latn", ancestors = "trk-eog", } m["sls"] = { "Singapore Sign Language", 7512563, "sgn", } m["slt"] = { "Sila", 7514021, "tbq-sil", } m["slu"] = { "Selaru", 7447500, "poz-cet", "Latn", } m["slw"] = { "Sialum", 7506694, "ngf-huo", "Latn", } m["slx"] = { "Salampasu", 7403607, "bnt-lun", "Latn", } m["sly"] = { "Selayar", 7447520, "poz-ssw", } m["slz"] = { "Ma'ya", 2291492, "poz-hce", "Latn", } m["sma"] = { "ซามีใต้", 13293, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = "'ˈ"}, sort_key = "sma-sortkey", } m["smb"] = { "Simbari", 7517427, "ngf-ang", "Latn", } m["smc"] = { "Som", 7559081, "ngf-fin", "Latn", } m["smd"] = { "Sama", 6407456, "bnt-kmb", "Latn", } m["smf"] = { "Auwe", 3502072, "paa-brd", "Latn", ancestors = "dnd", } m["smg"] = { "Simbali", 56692, "paa-bng", "Latn", } m["smh"] = { "Samei", 7409269, "tbq-axi", } m["smj"] = { "ซามีแบบลูเล", 56322, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.macron .. "'ˈ"}, sort_key = "smj-sortkey", } m["smk"] = { "โบลีเนา", 2669235, "phi", "Latn, Tglg", } m["sml"] = { "ซามาตอนกลาง", 3470593, "poz-sbj", "Latn", } m["smm"] = { "Musasa", 6940122, "inc-eas", ancestors = "bh", } m["smn"] = { "ซามีแบบอีนารี", 33462, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.dotbelow .. "'ˈ"}, sort_key = "smn-sortkey", } m["smp"] = { "Samaritan Hebrew", 56502, "sem-can", "Samr", translit = "Samr-translit", -- Samr strip_diacritics, sort_key in [[Module:scripts/data]] ancestors = "hbo", } m["smq"] = { "Samo", 7409884, "ngf-est", "Latn", } m["smr"] = { "Simeulue", 2992833, "poz-nws", "Latn", } m["sms"] = { "Skolt Sami", 13271, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.dotbelow .. "'ˈ"}, sort_key = "sms-sortkey", } m["smt"] = { "Simte", 7521268, "tbq-kuk", } m["smu"] = { "สมราย", 6583612, "mkh-pea", } m["smv"] = { "Samvedi", 6345632, "inc-sou", } m["smw"] = { "Sumbawa", 3182585, "poz-bss", "Latn", } m["smx"] = { "Samba", 11120157, "bnt-pen", "Latn", } m["smy"] = { "Semnani", 14531212, "xme", "fa-Arab, Latn", } m["smz"] = { "Simeku", 7517534, "paa-sbo", "Latn", } m["snb"] = { "Sebuyau", 7442836, "poz-mly", "Latn", } m["snc"] = { "Sinaugoro", 4170719, "poz-ocw", "Latn", } m["sne"] = { "Bau Bidayuh", 2891938, "day", "Latn", } m["snf"] = { "Noon", 36304, "alv-cng", "Latn", } m["sng"] = { "Sanga (Congo)", 3438316, "bnt-lub", "Latn", } m["sni"] = { "Sensi", 7451029, "sai-pan", "Latn", } m["snj"] = { "Riverain Sango", 25559751, "crp", "Latn", ancestors = "ngb", } m["snk"] = { "Soninke", 36660, "dmn-snb", "Latn", } m["snl"] = { "Sangil", 3472206, "phi", "Latn", } m["snm"] = { "Southern Ma'di", 15637273, "csu-mma", } m["snn"] = { "Siona", 3485116, "sai-tuc", "Latn", } m["sno"] = { "Snohomish", 25559662, "sal", "Latn", } m["snp"] = { "Siane", 7506812, "ngf-kag", "Latn", } m["snq"] = { "Sangu (Gabon)", 36609, "bnt-sir", "Latn", } m["snr"] = { "Sihan", 7513400, "ngf-gum", "Latn", } m["sns"] = { "Nahavaq", 2160435, "poz-vnc", "Latn", } m["snu"] = { "Senggi", 7929052, "paa-brd", "Latn", } m["snv"] = { "Sa'ban", 3474891, "poz-swa", "Latn", } m["snw"] = { "Selee", 36272, "alv-ntg", "Latn", } m["snx"] = { "Sam", 7408387, "ngf-min", "Latn", } m["sny"] = { "Saniyo-Hiyewe", 7418302, "paa-spk", "Latn", } m["snz"] = { "Kou", 7525035, -- also 4803639 "ngf-eva", "Latn", } m["soa"] = { "โซ่ง", 7709159, "tai-swe", "Tavt, Thai", --translit = "Tavt-translit", sort_key = { from = {"([ꪵꪶꪹꪻꪼ])([ꪀ-ꪯ])", "([เแโใไ])([ก-ฮ])"}, to = {"%2%1", "%2%1"} }, } m["sob"] = { "Sobei", 3121035, "poz-ocw", "Latn", } m["soc"] = { "Soko", 7555138, "bnt-ske", "Latn", } m["sod"] = { "Songoora", 7561296, "bnt-lgb", "Latn", } m["soe"] = { "Songomeno", 5713543, "bnt-bsh", "Latn", } m["sog"] = { "Sogdian", 205979, "ira-sgc", "Sogd, Mani, Syrc, Sogo", translit = { Sogd = "Sogd-translit", -- Mani translit in [[Module:scripts/data]] Sogo = "Sogo-translit", }, } m["soh"] = { "Aka (Sudan)", 3450949, "sdv-eje", "Latn", } m["soi"] = { "Sonha", 12953890, "inc-eas", } m["sok"] = { "Sokoro", 3441303, "cdc-est", "Latn", } m["sol"] = { "Solos", 3489591, "poz-ocw", } m["soo"] = { "Nsong", 12953148, "bnt-bdz", "Latn", } m["sop"] = { "Songe", 3130911, "bnt-lbn", "Latn", } m["soq"] = { "Kanasi", 11732656, "ngf-dag", "Latn", } m["sor"] = { "Somrai", 3123566, "cdc-est", "Latn", } m["sos"] = { "Seenku", 36274, "dmn-smg", } m["sou"] = { "ปักษ์ใต้", 56508, "tai-swe", "Thai", --sort_key = "Thai-sortkey", } m["sov"] = { "Sonsorolese", 13281, "poz-mic", "Latn", } m["sow"] = { "Sowanda", 7571845, "paa-brd", "Latn", } m["sox"] = { "Swo", 36604, "bnt-mka", "Latn", } m["soy"] = { "Miyobe", 35913, "alv-sav", "Latn", } m["soz"] = { "Temi", 13278, "bnt-kka", "Latn", } m["spb"] = { "Sepa (Indonesia)", 18603687, "poz-cma", "Latn", } m["spc"] = { "Sapé", 2888158, nil, "Latn", } m["spd"] = { "Saep", 7398312, "ngf-yag", "Latn", } m["spe"] = { "Sepa (New Guinea)", 7451725, "poz-ocw", "Latn", } m["spg"] = { "Sian", 7506806, "poz-bnn", } m["spi"] = { "Saponi", 3915418, "paa-lkp", "Latn", } m["spk"] = { "Sengo", 7450584, "paa-ndu", "Latn", } m["spl"] = { "Selepet", 7447917, "ngf-huo", "Latn", } m["spm"] = { "Sepen", 4701931, "paa-ram", "Latn", } m["spn"] = { "Sanapaná", 3033556, "sai-mas", "Latn", } m["spo"] = { "Spokane", 3493704, "sal", } m["spp"] = { "Supyire", 56284, "alv-sma", "Latn", } m["spr"] = { "Saparua", 7420921, "poz-cma", "Latn", } m["sps"] = { "Saposa", 3473187, "poz-ocw", } m["spt"] = { "Spiti Bhoti", 22080879, "sit-las", } m["spu"] = { "Sapuan", 7421168, "mkh-ban", } m["spv"] = { "Sambalpuri", 6433240, "inc-eas", "Orya", translit = "or-translit", ancestors = "or", } m["spx"] = { "South Picene", 36688, "itc-sbl", "Ital, Latn", -- Ital translit in [[Module:scripts/data]] display_text = { Latn = s["itc-Latn-displaytext"] }, strip_diacritics = { Latn = s["itc-Latn-stripdiacritics"], }, sort_key = { Latn = s["itc-Latn-sortkey"], }, } m["spy"] = { "Sabaot", 7395896, "sdv-kln", } m["sqa"] = { "Shama-Sambuga", 3914392, "nic-kmk", "Latn", } m["sqh"] = { "Shau", 3913925, "nic-jer", "Latn", } m["sqk"] = { "Albanian Sign Language", 4709168, "sgn", } m["sqm"] = { "Suma", 11008431, "gba-wes", } m["sqn"] = { "Susquehannock", 3505736, "iro-nor", } m["sqo"] = { "Sorkhei", 3491964, "ira-kms", } m["sqq"] = { "Sou", 16979751, "mkh-ban", } m["sqr"] = { "Siculo-Arabic", 1069489, "sem-arb", "Arab", } m["sqs"] = { "Sri Lankan Sign Language", 3915466, "sgn", } m["sqt"] = { "Soqotri", 13283, "sem-sar", "Arab, Latn", } m["squ"] = { "Squamish", 2484579, "sal", "Latn", } m["sra"] = { "Saruga", 7424699, "ngf-han", "Latn", } m["srb"] = { "Sora", 13284, "mun", "Sora, Latn, Orya", } m["sre"] = { "Sara", 33957, "day", } m["srf"] = { "Nafi", 6958174, "poz-ocw", } m["srg"] = { "Sulod", 7636489, "phi", } m["srh"] = { "Sarikoli", 33873, "ira-shr", "Latn, ug-Arab, Cyrl", } m["sri"] = { "Siriano", 3485264, "sai-tuc", "Latn", } m["srk"] = { "Serudung Murut", 7455497, "poz-san", } m["srl"] = { "Isirawa", 4203802, "paa-tkw", } m["srm"] = { "ซารามักกา", 33779, "crp", "Latn", ancestors = "en, pt", } m["srn"] = { "Sranan Tongo", 33989, "crp", "Latn", ancestors = "en", } m["srq"] = { "Sirionó", 3027953, "tup-gua", "Latn", } m["srr"] = { "Serer", 36284, "alv-fwo", "Latn", } m["srs"] = { "Tsuut'ina", 20825, "ath-nor", "Latn", } m["srt"] = { "Sauri", 7427547, "paa-egb", "Latn", } m["sru"] = { "Suruí", 7646993, "tup", "Latn", } m["srv"] = { "Waray Sorsogon", 18755610, "phi", "Latn", } m["srw"] = { "Serua", 14916905, "poz-cet", } m["srx"] = { "Sirmauri", 7530505, "him", } m["sry"] = { "Sera", 7452602, "poz-ocw", "Latn", } m["srz"] = { "Shahmirzadi", 12953126, "ira-msh", "fa-Arab", } m["ssb"] = { "Southern Sama", 3470594, "poz-sbj", "Latn", } m["ssc"] = { "Suba-Simbiti", 7630687, "bnt-lok", "Latn", } m["ssd"] = { "Siroi", 10771067, "ngf-rai", "Latn", } m["sse"] = { "Balangingi", 2880535, "poz-sbj", "Latn", } m["ssf"] = { "Thao", 676492, "map", "Latn", } m["ssg"] = { "Seimat", 3182581, "poz-aay", "Latn", } m["ssh"] = { "Shihhi Arabic", 56571, "sem-arb", "Arab", strip_diacritics = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, from = {u(0x0671)}, to = {u(0x0627)} }, } m["ssi"] = { "Sansi", 3309366, "inc-nwe", } m["ssj"] = { "Sausi", 7427605, "ngf-eva", "Latn", } m["ssk"] = { "Sunam", 11002210, "sit-kin", } m["ssl"] = { "Western Sisaala", 11154776, "nic-sis", "Latn", } m["ssm"] = { "Semnam", 7449713, "mkh-asl", "Latn", } m["sso"] = { "Sissano", 7530937, "poz-ocw", "Latn", } m["ssp"] = { "Spanish Sign Language", 3100814, "sgn", } m["ssq"] = { "So'a", 7572120, "poz-cet", "Latn", } m["ssr"] = { "Swiss-French Sign Language", 12953483, "sgn", } m["sss"] = { "Sô", 3082037, "mkh-kat", } m["sst"] = { "Sinasina", 7521813, "ngf-chw", "Latn", } m["ssu"] = { "Susuami", 7649752, "ngf-ang", "Latn", } m["ssv"] = { "Shark Bay", 7489783, "poz-vnn", "Latn", } m["ssx"] = { "Samberigi", 7409020, "ngf-eng", "Latn", } m["ssy"] = { "ซาโฮ", 36353, "cus-eas", "Latn, Ethi, Arab", } m["ssz"] = { "Sengseng", 7450601, "poz-ocw", "Latn", } m["stb"] = { "Northern Subanen", 12953892, "phi", "Latn", } m["std"] = { "Sentinelese", 568377, "qfa-unc", -- presumed Ongan } m["ste"] = { "Liana-Seti", 6539924, "poz-cma", } m["stf"] = { "Seta", 7456326, "paa-tor", "Latn", } m["stg"] = { "Trieng", 22694648, "mkh-ban", } m["sth"] = { "Shelta", 36705, "qfa-mix", "Latn", ancestors = "ga, en", } m["sti"] = { "Bulo Stieng", 15771431, "mkh-ban", "Khmr, Latn", } m["stj"] = { "Matya Samo", 10974879, "dmn-sam", "Latn", } m["stk"] = { "Arammba", 3502094, "paa-yam", "Latn", } m["stm"] = { "Setaman", 7456333, "ngf-okk", "Latn", } m["stn"] = { "Owa", 1324132, "poz-sls", "Latn", } m["sto"] = { "Stoney", 3033570, "sio-dkt", "Latn", } m["stp"] = { "Southeastern Tepehuan", 12953917, "azc-pim", "Latn", } m["stq"] = { "ฟรีเชียแบบซาเทอร์ลันท์", 27154, "gmw-fri", "Latn", } m["str"] = { "Saanich", 36444, "sal", "Latn", } m["sts"] = { "Shumashti", 33777, "inc-kun", "Arab", } m["stt"] = { "Budeh Stieng", 12953891, "mkh-ban", } m["stu"] = { "Samtao", 25559550, "mkh-pal", } m["stv"] = { "Silt'e", 33880, "sem-eth", "Ethi", } m["stw"] = { "Satawalese", 28477, "poz-mic", "Latn", } m["sty"] = { "Siberian Tatar", 4418344, "trk-kno", "Cyrl", } m["sua"] = { "Sulka", 7636341, "qfa-iso", -- Papuan; isolate in Glottolog and Palmer (2018) "Latn", } m["sub"] = { "Suku", 12953160, "bnt-yak", "Latn", } m["suc"] = { "Western Subanon", 16113894, "phi", "Latn", } m["sue"] = { "Suena", 7634386, "paa-bin", "Latn", } m["sug"] = { "Suganga", 7634706, "ngf-okk", "Latn", } m["sui"] = { "Suki", 2089984, "ngf-gsu", "Latn", } m["suk"] = { "Sukuma", 2638144, "bnt-tkm", "Latn", } -- suo (Bouni, Papua New Guinea, called Bouni-Bobe in Glottolog): not yet accepted; in the Sko/Skou family m["suq"] = { "Suri", 5364172, "sdv", } m["sur"] = { "Mwaghavul", 3440486, "cdc-wst", "Latn", } m["sus"] = { "Susu", 33990, "dmn-sya", "Latn", } m["sut"] = { "Subtiaba", 3915405, "omq", "Latn", } m["suv"] = { "Puroik", 56408, "sit-khb", "Beng, Deva, Latn", ancestors = "sit-khp-pro", } m["suw"] = { "Sumbwa", 7637055, "bnt-glb", "Latn", } m["sux"] = { "ซูเมอร์", 36790, "qfa-iso", "Xsux, Latn", } m["suy"] = { "Suyá", 3505859, "sai-nje", "Latn", } m["suz"] = { "Sunwar", 56549, "sit-kiw", "Deva, Sunu", translit = { Deva = "Deva-translit", }, } m["sva"] = { "Svan", 34067, "ccs", "Geor, Cyrl", translit = { Geor = "sva-translit", }, override_translit = true, } m["svb"] = { "Ulau-Suain", 7878769, "poz-ocw", "Latn", } m["svc"] = { "Vincentian Creole English", 3501785, "crp", "Latn", ancestors = "en", } m["sve"] = { "Serili", 7454834, "poz-tim", } m["svk"] = { "Slovakian Sign Language", 7541557, "sgn", } m["svm"] = { "Slavomolisano", 36254, "zls", "Latn", ancestors = "sh", } m["svs"] = { "Savosavo", 3130296, "qfa-dis", -- Papuan; isolate in Glottolog; in the tentative Central Solomons family by Ross (2005) and Pedrós -- (2015) "Latn", } m["svx"] = { "Skalvian", 3486125, "bat-wes", "Latn", } m["swb"] = { "Maore Comorian", 34075, "bnt-com", "Latn", sort_key = "bnt-com-sortkey", } m["swf"] = { "Sere", 7453056, "nic-ser", "Latn", } m["swg"] = { "Swabian", 327274, "gmw-hgm", "Latn", ancestors = "gsw", } m["swi"] = { "สุ่ย", 3112388, "qfa-kms", "Latn, Shui, Hani", sort_key = {Hani = "Hani-sortkey"}, } m["swj"] = { "Sira", 36599, "bnt-sir", "Latn", } m["swl"] = { "Swedish Sign Language", 36558, "sgn", } m["swm"] = { "Samosa", 7410037, "ngf-nwh", "Latn", } m["swn"] = { "Sokna", 2988323, "ber", } m["swo"] = { "Shanenawa", 61974839, "sai-pan", "Latn", } m["swp"] = { "Suau", 3502368, "poz-ocw", } m["swq"] = { "Sharwa", 56791, "cdc-cbm", "Latn", } m["swr"] = { "Saweru", 3474649, "paa-yaw", "Latn", } m["sws"] = { "Seluwasan", 7448845, "poz-cet", } m["swt"] = { "Sawila", 7428639, "paa-tap", "Latn", } m["swu"] = { "Suwawa", 7650588, "phi", } m["sww"] = { "Sowa", 7571843, "poz-vnn", "Latn", } m["swx"] = { "Suruahá", 3114402, "auf", } m["swy"] = { "Sarua", 56261, "cdc-est", "Latn", } m["sxb"] = { "Suba", 33916, "bnt-lok", "Latn", } m["sxc"] = { "Sicanian", 36335, "qfa-unc", -- extinct, lack of data; only names deciphered "Polyt", } m["sxe"] = { "Sighu", 36431, "bnt-kel", "Latn", } m["sxg"] = { "Shixing", 56337, "sit-nax", "Latn", } m["sxk"] = { "Southern Kalapuya", 3192122, "nai-klp", } m["sxl"] = { "Selonian", 36491, "bat-eas", "Latn", } m["sxm"] = { "ซำเร", 6583615, "mkh-pea", } m["sxn"] = { "Sangir", 25714758, "phi", "Latn", } m["sxo"] = { "Sorothaptic", 2762254, } m["sxr"] = { "Saaroa", 716599, "map", "Latn", } m["sxs"] = { "Sasaru", 3913384, "alv-yek", "Latn", } -- "sxu" "Upper Saxon" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["sxw"] = { "Saxwe Gbe", 7428892, "alv-pph", "Latn", } m["sya"] = { "Siang", 3482903, } m["syb"] = { "Central Subanen", 12953893, "phi", "Latn", } m["syc"] = { "ซีรีแอกคลาสสิก", 33538, "sem-are", "Syrc", strip_diacritics = {remove_diacritics = c.macron .. c.diaer .. c.macronbelow .. u(0x0730) .. "-" .. u(0x0748)}, } m["syi"] = { "Seki", 36547, "bnt-kel", "Latn", } m["syk"] = { "Sukur", 56292, "cdc-cbm", "Latn", } m["syl"] = { "สิเลฏ", 2044560, "inc-bas", "Sylo, Beng", ancestors = "inc-obn", translit = "syl-translit", } m["sym"] = { "Maya Samo", 10950421, "dmn-sam", "Latn", } m["syn"] = { "Senaya", 33914, "sem-nna", } m["syo"] = { "Suoy", 7641864, "mkh-pea", } m["sys"] = { "Sinyar", 56840, "csu", "Latn", } m["syw"] = { "Kagate", 12952538, "sit-kyk", "Deva", translit = { Deva = "Deva-translit", }, } m["syx"] = { "Osamayi", 7408415, "bnt-kel", "Latn", } m["syy"] = { "Al-Sayyid Bedouin Sign Language", 2915457, "sgn", } m["sza"] = { "Semelai", 3111827, "mkh-asl", "Latn", } m["szb"] = { "Ngalum", 11732516, "ngf-okk", "Latn", } m["szc"] = { "Semaq Beri", 7449119, "mkh-asl", } m["szd"] = { "Seru", 7455488, "poz-bnn", "Latn", } m["sze"] = { "Seze", 373683, "omv-mao", "Latn", } m["szg"] = { "Sengele", 7450555, "bnt-mon", "Latn", } m["szl"] = { "ไซลีเซีย", 30319, "zlw-lch", "Latn", ancestors = "zlw-opl", } m["szn"] = { "Sula", 3503403, "poz-cma", "Latn", } m["szp"] = { "Suabo", 7630429, "ngf-sbh", "Latn", } m["szv"] = { "Isubu", 35431, "bnt-saw", "Latn", } m["szw"] = { "Sawai", 3447258, "poz-hce", "Latn", } m["szy"] = { "ซากีซายา", 718269, "map", "Latn", } return require("Module:languages").finalizeData(m, "language") 6701cu074x8y4hxqtbxjyuvwt3jyy0y 5729125 5729119 2026-07-20T02:32:09Z Octahedron80 267 5729125 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["saa"] = { "Saba", 3914885, "cdc-est", "Latn", } m["sab"] = { "Buglere", 3368506, "cba", "Latn", } m["sac"] = { "Fox", 12714767, "alg-sfk", "Latn", } m["sad"] = { "Sandawe", 34016, "qfa-iso", "Latn", } m["sae"] = { "Sabanê", 3460478, "sai-nmk", "Latn", } m["saf"] = { "Safaliba", 36432, "nic-mre", "Latn", } m["sah"] = { "ซาคา", 34299, "trk-nsb", "Cyrl", translit = "sah-translit", override_translit = true, } m["saj"] = { "Sahu", 7399757, "paa-nha", "Latn", } m["sak"] = { "Sake", 36425, "bnt-kel", "Latn", } m["sam"] = { "Samaritan Aramaic", 56612, "sem-arw", "Samr", translit = "Samr-translit", -- Samr strip_diacritics, sort_key in [[Module:scripts/data]] } m["sao"] = { "Sause", 4409155, "paa-tkw", "Latn", } m["saq"] = { "Samburu", 56536, "sdv-lma", } m["sar"] = { "Saraveca", 3450556, "awd", "Latn", } m["sas"] = { "Sasak", 1294047, "poz-bss", "Latn, Bali, Java", } m["sat"] = { "สันถาลี", 33965, "mun", "Olck", translit = "Olck-translit", override_translit = true, } m["sau"] = { "Saleman", 7404262, "poz-cet", } m["sav"] = { "Saafi-Saafi", 36308, "alv-cng", "Arab, Latn", } m["saw"] = { "Sawi", 677064, "ngf-gaw", "Latn", } m["sax"] = { "Sa", 3460352, "poz-vnn", "Latn", } m["say"] = { "Saya", 3914431, "cdc-wst", "Latn", } m["saz"] = { "Saurashtra", 13292, "inc-wes", "Saur, Latn, Taml, Deva", translit = { Taml = "Taml-translit", Deva = "Deva-translit", }, ancestors = "inc-ogu", } m["sba"] = { "Ngambay", 2372207, "csu-sar", "Latn", } m["sbb"] = { "Simbo", 3484101, "poz-ocw", } m["sbc"] = { "Gele'", 3194847, "poz-aay", "Latn", } m["sbd"] = { "Southern Samo", 33122730, "dmn-sam", "Latn", } m["sbe"] = { "Saliba (New Guinea)", 3469737, "poz-ocw", } m["sbf"] = { "Shabo", 36342, "ssa", "Latn", } m["sbg"] = { "Seget", 7446237, "paa-wbh", "Latn", } m["sbh"] = { "Sori-Harengan", 36515, "poz-aay", "Latn", } m["sbi"] = { "Seti", 7456682, "paa-tor", "Latn", } m["sbj"] = { "Surbakhal", 759995, } m["sbk"] = { "Safwa", 4121160, "bnt-mby", "Latn", } m["sbl"] = { "Botolan Sambal", 4095195, "phi", "Latn", } m["sbm"] = { "Sagala", 11732610, "bnt-ruv", "Latn", } m["sbn"] = { "Sindhi Bhil", 25559289, "inc-snd", "Arab, Deva, Sind, Guru", translit = { Deva = "Deva-translit", Sind = "Sind-translit", Guru = "Guru-translit", }, ancestors = "sd", } m["sbo"] = { "Sabüm", 7396535, "mkh-asl", } m["sbp"] = { "Sangu (Tanzania)", 7418149, "bnt-bki", "Latn", } m["sbq"] = { "Sileibi", 7514337, "ngf-nso", "Latn", } m["sbr"] = { "Sembakung Murut", 7449148, "poz-san", } m["sbs"] = { "Subiya", 6442073, "bnt-bot", "Latn", } m["sbt"] = { "Kimki", 6410160, "paa-pau", } m["sbu"] = { "Stod Bhoti", 15622700, "sit-las", } m["sbv"] = { "Sabine", 65455885, "itc-sbl", "Latn", display_text = s["itc-Latn-displaytext"], strip_diacritics = s["itc-Latn-stripdiacritics"], sort_key = s["itc-Latn-sortkey"], } m["sbw"] = { "Simba", 36430, "bnt-tso", "Latn", } m["sbx"] = { "Seberuang", 12473470, "poz-mly", } m["sby"] = { "Soli", 7557754, "bnt-bot", "Latn", } m["sbz"] = { "Sara Kaba", 25559318, "csu-kab", "Latn", } m["scb"] = { "Chut", 2967709, "mkh-vie", "Latn", } m["sce"] = { "ตงเซียง", 32947, "xgn-shr", "Arab, Latn", } m["scf"] = { "San Miguel Creole French", 12953094, "crp", "Latn", ancestors = "gcf", sort_key = s["roa-oil-sortkey"], } m["scg"] = { "Sanggau", 12473466, "day", } m["sch"] = { "Sakachep", 37054, "tbq-kuk", } m["sci"] = { "Sri Lankan Creole Malay", 1089151, "crp", "Latn", ancestors = "ms", } m["sck"] = { "Sadri", 765922, "inc-bih", "Deva, Kthi", translit = { Deva = "Deva-translit", Kthi = "Kthi-translit", }, } m["scl"] = { "Shina", 1353320, "inc-shn", "ur-Arab, Deva", translit = { Deva = "Deva-translit", }, } m["scn"] = { "ซิซิลี", 33973, "roa-itr", "Latn", } m["sco"] = { "สกอต", 14549, "gmw-ang", "Latn", ancestors = "gmw-msc", } m["scp"] = { "Yolmo", 22662107, "sit-kyk", "Deva", translit = { Deva = "Deva-translit", }, } m["scq"] = { "สะโอจ", 6583617, "mkh-pea", } m["scs"] = { "North Slavey", 20628, "den", "Latn", } m["scu"] = { "Shumcho", 22077739, "sit-kin", } m["scv"] = { "Sheni", 11015820, "nic-jer", "Latn", ancestors = "zir", } m["scw"] = { "Sha", 3438816, "cdc-wst", "Latn", } m["scx"] = { "Sicel", 36667, "itc", "Polyt", -- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["scz"] = { "Shetland", 3069598, "qfa-mix", "Latn", ancestors = "nrn, gmw-msc", standard_chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzØøÖüÜü0123456789" .. c.punc, } m["sda"] = { "Toraja-Sa'dan", 36673, "poz-ssw", "Latn", } m["sdb"] = { "Shabak", 3289596, "ira-zgr", ancestors = "hac", } m["sdc"] = { "ซัสซารี", 845441, "roa-itr", "Latn", } m["sde"] = { "Surubu", 3913336, "nic-kau", "Latn", } m["sdf"] = { "Sarli", 7424256, "ira-zgr", ancestors = "hac", } m["sdg"] = { "Savi", 3474654, "inc-dng", } m["sdh"] = { "Southern Kurdish", 1496597, "ku", "ku-Arab", translit = "sdh-translit", strip_diacritics = {remove_diacritics = c.kasra .. c.sukun}, } m["sdj"] = { "Suundi", 7650407, "bnt-kng", "Latn", } m["sdk"] = { "Sos Kundi", 7563811, "paa-ndu", "Latn", } m["sdl"] = { "Saudi Arabian Sign Language", 3504160, "sgn", } m["sdm"] = { "Semandang", 7449012, "day", } m["sdn"] = { "Gallurese", 612220, "roa-itr", "Latn", ancestors = "co", } m["sdo"] = { "Bukar-Sadung Bidayuh", 2927799, "day", "Latn", } m["sdp"] = { "Sherdukpen", 7494785, "sit-khm", } m["sdr"] = { "Oraon Sadri", 12953860, "inc-bih", } m["sds"] = { "เบอร์เบอร์แบบตูนีเซีย", 5329732, "ber", } m["sdu"] = { "Sarudu", 7424700, "poz-cet", } m["sdx"] = { "Sibu Melanau", 18642842, "poz-bnn", } m["sea"] = { "เซอไม", 3135426, "mkh-asl", "Latn", } -- seb is a duplicate code of spp m["sec"] = { "Sechelt", 7442898, "sal", "Latn", } m["sed"] = { "Sedang", 56448, "mkh-nbn", "Latn", } m["see"] = { "Seneca", 1185133, "iro-nor", "Latn", } m["sef"] = { "Cebaara Senoufo", 10975121, "alv-snr", "Latn", } m["seg"] = { "Segeju", 17584599, "bnt-mij", "Latn", } m["seh"] = { "Sena", 2964008, "bnt-sna", "Latn", } m["sei"] = { "Seri", 36583, "qfa-iso", "Latn", } m["sej"] = { "Sene", 7450252, "ngf-huo", "Latn", } m["sek"] = { "Sekani", 28562, "ath-nor", "Latn", } m["sen"] = { "Nanerigé Sénoufo", 36002, "alv-sma", } m["seo"] = { "Suarmin", 7630513, "qfa-dis", -- Papuan; isolate or unclassified in Glottolog; Sepik language in Foley (2018) "Latn", } m["sep"] = { "Sìcìté Sénoufo", 56787, "alv-sma", } m["seq"] = { "Senara Sénoufo", 35210, "alv-snr", } m["ser"] = { "Serrano", 3479942, "azc-tak", "Latn", } m["ses"] = { "Koyraboro Senni", 35655, "son", "Latn", } m["set"] = { "Sentani", 3441672, "paa-sen", "Latn", } m["seu"] = { "Serui-Laut", 7455503, "poz-hce", "Latn", } m["sev"] = { "Nyarafolo Senoufo", 36306, "alv-snr", } m["sew"] = { "Sewa Bay", 7458126, "poz-ocw", } m["sey"] = { "Secoya", 3477218, "sai-tuc", "Latn", } m["sez"] = { "Senthang Chin", 7451223, "tbq-kuk", } m["sfb"] = { "French Belgian Sign Language", 3217332, "sgn", } m["sfe"] = { "Eastern Subanun", 63311321, "phi", "Latn", } m["sfm"] = { "Small Flowery Miao", 7542773, "hmn", } m["sfs"] = { "South African Sign Language", 3322093, "sgn", } m["sfw"] = { "Sehwi", 36593, "alv-ctn", "Latn", } m["sga"] = { "ไอริชเก่า", 35308, "cel-gae", "Latn, Ogam", strip_diacritics = {remove_diacritics = c.dotabove .. c.diaer .. "·"}, sort_key = "sga-sortkey", standard_chars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíLlMmNnOoÓóPpRrSsTtUuÚú0123456789ᚁᚂᚃᚄᚅᚆᚇᚈᚉᚊᚋᚌᚍᚎᚏᚐᚑᚒᚓᚔ" .. c.punc, } m["sgb"] = { "Mag-Anchi Ayta", 4356243, "phi", "Latn", } m["sgc"] = { "Kipsigis", 56339, "sdv-nma", } m["sgd"] = { "ซูรีเกาโนน", 34140, "phi", "Latn", } m["sge"] = { "Segai", 7446180, } m["sgg"] = { "Swiss-German Sign Language", 35150, "sgn", } m["sgh"] = { "Shughni", 34053, "ira-shr", "Latn, Cyrl", translit = "sgh-translit", override_translit = true, } m["sgi"] = { "Suga", 36475, "nic-mmb", "Latn", } m["sgk"] = { "Sangkong", 2945610, "tbq-bis", } m["sgm"] = { "Singa", 7522797, "bnt-lok", "Latn", } m["sgp"] = { "Singpho", 7524158, "sit-jnp", "Latn", } m["sgr"] = { "Sangisari", 3394363, "ira-kms", "Arab", } m["sgs"] = { "Samogitian", 213434, "bat-eas", "Latn", wikimedia_codes = "bat-smg", ancestors = "olt", display_text = "lt-common", strip_diacritics = "lt-common", sort_key = "lt-common", } m["sgt"] = { "Brokpake", 56603, "sit-tib", "Tibt", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["sgu"] = { "Salas", 7403694, "poz-cma", } m["sgw"] = { "Sebat Bet Gurage", 2707343, "sem-eth", "Ethi", } m["sgx"] = { "Sierra Leone Sign Language", 7511448, "sgn", } m["sgy"] = { "Sanglechi", 3472220, "ira-sgi", } m["sgz"] = { "Sursurunga", 36511, "poz-ocw", "Latn", } m["sha"] = { "Shall-Zwall", 3915355, "nic-beo", } m["shb"] = { "Ninam", 3436586, "sai-ynm", "Latn", } m["shc"] = { "Sonde", 7560881, "bnt-pen", "Latn", } m["shd"] = { "Kundal Shahi", 6444265, "inc-shn", "Arab", } m["she"] = { "Sheko", 3183355, "omv-diz", } m["shg"] = { "Shua", 3501092, "khi-kal", "Latn", } m["shh"] = { "Shoshone", 33811, "azc-num", "Latn", } m["shi"] = { "Tashelhit", 34152, "ber", "Latn, Arab, Tfng, Hebr", ancestors = "shi-med", translit = { Tfng = "Tfng-translit", }, strip_diacritics = { Arab = "ar-stripdiacritics", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["shj"] = { "Shatt", 56344, "sdv-daj", } m["shk"] = { "Shilluk", 36486, "sdv-lon", "Latn", } m["shl"] = { "Shendu", 22074616, "tbq-kuk", } m["shm"] = { "Shahrudi", 7462280, "xme-ttc", "fa-Arab, Latn", ancestors = "xme-ttc-cen", } m["shn"] = { "ไทใหญ่", 56482, "tai-swe", "Mymr", translit = "shn-translit", sort_key = { from = {"[ၢႃ]", "ဵ", "ႅ", "ႇ", "ႈ", "း", "ႉ", "ႊ"}, to = {"ာ", "ေ", "ႄ", "႒", "႓", "႔", "႕", "႖"} }, } m["sho"] = { "Shanga", 3913931, "dmn-bbu", "Latn", } m["shp"] = { "Shipibo-Conibo", 2671988, "sai-pan", "Latn", } m["shq"] = { "Sala", 10961665, "bnt-bot", "Latn", } m["shr"] = { "Shi", 3481999, "bnt-shh", "Latn", } m["shs"] = { "Shuswap", 3482685, "sal", "Latn", } m["sht"] = { "Shasta", 56396, "nai-shs", "Latn", } m["shu"] = { "Chadian Arabic", 56497, "sem-arb", "Arab", strip_diacritics = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, from = {u(0x0671)}, to = {u(0x0627)} }, } m["shv"] = { "Shehri", 33445, "sem-sar", "Arab, Latn", } m["shw"] = { "Shwai", 36527, "alv-hei", } m["shx"] = { "She", 2605689, "hmn", } m["shy"] = { "Tachawit", 33274, "ber", "Tfng, Arab, Latn", translit = "Tfng-translit", } m["shz"] = { "Syenara Senoufo", 36316, "alv-snr", } m["sia"] = { "Akkala Sami", 35241, "smi", "Cyrl, Latn", translit = "sia-translit", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = "'ˈ"}, } m["sib"] = { "Sebop", 7442799, "poz-swa", "Latn", } m["sid"] = { "ซีดามา", 33786, "cus-hec", "Latn, Ethi", } m["sie"] = { "Simaa", 7517329, "bnt-kav", "Latn", } m["sif"] = { "Siamou", 36252, } m["sig"] = { "Paasaal", 36426, "nic-sis", "Latn", } m["sih"] = { "Sîshëë", 8072753, "poz-cln", "Latn", } m["sii"] = { "Shom Peng", 1039346, "aav", } m["sij"] = { "Numbami", 3346277, "poz-ocw", "Latn", } m["sik"] = { "Sikiana", 3443734, "sai-prk", "Latn", } m["sil"] = { "Tumulung Sisaala", 25383006, "nic-sis", "Latn", } m["sim"] = { "Seim", 7446815, "paa-spk", "Latn", } m["sip"] = { "สิกขิม", 35285, "sit-tib", "Tibt", ancestors = "xct", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["siq"] = { "Sonia", 7561770, "ngf-bos", "Latn", } m["sir"] = { "Siri", 3438729, "cdc-wst", "Latn", } m["sis"] = { "Siuslaw", 2315424, } m["siu"] = { "Sinagen", 7521655, "paa-tor", "Latn", } m["siv"] = { "Sumariup", 7636966, "paa-spk", "Latn", } m["siw"] = { "Siwai", 7532519, "paa-sbo", "Latn", } m["six"] = { "Sumau", 7637021, "ngf-pek", "Latn", } m["siy"] = { "Sivandi", 13269, "xme", "fa-Arab, Latn", ancestors = "xme-mid", } m["siz"] = { "Siwi", 36814, "ber", "Tfng, Arab, Latn", } m["sja"] = { "Epena", 3055682, "sai-chc", "Latn", } m["sjb"] = { "Sajau Basap", 4684353, "poz-bnn", } m["sjc"] = { "Shaojiang Min", 3431451, "zhx-inm", "Hants", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["sjd"] = { "ซามีแบบกิลดิน", 33656, "smi", "Cyrl", translit = "sjd-translit", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = "'ˈ"}, } m["sje"] = { "ซามีแบบปีเต", 56314, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.macron .. "'ˈ"}, sort_key = "sje-sortkey", } m["sjg"] = { "Assangori", 3502255, "sdv-tmn", } m["sjk"] = { "Kemi Sami", 35871, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = "'ˈ"}, } m["sjl"] = { "Miji", 6845470, "sit-hrs", } m["sjm"] = { "Mapun", 3287253, "poz-sbj", "Latn", } m["sjn"] = { "ซินดาริน", 56437, "art", "Latn, Teng", type = "appendix-constructed", } m["sjo"] = { "Xibe", 13223, "tuw-jrc", "sjo-Mong", ancestors = "mnc", } m["sjp"] = { "Surjapuri", 7645351, "inc-krd", "Deva, as-Beng, Kthi", translit = { Deva = "Deva-translit", ["as-Beng"] = "Beng-translit", Kthi = "Kthi-translit", }, } m["sjr"] = { "Siar-Lak", 3482907, "poz-ocw", } m["sjs"] = { "Senhaja de Srair", 56744, "ber", "Latn, Tfng, Arab", strip_diacritics = { Arab = "ar-stripdiacritics", }, translit = { Tfng = "Tfng-translit", } } m["sjt"] = { "Ter Sami", 36656, "smi", "Cyrl, Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = "'ˈ"}, translit = "sjt-translit", } m["sju"] = { "Ume Sami", 56415, "smi", "Latn", strip_diacritics = {remove_diacritics = c.macron .. "'ˈ"}, display_text = { from = {"'"}, to = {"ˈ"} }, sort_key = "sju-sortkey", } m["sjw"] = { "Shawnee", 2669206, "alg", "Latn", } m["ska"] = { "Skagit", 25559652, "sal", "Latn", } m["skb"] = { "แสก", 36437, "tai-nor", "Thai", --sort_key = "Thai-sortkey", } m["skc"] = { "Ma Manda", 6720783, "ngf-fin", "Latn", } m["skd"] = { "Southern Sierra Miwok", 3492334, "nai-utn", "Latn", } m["ske"] = { "Ske", 7534244, "poz-vnn", "Latn", } m["skf"] = { "Mekéns", 3304806, "tup", "Latn", } m["skh"] = { "Sikule", 3121081, "poz-nws", } m["ski"] = { "Sika", 33960, "poz-cet", "Latn", } m["skj"] = { -- compare 'ths' "Seke", 30226846, "sit-tam", } m["skk"] = { "Sok", 12953887, "mkh-ban", } m["skm"] = { "Sakam", 6448517, "ngf-fin", "Latn", } m["skn"] = { "Kolibugan Subanon", 18755617, "phi", "Latn", } m["sko"] = { "Seko Tengah", 15613270, "poz", } m["skp"] = { "Sekapan", 7447132, "poz-bnn", } m["skq"] = { "Sininkere", 3914896, "dmn-man", "Latn", } m["skr"] = { "Saraiki", 33902, "inc-pan", "pa-Arab, Mult, Deva", ancestors = "lah", strip_diacritics = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna}, translit = { ["pa-Arab"] = "pa-Arab-translit", Deva = "Deva-translit", Mult = "Mult-translit", }, } m["sks"] = { "ไมยา", 12952760, "ngf-kau", "Latn", } m["skt"] = { "Sakata", 36691, "bnt-bnm", "Latn", } m["sku"] = { "Sakao", 3298421, "poz-vnn", "Latn", } m["skv"] = { "Skou", 3915200, "paa-msk", "Latn", } m["skw"] = { "Skepi Creole Dutch", 2522153, "crp", "Latn", ancestors = "nl", } m["skx"] = { "Seko Padang", 15613282, "poz-ssw", "Latn", } m["sky"] = { "ซีกายานา", 7439242, "poz-pnp", "Latn", } m["skz"] = { "Sekar", 7447136, "poz-cet", } m["slc"] = { "Saliba (Colombia)", 3441097, nil, "Latn", } m["sld"] = { "Sisaala", 11020264, "nic-sis", "Latn", } m["sle"] = { "Sholaga", 7500203, "dra-kan", "Knda", -- Knda translit in [[Module:scripts/data]] } m["slf"] = { "Swiss-Italian Sign Language", 12953479, "sgn", } m["slg"] = { "Selungai Murut", 7448844, "poz-san", } m["slh"] = { "Southern Puget Sound Salish", 12642471, "sal", "Latn", } -- "sli" "Silesian German" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["slj"] = { "Salumá", 7406296, "sai-prk", "Latn", } m["sll"] = { "Salt-Yui", 7405785, "ngf-chw", "Latn", } m["slm"] = { "ซามาแบบปางูตารัน", 3362086, "poz-sbj", "Latn", } m["sln"] = { "Salinan", 1568938, "qfa-iso", "Latn", } m["slp"] = { "Lamaholot", 6480777, "poz-cet", "Latn", } m["slr"] = { "ซาลาร์", 33963, "trk-ogz", "Arab, Latn", ancestors = "trk-eog", } m["sls"] = { "Singapore Sign Language", 7512563, "sgn", } m["slt"] = { "Sila", 7514021, "tbq-sil", } m["slu"] = { "Selaru", 7447500, "poz-cet", "Latn", } m["slw"] = { "Sialum", 7506694, "ngf-huo", "Latn", } m["slx"] = { "Salampasu", 7403607, "bnt-lun", "Latn", } m["sly"] = { "Selayar", 7447520, "poz-ssw", } m["slz"] = { "Ma'ya", 2291492, "poz-hce", "Latn", } m["sma"] = { "ซามีใต้", 13293, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = "'ˈ"}, sort_key = "sma-sortkey", } m["smb"] = { "Simbari", 7517427, "ngf-ang", "Latn", } m["smc"] = { "Som", 7559081, "ngf-fin", "Latn", } m["smd"] = { "Sama", 6407456, "bnt-kmb", "Latn", } m["smf"] = { "Auwe", 3502072, "paa-brd", "Latn", ancestors = "dnd", } m["smg"] = { "Simbali", 56692, "paa-bng", "Latn", } m["smh"] = { "Samei", 7409269, "tbq-axi", } m["smj"] = { "ซามีแบบลูเล", 56322, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.macron .. "'ˈ"}, sort_key = "smj-sortkey", } m["smk"] = { "โบลีเนา", 2669235, "phi", "Latn, Tglg", } m["sml"] = { "ซามาตอนกลาง", 3470593, "poz-sbj", "Latn", } m["smm"] = { "Musasa", 6940122, "inc-eas", ancestors = "bh", } m["smn"] = { "ซามีแบบอีนารี", 33462, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.dotbelow .. "'ˈ"}, sort_key = "smn-sortkey", } m["smp"] = { "Samaritan Hebrew", 56502, "sem-can", "Samr", translit = "Samr-translit", -- Samr strip_diacritics, sort_key in [[Module:scripts/data]] ancestors = "hbo", } m["smq"] = { "Samo", 7409884, "ngf-est", "Latn", } m["smr"] = { "Simeulue", 2992833, "poz-nws", "Latn", } m["sms"] = { "Skolt Sami", 13271, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.dotbelow .. "'ˈ"}, sort_key = "sms-sortkey", } m["smt"] = { "Simte", 7521268, "tbq-kuk", } m["smu"] = { "สมราย", 6583612, "mkh-pea", } m["smv"] = { "Samvedi", 6345632, "inc-sou", } m["smw"] = { "Sumbawa", 3182585, "poz-bss", "Latn", } m["smx"] = { "Samba", 11120157, "bnt-pen", "Latn", } m["smy"] = { "Semnani", 14531212, "xme", "fa-Arab, Latn", } m["smz"] = { "Simeku", 7517534, "paa-sbo", "Latn", } m["snb"] = { "Sebuyau", 7442836, "poz-mly", "Latn", } m["snc"] = { "Sinaugoro", 4170719, "poz-ocw", "Latn", } m["sne"] = { "Bau Bidayuh", 2891938, "day", "Latn", } m["snf"] = { "Noon", 36304, "alv-cng", "Latn", } m["sng"] = { "Sanga (Congo)", 3438316, "bnt-lub", "Latn", } m["sni"] = { "Sensi", 7451029, "sai-pan", "Latn", } m["snj"] = { "Riverain Sango", 25559751, "crp", "Latn", ancestors = "ngb", } m["snk"] = { "Soninke", 36660, "dmn-snb", "Latn", } m["snl"] = { "Sangil", 3472206, "phi", "Latn", } m["snm"] = { "Southern Ma'di", 15637273, "csu-mma", } m["snn"] = { "Siona", 3485116, "sai-tuc", "Latn", } m["sno"] = { "Snohomish", 25559662, "sal", "Latn", } m["snp"] = { "Siane", 7506812, "ngf-kag", "Latn", } m["snq"] = { "Sangu (Gabon)", 36609, "bnt-sir", "Latn", } m["snr"] = { "Sihan", 7513400, "ngf-gum", "Latn", } m["sns"] = { "Nahavaq", 2160435, "poz-vnc", "Latn", } m["snu"] = { "Senggi", 7929052, "paa-brd", "Latn", } m["snv"] = { "Sa'ban", 3474891, "poz-swa", "Latn", } m["snw"] = { "Selee", 36272, "alv-ntg", "Latn", } m["snx"] = { "Sam", 7408387, "ngf-min", "Latn", } m["sny"] = { "Saniyo-Hiyewe", 7418302, "paa-spk", "Latn", } m["snz"] = { "Kou", 7525035, -- also 4803639 "ngf-eva", "Latn", } m["soa"] = { "โซ่ง", 7709159, "tai-swe", "Tavt, Thai", --translit = "Tavt-translit", sort_key = { from = {"([ꪵꪶꪹꪻꪼ])([ꪀ-ꪯ])", "([เแโใไ])([ก-ฮ])"}, to = {"%2%1", "%2%1"} }, } m["sob"] = { "Sobei", 3121035, "poz-ocw", "Latn", } m["soc"] = { "Soko", 7555138, "bnt-ske", "Latn", } m["sod"] = { "Songoora", 7561296, "bnt-lgb", "Latn", } m["soe"] = { "Songomeno", 5713543, "bnt-bsh", "Latn", } m["sog"] = { "Sogdian", 205979, "ira-sgc", "Sogd, Mani, Syrc, Sogo", translit = { Sogd = "Sogd-translit", -- Mani translit in [[Module:scripts/data]] Sogo = "Sogo-translit", }, } m["soh"] = { "Aka (Sudan)", 3450949, "sdv-eje", "Latn", } m["soi"] = { "Sonha", 12953890, "inc-eas", } m["sok"] = { "Sokoro", 3441303, "cdc-est", "Latn", } m["sol"] = { "Solos", 3489591, "poz-ocw", } m["soo"] = { "Nsong", 12953148, "bnt-bdz", "Latn", } m["sop"] = { "Songe", 3130911, "bnt-lbn", "Latn", } m["soq"] = { "Kanasi", 11732656, "ngf-dag", "Latn", } m["sor"] = { "Somrai", 3123566, "cdc-est", "Latn", } m["sos"] = { "Seenku", 36274, "dmn-smg", } m["sou"] = { "ปักษ์ใต้", 56508, "tai-swe", "Thai", --sort_key = "Thai-sortkey", } m["sov"] = { "Sonsorolese", 13281, "poz-mic", "Latn", } m["sow"] = { "Sowanda", 7571845, "paa-brd", "Latn", } m["sox"] = { "Swo", 36604, "bnt-mka", "Latn", } m["soy"] = { "Miyobe", 35913, "alv-sav", "Latn", } m["soz"] = { "Temi", 13278, "bnt-kka", "Latn", } m["spb"] = { "Sepa (Indonesia)", 18603687, "poz-cma", "Latn", } m["spc"] = { "Sapé", 2888158, nil, "Latn", } m["spd"] = { "Saep", 7398312, "ngf-yag", "Latn", } m["spe"] = { "Sepa (New Guinea)", 7451725, "poz-ocw", "Latn", } m["spg"] = { "Sian", 7506806, "poz-bnn", } m["spi"] = { "Saponi", 3915418, "paa-lkp", "Latn", } m["spk"] = { "Sengo", 7450584, "paa-ndu", "Latn", } m["spl"] = { "Selepet", 7447917, "ngf-huo", "Latn", } m["spm"] = { "Sepen", 4701931, "paa-ram", "Latn", } m["spn"] = { "Sanapaná", 3033556, "sai-mas", "Latn", } m["spo"] = { "Spokane", 3493704, "sal", } m["spp"] = { "Supyire", 56284, "alv-sma", "Latn", } m["spr"] = { "Saparua", 7420921, "poz-cma", "Latn", } m["sps"] = { "Saposa", 3473187, "poz-ocw", } m["spt"] = { "Spiti Bhoti", 22080879, "sit-las", } m["spu"] = { "Sapuan", 7421168, "mkh-ban", } m["spv"] = { "Sambalpuri", 6433240, "inc-eas", "Orya", translit = "or-translit", ancestors = "or", } m["spx"] = { "South Picene", 36688, "itc-sbl", "Ital, Latn", -- Ital translit in [[Module:scripts/data]] display_text = { Latn = s["itc-Latn-displaytext"] }, strip_diacritics = { Latn = s["itc-Latn-stripdiacritics"], }, sort_key = { Latn = s["itc-Latn-sortkey"], }, } m["spy"] = { "Sabaot", 7395896, "sdv-kln", } m["sqa"] = { "Shama-Sambuga", 3914392, "nic-kmk", "Latn", } m["sqh"] = { "Shau", 3913925, "nic-jer", "Latn", } m["sqk"] = { "Albanian Sign Language", 4709168, "sgn", } m["sqm"] = { "Suma", 11008431, "gba-wes", } m["sqn"] = { "Susquehannock", 3505736, "iro-nor", } m["sqo"] = { "Sorkhei", 3491964, "ira-kms", } m["sqq"] = { "Sou", 16979751, "mkh-ban", } m["sqr"] = { "Siculo-Arabic", 1069489, "sem-arb", "Arab", } m["sqs"] = { "Sri Lankan Sign Language", 3915466, "sgn", } m["sqt"] = { "Soqotri", 13283, "sem-sar", "Arab, Latn", } m["squ"] = { "Squamish", 2484579, "sal", "Latn", } m["sra"] = { "Saruga", 7424699, "ngf-han", "Latn", } m["srb"] = { "Sora", 13284, "mun", "Sora, Latn, Orya", } m["sre"] = { "Sara", 33957, "day", } m["srf"] = { "Nafi", 6958174, "poz-ocw", } m["srg"] = { "Sulod", 7636489, "phi", } m["srh"] = { "Sarikoli", 33873, "ira-shr", "Latn, ug-Arab, Cyrl", } m["sri"] = { "Siriano", 3485264, "sai-tuc", "Latn", } m["srk"] = { "Serudung Murut", 7455497, "poz-san", } m["srl"] = { "Isirawa", 4203802, "paa-tkw", } m["srm"] = { "ซารามักกา", 33779, "crp", "Latn", ancestors = "en, pt", } m["srn"] = { "ซรานันโตโง", 33989, "crp", "Latn", ancestors = "en", } m["srq"] = { "Sirionó", 3027953, "tup-gua", "Latn", } m["srr"] = { "Serer", 36284, "alv-fwo", "Latn", } m["srs"] = { "Tsuut'ina", 20825, "ath-nor", "Latn", } m["srt"] = { "Sauri", 7427547, "paa-egb", "Latn", } m["sru"] = { "Suruí", 7646993, "tup", "Latn", } m["srv"] = { "Waray Sorsogon", 18755610, "phi", "Latn", } m["srw"] = { "Serua", 14916905, "poz-cet", } m["srx"] = { "Sirmauri", 7530505, "him", } m["sry"] = { "Sera", 7452602, "poz-ocw", "Latn", } m["srz"] = { "Shahmirzadi", 12953126, "ira-msh", "fa-Arab", } m["ssb"] = { "Southern Sama", 3470594, "poz-sbj", "Latn", } m["ssc"] = { "Suba-Simbiti", 7630687, "bnt-lok", "Latn", } m["ssd"] = { "Siroi", 10771067, "ngf-rai", "Latn", } m["sse"] = { "Balangingi", 2880535, "poz-sbj", "Latn", } m["ssf"] = { "Thao", 676492, "map", "Latn", } m["ssg"] = { "Seimat", 3182581, "poz-aay", "Latn", } m["ssh"] = { "Shihhi Arabic", 56571, "sem-arb", "Arab", strip_diacritics = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, from = {u(0x0671)}, to = {u(0x0627)} }, } m["ssi"] = { "Sansi", 3309366, "inc-nwe", } m["ssj"] = { "Sausi", 7427605, "ngf-eva", "Latn", } m["ssk"] = { "Sunam", 11002210, "sit-kin", } m["ssl"] = { "Western Sisaala", 11154776, "nic-sis", "Latn", } m["ssm"] = { "Semnam", 7449713, "mkh-asl", "Latn", } m["sso"] = { "Sissano", 7530937, "poz-ocw", "Latn", } m["ssp"] = { "Spanish Sign Language", 3100814, "sgn", } m["ssq"] = { "So'a", 7572120, "poz-cet", "Latn", } m["ssr"] = { "Swiss-French Sign Language", 12953483, "sgn", } m["sss"] = { "Sô", 3082037, "mkh-kat", } m["sst"] = { "Sinasina", 7521813, "ngf-chw", "Latn", } m["ssu"] = { "Susuami", 7649752, "ngf-ang", "Latn", } m["ssv"] = { "Shark Bay", 7489783, "poz-vnn", "Latn", } m["ssx"] = { "Samberigi", 7409020, "ngf-eng", "Latn", } m["ssy"] = { "ซาโฮ", 36353, "cus-eas", "Latn, Ethi, Arab", } m["ssz"] = { "Sengseng", 7450601, "poz-ocw", "Latn", } m["stb"] = { "Northern Subanen", 12953892, "phi", "Latn", } m["std"] = { "Sentinelese", 568377, "qfa-unc", -- presumed Ongan } m["ste"] = { "Liana-Seti", 6539924, "poz-cma", } m["stf"] = { "Seta", 7456326, "paa-tor", "Latn", } m["stg"] = { "Trieng", 22694648, "mkh-ban", } m["sth"] = { "Shelta", 36705, "qfa-mix", "Latn", ancestors = "ga, en", } m["sti"] = { "Bulo Stieng", 15771431, "mkh-ban", "Khmr, Latn", } m["stj"] = { "Matya Samo", 10974879, "dmn-sam", "Latn", } m["stk"] = { "Arammba", 3502094, "paa-yam", "Latn", } m["stm"] = { "Setaman", 7456333, "ngf-okk", "Latn", } m["stn"] = { "Owa", 1324132, "poz-sls", "Latn", } m["sto"] = { "Stoney", 3033570, "sio-dkt", "Latn", } m["stp"] = { "Southeastern Tepehuan", 12953917, "azc-pim", "Latn", } m["stq"] = { "ฟรีเชียแบบซาเทอร์ลันท์", 27154, "gmw-fri", "Latn", } m["str"] = { "Saanich", 36444, "sal", "Latn", } m["sts"] = { "Shumashti", 33777, "inc-kun", "Arab", } m["stt"] = { "Budeh Stieng", 12953891, "mkh-ban", } m["stu"] = { "Samtao", 25559550, "mkh-pal", } m["stv"] = { "Silt'e", 33880, "sem-eth", "Ethi", } m["stw"] = { "Satawalese", 28477, "poz-mic", "Latn", } m["sty"] = { "Siberian Tatar", 4418344, "trk-kno", "Cyrl", } m["sua"] = { "Sulka", 7636341, "qfa-iso", -- Papuan; isolate in Glottolog and Palmer (2018) "Latn", } m["sub"] = { "Suku", 12953160, "bnt-yak", "Latn", } m["suc"] = { "Western Subanon", 16113894, "phi", "Latn", } m["sue"] = { "Suena", 7634386, "paa-bin", "Latn", } m["sug"] = { "Suganga", 7634706, "ngf-okk", "Latn", } m["sui"] = { "Suki", 2089984, "ngf-gsu", "Latn", } m["suk"] = { "Sukuma", 2638144, "bnt-tkm", "Latn", } -- suo (Bouni, Papua New Guinea, called Bouni-Bobe in Glottolog): not yet accepted; in the Sko/Skou family m["suq"] = { "Suri", 5364172, "sdv", } m["sur"] = { "Mwaghavul", 3440486, "cdc-wst", "Latn", } m["sus"] = { "Susu", 33990, "dmn-sya", "Latn", } m["sut"] = { "Subtiaba", 3915405, "omq", "Latn", } m["suv"] = { "Puroik", 56408, "sit-khb", "Beng, Deva, Latn", ancestors = "sit-khp-pro", } m["suw"] = { "Sumbwa", 7637055, "bnt-glb", "Latn", } m["sux"] = { "ซูเมอร์", 36790, "qfa-iso", "Xsux, Latn", } m["suy"] = { "Suyá", 3505859, "sai-nje", "Latn", } m["suz"] = { "Sunwar", 56549, "sit-kiw", "Deva, Sunu", translit = { Deva = "Deva-translit", }, } m["sva"] = { "Svan", 34067, "ccs", "Geor, Cyrl", translit = { Geor = "sva-translit", }, override_translit = true, } m["svb"] = { "Ulau-Suain", 7878769, "poz-ocw", "Latn", } m["svc"] = { "Vincentian Creole English", 3501785, "crp", "Latn", ancestors = "en", } m["sve"] = { "Serili", 7454834, "poz-tim", } m["svk"] = { "Slovakian Sign Language", 7541557, "sgn", } m["svm"] = { "Slavomolisano", 36254, "zls", "Latn", ancestors = "sh", } m["svs"] = { "Savosavo", 3130296, "qfa-dis", -- Papuan; isolate in Glottolog; in the tentative Central Solomons family by Ross (2005) and Pedrós -- (2015) "Latn", } m["svx"] = { "Skalvian", 3486125, "bat-wes", "Latn", } m["swb"] = { "Maore Comorian", 34075, "bnt-com", "Latn", sort_key = "bnt-com-sortkey", } m["swf"] = { "Sere", 7453056, "nic-ser", "Latn", } m["swg"] = { "Swabian", 327274, "gmw-hgm", "Latn", ancestors = "gsw", } m["swi"] = { "สุ่ย", 3112388, "qfa-kms", "Latn, Shui, Hani", sort_key = {Hani = "Hani-sortkey"}, } m["swj"] = { "Sira", 36599, "bnt-sir", "Latn", } m["swl"] = { "Swedish Sign Language", 36558, "sgn", } m["swm"] = { "Samosa", 7410037, "ngf-nwh", "Latn", } m["swn"] = { "Sokna", 2988323, "ber", } m["swo"] = { "Shanenawa", 61974839, "sai-pan", "Latn", } m["swp"] = { "Suau", 3502368, "poz-ocw", } m["swq"] = { "Sharwa", 56791, "cdc-cbm", "Latn", } m["swr"] = { "Saweru", 3474649, "paa-yaw", "Latn", } m["sws"] = { "Seluwasan", 7448845, "poz-cet", } m["swt"] = { "Sawila", 7428639, "paa-tap", "Latn", } m["swu"] = { "Suwawa", 7650588, "phi", } m["sww"] = { "Sowa", 7571843, "poz-vnn", "Latn", } m["swx"] = { "Suruahá", 3114402, "auf", } m["swy"] = { "Sarua", 56261, "cdc-est", "Latn", } m["sxb"] = { "Suba", 33916, "bnt-lok", "Latn", } m["sxc"] = { "Sicanian", 36335, "qfa-unc", -- extinct, lack of data; only names deciphered "Polyt", } m["sxe"] = { "Sighu", 36431, "bnt-kel", "Latn", } m["sxg"] = { "Shixing", 56337, "sit-nax", "Latn", } m["sxk"] = { "Southern Kalapuya", 3192122, "nai-klp", } m["sxl"] = { "Selonian", 36491, "bat-eas", "Latn", } m["sxm"] = { "ซำเร", 6583615, "mkh-pea", } m["sxn"] = { "Sangir", 25714758, "phi", "Latn", } m["sxo"] = { "Sorothaptic", 2762254, } m["sxr"] = { "Saaroa", 716599, "map", "Latn", } m["sxs"] = { "Sasaru", 3913384, "alv-yek", "Latn", } -- "sxu" "Upper Saxon" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["sxw"] = { "Saxwe Gbe", 7428892, "alv-pph", "Latn", } m["sya"] = { "Siang", 3482903, } m["syb"] = { "Central Subanen", 12953893, "phi", "Latn", } m["syc"] = { "ซีรีแอกคลาสสิก", 33538, "sem-are", "Syrc", strip_diacritics = {remove_diacritics = c.macron .. c.diaer .. c.macronbelow .. u(0x0730) .. "-" .. u(0x0748)}, } m["syi"] = { "Seki", 36547, "bnt-kel", "Latn", } m["syk"] = { "Sukur", 56292, "cdc-cbm", "Latn", } m["syl"] = { "สิเลฏ", 2044560, "inc-bas", "Sylo, Beng", ancestors = "inc-obn", translit = "syl-translit", } m["sym"] = { "Maya Samo", 10950421, "dmn-sam", "Latn", } m["syn"] = { "Senaya", 33914, "sem-nna", } m["syo"] = { "Suoy", 7641864, "mkh-pea", } m["sys"] = { "Sinyar", 56840, "csu", "Latn", } m["syw"] = { "Kagate", 12952538, "sit-kyk", "Deva", translit = { Deva = "Deva-translit", }, } m["syx"] = { "Osamayi", 7408415, "bnt-kel", "Latn", } m["syy"] = { "Al-Sayyid Bedouin Sign Language", 2915457, "sgn", } m["sza"] = { "Semelai", 3111827, "mkh-asl", "Latn", } m["szb"] = { "Ngalum", 11732516, "ngf-okk", "Latn", } m["szc"] = { "Semaq Beri", 7449119, "mkh-asl", } m["szd"] = { "Seru", 7455488, "poz-bnn", "Latn", } m["sze"] = { "Seze", 373683, "omv-mao", "Latn", } m["szg"] = { "Sengele", 7450555, "bnt-mon", "Latn", } m["szl"] = { "ไซลีเซีย", 30319, "zlw-lch", "Latn", ancestors = "zlw-opl", } m["szn"] = { "Sula", 3503403, "poz-cma", "Latn", } m["szp"] = { "Suabo", 7630429, "ngf-sbh", "Latn", } m["szv"] = { "Isubu", 35431, "bnt-saw", "Latn", } m["szw"] = { "Sawai", 3447258, "poz-hce", "Latn", } m["szy"] = { "ซากีซายา", 718269, "map", "Latn", } return require("Module:languages").finalizeData(m, "language") 25hl2rk6tvl5quawq4i6ccrbvlqi3ap มอดูล:languages/data/3/r 828 36369 5729382 5726940 2026-07-20T07:42:05Z Octahedron80 267 5729382 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["raa"] = { "Dungmali", 56871, "sit-kic", } m["rab"] = { "Chamling", 3436664, "sit-kic", "Deva", translit = { Deva = "Deva-translit", }, } m["rac"] = { "Rasawa", 56443, "paa-lkp", "Latn", } m["rad"] = { "ระแด", 3429088, "cmc", "Latn", } m["raf"] = { "Western Meohang", 17442461, "sit-kie", } m["rag"] = { "Logooli", 6667767, "bnt-lok", "Latn", } m["rah"] = { "Rabha", 7278686, "tbq-bdg", "Beng, Latn", } m["rai"] = { "Ramoaaina", 3418509, "poz-ocw", "Latn", } m["rak"] = { "Tulu-Bohuai", 2908807, "poz-aay", "Latn", } m["ral"] = { "Ralte", 7288392, "tbq-kuk", "Latn", } m["ram"] = { "Canela", 2936334, "sai-nje", "Latn", } m["ran"] = { "Riantana", 7322169, "paa-kol", "Latn", } m["rao"] = { "Rao", 11732596, "paa-ram", "Latn", } m["rap"] = { "ราปานูอี", 36746, "poz-pep", "Latn", } m["raq"] = { "Saam", 7395644, "sit-kic", } m["rar"] = { "ราโรโตงา", 36745, "poz-pep", "Latn", } m["ras"] = { "Tegali", 36522, "nic-ras", "Latn", } m["rat"] = { "Razajerdi", 7299461, "xme-ttc", ancestors = "xme-ttc-eas", } m["rau"] = { "Raute", 7296262, "sit-gma", "Deva, Latn", translit = { Deva = "Deva-translit", }, } m["rav"] = { "Sampang", 3449115, "sit-kic", } m["raw"] = { "เรอหวั่ง", 542564, "sit-nng", "Latn", sort_key = {remove_diacritics = c.grave .. c.acute .. c.macron}, } m["rax"] = { "Rang", 3913345, "alv-mum", } m["ray"] = { "Rapa", 36417, "poz-pep", "Latn", } m["raz"] = { "Rahambuu", 3417555, "poz-btk", } m["rbb"] = { "Rumai Palaung", 12953797, "mkh-pal", "Mymr", } m["rbk"] = { "Northern Bontoc", 63311016, "phi", "Latn", } m["rbl"] = { "Miraya Bikol", 18664557, "phi", "Latn", } m["rcf"] = { "Réunion Creole French", 13198, "crp", "Latn", ancestors = "fr", sort_key = s["roa-oil-sortkey"], } m["rdb"] = { "Rudbari", 12953072, "xme", ancestors = "xme-mid", } m["rea"] = { "Rerau", 7314883, "ngf-rai", -- placed in Nuru subfamily by Pawley-Hammarström "Latn", } m["reb"] = { "Rembong", 7311570, "poz-cet", "Latn", } m["ree"] = { "Rejang Kayan", 3423957, "poz", "Latn", } m["reg"] = { "Kara (Tanzania)", 6367567, "bnt-haj", } m["rei"] = { "Reli", 7310982, } m["rej"] = { "Rejang", 3056339, "poz", "Rjng, Latn", } m["rel"] = { "Rendille", 3447297, "cus-som", "Latn", } m["rem"] = { "Remo", 3501825, "sai-pan", "Latn", } m["ren"] = { "Rengao", 6583692, "mkh", } m["rer"] = { "Rer Bare", 12953857, "qfa-unc", -- extinct, might not exist } m["res"] = { "Reshe", 36258, "nic-knj", } m["ret"] = { "Retta", 7317113, "paa-tap", "Latn", } m["rey"] = { "Reyesano", 3111857, "sai-tac", "Latn", } m["rga"] = { "Roria", 7366825, "poz-vnn", "Latn", } m["rge"] = { "Romano-Greek", 3915435, "qfa-mix", "Latn", -- and/or Grek? ancestors = "rom, el", } m["rgk"] = { "Rangkas", 7292645, "sit-alm", } m["rgn"] = { "โรมัญญา", 1641543, "roa-emr", "Latn", wikimedia_codes = "eml", } m["rgr"] = { "Resígaro", 3450504, "awd", "Latn", } m["rgs"] = { "Southern Roglai", 12953069, "cmc", "Latn", } m["rgu"] = { "Ringgou", 7334886, "poz-tim", } m["rhg"] = { "โรฮีนจา", 3241177, "inc-bas", "Rohg, Arab, Mymr, Latn, Beng", ancestors = "inc-obn", translit = { Rohg = "Rohg-translit", }, } m["rhp"] = { "Yahang", 8046792, "paa-tor", "Latn", } m["ria"] = { "Reang", 12953063, "tbq-bdg", } m["rif"] = { "ริฟ", 34174, "ber", "Latn, Tfng, Arab", translit = { Tfng = "Tfng-translit" }, standard_chars = { Latn = "AaBbCcDdḌḍEeƐɛFfGgƔɣĞğHhḤḥIiJjKkLlMmNnPpQqRrŘřSsṢṣTtṬṭUuWwXxYyZzẒẓʷ", Tfng = "ⴰⴳⴷⴹⴼⵖⵉⴽⵍⵎⵏⵓⵔⵙⵛⵜⵡⵢⵣⵥⴱⵀⵅⵊⴳⵯⵕⵚⵟⵇⵃⵄⴻⴽⵯ", c.punc }, } m["ril"] = { "Riang", 2741615, "mkh-pal", } m["rim"] = { "Nyaturu", 7193418, "bnt-tkm", "Latn", } m["rin"] = { "Nungu", 3913350, "nic-nin", "Latn", } m["rir"] = { "Ribun", 7322443, "day", "Latn", } m["rit"] = { "Ritarungo", 7336730, "aus-yol", "Latn", } m["riu"] = { "Riung", 7336938, "poz-cet", "Latn", } m["rjg"] = { "Rajong", 7286370, "poz-cet", "Latn", } m["rji"] = { "Raji", 7286138, "sit-gma", } m["rjs"] = { "ราชพังสี", 12640969, "inc-krd", "Deva", translit = { Deva = "Deva-translit", }, } m["rka"] = { "Kraol", 3199593, "mkh-ban", "Khmr", -- also Latn? } m["rkb"] = { "Rikbaktsa", 2585357, "sai-mje", "Latn", } m["rkh"] = { "Rakahanga-Manihiki", 3119695, "poz-pep", "Latn", } m["rki"] = { "ยะไข่", 3450749, "tbq-brm", "Mymr", ancestors = "obr", } m["rkm"] = { "Marka", 36030, "dmn-wmn", "Latn", } m["rkt"] = { "Kamta", 3241618, "inc-krd", "as-Beng, Latn", translit = "as-translit", } m["rkw"] = { "Arakwal", 34295800, "aus-pam", "Latn", } m["rma"] = { "Rama", 3444486, "cba", } m["rmb"] = { "Rembarunga", 7311553, "aus-gun", "Latn", } m["rmc"] = { "Carpathian Romani", 5045611, "inc-rom", "Latn", } m["rmd"] = { "Traveller Danish", 12640779, "qfa-mix", "Latn", ancestors = "rom, da", } m["rme"] = { "Angloromani", 541279, "qfa-mix", "Latn", ancestors = "rom, en", } m["rmf"] = { "Kalo Finnish Romani", 2093214, "inc-rom", "Latn", } m["rmg"] = { "Traveller Norwegian", 3177352, "qfa-mix", "Latn", ancestors = "rom, no", } m["rmh"] = { "Murkim", 4308074, "paa-pau", } m["rmi"] = { "Lomavren", 2495696, "qfa-mix", "Latn, Armn", ancestors = "pra-sau, hy", -- Armn translit in [[Module:scripts/data]] override_translit = true, } m["rmk"] = { "Romkun", 7363236, "paa-ram", "Latn", } m["rml"] = { "Baltic Romani", 513736, "inc-rom", "Latn", } m["rmm"] = { "Roma", 4414831, } m["rmn"] = { "Balkan Romani", 1256701, "inc-rom", "Latn", } m["rmo"] = { "Sinte Romani", 1793299, "inc-rom", "Latn", } m["rmp"] = { "Rempi", 7312214, "ngf-han", "Latn", } m["rmq"] = { "Caló", 35466, "qfa-mix", "Latn", ancestors = "rom, osp, roa-opt", } m["rms"] = { "Romanian Sign Language", 7362575, "sgn", } m["rmt"] = { "Domari", 35394, "inc-cen", "Latn, Arab, Hebr", -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["rmu"] = { "Tavringer Romani", 27808413, "qfa-mix", "Latn", ancestors = "rom, sv", } m["rmv"] = { "Romanova", 1298715, "art", type = "appendix-constructed", } m["rmw"] = { "Welsh Romani", 2097387, "inc-rom", "Latn", } m["rmx"] = { "Romam", 22694600, "mkh", } m["rmy"] = { "Vlax Romani", 2669199, "inc-rom", "Latn", } m["rmz"] = { "Marma", 21403256, "tbq-brm", "Mymr", ancestors = "obr", } m["rnd"] = { "Ruwund", 7383564, "bnt-lun", } m["rng"] = { "Ronga", 2520717, "bnt-tsr", "Latn", } m["rnl"] = { "Ranglong", 7292878, } m["rnn"] = { "Roon", 7366335, "poz-hce", "Latn", } m["rnp"] = { "Rongpo", 7365672, "sit-whm", } m["rnw"] = { "Rungwa", 7379873, "bnt-mwi", "Latn", } m["rob"] = { "Tae'", 12473476, "poz-ssw", "Latn", } m["roc"] = { "Cacgia Roglai", 2932485, "cmc", "Latn", } m["rod"] = { "Rogo", 3914894, "nic-kmk", } m["roe"] = { "Ronji", 3441763, "poz-ocw", } m["rof"] = { "Rombo", 33330, "bnt-chg", "Latn", } m["rog"] = { "Northern Roglai", 3439680, "cmc", "Latn", } m["rol"] = { "Romblomanon", 13202, "phi", "Latn", } m["rom"] = { "โรมานี", 13201, "inc-rom", "Latn, Cyrl", } m["roo"] = { "Rotokas", 13203, "paa-nbo", "Latn", } m["rop"] = { "Australian Kriol", 35671, "crp", "Latn", ancestors = "en", } m["ror"] = { "Rongga", 12473464, } m["rou"] = { "Runga", 56793, } m["row"] = { "Dela-Oenale", 5253046, "poz-tim", } m["rpn"] = { "Repanbitip", 7313900, "poz-vnc", "Latn", } m["rpt"] = { "Rapting", 7294362, "ngf-han", "Latn", } m["rri"] = { "Ririo", 2404190, "poz-ocw", } m["rro"] = { "Roro", 34197, "poz-ocw", "Latn", } m["rrt"] = { "Arritinngithigh", 4796002, nil, "Latn", } m["rsb"] = { "Romano-Serbian", 1268244, "qfa-mix", "Latn", -- and Cyrl? ancestors = "rom, sh", } m["rsl"] = { "มือรัสเซีย", 13210, "sgn", } m["rsk"] = { "รูซินแบบพันโนเนีย", 35660, "zlw", "Cyrl", ancestors = "zlw-osk", --translit = "rsk-translit", sort_key = { Cyrl = { from = {"ґ", "є", "ї", "ь"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "я" .. p[1]} } }, standard_chars = "АаБбВвГ㥴ДдЕеЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЮюЯя" .. c.punc:gsub("'", ""), -- Exclude apostrophe. } m["rsm"] = { "Miriwoong Sign Language", 24090240, "sgn", } m["rsn"] = { "Rwandan Sign Language", 25041935, "sgn", } m["rtc"] = { "Rungtu", 7379867, "tbq-kuk", } m["rth"] = { "Ratahan", 3420026, "phi", "Latn", } m["rtm"] = { "Rotuman", 36754, "poz-pcc", "Latn", } m["rtw"] = { "Rathawi", 12953854, "inc-bhi", } m["rub"] = { "Gungu", 11165235, "bnt-glb", "Latn", } m["ruc"] = { "Ruuli", 7383562, "bnt-nyg", } m["rue"] = { "รูซินแบบคาร์พาเทีย", 26245, "zle", "Cyrl", ancestors = "zle-ort", translit = "rue-translit", strip_diacritics = {remove_diacritics = c.grave .. c.acute}, sort_key = "rue-sortkey", } m["ruf"] = { "Luguru", 3437661, "bnt-ruv", "Latn", } m["rug"] = { "Roviana", 3445546, "poz-ocw", "Latn", } m["ruh"] = { "Ruga", 7378127, } m["rui"] = { "Rufiji", 7377946, "bnt-mbi", } m["ruk"] = { "Che", 3915445, "nic-nin", "Latn", } m["ruo"] = { "อิสโตร-โรมาเนีย", 33622, "roa-eas", "Latn", } m["rup"] = { "Aromanian", 29316, "roa-eas", "Latn, Polyt", translit = { -- FIXME: formerly no translit specified for Polyt; unclear if the default [[Module:grc-translit]] is -- acceptable, so we disable it for now Polyt = false, }, sort_key = { Latn = { from = {"ã"}, to = {"a"..p[1]} }, }, -- Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] wikimedia_codes = "roa-rup", } m["ruq"] = { "Megleno-Romanian", 13358, "roa-eas", "Latn", } m["rut"] = { "Rutul", 36757, "cau-wsm", "Cyrl, Latn", translit = "rut-translit", override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = s["cau-Cyrl-stripdiacritics"], Latn = s["cau-Latn-stripdiacritics"], }, } m["ruu"] = { "Lanas Lobu", 12953676, } m["ruy"] = { "Mala (Nigeria)", 3913381, "nic-kau", } m["ruz"] = { "Ruma", 3913326, "nic-kau", } m["rwa"] = { "Rawo", 3504269, "paa-msk", "Latn", } m["rwk"] = { "Rwa", 7985624, "bnt-chg", } m["rwm"] = { "Amba", 788423, "bnt-kbi", "Latn", } m["rwo"] = { "Rawa", 11732598, "ngf-fin", "Latn", } m["rxd"] = { "Ngardi", 7022063, } m["rxw"] = { "Karuwali", 6881575, } m["ryn"] = { "อามามิโอชิมะเหนือ", 2840988, "jpx-nry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["rys"] = { "ยาเอยามะ", 34203, "jpx-sry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["ryu"] = { "โอกินาวะ", 34233, "jpx-nry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["rzh"] = { "Razihi", 16911222, "sem-osa", "Arab", ancestors = "sem-srb", } return require("Module:languages").finalizeData(m, "language") t0iq7kvl53o4plzy8hmq8je8yppla33 มอดูล:languages/data/2 828 36387 5729128 5720751 2026-07-20T02:35:21Z Octahedron80 267 5729128 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 -- Ideally, we want to move these into [[Module:languages/data]], but because (a) it's necessary to use require on that module, and (b) they're only used in this data module, it's less memory-efficient to do that at the moment. If it becomes possible to use mw.loadData, then these should be moved there. s["de-Latn-sortkey"] = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove, from = {"æ", "œ", "ß"}, to = {"ae", "oe", "ss"} } s["de-Latn-standardchars"] = "AaÄäBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsẞßTtUuÜüVvWwXxYyZz" s["ka-stripdiacritics"] = {remove_diacritics = c.circ} s["no-sortkey"] = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla, remove_exceptions = {"å"}, from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} } s["no-standardchars"] = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÆæØøÅå" .. c.punc s["tg-stripdiacritics"] = {remove_diacritics = c.grave .. c.acute} s["tk-stripdiacritics"] = {remove_diacritics = c.macron} local m = {} m["aa"] = { "อาฟาร์", 27811, "cus-eas", "Latn, Ethi", strip_diacritics = { Latn = {remove_diacritics = c.acute}, }, } m["ab"] = { "อับคาเซีย", 5111, "cau-abz", "Cyrl, Geor, Latn", translit = { Cyrl = "ab-translit", -- Geor translit in [[Module:scripts/data]] }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = { remove_diacritics = c.acute, from = {"^а%-"}, to = {"а"}, }, Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = { "х'ә", -- 3 chars "гь", "гә", "ӷь", "ҕь", "ӷә", "ҕә", "дә", "ё", "жь", "жә", "ҙә", "ӡә", "ӡ'", "кь", "кә", "қь", "қә", "ҟь", "ҟә", "ҫә", "тә", "ҭә", "ф'", "хь", "хә", "х'", "ҳә", "ць", "цә", "ц'", "ҵә", "ҵ'", "шь", "шә", "џь", -- 2 chars "ӷ", "ҕ", "ҙ", "ӡ", "қ", "ҟ", "ԥ", "ҧ", "ҫ", "ҭ", "ҳ", "ҵ", "ҷ", "ҽ", "ҿ", "ҩ", "џ", "ә", -- 1 char "^а", }, to = { "х" .. p[4], "г" .. p[1], "г" .. p[2], "г" .. p[5], "г" .. p[6], "г" .. p[7], "г" .. p[8], "д" .. p[1], "е" .. p[1], "ж" .. p[1], "ж" .. p[2], "з" .. p[2], "з" .. p[4], "з" .. p[5], "к" .. p[1], "к" .. p[2], "к" .. p[4], "к" .. p[5], "к" .. p[7], "к" .. p[8], "с" .. p[2], "т" .. p[1], "т" .. p[3], "ф" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "х" .. p[6], "ц" .. p[1], "ц" .. p[2], "ц" .. p[3], "ц" .. p[5], "ц" .. p[6], "ш" .. p[1], "ш" .. p[2], "ы" .. p[3], "г" .. p[3], "г" .. p[4], "з" .. p[1], "з" .. p[3], "к" .. p[3], "к" .. p[6], "п" .. p[1], "п" .. p[2], "с" .. p[1], "т" .. p[2], "х" .. p[5], "ц" .. p[4], "ч" .. p[1], "ч" .. p[2], "ч" .. p[3], "ы" .. p[1], "ы" .. p[2], "ь" .. p[1], "", } }, }, } m["ae"] = { "อเวสตะ", 29572, "ira-cen", "Avst, Gujr", translit = { Avst = "Avst-translit" }, } m["af"] = { "อาฟรีกานส์", 14196, "gmw-frk", "Latn, Arab", ancestors = "nl", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.ringabove .. c.cedilla .. "'", from = {"['ʼ]n"}, to = {"n" .. p[1]} } }, } m["ak"] = { "อาคัน", 28026, "alv-ctn", "Latn", } m["am"] = { "อัมฮารา", 28244, "sem-eth", "Ethi", translit = "Ethi-translit", } m["an"] = { "อารากอน", 8765, "roa-nar", "Latn", } m["ar"] = { "อาหรับ", 13955, "sem-arb", "Arab, Hebr, Syrc, Brai, Nbat", translit = { Arab = "ar-translit" }, strip_diacritics = { Arab = "ar-stripdiacritics", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["as"] = { "อัสสัม", 29401, "inc-bas", "as-Beng", ancestors = "inc-mas", translit = "Beng-translit", } m["av"] = { "อะวาร์", 29561, "cau-ava", "Cyrl, Latn, Arab", ancestors = "oav", translit = { Cyrl = "cau-nec-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 = {"гъ", "гь", "гӏ", "ё", "кк", "къ", "кь", "кӏ", "лъ", "лӏ", "тӏ", "хх", "хъ", "хь", "хӏ", "цӏ", "чӏ"}, to = {"г" .. p[1], "г" .. p[2], "г" .. p[3], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "к" .. p[4], "л" .. p[1], "л" .. p[2], "т" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "х" .. p[4], "ц" .. p[1], "ч" .. p[1]} }, }, } m["ay"] = { "ไอย์มารา", 4627, "sai-aym", "Latn", } m["az"] = { "อาเซอร์ไบจาน", 9292, "trk-ogz", "Latn, Cyrl, fa-Arab", ancestors = "trk-oat", dotted_dotless_i = true, strip_diacritics = { Latn = { from = {"ʼ"}, to = {"'"}, }, ["fa-Arab"] = { module = "ar-stripdiacritics", ["from"] = { "ۆ", "ۇ", "وْ", "ڲ", "ؽ", }, ["to"] = { "و", "و", "و", "گ", "ی", }, }, }, display_text = { Latn = { from = {"'"}, to = {"ʼ"} } }, sort_key = { Latn = { from = { "i", -- Ensure "i" comes after "ı". "ç", "ə", "ğ", "x", "ı", "q", "ö", "ş", "ü", "w" }, to = { "i" .. p[1], "c" .. p[1], "e" .. p[1], "g" .. p[1], "h" .. p[1], "i", "k" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], "z" .. p[1] } }, Cyrl = { from = {"ғ", "ә", "ы", "ј", "ҝ", "ө", "ү", "һ", "ҹ"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "и" .. p[2], "к" .. p[1], "о" .. p[1], "у" .. p[1], "х" .. p[1], "ч" .. p[1]} }, }, } m["ba"] = { "แบชเคียร์", 13389, "trk-kbu", "Cyrl", translit = "ba-translit", override_translit = true, sort_key = { from = {"ғ", "ҙ", "ё", "ҡ", "ң", "ө", "ҫ", "ү", "һ", "ә"}, to = {"г" .. p[1], "д" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "с" .. p[1], "у" .. p[1], "х" .. p[1], "э" .. p[1]} }, } m["be"] = { "เบลารุส", 9091, "zle", "Cyrl, Latn", ancestors = "zle-mbe", translit = { Cyrl = "be-translit-Thai", }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute, }, Latn = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ś", "ś", "Ź", "ź"}, }, }, sort_key = { Cyrl = { remove_diacritics = c.grave .. c.acute, from = {"ґ", "ё", "і", "ў"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "у" .. p[1]} }, Latn = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ś", "ś", "Ź", "ź"}, from = {"ć", "č", "dz", "dź", "dž", "ch", "ł", "ń", "ś", "š", "ŭ", "ź", "ž"}, to = {"c" .. p[1], "c" .. p[2], "d" .. p[1], "d" .. p[2], "d" .. p[3], "h" .. p[1], "l" .. p[1], "n" .. p[1], "s" .. p[1], "s" .. p[2], "u" .. p[1], "z" .. p[1], "z" .. p[2]} }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзІіЙйКкЛлМмНнОоПпРрСсТтУуЎўФфХхЦцЧчШшЫыЬьЭэЮюЯя", Latn = "AaBbCcĆćČčDdEeFfGgHhIiJjKkLlŁłMmNnŃńOoPpRrSsŚśŠšTtUuŬŭVvYyZzŹźŽž", (c.punc:gsub("'", "")) -- Exclude apostrophe. }, } m["bg"] = { "บัลแกเรีย", 7918, "zls", "Cyrl", ancestors = "cu-bgm", translit = "bg-translit", strip_diacritics = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"}, }, sort_key = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"}, }, standard_chars = "АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЬьЮюЯя" .. c.punc, } m["bh"] = { "พิหาร", 135305, "inc-eas", "Deva", translit = "Deva-translit", } m["bi"] = { "บิสลามา", 35452, "crp", "Latn", ancestors = "en", } m["bm"] = { "บัมบารา", 33243, "dmn-emn", "Latn, Nkoo", sort_key = { Latn = { from = {"ɛ", "ɲ", "ŋ", "ɔ"}, to = {"e" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1]} }, }, } m["bn"] = { "เบงกอล", 9610, "inc-bas", "Beng, Newa", ancestors = "inc-mbn", translit = { Beng = "Beng-translit" }, } m["bo"] = { "ทิเบต", 34271, "sit-tib", "Tibt", -- sometimes Deva? ancestors = "xct", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["br"] = { "เบรอตง", 12107, "cel-brs", "Latn", ancestors = "xbm", sort_key = { from = {"ch", "c['ʼ’]h"}, to = {"c" .. p[1], "c" .. p[2]} }, } m["ca"] = { "กาตาลา", 7026, "roa-ocr", "Latn", ancestors = "roa-oca", sort_key = {remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla .. "·"}, standard_chars = "AaÀàBbCcÇçDdEeÉéÈèFfGgHhIiÍíÏïJjLlMmNnOoÓóÒòPpQqRrSsTtUuÚúÜüVvXxYyZz·" .. c.punc, } m["ce"] = { "เชเชน", 33350, "cau-vay", "Cyrl, Latn, Arab", translit = { Cyrl = "cau-nec-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 = {"аь", "гӏ", "ё", "кх", "къ", "кӏ", "оь", "пӏ", "тӏ", "уь", "хь", "хӏ", "цӏ", "чӏ", "юь", "яь"}, to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "о" .. p[1], "п" .. p[1], "т" .. p[1], "у" .. p[1], "х" .. p[1], "х" .. p[2], "ц" .. p[1], "ч" .. p[1], "ю" .. p[1], "я" .. p[1]} }, }, } m["ch"] = { "ชามอร์โร", 33262, "poz", "Latn", sort_key = { remove_diacritics = "'", from = {"å", "ch", "ñ", "ng"}, to = {"a" .. p[1], "c" .. p[1], "n" .. p[1], "n" .. p[2]} }, } m["co"] = { "คอร์ซิกา", 33111, "roa-itr", "Latn", sort_key = { from = {"chj", "ghj", "sc", "sg"}, to = {"c" .. p[1], "g" .. p[1], "s" .. p[1], "s" .. p[2]} }, standard_chars = "AaÀàBbCcDdEeÈèFfGgHhIiÌìÏïJjLlMmNnOoÒòPpQqRrSsTtUuÙùÜüVvZz" .. c.punc, } m["cr"] = { "ครี", 33390, "alg", "Latn, Cans", translit = { Cans = "cr-translit" }, } m["cs"] = { "เช็ก", 9056, "zlw", "Latn", ancestors = "cs-ear", sort_key = { from = {"á", "č", "ď", "é", "ě", "ch", "í", "ň", "ó", "ř", "š", "ť", "ú", "ů", "ý", "ž"}, to = {"a" .. p[1], "c" .. p[1], "d" .. p[1], "e" .. p[1], "e" .. p[2], "h" .. p[1], "i" .. p[1], "n" .. p[1], "o" .. p[1], "r" .. p[1], "s" .. p[1], "t" .. p[1], "u" .. p[1], "u" .. p[2], "y" .. p[1], "z" .. p[1]} }, standard_chars = "AaÁáBbCcČčDdĎďEeÉéĚěFfGgHhIiÍíJjKkLlMmNnŇňOoÓóPpRrŘřSsŠšTtŤťUuÚúŮůVvYyÝýZzŽž" .. c.punc, } m["cu"] = { "สลาวอนิกคริสตจักรเก่า", 35499, "zls", "Cyrs, Glag, Zname", translit = { Cyrs = "Cyrs-translit", Glag = "Glag-translit" }, -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]] } m["cv"] = { "ชูวัช", 33348, "trk-ogr", "Cyrl", ancestors = "cv-mid", translit = "cv-translit", override_translit = true, sort_key = { from = {"ӑ", "ё", "ӗ", "ҫ", "ӳ"}, to = {"а" .. p[1], "е" .. p[1], "е" .. p[2], "с" .. p[1], "у" .. p[1]} }, } m["cy"] = { "เวลส์", 9309, "cel-brw", "Latn", ancestors = "wlm", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. "'", from = {"ch", "dd", "ff", "ng", "ll", "ph", "rh", "th"}, to = {"c" .. p[1], "d" .. p[1], "f" .. p[1], "g" .. p[1], "l" .. p[1], "p" .. p[1], "r" .. p[1], "t" .. p[1]} }, standard_chars = "ÂâAaBbCcDdEeÊêFfGgHhIiÎîLlMmNnOoÔôPpRrSsTtUuÛûWwŴŵYyŶŷ" .. c.punc, } m["da"] = { "เดนมาร์ก", 9035, "gmq-eas", "Latn", ancestors = "gmq-oda", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla, remove_exceptions = {"å"}, from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÆæØøÅå" .. c.punc, } m["de"] = { "เยอรมัน", 188, "gmw-hgm", "Latn, Latf, Brai", ancestors = "de-ear", sort_key = { Latn = s["de-Latn-sortkey"], Latf = s["de-Latn-sortkey"], }, standard_chars = { Latn = s["de-Latn-standardchars"], Latf = s["de-Latn-standardchars"], Brai = c.braille, c.punc } } m["dv"] = { "มัลดีฟส์", 32656, "inc-ins", "Thaa, Diak", translit = { Thaa = "Thaa-translit", Diak = "Diak-translit", }, override_translit = true, } m["dz"] = { "ซองคา", 33081, "sit-tib", "Tibt", ancestors = "xct", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["ee"] = { "เอเว", 30005, "alv-gbe", "Latn", sort_key = { remove_diacritics = c.tilde, from = {"ɖ", "dz", "ɛ", "ƒ", "gb", "ɣ", "kp", "ny", "ŋ", "ɔ", "ts", "ʋ"}, to = {"d" .. p[1], "d" .. p[2], "e" .. p[1], "f" .. p[1], "g" .. p[1], "g" .. p[2], "k" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "t" .. p[1], "v" .. p[1]} }, } m["el"] = { "กรีก", 9129, "grk", "Grek, Polyt, Brai", ancestors = "el-kth", translit = "el-translit", override_translit = true, -- Grek and Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { Grek = "΅·ͺ΄ΑαΆάΒβΓγΔδΕεέΈΖζΗηΉήΘθΙιΊίΪϊΐΚκΛλΜμΝνΞξΟοΌόΠπΡρΣσςΤτΥυΎύΫϋΰΦφΧχΨψΩωΏώ", Brai = c.braille, c.punc }, } m["en"] = { "อังกฤษ", 1860, "gmw-ang", "Latn, Brai, Shaw, Dsrt", -- entries in Shaw or Dsrt might require prior discussion wikimedia_codes = "en, simple", ancestors = "en-ear", sort_key = { Latn = { -- Many of these are needed for sorting language names. remove_diacritics = "'\"%-%.,%s·ʻʼ" .. c.diacritics, -- These are found in pagenames. from = {"[ɒæ🅱¢©ᴄðđəǝɜɡħʜıɨłŋɲøɔœꝑꝓꝕßʋ]"}, to = {{ ["ɒ"] = "a", ["æ"] = "ae", ["🅱"] = "b", ["¢"] = "c", ["©"] = "c", ["ᴄ"] = "c", ["ð"] = "d", ["đ"] = "d", ["ə"] = "e", ["ǝ"] = "e", ["ɜ"] = "e", ["ɡ"] = "g", ["ħ"] = "h", ["ʜ"] = "h", ["ı"] = "i", ["ɨ"] = "i", ["ł"] = "l", ["ŋ"] = "n", ["ɲ"] = "n", ["ø"] = "o", ["ɔ"] = "o", ["œ"] = "oe", ["ꝑ"] = "p", ["ꝓ"] = "p", ["ꝕ"] = "p", ["ß"] = "ss", ["ʋ"] = "v", }}, }, }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz", Brai = c.braille, c.punc }, } m["eo"] = { "เอสเปรันโต", 143, "art", "Latn", --translit = "eo-translit", -- already handled in Module:headword & Module:links sort_key = { remove_diacritics = c.grave .. c.acute, from = {"ĉ", "ĝ", "ĥ", "ĵ", "ŝ", "ŭ"}, to = {"c" .. p[1], "g" .. p[1], "h" .. p[1], "j" .. p[1], "s" .. p[1], "u" .. p[1]} }, standard_chars = "AaBbCcĈĉDdEeFfGgĜĝHhĤĥIiJjĴĵKkLlMmNnOoPpRrSsŜŝTtUuŬŭVvZz" .. c.punc, } m["es"] = { "สเปน", 1321, "roa-cas", "Latn, Brai", ancestors = "es-ear", --translit = "es-translit", -- already handled in Module:headword & Module:links sort_key = { Latn = { remove_exceptions = {"ñ"}, remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.diaer .. c.cedilla, from = {"ª", "æ", "ñ", "º", "œ"}, to = {"a", "ae", "n" .. p[1], "o", "oe"} }, }, standard_chars = { Latn = "AaÁáBbCcDdEeÉéFfGgHhIiÍíJjLlMmNnÑñOoÓóPpQqRrSsTtUuÚúÜüVvXxYyZz", Brai = c.braille, c.punc }, } m["et"] = { "เอสโตเนีย", 9072, "urj-fin", "Latn", sort_key = { from = { "š", "ž", "õ", "ä", "ö", "ü", -- 2 chars "z" -- 1 char }, to = { "s" .. p[1], "s" .. p[3], "w" .. p[1], "w" .. p[2], "w" .. p[3], "w" .. p[4], "s" .. p[2] } }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvÕõÄäÖöÜü" .. c.punc, } m["eu"] = { "บาสก์", 8752, "euq", "Latn", sort_key = { from = {"ç", "ñ"}, to = {"c" .. p[1], "n" .. p[1]} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnÑñOoPpRrSsTtUuXxZz" .. c.punc, } m["fa"] = { "เปอร์เซีย", 9168, "ira-swi", "fa-Arab, Hebr", ancestors = "fa-cls", strip_diacritics = { ["fa-Arab"] = { -- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif from = {"هٔ", "ٱ"}, -- character "ۂ" code U+06C2 to "ه"; hamzatu l-waṣli to a regular alif to = {"ه", "ا"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["ff"] = { "ฟูลา", 33454, "alv-fwo", "Latn, Adlm", } m["fi"] = { "ฟินแลนด์", 1412, "urj-fin", "Latn", display_text = { from = {"'"}, to = {"’"} }, strip_diacritics = { -- used to indicate gemination of the next consonant remove_diacritics = "ˣ", from = {"’"}, to = {"'"}, }, sort_key = { -- [[Appendix:Finnish alphabet#Collation]] + "aͤ" and "oͤ" as historical variants of "ä" and "ö". remove_diacritics = "'’:" .. c.diacritics, remove_exceptions = { "a[" .. c.ringabove .. c.diaer .. c.small_e .. "]", -- åäaͤ "o[" .. c.diaer .. c.tilde .. c.dacute .. c.small_e .. "]", -- öõőoͤ "u[" .. c.diaer .. c.dacute .. "]" -- üű }, from = {"æ", "[ðđ]", "ł", "ŋ", "œ", "ß", "þ", "u[" .. c.diaer .. c.dacute .. "]", "å", "aͤ", "o[" .. c.tilde .. c.dacute .. c.small_e .. "]", "ø", "(.)['%-]"}, to = {"ae", "d", "l", "n", "oe", "ss", "th", "y", "z" .. p[1], "ä", "ö", "ö", "%1"} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÄäÖö" .. c.punc, } m["fj"] = { "ฟีจี", 33295, "poz-pcc", "Latn", } m["fo"] = { "แฟโร", 25258, "gmq-ins", "Latn", sort_key = { from = {"á", "ð", "í", "ó", "ú", "ý", "æ", "ø"}, to = {"a" .. p[1], "d" .. p[1], "i" .. p[1], "o" .. p[1], "u" .. p[1], "y" .. p[1], "z" .. p[1], "z" .. p[2]} }, standard_chars = "AaÁáBbDdÐðEeFfGgHhIiÍíJjKkLlMmNnOoÓóPpRrSsTtUuÚúVvYyÝýÆæØø" .. c.punc, } m["fr"] = { "ฝรั่งเศส", 150, "roa-oil", "Latn, Brai", ancestors = "frm", sort_key = { Latn = s["roa-oil-sortkey"] }, standard_chars = { Latn = "AaÀàÂâBbCcÇçDdEeÉéÈèÊêËëFfGgHhIiÎîÏïJjLlMmNnOoÔôŒœPpQqRrSsTtUuÙùÛûÜüVvXxYyZz", Brai = c.braille, c.punc }, } m["fy"] = { "ฟรีเชียตะวันตก", 27175, "gmw-fri", "Latn", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer, from = {"y"}, to = {"i"} }, standard_chars = "AaâäàÆæBbCcDdEeéêëèFfGgHhIiïìYyỳJjKkLlMmNnOoôöòPpRrSsTtUuúûüùVvWwZz" .. c.punc, } m["ga"] = { "ไอริช", 9142, "cel-gae", "Latn, Latg", ancestors = "mga", sort_key = { remove_diacritics = c.acute, from = {"ḃ", "ċ", "ḋ", "ḟ", "ġ", "ṁ", "ṗ", "ṡ", "ṫ"}, to = {"bh", "ch", "dh", "fh", "gh", "mh", "ph", "sh", "th"} }, standard_chars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíLlMmNnOoÓóPpRrSsTtUuÚúVv" .. c.punc, } m["gd"] = { "แกลิกแบบสกอตแลนด์", 9314, "cel-gae", "Latn, Latg", ancestors = "mga", sort_key = {remove_diacritics = c.grave .. c.acute}, standard_chars = "AaÀàBbCcDdEeÈèFfGgHhIiÌìLlMmNnOoÒòPpRrSsTtUuÙù" .. c.punc, } m["gl"] = { "กาลิเซีย", 9307, "roa-gap", "Latn", sort_key = { remove_diacritics = c.acute, from = {"ñ"}, to = {"n" .. p[1]} }, standard_chars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíÏïLlMmNnÑñOoÓóPpQqRrSsTtUuÚúÜüVvXxZz" .. c.punc, } m["gu"] = { "คุชราต", 5137, "inc-wes", "Arab, Gujr", ancestors = "inc-mgu", translit = { Gujr = "Gujr-translit", }, strip_diacritics = { Arab = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.kasra .. c.shadda .. c.sukun}, Gujr = {remove_diacritics = "઼"}, }, } m["gv"] = { "แมงซ์", 12175, "cel-gae", "Latn", ancestors = "mga", sort_key = {remove_diacritics = c.cedilla .. "-"}, standard_chars = "AaBbCcÇçDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwYy" .. c.punc, } m["ha"] = { "เฮาซา", 56475, "cdc-wst", "Latn, Arab", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron} }, sort_key = { Latn = { from = {"ɓ", "b'", "ɗ", "d'", "ƙ", "k'", "sh", "ƴ", "'y"}, to = {"b" .. p[1], "b" .. p[2], "d" .. p[1], "d" .. p[2], "k" .. p[1], "k" .. p[2], "s" .. p[1], "y" .. p[1], "y" .. p[2]} }, }, } m["he"] = { "ฮีบรู", 9288, "sem-can", "Hebr, Phnx, Brai, Samr", ancestors = "he-med", -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] -- Samr strip_diacritics, sort_key in [[Module:scripts/data]] -- Phnx translit in [[Module:scripts/data]] (NOTE: not present before, presumably an accidental omission) } m["hi"] = { "ฮินดี", 1568, "inc-hnd", "Deva, Kthi, Newa", translit = { Deva = "Deva-translit", Kthi = "Kthi-translit", Newa = "Newa-translit", }, standard_chars = { Deva = "अआइईउऊएऐओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलवशषसहत्रज्ञक्षक़ख़ग़ज़झ़ड़ढ़फ़काखागाघाङाचाछाजाझाञाटाठाडाढाणाताथादाधानापाफाबाभामायारालावाशाषासाहात्राज्ञाक्षाक़ाख़ाग़ाज़ाझ़ाड़ाढ़ाफ़ाकिखिगिघिङिचिछिजिझिञिटिठिडिढिणितिथिदिधिनिपिफिबिभिमियिरिलिविशिषिसिहित्रिज्ञिक्षिक़िख़िग़िज़िझ़िड़िढ़िफ़िकीखीगीघीङीचीछीजीझीञीटीठीडीढीणीतीथीदीधीनीपीफीबीभीमीयीरीलीवीशीषीसीहीत्रीज्ञीक्षीक़ीख़ीग़ीज़ीझ़ीड़ीढ़ीफ़ीकुखुगुघुङुचुछुजुझुञुटुठुडुढुणुतुथुदुधुनुपुफुबुभुमुयुरुलुवुशुषुसुहुत्रुज्ञुक्षुक़ुख़ुग़ुज़ुझ़ुड़ुढ़ुफ़ुकूखूगूघूङूचूछूजूझूञूटूठूडूढूणूतूथूदूधूनूपूफूबूभूमूयूरूलूवूशूषूसूहूत्रूज्ञूक्षूक़ूख़ूग़ूज़ूझ़ूड़ूढ़ूफ़ूकेखेगेघेङेचेछेजेझेञेटेठेडेढेणेतेथेदेधेनेपेफेबेभेमेयेरेलेवेशेषेसेहेत्रेज्ञेक्षेक़ेख़ेग़ेज़ेझ़ेड़ेढ़ेफ़ेकैखैगैघैङैचैछैजैझैञैटैठैडैढैणैतैथैदैधैनैपैफैबैभैमैयैरैलैवैशैषैसैहैत्रैज्ञैक्षैक़ैख़ैग़ैज़ैझ़ैड़ैढ़ैफ़ैकोखोगोघोङोचोछोजोझोञोटोठोडोढोणोतोथोदोधोनोपोफोबोभोमोयोरोलोवोशोषोसोहोत्रोज्ञोक्षोक़ोख़ोग़ोज़ोझ़ोड़ोढ़ोफ़ोकौखौगौघौङौचौछौजौझौञौटौठौडौढौणौतौथौदौधौनौपौफौबौभौमौयौरौलौवौशौषौसौहौत्रौज्ञौक्षौक़ौख़ौग़ौज़ौझ़ौड़ौढ़ौफ़ौक्ख्ग्घ्ङ्च्छ्ज्झ्ञ्ट्ठ्ड्ढ्ण्त्थ्द्ध्न्प्फ्ब्भ्म्य्र्ल्व्श्ष्स्ह्त्र्ज्ञ्क्ष्क़्ख़्ग़्ज़्झ़्ड़्ढ़्फ़्।॥०१२३४५६७८९॰", c.punc }, } m["ho"] = { "ฮีรีโมตู", 33617, "crp", "Latn", ancestors = "meu", } m["ht"] = { "ครีโอลเฮติ", 33491, "crp", "Latn", ancestors = "ht-sdm", sort_key = { from = { "oun", -- 3 chars "an", "ch", "è", "en", "ng", "ò", "on", "ou", "ui" -- 2 chars }, to = { "o" .. p[4], "a" .. p[1], "c" .. p[1], "e" .. p[1], "e" .. p[2], "n" .. p[1], "o" .. p[1], "o" .. p[2], "o" .. p[3], "u" .. p[1] } }, } m["hu"] = { "ฮังการี", 9067, "urj-ugr", "Latn, Hung", ancestors = "ohu", sort_key = { Latn = { from = { "dzs", -- 3 chars "á", "cs", "dz", "é", "gy", "í", "ly", "ny", "ó", "ö", "ő", "sz", "ty", "ú", "ü", "ű", "zs", -- 2 chars }, to = { "d" .. p[2], "a" .. p[1], "c" .. p[1], "d" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "l" .. p[1], "n" .. p[1], "o" .. p[1], "o" .. p[2], "o" .. p[3], "s" .. p[1], "t" .. p[1], "u" .. p[1], "u" .. p[2], "u" .. p[3], "z" .. p[1], } }, }, standard_chars = { Latn = "AaÁáBbCcDdEeÉéFfGgHhIiÍíJjKkLlMmNnOoÓóÖöŐőPpQqRrSsTtUuÚúÜüŰűVvWwXxYyZz", c.punc }, } m["hy"] = { "อาร์มีเนีย", 8785, "hyx", "Armn, Brai", ancestors = "axm", -- Armn translit in [[Module:scripts/data]] override_translit = true, strip_diacritics = { Armn = { remove_diacritics = "՛՜՞՟", from = {"եւ", "<sup>յ</sup>", "<sup>ի</sup>", "<sup>է</sup>", "յ̵", "ՙ", "՚"}, to = {"և", "յ", "ի", "է", "ֈ", "ʻ", "’"} }, }, sort_key = { Armn = { from = { "ու", "եւ", -- 2 chars "և" -- 1 char }, to = { "ւ", "եվ", "եվ" } }, }, } m["hz"] = { "เฮเรโร", 33315, "bnt-swb", "Latn", } m["ia"] = { "อินเทอร์ลิงกวา", 35934, "art", "Latn", } m["id"] = { "อินโดนีเซีย", 9240, "poz-mly", "Latn", ancestors = "ms", standard_chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" .. c.punc, } m["ie"] = { "อินเทร์ลิงเกว", 35850, "art", "Latn", type = "appendix-constructed", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ}, } m["ig"] = { "อิกโบ", 33578, "alv-igb", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.macron}, sort_key = { from = {"gb", "gh", "gw", "ị", "kp", "kw", "ṅ", "nw", "ny", "ọ", "sh", "ụ"}, to = {"g" .. p[1], "g" .. p[2], "g" .. p[3], "i" .. p[1], "k" .. p[1], "k" .. p[2], "n" .. p[1], "n" .. p[2], "n" .. p[3], "o" .. p[1], "s" .. p[1], "u" .. p[1]} }, } m["ii"] = { "นอซู", 34235, "tbq-nlo", "Yiii", translit = "ii-translit", } m["ik"] = { "Inupiaq", 27183, "esx-inu", "Latn", sort_key = { from = { "ch", "ġ", "dj", "ḷ", "ł̣", "ñ", "ng", "r̂", "sr", "zr", -- 2 chars "ł", "ŋ", "ʼ" -- 1 char }, to = { "c" .. p[1], "g" .. p[1], "h" .. p[1], "l" .. p[1], "l" .. p[3], "n" .. p[1], "n" .. p[2], "r" .. p[1], "s" .. p[1], "z" .. p[1], "l" .. p[2], "n" .. p[2], "z" .. p[2] } }, } m["io"] = { "อีโด", 35224, "art", "Latn", } m["is"] = { "ไอซ์แลนด์", 294, "gmq-ins", "Latn", sort_key = { from = {"á", "ð", "é", "í", "ó", "ú", "ý", "þ", "æ", "ö"}, to = {"a" .. p[1], "d" .. p[1], "e" .. p[1], "i" .. p[1], "o" .. p[1], "u" .. p[1], "y" .. p[1], "z" .. p[1], "z" .. p[2], "z" .. p[3]} }, standard_chars = "AaÁáBbDdÐðEeÉéFfGgHhIiÍíJjKkLlMmNnOoÓóPpRrSsTtUuÚúVvXxYyÝýÞþÆæÖö" .. c.punc, } m["it"] = { "อิตาลี", 652, "roa-itr", "Latn", ancestors = "roa-oit", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove}, standard_chars = "AaÀàBbCcDdEeÈèÉéFfGgHhIiÌìLlMmNnOoÒòPpQqRrSsTtUuÙùVvZz" .. c.punc, } m["iu"] = { "อินุกติตุต", 29921, "esx-inu", "Cans, Latn", translit = { Cans = "cr-translit" }, override_translit = true, } m["ja"] = { "ญี่ปุ่น", 5287, "jpx", "Jpan, Latn, Brai", ancestors = "ja-ear", translit = s["jpx-translit"], link_tr = true, display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["jv"] = { "ชวา", 33549, "poz", "Latn, Java, Arab", ancestors = "kaw", translit = { Java = "Java-translit" }, link_tr = true, strip_diacritics = { Latn = {remove_diacritics = c.circ} -- Modern jv don't use ê }, sort_key = { Latn = { from = {"å", "dh", "é", "è", "ng", "ny", "th"}, to = {"a" .. p[1], "d" .. p[1], "e" .. p[1], "e" .. p[2], "n" .. p[1], "n" .. p[2], "t" .. p[1]} }, }, } m["ka"] = { "จอร์เจีย", 8108, "ccs-gzn", "Geor, Geok, Hebr", -- Hebr is used to write Judeo-Georgian ancestors = "ka-mid", -- Geor, Geok translit in [[Module:scripts/data]] override_translit = true, strip_diacritics = { Geor = s["ka-stripdiacritics"], Geok = s["ka-stripdiacritics"], }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["kg"] = { "คองโก", 33702, "bnt-kng", "Latn", } m["ki"] = { "เกโกโย", 33587, "bnt-kka", "Latn", } m["kj"] = { "Kwanyama", 1405077, "bnt-ova", "Latn", } m["kk"] = { "คาซัค", 9252, "trk-kno", "Cyrl, Latn, kk-Arab", translit = { Cyrl = { from = { "Ё", "ё", "Й", "й", "Нг", "нг", "Ӯ", "ӯ", -- 2 chars; are "Ӯ" and "ӯ" actually used? "А", "а", "Ә", "ә", "Б", "б", "В", "в", "Г", "г", "Ғ", "ғ", "Д", "д", "Е", "е", "Ж", "ж", "З", "з", "И", "и", "К", "к", "Қ", "қ", "Л", "л", "М", "м", "Н", "н", "Ң", "ң", "О", "о", "Ө", "ө", "П", "п", "Р", "р", "С", "с", "Т", "т", "У", "у", "Ұ", "ұ", "Ү", "ү", "Ф", "ф", "Х", "х", "Һ", "һ", "Ц", "ц", "Ч", "ч", "Ш", "ш", "Щ", "щ", "Ъ", "ъ", "Ы", "ы", "І", "і", "Ь", "ь", "Э", "э", "Ю", "ю", "Я", "я", -- 1 char }, to = { "E", "e", "İ", "i", "Ñ", "ñ", "U", "u", "A", "a", "Ä", "ä", "B", "b", "V", "v", "G", "g", "Ğ", "ğ", "D", "d", "E", "e", "J", "j", "Z", "z", "İ", "i", "K", "k", "Q", "q", "L", "l", "M", "m", "N", "n", "Ñ", "ñ", "O", "o", "Ö", "ö", "P", "p", "R", "r", "S", "s", "T", "t", "U", "u", "Ū", "ū", "Ü", "ü", "F", "f", "X", "x", "H", "h", "S", "s", "Ç", "ç", "Ş", "ş", "Ş", "ş", "", "", "Y", "y", "I", "ı", "", "", "É", "é", "Ü", "ü", "Ä", "ä", } } }, -- override_translit = true, sort_key = { Cyrl = { from = {"ә", "ғ", "ё", "қ", "ң", "ө", "ұ", "ү", "һ", "і"}, to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "у" .. p[2], "х" .. p[1], "ы" .. p[1]} }, }, standard_chars = { Cyrl = "АаӘәБбВвГгҒғДдЕеЁёЖжЗзИиЙйКкҚқЛлМмНнҢңОоӨөПпРрСсТтУуҰұҮүФфХхҺһЦцЧчШшЩщЪъЫыІіЬьЭэЮюЯя", c.punc }, } m["kl"] = { "กรีนแลนด์", 25355, "esx-inu", "Latn", sort_key = { from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} } } m["km"] = { "เขมร", 9205, "mkh-kmr", "Khmr", ancestors = "xhm", translit = "Khmr-translit", } m["kn"] = { "กันนฑะ", 33673, "dra-kan", "Knda, Tutg", ancestors = "dra-mkn", -- Knda translit in [[Module:scripts/data]] } m["ko"] = { "เกาหลี", 9176, "qfa-kor", "Kore, Brai", ancestors = "ko-ear", translit = { Kore = "ko-translit", }, -- Kore strip_diacritics in [[Module:scripts/data]] } m["kr"] = { "กานูรี", 36094, "ssa-sah", "Latn, Arab", -- the sortkey and strip_diacritics are only for standard Kanuri; when dialectal entries get added, someone will have to work out how the dialects should be represented orthographically strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.breve} }, sort_key = { Latn = { from = {"ǝ", "ny", "ɍ", "sh"}, to = {"e" .. p[1], "n" .. p[1], "r" .. p[1], "s" .. p[1]} }, }, } m["ks"] = { "แคชเมียร์", 33552, "inc-kas", "ks-Arab, Deva, Shrd, Latn", translit = { ["ks-Arab"] = "ks-Arab-translit", Deva = "Deva-translit", -- Shrd translit in [[Module:scripts/data]] }, } -- "kv" is treated as "koi", "kpv", see [[WT:LT]] m["kw"] = { "คอร์นวอลล์", 25289, "cel-brs", "Latn", ancestors = "cnx", sort_key = { from = {"ch"}, to = {"c" .. p[1]} }, } m["ky"] = { "คีร์กีซ", 9255, "trk-kkp", "Cyrl, Latn, Arab", translit = { Cyrl = "ky-translit" }, override_translit = true, sort_key = { Cyrl = { from = {"ё", "ң", "ө", "ү"}, to = {"е" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1]} }, }, } m["la"] = { "ละติน", 397, "itc-laf", "Latn, Ital", ancestors = "itc-ola", --translit = "la-translit", -- already handled in Module:headword & Module:links -- Ital translit in [[Module:scripts/data]] (NOTE: formerly not present, probably an accidental omission) display_text = { Latn = s["itc-Latn-displaytext"] }, strip_diacritics = { Latn = s["itc-Latn-stripdiacritics"] }, sort_key = { Latn = s["itc-Latn-sortkey"] }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiLlMmNnOoPpQqRrSsTtUuVvXx", c.punc }, } m["lb"] = { "ลักเซมเบิร์ก", 9051, "gmw-hgm", "Latn, Brai", ancestors = "gmw-cfr", sort_key = { Latn = { from = {"ä", "ë", "é"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} }, }, } m["lg"] = { "ลูกันดา", 33368, "bnt-nyg", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ}, sort_key = { from = {"ŋ"}, to = {"n" .. p[1]} }, } m["li"] = { "ลิมเบิร์ก", 102172, "gmw-frk", "Latn", ancestors = "dum", } m["ln"] = { "ลิงกาลา", 36217, "bnt-bmo", "Latn", sort_key = { remove_diacritics = c.acute .. c.circ .. c.caron, from = {"ɛ", "gb", "mb", "mp", "nd", "ng", "nk", "ns", "nt", "ny", "nz", "ɔ"}, to = {"e" .. p[1], "g" .. p[1], "m" .. p[1], "m" .. p[2], "n" .. p[1], "n" .. p[2], "n" .. p[3], "n" .. p[4], "n" .. p[5], "n" .. p[6], "n" .. p[7], "o" .. p[1]} }, } m["lo"] = { "ลาว", 9211, "tai-swe", "Laoo", -- also Tai Noi/Lao Buhan script translit = "Laoo-translit", --sort_key = "Laoo-sortkey", standard_chars = "0-9ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯ-ໝ" .. c.punc, } m["lt"] = { "ลิทัวเนีย", 9083, "bat-eas", "Latn", ancestors = "olt", display_text = "lt-common", strip_diacritics = "lt-common", sort_key = "lt-common", standard_chars = "AaĄąBbCcČčDdEeĘęĖėFfGgHhIiĮįYyJjKkLlMmNnOoPpRrSsŠšTtUuŲųŪūVvZzŽž" .. c.punc, } m["lu"] = { "Luba-Katanga", 36157, "bnt-lub", "Latn", } m["lv"] = { "ลัตเวีย", 9078, "bat-eas", "Latn", strip_diacritics = { -- This attempts to convert vowels with tone marks to vowels either with or without macrons. Specifically, there should be no macrons if the vowel is part of a diphthong (including resonant diphthongs such pìrksts -> pirksts not #pīrksts). What we do is first convert the vowel + tone mark to a vowel + tilde in a decomposed fashion, then remove the tilde in diphthongs, then convert the remaining vowel + tilde sequences to macroned vowels, then delete any other tilde. We leave already-macroned vowels alone: Both e.g. ar and ār occur before consonants. FIXME: This still might not be sufficient. from = {"([Ee])" .. c.cedilla, "[" .. c.grave .. c.circ .. c.tilde .."]", "([aAeEiIoOuU])" .. c.tilde .."?([lrnmuiLRNMUI])" .. c.tilde .. "?([^aAeEiIoOuU])", "([aAeEiIoOuU])" .. c.tilde .."?([lrnmuiLRNMUI])" .. c.tilde .."?$", "([iI])" .. c.tilde .. "?([eE])" .. c.tilde .. "?", "([aAeEiIuU])" .. c.tilde, c.tilde}, to = {"%1", c.tilde, "%1%2%3", "%1%2", "%1%2", "%1" .. c.macron} }, sort_key = { from = {"ā", "č", "ē", "ģ", "ī", "ķ", "ļ", "ņ", "š", "ū", "ž"}, to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "k" .. p[1], "l" .. p[1], "n" .. p[1], "s" .. p[1], "u" .. p[1], "z" .. p[1]} }, standard_chars = "AaĀāBbCcČčDdEeĒēFfGgĢģHhIiĪīJjKkĶķLlĻļMmNnŅņOoPpRrSsŠšTtUuŪūVvZzŽž" .. c.punc, } m["mg"] = { "มาลากาซี", 7930, "poz-bre", "Latn, Arab", } m["mh"] = { "มาร์แชลล์", 36280, "poz-mic", "Latn", sort_key = { from = {"ā", "ļ", "m̧", "ņ", "n̄", "o̧", "ō", "ū"}, to = {"a" .. p[1], "l" .. p[1], "m" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "u" .. p[1]} }, } m["mi"] = { "มาวรี", 36451, "poz-pep", "Latn", sort_key = { remove_diacritics = c.macron, from = {"ng", "wh"}, to = {"n" .. p[1], "w" .. p[1]} }, } m["mk"] = { "มาซิโดเนีย", 9296, "zls", "Cyrl, Polyt", ancestors = "cu", translit = { Cyrl = "mk-translit", -- FIXME: formerly no translit specified for Polyt; unclear if the default [[Module:grc-translit]] is -- acceptable, so we disable it for now Polyt = false, }, strip_diacritics = { Cyrl = { remove_diacritics = c.acute, remove_exceptions = {"Ѓ", "ѓ", "Ќ", "ќ"} }, }, sort_key = { Cyrl = { remove_diacritics = c.grave, remove_exceptions = {"ѓ", "ќ"}, from = {"ѓ", "ѕ", "ј", "љ", "њ", "ќ", "џ"}, to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "т" .. p[1], "ч" .. p[1]} }, }, -- Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { Cyrl = "АаБбВвГгДдЃѓЕеЖжЗзЅѕИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЌќУуФфХхЦцЧчЏџШш", c.punc }, } m["ml"] = { "มลยาฬัม", 36236, "dra-mal", "Mlym", override_translit = true, -- Mlym translit in [[Module:scripts/data]] } m["mn"] = { "มองโกเลีย", 9246, "xgn-cen", "Cyrl, Mong, Latn, Brai", ancestors = "cmg", translit = { Cyrl = "mn-translit", -- Mong translit in [[Module:scripts/data]] }, override_translit = true, -- Mong display_text and strip_diacritics in [[Module:scripts/data]] strip_diacritics = { Cyrl = {remove_diacritics = c.grave .. c.acute}, }, sort_key = { Cyrl = { remove_diacritics = c.grave, from = {"ё", "ө", "ү"}, to = {"е" .. p[1], "о" .. p[1], "у" .. p[1]} }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзИиЙйЛлМмНнОоӨөРрСсТтУуҮүХхЦцЧчШшЫыЬьЭэЮюЯя—", Brai = c.braille, c.punc }, } -- "mo" is treated as "ro", see [[WT:LT]] m["mr"] = { "มราฐี", 1571, "inc-sou", "Deva, Modi", ancestors = "omr", translit = { Deva = "Deva-translit", Modi = "Modi-translit", }, strip_diacritics = { Deva = { from = {"च़", "ज़", "झ़"}, to = {"च", "ज", "झ"} }, }, } m["ms"] = { "มาเลเซีย", 9237, "poz-mly", "Latn, ms-Arab", ancestors = "ms-cla", standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz", c.punc }, } m["mt"] = { "มอลตา", 9166, "sem-arb", "Latn", display_text = { from = {"'"}, to = {"’"} }, strip_diacritics = { from = {"’"}, to = {"'"}, }, ancestors = "sqr", sort_key = { from = { "ċ", "ġ", "ż", -- Convert into PUA so that decomposed form does not get caught by the next step. "([cgz])", -- Ensure "c" comes after "ċ", "g" comes after "ġ" and "z" comes after "ż". "g" .. p[1] .. "ħ", -- "għ" after initial conversion of "g". p[3], p[4], "ħ", "ie", p[5] -- Convert "ċ", "ġ", "ħ", "ie", "ż" into final output. }, to = { p[3], p[4], p[5], "%1" .. p[1], "g" .. p[2], "c", "g", "h" .. p[1], "i" .. p[1], "z" } }, } m["my"] = { "พม่า", 9228, "tbq-brm", "Mymr", ancestors = "obr", translit = "my-translit", override_translit = true, sort_key = { from = {"ျ", "ြ", "ွ", "ှ", "ဿ"}, to = {"္ယ", "္ရ", "္ဝ", "္ဟ", "သ္သ"} }, } m["na"] = { "นาอูรู", 13307, "poz-mic", "Latn", } m["nb"] = { "นอร์เวย์แบบบุ๊กมอล", 25167, "gmq", "Latn", wikimedia_codes = "no", ancestors = "gmq-mno, da", -- da as an (but not the) ancestor of nb was agreed on - do not change without discussion sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["nd"] = { "Northern Ndebele", 35613, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["ne"] = { "เนปาล", 33823, "inc-pah", "Deva, Newa", translit = { Deva = "Deva-translit", Newa = "Newa-translit", }, } m["ng"] = { "Ndonga", 33900, "bnt-ova", "Latn", } m["nl"] = { "ดัตช์", 7411, "gmw-frk", "Latn, Brai", ancestors = "dum", sort_key = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.ringabove .. c.cedilla .. "'"}, }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzÄäËëÏïÖöÜü", Brai = c.braille, c.punc }, } m["nn"] = { "นอร์เวย์แบบนือนอสก์", 25164, "gmq-wes", "Latn", ancestors = "gmq-mno", strip_diacritics = { remove_diacritics = c.grave .. c.acute, }, sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["no"] = { "นอร์เวย์", 9043, "gmq-wes", "Latn", ancestors = "gmq-mno", sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["nr"] = { "Southern Ndebele", 36785, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["nv"] = { "นาวาโฮ", 13310, "apa", "Latn, Brai", sort_key = { remove_diacritics = c.acute .. c.ogonek, from = { "chʼ", "tłʼ", "tsʼ", -- 3 chars "ch", "dl", "dz", "gh", "hw", "kʼ", "kw", "sh", "tł", "ts", "zh", -- 2 chars "ł", "ʼ" -- 1 char }, to = { "c" .. p[2], "t" .. p[2], "t" .. p[4], "c" .. p[1], "d" .. p[1], "d" .. p[2], "g" .. p[1], "h" .. p[1], "k" .. p[1], "k" .. p[2], "s" .. p[1], "t" .. p[1], "t" .. p[3], "z" .. p[1], "l" .. p[1], "z" .. p[2] } }, } m["ny"] = { "เจวา", 33273, "bnt-nys", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ}, sort_key = { from = {"ng'"}, to = {"ng"} }, } m["oc"] = { "อุตซิตา", 14185, "roa-ocr", "Latn, Hebr", ancestors = "pro", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla, from = {"([lns])·h"}, to = {"%1h"} }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["oj"] = { "โอจิบเว", 33875, "alg", "Cans, Latn", sort_key = { Latn = { from = {"aa", "ʼ", "ii", "oo", "sh", "zh"}, to = {"a" .. p[1], "h" .. p[1], "i" .. p[1], "o" .. p[1], "s" .. p[1], "z" .. p[1]} }, }, } m["om"] = { "ออโรโม", 33864, "cus-eas", "Latn, Ethi", } m["or"] = { "โอริยา", 33810, "inc-eas", "Orya", ancestors = "inc-mor", translit = "Orya-translit", } m["os"] = { "ออสซีเซีย", 33968, "xsc-sar", "Cyrl, Geor, Latn", ancestors = "oos", translit = { Cyrl = "os-translit", -- Geor translit in [[Module:scripts/data]] }, override_translit = true, display_text = { Cyrl = { from = {"æ"}, to = {"ӕ"} }, Latn = { from = {"ӕ"}, to = {"æ"} }, }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute, from = {"æ"}, to = {"ӕ"} }, Latn = { from = {"ӕ"}, to = {"æ"} }, }, sort_key = { Cyrl = { from = {"ӕ", "гъ", "дж", "дз", "ё", "къ", "пъ", "тъ", "хъ", "цъ", "чъ"}, to = {"а" .. p[1], "г" .. p[1], "д" .. p[1], "д" .. p[2], "е" .. p[1], "к" .. p[1], "п" .. p[1], "т" .. p[1], "х" .. p[1], "ц" .. p[1], "ч" .. p[1]} }, }, } m["pa"] = { "ปัญจาบ", 58635, "inc-pan", "Guru, pa-Arab", ancestors = "inc-opa", translit = { Guru = "Guru-translit", ["pa-Arab"] = "pa-Arab-translit", }, strip_diacritics = { ["pa-Arab"] = { remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna, from = {"ݨ", "ࣇ"}, to = {"ن", "ل"} }, }, } m["pi"] = { "บาลี", 36727, "inc-mid", "Latn, Brah, Deva, Beng, Sinh, Mymr, Thai, Lana, Laoo, Khmr, Cakm", --and also Khom ancestors = "sa", translit = { -- Brah translit in [[Module:scripts/data]] Deva = "Deva-translit", Beng = "Beng-translit", Sinh = "Sinh-translit", Mymr = "Mymr-translit", --Thai = "pi-translit", Lana = "Lana-translit", Laoo = "Laoo-translit", Khmr = "Khmr-translit", Cakm = "Cakm-translit", }, strip_diacritics = { Thai = { from = {"ึ", u(0xF700), u(0xF70F)}, -- FIXME: Not clear what's going on with the PUA characters here. to = {"ิํ", "ฐ", "ญ"} }, Mymr = { remove_diacritics = c.VS01, }, }, sort_key = { -- FIXME: This needs to be converted into the current standardized format. from = {"ā", "ī", "ū", "ḍ", "ḷ", "m[" .. c.dotabove .. c.dotbelow .. "]", "ṅ", "ñ", "ṇ", "ṭ", "([เโ])([ก-ฮ])", "([ເໂ])([ກ-ຮ])", "ᩔ", "ᩕ", "ᩖ", "ᩘ", "([ᨭ-ᨱ])ᩛ", "([ᨷ-ᨾ])ᩛ", "ᩤ", u(0xFE00), u(0x200D)}, to = {"a~", "i~", "u~", "d~", "l~", "m~", "n~", "n~~", "n~~~", "t~", "%2%1", "%2%1", "ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"} }, } m["pl"] = { "โปแลนด์", 809, "zlw-lch", "Latn", ancestors = "zlw-mpl", sort_key = { from = {"ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż"}, to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "l" .. p[1], "n" .. p[1], "o" .. p[1], "s" .. p[1], "z" .. p[1], "z" .. p[2]} }, standard_chars = "AaĄąBbCcĆćDdEeĘęFfGgHhIiJjKkLlŁłMmNnŃńOoÓóPpRrSsŚśTtUuWwYyZzŹźŻż" .. c.punc, } m["ps"] = { "ปาทาน", 58680, "ira-pat", "ps-Arab", strip_diacritics = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.zwarakay .. c.superalef}, } m["pt"] = { "โปรตุเกส", 5146, "roa-gap", "Latn, Brai", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.diaer .. c.cedilla, from = {"ª", "æ", "º", "œ"}, to = {"a", "ae", "o", "oe"} }, }, standard_chars = { Latn = "AaÁáÂâÃãBbCcÇçDdEeÉéÊêFfGgHhIiÍíJjLlMmNnOoÓóÔôÕõPpQqRrSsTtUuÚúVvXxZz", Brai = c.braille, c.punc }, } m["qu"] = { "เกชัว", 5218, "qwe", "Latn", } m["rm"] = { "โรมานช์", 13199, "roa-rhe", "Latn", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.small_e}, } m["ro"] = { "โรมาเนีย", 7913, "roa-eas", "Latn, Cyrl, Cyrs", translit = { Cyrl = "ro-translit" }, sort_key = { Latn = { remove_diacritics = c.grave .. c.acute, from = {"ă", "â", "î", "ș", "ț"}, to = {"a" .. p[1], "a" .. p[2], "i" .. p[1], "s" .. p[1], "t" .. p[1]} }, Cyrl = { from = {"ӂ"}, to = {"ж" .. p[1]} }, }, -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]]; presumably not present standard_chars = { Latn = "AaĂăÂâBbCcDdEeFfGgHhIiÎîJjLlMmNnOoPpRrSsȘșTtȚțUuVvXxZz", Cyrl = "АаБбВвГгДдЕеЖжӁӂЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЫыЬьЭэЮюЯя", c.punc }, } m["ru"] = { "รัสเซีย", 7737, "zle", "Cyrl, Brai", ancestors = "zle-mru", translit = { Cyrl = "ru-translit-Thai" }, display_text = { Cyrl = { from = {"'"}, to = {"’"} }, }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute .. c.diaer, remove_exceptions = {"Ё", "ё", "Ѣ̈", "ѣ̈", "Я̈", "я̈"}, from = {"’"}, to = {"'"}, }, }, sort_key = { Cyrl = { remove_diacritics = c.grave .. c.acute .. c.diaer, from = { "і", "ѣ", "ѳ", "ѵ" }, to = { "и" .. p[1], "ь" .. p[1], "я" .. p[2], "я" .. p[3] } }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя—", Brai = c.braille, (c.punc:gsub("'", "")) -- Exclude apostrophe. }, } m["rw"] = { "รวันดา-รุนดี", 3217514, "bnt-glb", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ .. c.macron .. c.caron}, } m["sa"] = { "สันสกฤต", 11059, "inc", "as-Beng, Bali, Beng, Bhks, Brah, Mymr, xwo-Mong, Deva, Gujr, Guru, Gran, Hani, Java, Kthi, Knda, Kawi, Khar, Khmr, Laoo, Mlym, mnc-Mong, Marc, Modi, Mong, Nand, Newa, Orya, Phag, Ranj, Saur, Shrd, Sidd, Sinh, Soyo, Lana, Takr, Taml, Tang, Telu, Thai, Tibt, Tutg, Tirh, Zanb", --and also Khom; script codes sorted by canonical name rather than code for [[MOD:sa-convert]] translit = { Beng = "Beng-translit", ["as-Beng"] = "Beng-translit", -- Brah translit in [[Module:scripts/data]] Deva = "Deva-translit", Gujr = "Gujr-translit", Guru = "Guru-translit", Java = "Java-translit", Kthi = "Kthi-translit", Khmr = "Khmr-translit", Knda = "Knda-translit", Lana = "Lana-translit", Laoo = "Laoo-translit", Mlym = "Mlym-translit", Modi = "Modi-translit", -- Mong, mnc-Mong, xwo-Mong translit in [[Module:scripts/data]] -- NOTE: Formerly used xal-translit for transliterating xwo-Mong but that only handles Cyrillic; it has -- code to transliterate xwo-Mong but it's broken so I've replaced it with the default xwo-translit. Mymr = "Mymr-translit", Orya = "Orya-translit", -- Shrd translit in [[Module:scripts/data]] -- Sidd translit in [[Module:scripts/data]] Sinh = "Sinh-translit", --Thai = "pi-translit", Taml = "Taml-translit", Telu = "Telu-translit", -- Tibt translit in [[Module:scripts/data]] }, -- Mong display_text and strip_diacritics in [[Module:scripts/data]] -- Tibt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] strip_diacritics = { Thai = { from = {"ึ", u(0xF700), u(0xF70F)}, -- FIXME: Not clear what's going on with the PUA characters here. to = {"ิํ", "ฐ", "ญ"} }, Mymr = { remove_diacritics = c.VS01, }, Deva = { remove_diacritics = c.udatta .. c.anudatta, }, }, sort_key = { Latn = { from = {"ā", "ī", "ū", "ḍ", "ḷ", "ḹ", "m[" .. c.dotabove .. c.dotbelow .. "]", "ṅ", "ñ", "ṇ", "ṛ", "ṝ", "ś", "ṣ", "ṭ"}, to = {"a~", "i~", "u~", "d~", "l~", "l~~", "m~", "n~", "n~~", "n~~~", "r~", "r~~", "s~", "s~~", "t~"}, }, --Thai = "Thai-sortkey", --Laoo = "Laoo-sortkey", Lana = { -- Tai Tham from = {"ᩔ", "ᩕ", "ᩖ", "ᩘ", "([ᨭ-ᨱ])ᩛ", "([ᨷ-ᨾ])ᩛ", "ᩤ"}, to = {"ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"}, }, Mymr = { remove_diacritics = c.VS01, }, -- FIXME: The previous sort key which mixed all scripts removed ZWJ; I don't know which script(s) this was -- intended for and there are no other languages which remove it in the sort key AFAIK. If it needs to be -- removed, specify the script(s) it needs to be removed under or add handling for the "all" script that applies -- regardless of script. --all = { -- remove_diacritics = c.ZWJ, --}, }, } m["sc"] = { "ซาร์ดิเนีย", 33976, "roa-sou", "Latn", } m["sd"] = { "สินธ์", 33997, "inc-snd", "sd-Arab, Deva, Sind, Khoj", translit = { Deva = "Deva-translit", Sind = "Sind-translit", ["sd-Arab"] = "sd-Arab-translit" }, strip_diacritics = { ["sd-Arab"] = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, from = {"ٱ"}, to = {"ا"} }, }, } m["se"] = { "ซามีเหนือ", 33947, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.macron .. c.dotbelow .. "'ˈ"}, sort_key = { from = {"á", "č", "đ", "ŋ", "š", "ŧ", "ž"}, to = {"a" .. p[1], "c" .. p[1], "d" .. p[1], "n" .. p[1], "s" .. p[1], "t" .. p[1], "z" .. p[1]} }, standard_chars = "AaÁáBbCcČčDdĐđEeFfGgHhIiJjKkLlMmNnŊŋOoPpRrSsŠšTtŦŧUuVvZzŽž" .. c.punc, } m["sg"] = { "ซังโก", 33954, "crp", "Latn", ancestors = "ngb", } m["sh"] = { "เซอร์โบ-โครเอเชีย", 9301, "zls", "Latn, Cyrl, Glag, Arab", ietf_subtag = "hbs", -- ISO 639-3 code, since "sh" is deprecated from ISO 639-1 wikimedia_codes = "sh, bs, hr, sr", strip_diacritics = { Latn = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"Ć", "ć", "Ś", "ś", "Ź", "ź"} }, Cyrl = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"З́", "з́", "С́", "с́"} }, }, sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"ć", "ś", "ź"}, from = {"č", "ć", "dž", "đ", "lj", "nj", "š", "ś", "ž", "ź"}, to = {"c" .. p[1], "c" .. p[2], "d" .. p[1], "d" .. p[2], "l" .. p[1], "n" .. p[1], "s" .. p[1], "s" .. p[2], "z" .. p[1], "z" .. p[2]} }, Cyrl = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"з́", "с́"}, from = {"ђ", "з́", "ј", "љ", "њ", "с́", "ћ", "џ"}, to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "с" .. p[1], "т" .. p[1], "ч" .. p[1]} }, }, standard_chars = { Latn = "AaBbCcČčĆćDdĐđEeFfGgHhIiJjKkLlMmNnOoPpRrSsŠšTtUuVvZzŽž", Cyrl = "АаБбВвГгДдЂђЕеЖжЗзИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЋћУуФфХхЦцЧчЏџШш", c.punc }, } m["si"] = { "สิงหล", 13267, "inc-ins", "Sinh", translit = "Sinh-translit", override_translit = true, } m["sk"] = { "สโลวัก", 9058, "zlw", "Latn", ancestors = "zlw-osk", sort_key = {remove_diacritics = c.acute .. c.circ .. c.diaer .. c.caron}, standard_chars = "AaÁáÄäBbCcČčDdĎďEeÉéFfGgHhIiÍíJjKkLlĹ弾MmNnŇňOoÓóÔôPpRrŔŕSsŠšTtŤťUuÚúVvYyÝýZzŽž" .. c.punc, } m["sl"] = { "สโลวีเนีย", 9063, "zls", "Latn", strip_diacritics = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.dgrave .. c.invbreve .. c.dotbelow, remove_exceptions = {"Ć", "ć", "Ǵ", "ǵ", "Ś", "ś", "Ź", "ź"}, from = {"Ə", "ə", "Ł", "ł"}, to = {"E", "e", "L", "l"}, }, sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dotabove .. c.ringabove .. c.dgrave .. c.invbreve .. c.dotbelow .. c.ringbelow .. c.ogonek, remove_exceptions = {"ć", "ǵ", "ś", "ź"}, from = {"ä", "č", "ć", "đ", "ə", "ë", "ǧ", "ǵ", "ï", "ł", "ö", "š", "ś", "ü", "ž", "ź"}, to = {"a" .. p[1], "c" .. p[1], "c" .. p[2], "d" .. p[1], "e", "e" .. p[1], "g" .. p[1], "g" .. p[2], "i" .. p[1], "l", "o" .. p[1], "s" .. p[1], "s" .. p[2], "u" .. p[1], "z" .. p[1], "z" .. p[2]}, }, standard_chars = "AaBbCcČčDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsŠšTtUuVvZzŽž" .. c.punc, } m["sm"] = { "ซามัว", 34011, "poz-pnp", "Latn", } m["sn"] = { "โชนา", 34004, "bnt-sho", "Latn", strip_diacritics = {remove_diacritics = c.acute}, } m["so"] = { "โซมาลี", 13275, "cus-som", "Latn, Arab, Osma", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ} }, } m["sq"] = { "แอลเบเนีย", 8748, "sqj", "Latn, Grek, ota-Arab, Elba, Todr, Vith", translit = { Elba = "Elba-translit", }, -- Grek display_text, sort_key in [[Module:scripts/data]] strip_diacritics = { Latn = { remove_diacritics = c.acute .. c.circ, from = {'^[ie] (%w)', '^të (%w)'}, to = {'%1', '%1'}, }, Grek = { -- Diacritic removal from Grek-stripdiacritics excluded. from = m_langdata.chars_substitutions["Grek-stripdiacritics"].from, to = m_langdata.chars_substitutions["Grek-stripdiacritics"].to, }, }, sort_key = { Latn = { remove_diacritics = c.acute .. c.circ .. c.tilde .. c.breve .. c.caron, from = {'^[ie] (%w)', '^të (%w)', 'ç', 'dh', 'ë', 'gj', 'll', 'nj', 'rr', 'sh', 'th', 'xh', 'zh'}, to = {'%1', '%1', 'c'..p[1], 'd'..p[1], 'e'..p[1], 'g'..p[1], 'l'..p[1], 'n'..p[1], 'r'..p[1], 's'..p[1], 't'..p[1], 'x'..p[1], 'z'..p[1]}, } -- TODO: Grek if the default sort key is unsuitable }, standard_chars = { Latn = "AaBbCcÇçDdEeËëFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvXxYyZz", c.punc }, } m["ss"] = { "สวาซี", 34014, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["st"] = { "ซูทู", 34340, "bnt-sts", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["su"] = { "ซุนดา", 34002, "poz-msa", "Latn, Sund, Arab", ancestors = "osn", translit = { Sund = "Sund-translit" }, } m["sv"] = { "สวีเดน", 9027, "gmq-eas", "Latn", ancestors = "gmq-osw-lat", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla .. "':", remove_exceptions = {"å"}, from = {"ø", "æ", "œ", "ß", "å", "aͤ", "oͤ"}, to = {"o", "ae", "oe", "ss", "z" .. p[1], "ä", "ö"} }, standard_chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvXxYyÅåÄäÖö" .. c.punc, } m["sw"] = { "สวาฮีลี", 7838, "bnt-swh", "Latn, Arab", sort_key = { Latn = { from = {"ng'"}, to = {"ng" .. p[1]} }, }, } m["ta"] = { "ทมิฬ", 5885, "dra-tam", "Taml", ancestors = "ta-mid", translit = "Taml-translit", override_translit = true, } m["te"] = { "เตลูกู", 8097, "dra-tel", "Telu", translit = "Telu-translit", override_translit = true, } m["tg"] = { "ทาจิก", 9260, "ira-swi", "Cyrl, fa-Arab, Latn", ancestors = "fa-cls", translit = { Cyrl = "tg-translit" }, override_translit = true, strip_diacritics = { Cyrl = s["tg-stripdiacritics"], Latn = s["tg-stripdiacritics"], }, sort_key = { Cyrl = { from = {"ғ", "ё", "ӣ", "қ", "ӯ", "ҳ", "ҷ"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "к" .. p[1], "у" .. p[1], "х" .. p[1], "ч" .. p[1]} }, }, } m["th"] = { "ไทย", 9217, "tai-swe", "Thai, Khomt, Brai", --translit = { -- Thai = "th-translit" --}, --sort_key = { -- Thai = "Thai-sortkey" --}, } m["ti"] = { "ทือกรึญญา", 34124, "sem-eth", "Ethi", translit = "Ethi-translit", } m["tk"] = { "เติร์กเมน", 9267, "trk-ogz", "Latn, Cyrl, Arab", strip_diacritics = { Latn = s["tk-stripdiacritics"], Cyrl = s["tk-stripdiacritics"], }, sort_key = { Latn = { from = {"ç", "ä", "ž", "ň", "ö", "ş", "ü", "ý"}, to = {"c" .. p[1], "e" .. p[1], "j" .. p[1], "n" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], "y" .. p[1]} }, Cyrl = { from = {"ё", "җ", "ң", "ө", "ү", "ә"}, to = {"е" .. p[1], "ж" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "э" .. p[1]} }, }, ancestors = "trk-eog", } m["tl"] = { "ตากาล็อก", 34057, "phi", "Latn, Tglg", translit = { Tglg = "tl-translit" }, override_translit = true, strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ} }, standard_chars = { Latn = "AaBbKkDdEeGgHhIiLlMmNnOoPpRrSsTtUuWwYy", c.punc }, sort_key = { Latn = "tl-sortkey", }, } m["tn"] = { "สวานา", 34137, "bnt-sts", "Latn", } m["to"] = { "ตองงา", 34094, "poz-ton", "Latn", strip_diacritics = {remove_diacritics = c.acute}, sort_key = {remove_diacritics = c.macron}, } m["tr"] = { "ตุรกี", 256, "trk-ogz", "Latn", ancestors = "ota", dotted_dotless_i = true, sort_key = { from = { -- Ignore circumflex, but account for capital Î wrongly becoming ı + circ due to dotted dotless I logic. "ı" .. c.circ, c.circ, "i", -- Ensure "i" comes after "ı". "ç", "ğ", "ı", "ö", "ş", "ü" }, to = { "i", "", "i" .. p[1], "c" .. p[1], "g" .. p[1], "i", "o" .. p[1], "s" .. p[1], "u" .. p[1] } }, standard_chars = "AaÂâBbCcÇçDdEeFfGgĞğHhIıİiÎîJjKkLlMmNnOoÖöPpRrSsŞşTtUuÛûÜüVvYyZz" .. c.punc, } m["ts"] = { "Tsonga", 34327, "bnt-tsr", "Latn", } m["tt"] = { "ตาตาร์", 25285, "trk-kbu", "Cyrl, Latn, tt-Arab", translit = { Cyrl = "tt-translit", ["tt-Arab"] = "tt-translit" }, --override_translit = true, -- enable override until Module code can detect Russian loans such as [[аэропорт]] dotted_dotless_i = true, sort_key = { Cyrl = { from = {"ә", "ў", "ғ", "ё", "җ", "қ", "ң", "ө", "ү", "һ"}, to = {"а" .. p[1], "в" .. p[1], "г" .. p[1], "е" .. p[1], "ж" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "х" .. p[1]} }, Latn = { from = { "i", -- Ensure "i" comes after "ı". "ä", "ə", "ç", "ğ", "ı", "ñ", "ŋ", "ö", "ɵ", "ş", "ü" }, to = { "i" .. p[1], "a" .. p[1], "a" .. p[2], "c" .. p[1], "g" .. p[1], "i", "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "s" .. p[1], "u" .. p[1] } }, }, } -- "tw" is treated as "ak", see [[WT:LT]] m["ty"] = { "ตาฮีตี", 34128, "poz-pep", "Latn", } m["ug"] = { "อุยกูร์", 13263, "trk-kar", "ug-Arab, Latn, Cyrl", ancestors = "chg", translit = { ["ug-Arab"] = "ug-translit-Thai", --Cyrl = "ug-translit", }, override_translit = true, } m["uk"] = { "ยูเครน", 8798, "zle", "Cyrl", ancestors = "zle-muk", translit = "uk-translit-Thai", strip_diacritics = {remove_diacritics = c.grave .. c.acute}, sort_key = { remove_diacritics = c.grave .. c.acute, from = { "ї", -- 2 chars "ґ", "є", "і" -- 1 char }, to = { "и" .. p[2], "г" .. p[1], "е" .. p[1], "и" .. p[1] } }, standard_chars = "АаБбВвГгДдЕеЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЮюЯя" .. c.punc:gsub("'", ""), -- Exclude apostrophe. } m["ur"] = { "อูรดู", 1617, "inc-hnd", "ur-Arab, Hebr", translit = { ["ur-Arab"] = "ur-translit" }, strip_diacritics = { ["ur-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 }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { ["ur-Arab"] = "ایببپتثجچحخدذرزژسشصضطظعغفقکگلࣇڷمنݨوؤہھئٹڈڑآے", c.punc, }, } m["uz"] = { "อุซเบก", 9264, "trk-kar", "Latn, Cyrl, fa-Arab", ancestors = "chg", translit = { Cyrl = "uz-translit" }, sort_key = { Latn = { from = {"oʻ", "gʻ", "sh", "ch", "ng"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3], "z" .. p[4], "z" .. p[5]} }, Cyrl = { from = {"ё", "ў", "қ", "ғ", "ҳ"}, to = {"е" .. p[1], "я" .. p[1], "я" .. p[2], "я" .. p[3], "я" .. p[4]} }, }, strip_diacritics = { ["fa-Arab"] = "ar-stripdiacritics", }, } m["ve"] = { "เวนดา", 32704, "bnt-bso", "Latn", } m["vi"] = { "เวียดนาม", 9199, "mkh-vie", "Latn, Hani", ancestors = "mkh-mvi", --translit = {Latn = "vi-translit"}, -- already handled in Module:headword & Module:links sort_key = { Latn = "vi-sortkey", Hani = "Hani-sortkey", }, } m["vo"] = { "โวลาปุก", 36986, "art", "Latn", } m["wa"] = { "วัลลูน", 34219, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["wo"] = { "โวลอฟ", 34257, "alv-fwo", "Latn, Arab, Gara", } m["xh"] = { "โคซา", 13218, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["yi"] = { "ยิดดิช", 8641, "gmw-hgm", "Hebr, Latn", ancestors = "gmh", translit = { Hebr = "yi-translit", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["yo"] = { "โยรูบา", 34311, "alv-yor", "Latn, Arab", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.macron} }, sort_key = { Latn = { from = {"ẹ", "ɛ", "gb", "ị", "kp", "ọ", "ɔ", "ṣ", "sh", "ụ"}, to = {"e" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "k" .. p[1], "o" .. p[1], "o" .. p[1], "s" .. p[1], "s" .. p[1], "u" .. p[1]} }, }, } m["za"] = { "จ้วง", 13216, "tai", "Latn, Hani", sort_key = { Latn = "za-sortkey", Hani = "Hani-sortkey", }, } m["zh"] = { "จีน", 7850, "zhx", "Hants, Latn, Bopo, Nshu, Brai", ancestors = "ltc", generate_forms = "zh-generateforms", translit = { Hani = "zh-translit", Bopo = "zh-translit", }, sort_key = { Hani = "Hani-sortkey" }, } m["zu"] = { "ซูลู", 10179, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } return require("Module:languages").finalizeData(m, "language") mixb844lka848jxv6u8klvpt8l8ictc เคียว 0 36840 5729041 5723907 2026-07-19T23:21:40Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729041 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == [[ไฟล์:20.Falz.JPG|thumb|เคียว (เครื่องมือ)]] === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|lo|ຄຽວ,ກ່ຽວ}}, {{cog|nod|ᨤ᩠ᨿᩅ}}, {{cog|khb|ᦵᦆᧁ}}, {{cog|blt|ꪀꪸ꪿ꪫ}}, {{cog|tdd|ᥑᥥᥝᥰ}} ==== คำนาม ==== {{th-noun}} # [[เครื่องมือ]][[เกี่ยว]][[ข้าว]][[และ]][[หญ้า]][[เป็นต้น]] [[ทำ]][[ด้วย]][[เหล็ก]] [[รูปโค้ง]] [[มี]][[คม]] === รากศัพท์ 2 === ==== คำกริยา ==== {{th-verb}} # [[รีบ]][[ไป]], [[รีบ]][[มา]], [[เครียว]] [[หรือ]] [[เขียว]] [[ก็]][[ใช้]] == ภาษาคำเมือง == === คำนาม === {{nod-noun}} # {{altform|nod|ᨤ᩠ᨿᩅ}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᨤ᩠ᨿᩅ|t=[[รังแก]], [[เย้า]], [[กวน]]}} 41pomg1ky67r94uplyfbf1ayqjz2ifd 5729042 5729041 2026-07-19T23:22:28Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729042 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == [[ไฟล์:20.Falz.JPG|thumb|เคียว (เครื่องมือ)]] === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|lo|ຄຽວ,ກ່ຽວ}}, {{cog|nod|ᨤ᩠ᨿᩅ}}, {{cog|khb|ᦵᦆᧁ}}, {{cog|blt|ꪀꪸ꪿ꪫ}}, {{cog|tdd|ᥑᥥᥝᥰ}} ==== คำนาม ==== {{th-noun}} # [[เครื่องมือ]][[เกี่ยว]][[ข้าว]][[และ]][[หญ้า]][[เป็นต้น]] [[ทำ]][[ด้วย]][[เหล็ก]] [[รูปโค้ง]] [[มี]][[คม]] === รากศัพท์ 2 === ==== คำกริยา ==== {{th-verb}} # [[รีบ]][[ไป]], [[รีบ]][[มา]], [[เครียว]] [[หรือ]] [[เขียว]] [[ก็]][[ใช้]] == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xeːw˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨤ᩠ᨿᩅ}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᨤ᩠ᨿᩅ|t=[[รังแก]], [[เย้า]], [[กวน]]}} 14ko8oi8qozjaabebukvyuctlq3ag3r บิ่น 0 37065 5729049 1882458 2026-07-19T23:34:28Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729049 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron}} === คำกริยา === {{th-verb}} # [[แตก]][[ลิ]][[ไป]][[เล็กน้อย]] ([[ที่]][[คม]] [[ที่]][[แง่]] [[หรือ]][[ที่]][[ยอด]]) #: {{ux|th|มีดบิ่น}} #: {{ux|th|ชามปากบิ่น}} === คำคุณศัพท์ === {{th-adj}} # [[บ้า]][[อย่าง]][[หุนหันพลันแล่น]], [[บ้าบิ่น]] [[ก็]][[ว่า]] == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/bin˨˩/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᨷᩥ᩠᩵ᨶ|t=[[หัน]]}} ptf1yzty2b1f2cqr2y33heu6pqpom7g ᨲᩩ᩠᩶ᨿ 0 37691 5729044 3325431 2026-07-19T23:23:59Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729044 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=ตุ้ย}} === การออกเสียง === * {{IPA|nod|/tuj˦˦ʔ/|a=เชียงใหม่}} === คำคุณศัพท์ === {{nod-adj}} # [[อ้วน]], [[สมบูรณ์]] 0q0jz6broxlq92ww38u5jq3prc0unvj โค่น 0 38017 5729416 5686283 2026-07-20T08:58:02Z Heavenchris 5375 5729416 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron}} === รากศัพท์ === {{cog|zzj|kunh}}, {{cog|za|goenh}} === คำกริยา === {{th-verb}} # {{lb|th|สกรรม|อกรรม}} [[ล้ม]][[หรือ]][[ทำ]][[ให้]]ล้ม[[ลง]] #: {{ux|th|ต้นไม้โค่น}} #: {{ux|th|โค่นต้นไม้}} # {{lb|th|อกรรม}} [[ทลาย]]ลง #: {{ux|th|ยอดปรางค์โค่น}} # {{lb|th|สกรรม|โดยปริยาย}} ทำให้[[หมด]][[ไป]]หรือ[[สิ้น]]ไป #: {{ux|th|โค่นอำนาจ}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/koːn˦˨/|a=เชียงใหม่}} === คำกริยา === {{nod-verb|tl=1}} # {{lb|nod|อกรรม|สกรรม}} {{alternative form of|nod|ᨣᩰᩫ᩠᩵ᨶ}} iqtdd4q6gjh9rl8gn5oqcm542vbb0t5 ဢီႇဝုၺ်း 0 40219 5729329 1416377 2026-07-20T06:06:48Z Alifshinobi 397 /* ภาษาไทใหญ่ */ 5729329 wikitext text/x-wiki == ภาษาไทใหญ่ == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|nod|ᩋᩦ᩵ᩅᩩ᩠ᨿ}} === การออกเสียง === {{shn-pron|ဢီႇ-ဝုၺ်း}} === คำนาม === {{shn-noun|တူဝ်}} # [[ชะนี]] 4gaoxf7a89q4274ntdlhw7p1doveyr2 มอดูล:es-headword 828 40573 5729254 5724478 2026-07-20T04:14:39Z Octahedron80 267 5729254 Scribunto text/plain local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local rfind = mw.ustring.find local rmatch = mw.ustring.match local require_when_needed = require("Module:utilities/require when needed") local m_table = require("Module:table") local com = require("Module:es-common") local en_utilities_module = "Module:en-utilities" local es_verb_module = "Module:es-verb" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local inflection_utilities_module = "Module:inflection utilities" local romut_module = "Module:romance utilities" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local m_string_utilities = require_when_needed("Module:string utilities") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local lang = require("Module:languages").getByCode("es") local langname = --[[lang:getCanonicalName()]] lang:getCategoryName() local insert = table.insert local remove = table.remove local rsub = com.rsub local sort = table.sort local ulower = mw.ustring.lower local usub = mw.ustring.sub local uupper = mw.ustring.upper local function track(page) require("Module:debug").track("es-headword/" .. page) return true end local list_param = {list = true, disallow_holes = true} local boolean_param = {type = "boolean"} -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) 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 parargs = frame:getParent().args local params = { ["head"] = list_param, ["id"] = true, ["splithyph"] = boolean_param, ["nolink"] = boolean_param, ["nolinkhead"] = {alias_of = "nolink"}, ["json"] = boolean_param, ["pagename"] = true, -- for testing } if pos_functions[poscat_th] then for key, val in pairs(pos_functions[poscat_th].params) do params[key] = val end end local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolink then if #heads == 0 then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph) if #heads == 0 then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) heads[i] = head end end end end local data = { lang = lang, pos_category = pos_functions[poscat_th] and pos_functions[poscat_th].pos_category or poscat_th, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, checkredlinks = pos_functions[poscat_th] and pos_functions[poscat_th].redlink_pos or true, } if pagename:find("^%-") and poscat_th ~= "รูปปัจจัย" then data.is_suffix = true data.pos_category = "ปัจจัย" data.checkredlinks = true local singular_poscat = --[[m_en_utilities.singularize(poscat)]] poscat_th insert(data.categories, "ปัจจัยสร้าง" .. singular_poscat .. langname) insert(data.inflections, {label = "ปัจจัยสร้าง" .. singular_poscat}) end local pagename_lower = ulower(pagename) for _, ch in ipairs{"jh", "kh", "ph", "qü", "sh", "th", "tl", "ts", "tz", "wh", "zh", "ze", "zi"} do if pagename_lower:find(ch) then insert(data.categories, "ศัพท์" .. langname .. "ที่สะกดด้วย " .. uupper(ch)) end end if pos_functions[poscat_th] then pos_functions[poscat_th].func(args, data, frame, is_suffix) end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture -- replace expression. lemma = m_string_utilities.replacement_escape(lemma) return (term:gsub("#", lemma)) -- discard second retval 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, } end -- Insert default plurals generated when a given plural had the value of + and default plurals were fetched as a result. -- `plobj` is the parsed object whose `term` field is "+". `defpls` is the list of default plurals. `dest` is the list -- into which the plurals are inserted (which inherit their qualifiers and labels from `plobj`). local function insert_defpls(defpls, plobj, dest) if not defpls then -- Happens e.g. with [[S.A.]] where the default plural algorithm returns nothing. return end if #defpls == 1 then plobj.term = defpls[1] insert(dest, plobj) else for _, defpl in ipairs(defpls) do local newplobj = m_table.shallowCopy(plobj) newplobj.term = defpl insert(dest, newplobj) end end end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function do_adjective(args, data, is_superlative) local feminines = {} local masculine_plurals = {} local feminine_plurals = {} -- Use "participle" not "past participle" for categories such as 'invariable participles' local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = --[[m_en_utilities.singularize(category_plpos)]] category_plpos if args.sp then local romut = require(romut_module) if not romut.allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(romut.allowed_special_indicators) do insert(indicators, "'" .. indic .. "'") end sort(indicators) error("Special inflection indicator beginning can only be " .. mw.text.listToText(indicators) .. ": " .. args.sp) end end local lemma = data.pagename local function fetch_inflections(field) local retval = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", } if not retval[1] then return {{term = "+"}} end return retval end local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if args.inv then -- invariable adjective insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")}) insert(data.categories, category_plpos .. "ผันรูปไม่ได้" .. langname) if args.sp or args.f[1] or args.pl[1] or args.mpl[1] or args.fpl[1] then error("Can't specify inflections with an invariable " .. category_pos) end elseif args.fonly then -- feminine-only if args.f[1] then error("Can't specify explicit feminines with feminine-only " .. category_pos) end if args.pl[1] then error("Can't specify explicit plurals with feminine-only " .. category_pos .. ", use fpl=") end if args.mpl[1] then error("Can't specify explicit masculine plurals with feminine-only " .. category_pos) end local argsfpl = fetch_inflections("fpl") for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then -- Generate default feminine plural. local defpls = com.make_plural(lemma, "f", args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, fpl, feminine_plurals) else fpl.term = replace_hash_with_lemma(fpl.term, lemma) insert(feminine_plurals, fpl) end end insert(data.inflections, {label = "เพศหญิงเท่านั้น"}) insert_inflection(feminine_plurals, "เพศหญิงพหูพจน์", "f|p") else -- Gather feminines. for _, f in ipairs(fetch_inflections("f")) do if f.term == "+" then -- Generate default feminine. f.term = com.make_feminine(lemma, args.sp) else f.term = replace_hash_with_lemma(f.term, lemma) end insert(feminines, f) end local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(feminines[1]) if fem_like_lemma then insert(data.categories, langname .. " epicene " .. category_plpos) end local mpl_field = "mpl" local fpl_field = "fpl" if args.pl[1] then if args.mpl[1] or args.fpl[1] then error("Can't specify both pl= and mpl=/fpl=") end mpl_field = "pl" fpl_field = "pl" end local argsmpl = fetch_inflections(mpl_field) local argsfpl = fetch_inflections(fpl_field) for _, mpl in ipairs(argsmpl) do if mpl.term == "+" then -- Generate default masculine plural. local defpls = com.make_plural(lemma, "m", args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, mpl, masculine_plurals) else mpl.term = replace_hash_with_lemma(mpl.term, lemma) insert(masculine_plurals, mpl) end end for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then for _, f in ipairs(feminines) do -- Generate default feminine plural; f is a table. local defpls = com.make_plural(f.term, "f", args.sp) if not defpls then error("Unable to generate default plural of '" .. f.term .. "'") end for _, defpl in ipairs(defpls) do local fplobj = m_table.shallowCopy(fpl) fplobj.term = defpl m_headword_utilities.combine_termobj_qualifiers_labels(fplobj, f) insert(feminine_plurals, fplobj) end end else fpl.term = replace_hash_with_lemma(fpl.term, lemma) insert(feminine_plurals, fpl) end end parse_and_insert_inflection(data, args, "mapoc", "เพศชายเอกพจน์ก่อนคำนาม") local fem_pl_like_masc_pl = masculine_plurals[1] and feminine_plurals[1] and m_table.deepEquals(masculine_plurals, feminine_plurals) local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(masculine_plurals[1]) if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then -- actually invariable insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")}) insert(data.categories, category_plpos .. "ผันรูปไม่ได้" .. langname) else -- Make sure there are feminines given and not same as lemma. if not fem_like_lemma then insert_inflection(feminines, "เพศหญิง", "f|s") elseif args.gneut then data.genders = {"gneut"} else data.genders = {"mf"} end if fem_pl_like_masc_pl then if args.gneut then insert_inflection(masculine_plurals, "พหูพจน์", "p") else insert_inflection(masculine_plurals, "เพศชายและเพศหญิงพหูพจน์", "p") end else insert_inflection(masculine_plurals, "เพศชายพหูพจน์", "m|p") insert_inflection(feminine_plurals, "เพศหญิงพหูพจน์", "f|p") end end end parse_and_insert_inflection(data, args, "comp", "ขั้นกว่า") parse_and_insert_inflection(data, args, "sup", "ขั้นสุด") parse_and_insert_inflection(data, args, "dim", "ตัวบอกความเล็ก") parse_and_insert_inflection(data, args, "aug", "ตัวบอกความใหญ่") if args.irreg and is_superlative then insert(data.categories, category_plpos .. "ขั้นสุดไม่ปรกติ" .. langname) end end local function get_adjective_params(adjtype) local params = { ["inv"] = boolean_param, --invariable ["sp"] = true, -- special indicator: "first", "first-last", etc. } local function ins_infl(field) params[field] = list_param --feminine form(s) end ins_infl("f") -- feminine form(s) ins_infl("pl") -- plural override(s) ins_infl("mpl") -- masculine plural override(s) ins_infl("fpl") -- feminine plural override(s) if adjtype == "base" then ins_infl("mapoc") --masculine apocopated (before a noun) ins_infl("comp") --comparative(s) ins_infl("sup") --superlative(s) ins_infl("dim") --diminutive(s) ins_infl("aug") --augmentative(s) params["fonly"] = boolean_param -- feminine only params["gneut"] = boolean_param -- gender-neutral adjective e.g. [[latine]] params["hascomp"] = true -- has comparative end if adjtype == "sup" then params["irreg"] = boolean_param end return params end pos_functions["คำคุณศัพท์"] = { params = get_adjective_params("base"), func = do_adjective, } pos_functions["รูปกริยาขยายอดีตกาล"] = { params = get_adjective_params("part"), func = do_adjective, redlink_pos = "รูปกริยาขยาย", } pos_functions["ตัวกำหนด"] = { params = get_adjective_params("det"), func = do_adjective, } pos_functions["คำสรรพนาม"] = { params = get_adjective_params("pron"), func = do_adjective, } pos_functions["คำคุณศัพท์ขั้นกว่า"] = { params = get_adjective_params("comp"), func = do_adjective, pos_category = "คำคุณศัพท์", } pos_functions["คำคุณศัพท์ขั้นสุด"] = { params = get_adjective_params("sup"), func = function(args, data) do_adjective(args, data, true) end, pos_category = "คำคุณศัพท์", } ----------------------------------------------------------------------------------------- -- Adverbs -- ----------------------------------------------------------------------------------------- pos_functions["คำกริยาวิเศษณ์"] = { params = { ["sup"] = list_param, --superlative(s) }, func = function(args, data) parse_and_insert_inflection(data, args, "sup", "ขั้นสุด") end, } ----------------------------------------------------------------------------------------- -- Numerals -- ----------------------------------------------------------------------------------------- pos_functions["เลขเชิงการนับ"] = { params = { ["f"] = list_param, --feminine(s) ["mapoc"] = list_param, --masculine apocopated form(s) }, func = function(args, data) insert(data.categories, 1, "เลขเชิงการนับ" .. langname) if args.f[1] then insert(data.genders, "m") parse_and_insert_inflection(data, args, "f", "เพศหญิง") end parse_and_insert_inflection(data, args, "mapoc", "เพศชายก่อนคำนาม") end, pos_category = "เลข", } ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet( {"m", "f", "mf", "mfbysense", "mfequiv", "gneut", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "gneut-p", "n-p", "?", "?-p"} ) local function validate_genders(genders) for _, g in ipairs(genders) do if type(g) == "table" then g = g.spec end if not allowed_genders[g] then error("Unrecognized gender: " .. g) end end end -- Display additional inflection information for a noun local function do_noun(args, data, is_proper) local is_plurale_tantum = false local has_singular = false local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = --[[m_en_utilities.singularize(category_plpos)]] category_plpos validate_genders(args[1]) data.genders = args[1] local saw_m = false local saw_f = false local saw_gneut = false local gender_for_irreg_ending, gender_for_make_plural -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if type(g) == "table" then g = g.spec end if g:find("-p$") then is_plurale_tantum = true else has_singular = true if g == "m" or g == "mf" or g == "mfbysense" then saw_m = true end if g == "f" or g == "mf" or g == "mfbysense" then saw_f = true end if g == "gneut" then saw_gneut = true end end end if saw_m and saw_f then gender_for_irreg_ending = "mf" elseif saw_f then gender_for_irreg_ending = "f" else gender_for_irreg_ending = "m" end gender_for_make_plural = saw_gneut and "gneut" or gender_for_irreg_ending local lemma = data.pagename local plurals = {} if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. category_pos) end insert(data.inflections, {label = glossary_link("พหูพจน์เท่านั้น")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], splitchar = ",", } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" then error(("Unexpected plural code '%s'"):format(mode)) end end if mode == "?" then -- Plural is unknown insert(data.categories, langname .. " " .. category_plpos .. " with unknown or uncertain plurals") elseif mode == "!" then -- Plural is not attested insert(data.inflections, {label = "plural not attested"}) insert(data.categories, langname .. " " .. category_plpos .. " with unattested plurals") if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural insert(data.categories, category_plpos .. "นับไม่ได้" .. langname) -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert(data.inflections, {label = "โดยปกติ" .. glossary_link("นับไม่ได้")}) insert(data.categories, category_plpos .. "นับได้" .. langname) else insert(data.inflections, {label = glossary_link("นับไม่ได้")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural insert(data.inflections, {label = glossary_link("นับได้") .. "และ" .. glossary_link("นับไม่ได้")}) insert(data.categories, category_plpos .. "นับไม่ได้" .. langname) insert(data.categories, category_plpos .. "นับได้" .. langname) elseif plurals[1] then -- Countable nouns insert(data.categories, category_plpos .. "นับได้" .. langname) else -- Uncountable nouns insert(data.categories, category_plpos .. "นับไม่ได้" .. langname) end end -- Gather plurals, handling requests for default plurals. local has_default_or_hash = false for _, pl in ipairs(plurals) do if pl.term:find("^%+") or pl.term:find("#") then has_default_or_hash = true break end end if has_default_or_hash then local newpls = {} for _, pl in ipairs(plurals) do if pl.term == "+" then local default_pls = com.make_plural(lemma, gender_for_make_plural) insert_defpls(default_pls, pl, newpls) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) local default_pls = com.make_plural(lemma, gender_for_make_plural, pl.term) insert_defpls(default_pls, pl, newpls) else pl.term = replace_hash_with_lemma(pl.term, lemma) insert(newpls, pl) end end plurals = newpls end end if #plurals > 1 then insert(data.categories, langname .. " " .. category_plpos .. " with multiple plurals") end -- Gather masculines/feminines. For each one, generate the corresponding plural(s). `field` is the name of the -- field containing the masculine or feminine forms (normally "m" or "f"); `gender` is "m" or "f" for the gender -- of the forms; `inflect` is a function of one or two arguments to generate the default masculine or feminine from -- the lemma (the arguments are the lemma and optionally a "special" flag to indicate how to handle multiword -- lemmas, and the function is normally make_feminine or make_masculine from [[Module:es-common]]); and -- `default_plurals` is a list into which the corresponding default plurals of the gathered or generated masculine -- or feminine forms are stored. Note that there may be more default plurals than masculines or feminines, because -- some terms have multiple possible plurals. local function handle_mf(field, gender, inflect, default_plurals) local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = inflect(lemma) else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = inflect(lemma, special) end return term end } for _, mf in ipairs(mfs) do local mfpls = com.make_plural(mf.term, gender, special) if mfpls then for _, mfpl in ipairs(mfpls) do local plobj = m_table.shallowCopy(mf) plobj.term = mfpl -- Add an accelerator for each masculine/feminine plural whose lemma -- is the corresponding singular, so that the accelerated entry -- that is generated has a definition that looks like -- # {{plural of|es|MFSING}} plobj.accel = {form = "p", lemma = mf.term} insert(default_plurals, plobj) end end end return mfs end local feminine_plurals = {} local feminines = handle_mf("f", "f", com.make_feminine, feminine_plurals) local masculine_plurals = {} local masculines = handle_mf("m", "m", com.make_masculine, masculine_plurals) local function handle_mf_plural(mfplfield, gender, default_plurals, singulars) local mfpl = m_headword_utilities.parse_term_list_with_modifiers { paramname = mfplfield, forms = args[mfplfield], splitchar = ",", } local new_mfpls = {} local saw_plus for i, mfpl in ipairs(mfpl) do local accel if #mfpl == #singulars then -- If same number of overriding masculine/feminine plurals as singulars, -- assume each plural goes with the corresponding singular -- and use each corresponding singular as the lemma in the accelerator. -- The generated entry will have # {{plural of|es|SINGULAR}} as the -- definition. accel = {form = "p", lemma = singulars[i].term} else accel = nil end if mfpl.term == "+" then -- We should never see + twice. If we do, it will lead to problems since we overwrite the values of -- default_plurals the first time around. if saw_plus then error(("Saw + twice when handling %s="):format(mfplfield)) end saw_plus = true for _, defpl in ipairs(default_plurals) do -- defpl is already a table and has an accel field m_headword_utilities.combine_termobj_qualifiers_labels(defpl, mfpl) insert(new_mfpls, defpl) end elseif mfpl.term:find("^%+") then mfpl.term = require(romut_module).get_special_indicator(mfpl.term) for _, mf in ipairs(singulars) do local default_mfpls = com.make_plural(mf.term, gender, mfpl.term) for _, defp in ipairs(default_mfpls) do local mfplobj = m_table.shallowCopy(mfpl) mfplobj.term = defp mfplobj.accel = accel m_headword_utilities.combine_termobj_qualifiers_labels(mfplobj, mf) insert(new_mfpls, mfplobj) end end else mfpl.accel = accel mfpl.term = replace_hash_with_lemma(mfpl.term, lemma) insert(new_mfpls, mfpl) end end return new_mfpls end if args.fpl[1] then -- Override any existing feminine plurals. feminine_plurals = handle_mf_plural("fpl", "f", feminine_plurals, feminines) end if args.mpl[1] then -- Override any existing masculine plurals. masculine_plurals = handle_mf_plural("mpl", "m", masculine_plurals, masculines) end local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end insert_noun_inflection(plurals, "พหูพจน์", "p") insert_noun_inflection(feminines, "เพศหญิง", "f") insert_noun_inflection(feminine_plurals, "เพศหญิงพหูพจน์") insert_noun_inflection(masculines, "เพศชาย") insert_noun_inflection(masculine_plurals, "เพศชายพหูพจน์") parse_and_insert_noun_inflection("dim", "ตัวบอกความเล็ก") parse_and_insert_noun_inflection("aug", "ตัวบอกความใหญ่") parse_and_insert_noun_inflection("pej", "pejorative") parse_and_insert_noun_inflection("dem", "คำประชานาม") parse_and_insert_noun_inflection("fdem", "คำประชานามเพศหญิง") -- Maybe add category 'Spanish nouns with irregular gender' (or similar) local irreg_gender_lemma = rsub(lemma, " .*", "") -- only look at first word if (rfind(irreg_gender_lemma, "o$") and (gender_for_irreg_ending == "f" or gender_for_irreg_ending == "mf")) or (irreg_gender_lemma:find("a$") and (gender_for_irreg_ending == "m" or gender_for_irreg_ending == "mf")) then insert(data.categories, "คำนาม" .. langname .. "ที่มีเพศไม่ปรกติ") end end local function get_noun_params(is_proper) return { [1] = {list = "g", disallow_holes = true, required = not is_proper, default = "?", type = "genders", flatten = true}, -- gender(s) [2] = {list = "pl", disallow_holes = true}, --plural override(s) ["f"] = list_param, --feminine form(s) ["m"] = list_param, --masculine form(s) ["fpl"] = list_param, --feminine plural override(s) ["mpl"] = list_param, --masculine plural override(s) ["dim"] = list_param, --diminutive(s) ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) ["dem"] = list_param, --demonym(s) ["fdem"] = list_param, --female demonym(s) } end pos_functions["คำนาม"] = { params = get_noun_params(), func = do_noun, } pos_functions["คำวิสามานยนาม"] = { params = get_noun_params("is proper"), func = function(args, data) do_noun(args, data, "is proper") end, } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["คำกริยา"] = { params = { [1] = {}, ["pres"] = list_param, --present ["pres_qual"] = {list = "pres\1_qual", allow_holes = true}, ["pret"] = list_param, --preterite ["pret_qual"] = {list = "pret\1_qual", allow_holes = true}, ["part"] = list_param, --participle ["part_qual"] = {list = "part\1_qual", allow_holes = true}, ["pagename"] = {}, -- for testing ["noautolinktext"] = boolean_param, ["noautolinkverb"] = boolean_param, ["attn"] = boolean_param, }, func = function(args, data) local preses, prets, parts if args.attn then insert(data.categories, "Requests for attention concerning " .. langname) return end local es_verb = require(es_verb_module) local alternant_multiword_spec = es_verb.do_generate_forms(args, "es-verb", data.heads[1]) local specforms = alternant_multiword_spec.forms local function slot_exists(slot) return specforms[slot] and specforms[slot][1] end local function do_finite(slot_tense, label_tense) -- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p (only3p verbs); -- but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. [[empedernir]]). local has_1s = slot_exists(slot_tense .. "_1s") local has_3s = slot_exists(slot_tense .. "_3s") local has_3p = slot_exists(slot_tense .. "_3p") if has_1s or (not has_3s and not has_3p) then return { slot = slot_tense .. "_1s", label = ("บุรุษที่หนึ่งเอกพจน์%s"):format(label_tense), } elseif has_3s then return { slot = slot_tense .. "_3s", label = ("บุรุษที่สามเอกพจน์%s"):format(label_tense), } else return { slot = slot_tense .. "_3p", label = ("บุรุษที่สามพหูพจน์%s"):format(label_tense), } end end preses = do_finite("pres", "ปัจจุบันกาล") prets = do_finite("pret", "อดีตกาลสิ้นสุด") parts = { slot = "pp_ms", label = "รูปกริยาขยายอดีตกาล", } if args.pres[1] or args.pret[1] or args.part[1] then track("verb-old-multiarg") end local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Internal error: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty) local forms local to_insert if #args == 0 then forms = specforms[slot_desc.slot] if not forms or #forms == 0 then if skip_if_empty then return end forms = {{form = "-"}} end elseif #args == 1 and args[1] == "-" then forms = {{form = "-"}} else forms = {} for i, arg in ipairs(args) do local qual = qualifiers[i] if qual then -- FIXME: It's annoying we have to add brackets and strip them out later. The inflection -- code adds all footnotes with brackets around them; we should change this. qual = {"[" .. qual .. "]"} end local form = arg if not args.noautolinkverb then -- [[Module:inflection utilities]] already loaded by [[Module:es-verb]] form = require(inflection_utilities_module).add_links(form) end insert(forms, {form = form, footnotes = qual}) end end if forms[1].form == "-" then to_insert = {label = "ไม่มี" .. slot_desc.label} else local into_table = {label = slot_desc.label} for _, form in ipairs(forms) do local qualifiers = strip_brackets(form.footnotes) -- Strip redundant brackets surrounding entire form. These may get generated e.g. -- if we use the angle bracket notation with a single word. local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form -- Don't include accelerators if brackets remain in form, as the result will be wrong. -- FIXME: For now, don't include accelerators. We should use {{es-verb form of}} instead. -- local this_accel = not stripped_form:find("%[%[") and accel or nil local this_accel = nil insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel}) end to_insert = into_table end insert(data.inflections, to_insert) end local skip_pres_if_empty if alternant_multiword_spec.no_pres1_and_sub then insert(data.inflections, {label = "ไม่มีบุรุษที่หนึ่งเอกพจน์ปัจจุบันกาล"}) insert(data.inflections, {label = "no present subjunctive"}) end if alternant_multiword_spec.no_pres_stressed then insert(data.inflections, {label = "no stressed present indicative or subjunctive"}) skip_pres_if_empty = true end if alternant_multiword_spec.only3s then insert(data.inflections, {label = glossary_link("อบุรุษ")}) elseif alternant_multiword_spec.only3sp then insert(data.inflections, {label = "บุรุษที่สามเท่านั้น"}) elseif alternant_multiword_spec.only3p then insert(data.inflections, {label = "บุรุษที่สามพหูพจน์เท่านั้น"}) end do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty) do_verb_form(args.pret, args.pret_qual, prets) do_verb_form(args.part, args.part_qual, parts) -- Add categories. for _, cat in ipairs(alternant_multiword_spec.categories) do insert(data.categories, cat) end -- 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:es-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 Spanish equivalent). if #data.user_specified_heads == 0 or ( #data.user_specified_heads == 1 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 } ----------------------------------------------------------------------------------------- -- Phrases -- ----------------------------------------------------------------------------------------- pos_functions["วลี"] = { params = { ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, ["m"] = list_param, ["f"] = list_param, }, func = function(args, data) validate_genders(args.g) data.genders = args.g parse_and_insert_inflection(data, args, "m", "เพศชาย") parse_and_insert_inflection(data, args, "f", "เพศหญิง") end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["รูปปัจจัย"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, }, func = function(args, data) validate_genders(args.g) data.genders = args.g local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, "ปัจจัยสร้าง" .. typ) end insert(data.inflections, {label = "รูปผันของ " .. require("Module:table").serialCommaJoin(suffix_type, {conj = "หรือ"})}) end, } return export gq1k0eeaavj9bz3urnfi36gzu0m3d37 รด 0 44038 5729202 5721496 2026-07-20T03:35:38Z Alifshinobi 397 /* รากศัพท์ */ 5729202 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|tts|หด}}, {{cog|lo|ຫົດ,ຮົດ}}, {{cog|nod|ᩉᩫ᩠ᨯ}}, {{cog|khb|ᦷᦠᧆ}}, {{cog|shn|ႁူတ်း}} === การออกเสียง === {{th-pron}} === คำกริยา === {{th-verb}} # [[เท]] [[ราด]] [[สาด]] [[ฉีด]] [[หรือ]][[โปรย]][[น้ำ]][[หรือ]][[ของเหลว]][[ไป]][[ยัง]][[สิ่งใดสิ่งหนึ่ง]][[เพื่อ]][[ให้]][[เปียก]][[หรือ]][[ให้]][[เปียก]][[ชุ่ม]] #: {{ux|th|รดน้ำต้นไม้}} #: {{ux|th|เอาน้ำรดตัว}} # [[โดย]][[ปริยาย]][[หมาย]][[ถึง]][[อาการ]][[ที่]][[คล้ายคลึง]][[เช่น]][[นั้น]] #: {{ux|th|เยี่ยวรดที่นอน}} #: {{ux|th|นกขี้รดหลังคา}} 1fp69laaqz01co5cpx6g0mb294cr0on ညီမ 0 46790 5729176 5719763 2026-07-20T03:11:03Z ~2026-32817-27 19068 5729176 wikitext text/x-wiki {{also/auto}} == ภาษาพม่า == === รากศัพท์ === {{suffix|my|ညီ|-မ}} === การออกเสียง === {{my-IPA}} === คำนาม === {{my-noun}} # [[น้องสาว]] {{topics|my|ครอบครัว}} m0lr8wrno7jpc15y3ni679iq7ahzflp ຫົດ 0 49402 5729201 1889913 2026-07-20T03:35:17Z Alifshinobi 397 /* รากศัพท์ 1 */ 5729201 wikitext text/x-wiki {{also/auto}} == ภาษาลาว == === การออกเสียง === {{lo-pron}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|th|รด}}, {{cog|tts|หด}}, {{cog|nod|ᩉᩫ᩠ᨯ}}, {{cog|khb|ᦷᦠᧆ}}, {{cog|shn|ႁူတ်း}} ==== รูปแบบอื่น ==== * {{l|lo|ຮົດ}} ==== คำกริยา ==== {{lo-verb}} # {{lb|lo|สกรรม}} [[รด]] === รากศัพท์ 2 === {{inh+|lo|tai-pro|*ʰrotᴰ}}; ร่วมเชื้อสายกับ{{cog|th|หด}}, {{cog|shn|ႁူတ်း}} หรือ {{m|shn|ႁွတ်း}} ==== คำกริยา ==== {{lo-verb}} # {{lb|lo|อกรรม}} [[หด]] kyr1wqo5g9hivpc1zjxvyistutzkg63 มอดูล:form of/data/1 828 51425 5729203 5552183 2026-07-20T03:38:21Z Octahedron80 267 5729203 Scribunto text/plain --[=[ This module lists the more common recognized inflection tags, along with their shortcut aliases, the corresponding glossary entry or page describing the tag, and the corresponding wikidata entry. The less common tags are in [[Module:form of/data/2]]. We divide the tags this way to save memory space. Be careful adding more tags to this module; add them to the other module unless you're sure they are common. TAGS is a table where keys are the canonical form of an inflection tag and the corresponding values are tables describing the tags, consisting of the following keys: - 1: Type of the tag ("person", "number", "gender", "case", "animacy", "tense-aspect", "mood", "voice-valence", etc.). - 2: Anchor or page describing the inflection tag, with the following values: * nil: No link. * APPENDIX: Anchor in [[Appendix:Glossary]] whose name is the same as the tag * WIKT: Page in the English Wiktionary whose name is the same as the tag. * WP: Page in the English Wikipedia whose name is the same as the tag. * A string: If prefixed by 'w:' the specified page in the English Wikipedia. If prefixed by 'wikt:', the specified page in the English Wiktionary. Otherwise, an anchor in [[Appendix:Glossary]]. NOTE: GLOSSARY ANCHORS ARE PREFERRED. Other types of entries should be migrated to the glossary, with links to Wikipedia and/or Wiktionary entries as appropriate. - 3: List of shortcuts (i.e. aliases for the inflection tag) or a single shortcut string, or nil. - 4: Numeric value of Wikidata identifier (see wikidata.org) for the concept most closely describing this tag. (The actual Wikidata identifier is a string formed by prefixing the number with Q.) - display: If specified, consists of text to display in the definition line, in lieu of the canonical form of the inflection tag. If there is a glossary entry, the displayed text forms the right side of the two-part glossary link. - no_space_on_left: If specified, don't display a space to the left of the tag. Used for punctuation. - no_space_on_right: If specified, don't display a space to the right of the tag. Used for punctuation. SHORTCUTS is a table mapping shortcut aliases to canonical inflection tag names. Shortcuts are of one of three types: (1) A simple alias of a tag. These do not need to be entered explicitly into the table; code at the end of the module automatically fills in these entries based on the information in TAGS. (2) An alias to a multipart tag. For example, the alias "mf" maps to the multipart tag "m//f", which will in turn be expanded into the canonical multipart tag {"masculine", "feminine"}, which will display as (approximately) "[[Appendix:Glossary#gender|masculine]] and [[Appendix:Glossary#gender|feminine]]". The number of such aliases should be liminted, and should cover only the most common combinations. Normally, multipart tags are displayed using serialCommaJoin() in [[Module:table]] to appropriately join the display form of the individual tags using commas and/or "and". However, some multipart tags are displayed specially; see DISPLAY_HANDLERS below. Note that aliases to multipart tags can themselves contain simple aliases in them. (3) An alias to a list of multiple tags (which may themselves be simple or multipart aliases). Specifying the alias is exactly equivalent to specifying the tags in the list in order, one after another. An example is "1s", which maps to the list {"1", "s"}. The number of such aliases should be limited, and should cover only the most common combinations. NOTE: In some cases below, multiple tags point to the same wikidata, because Wikipedia considers them synonyms. Examples are indirect case vs. objective case vs. oblique case, and inferential mood vs. renarrative mood. We do this because (a) we want to allow users to choose their own terminology; (b) we want to be able to use the terminology most common for the language in question; (c) terms considered synonyms may or may not actually be synonyms, as different languages may use the terms differently. For example, although the Wikipedia page on [[w:inferential mood]] claims that inferential and renarrative moods are the same, the page on [[w:Bulgarian_verbs#Evidentials]] claims that Bulgarian has both, and that they are not the same. ]=] 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", APPENDIX, {"1", "first-person", "first person"}, 21714344, } tags["บุรุษที่สอง"] = { "person", APPENDIX, {"2", "second-person", "second person"}, 51929049, } tags["บุรุษที่สาม"] = { "person", APPENDIX, {"3", "third-person", "third person"}, 51929074, } tags["อบุรุษ"] = { "person", APPENDIX, {"impers", "impersonal"}, } shortcuts["12"] = "1//2" shortcuts["13"] = "1//3" shortcuts["23"] = "2//3" shortcuts["123"] = "1//2//3" ----------------------- Number ----------------------- tags["เอกพจน์"] = { "number", APPENDIX, {"s", "sg", "singular", "singular number"}, 110786, } tags["ทวิพจน์"] = { "number", APPENDIX, {"d", "du", "dual", "dual number"}, 110022, } tags["พหูพจน์"] = { "number", APPENDIX, {"p", "pl", "plural", "plural number"}, 146786, } tags["single-possession"] = { "number", "เอกพจน์", "spos", 110786, -- Singular } tags["multiple-possession"] = { "number", "พหูพจน์", "mpos", 146786, -- Plural } shortcuts["1s"] = {"1", "s"} shortcuts["2s"] = {"2", "s"} shortcuts["3s"] = {"3", "s"} shortcuts["1d"] = {"1", "d"} shortcuts["2d"] = {"2", "d"} shortcuts["3d"] = {"3", "d"} shortcuts["1p"] = {"1", "p"} shortcuts["2p"] = {"2", "p"} shortcuts["3p"] = {"3", "p"} ----------------------- Gender ----------------------- tags["เพศชาย"] = { "gender", "เพศ", {"m", "masculine"}, 499327, } -- This is useful e.g. in Swedish. tags["natural masculine"] = { "gender", "เพศ", "natm", } tags["เพศหญิง"] = { "gender", "เพศ", {"f", "feminine"}, 1775415, } tags["เพศกลาง"] = { "gender", "เพศ", {"n", "neuter"}, 1775461, } tags["เพศรวม"] = { "gender", "เพศ", {"c", "common"}, 1305037, } tags["nonvirile"] = { "gender", APPENDIX, "nv", } shortcuts["mf"] = "m//f" shortcuts["mn"] = "m//n" shortcuts["fn"] = "f//n" shortcuts["mfn"] = "m//f//n" ----------------------- Animacy ----------------------- -- (may be useful sometimes for [[Module:object usage]].) tags["มีชีวิต"] = { "animacy", APPENDIX, {"an", "animate"}, 51927507, } tags["ไม่มีชีวิต"] = { "animacy", APPENDIX, {"in", "inan", "inanimate"}, 51927539, } tags["บุคคล"] = { "animacy", nil, {"pr", "pers", "personal"}, 63302102, } ----------------------- Tense/aspect ----------------------- tags["ปัจจุบันกาล"] = { "tense-aspect", APPENDIX, {"pres", "present", "present tense"}, 192613, } tags["อดีตกาล"] = { "tense-aspect", APPENDIX, {"past", "past tense"}, 1994301, } tags["อนาคตกาล"] = { "tense-aspect", APPENDIX, {"fut", "futr", "future", "future tense"}, 501405, } tags["future perfect"] = { "tense-aspect", APPENDIX, {"futp", "fperf"}, 1234617, } tags["ไม่ใช่อดีตกาล"] = { "tense-aspect", APPENDIX, {"npast", "non-past", "non-past tense"}, 16916993, } tags["progressive"] = { "tense-aspect", APPENDIX, "prog", 56653945, } tags["อดีตกาลสิ้นสุด"] = { "tense-aspect", APPENDIX, {"สิ้นสุด", "pret", "preterite"}, 442485, } tags["สมบูรณ์"] = { "tense-aspect", APPENDIX, {"perf", "perfect"}, 625420, } tags["ไม่สมบูรณ์"] = { "tense-aspect", APPENDIX, {"impf", "imperf", "imperfect"}, } tags["อภิสมบูรณ์"] = { "tense-aspect", APPENDIX, {"plup", "pluperf", "pluperfect"}, 623742, } tags["aorist"] = { "tense-aspect", "aorist tense", {"aor", "aori"}, 216497, } tags["past historic"] = { "tense-aspect", nil, "phis", 442485, -- Preterite } tags["imperfective"] = { "tense-aspect", APPENDIX, {"impfv", "imperfv"}, 371427, } tags["perfective"] = { "tense-aspect", APPENDIX, {"pfv", "perfv"}, 1424306, } -- เปลี่ยนลำดับตามคำแปลไทย shortcuts["spast"] = {"past", "simple"} shortcuts["simple past"] = {"past", "simple"} shortcuts["spres"] = {"present", "simple"} shortcuts["simple present"] = {"present", "simple"} ----------------------- Mood ----------------------- tags["มาลาสั่ง"] = { "mood", APPENDIX, {"imp", "impr", "impv", "imperative", "imperative mood"}, 22716, } tags["มาลาบอกเล่า"] = { "mood", APPENDIX, {"ind", "indc", "indic", "indicative", "indicative mood"}, 682111, } tags["มาลาสมมุติ"] = { "mood", APPENDIX, {"sub", "subj", "subjunctive", "subjunctive mood"}, 473746, } tags["มาลาเงื่อนไข"] = { "mood", APPENDIX, {"cond", "conditional", "conditional mood"}, 625581, } tags["modal"] = { "mood", "w:modality (linguistics)", "mod", 1243600, } tags["optative"] = { "mood", "optative mood", {"opta", "opt"}, 527205, } tags["มาลาขอร้อง"] = { "mood", APPENDIX, {"juss", "jussive", "jussive mood"}, 462367, } tags["hortative"] = { "mood", WP, "hort", 5906629, } ----------------------- Voice/valence ----------------------- -- This tag type combines what is normally called "voice" (active, passive, middle, mediopassive) with other tags that -- aren't normally called voice but are similar in that they control the valence/valency (number and structure of the -- arguments of a verb). tags["กรรตุวาจก"] = { "voice-valence", APPENDIX, {"act", "actv", "active", "active voice"}, 1317831, } tags["มัธยวาจก"] = { "voice-valence", APPENDIX, {"mid", "midl", "middle", "middle voice"}, } tags["กรรมวาจก"] = { "voice-valence", APPENDIX, {"pass", "pasv", "passive", "passive voice"}, 1194697, } tags["มัธยกรรมวาจก"] = { "voice-valence", APPENDIX, {"mp", "mpass", "mpasv", "mpsv", "mediopassive", "mediopassive voice"}, 1601545, } tags["สะท้อน"] = { "voice-valence", "คำกริยาสะท้อน", {"refl", "reflexive", "reflexive verb"}, 13475484, -- for "reflexive verb" } tags["สกรรม"] = { "voice-valence", "คำสกรรมกริยา", {"tr", "vt", "transitive", "transitive verb"}, 1774805, -- for "transitive verb" } tags["อกรรม"] = { "voice-valence", "คำอกรรมกริยา", {"intr", "vi", "intransitive", "intransitive verb"}, 1166153, -- for "intransitive verb" } tags["ทวิกรรม"] = { "voice-valence", "คำทวิกรรมกริยา", {"ditr", "ditransitive", "ditransitive verb"}, 2328313, -- for "ditransitive verb" } tags["ก่อเหตุ"] = { "voice-valence", "คำกริยาก่อเหตุ", {"caus", "causative", "causative verb"}, 56677011, -- for "causative verb" } ----------------------- Non-finite ----------------------- tags["รูปกริยากลาง"] = { "non-finite", APPENDIX, {"inf", "infinitive"}, 179230, } -- A form found in Portuguese and Galician, as well as in Hungarian. This is probably unnecessary and can be replaced -- with the regular "infinitive" tag. A personal infinitive is not a separate infinitive from the plain infinitive, just -- an inflection of the infinitive. tags["personal infinitive"] = { "non-finite", "w:Portuguese verb conjugation", "pinf", } tags["รูปกริยาขยาย"] = { "non-finite", APPENDIX, {"part", "ptcp", "participle", "พาร์ทิซิเพิล"}, 814722, } tags["คำกริยานาม"] = { "non-finite", APPENDIX, {"vnoun", "verbal noun"}, 1350145, } tags["รูปกริยาเป็นนาม"] = { "non-finite", APPENDIX, {"ger", "gerund"}, 1923028, } tags["supine"] = { "non-finite", APPENDIX, "sup", 548470, } tags["transgressive"] = { "non-finite", APPENDIX, nil, 904896, } ----------------------- Case ----------------------- tags["อปาทานการก"] = { "case", APPENDIX, {"abl", "ablative", "ablative case"}, 156986, } tags["กรรมการก"] = { "case", APPENDIX, {"acc", "accusative", "accusative case"}, 146078, } tags["สัมปทานการก"] = { "case", APPENDIX, {"dat", "dative", "dative case"}, 145599, } tags["สัมพันธการก"] = { "case", APPENDIX, {"gen", "genitive", "genitive case"}, 146233, } tags["กรณการก"] = { "case", APPENDIX, {"ins", "instrumental", "instrumental case"}, 192997, } tags["อธิกรณการก"] = { "case", APPENDIX, {"loc", "locative", "locative case"}, 202142, } tags["กรรตุการก"] = { "case", APPENDIX, {"nom", "nominative", "nominative case"}, 131105, } tags["prepositional"] = { "case", "prepositional case", {"pre", "prep"}, 2114906, } tags["สัมโพธนการก"] = { "case", APPENDIX, {"voc", "vocative", "vocative case"}, 185077, } ----------------------- State ----------------------- tags["construct"] = { "state", "construct state", {"cons", "construct state"}, 1641446, display = "construct state", } tags["ชี้เฉพาะ"] = { "state", APPENDIX, {"def", "defn", "definite", "definite state"}, 53997851, } tags["ไม่ชี้เฉพาะ"] = { "state", APPENDIX, {"indef", "indf", "indefinite", "indefinite state"}, 53997857, } tags["possessive"] = { "state", WP, "poss", 2105891, } tags["แข็ง"] = { "state", "ไม่ชี้เฉพาะ", {"str", "strong"}, 53997857, -- Indefinite } tags["อ่อน"] = { "state", "ชี้เฉพาะ", {"wk", "weak"}, 53997851, -- Definite } tags["ผสม"] = { "state", APPENDIX, {"mix", "mixed"}, 63302161, } tags["คุณลักษณะ"] = { "state", APPENDIX, {"attr", "attributive"}, } tags["ภาคแสดง"] = { "state", APPENDIX, {"pred", "predicative"}, } ----------------------- Degrees of comparison ----------------------- tags["positive degree"] = { "comparison", "positive", {"posd", "positive"}, 3482678, -- Doesn't exist in English; only in Czech, Estonian, Finnish and various Nordic languages. } tags["ขั้นกว่า"] = { "comparison", APPENDIX, {"comd", "comparative", "comparative degree"}, 14169499, } tags["ขั้นสุด"] = { "comparison", APPENDIX, {"supd", "superlative", "superlative degree"}, 1817208, } ----------------------- Register ----------------------- ----------------------- Deixis ----------------------- ----------------------- Clusivity ----------------------- ----------------------- Inflectional class ----------------------- tags["pronominal"] = { "class", WIKT, "pron", 12721180, -- for "pronominal attribute", existing only in the Romanian Wikipedia } ----------------------- Attitude ----------------------- -- This is a vague tag type grouping augmentative, diminutive and pejorative, which generally indicate the speaker's -- attitude towards the object in question (as well as often indicating size). tags["ตัวบอกความใหญ่"] = { "attitude", APPENDIX, {"aug", "augmentative"}, 1358239, } tags["ตัวบอกความเล็ก"] = { "attitude", APPENDIX, {"dim", "diminutive"}, 108709, } tags["pejorative"] = { "attitude", APPENDIX, "pej", 545779, } ----------------------- Sound changes ----------------------- tags["contracted"] = { "sound change", nil, "contr", 126473, } tags["uncontracted"] = { "sound change", nil, "uncontr", } ----------------------- Misc grammar ----------------------- shortcuts["past-cl"] = {"past", "-", "tense", "clause"} shortcuts["pres-cl"] = {"pres", "-", "tense", "clause"} shortcuts["fut-cl"] = {"fut", "-", "tense", "clause"} shortcuts["ind-cl"] = {"ind", "clause"} shortcuts["sub-cl"] = {"sub", "clause"} shortcuts["past-sub-cl"] = {"past", "sub", "clause"} shortcuts["pres-sub-cl"] = {"pres", "sub", "clause"} shortcuts["fut-sub-cl"] = {"fut", "sub", "clause"} shortcuts["cond-cl"] = {"cond", "clause"} shortcuts["cond-past-cl"] = {"cond", "past", "clause"} tags["สามัญ"] = { "grammar", nil, {"sim", "simple"}, } tags["สั้น"] = { "grammar", nil, {"short"}, } tags["ยาว"] = { "grammar", nil, {"long"}, } tags["form"] = { "grammar", } tags["เชิงคุณศัพท์"] = { "grammar", WIKT, {"adj", "adjectival"}, } tags["เชิงกริยาวิเศษณ์"] = { "grammar", APPENDIX, {"adv", "adverbial"}, } tags["ปฏิเสธ"] = { "grammar", "w:affirmation and negation", {"neg", "negative"}, 63302088, } tags["nominalized"] = { "grammar", nil, "nomz", 4683152, -- entry for "nominalized adjective" } tags["nominalization"] = { "grammar", nil, "nomzn", 1500667, } tags["รากศัพท์"] = { "grammar", nil, {"root", "ราก", "ธาตุ"}, 111029, } tags["ต้นเค้าศัพท์"] = { "grammar", nil, "stem", 210523, } tags["ไม่อิสระ"] = { "grammar", nil, {"dep", "dependent"}, 1122094, -- entry for "dependent clause" } tags["อิสระ"] = { "grammar", nil, {"indep", "independent"}, 1419215, -- entry for "independent clause" } tags["ประธาน"] = { "grammar", APPENDIX, {"sbj", "subject"}, -- sub and subj used for subjunctive 164573, } tags["กรรม"] = { "grammar", APPENDIX, {"obj", "object"}, 175026, } tags["กรรมตรง"] = { "grammar", APPENDIX, {"dirobj", "direct object"}, 2990574, } tags["กรรมรอง"] = { "grammar", APPENDIX, {"indirobj", "indirect object"}, 1094061, } tags["กาล"] = { "grammar", APPENDIX, "tense", 177691, } tags["อนุประโยค"] = { "grammar", APPENDIX, "clause", 117364, } tags["วลี"] = { "grammar", APPENDIX, "phrase", 187931, } ----------------------- Other tags ----------------------- -- This consists of non-content words like "and" as well as punctuation characters. If the punctuation characters appear -- by themselves as tags, we special-case the handling of surrounding spaces so the output looks correct. tags["และ"] = { "other", nil, {"and"}, } -- HACK! "in" is a shortcut for "inanimate" so create "!in" to display "in". We should generalize this like for labels. tags["!in"] = { "other", display = "ใน", } tags[","] = { "other", no_space_on_left = true, } tags[":"] = { "other", no_space_on_left = true, } tags["/"] = { "other", no_space_on_left = true, no_space_on_right = true, } tags["("] = { "other", no_space_on_right = true, } tags[")"] = { "other", no_space_on_left = true, } tags["["] = { "other", no_space_on_right = true, } tags["]"] = { "other", no_space_on_left = true, } tags["-"] = { -- regular hyphen-minus "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} lnm507eh7mim6qr67vks6jkta2jzb95 แพบ 0 134898 5729252 1389334 2026-07-20T04:14:00Z Alifshinobi 397 Alifshinobi ย้ายหน้า [[เภบ]] ไปยัง [[แพบ]]: สะกดผิด 1389334 wikitext text/x-wiki == ภาษาคำเมือง == === คำคุณศัพท์ === {{nod-adj}} # [[แบน]] 0dnz9q8krfplt0vloavxpqjp9iminay 5729255 5729252 2026-07-20T04:15:37Z Alifshinobi 397 5729255 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/pɛːp˦˨/|a=เชียงใหม่}} === คำคุณศัพท์ === {{nod-adj|tl=1}} # {{altform|nod|ᨻᩯ᩠ᨷ|t=[[แบน]]}} 1f8d2y7h8we4bnt22a49r4wq7wxywul หญ้าม 0 134912 5729078 1384722 2026-07-20T01:59:57Z Alifshinobi 397 5729078 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ɲaːm˦˦ʔ/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} {{pronunciation spelling of|nod|ᩉ᩠ᨿ᩶ᩣ᩠ᨾ|t=[[ย่าม]][[ใจ]], [[เหิม]]; [[คุ้น]]; [[ติดใจ]]; [[ต้องการ]][[ดัง]][[เดิม]][[อีก]]}} 8hdbjgbhs5of0qe9m4q0csg7q2sdbri ข้อง 0 134928 5729160 5724101 2026-07-20T02:49:55Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729160 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron|ค็่อง}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|lo|ຂ້ອງ}}, {{cog|twh|ꪌꪮꪉꫂ}}, {{cog|shn|ၶွင်ႈ}}, {{cog|za|giengh}}, {{cog|zzj|hweng}} ==== คำนาม ==== {{th-noun}} # [[เครื่อง]][[จัก]][[สาน]][[สำหรับ]][[ใส่]][[ปลา]] [[ปู]] [[เป็นต้น]] [[รูป]][[คล้าย]][[ตะกร้า]][[ปาก]][[แคบ]][[อย่าง]][[คอ]][[หม้อ]][[ดิน]] [[ก้น]][[สี่เหลี่ยมจัตุรัส]] [[มี]][[ขนาด]][[ต่าง ๆ]] === รากศัพท์ 2 === ร่วมเชื้อสายกับ{{cog|lo|ຂ້ອງ}}, {{cog|shn|ၶွင်ႈ}} ==== คำกริยา ==== {{th-verb|~}} # [[ติด]][[อยู่]] == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xɔŋ˦˦ʔ/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᨡᩬ᩶ᨦ|t=[[สะดุด]], [[เกี่ยว]], [[ข้อง#ภาษาไทย|ข้อง]] [ [[ติด]][[อยู่]] ]}} nygi004hwvc79tbaef83i4kpqc1s8wc 5729161 5729160 2026-07-20T02:50:17Z Alifshinobi 397 /* รากศัพท์ 2 */ 5729161 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron|ค็่อง}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|lo|ຂ້ອງ}}, {{cog|twh|ꪌꪮꪉꫂ}}, {{cog|shn|ၶွင်ႈ}}, {{cog|za|giengh}}, {{cog|zzj|hweng}} ==== คำนาม ==== {{th-noun}} # [[เครื่อง]][[จัก]][[สาน]][[สำหรับ]][[ใส่]][[ปลา]] [[ปู]] [[เป็นต้น]] [[รูป]][[คล้าย]][[ตะกร้า]][[ปาก]][[แคบ]][[อย่าง]][[คอ]][[หม้อ]][[ดิน]] [[ก้น]][[สี่เหลี่ยมจัตุรัส]] [[มี]][[ขนาด]][[ต่าง ๆ]] === รากศัพท์ 2 === ร่วมเชื้อสายกับ{{cog|lo|ຂ້ອງ}}, {{cog|nod|ᨡᩬ᩶ᨦ}}, {{cog|shn|ၶွင်ႈ}} ==== คำกริยา ==== {{th-verb|~}} # [[ติด]][[อยู่]] == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xɔŋ˦˦ʔ/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᨡᩬ᩶ᨦ|t=[[สะดุด]], [[เกี่ยว]], [[ข้อง#ภาษาไทย|ข้อง]] [ [[ติด]][[อยู่]] ]}} 6o9nxqh4ttl4hz0wc2hk53g00dxhf4h ก๊ดเลี้ยว 0 134930 5729221 1369895 2026-07-20T04:01:11Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729221 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/kot˦˥.leːw˦˥/|a=เชียงใหม่}} === คำคุณศัพท์ === {{nod-adj}} # {{pronunciation spelling of|nod|ᨣᩫ᩠ᨯᩃ᩠ᨿ᩶ᩅ|t=ไม่[[ซื่อสัตย์]]}} dk6s4r0okel1ntt76x64orjitsjtr43 ซ้อย 0 134935 5729109 1881671 2026-07-20T02:16:54Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729109 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/sɔːj˦˥/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᨪᩬ᩠᩶ᨿ|t=[[เสียบ]][[ร้อย]][[เป็น]][[พวง]]}} kcmqmyuyzwlepviii3tl5ap5wxgy23c แซ่ม 0 134937 5729260 1885568 2026-07-20T04:23:39Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729260 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/sɛm˦˨/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} {{altform|nod|ᨪᩯ᩠᩵ᨾ|t=[[บ่น]]}} javpo65fqrp18wpm8tby5l3nw2vtj5n ᨪᩯ᩠᩵ᨾ 0 134970 5729261 1426517 2026-07-20T04:24:40Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729261 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=แซ่ม}} === การออกเสียง === * {{IPA|nod|/sɛm˦˨/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} [[บ่น]] #: {{syn|nod|ᨧᩫ᩠᩵ᨾ|ᩈ᩶ᩣ᩠ᨾ}} 9hljyidoqyo0nu9n9vxtkpikekg42db 5729262 5729261 2026-07-20T04:25:50Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729262 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=แซ่ม}} === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|khb|ᦶᦌᧄᧈ}} === การออกเสียง === * {{IPA|nod|/sɛm˦˨/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} [[บ่น]] #: {{syn|nod|ᨧᩫ᩠᩵ᨾ|ᩈ᩶ᩣ᩠ᨾ}} crp78a45xh6nl7iab1bmhu4mc7ye2gm ล่าย 0 135031 5729165 1883690 2026-07-20T02:54:52Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729165 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/laːj˦˨/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᩃ᩵ᩣ᩠ᨿ|t=[[หลอกลวง]]; [[พราง]], [[อำ]]}} #: {{syn|nod|จุ๋}} q1xotzgm057uuhd1nz58v88tp2uel4f ผาน 0 135036 5729050 1882814 2026-07-19T23:36:25Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729050 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/pʰaːn˨˦/|a=เชียงใหม่}} === คำคุณศัพท์ === {{nod-adj}} # {{altform|nod|ᨹᩖᩣ᩠ᨶ|t=[[เดือดร้อน]], [[ทุกข์]][[ร้อน]], [[ทุกข์]];[[ลำเค็ญ]], [[ยากจน]]}} #: {{syn|nod|ตุ๊ก}} q1whiadog3zccl66esralye0mfzezb0 โหม้ง 0 135040 5729169 1884283 2026-07-20T02:59:49Z Alifshinobi 397 Alifshinobi ย้ายหน้า [[หม้ง]] ไปยัง [[โหม้ง]]: สะกดผิด 1884283 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === คำนาม === {{nod-noun}} # [[หลุม]][[ใหญ่]] dgyr9vw98n53reausqs8p5upm4uzujh 5729171 5729169 2026-07-20T03:01:28Z Alifshinobi 397 5729171 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/moːŋ˦˦ʔ/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᩉ᩠ᨾᩰᩫ᩶ᨦ|t=[[หลุม]][[ใหญ่]][[ขนาด]][[พอ]][[ที่]][[ควาย]][[จะ]][[นอน]][[ได้]]}} go8lvqmjlh2dunvcia4cfqv9wiwcob4 ปิ๊ก 0 135053 5729192 5627249 2026-07-20T03:14:13Z Alifshinobi 397 /* คำกริยา */ 5729192 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == [[ไฟล์:Pick (ギター用のピック) (6920851017).jpg|thumb|ปิ๊ก]] === รากศัพท์ === {{bor+|th|en|guitar pick|guitar '''pick'''}} === การออกเสียง === {{th-pron}} === คำนาม === {{th-noun}} # [[ชิ้น]][[พลาสติก]][[หรือ]][[โลหะ]][[ขนาด]][[เล็ก]] [[มี]][[ปลาย]][[ค่อนข้าง]][[แหลม]] [[สำหรับ]][[ดีด]][[สาย]][[กีตาร์]] == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/pik˦˥/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} {{pronunciation spelling of|nod|ᨻᩖᩥᨠ,ᨻᩥ᩠ᨠ}} 2dmkzboisrz6x8wki2uzcw8ydzw8dwb ป้อก 0 135054 5729186 1882698 2026-07-20T03:13:15Z Alifshinobi 397 5729186 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/pɔːk˦˨/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|อกรรม}} {{pronunciation spelling of|nod|ᨻᩬᨠ|t=[[กลับ]]}} #: {{syn|nod|ปิ๊ก}} 5vsf0lkx0z3msg8pjf56vhmc8irb5i2 ตุ้ย 0 135063 5729043 1881930 2026-07-19T23:23:35Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729043 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/tuj˦˦ʔ/|a=เชียงใหม่}} === คำคุณศัพท์ === {{nod-adj}} # {{altform|nod|ᨲᩩ᩠᩶ᨿ|t=[[อ้วน]]}} mzpi2bvlpiuaxivyobajjbvop62sdpa พ่อง 0 135729 5729175 2021151 2026-07-20T03:10:57Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729175 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === {{blend|th|พ่อ|มึง}} === การออกเสียง === {{th-pron|พ็่อง}} === คำอุทาน === {{th-interj}} # {{lb|th|สแลง|หยาบคาย}} {{n-g|ใช้แสดงความโกรธ ไม่พอใจ หรือไม่เห็นชอบด้วย}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/pʰɔŋ˦˨/|a=เชียงใหม่}} === คำกริยาวิเศษณ์ === {{nod-adv|-}} # {{pronunciation spelling of|nod|ᨻᩕᩬ᩵ᨦ|t=[[บ้าง]]}} j31fxtoied8omqo3z2itgii2wdd8klw ตึ๊ด 0 135733 5729058 1881905 2026-07-20T01:32:36Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729058 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/tɯt˦˥/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{pronunciation spelling of|nod|ᨴᩧ᩠ᨯ|t=[[กระชาก]], [[ฉุด]], [[ดึง]]}} 2qta9kh9myk1d2mqln2n15vlrm3lvaf ปอ 0 141058 5729349 5674120 2026-07-20T07:24:16Z Alifshinobi 397 /* คำแปลภาษาอื่น */ 5729349 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == {{wp}} {{wp|แมลงปอ}} [[File:Jute - Kolkata 2003-10-31 00538.JPG|thumb|เส้นใยปอ]] [[File:Crocothemis servilia mariannae.jpg|thumb|แมลงปอ (''Crocothemis servilia'')]] === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === ==== คำนาม ==== {{th-noun}} # [[เส้น]][[ใย]][[ที่]][[ทำ]][[จาก]][[เปลือก]][[ไม้]][[บาง]][[ชนิด]] #: {{ux|th|ปอแก้ว}} #: {{ux|th|ปอกระเจา}} === รากศัพท์ 2 === ==== คำนาม ==== {{th-noun}} # [[ชื่อ]][[ไม้ล้มลุก]] [[ไม้พุ่ม]] [[และ]][[ไม้ต้น]] [[หลาย]][[ชนิด]] [[หลาย]][[สกุล]] [[และ]][[หลาย]][[วงศ์]][[ที่]][[เปลือก]][[ใช้]][[ทำ]]ปอ เช่น ปอกระเจา (<em>Corchorus capsularis</em> L. และ <em>C. olitorius</em> L.) ในวงศ์ Tiliaceae, ปอกระสา [<em>Broussonetia papyrifera </em>(L.) Vent.] ในวงศ์ Moraceae, ปอแก้ว (<em>Hibiscuscannabinus</em> L.) ในวงศ์ Malvaceae, ปอสำโรง (<em>Sterculia foetida</em> L.) ในวงศ์ Sterculiaceae === รากศัพท์ 3 === ==== คำนาม ==== {{th-noun|ตัว}} # {{lang|th|([[แมลง]]~)}} ชื่อ[[แมลง]]อันดับย่อย Anisoptera ในอันดับ Odonata หัวและอกสั้นป้อม ส่วนท้องแคบยาว หนวดสั้นเล็กมองคล้ายขน ตา[[โต]][[ใหญ่]] 2 ข้างอยู่ชิดกัน ปีก 2 คู่บางใส เส้นลายปีกเป็นร่างแห โคนปีกคู่หลังแผ่กว้างปีกคู่หลังใหญ่กว่าปีกคู่หน้า มีสีแตกต่างกันตามชนิดเมื่อเกาะปีกกางขนานกับพื้น ตัวอ่อนอยู่ในน้ำกินสัตว์น้ำขนาดเล็ก เช่น ชนิด {{species|Crocothemis servilia}} (Drury) ในวงศ์ Libellulidae, แมลงปอ ก็เรียก ==== คำแปลภาษาอื่น ==== {{trans-top|ชื่อแมลงอันดับย่อย Anisoptera}} * เกาหลี: {{t+|ko|잠자리}} * กฺ๋อง: {{t|ugo|คองโด่นีวง}} * เขมร: {{t+|km|កន្ទុំរុយ}} * คำเมือง: {{t|nod|ᨠᨷᩦ᩶}}, {{t|nod|ᨠᩣᩴᨷᩦ᩶}} * จีน: *: กวางตุ้ง: {{t|yue|蜻蜓|tr=cing1 ting4}} *: แคะ: {{t|hak|揚尾仔|tr=yòng-mî-é}} *: หมิ่นใต้: {{t+|nan-hbl|田嬰|tr=chhân-eⁿ, chhân-iⁿ, chhân-ni, chhân-ne, iân-mi}} *: จีนกลาง: {{t+|cmn|蜻蜓|tr=qīngtíng}}, {{t+|cmn|丁丁貓兒|tr=díngdíngmáor}} {{q|ตะวันตกเฉียงใต้}} * ญี่ปุ่น: {{t+|ja|蜻蛉|tr=とんぼ, tonbo}}, {{t+|ja|トンボ|tr=tonbo}} * ตองงา: {{t|to|kisikisi}} * ตากาล็อก: {{t|tl|tutubi}} * ไทลื้อ: {{t+|khb|ᦀᦲᦰᦢᦲᧉ}} * ไทใหญ่: {{t+|shn|မႅင်းမီႈ}} * โปรตุเกส: {{t+|pt|libélula|f}}, {{t+|pt|lavadeira|f}} * ฝรั่งเศส: {{t+|fr|libellule|f}} * พม่า: {{t+|my|ပုစဉ်း}} * มาเลเซีย: {{t|ms|capung}}, {{t|ms|pepatung}} * เยอรมัน: {{t+|de|Libelle|f}}; {{t|de|Wasserjungfer|f}} {{q|โบราณ}} * ละติน: {{t+|la|lībellula|f}} * ลาว: {{t|lo|ປໍ}}, {{t|lo|ແມງປໍ}} * เวียดนาม: {{t+|vi|chuồn chuồn}} * สเปน: {{t+|es|libélula|f}}, {{t+|es|aguacil|m}} {{q|อาร์เจนตินา|อุรุกวัย}}, {{t|es|pipilacha|f}} {{q|นิการากัว}} * อังกฤษ: {{t+|en|dragonfly}} * อาหม: {{t|aho|𑜐𑜩}} * อิตาลี: {{t+|it|libellula|f}} * อินโดนีเซีย: {{t+|id|capung}} * เอสเปรันโต: {{t+|eo|libelo}} * ฮีบรู: {{t+|he|שַׁפִּירִית|f}} {{trans-bottom}} === รากศัพท์ 4 === อาจเกี่ยวข้องกับรากศัพท์ 1, 2 หรือ 3 ==== คำวิสามานยนาม ==== {{th-proper noun}} # {{ตำบล|เวียงแก่น|เชียงราย}} 9l7pqncge6iuq5i7inlozifl08dpw4x หนาว 0 142303 5729065 2693539 2026-07-20T01:50:39Z Heavenchris 5375 /* รากศัพท์ */ 5729065 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|tts|หนาว}}, {{cog|lo|ໜາວ}}, {{cog|nod|ᩉ᩠ᨶᩣ᩠ᩅ}}, {{cog|kkh|ᩉ᩠ᨶᩣ᩠ᩅ}}, {{cog|khb|ᦐᦱᧁ}}, {{cog|blt|ꪘꪱꪫ}}, {{cog|twh|ꪘꪱꪫ}}, {{cog|tyr|ꪘꪱꪫ}}, {{cog|shn|ၼၢဝ်}}, {{cog|tdd|ᥘᥣᥝᥴ}} หรือ {{m|tdd|ᥢᥣᥝᥴ}}, {{cog|aho|𑜃𑜧}} หรือ {{m|aho|𑜓𑜧}}, {{cog|swi|n̥o1}} === การออกเสียง === {{th-pron|หฺนาว}} === คำคุณศัพท์ === {{th-adj}} # [[เย็น]][[จัด]], [[อาการ]][[ที่]][[รู้สึก]][[เย็น]][[จัด]] === คำนาม === {{th-noun}} # {{lb|th|ปาก}} {{synonym of|th|ฤดูหนาว}} o7xmddu20g0cdrte3g3favaxcr0rntt มอดูล:gl-headword 828 146302 5729296 4740643 2026-07-20T05:31:16Z Octahedron80 267 5729296 Scribunto text/plain -- This module contains code for Galician headword templates. -- Templates covered are: -- * {{gl-noun}}, {{gl-reinteg-noun}}, {{gl-proper noun}}; -- * {{gl-verb}}, {{gl-reinteg-verb}}; -- * {{gl-adj}}, {{gl-reinteg-adj}}, {{gl-adj-comp}}, {{gl-adj-sup}}; -- * {{gl-det}}; -- * {{gl-pron-adj}}; -- * {{gl-contr-adj}}; -- * {{gl-pp}}; -- * {{gl-cardinal}}; -- * {{gl-adv}}. -- See [[Module:gl-verb]] and [[Module:gl-reinteg-verb]] for Galician conjugation templates. local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local m_links = require("Module:links") local m_table = require("Module:table") local com_module = "Module:gl-common" local reinteg_com_module = "Module:gl-reinteg-common" local romut_module = "Module:romance utilities" local gl_verb_module = "Module:gl-verb" local gl_reinteg_verb_module = "Module:gl-reinteg-verb" local lang = require("Module:languages").getByCode("gl") local langname = --[[lang:getCanonicalName()]] lang:getCategoryName() local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local usub = mw.ustring.sub -- When followed by a hyphen in a hyphenated compound, the hyphen will be included with the prefix when linked. local include_hyphen_prefixes = m_table.listToSet { "ab", "afro", "anarco", "anglo", "ântero", "anti", "auto", "contra", "ex", "franco", "hiper", "infra", "inter", "intra", "macro", "micro", "neo", "pan", "pós", "pré", "pró", "proto", "sobre", "sub", "super", "vice", } local function track(page) require("Module:debug/track")("gl-headword/" .. page) return true end local function glossary_link(entry, text) text = text or entry return "[[ภาคผนวก:อภิธานศัพท์#" .. entry .. "|" .. text .. "]]" end local function check_all_missing(forms, plpos, tracking_categories) for _, form in ipairs(forms) do if type(form) == "table" then form = form.term end if form then local title = mw.title.new(form) if title and not title.exists then table.insert(tracking_categories, langname .. " " .. plpos .. " with red links in their headword lines") end end end end local function do_headword(parargs, poscat_th, is_reinteg) local params = { ["head"] = {list = true}, ["id"] = {}, ["splithyph"] = {type = "boolean"}, ["nolinkhead"] = {type = "boolean"}, ["json"] = {type = "boolean"}, ["pagename"] = {}, -- for testing ["reinteg"] = {}, -- processed in show() } if pos_functions[poscat_th] then for key, val in pairs(pos_functions[poscat_th].params) do params[key] = val end end local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolinkhead then if #heads == 0 then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph, nil, include_hyphen_prefixes) if #heads == 0 then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) heads[i] = head end end end end local data = { lang = lang, pos_category = poscat_th, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, is_reinteg = is_reinteg, } local is_suffix = false if pagename:find("^%-") and poscat_th ~= "รูปปัจจัย" then is_suffix = true data.pos_category = "suffixes" local singular_poscat = --[[require("Module:string utilities").singularize(poscat)]] poscat_th table.insert(data.categories, "ปัจจัยสร้าง" .. singular_poscat .. langname) table.insert(data.inflections, {label = "ปัจจัยสร้าง" .. singular_poscat}) end local tracking_categories = {} if pos_functions[poscat_th] then pos_functions[poscat_th].func(args, data, tracking_categories, is_suffix) end if is_reinteg then table.insert(data.inflections, {label = "บรรทัดฐาน[[ภาคผนวก:คตินิยมบูรณาการใหม่|นักบูรณาการใหม่]]"}) end if args.json then return require("Module:JSON").toJSON(data) end return require("Module:headword").full_headword(data) .. (#tracking_categories > 0 and require("Module:utilities").format_categories(tracking_categories, lang, nil, nil, force_cat) or "") end -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) 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 is_reinteg = frame.args.reinteg and require("Module:yesno")(frame.args.reinteg, false) or false local parargs = frame:getParent().args local also_reinteg = parargs.reinteg and require("Module:yesno")(parargs.reinteg, false) or false if is_reinteg and also_reinteg then error("Can't specify reinteg= when using a reintegrationist-specific template") end local parts = {} if also_reinteg or not is_reinteg then table.insert(parts, do_headword(parargs, poscat_th, false)) end if also_reinteg or is_reinteg then table.insert(parts, do_headword(parargs, poscat_th, true)) end return table.concat(parts, "<br />") end local function fetch_qualifiers(qual, existing) if not qual then return existing end if not existing then return {qual} end local retval = {} for _, e in ipairs(existing) do table.insert(retval, e) end table.insert(retval, qual) return retval end local function process_terms_with_qualifiers(terms, quals) local infls = {} for i, term in ipairs(terms) do table.insert(infls, {term = term, q = fetch_qualifiers(quals[i])}) end return infls end local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture replace -- expression. lemma = lemma:gsub("%%", "%%%%") -- Assign to a variable to discard second return value. term = term:gsub("#", lemma) return term end ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet( {"m", "f", "mf", "mfbysense", "m-p", "f-p", "mf-p", "mfbysense-p", "?", "?-p", "n", "n-p"} ) local function process_genders(data, genders, g_qual) for i, g in ipairs(genders) do if not allowed_genders[g] then error("Unrecognized gender: " .. g) end if g_qual[i] then table.insert(data.genders, {spec = g, qualifiers = {g_qual[i]}}) else table.insert(data.genders, g) end end end local function do_noun(args, data, tracking_categories, pos, is_suffix, is_proper) local com = require(data.is_reinteg and reinteg_com_module or com_module) local is_plurale_tantum = false local has_singular = false if is_suffix then pos = "ปัจจัย" end local plpos = --[[require("Module:string utilities").pluralize(pos)]] pos data.genders = {} local saw_m = false local saw_f = false local gender_for_default_plural process_genders(data, args[1], args.g_qual) -- Check for specific genders and pluralia tantum. for i, g in ipairs(args[1]) do if g:find("-p$") then is_plurale_tantum = true else has_singular = true if g == "m" or g == "mf" or g == "mfbysense" then saw_m = true end if g == "f" or g == "mf" or g == "mfbysense" then saw_f = true end end end if saw_m and saw_f then gender_for_default_plural = "m" elseif saw_f then gender_for_default_plural = "f" else gender_for_default_plural = "m" end local lemma = m_links.remove_links(data.heads[1]) -- should always be specified local function insert_inflection(list, term, accel, qualifiers, no_inv) local infl = {q = qualifiers, accel = accel} --if term == lemma and not no_inv then -- infl.label = glossary_link("ผันรูปไม่ได้") --else infl.term = term --end infl.term_for_further_inflection = term table.insert(list, infl) end -- Plural local plurals = {} local args_mpl = args.mpl local args_fpl = args.fpl local args_pl = args[2] if is_plurale_tantum and not has_singular then if #args_pl > 0 then error("Can't specify plurals of plurale tantum " .. pos) end table.insert(data.inflections, {label = glossary_link("พหูพจน์เท่านั้น")}) else if is_plurale_tantum then -- both singular and plural table.insert(data.inflections, {label = "บางครั้ง" .. glossary_link("พหูพจน์เท่านั้น") .. ", in variation"}) end -- If no plurals, use the default plural if not a proper noun. if #args_pl == 0 and not is_proper then args_pl = {"+"} end -- If only ~ given (countable and uncountable), add the default plural after it. if #args_pl == 1 and args_pl[1] == "~" then args_pl = {"~", "+"} end -- Gather plurals, handling requests for default plurals for i, pl in ipairs(args_pl) do local function insert_pl(term) local quals = fetch_qualifiers(args.pl_qual[i]) if term == lemma and i == 1 and #args_pl == 1 then table.insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้"), q = quals}) table.insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) else insert_inflection(plurals, term, nil, quals) end table.insert(data.categories, plpos .. "นับได้" .. langname) end local function make_plural_and_insert(form, special) local pl = com.make_plural(lemma, special) if pl then insert_pl(pl) end end if pl == "+" then make_plural_and_insert(lemma) elseif pl:find("^%+") then pl = require(romut_module).get_special_indicator(pl) make_plural_and_insert(lemma, pl) elseif pl == "?" or pl == "!" then if i > 1 or #args_pl > 1 then error("Can't specify ? or ! with other plurals") end if pl == "?" then -- Plural is unknown -- Better not to display anything -- table.insert(data.inflections, {label = "plural unknown or uncertain"}) table.insert(data.categories, langname .. " " .. plpos .. " with unknown or uncertain plurals") else -- Plural is not attested table.insert(data.inflections, {label = "plural not attested"}) table.insert(data.categories, langname .. " " .. plpos .. " with unattested plurals") end elseif pl == "-" then if i > 1 then error("Plural specifier - must be first") end -- Uncountable noun; may occasionally have a plural table.insert(data.categories, plpos .. "นับไม่ได้" .. langname) -- If plural forms were given explicitly, then show "usually" if #args_pl > 1 then table.insert(data.inflections, {label = "โดยปกติ" .. glossary_link("นับไม่ได้")}) table.insert(data.categories, plpos .. "นับได้" .. langname) else table.insert(data.inflections, {label = glossary_link("นับไม่ได้")}) end elseif pl == "~" then if i > 1 then error("Plural specifier ~ must be first") end -- Countable and uncountable noun; will have a plural table.insert(data.categories, plpos .. "นับได้" .. langname) table.insert(data.categories, plpos .. "นับไม่ได้" .. langname) table.insert(data.inflections, {label = glossary_link("นับได้") .. "และ" .. glossary_link("นับไม่ได้")}) else insert_pl(replace_hash_with_lemma(pl, lemma)) end end end if #plurals > 1 then table.insert(data.categories, langname .. " " .. plpos .. " with multiple plurals") end -- Gather masculines/feminines. For each one, generate the corresponding plural(s). local function handle_mf(mfs, qualifiers, inflect, default_plurals) local retval = {} for i, mf in ipairs(mfs) do local function insert_infl(list, term, accel, existing_qualifiers) insert_inflection(list, term, accel, fetch_qualifiers(qualifiers[i], existing_qualifiers), "no inv") end if mf == "+" then -- Generate default feminine. mf = inflect(lemma) else mf = replace_hash_with_lemma(mf, lemma) end local special = require(romut_module).get_special_indicator(mf) if special then mf = inflect(lemma, special) end insert_infl(retval, mf) local mfpl = com.make_plural(mf, special) if mfpl then -- Add an accelerator for each masculine/feminine plural whose lemma -- is the corresponding singular, so that the accelerated entry -- that is generated has a definition that looks like -- # {{plural of|gl|MFSING}} insert_infl(default_plurals, mfpl, {form = "p", lemma = mf}) end end return retval end local feminine_plurals = {} local feminines = handle_mf(args.f, args.f_qual, function(term, special) return com.make_feminine(term, "is noun", special) end, feminine_plurals) local masculine_plurals = {} local masculines = handle_mf(args.m, args.m_qual, com.make_masculine, masculine_plurals) local function handle_mf_plural(mfpl, qualifiers, default_plurals, singulars) local new_mfpls = {} for i, mfpl in ipairs(mfpl) do local function insert_infl(term, accel, existing_qualifiers, no_inv) insert_inflection(new_mfpls, term, accel, fetch_qualifiers(qualifiers[i], existing_qualifiers), no_inv) end local accel if #mfpl == #singulars then -- If same number of overriding masculine/feminine plurals as singulars, -- assume each plural goes with the corresponding singular -- and use each corresponding singular as the lemma in the accelerator. -- The generated entry will have # {{plural of|gl|SINGULAR}} as the -- definition. accel = {form = "p", lemma = singulars[i].term} else accel = nil end if mfpl == "+" then if #default_plurals > 0 then for _, defpl in ipairs(default_plurals) do -- defpl is a table -- don't use "invariable" because the plural is not with respect to the lemma but -- with respect to the masc/fem singular insert_infl(defpl.term_for_further_inflection, defpl.accel, defpl.q, "no inv") end else -- mf is a table local default_mfpl = com.make_plural(lemma) if default_mfpl then insert_infl(default_mfpl, accel) end end elseif mfpl:find("^%+") then mfpl = require(romut_module).get_special_indicator(mfpl) if #singulars > 0 then for _, mf in ipairs(singulars) do -- mf is a table local default_mfpl = com.make_plural(mf.term_for_further_inflection, mfpl) if default_mfpl then -- don't use "invariable" because the plural is not with respect to the lemma but -- with respect to the masc/fem singular insert_infl(default_mfpl, accel, mf.q, "no inv") end end else local default_mfpl = com.make_plural(lemma, mfpl) if default_mfpl then insert_infl(default_mfpl, accel) end end else mfpl = replace_hash_with_lemma(mfpl, lemma) -- don't use "invariable" if masc/fem singular present because the plural is not with respect to -- the lemma but with respect to the masc/fem singular insert_infl(mfpl, accel, nil, #singulars > 0) end end return new_mfpls end if #args_fpl > 0 then -- Override feminine plurals. feminine_plurals = handle_mf_plural(args_fpl, args.fpl_qual, feminine_plurals, feminines) end if #args_mpl > 0 then -- Override masculine plurals. masculine_plurals = handle_mf_plural(args_mpl, args.mpl_qual, masculine_plurals, masculines) end check_all_missing(plurals, plpos, tracking_categories) check_all_missing(feminines, plpos, tracking_categories) check_all_missing(feminine_plurals, plpos, tracking_categories) check_all_missing(masculines, plpos, tracking_categories) check_all_missing(masculine_plurals, plpos, tracking_categories) local function redundant_plural(pl) for _, p in ipairs(plurals) do if p.term_for_further_inflection == pl.term_for_further_inflection then return true end end return false end for _, mpl in ipairs(masculine_plurals) do if redundant_plural(mpl) then track("noun-redundant-mpl") end end for _, fpl in ipairs(feminine_plurals) do if redundant_plural(fpl) then track("noun-redundant-fpl") end end if #plurals > 0 then plurals.label = "พหูพจน์" plurals.accel = {form = "p"} table.insert(data.inflections, plurals) end if #masculines > 0 then masculines.label = "เพศชาย" table.insert(data.inflections, masculines) end if #masculine_plurals > 0 then masculine_plurals.label = "เพศชายพหูพจน์" table.insert(data.inflections, masculine_plurals) end if #feminines > 0 then feminines.label = "เพศหญิง" feminines.accel = {form = "f"} table.insert(data.inflections, feminines) end if #feminine_plurals > 0 then feminine_plurals.label = "เพศหญิงพหูพจน์" table.insert(data.inflections, feminine_plurals) end -- Maybe add category 'Galician nouns with irregular gender' (or similar) local irreg_gender_lemma = com.rsub(lemma, " .*", "") -- only look at first word if (rfind(irreg_gender_lemma, "[^ã]o$") and (gender_for_default_plural == "f" or gender_for_default_plural == "mf" or gender_for_default_plural == "mfbysense")) or (irreg_gender_lemma:find("a$") and (gender_for_default_plural == "m" or gender_for_default_plural == "mf" or gender_for_default_plural == "mfbysense")) then table.insert(data.categories, langname .. " " .. plpos .. " with irregular gender") end end local function get_noun_params() return { [1] = {list = "g", required = true, default = "?"}, [2] = {list = "pl"}, ["g_qual"] = {list = "g\1_qual", allow_holes = true}, ["pl_qual"] = {list = "pl\1_qual", allow_holes = true}, ["m"] = {list = true}, ["m_qual"] = {list = "m\1_qual", allow_holes = true}, ["f"] = {list = true}, ["f_qual"] = {list = "f\1_qual", allow_holes = true}, ["mpl"] = {list = true}, ["mpl_qual"] = {list = "mpl\1_qual", allow_holes = true}, ["fpl"] = {list = true}, ["fpl_qual"] = {list = "fpl\1_qual", allow_holes = true}, } end pos_functions["คำนาม"] = { params = get_noun_params(), func = function(args, data, tracking_categories, is_suffix) do_noun(args, data, tracking_categories, "คำนาม", is_suffix) end, } pos_functions["คำวิสามานยนาม"] = { params = get_noun_params(), func = function(args, data, tracking_categories, is_suffix) do_noun(args, data, tracking_categories, "คำวิสามานยนาม", is_suffix, "is proper noun") end, } ----------------------------------------------------------------------------------------- -- Pronouns -- ----------------------------------------------------------------------------------------- local function do_pronoun(args, data, tracking_categories, pos, is_suffix) if is_suffix then pos = "ปัจจัย" end local plpos = --[[require("Module:string utilities").pluralize(pos)]] pos if not is_suffix then data.pos_category = plpos end local lemma = m_links.remove_links(data.heads[1]) -- should always be specified data.genders = {} for i, g in ipairs(args[1]) do if g ~= "n" and g ~= "n-p" and not allowed_genders[g] then error("Unrecognized gender: " .. g) end if args.g_qual[i] then table.insert(data.genders, {spec = g, qualifiers = {args.g_qual[i]}}) else table.insert(data.genders, g) end end local function do_inflection(forms, quals, label) if #forms > 0 then local terms = process_terms_with_qualifiers(forms, quals) check_all_missing(terms, plpos, tracking_categories) terms.label = label table.insert(data.inflections, terms) end end do_inflection(args.m, args.m_qual, "เพศชาย") do_inflection(args.f, args.f_qual, "เพศหญิง") do_inflection(args.sg, args.sg_qual, "เอกพจน์") do_inflection(args.pl, args.pl_qual, "พหูพจน์") do_inflection(args.mpl, args.mpl_qual, "เพศชายพหูพจน์") do_inflection(args.fpl, args.fpl_qual, "เพศหญิงพหูพจน์") do_inflection(args.n, args.n_qual, "เพศกลาง") end local function get_pronoun_params() local params = { [1] = {list = "g"}, --gender(s) ["g_qual"] = {list = "g\1_qual", allow_holes = true}, ["m"] = {list = true}, --masculine form(s) ["m_qual"] = {list = "m\1_qual", allow_holes = true}, ["f"] = {list = true}, --feminine form(s) ["f_qual"] = {list = "f\1_qual", allow_holes = true}, ["sg"] = {list = true}, --singular form(s) ["sg_qual"] = {list = "sg\1_qual", allow_holes = true}, ["pl"] = {list = true}, --plural form(s) ["pl_qual"] = {list = "pl\1_qual", allow_holes = true}, ["mpl"] = {list = true}, --masculine plural form(s) ["mpl_qual"] = {list = "mpl\1_qual", allow_holes = true}, ["fpl"] = {list = true}, --feminine plural form(s) ["fpl_qual"] = {list = "fpl\1_qual", allow_holes = true}, ["n"] = {list = true}, --neuter form(s) ["n_qual"] = {list = "n\1_qual", allow_holes = true}, } return params end pos_functions["คำสรรพนาม"] = { params = get_pronoun_params(), func = function(args, data, tracking_categories, is_suffix) do_pronoun(args, data, tracking_categories, "คำสรรพนาม", is_suffix) end, } ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function insert_ancillary_inflection(data, forms, quals, label, plpos, tracking_categories) if forms and #forms > 0 then local terms = process_terms_with_qualifiers(forms, quals) check_all_missing(terms, plpos, tracking_categories) terms.label = label table.insert(data.inflections, terms) end end -- Handle comparatives and superlatives for adjectives and adverbs, including user-specified comparatives and -- superlatives, default-requested comparatives/superlatives using '+', autogenerated comparatives/superlatives, -- and hascomp=. Code is the same for adjectives and adverbs. local function handle_adj_adv_comp(args, data, plpos, is_adv, tracking_categories) local com = require(data.is_reinteg and reinteg_com_module or com_module) local lemma = m_links.remove_links(data.heads[1]) -- should always be specified local stem if is_adv then stem = com.rsub(lemma, "mente$", "") else stem = lemma end local function make_absolute_superlative(special) if is_adv then return com.make_adverbial_absolute_superlative(stem, special) else return com.make_absolute_superlative(stem, special) end end -- Maybe autogenerate default comparative/superlative. if args.comp and args.sup then-- comp= and sup= were given as options to the user -- If no comp, but a non-default sup given, then add the default comparative/superlative. -- This is useful when an absolute superlative is given. local saw_sup_plus = false if #args.comp == 0 and #args.sup > 0 then for i, supval in ipairs(args.sup) do if supval == "+" then saw_sup_plus = true end end if not saw_sup_plus then args.comp = {"+"} table.insert(args.sup, 1, "+") end end -- If comp=+, use default comparative 'mais ...', and set a default superlative if unspecified. local saw_comp_plus = false for i, compval in ipairs(args.comp) do if compval == "+" then saw_comp_plus = true args.comp[i] = "[[mais]] [[" .. lemma .. "]]" end end if saw_comp_plus and #args.sup == 0 then args.sup = {"+"} end -- If sup=+ (possibly from comp=+), use default superlative 'o mais ...'. Also handle absolute superlatives. for i, supval in ipairs(args.sup) do if supval == "+" then args.sup[i] = "[[o]] [[mais]] [[" .. lemma .. "]]" elseif supval == "+abs" then args.sup[i] = make_absolute_superlative() elseif rfind(supval, "^%+abs:") then local sp = rmatch(supval, "^%+abs:(.*)$") args.sup[i] = make_absolute_superlative(sp) end end end if args.hascomp then if args.hascomp == "both" then table.insert(data.inflections, {label = "บางครั้ง" .. glossary_link("เปรียบเทียบได้")}) table.insert(data.categories, plpos .. "เปรียบเทียบได้" .. langname) table.insert(data.categories, plpos .. "เปรียบเทียบไม่ได้" .. langname) else local hascomp = require("Module:yesno")(args.hascomp) if hascomp == true then table.insert(data.inflections, {label = glossary_link("เปรียบเทียบได้")}) table.insert(data.categories, plpos .. "เปรียบเทียบได้" .. langname) elseif hascomp == false then table.insert(data.inflections, {label = glossary_link("เปรียบเทียบไม่ได้")}) table.insert(data.categories, plpos .. "เปรียบเทียบไม่ได้" .. langname) else error("Unrecognized value for hascomp=: " .. args.hascomp) end end elseif args.comp and #args.comp > 0 or args.sup and #args.sup > 0 then table.insert(data.inflections, {label = glossary_link("เปรียบเทียบได้")}) table.insert(data.categories, plpos .. "เปรียบเทียบได้" .. langname) end insert_ancillary_inflection(data, args.comp, args.comp_qual, "ขั้นกว่า", plpos, tracking_categories) insert_ancillary_inflection(data, args.sup, args.sup_qual, "ขั้นสุด", plpos, tracking_categories) end local function do_adjective(args, data, tracking_categories, pos, is_suffix, is_superlative) local com = require(data.is_reinteg and reinteg_com_module or com_module) local feminines = {} local masculine_plurals = {} local feminine_plurals = {} if is_suffix then pos = "ปัจจัย" end local plpos = --[[require("Module:string utilities").pluralize(pos)]] pos if not is_suffix then data.pos_category = plpos end if args.sp then local romut = require(romut_module) if not romut.allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(romut.allowed_special_indicators) do table.insert(indicators, "'" .. indic .. "'") end table.sort(indicators) error("Special inflection indicator beginning can only be " .. m_table.serialCommaJoin(indicators, {dontTag = true}) .. ": " .. args.sp) end end local lemma = m_links.remove_links(data.heads[1]) -- should always be specified local function insert_inflection(forms, label, accel) if #forms > 0 then if forms[1].term == "-" then table.insert(data.inflections, {label = "ไม่มี" .. label}) else forms.label = label forms.accel = {form = accel} table.insert(data.inflections, forms) end end end if args.short then table.insert(data.inflections, {label = "[[ภาคผนวก:คำกริยาภาษากาลิเซีย#รูปกริยาขยาย|รูปกริยาขยายสั้น]]"}) end if args.inv then -- invariable adjective table.insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")}) table.insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) if args.sp or #args.f > 0 or #args.pl > 0 or #args.mpl > 0 or #args.fpl > 0 then error("Can't specify inflections with an invariable " .. pos) end elseif args.fonly then -- feminine-only if #args.f > 0 then error("Can't specify explicit feminines with feminine-only " .. pos) end if #args.pl > 0 then error("Can't specify explicit plurals with feminine-only " .. pos .. ", use fpl=") end if #args.mpl > 0 then error("Can't specify explicit masculine plurals with feminine-only " .. pos) end local argsfpl = args.fpl if #argsfpl == 0 then argsfpl = {"+"} end for i, fpl in ipairs(argsfpl) do if fpl == "+" then local defpl = com.make_plural(lemma, args.sp) if not defpl then error("Unable to generate default plural of '" .. lemma .. "'") end fpl = defpl else fpl = replace_hash_with_lemma(fpl, lemma) end table.insert(feminine_plurals, {term = fpl, q = fetch_qualifiers(args.fpl_qual[i])}) end check_all_missing(feminine_plurals, plpos, tracking_categories) table.insert(data.inflections, {label = "เพศหญิงเท่านั้น"}) insert_inflection(feminine_plurals, "เพศหญิงพหูพจน์", "f|p") else -- Gather feminines. local argsf = args.f if #argsf == 0 then argsf = {"+"} end for i, f in ipairs(argsf) do if f == "+" then -- Generate default feminine. f = com.make_feminine(lemma, false, args.sp) else f = replace_hash_with_lemma(f, lemma) end table.insert(feminines, {term = f, q = fetch_qualifiers(args.f_qual[i])}) end local argsmpl = args.mpl local argsfpl = args.fpl if #args.pl > 0 then if #argsmpl > 0 or #argsfpl > 0 or args.mpl_qual.maxindex > 0 or args.fpl_qual.maxindex > 0 then error("Can't specify both pl= and mpl=/fpl=") end argsmpl = args.pl args.mpl_qual = args.pl_qual argsfpl = args.pl args.fpl_qual = args.pl_qual end if #argsmpl == 0 then argsmpl = {"+"} end if #argsfpl == 0 then argsfpl = {"+"} end for i, mpl in ipairs(argsmpl) do if mpl == "+" then -- Generate default masculine plural. local defpl = com.make_plural(lemma, args.sp) if not defpl then error("Unable to generate default plural of '" .. lemma .. "'") end mpl = defpl else mpl = replace_hash_with_lemma(mpl, lemma) end table.insert(masculine_plurals, {term = mpl, q = fetch_qualifiers(args.mpl_qual[i])}) end for i, fpl in ipairs(argsfpl) do if fpl == "+" then for _, f in ipairs(feminines) do -- Generate default feminine plural; f is a table. local defpl = com.make_plural(f.term, args.sp) if not defpl then error("Unable to generate default plural of '" .. f.term .. "'") end table.insert(feminine_plurals, {term = defpl, q = fetch_qualifiers(args.fpl_qual[i], f.q)}) end else fpl = replace_hash_with_lemma(fpl, lemma) table.insert(feminine_plurals, {term = fpl, q = fetch_qualifiers(args.fpl_qual[i])}) end end check_all_missing(feminines, plpos, tracking_categories) check_all_missing(masculine_plurals, plpos, tracking_categories) check_all_missing(feminine_plurals, plpos, tracking_categories) local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and not feminines[1].q local fem_pl_like_masc_pl = #masculine_plurals > 0 and #feminine_plurals > 0 and m_table.deepEquals(masculine_plurals, feminine_plurals) local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and not masculine_plurals[1].q if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then -- actually invariable table.insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")}) table.insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) else -- Make sure there are feminines given and not same as lemma. if not fem_like_lemma then insert_inflection(feminines, "เพศหญิง", "f|s") end if fem_pl_like_masc_pl then insert_inflection(masculine_plurals, "พหูพจน์", "p") data.genders = {"mf"} else insert_inflection(masculine_plurals, "เพศชายพหูพจน์", "m|p") insert_inflection(feminine_plurals, "เพศหญิงพหูพจน์", "f|p") end end end insert_ancillary_inflection(data, args.n, args.n_qual, "เพศกลาง", plpos, tracking_categories) handle_adj_adv_comp(args, data, plpos, false, tracking_categories) -- Handle requests for default diminutive. if args.dim then for i, dim in ipairs(args.dim) do if dim == "+" then args.dim[i] = com.make_diminutive(lemma) elseif dim:find("^%+") then dim = require(romut_module).get_special_indicator(dim) args.dim[i] = com.make_diminutive(lemma, dim) end end end -- Handle requests for default augmentative. if args.aug then for i, aug in ipairs(args.aug) do if aug == "+" then args.aug[i] = com.make_augmentative(lemma) elseif aug:find("^%+") then aug = require(romut_module).get_special_indicator(aug) args.aug[i] = com.make_augmentative(lemma, aug) end end end insert_ancillary_inflection(data, args.dim, args.dim_qual, "ตัวบอกความเล็ก", plpos, tracking_categories) insert_ancillary_inflection(data, args.aug, args.aug_qual, "ตัวบอกความใหญ่", plpos, tracking_categories) if args.irreg and is_superlative then table.insert(data.categories, langname .. " irregular superlative " .. plpos) end end local function get_adjective_params(adjtype) local params = { ["inv"] = {type = "boolean"}, --invariable ["sp"] = {}, -- special indicator: "first", "first-last", etc. ["f"] = {list = true}, --feminine form(s) ["f_qual"] = {list = "f\1_qual", allow_holes = true}, ["pl"] = {list = true}, --plural override(s) ["pl_qual"] = {list = "pl\1_qual", allow_holes = true}, ["mpl"] = {list = true}, --masculine plural override(s) ["mpl_qual"] = {list = "mpl\1_qual", allow_holes = true}, ["fpl"] = {list = true}, --feminine plural override(s) ["fpl_qual"] = {list = "fpl\1_qual", allow_holes = true}, } if adjtype == "base" then params["comp"] = {list = true} --comparative(s) params["comp_qual"] = {list = "comp\1_qual", allow_holes = true} params["sup"] = {list = true} --superlative(s) params["sup_qual"] = {list = "sup\1_qual", allow_holes = true} params["dim"] = {list = true} --diminutive(s) params["dim_qual"] = {list = "dim\1_qual", allow_holes = true} params["aug"] = {list = true} --augmentative(s) params["aug_qual"] = {list = "aug\1_qual", allow_holes = true} params["fonly"] = {type = "boolean"} -- feminine only params["hascomp"] = {} -- has comparative end if adjtype == "part" then params["short"] = {type = "boolean"} -- short participle end if adjtype == "sup" then params["irreg"] = {type = "boolean"} end if adjtype == "pron" or adjtype == "contr" then params["n"] = {list = true} --neuter form(s) params["n_qual"] = {list = "n\1_qual", allow_holes = true} end return params end pos_functions["คำคุณศัพท์"] = { params = get_adjective_params("base"), func = function(args, data, tracking_categories, is_suffix) do_adjective(args, data, tracking_categories, "คำคุณศัพท์", is_suffix) end, } pos_functions["คำคุณศัพท์ขั้นกว่า"] = { params = get_adjective_params("comp"), func = function(args, data, tracking_categories, is_suffix) do_adjective(args, data, tracking_categories, "คำคุณศัพท์", is_suffix) end, } pos_functions["คำคุณศัพท์ขั้นสุด"] = { params = get_adjective_params("sup"), func = function(args, data, tracking_categories, is_suffix) do_adjective(args, data, tracking_categories, "คำคุณศัพท์", is_suffix, "is superlative") end, } pos_functions["รูปกริยาขยายอดีตกาล"] = { params = get_adjective_params("part"), func = function(args, data, tracking_categories, is_suffix) do_adjective(args, data, tracking_categories, "รูปกริยาขยาย", is_suffix) data.pos_category = "รูปกริยาขยายอดีตกาล" end, } pos_functions["ตัวกำหนด"] = { params = get_adjective_params("det"), func = function(args, data, tracking_categories, is_suffix) do_adjective(args, data, tracking_categories, "ตัวกำหนด", is_suffix) end, } pos_functions["คำสรรพนามคล้ายคุณศัพท์"] = { params = get_adjective_params("pron"), func = function(args, data, tracking_categories, is_suffix) do_adjective(args, data, tracking_categories, "คำสรรพนาม", is_suffix) end, } pos_functions["adjective-like contractions"] = { params = get_adjective_params("contr"), func = function(args, data, tracking_categories, is_suffix) do_adjective(args, data, tracking_categories, "contraction", is_suffix) end, } ----------------------------------------------------------------------------------------- -- Adverbs -- ----------------------------------------------------------------------------------------- local function do_adverb(args, data, tracking_categories, pos, is_suffix) if is_suffix then pos = "ปัจจัย" end local plpos = --[[require("Module:string utilities").pluralize(pos)]] pos if not is_suffix then data.pos_category = plpos end handle_adj_adv_comp(args, data, plpos, "is adv", tracking_categories) end local function get_adverb_params(advtype) local params = {} if advtype == "base" then params["comp"] = {list = true} --comparative(s) params["comp_qual"] = {list = "comp\1_qual", allow_holes = true} params["sup"] = {list = true} --superlative(s) params["sup_qual"] = {list = "sup\1_qual", allow_holes = true} params["hascomp"] = {} -- has comparative end return params end pos_functions["คำกริยาวิเศษณ์"] = { params = get_adverb_params("base"), func = function(args, data, tracking_categories, is_suffix) do_adverb(args, data, tracking_categories, "คำกริยาวิเศษณ์", is_suffix) end, } pos_functions["คำกริยาวิเศษณ์ขั้นกว่า"] = { params = get_adverb_params("comp"), func = function(args, data, tracking_categories, is_suffix) do_adverb(args, data, tracking_categories, "คำกริยาวิเศษณ์", is_suffix) end, } pos_functions["คำกริยาวิเศษณ์ขั้นสุด"] = { params = get_adverb_params("sup"), func = function(args, data, tracking_categories, is_suffix) do_adverb(args, data, tracking_categories, "คำกริยาวิเศษณ์", is_suffix) end, } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["คำกริยา"] = { params = { [1] = {}, ["pres"] = {list = true}, --present ["pres_qual"] = {list = "pres\1_qual", allow_holes = true}, ["pres3s"] = {list = true}, --third-singular present ["pres3s_qual"] = {list = "pres3s\1_qual", allow_holes = true}, ["pret"] = {list = true}, --preterite ["pret_qual"] = {list = "pret\1_qual", allow_holes = true}, ["part"] = {list = true}, --participle ["part_qual"] = {list = "part\1_qual", allow_holes = true}, ["short_part"] = {list = true}, --short participle ["short_part_qual"] = {list = "short_part\1_qual", allow_holes = true}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["attn"] = {type = "boolean"}, }, func = function(args, data, tracking_categories) local preses, preses_3s, prets, parts, short_parts if args.attn then table.insert(tracking_categories, "Requests for attention concerning " .. langname) return end local gl_verb = require(data.is_reinteg and gl_reinteg_verb_module or gl_verb_module) local alternant_multiword_spec = gl_verb.do_generate_forms(args, data.is_reinteg and "gl-reinteg-verb" or "gl-verb", data.heads[1]) local specforms = alternant_multiword_spec.forms local function slot_exists(slot) return specforms[slot] and #specforms[slot] > 0 end local function do_finite(slot_tense, label_tense) -- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p (only3p verbs); -- but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. [[empedernir]]). local has_1s = slot_exists(slot_tense .. "_1s") local has_3s = slot_exists(slot_tense .. "_3s") local has_3p = slot_exists(slot_tense .. "_3p") if has_1s or (not has_3s and not has_3p) then return { slot = slot_tense .. "_1s", label = ("บุรุษที่หนึ่งเอกพจน์%s"):format(label_tense), }, true elseif has_3s then return { slot = slot_tense .. "_3s", label = ("บุรุษที่สามเอกพจน์%s"):format(label_tense), }, false else return { slot = slot_tense .. "_3p", label = ("บุรุษที่สามพหูพจน์%s"):format(label_tense), }, false end end local did_pres_1s preses, did_pres_1s = do_finite("pres", "ปัจจุบันกาล") preses_3s = { slot = "pres_3s", label = "บุรุษที่สามเอกพจน์ปัจจุบันกาล", } prets = do_finite("pret", "อดีตกาลสิ้นสุด") parts = { slot = "pp_ms", label = "รูปกริยาขยายอดีตกาล", } short_parts = { slot = "short_pp_ms", label = "รูปกริยาขยายอดีตกาลสั้น", } if #args.pres > 0 or #args.pres3s > 0 or #args.pret > 0 or #args.part > 0 or #args.short_part > 0 then track("verb-old-multiarg") end local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Internal error: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end table.insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty) local forms local to_insert if #args == 0 then forms = specforms[slot_desc.slot] if not forms or #forms == 0 then if skip_if_empty then return end forms = {{form = "-"}} end elseif #args == 1 and args[1] == "-" then forms = {{form = "-"}} else forms = {} for i, arg in ipairs(args) do local qual = qualifiers[i] if qual then -- FIXME: It's annoying we have to add brackets and strip them out later. The inflection -- code adds all footnotes with brackets around them; we should change this. qual = {"[" .. qual .. "]"} end local form = arg if not args.noautolinkverb then form = com.add_links(form) end table.insert(forms, {form = form, footnotes = qual}) end end if forms[1].form == "-" then to_insert = {label = "no " .. slot_desc.label} else local into_table = {label = slot_desc.label} for _, form in ipairs(forms) do local qualifiers = strip_brackets(form.footnotes) -- Strip redundant brackets surrounding entire form. These may get generated e.g. -- if we use the angle bracket notation with a single word. local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form -- The reintegrationist code uses variant codes to track "Portuguese-ending" vs. "Galician-ending" -- forms and "less common" forms. Remove them now. if data.is_reinteg then stripped_form = gl_verb.remove_variant_codes(stripped_form) end -- Don't include accelerators if brackets remain in form, as the result will be wrong. -- FIXME: For now, don't include accelerators. We should use the new {{gl-verb form of}} once implemented. -- local this_accel = not stripped_form:find("%[%[") and accel or nil local this_accel = nil table.insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel}) end to_insert = into_table end table.insert(data.inflections, to_insert) end local skip_pres_if_empty if alternant_multiword_spec.no_pres1_and_sub then table.insert(data.inflections, {label = "ไม่มีบุรุษที่หนึ่งเอกพจน์ปัจจุบันกาล"}) table.insert(data.inflections, {label = "ไม่มีมาลาสมมุติปัจจุบันกาล"}) end if alternant_multiword_spec.no_pres_stressed then table.insert(data.inflections, {label = "ไม่มีมาลาสั่งหรือมาลาสมมุติปัจจุบันกาลเน้นหนัก"}) skip_pres_if_empty = true end if alternant_multiword_spec.only3s then table.insert(data.inflections, {label = glossary_link("อบุรุษ")}) elseif alternant_multiword_spec.only3sp then table.insert(data.inflections, {label = "บุรุษที่สามเท่านั้น"}) elseif alternant_multiword_spec.only3p then table.insert(data.inflections, {label = "บุรุษที่สามพหูพจน์เท่านั้น"}) end local has_vowel_alt if alternant_multiword_spec.vowel_alt then for _, vowel_alt in ipairs(alternant_multiword_spec.vowel_alt) do if vowel_alt ~= "+" and vowel_alt ~= "í" and vowel_alt ~= "ú" then has_vowel_alt = true break end end end local function expand_footnotes_and_references(footnotes) if not footnotes then return nil end return require("Module:inflection utilities").fetch_headword_qualifiers_and_references(footnotes) end do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty) -- We want to include both the pres_1s and pres_3s if there is a vowel alternation in the present singular. But we -- don't want to redundantly include the pres_3s if we already included it. if did_pres_1s and has_vowel_alt then do_verb_form(args.pres3s, args.pres3s_qual, preses_3s, skip_pres_if_empty) end do_verb_form(args.pret, args.pret_qual, prets) do_verb_form(args.part, args.part_qual, parts) do_verb_form(args.short_part, args.short_part_qual, short_parts, "skip if empty") -- Add categories. for _, cat in ipairs(alternant_multiword_spec.categories) do table.insert(data.categories, cat) end -- 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:gl-verb]]/[[Module:gl-reinteg-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 Galician equivalent). if #data.user_specified_heads == 0 or ( #data.user_specified_heads == 1 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 = expand_footnotes_and_references(lemma_obj.footnotes) table.insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end end } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["รูปปัจจัย"] = { params = { [1] = {required = true, list = true}, ["g"] = {list = true}, ["g_qual"] = {list = "g\1_qual", allow_holes = true}, }, func = function(args, data, is_suffix) data.genders = {} process_genders(data, args.g, args.g_qual) local suffix_type = {} for _, typ in ipairs(args[1]) do table.insert(suffix_type, "ปัจจัยสร้าง" .. typ) end table.insert(data.inflections, {label = "รูปผันของ " .. m_table.serialCommaJoin(suffix_type, {conj = "หรือ"})}) end, } return export 9jyk5lkjsnnj6l3w6qd0imovv67336h ค่าง 0 146867 5729052 2188856 2026-07-19T23:38:49Z Alifshinobi 397 5729052 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|lo|ຄ່າງ}}, {{cog|nod|ᨣ᩵ᩤ᩠ᨦ}}, {{cog|kkh|ᨣ᩵ᩤ᩠ᨦ}}, {{cog|khb|ᦅᦱᧂᧈ}}, {{cog|shn|ၵၢင်ႈ}}, {{cog|za|gangh|tr=ก่าง}}, {{cog|zzj|kangh|tr=ค่าง}} === การออกเสียง === {{th-pron}} === คำนาม === [[ไฟล์:Portrait of a Douc.jpg|thumb|150px|ค่างห้าสี]] {{th-noun|ตัว}} # ชื่อ[[สัตว์เลี้ยงลูกด้วยน้ำนม]][[ใน]][[วงศ์]][[ลิงโลกเก่า]] ([[Cercopithecidae]]) [[ลักษณะ]][[คล้าย]][[ลิง]] [[ขน]][[สี]][[เทา]][[หรือ]][[ดำ]] [[ลำตัว]] [[แขน]] [[ขา]] [[และ]][[หาง]][[ยาว]][[กว่า]]ลิง[[ทั่ว]] ๆ [[ไป]] [[กิน]][[ใบไม้]]และ[[ผลไม้]] ==== ลูกคำ ==== {{col4|th |ค่างดำ |ค่างแว่นถิ่นใต้ |ค่างหงอก |ค่างเทา |ค่างแว่นถิ่นเหนือ |ค่างสามสี |ค่างสี่สี |ค่างห้าสี }} {{topics|th|สัตว์เลี้ยงลูกด้วยน้ำนม}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/kaːŋ˦˨/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ตัว|tl=1}} # {{lang|nod|([[อี่]]~)}} {{altform|nod|ᨣ᩵ᩤ᩠ᨦ|t=[[ค่าง#ภาษาไทย|ค่าง]]}} leyfhwd2nuhnicjdhdc3wzviupvergp เป้า 0 148183 5729060 4818439 2026-07-20T01:38:10Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729060 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|lo|ເປົ້າ}}, {{cog|khb|ᦔᧁᧉ}} === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === ==== คำนาม ==== {{th-noun}} # [[สิ่ง]][[ที่]][[กำหนด]][[ไว้]][[เป็น]][[จุดหมาย]] #: {{ux|th|นักยิงปืนยิงถูกตรง'''เป้า'''ทุกนัด}} #: {{ux|th|เอาต้นไม้เป็น'''เป้า'''}} # {{lb|th|โดยปริยาย}} ที่[[เพ่งเล็ง]] #: {{ux|th|เป็น'''เป้า'''สายตา}} ==== คำเกี่ยวข้อง ==== {{rel-top|สิ่งมุ่งหมาย}} * [[เป้านิ่ง]] * [[เป้าบิน]] * [[เป้าประสงค์]] {{rel-mid}} * [[เป้าสายตา]] * [[เป้าหมาย]] * [[ยิงเป้า]] {{rel-bottom}} === รากศัพท์ 2 === ==== คำนาม ==== {{th-noun}} # [[ชิ้น]][[ผ้า]]ที่[[เย็บ]][[แทรก]][[ตะเข็บ]][[ตรง]][[รักแร้]][[เสื้อ]][[หรือ]][[รอยต่อ]][[ขา]][[กางเกง]]ผ้าหรือกางเกง[[แพร]][[เพื่อ]][[ให้]][[เคลื่อนไหว]][[ได้]][[สะดวก]] # [[ส่วน]][[ของ]]เสื้อที่[[อยู่]][[ใต้]]รักแร้หรือส่วนของกางเกงที่อยู่ใต้[[หว่างขา]] == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/paw˦˦ʔ/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ตั๋ว}} # {{pronunciation spelling of|nod|ᨸᩖᩮᩢ᩶ᩣ|t=[[นก]][[เปล้า]]}} pqw4hougvncb1ykbic67t0has108du2 ข๋บ 0 163926 5729045 1880724 2026-07-19T23:27:41Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729045 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xop˨˦/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᨡᩫ᩠ᨷ|t=[[กัด]]}} 6cl7f43vp1yzsfduuuptbis4e38ilfw ᨶᩣ᩠ᨦᨱᩦ 0 164659 5729328 1426896 2026-07-20T06:05:59Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729328 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|c=ᨶᩣ᩠ᨦᨶᩦ|l=นางณี|s=นางนี}} === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|lo|ນາງນີ}}, {{cog|khb|ᦓᦱᧂᦓᦲ}} === การออกเสียง === * {{IPA|nod|/naːŋ˧˧.niː˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ᨲ᩠ᩅᩫ}} # [[ชะนี]] #: {{syn|nod|ᩅᩩ᩠ᨿ}} 2hdnw6lrhx94ixuvzndolnqf87hyglz 5729331 5729328 2026-07-20T06:09:15Z Alifshinobi 397 /* รากศัพท์ */ 5729331 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|c=ᨶᩣ᩠ᨦᨶᩦ|l=นางณี|s=นางนี}} === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|lo|ນາງນີ}}, {{cog|kkh|ᨶᩣ᩠ᨦᨱᩦ}}, {{cog|khb|ᦓᦱᧂᦓᦲ}} === การออกเสียง === * {{IPA|nod|/naːŋ˧˧.niː˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ᨲ᩠ᩅᩫ}} # [[ชะนี]] #: {{syn|nod|ᩅᩩ᩠ᨿ}} dunpkw6lnsp01om7ud1zgtz7m3r341d ᩅᩩ᩠ᨿ 0 164669 5729327 3325776 2026-07-20T06:05:03Z Alifshinobi 397 5729327 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|shn|ဢီႇဝုၺ်း}} === การออกเสียง === * {{IPA|nod|/wuj˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ᨲ᩠ᩅᩫ}} # {{lang|nod|([[ᩋᩦ᩵]]~)}} [[ชะนี]] #: {{syn|nod|ᨶᩣ᩠ᨦᨱᩦ|ᩋᩦ᩵ᩁᩩ᩠ᨿ|ᩋᩦ᩵ᩌᩩ᩠ᨿ}} trpbfvjv5eg4nm5nb5976kxhvge4p6w 5729335 5729327 2026-07-20T06:20:38Z Alifshinobi 397 5729335 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|shn|ဢီႇဝုၺ်း}} === การออกเสียง === * {{IPA|nod|/wuj˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ᨲ᩠ᩅᩫ}} # {{lang|nod|([[ᩋᩦ᩵]]~)}} [[ชะนี]] ==== คำพ้องความ ==== {{col4|nod |ᨶᩣ᩠ᨦᨱᩦ |ᩋᩦ᩵ᨠᩩᨯ |ᩋᩦ᩵ᩁᩩ᩠ᨿ |ᩋᩦ᩵ᩌᩩ᩠ᨿ }} pwpn489d8jut9o3qf026i3ulmjf1k7b จ้าด 0 164682 5729024 1371142 2026-07-19T20:12:14Z Alifshinobi 397 5729024 wikitext text/x-wiki ==ภาษาคำเมือง== === การออกเสียง === * {{IPA|nod|/t͡ɕaːt˦˨/|a=เชียงใหม่}} === รากศัพท์ 1 === ====คำกริยาวิเศษณ์==== {{nod-adv|-}} # {{altform|nod|ᨩᩣ᩠ᨯ|t=[[มาก]], [[เยอะ]] [[มัก]][[ใช้]][[คู่]][[กับ]] [[นัก]] เป็น จ้าด[[นัก]]; [[มาก]] ๆ, [[สุด ๆ]]}} === รากศัพท์ 2 === ====คำนาม==== {{nod-noun}} # {{altform|nod|ᨩᩣ᩠ᨲ|t=[[ชาติ]]}} f7ihwe1bow7g25xoaow6mpnydgqsle8 ໂກນ 0 165727 5729027 1890969 2026-07-19T20:28:41Z Alifshinobi 397 /* ภาษาลาว */ 5729027 wikitext text/x-wiki {{also/auto}} == ภาษาลาว == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|tts|โกน}}, {{cog|nod|ᨠᩰᩫ᩠ᨶ}}, {{cog|kkh|ᨠ᩠ᩅᩁ}} (ในคำว่า {{m|kkh|ᨠ᩠ᩅᩁᨹᩨ᩠᩶ᨦ}}), {{cog|khb|ᦷᦂᧃ}}; อาจเกี่ยวข้องกับ{{cog|th|กลวง}} === การออกเสียง === {{lo-pron}} === คำนาม === {{lo-noun}} # [[โพรง]] #: {{ux|lo|[[ຍືດ]][[ຄໍ]][[ສ່ອງ]][[ຕາມ]]'''ໂກນ'''[[ເສົາ]]|ยืดคอส่องตาม'''โพรง'''เสา}} hwz6hgcurgz2lx0gz99xabskd6id5ai dormir 0 172697 5729386 5688275 2026-07-20T07:50:49Z Octahedron80 267 /* การผันรูป */ 5729386 wikitext text/x-wiki {{minitoc}} == ภาษากาตาลา == === รากศัพท์ === {{inh+|ca|la|dormiō|dormīre}}, จาก{{inh|ca|itc-pro|*dormiō}}, จาก{{der|ca|ine-pro|*drem-|t=วิ่ง; นอนหลับ}}; เทียบ{{cog|oc|dormir}}, {{cog|fr|dormir}}, {{cog|es|dormir}} === การออกเสียง === * {{ca-IPA}} * {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-dormir.wav}} * {{rhymes|ca|i(ɾ)|s=2}} === คำกริยา === {{ca-verb|pres_1_sg=dormo}} # {{lb|ca|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{ca-conj}} ==== ลูกคำ ==== {{col4|ca|adormir|condormir|dorment|dormida|dormidor|dormidora|dormilec|dormilega|dormiment|dormisquejar|dormitar}} ==== คำเกี่ยวข้อง ==== {{rel3|ca|dormició|dormitiu|dormitori}} === อ่านเพิ่ม === * {{R:ca:IEC2}} * {{R:ca:GDLC}} * {{R:ca:DNV}} * {{R:ca:DCVB}} {{C|ca|การนอนหลับ}} == ภาษาโปรตุเกส == === รูปแบบอื่น === * {{alt|pt|dromir||dialectal}} * {{alt|pt|drumir|drumi|dromi|dormi|durmi||eye dialect}} * {{alt|pt|durmir||obsolete or eye dialect}} === รากศัพท์ === จาก{{inh|pt|roa-opt|dormir}}, {{m|roa-opt|durmir}}, จาก{{inh|pt|la|dormiō|dormīre|t=นอนหลับ}}, จาก{{inh|pt|itc-pro|*dormiō}}, จาก{{der|pt|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === {{pt-IPA|do^rmir}}<!-- FIXME, is 'durmir' colloquial? --> * {{hyph|pt|dor|mir}} === คำกริยา === {{pt-verb}} # {{senseid|pt|to sleep}} {{lb|pt|อกรรม}} [[นอน]][[หลับ]] #: {{ux|pt|O gato '''está dormindo'''.|The cat '''is sleeping'''.}} # {{senseid|pt|to fall asleep}} {{lb|pt|อกรรม}} [[หลับ]] #: {{ux|pt|Demorou horas até que eu '''dormisse'''.|Hours passed before I '''fell asleep'''.}} # {{senseid|pt|to have a type of sleep}} {{lb|pt|สกรรม}} นอนหลับ[[บาง]][[ประเภท]] #: {{ux|pt|'''Dormir''' uma soneca.|'''To have''' a nap.}} # {{senseid|pt|to be inactive}} {{lb|pt|figurative|อกรรม}} [[นิ่ง]], [[เงียบ]], [[ไม่]][[เคลื่อนไหว]] #: {{ux|pt|A célula dos terroristas está '''dormindo'''.|The terrorist cell '''is asleep'''.}} # {{senseid|pt|to have sex with}} {{indtr|pt|com|.euphemistic}} {{lb|pt|[[dormir com]]}} [[มี]][[เพศสัมพันธ์]] #: {{ux|pt|Peguei-a '''dormindo''' com um rapaz.|I caught her '''sleeping''' with a boy.}} # {{senseid|pt|to be constantly with}} {{indtr|pt|com|.figurative}} {{lb|pt|[[dormir com]]}} [[คง]][[อยู่]], ไม่[[เปลี่ยนแปลง]] #: {{ux|pt|A memória da guerra '''dorme''' com o veterano.|The memory of the war '''sleeps''' with the veteran.}} # {{senseid|pt|to be dead}} {{lb|pt|กลอน|อกรรม}} [[ตาย]] (แล้ว) #: {{ux|pt|Todos meus heróis '''dormem'''.|All my heroes '''are dead'''.}} # {{senseid|pt|to lose blood circulation}} {{lb|pt|ปาก|อกรรม}} (แขนขา) [[ชา]][[เพราะ]]ไม่[[มี]][[เลือด]][[ไป]][[หล่อเลี้ยง]] #: {{ux|pt|Acordei no meio da noite e meu braço tinha '''dormido'''.|I woke up in the middle of the night and my arm had '''fallen asleep'''.}} # {{senseid|pt|not to notice a problem}} {{lb|pt|Brazil|สแลง|อกรรม}} ไม่[[ได้]][[สังเกต]][[หรือ]][[สนใจ]] (ปัญหา) #: {{ux|pt|O controlador '''dormiu''' e os aviões bateram.|The controller '''didn’t pay attention''' and the aeroplanes collided.}} ==== การผันรูป ==== {{pt-conj|<u-o>}} ==== คำเกี่ยวข้อง ==== * {{l|pt|dormitório}} ==== คำสืบทอด ==== * {{desc|pov|durmi}} * {{desc|kea|durmi}} * {{desc|pap|drumi}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{inh+|fr|frm|dormir}}, จาก{{inh|fr|fro|dormir}}, จาก{{inh|fr|la|dormiō|dormīre|t=นอนหลับ}}, จาก{{inh|fr|itc-pro|*dormiō}}, จาก{{der|fr|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-dormir.ogg}} * {{rhymes|fr|iʁ}} === คำกริยา === {{fr-verb}} # {{lb|fr|อกรรม}} [[นอน]][[หลับ]] #: {{uxi|fr|Vous devriez essayer de dormir.|You should try to sleep.}} #: {{uxi|fr|Je dormais quand vous avez appelé.|I was sleeping when you called.}} ==== การผันรูป ==== {{fr-conj-auto}} ==== ลูกคำ ==== {{col4|fr|à dormir debout|qui dort dîne|dormir à poings fermés|dormir comme un bébé|dormir comme un bienheureux|dormir comme un loir|dormir comme une pierre|dormir comme une souche|dormir du sommeil du juste|dormir sur ses deux oreilles|endormir|il ne faut pas réveiller le chat qui dort|ne dormir que d'un œil}} ==== คำเกี่ยวข้อง ==== * {{l|fr|dortoir}} ==== คำสืบทอด ==== * {{desc|bzj|doado|bor=1}} === ดูเพิ่ม === * {{l|fr|coucher|se coucher}} * {{l|fr|sommeil}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาฝรั่งเศสกลาง == === รากศัพท์ === จาก{{inh|frm|fro|dormir}}, จาก{{inh|frm|la|dormio|dormiō, dormīre}} === คำกริยา === {{head|frm|คำกริยา}} # {{lb|frm|อกรรม}} [[นอน]][[หลับ]] ==== คำสืบทอด ==== * {{desc|fr|dormir}} == ภาษาฝรั่งเศสเก่า == === รากศัพท์ === จาก{{inh|fro|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === คำกริยา === {{head|fro|คำกริยา}} # {{lb|fro|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{fro-conj-iii}} ==== คำสืบทอด ==== * {{desctree|frm|dormir}} * {{desc|nrf|dormi}} * {{desc|wa|doirmi}} == ภาษาลาดิน == === รูปแบบอื่น === * {{alter|lld|dormí}} === รากศัพท์ === จาก{{inh|lld|la|dormio|dormīre}} === คำกริยา === {{head|lld|คำกริยา}} # {{lb|lld|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{lld-conj-IV|dorm|ester}} == ภาษาเวเนโต == === รากศัพท์ === จาก{{inh|vec|la|dormīre}}, present active infinitive of {{m|la|dormiō|t=ฉันนอนหลับ}}; เทียบ{{cog|it|dormire}} === คำกริยา === {{head|vec|คำกริยา}} # {{lb|vec|อกรรม}} [[นอน]][[หลับ]] #: {{syn|vec|momir|polegiar}} ==== การผันรูป ==== {{vec-conj-auto}} ==== คำเกี่ยวข้อง ==== {{rel3|vec|indormesar|indormesarse|indormia}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|osp|dormir}}, จาก{{inh|es|la|dormio|dormīre, dormiō}}, จาก{{inh|es|itc-pro|*dormiō|t=นอนหลับ}}, จาก{{der|es|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Rodelar-dormir.wav>}} === คำกริยา === {{es-verb|dorm|ir|pres=duermo}} # {{lb|es|อกรรม}} [[นอน]][[หลับ]] #: {{ux|es|'''Duermo''' muy bien todas las noches.|I '''sleep''' very well every night.}} # {{lb|es|reflexive}} หลับ #: {{ux|es|¿En qué piensas mientras '''te duermes'''?|What do you think of while you '''fall asleep'''?}} # {{lb|es|reflexive}} นอน[[ตื่น]][[สาย]] #: {{ux|es|¿Qué hora es? ¡'''Me he dormido!'''|What time is it? '''I've overslept'''!}} # {{lb|es|euphemistic}} [[ตาย]] #: {{ux|es|Y así la reina '''durmió''' para siempre.|And so '''rested''' the queen for forever.}} # {{lb|es|transitive}} [[ทำ]][[ให้]]หลับ, [[กล่อม]]ให้หลับ #: {{ux|es|Los '''durmió''' a todos usando un hechizo.|He '''put''' them all '''to sleep''' by using a spell.}} # {{lb|es|euphemistic|แพทย์}} [[วางยา]][[สลบ]] #: {{ux|es|Solo un médico puede '''dormir''' a un paciente.|Only a doctor can '''anesthetize''' a patient.}} # {{lb|es|euphemistic|แพทย์}} [[กระทำ]][[การุณยฆาต]] #: {{ux|es|Ayer por la tarde '''durmieron''' a mi gato.|Yesterday evening my cat was '''put to sleep'''.}} ==== การผันรูป ==== {{es-conj|<ue-u>}} {{es-conj|dormirse<ue-u>}} ==== ลูกคำ ==== {{col-auto|es|bolsa de dormir|camarón que se duerme se lo lleva la corriente|casa de dormir|dormido|dormilón|dormir a pierna suelta|dormir como un ceporro|dormir como un lirón|dormir como una marmota|dormir a pata ancha | dormir como una piedra | dormir en Dios | dormir en santa paz|dormir la mona|dormirla|dormirse en los laureles|durmiente|duermevela|echarse a dormir|saco de dormir|despertar a quien duerme|dormir como un leño}} ==== คำเกี่ยวข้อง ==== {{col-auto|es|adormecer|dormición|dormidero|dormidor|dormitorio|dormirse|dormitar|dormitivo}} === อ่านเพิ่ม === * {{R:es:DRAE}} {{C|es|การนอนหลับ}} == ภาษาอัสตูเรียส == === รูปแบบอื่น === * {{alter|ast|adormir}} === รากศัพท์ === จาก{{inh|ast|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === การออกเสียง === {{ast-IPA}} * {{rhyme|ast|iɾ|s=2}} * {{hyph|ast|dor|mir}} === คำกริยา === {{ast-verb-ir|dorm}} # {{lb|ast|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{ast-conj-ir|dorm}} == ภาษาอินเทอร์ลิงกวา == === คำกริยา === {{ia-verb|ir}} # {{lb|ia|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{ia-conj|dorm|ir|intr=yes}} == ภาษาอุตซิตา == === รูปแบบอื่น === * {{alter|oc|dourmir||Mistralian spelling}} === รากศัพท์ === จาก{{inh|oc|pro|dormir}}, จาก{{inh|oc|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === การออกเสียง === * {{audio|oc|LL-Q942602-Davidgrosclaude-dormir.wav|a=Languedocien}} === คำกริยา === {{oc-verb|dorm|ir}} # {{lb|oc|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{oc-conj-ir|dorm}} == ภาษาอุตซิตาเก่า == === รากศัพท์ === จาก{{inh|pro|la|dormīre}}, present active infinitive of {{m|la|dormiō}}; ร่วมเชื้อสายในกลุ่ม [[Gallo-Romance]] กับ{{cog|fro|dormir}} === คำกริยา === {{head|pro|คำกริยา}} # [[นอน]][[หลับ]] ==== คำสืบทอด ==== * {{desc|oc|dormir}} *: {{desc|oc-auv|dromir}} *: {{desc|oc-gas|dromir}}, {{l|oc|dròmer}} *: {{desc|oc-lim|durmir}} *: {{desc|oc-viv|durmir}} === อ้างอิง === * {{R:FEW|3|140|title=dormīre}} gx17kqyi2c4pu0hrqbc1nyk36yl2upd 5729436 5729386 2026-07-20T09:37:38Z Octahedron80 267 /* คำกริยา */ 5729436 wikitext text/x-wiki {{minitoc}} == ภาษากาตาลา == === รากศัพท์ === {{inh+|ca|la|dormiō|dormīre}}, จาก{{inh|ca|itc-pro|*dormiō}}, จาก{{der|ca|ine-pro|*drem-|t=วิ่ง; นอนหลับ}}; เทียบ{{cog|oc|dormir}}, {{cog|fr|dormir}}, {{cog|es|dormir}} === การออกเสียง === * {{ca-IPA}} * {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-dormir.wav}} * {{rhymes|ca|i(ɾ)|s=2}} === คำกริยา === {{ca-verb|pres_1_sg=dormo}} # {{lb|ca|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{ca-conj}} ==== ลูกคำ ==== {{col4|ca|adormir|condormir|dorment|dormida|dormidor|dormidora|dormilec|dormilega|dormiment|dormisquejar|dormitar}} ==== คำเกี่ยวข้อง ==== {{rel3|ca|dormició|dormitiu|dormitori}} === อ่านเพิ่ม === * {{R:ca:IEC2}} * {{R:ca:GDLC}} * {{R:ca:DNV}} * {{R:ca:DCVB}} {{C|ca|การนอนหลับ}} == ภาษาโปรตุเกส == === รูปแบบอื่น === * {{alt|pt|dromir||dialectal}} * {{alt|pt|drumir|drumi|dromi|dormi|durmi||eye dialect}} * {{alt|pt|durmir||obsolete or eye dialect}} === รากศัพท์ === จาก{{inh|pt|roa-opt|dormir}}, {{m|roa-opt|durmir}}, จาก{{inh|pt|la|dormiō|dormīre|t=นอนหลับ}}, จาก{{inh|pt|itc-pro|*dormiō}}, จาก{{der|pt|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === {{pt-IPA|do^rmir}}<!-- FIXME, is 'durmir' colloquial? --> * {{hyph|pt|dor|mir}} === คำกริยา === {{pt-verb}} # {{senseid|pt|to sleep}} {{lb|pt|อกรรม}} [[นอน]][[หลับ]] #: {{ux|pt|O gato '''está dormindo'''.|The cat '''is sleeping'''.}} # {{senseid|pt|to fall asleep}} {{lb|pt|อกรรม}} [[หลับ]] #: {{ux|pt|Demorou horas até que eu '''dormisse'''.|Hours passed before I '''fell asleep'''.}} # {{senseid|pt|to have a type of sleep}} {{lb|pt|สกรรม}} นอนหลับ[[บาง]][[ประเภท]] #: {{ux|pt|'''Dormir''' uma soneca.|'''To have''' a nap.}} # {{senseid|pt|to be inactive}} {{lb|pt|figurative|อกรรม}} [[นิ่ง]], [[เงียบ]], [[ไม่]][[เคลื่อนไหว]] #: {{ux|pt|A célula dos terroristas está '''dormindo'''.|The terrorist cell '''is asleep'''.}} # {{senseid|pt|to have sex with}} {{indtr|pt|com|.euphemistic}} {{lb|pt|[[dormir com]]}} [[มี]][[เพศสัมพันธ์]] #: {{ux|pt|Peguei-a '''dormindo''' com um rapaz.|I caught her '''sleeping''' with a boy.}} # {{senseid|pt|to be constantly with}} {{indtr|pt|com|.figurative}} {{lb|pt|[[dormir com]]}} [[คง]][[อยู่]], ไม่[[เปลี่ยนแปลง]] #: {{ux|pt|A memória da guerra '''dorme''' com o veterano.|The memory of the war '''sleeps''' with the veteran.}} # {{senseid|pt|to be dead}} {{lb|pt|กลอน|อกรรม}} [[ตาย]] (แล้ว) #: {{ux|pt|Todos meus heróis '''dormem'''.|All my heroes '''are dead'''.}} # {{senseid|pt|to lose blood circulation}} {{lb|pt|ปาก|อกรรม}} (แขนขา) [[ชา]][[เพราะ]]ไม่[[มี]][[เลือด]][[ไป]][[หล่อเลี้ยง]] #: {{ux|pt|Acordei no meio da noite e meu braço tinha '''dormido'''.|I woke up in the middle of the night and my arm had '''fallen asleep'''.}} # {{senseid|pt|not to notice a problem}} {{lb|pt|Brazil|สแลง|อกรรม}} ไม่[[ได้]][[สังเกต]][[หรือ]][[สนใจ]] (ปัญหา) #: {{ux|pt|O controlador '''dormiu''' e os aviões bateram.|The controller '''didn’t pay attention''' and the aeroplanes collided.}} ==== การผันรูป ==== {{pt-conj|<u-o>}} ==== คำเกี่ยวข้อง ==== * {{l|pt|dormitório}} ==== คำสืบทอด ==== * {{desc|pov|durmi}} * {{desc|kea|durmi}} * {{desc|pap|drumi}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{inh+|fr|frm|dormir}}, จาก{{inh|fr|fro|dormir}}, จาก{{inh|fr|la|dormiō|dormīre|t=นอนหลับ}}, จาก{{inh|fr|itc-pro|*dormiō}}, จาก{{der|fr|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-dormir.ogg}} * {{rhymes|fr|iʁ}} === คำกริยา === {{fr-verb}} # {{lb|fr|อกรรม}} [[นอน]][[หลับ]] #: {{uxi|fr|Vous devriez essayer de dormir.|You should try to sleep.}} #: {{uxi|fr|Je dormais quand vous avez appelé.|I was sleeping when you called.}} ==== การผันรูป ==== {{fr-conj-auto}} ==== ลูกคำ ==== {{col4|fr|à dormir debout|qui dort dîne|dormir à poings fermés|dormir comme un bébé|dormir comme un bienheureux|dormir comme un loir|dormir comme une pierre|dormir comme une souche|dormir du sommeil du juste|dormir sur ses deux oreilles|endormir|il ne faut pas réveiller le chat qui dort|ne dormir que d'un œil}} ==== คำเกี่ยวข้อง ==== * {{l|fr|dortoir}} ==== คำสืบทอด ==== * {{desc|bzj|doado|bor=1}} === ดูเพิ่ม === * {{l|fr|coucher|se coucher}} * {{l|fr|sommeil}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาฝรั่งเศสกลาง == === รากศัพท์ === จาก{{inh|frm|fro|dormir}}, จาก{{inh|frm|la|dormio|dormiō, dormīre}} === คำกริยา === {{head|frm|คำกริยา}} # {{lb|frm|อกรรม}} [[นอน]][[หลับ]] ==== คำสืบทอด ==== * {{desc|fr|dormir}} == ภาษาฝรั่งเศสเก่า == === รากศัพท์ === จาก{{inh|fro|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === คำกริยา === {{head|fro|คำกริยา}} # {{lb|fro|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{fro-conj-iii}} ==== คำสืบทอด ==== * {{desctree|frm|dormir}} * {{desc|nrf|dormi}} * {{desc|wa|doirmi}} == ภาษาลาดิน == === รูปแบบอื่น === * {{alter|lld|dormí}} === รากศัพท์ === จาก{{inh|lld|la|dormio|dormīre}} === คำกริยา === {{head|lld|คำกริยา}} # {{lb|lld|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{lld-conj-IV|dorm|ester}} == ภาษาเวเนโต == === รากศัพท์ === จาก{{inh|vec|la|dormīre}}, present active infinitive of {{m|la|dormiō|t=ฉันนอนหลับ}}; เทียบ{{cog|it|dormire}} === คำกริยา === {{head|vec|คำกริยา}} # {{lb|vec|อกรรม}} [[นอน]][[หลับ]] #: {{syn|vec|momir|polegiar}} ==== การผันรูป ==== {{vec-conj-auto}} ==== คำเกี่ยวข้อง ==== {{rel3|vec|indormesar|indormesarse|indormia}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|osp|dormir}}, จาก{{inh|es|la|dormio|dormīre, dormiō}}, จาก{{inh|es|itc-pro|*dormiō|t=นอนหลับ}}, จาก{{der|es|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Rodelar-dormir.wav>}} === คำกริยา === {{es-verb|<ue-u>}} # {{lb|es|อกรรม}} [[นอน]][[หลับ]] #: {{ux|es|'''Duermo''' muy bien todas las noches.|I '''sleep''' very well every night.}} # {{lb|es|reflexive}} หลับ #: {{ux|es|¿En qué piensas mientras '''te duermes'''?|What do you think of while you '''fall asleep'''?}} # {{lb|es|reflexive}} นอน[[ตื่น]][[สาย]] #: {{ux|es|¿Qué hora es? ¡'''Me he dormido!'''|What time is it? '''I've overslept'''!}} # {{lb|es|euphemistic}} [[ตาย]] #: {{ux|es|Y así la reina '''durmió''' para siempre.|And so '''rested''' the queen for forever.}} # {{lb|es|transitive}} [[ทำ]][[ให้]]หลับ, [[กล่อม]]ให้หลับ #: {{ux|es|Los '''durmió''' a todos usando un hechizo.|He '''put''' them all '''to sleep''' by using a spell.}} # {{lb|es|euphemistic|แพทย์}} [[วางยา]][[สลบ]] #: {{ux|es|Solo un médico puede '''dormir''' a un paciente.|Only a doctor can '''anesthetize''' a patient.}} # {{lb|es|euphemistic|แพทย์}} [[กระทำ]][[การุณยฆาต]] #: {{ux|es|Ayer por la tarde '''durmieron''' a mi gato.|Yesterday evening my cat was '''put to sleep'''.}} ==== การผันรูป ==== {{es-conj|<ue-u>}} {{es-conj|dormirse<ue-u>}} ==== ลูกคำ ==== {{col-auto|es|bolsa de dormir|camarón que se duerme se lo lleva la corriente|casa de dormir|dormido|dormilón|dormir a pierna suelta|dormir como un ceporro|dormir como un lirón|dormir como una marmota|dormir a pata ancha | dormir como una piedra | dormir en Dios | dormir en santa paz|dormir la mona|dormirla|dormirse en los laureles|durmiente|duermevela|echarse a dormir|saco de dormir|despertar a quien duerme|dormir como un leño}} ==== คำเกี่ยวข้อง ==== {{col-auto|es|adormecer|dormición|dormidero|dormidor|dormitorio|dormirse|dormitar|dormitivo}} === อ่านเพิ่ม === * {{R:es:DRAE}} {{C|es|การนอนหลับ}} == ภาษาอัสตูเรียส == === รูปแบบอื่น === * {{alter|ast|adormir}} === รากศัพท์ === จาก{{inh|ast|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === การออกเสียง === {{ast-IPA}} * {{rhyme|ast|iɾ|s=2}} * {{hyph|ast|dor|mir}} === คำกริยา === {{ast-verb-ir|dorm}} # {{lb|ast|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{ast-conj-ir|dorm}} == ภาษาอินเทอร์ลิงกวา == === คำกริยา === {{ia-verb|ir}} # {{lb|ia|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{ia-conj|dorm|ir|intr=yes}} == ภาษาอุตซิตา == === รูปแบบอื่น === * {{alter|oc|dourmir||Mistralian spelling}} === รากศัพท์ === จาก{{inh|oc|pro|dormir}}, จาก{{inh|oc|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === การออกเสียง === * {{audio|oc|LL-Q942602-Davidgrosclaude-dormir.wav|a=Languedocien}} === คำกริยา === {{oc-verb|dorm|ir}} # {{lb|oc|อกรรม}} [[นอน]][[หลับ]] ==== การผันรูป ==== {{oc-conj-ir|dorm}} == ภาษาอุตซิตาเก่า == === รากศัพท์ === จาก{{inh|pro|la|dormīre}}, present active infinitive of {{m|la|dormiō}}; ร่วมเชื้อสายในกลุ่ม [[Gallo-Romance]] กับ{{cog|fro|dormir}} === คำกริยา === {{head|pro|คำกริยา}} # [[นอน]][[หลับ]] ==== คำสืบทอด ==== * {{desc|oc|dormir}} *: {{desc|oc-auv|dromir}} *: {{desc|oc-gas|dromir}}, {{l|oc|dròmer}} *: {{desc|oc-lim|durmir}} *: {{desc|oc-viv|durmir}} === อ้างอิง === * {{R:FEW|3|140|title=dormīre}} h2eve6z55g461e9amhu5pvnfre0sfa4 5729442 5729436 2026-07-20T09:39:28Z Octahedron80 267 5729442 wikitext text/x-wiki {{minitoc}} == ภาษากาตาลา == === รากศัพท์ === {{inh+|ca|la|dormiō|dormīre}}, จาก{{inh|ca|itc-pro|*dormiō}}, จาก{{der|ca|ine-pro|*drem-|t=วิ่ง; นอนหลับ}}; เทียบ{{cog|oc|dormir}}, {{cog|fr|dormir}}, {{cog|es|dormir}} === การออกเสียง === * {{ca-IPA}} * {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-dormir.wav}} * {{rhymes|ca|i(ɾ)|s=2}} === คำกริยา === {{ca-verb|pres_1_sg=dormo}} # {{lb|ca|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{ca-conj}} ==== ลูกคำ ==== {{col4|ca|adormir|condormir|dorment|dormida|dormidor|dormidora|dormilec|dormilega|dormiment|dormisquejar|dormitar}} ==== คำเกี่ยวข้อง ==== {{rel3|ca|dormició|dormitiu|dormitori}} === อ่านเพิ่ม === * {{R:ca:IEC2}} * {{R:ca:GDLC}} * {{R:ca:DNV}} * {{R:ca:DCVB}} {{C|ca|การนอนหลับ}} == ภาษาโปรตุเกส == === รูปแบบอื่น === * {{alt|pt|dromir||dialectal}} * {{alt|pt|drumir|drumi|dromi|dormi|durmi||eye dialect}} * {{alt|pt|durmir||obsolete or eye dialect}} === รากศัพท์ === จาก{{inh|pt|roa-opt|dormir}}, {{m|roa-opt|durmir}}, จาก{{inh|pt|la|dormiō|dormīre|t=นอนหลับ}}, จาก{{inh|pt|itc-pro|*dormiō}}, จาก{{der|pt|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === {{pt-IPA|do^rmir}}<!-- FIXME, is 'durmir' colloquial? --> * {{hyph|pt|dor|mir}} === คำกริยา === {{pt-verb}} # {{senseid|pt|to sleep}} {{lb|pt|อกรรม}} [[นอนหลับ]] #: {{ux|pt|O gato '''está dormindo'''.|The cat '''is sleeping'''.}} # {{senseid|pt|to fall asleep}} {{lb|pt|อกรรม}} [[หลับ]] #: {{ux|pt|Demorou horas até que eu '''dormisse'''.|Hours passed before I '''fell asleep'''.}} # {{senseid|pt|to have a type of sleep}} {{lb|pt|สกรรม}} นอนหลับ[[บาง]][[ประเภท]] #: {{ux|pt|'''Dormir''' uma soneca.|'''To have''' a nap.}} # {{senseid|pt|to be inactive}} {{lb|pt|figurative|อกรรม}} [[นิ่ง]], [[เงียบ]], [[ไม่]][[เคลื่อนไหว]] #: {{ux|pt|A célula dos terroristas está '''dormindo'''.|The terrorist cell '''is asleep'''.}} # {{senseid|pt|to have sex with}} {{indtr|pt|com|.euphemistic}} {{lb|pt|[[dormir com]]}} [[มี]][[เพศสัมพันธ์]] #: {{ux|pt|Peguei-a '''dormindo''' com um rapaz.|I caught her '''sleeping''' with a boy.}} # {{senseid|pt|to be constantly with}} {{indtr|pt|com|.figurative}} {{lb|pt|[[dormir com]]}} [[คง]][[อยู่]], ไม่[[เปลี่ยนแปลง]] #: {{ux|pt|A memória da guerra '''dorme''' com o veterano.|The memory of the war '''sleeps''' with the veteran.}} # {{senseid|pt|to be dead}} {{lb|pt|กลอน|อกรรม}} [[ตาย]] (แล้ว) #: {{ux|pt|Todos meus heróis '''dormem'''.|All my heroes '''are dead'''.}} # {{senseid|pt|to lose blood circulation}} {{lb|pt|ปาก|อกรรม}} (แขนขา) [[ชา]][[เพราะ]]ไม่[[มี]][[เลือด]][[ไป]][[หล่อเลี้ยง]] #: {{ux|pt|Acordei no meio da noite e meu braço tinha '''dormido'''.|I woke up in the middle of the night and my arm had '''fallen asleep'''.}} # {{senseid|pt|not to notice a problem}} {{lb|pt|Brazil|สแลง|อกรรม}} ไม่[[ได้]][[สังเกต]][[หรือ]][[สนใจ]] (ปัญหา) #: {{ux|pt|O controlador '''dormiu''' e os aviões bateram.|The controller '''didn’t pay attention''' and the aeroplanes collided.}} ==== การผันรูป ==== {{pt-conj|<u-o>}} ==== คำเกี่ยวข้อง ==== * {{l|pt|dormitório}} ==== คำสืบทอด ==== * {{desc|pov|durmi}} * {{desc|kea|durmi}} * {{desc|pap|drumi}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{inh+|fr|frm|dormir}}, จาก{{inh|fr|fro|dormir}}, จาก{{inh|fr|la|dormiō|dormīre|t=นอนหลับ}}, จาก{{inh|fr|itc-pro|*dormiō}}, จาก{{der|fr|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-dormir.ogg}} * {{rhymes|fr|iʁ}} === คำกริยา === {{fr-verb}} # {{lb|fr|อกรรม}} [[นอนหลับ]] #: {{uxi|fr|Vous devriez essayer de dormir.|You should try to sleep.}} #: {{uxi|fr|Je dormais quand vous avez appelé.|I was sleeping when you called.}} ==== การผันรูป ==== {{fr-conj-auto}} ==== ลูกคำ ==== {{col4|fr|à dormir debout|qui dort dîne|dormir à poings fermés|dormir comme un bébé|dormir comme un bienheureux|dormir comme un loir|dormir comme une pierre|dormir comme une souche|dormir du sommeil du juste|dormir sur ses deux oreilles|endormir|il ne faut pas réveiller le chat qui dort|ne dormir que d'un œil}} ==== คำเกี่ยวข้อง ==== * {{l|fr|dortoir}} ==== คำสืบทอด ==== * {{desc|bzj|doado|bor=1}} === ดูเพิ่ม === * {{l|fr|coucher|se coucher}} * {{l|fr|sommeil}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาฝรั่งเศสกลาง == === รากศัพท์ === จาก{{inh|frm|fro|dormir}}, จาก{{inh|frm|la|dormio|dormiō, dormīre}} === คำกริยา === {{head|frm|คำกริยา}} # {{lb|frm|อกรรม}} [[นอนหลับ]] ==== คำสืบทอด ==== * {{desc|fr|dormir}} == ภาษาฝรั่งเศสเก่า == === รากศัพท์ === จาก{{inh|fro|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === คำกริยา === {{head|fro|คำกริยา}} # {{lb|fro|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{fro-conj-iii}} ==== คำสืบทอด ==== * {{desctree|frm|dormir}} * {{desc|nrf|dormi}} * {{desc|wa|doirmi}} == ภาษาลาดิน == === รูปแบบอื่น === * {{alter|lld|dormí}} === รากศัพท์ === จาก{{inh|lld|la|dormio|dormīre}} === คำกริยา === {{head|lld|คำกริยา}} # {{lb|lld|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{lld-conj-IV|dorm|ester}} == ภาษาเวเนโต == === รากศัพท์ === จาก{{inh|vec|la|dormīre}}, present active infinitive of {{m|la|dormiō|t=ฉันนอนหลับ}}; เทียบ{{cog|it|dormire}} === คำกริยา === {{head|vec|คำกริยา}} # {{lb|vec|อกรรม}} [[นอนหลับ]] #: {{syn|vec|momir|polegiar}} ==== การผันรูป ==== {{vec-conj-auto}} ==== คำเกี่ยวข้อง ==== {{rel3|vec|indormesar|indormesarse|indormia}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|osp|dormir}}, จาก{{inh|es|la|dormio|dormīre, dormiō}}, จาก{{inh|es|itc-pro|*dormiō|t=นอนหลับ}}, จาก{{der|es|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Rodelar-dormir.wav>}} === คำกริยา === {{es-verb|<ue-u>}} # {{lb|es|อกรรม}} [[นอนหลับ]] #: {{ux|es|'''Duermo''' muy bien todas las noches.|I '''sleep''' very well every night.}} # {{lb|es|reflexive}} หลับ #: {{ux|es|¿En qué piensas mientras '''te duermes'''?|What do you think of while you '''fall asleep'''?}} # {{lb|es|reflexive}} นอน[[ตื่น]][[สาย]] #: {{ux|es|¿Qué hora es? ¡'''Me he dormido!'''|What time is it? '''I've overslept'''!}} # {{lb|es|euphemistic}} [[ตาย]] #: {{ux|es|Y así la reina '''durmió''' para siempre.|And so '''rested''' the queen for forever.}} # {{lb|es|transitive}} [[ทำ]][[ให้]]หลับ, [[กล่อม]]ให้หลับ #: {{ux|es|Los '''durmió''' a todos usando un hechizo.|He '''put''' them all '''to sleep''' by using a spell.}} # {{lb|es|euphemistic|แพทย์}} [[วางยา]][[สลบ]] #: {{ux|es|Solo un médico puede '''dormir''' a un paciente.|Only a doctor can '''anesthetize''' a patient.}} # {{lb|es|euphemistic|แพทย์}} [[กระทำ]][[การุณยฆาต]] #: {{ux|es|Ayer por la tarde '''durmieron''' a mi gato.|Yesterday evening my cat was '''put to sleep'''.}} ==== การผันรูป ==== {{es-conj|<ue-u>}} {{es-conj|dormirse<ue-u>}} ==== ลูกคำ ==== {{col-auto|es|bolsa de dormir|camarón que se duerme se lo lleva la corriente|casa de dormir|dormido|dormilón|dormir a pierna suelta|dormir como un ceporro|dormir como un lirón|dormir como una marmota|dormir a pata ancha | dormir como una piedra | dormir en Dios | dormir en santa paz|dormir la mona|dormirla|dormirse en los laureles|durmiente|duermevela|echarse a dormir|saco de dormir|despertar a quien duerme|dormir como un leño}} ==== คำเกี่ยวข้อง ==== {{col-auto|es|adormecer|dormición|dormidero|dormidor|dormitorio|dormirse|dormitar|dormitivo}} === อ่านเพิ่ม === * {{R:es:DRAE}} {{C|es|การนอนหลับ}} == ภาษาอัสตูเรียส == === รูปแบบอื่น === * {{alter|ast|adormir}} === รากศัพท์ === จาก{{inh|ast|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === การออกเสียง === {{ast-IPA}} * {{rhyme|ast|iɾ|s=2}} * {{hyph|ast|dor|mir}} === คำกริยา === {{ast-verb-ir|dorm}} # {{lb|ast|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{ast-conj-ir|dorm}} == ภาษาอินเทอร์ลิงกวา == === คำกริยา === {{ia-verb|ir}} # {{lb|ia|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{ia-conj|dorm|ir|intr=yes}} == ภาษาอุตซิตา == === รูปแบบอื่น === * {{alter|oc|dourmir||Mistralian spelling}} === รากศัพท์ === จาก{{inh|oc|pro|dormir}}, จาก{{inh|oc|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === การออกเสียง === * {{audio|oc|LL-Q942602-Davidgrosclaude-dormir.wav|a=Languedocien}} === คำกริยา === {{oc-verb|dorm|ir}} # {{lb|oc|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{oc-conj-ir|dorm}} == ภาษาอุตซิตาเก่า == === รากศัพท์ === จาก{{inh|pro|la|dormīre}}, present active infinitive of {{m|la|dormiō}}; ร่วมเชื้อสายในกลุ่ม [[Gallo-Romance]] กับ{{cog|fro|dormir}} === คำกริยา === {{head|pro|คำกริยา}} # [[นอนหลับ]] ==== คำสืบทอด ==== * {{desc|oc|dormir}} *: {{desc|oc-auv|dromir}} *: {{desc|oc-gas|dromir}}, {{l|oc|dròmer}} *: {{desc|oc-lim|durmir}} *: {{desc|oc-viv|durmir}} === อ้างอิง === * {{R:FEW|3|140|title=dormīre}} 33u34i5fl5eqf2bs9581j5rf4ec8gxd 5729443 5729442 2026-07-20T09:39:57Z Octahedron80 267 /* คำกริยา */ 5729443 wikitext text/x-wiki {{minitoc}} == ภาษากาตาลา == === รากศัพท์ === {{inh+|ca|la|dormiō|dormīre}}, จาก{{inh|ca|itc-pro|*dormiō}}, จาก{{der|ca|ine-pro|*drem-|t=วิ่ง; นอนหลับ}}; เทียบ{{cog|oc|dormir}}, {{cog|fr|dormir}}, {{cog|es|dormir}} === การออกเสียง === * {{ca-IPA}} * {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-dormir.wav}} * {{rhymes|ca|i(ɾ)|s=2}} === คำกริยา === {{ca-verb|pres_1_sg=dormo}} # {{lb|ca|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{ca-conj}} ==== ลูกคำ ==== {{col4|ca|adormir|condormir|dorment|dormida|dormidor|dormidora|dormilec|dormilega|dormiment|dormisquejar|dormitar}} ==== คำเกี่ยวข้อง ==== {{rel3|ca|dormició|dormitiu|dormitori}} === อ่านเพิ่ม === * {{R:ca:IEC2}} * {{R:ca:GDLC}} * {{R:ca:DNV}} * {{R:ca:DCVB}} {{C|ca|การนอนหลับ}} == ภาษาโปรตุเกส == === รูปแบบอื่น === * {{alt|pt|dromir||dialectal}} * {{alt|pt|drumir|drumi|dromi|dormi|durmi||eye dialect}} * {{alt|pt|durmir||obsolete or eye dialect}} === รากศัพท์ === จาก{{inh|pt|roa-opt|dormir}}, {{m|roa-opt|durmir}}, จาก{{inh|pt|la|dormiō|dormīre|t=นอนหลับ}}, จาก{{inh|pt|itc-pro|*dormiō}}, จาก{{der|pt|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === {{pt-IPA|do^rmir}}<!-- FIXME, is 'durmir' colloquial? --> * {{hyph|pt|dor|mir}} === คำกริยา === {{pt-verb}} # {{senseid|pt|to sleep}} {{lb|pt|อกรรม}} [[นอนหลับ]] #: {{ux|pt|O gato '''está dormindo'''.|The cat '''is sleeping'''.}} # {{senseid|pt|to fall asleep}} {{lb|pt|อกรรม}} [[ผล็อย]][[หลับ]] #: {{ux|pt|Demorou horas até que eu '''dormisse'''.|Hours passed before I '''fell asleep'''.}} # {{senseid|pt|to have a type of sleep}} {{lb|pt|สกรรม}} นอนหลับ[[บาง]][[ประเภท]] #: {{ux|pt|'''Dormir''' uma soneca.|'''To have''' a nap.}} # {{senseid|pt|to be inactive}} {{lb|pt|figurative|อกรรม}} [[นิ่ง]], [[เงียบ]], [[ไม่]][[เคลื่อนไหว]] #: {{ux|pt|A célula dos terroristas está '''dormindo'''.|The terrorist cell '''is asleep'''.}} # {{senseid|pt|to have sex with}} {{indtr|pt|com|.euphemistic}} {{lb|pt|[[dormir com]]}} [[มี]][[เพศสัมพันธ์]] #: {{ux|pt|Peguei-a '''dormindo''' com um rapaz.|I caught her '''sleeping''' with a boy.}} # {{senseid|pt|to be constantly with}} {{indtr|pt|com|.figurative}} {{lb|pt|[[dormir com]]}} [[คง]][[อยู่]], ไม่[[เปลี่ยนแปลง]] #: {{ux|pt|A memória da guerra '''dorme''' com o veterano.|The memory of the war '''sleeps''' with the veteran.}} # {{senseid|pt|to be dead}} {{lb|pt|กลอน|อกรรม}} [[ตาย]] (แล้ว) #: {{ux|pt|Todos meus heróis '''dormem'''.|All my heroes '''are dead'''.}} # {{senseid|pt|to lose blood circulation}} {{lb|pt|ปาก|อกรรม}} (แขนขา) [[ชา]][[เพราะ]]ไม่[[มี]][[เลือด]][[ไป]][[หล่อเลี้ยง]] #: {{ux|pt|Acordei no meio da noite e meu braço tinha '''dormido'''.|I woke up in the middle of the night and my arm had '''fallen asleep'''.}} # {{senseid|pt|not to notice a problem}} {{lb|pt|Brazil|สแลง|อกรรม}} ไม่[[ได้]][[สังเกต]][[หรือ]][[สนใจ]] (ปัญหา) #: {{ux|pt|O controlador '''dormiu''' e os aviões bateram.|The controller '''didn’t pay attention''' and the aeroplanes collided.}} ==== การผันรูป ==== {{pt-conj|<u-o>}} ==== คำเกี่ยวข้อง ==== * {{l|pt|dormitório}} ==== คำสืบทอด ==== * {{desc|pov|durmi}} * {{desc|kea|durmi}} * {{desc|pap|drumi}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{inh+|fr|frm|dormir}}, จาก{{inh|fr|fro|dormir}}, จาก{{inh|fr|la|dormiō|dormīre|t=นอนหลับ}}, จาก{{inh|fr|itc-pro|*dormiō}}, จาก{{der|fr|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-dormir.ogg}} * {{rhymes|fr|iʁ}} === คำกริยา === {{fr-verb}} # {{lb|fr|อกรรม}} [[นอนหลับ]] #: {{uxi|fr|Vous devriez essayer de dormir.|You should try to sleep.}} #: {{uxi|fr|Je dormais quand vous avez appelé.|I was sleeping when you called.}} ==== การผันรูป ==== {{fr-conj-auto}} ==== ลูกคำ ==== {{col4|fr|à dormir debout|qui dort dîne|dormir à poings fermés|dormir comme un bébé|dormir comme un bienheureux|dormir comme un loir|dormir comme une pierre|dormir comme une souche|dormir du sommeil du juste|dormir sur ses deux oreilles|endormir|il ne faut pas réveiller le chat qui dort|ne dormir que d'un œil}} ==== คำเกี่ยวข้อง ==== * {{l|fr|dortoir}} ==== คำสืบทอด ==== * {{desc|bzj|doado|bor=1}} === ดูเพิ่ม === * {{l|fr|coucher|se coucher}} * {{l|fr|sommeil}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาฝรั่งเศสกลาง == === รากศัพท์ === จาก{{inh|frm|fro|dormir}}, จาก{{inh|frm|la|dormio|dormiō, dormīre}} === คำกริยา === {{head|frm|คำกริยา}} # {{lb|frm|อกรรม}} [[นอนหลับ]] ==== คำสืบทอด ==== * {{desc|fr|dormir}} == ภาษาฝรั่งเศสเก่า == === รากศัพท์ === จาก{{inh|fro|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === คำกริยา === {{head|fro|คำกริยา}} # {{lb|fro|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{fro-conj-iii}} ==== คำสืบทอด ==== * {{desctree|frm|dormir}} * {{desc|nrf|dormi}} * {{desc|wa|doirmi}} == ภาษาลาดิน == === รูปแบบอื่น === * {{alter|lld|dormí}} === รากศัพท์ === จาก{{inh|lld|la|dormio|dormīre}} === คำกริยา === {{head|lld|คำกริยา}} # {{lb|lld|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{lld-conj-IV|dorm|ester}} == ภาษาเวเนโต == === รากศัพท์ === จาก{{inh|vec|la|dormīre}}, present active infinitive of {{m|la|dormiō|t=ฉันนอนหลับ}}; เทียบ{{cog|it|dormire}} === คำกริยา === {{head|vec|คำกริยา}} # {{lb|vec|อกรรม}} [[นอนหลับ]] #: {{syn|vec|momir|polegiar}} ==== การผันรูป ==== {{vec-conj-auto}} ==== คำเกี่ยวข้อง ==== {{rel3|vec|indormesar|indormesarse|indormia}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|osp|dormir}}, จาก{{inh|es|la|dormio|dormīre, dormiō}}, จาก{{inh|es|itc-pro|*dormiō|t=นอนหลับ}}, จาก{{der|es|ine-pro|*drem-|t=วิ่ง; นอนหลับ}} === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Rodelar-dormir.wav>}} === คำกริยา === {{es-verb|<ue-u>}} # {{lb|es|อกรรม}} [[นอนหลับ]] #: {{ux|es|'''Duermo''' muy bien todas las noches.|I '''sleep''' very well every night.}} # {{lb|es|reflexive}} หลับ #: {{ux|es|¿En qué piensas mientras '''te duermes'''?|What do you think of while you '''fall asleep'''?}} # {{lb|es|reflexive}} นอน[[ตื่น]][[สาย]] #: {{ux|es|¿Qué hora es? ¡'''Me he dormido!'''|What time is it? '''I've overslept'''!}} # {{lb|es|euphemistic}} [[ตาย]] #: {{ux|es|Y así la reina '''durmió''' para siempre.|And so '''rested''' the queen for forever.}} # {{lb|es|transitive}} [[ทำ]][[ให้]]หลับ, [[กล่อม]]ให้หลับ #: {{ux|es|Los '''durmió''' a todos usando un hechizo.|He '''put''' them all '''to sleep''' by using a spell.}} # {{lb|es|euphemistic|แพทย์}} [[วางยา]][[สลบ]] #: {{ux|es|Solo un médico puede '''dormir''' a un paciente.|Only a doctor can '''anesthetize''' a patient.}} # {{lb|es|euphemistic|แพทย์}} [[กระทำ]][[การุณยฆาต]] #: {{ux|es|Ayer por la tarde '''durmieron''' a mi gato.|Yesterday evening my cat was '''put to sleep'''.}} ==== การผันรูป ==== {{es-conj|<ue-u>}} {{es-conj|dormirse<ue-u>}} ==== ลูกคำ ==== {{col-auto|es|bolsa de dormir|camarón que se duerme se lo lleva la corriente|casa de dormir|dormido|dormilón|dormir a pierna suelta|dormir como un ceporro|dormir como un lirón|dormir como una marmota|dormir a pata ancha | dormir como una piedra | dormir en Dios | dormir en santa paz|dormir la mona|dormirla|dormirse en los laureles|durmiente|duermevela|echarse a dormir|saco de dormir|despertar a quien duerme|dormir como un leño}} ==== คำเกี่ยวข้อง ==== {{col-auto|es|adormecer|dormición|dormidero|dormidor|dormitorio|dormirse|dormitar|dormitivo}} === อ่านเพิ่ม === * {{R:es:DRAE}} {{C|es|การนอนหลับ}} == ภาษาอัสตูเรียส == === รูปแบบอื่น === * {{alter|ast|adormir}} === รากศัพท์ === จาก{{inh|ast|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === การออกเสียง === {{ast-IPA}} * {{rhyme|ast|iɾ|s=2}} * {{hyph|ast|dor|mir}} === คำกริยา === {{ast-verb-ir|dorm}} # {{lb|ast|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{ast-conj-ir|dorm}} == ภาษาอินเทอร์ลิงกวา == === คำกริยา === {{ia-verb|ir}} # {{lb|ia|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{ia-conj|dorm|ir|intr=yes}} == ภาษาอุตซิตา == === รูปแบบอื่น === * {{alter|oc|dourmir||Mistralian spelling}} === รากศัพท์ === จาก{{inh|oc|pro|dormir}}, จาก{{inh|oc|la|dormīre}}, present active infinitive of {{m|la|dormiō}} === การออกเสียง === * {{audio|oc|LL-Q942602-Davidgrosclaude-dormir.wav|a=Languedocien}} === คำกริยา === {{oc-verb|dorm|ir}} # {{lb|oc|อกรรม}} [[นอนหลับ]] ==== การผันรูป ==== {{oc-conj-ir|dorm}} == ภาษาอุตซิตาเก่า == === รากศัพท์ === จาก{{inh|pro|la|dormīre}}, present active infinitive of {{m|la|dormiō}}; ร่วมเชื้อสายในกลุ่ม [[Gallo-Romance]] กับ{{cog|fro|dormir}} === คำกริยา === {{head|pro|คำกริยา}} # [[นอนหลับ]] ==== คำสืบทอด ==== * {{desc|oc|dormir}} *: {{desc|oc-auv|dromir}} *: {{desc|oc-gas|dromir}}, {{l|oc|dròmer}} *: {{desc|oc-lim|durmir}} *: {{desc|oc-viv|durmir}} === อ้างอิง === * {{R:FEW|3|140|title=dormīre}} l2uw9vvuchshfraeu326pp6vw5ysoz2 มอดูล:languages/code to canonical name 828 174988 5729122 5727410 2026-07-20T02:25:04Z Octahedron80 267 5729122 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"] = "หริยาณวี", ["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"] = "คิมบรี", ["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"] = "แฆแลจ", ["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"] = "ลาโคตา", ["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"] = "มลายูแบบโมลุกกะเหนือ", ["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"] = "แพริกดั้งเดิม", ["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"] = "ปอร์", ["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"] = "ระแด", ["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"] = "อาหรับใต้เก่า", ["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"] = "ซารามักกา", ["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"] = "ครีโอลช่องแคบทอร์เรส", ["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"] = "ฟรังโกเนียตะวันออก", ["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"] = "วาตีวา", ["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"] = "จ้วงแบบจั่วเจียง", } mwffst0vt4zfzbyp6v8en7kv2t3evaq 5729127 5729122 2026-07-20T02:32:11Z Octahedron80 267 5729127 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"] = "หริยาณวี", ["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"] = "คิมบรี", ["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"] = "แฆแลจ", ["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"] = "ลาโคตา", ["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"] = "มลายูแบบโมลุกกะเหนือ", ["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"] = "แพริกดั้งเดิม", ["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"] = "ปอร์", ["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"] = "ระแด", ["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"] = "อาหรับใต้เก่า", ["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"] = "ซารามักกา", ["srn"] = "ซรานันโตโง", ["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"] = "ครีโอลช่องแคบทอร์เรส", ["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"] = "ฟรังโกเนียตะวันออก", ["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"] = "วาตีวา", ["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"] = "จ้วงแบบจั่วเจียง", } c0my8ejmwunclgakdfie2vuvui90x4t 5729131 5729127 2026-07-20T02:36:20Z Octahedron80 267 5729131 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"] = "หริยาณวี", ["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"] = "คิมบรี", ["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"] = "แฆแลจ", ["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"] = "ลาโคตา", ["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"] = "มลายูแบบโมลุกกะเหนือ", ["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"] = "แพริกดั้งเดิม", ["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"] = "ปอร์", ["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"] = "ระแด", ["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"] = "อาหรับใต้เก่า", ["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"] = "ซารามักกา", ["srn"] = "ซรานันโตโง", ["srq"] = "Sirionó", ["srr"] = "Serer", ["srs"] = "Tsuut'ina", ["srt"] = "Sauri", ["sru"] = "Suruí", ["srv"] = "Waray Sorsogon", ["srw"] = "Serua", ["srx"] = "Sirmauri", ["sry"] = "Sera", ["srz"] = "Shahmirzadi", ["ss"] = "สวาซี", ["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"] = "ครีโอลช่องแคบทอร์เรส", ["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"] = "ฟรังโกเนียตะวันออก", ["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"] = "วาตีวา", ["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"] = "จ้วงแบบจั่วเจียง", } 53kc5mmxpl6xxxivq5fdsn9qq4a3xsn 5729385 5729131 2026-07-20T07:43:08Z Octahedron80 267 5729385 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"] = "หริยาณวี", ["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"] = "คิมบรี", ["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"] = "แฆแลจ", ["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"] = "ลาโคตา", ["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"] = "มลายูแบบโมลุกกะเหนือ", ["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"] = "แพริกดั้งเดิม", ["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"] = "ปอร์", ["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"] = "ระแด", ["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"] = "อิสโตร-โรมาเนีย", ["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"] = "อาหรับใต้เก่า", ["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"] = "ซารามักกา", ["srn"] = "ซรานันโตโง", ["srq"] = "Sirionó", ["srr"] = "Serer", ["srs"] = "Tsuut'ina", ["srt"] = "Sauri", ["sru"] = "Suruí", ["srv"] = "Waray Sorsogon", ["srw"] = "Serua", ["srx"] = "Sirmauri", ["sry"] = "Sera", ["srz"] = "Shahmirzadi", ["ss"] = "สวาซี", ["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"] = "ครีโอลช่องแคบทอร์เรส", ["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"] = "ฟรังโกเนียตะวันออก", ["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"] = "วาตีวา", ["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"] = "จ้วงแบบจั่วเจียง", } 07qxjcjek99jwq4jntmvvsdvplf65gq จั๋ก 0 175411 5729048 1881326 2026-07-19T23:31:30Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729048 wikitext text/x-wiki {{also/auto}} ==ภาษาคำเมือง== === การออกเสียง === * {{IPA|nod|/t͡ɕak˨˦/|a=เชียงใหม่}} ===คำกริยาวิเศษณ์=== {{nod-adv|-}} # {{altform|nod|ᨧᩢ᩠ᨠ|t=[[จะ]]}} ===คำกริยา=== {{nod-verb}} # {{lb|nod|สกรรม}} {{altform|nod|ᨧᩢ᩠ᨠ|t=[[ตัด]]}} rqhqomizqozda16tivzsg6l55pl82f3 มอดูล:languages/canonical names 828 211224 5729121 5727409 2026-07-20T02:24:53Z Octahedron80 267 5729121 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", ["คิมบรี"] = "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", ["ฟรังโกเนียตะวันออก"] = "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", ["หริยาณวี"] = "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", ["แฆแลจ"] = "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", ["ลาโคตา"] = "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", ["มลายูแบบโมลุกกะเหนือ"] = "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", ["อาหรับใต้เก่า"] = "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", ["ปอร์"] = "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", ["แพริกดั้งเดิม"] = "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", ["ระแด"] = "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", ["ซารามักกา"] = "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", ["ครีโอลช่องแคบทอร์เรส"] = "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", ["วาตีวา"] = "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", } 5ti6l2yrgzfdx6tb6x0o2qwn538b64v 5729126 5729121 2026-07-20T02:32:10Z Octahedron80 267 5729126 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", ["คิมบรี"] = "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", ["ฟรังโกเนียตะวันออก"] = "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", ["หริยาณวี"] = "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", ["แฆแลจ"] = "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", ["ลาโคตา"] = "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", ["มลายูแบบโมลุกกะเหนือ"] = "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", ["อาหรับใต้เก่า"] = "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", ["ปอร์"] = "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", ["แพริกดั้งเดิม"] = "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", ["ระแด"] = "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", ["ซารามักกา"] = "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", ["ซรานันโตโง"] = "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", ["ครีโอลช่องแคบทอร์เรส"] = "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", ["วาตีวา"] = "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", } b0s1kfqjlksy7yuo02f4sus414h778g 5729130 5729126 2026-07-20T02:36:11Z Octahedron80 267 5729130 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", ["คิมบรี"] = "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", ["ฟรังโกเนียตะวันออก"] = "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", ["หริยาณวี"] = "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", ["แฆแลจ"] = "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", ["ลาโคตา"] = "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", ["มลายูแบบโมลุกกะเหนือ"] = "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", ["อาหรับใต้เก่า"] = "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", ["ปอร์"] = "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", ["แพริกดั้งเดิม"] = "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", ["ระแด"] = "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", ["ซารามักกา"] = "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", ["ซรานันโตโง"] = "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", ["สวาซี"] = "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", ["ครีโอลช่องแคบทอร์เรส"] = "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", ["วาตีวา"] = "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", } b8xuylggmjpydazbttp842u025sx6an 5729384 5729130 2026-07-20T07:42:56Z Octahedron80 267 5729384 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", ["คิมบรี"] = "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", ["ฟรังโกเนียตะวันออก"] = "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", ["หริยาณวี"] = "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", ["อิสโตร-โรมาเนีย"] = "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", ["แฆแลจ"] = "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", ["ลาโคตา"] = "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", ["มลายูแบบโมลุกกะเหนือ"] = "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", ["อาหรับใต้เก่า"] = "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", ["ปอร์"] = "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", ["แพริกดั้งเดิม"] = "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", ["ระแด"] = "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", ["ซารามักกา"] = "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", ["ซรานันโตโง"] = "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", ["สวาซี"] = "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", ["ครีโอลช่องแคบทอร์เรส"] = "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", ["วาตีวา"] = "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", } i434pamj3bh1l6tz1inwko3jtgytyuw อุ้ย 0 211890 5729293 5719860 2026-07-20T05:28:46Z Alifshinobi 397 5729293 wikitext text/x-wiki {{also/auto}} ==ภาษาคำเมือง== === การออกเสียง === * {{IPA|nod|/ʔuj˦˥/|a=เชียงใหม่}} ===คำนาม=== {{nod-noun|tl=1}} # {{altform|nod|ᩋᩩ᩠᩶ᨿ|t=[[ปู่]][[ย่า]][[ตา]][[ยาย]]}} #: {{syn|nod|ทุ้ย|ป้ออุ้ย|แม่อุ้ย}} {{topics|nod|ครอบครัว}} 842pg4myn6q6noeujybsatbmy01eka9 ป้ออุ้ย 0 211891 5729313 5720431 2026-07-20T05:40:11Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729313 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === คำนาม === {{nod-noun|tl=1}} # {{altform|nod|ᨻᩬᩴ᩵ᩋᩩ᩠᩶ᨿ|t=[[ปู่]], [[ตา]]}} {{topics|nod|ครอบครัว}} 6uee1s6iml9xbn2ram2mx4w52i0w1hn 5729314 5729313 2026-07-20T05:40:31Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729314 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === คำนาม === {{nod-noun}} # {{altform|nod|ᨻᩬᩴ᩵ᩋᩩ᩠᩶ᨿ|t=[[ปู่]], [[ตา]]}} {{topics|nod|ครอบครัว}} 2mlpvv6osj2c14um55g5kr5gat0bwb3 มอดูล:ca-headword 828 232398 5729298 4750744 2026-07-20T05:32:56Z Octahedron80 267 5729298 Scribunto text/plain local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local m_table = require("Module:table") local com = require("Module:ca-common") local ca_IPA_module = "Module:ca-IPA" local ca_verb_module = "Module:ca-verb" local en_utilities_module = "Module:en-utilities" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local romut_module = "Module:romance utilities" local lang = require("Module:languages").getByCode("ca") local langname = --[[lang:getCanonicalName()]] lang:getCategoryName() local list_to_text = mw.text.listToText local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local usub = mw.ustring.sub local rsub = com.rsub local function track(page) require("Module:debug/track")("ca-headword/" .. page) return true end local boolean = {type = "boolean"} local list = {list = true} ----------------------------------------------------------------------------------------- -- Main entry point -- ----------------------------------------------------------------------------------------- -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) 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 = { ["head"] = list, ["id"] = {}, ["splithyph"] = boolean, ["nolinkhead"] = boolean, ["json"] = boolean, ["pagename"] = {}, -- for testing } if pos_functions[poscat_th] then for key, val in pairs(pos_functions[poscat_th].params) do params[key] = val end end local args = require("Module:parameters").process(frame:getParent().args, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolinkhead then if #heads == 0 then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph) if #heads == 0 then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) heads[i] = head end if head == auto_linked_head then track("redundant-head") end end end end local data = { lang = lang, pos_category = poscat_th, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, } local is_suffix = false if pagename:find("^%-") and poscat_th ~= "รูปปัจจัย" then is_suffix = true data.pos_category = "ปัจจัย" local singular_poscat = --[[require(en_utilities_module).singularize(poscat)]] poscat_th table.insert(data.categories, "ปัจจัยสร้าง" .. singular_poscat .. langname) table.insert(data.inflections, {label = "ปัจจัยสร้าง" .. singular_poscat}) end if pos_functions[poscat_th] then pos_functions[poscat_th].func(args, data) end if args.json then return require("Module:JSON").toJSON(data) end local post_note = data.post_note and "; " .. data.post_note or "" return require("Module:headword").full_headword(data) .. post_note end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function glossary_link(entry, text) text = text or entry return "[[Appendix:Glossary#" .. entry .. "|" .. text .. "]]" end local function fetch_qualifiers(qual, existing) if not qual then return existing end if not existing then return {qual} end local retval = {} for _, e in ipairs(existing) do table.insert(retval, e) end table.insert(retval, qual) return retval end local function process_terms_with_qualifiers(terms, quals) local infls = {} for i, term in ipairs(terms) do table.insert(infls, {term = term, q = fetch_qualifiers(quals[i])}) end return infls end local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture replace -- expression. lemma = lemma:gsub("%%", "%%%%") -- Assign to a variable to discard second return value. term = term:gsub("#", lemma) return term end local function check_all_missing(data, forms, plpos) for _, form in ipairs(forms) do if type(form) == "table" then form = form.term end if form then local title = mw.title.new(form) if title and not title.exists then table.insert(data.categories, langname .. " " .. plpos .. " with red links in their headword lines") end end end end local function insert_ancillary_inflection(data, forms, quals, label, plpos) if forms and #forms > 0 then local terms = process_terms_with_qualifiers(forms, quals) check_all_missing(data, terms, plpos) terms.label = label table.insert(data.inflections, terms) end end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function do_adjective(args, data, pos, is_suffix, is_superlative) local feminines = {} local masculine_plurals = {} local feminine_plurals = {} if is_suffix then pos = "ปัจจัย" end local plpos = --[[require(en_utilities_module).pluralize(pos)]] pos if not is_suffix then data.pos_category = plpos end if args.sp then local romut = require(romut_module) if not romut.allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(romut.allowed_special_indicators) do table.insert(indicators, "'" .. indic .. "'") end table.sort(indicators) error("Special inflection indicator beginning can only be " .. list_to_text(indicators) .. ": " .. args.sp) end end local lemma = data.pagename local function insert_inflection(forms, label, accel) if #forms > 0 then if forms[1].term == "-" then table.insert(data.inflections, {label = "ไม่มี" .. label}) else forms.label = label forms.accel = {form = accel} table.insert(data.inflections, forms) end end end if args.f[1] == "ind" or args.f[1] == "inv" then -- invariable adjective table.insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")}) table.insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) if args.sp or #args.f > 1 or #args.pl > 0 or #args.mpl > 0 or #args.fpl > 0 then error("Can't specify inflections with an invariable " .. pos) end elseif args.fonly then -- feminine-only if #args.f > 0 then error("Can't specify explicit feminines with feminine-only " .. pos) end if #args.pl > 0 then error("Can't specify explicit plurals with feminine-only " .. pos .. ", use fpl=") end if #args.mpl > 0 then error("Can't specify explicit masculine plurals with feminine-only " .. pos) end local argsfpl = args.fpl if #argsfpl == 0 then argsfpl = {"+"} end for i, fpl in ipairs(argsfpl) do local quals = fetch_qualifiers(args.fpl_qual[i]) if fpl == "+" then -- Generate default feminine plural. local defpls = com.make_plural(lemma, "f", args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end for _, defpl in ipairs(defpls) do table.insert(feminine_plurals, {term = defpl, q = quals}) end else table.insert(feminine_plurals, {term = replace_hash_with_lemma(fpl, lemma), q = quals}) end end check_all_missing(data, feminine_plurals, plpos) table.insert(data.inflections, {label = "เพศหญิงเท่านั้น"}) insert_inflection(feminine_plurals, "เพศหญิงพหูพจน์", "f|p") else -- Gather feminines. local argsf = args.f if #argsf == 0 then argsf = {"+"} end for i, f in ipairs(argsf) do if f == "mf" then f = lemma elseif f == "+" then -- Generate default feminine. f = com.make_feminine(lemma, args.sp) else f = replace_hash_with_lemma(f, lemma) end table.insert(feminines, {term = f, q = fetch_qualifiers(args.f_qual[i])}) end local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and not feminines[1].q if fem_like_lemma then table.insert(data.categories, plpos .. "epicene" .. langname) end local argsmpl = args.mpl local argsfpl = args.fpl if #args.pl > 0 then if #argsmpl > 0 or #argsfpl > 0 or args.mpl_qual.maxindex > 0 or args.fpl_qual.maxindex > 0 then error("Can't specify both pl= and mpl=/fpl=") end argsmpl = args.pl args.mpl_qual = args.pl_qual argsfpl = args.pl args.fpl_qual = args.pl_qual end if #argsmpl == 0 then argsmpl = {"+"} end if #argsfpl == 0 then argsfpl = {"+"} end for i, mpl in ipairs(argsmpl) do local quals = fetch_qualifiers(args.mpl_qual[i]) if mpl == "+" then -- Generate default masculine plural. local defpls -- First, some special hacks based on the feminine singular. if not fem_like_lemma and not args.sp and not lemma:find(" ") then for _, f in ipairs(feminines) do if f.term:find("ssa$") then -- If the feminine ends in -ssa, assume that the -ss- is also in the -- masculine plural form defpls = {rsub(f.term, "a$", "os")} break elseif f.term == lemma .. "na" then defpls = {lemma .. "ns"} break elseif lemma:find("ig$") and f.term:find("ja$") then -- Adjectives in -ig have two masculine plural forms, one derived from -- the m.sg. and the other derived from the f.sg. defpls = {lemma .. "s", rsub(f.term, "ja$", "jos")} break end end end defpls = defpls or com.make_plural(lemma, "m", args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end for _, defpl in ipairs(defpls) do table.insert(masculine_plurals, {term = defpl, q = quals}) end else table.insert(masculine_plurals, {term = replace_hash_with_lemma(mpl, lemma), q = quals}) end end for i, fpl in ipairs(argsfpl) do if fpl == "+" then -- First, some special hacks based on the feminine singular. if fem_like_lemma and not args.sp and not lemma:find(" ") and lemma:find("[çx]$") then -- Adjectives ending in -ç or -x behave as mf-type in the singular, but -- regular type in the plural. local defpls = com.make_plural(lemma .. "a", "f") if not defpls then error("Unable to generate default plural of '" .. lemma .. "a'") end local fquals = fetch_qualifiers(args.fpl_qual[i]) for _, defpl in ipairs(defpls) do table.insert(feminine_plurals, {term = defpl, q = fquals}) end else for _, f in ipairs(feminines) do -- Generate default feminine plural; f is a table. local defpls = com.make_plural(f.term, "f", args.sp) if not defpls then error("Unable to generate default plural of '" .. f.term .. "'") end local fquals = fetch_qualifiers(args.fpl_qual[i], f.q) for _, defpl in ipairs(defpls) do table.insert(feminine_plurals, {term = defpl, q = fquals}) end end end else fpl = replace_hash_with_lemma(fpl, lemma) table.insert(feminine_plurals, {term = fpl, q = fetch_qualifiers(args.fpl_qual[i])}) end end check_all_missing(data, feminines, plpos) check_all_missing(data, masculine_plurals, plpos) check_all_missing(data, feminine_plurals, plpos) local fem_pl_like_masc_pl = #masculine_plurals > 0 and #feminine_plurals > 0 and m_table.deepEquals(masculine_plurals, feminine_plurals) local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and not masculine_plurals[1].q if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then -- actually invariable table.insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")}) table.insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) else -- Make sure there are feminines given and not same as lemma. if not fem_like_lemma then insert_inflection(feminines, "เพศหญิง", "f|s") else data.genders = {"mf"} end if fem_pl_like_masc_pl then insert_inflection(masculine_plurals, "เพศชายและเพศหญิงพหูพจน์", "p") else insert_inflection(masculine_plurals, "เพศชายพหูพจน์", "m|p") insert_inflection(feminine_plurals, "เพศหญิงพหูพจน์", "f|p") end end end if args.irreg and is_superlative then table.insert(data.categories, plpos .. "ขั้นสุดไม่ปรกติ" .. langname) end end local function get_adjective_params(adjtype) local params = { ["sp"] = {}, -- special indicator: "first", "first-last", etc. ["f"] = list, --feminine form(s) [1] = {alias_of = "f", list = false}, ["f_qual"] = {list = "f\1_qual", allow_holes = true}, ["pl"] = list, --plural override(s) ["pl_qual"] = {list = "pl\1_qual", allow_holes = true}, ["mpl"] = list, --masculine plural override(s) ["mpl_qual"] = {list = "mpl\1_qual", allow_holes = true}, ["fpl"] = list, --feminine plural override(s) ["fpl_qual"] = {list = "fpl\1_qual", allow_holes = true}, } if adjtype == "base" then params["comp"] = list --comparative(s) params["comp_qual"] = {list = "comp\1_qual", allow_holes = true} params["sup"] = list --superlative(s) params["sup_qual"] = {list = "sup\1_qual", allow_holes = true} params["dim"] = list --diminutive(s) params["dim_qual"] = {list = "dim\1_qual", allow_holes = true} params["aug"] = list --augmentative(s) params["aug_qual"] = {list = "aug\1_qual", allow_holes = true} params["fonly"] = boolean -- feminine only params["hascomp"] = {} -- has comparative end if adjtype == "sup" then params["irreg"] = boolean end return params end -- Display additional inflection information for an adjective pos_functions["คำคุณศัพท์"] = { params = get_adjective_params("base"), func = function(args, data, is_suffix) do_adjective(args, data, "คำคุณศัพท์", is_suffix) end, } pos_functions["รูปกริยาขยายอดีตกาล"] = { params = get_adjective_params("part"), func = function(args, data, is_suffix) do_adjective(args, data, "รูปกริยาขยาย", is_suffix) data.pos_category = "รูปกริยาขยายอดีตกาล" end, } pos_functions["ตัวกำหนด"] = { params = get_adjective_params("det"), func = function(args, data, is_suffix) do_adjective(args, data, "ตัวกำหนด", is_suffix) end, } pos_functions["คำสรรพนาม"] = { params = get_adjective_params("pron"), func = function(args, data, is_suffix) do_adjective(args, data, "คำสรรพนาม", is_suffix) end, } ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet( {"m", "f", "mf", "mfbysense", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "n-p", "?", "?-p"} ) local function process_genders(data, genders, g_qual) for i, g in ipairs(genders) do if not allowed_genders[g] then error("Unrecognized gender: " .. g) end if g_qual[i] then table.insert(data.genders, {spec = g, qualifiers = {g_qual[i]}}) else table.insert(data.genders, g) end end end local function do_noun(args, data, pos, is_suffix, is_proper) local is_plurale_tantum = false local has_singular = false if is_suffix then pos = "ปัจจัย" end local plpos = --[[require(en_utilities_module).pluralize(pos)]] pos data.genders = {} local saw_m = false local saw_f = false local gender_for_default_plural, gender_for_irreg_ending process_genders(data, args[1], args.g_qual) -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if g:find("-p$") then is_plurale_tantum = true else has_singular = true if g == "m" or g == "mf" or g == "mfbysense" then saw_m = true end if g == "f" or g == "mf" or g == "mfbysense" then saw_f = true end end end if saw_m and saw_f then gender_for_default_plural = "m" gender_for_irreg_ending = "mf" elseif saw_f then gender_for_default_plural = "f" gender_for_irreg_ending = "f" else gender_for_default_plural = "m" gender_for_irreg_ending = "m" end local lemma = data.pagename local function insert_inflection(list, term, accel, qualifiers, no_inv) local infl = {q = qualifiers, accel = accel} --if term == lemma and not no_inv then -- infl.label = glossary_link("ผันรูปไม่ได้") --else infl.term = term --end infl.term_for_further_inflection = term table.insert(list, infl) end -- Plural local plurals = {} local args_pl = args[2] if is_plurale_tantum and not has_singular then if #args_pl > 0 then error("Can't specify plurals of plurale tantum " .. pos) end table.insert(data.inflections, {label = glossary_link("พหูพจน์เท่านั้น")}) else if is_plurale_tantum then -- both singular and plural table.insert(data.inflections, {label = "บางครั้ง" .. glossary_link("พหูพจน์เท่านั้น") .. ", ในการแปรผัน"}) end -- If no plurals, use the default plural if not a proper noun. if #args_pl == 0 and not is_proper then args_pl = {"+"} end -- If only ~ given (countable and uncountable), add the default plural after it. if #args_pl == 1 and args_pl[1] == "~" then args_pl = {"~", "+"} end -- Gather plurals, handling requests for default plurals for i, pl in ipairs(args_pl) do local function insert_pl(term) local quals = fetch_qualifiers(args.pl_qual[i]) if term == lemma and i == 1 and #args_pl == 1 then table.insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้"), q = quals}) table.insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) else insert_inflection(plurals, term, nil, quals) end table.insert(data.categories, plpos .. "นับได้" .. langname) end local function make_plural_and_insert(form, special) local pls = com.make_plural(lemma, gender_for_default_plural, special) if pls then for _, pl in ipairs(pls) do insert_pl(pl) end end end if pl == "+" then make_plural_and_insert(lemma) elseif pl:find("^%+") then pl = require(romut_module).get_special_indicator(pl) make_plural_and_insert(lemma, pl) elseif pl == "?" or pl == "!" then if i > 1 or #args_pl > 1 then error("Can't specify ? or ! with other plurals") end if pl == "?" then -- Plural is unknown -- Better not to display anything -- table.insert(data.inflections, {label = "พหูพจน์ไม่ทราบหรือไม่แน่ชัด"}) table.insert(data.categories, langname .. " " .. plpos .. " with unknown or uncertain plurals") else -- Plural is not attested table.insert(data.inflections, {label = "พหูพจน์ไม่รับรอง"}) table.insert(data.categories, langname .. " " .. plpos .. " with unattested plurals") end elseif pl == "-" then if i > 1 then error("Plural specifier - must be first") end -- Uncountable noun; may occasionally have a plural table.insert(data.categories, plpos .. "นับไม่ได้" .. langname) -- If plural forms were given explicitly, then show "usually" if #args_pl > 1 then table.insert(data.inflections, {label = "โดยปกติ" .. glossary_link("นับไม่ได้")}) table.insert(data.categories, plpos .. "นับได้" .. langname) else table.insert(data.inflections, {label = glossary_link("uncountable")}) end elseif pl == "~" then if i > 1 then error("Plural specifier ~ must be first") end -- Countable and uncountable noun; will have a plural table.insert(data.categories, plpos .. "นับได้" .. langname) table.insert(data.categories, plpos .. "นับไม่ได้" .. langname) table.insert(data.inflections, {label = glossary_link("นับได้") .. "และ" .. glossary_link("นับไม่ได้")}) else insert_pl(replace_hash_with_lemma(pl, lemma)) end end end if #plurals > 1 then table.insert(data.categories, langname .. " " .. plpos .. " with multiple plurals") end -- Gather masculines/feminines. local function handle_mf(mfs, qualifiers, inflect) local retval = {} for i, mf in ipairs(mfs) do local function insert_infl(list, term, accel, existing_qualifiers) insert_inflection(list, term, accel, fetch_qualifiers(qualifiers[i], existing_qualifiers), "no inv") end local function call_inflect(special) if inflect then -- Generate default feminine. return inflect(lemma, special) else -- FIXME error("Can't generate default masculine currently") end end if mf == "+" then mf = call_inflect() else mf = replace_hash_with_lemma(mf, lemma) end local special = require(romut_module).get_special_indicator(mf) if special then mf = call_inflect(special) end insert_infl(retval, mf) end return retval end local feminines = handle_mf(args.f, args.f_qual, com.make_feminine) -- FIXME, write make_masculine() local masculines = handle_mf(args.m, args.m_qual) check_all_missing(data, plurals, plpos) check_all_missing(data, feminines, plpos) if #plurals > 0 then plurals.label = "พหูพจน์" plurals.accel = {form = "p"} table.insert(data.inflections, plurals) end if #masculines > 0 then masculines.label = "เพศชาย" table.insert(data.inflections, masculines) end if #feminines > 0 then feminines.label = "เพศหญิง" feminines.accel = {form = "f"} table.insert(data.inflections, feminines) end -- Is this a noun with an unexpected ending (for its gender)? -- Only check if the term is one word (there are no spaces in the term). local irreg_gender_lemma = rsub(lemma, " .*", "") -- only look at first word if (gender_for_irreg_ending == "m" or gender_for_irreg_ending == "mf") and irreg_gender_lemma:find("a$") then table.insert(data.categories, plpos .. "เพศชาย" .. langname .. "ที่ลงท้ายด้วย -a") elseif (gender_for_irreg_ending == "f" or gender_for_irreg_ending == "mf") and not ( irreg_gender_lemma:find("a$") or irreg_gender_lemma:find("ió$") or irreg_gender_lemma:find("tat$") or irreg_gender_lemma:find("tud$") or irreg_gender_lemma:find("[dt]riu$")) then table.insert(data.categories, plpos .. "เพศหญิง" .. langname .. "ที่ไม่มีส่วนลงท้ายเพศหญิง") end end local function get_noun_params() return { [1] = {list = "g", required = true, default = "?"}, [2] = {list = "pl"}, ["g_qual"] = {list = "g\1_qual", allow_holes = true}, ["pl_qual"] = {list = "pl\1_qual", allow_holes = true}, ["m"] = list, ["m_qual"] = {list = "m\1_qual", allow_holes = true}, ["f"] = list, ["f_qual"] = {list = "f\1_qual", allow_holes = true}, ["mpl"] = list, ["mpl_qual"] = {list = "mpl\1_qual", allow_holes = true}, ["fpl"] = list, ["fpl_qual"] = {list = "fpl\1_qual", allow_holes = true}, } end pos_functions["คำนาม"] = { params = get_noun_params(), func = function(args, data, is_suffix) do_noun(args, data, "คำนาม", is_suffix) end, } pos_functions["คำวิสามานยนาม"] = { params = get_noun_params(), func = function(args, data, is_suffix) do_noun(args, data, "คำนาม", is_suffix, "is proper") end, } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["คำกริยา"] = { params = { [1] = {}, ["pres"] = list, --present ["pres_qual"] = {list = "pres\1_qual", allow_holes = true}, ["pres3s"] = list, --third-singular present ["pres3s_qual"] = {list = "pres3s\1_qual", allow_holes = true}, ["pret"] = list, --preterite ["pret_qual"] = {list = "pret\1_qual", allow_holes = true}, ["part"] = list, --participle ["part_qual"] = {list = "part\1_qual", allow_holes = true}, ["short_part"] = list, --short participle ["short_part_qual"] = {list = "short_part\1_qual", allow_holes = true}, ["noautolinktext"] = boolean, ["noautolinkverb"] = boolean, ["attn"] = boolean, ["pres_1_sg"] = true, -- accept any ignore old-style param ["past_part"] = true, -- accept any ignore old-style param ["root"] = true, -- FIXME: Implement root-stressed vowel quality }, func = function(args, data, tracking_categories, frame) local preses, preses_3s, prets, parts, short_parts if args.attn then table.insert(tracking_categories, "Requests for attention concerning " .. langname) return end local ca_verb = require(ca_verb_module) local alternant_multiword_spec = ca_verb.do_generate_forms(args, "ca-verb", data.heads[1]) local specforms = alternant_multiword_spec.forms local function slot_exists(slot) return specforms[slot] and #specforms[slot] > 0 end local function do_finite(slot_tense, label_tense) -- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p (only3p verbs); -- but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. [[empedernir]]). local has_1s = slot_exists(slot_tense .. "_1s") local has_3s = slot_exists(slot_tense .. "_3s") local has_3p = slot_exists(slot_tense .. "_3p") if has_1s or (not has_3s and not has_3p) then return { slot = slot_tense .. "_1s", label = ("บุรุษที่หนึ่งเอกพจน์%s"):format(label_tense), }, true elseif has_3s then return { slot = slot_tense .. "_3s", label = ("บุรุษที่สามเอกพจน์%s"):format(label_tense), }, false else return { slot = slot_tense .. "_3p", label = ("บุรุษที่สามพหูพจน์%s"):format(label_tense), }, false end end local did_pres_1s preses, did_pres_1s = do_finite("pres", "ปัจจุบันกาล") preses_3s = { slot = "pres_3s", label = "บุรุษที่สามเอกพจน์ปัจจุบันกาล", } prets = do_finite("pret", "อดีตกาลสิ้นสุด") parts = { slot = "pp_ms", label = "รูปกริยาขยายอดีตกาล", } short_parts = { slot = "short_pp_ms", label = "รูปกริยาขยายอดีตกาลสั้น", } if #args.pres > 0 or #args.pres3s > 0 or #args.pret > 0 or #args.part > 0 or #args.short_part > 0 then track("verb-old-multiarg") end local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Internal error: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end table.insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty) local forms local to_insert if #args == 0 then forms = specforms[slot_desc.slot] if not forms or #forms == 0 then if skip_if_empty then return end forms = {{form = "-"}} end elseif #args == 1 and args[1] == "-" then forms = {{form = "-"}} else forms = {} for i, arg in ipairs(args) do local qual = qualifiers[i] if qual then -- FIXME: It's annoying we have to add brackets and strip them out later. The inflection -- code adds all footnotes with brackets around them; we should change this. qual = {"[" .. qual .. "]"} end local form = arg if not args.noautolinkverb then -- [[Module:inflection utilities]] already loaded by [[Module:ca-verb]] form = require(inflection_utilities_module).add_links(form) end table.insert(forms, {form = form, footnotes = qual}) end end if forms[1].form == "-" then to_insert = {label = "no " .. slot_desc.label} else local into_table = {label = slot_desc.label} for _, form in ipairs(forms) do local qualifiers = strip_brackets(form.footnotes) -- Strip redundant brackets surrounding entire form. These may get generated e.g. -- if we use the angle bracket notation with a single word. local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form -- Don't include accelerators if brackets remain in form, as the result will be wrong. -- FIXME: For now, don't include accelerators. We should use the new {{ca-verb form of}}. -- local this_accel = not stripped_form:find("%[%[") and accel or nil local this_accel = nil table.insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel}) end to_insert = into_table end table.insert(data.inflections, to_insert) end local skip_pres_if_empty if alternant_multiword_spec.no_pres1_and_sub then table.insert(data.inflections, {label = "ไม่มีบุรุษที่หนึ่งเอกพจน์ปัจจุบันกาล"}) table.insert(data.inflections, {label = "no present subjunctive"}) end if alternant_multiword_spec.no_pres_stressed then table.insert(data.inflections, {label = "no stressed present indicative or subjunctive"}) skip_pres_if_empty = true end if alternant_multiword_spec.only3s then table.insert(data.inflections, {label = glossary_link("อบุรุษ")}) elseif alternant_multiword_spec.only3sp then table.insert(data.inflections, {label = "บุรุษที่สามเท่านั้น"}) elseif alternant_multiword_spec.only3p then table.insert(data.inflections, {label = "บุรุษที่สามพหูพจน์เท่านั้น"}) end local has_vowel_alt if alternant_multiword_spec.vowel_alt then for _, vowel_alt in ipairs(alternant_multiword_spec.vowel_alt) do if vowel_alt ~= "+" and vowel_alt ~= "í" and vowel_alt ~= "ú" then has_vowel_alt = true break end end end do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty) -- We want to include both the pres_1s and pres_3s if there is a vowel alternation in the present singular. But we -- don't want to redundantly include the pres_3s if we already included it. if did_pres_1s and has_vowel_alt then do_verb_form(args.pres3s, args.pres3s_qual, preses_3s, skip_pres_if_empty) end do_verb_form(args.pret, args.pret_qual, prets) do_verb_form(args.part, args.part_qual, parts) do_verb_form(args.short_part, args.short_part_qual, short_parts, "skip if empty") -- Add categories. for _, cat in ipairs(alternant_multiword_spec.categories) do table.insert(data.categories, cat) end -- 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:ca-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 Catalan equivalent). if #data.user_specified_heads == 0 or ( #data.user_specified_heads == 1 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) table.insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end if args.root then local m_ca_IPA = require(ca_IPA_module) local parsed_respellings = {} local function set_parsed_respelling(dialect, parsed) -- Validate the individual root vowel specs. for _, termobj in ipairs(parsed.terms) do if not rfind(termobj.words[1].term, "^" .. m_ca_IPA.mid_vowel_hint_c .. "$") then error(("Root vowel spec '%s' should be one of the vowels %s"):format( termobj.words[1].term, m_ca_IPA.mid_vowel_hints)) end end if not dialect then for _, dial in ipairs(m_ca_IPA.dialects) do -- Need to clone as we destructively modify each one later with the pronun. parsed_respellings[dial] = m_table.deepCopy(parsed) end elseif m_ca_IPA.dialect_groups[dialect] then for _, dial in ipairs(m_ca_IPA.dialect_groups[dialect]) do -- Need to clone as we destructively modify each one later with the pronun. parsed_respellings[dial] = m_table.deepCopy(parsed) end else parsed_respellings[dialect] = parsed end end local function check_dialect_or_dialect_group(dialect) if not m_table.contains(m_ca_IPA.dialects, dialect) and not m_ca_IPA.dialect_groups[dialect] then local dialect_list = {} for _, dial in ipairs(m_ca_IPA.dialects) do table.insert(dialect_list, "'" .. dial .. "'") end dialect_list = list_to_text(dialect_list, nil, " or ") local dialect_group_list = {} for dialect_group, _ in pairs(m_ca_IPA.dialect_groups) do table.insert(dialect_group_list, "'" .. dialect_group .. "'") end dialect_group_list = list_to_text(dialect_group_list, nil, " or ") error(("Unrecognized dialect '%s': Should be a dialect %s or a dialect group %s"):format( dialect, dialect_list, dialect_group_list)) end end -- Parse the root vowel specs. if args.root:find("[<%[]") then local put = require(parse_utilities_module) -- Parse balanced segment runs involving either [...] (substitution notation) or <...> (inline -- modifiers). We do this because we don't want commas or semicolons inside of square or angle brackets -- to count as respelling delimiters. However, we need to rejoin square-bracketed segments with nearby -- ones after splitting alternating runs on comma and semicolon. local segments = put.parse_multi_delimiter_balanced_segment_run(args.root, {{"<", ">"}, {"[", "]"}}) local semicolon_separated_groups = put.split_alternating_runs(segments, "%s*;%s*") for _, group in ipairs(semicolon_separated_groups) do local first_element = group[1] local dialect if first_element:find("^[a-z]+:") then -- a dialect-specific spec local rest dialect, rest = first_element:match("^([a-z]+):(.*)$") check_dialect_or_dialect_group(dialect) group[1] = rest end local comma_separated_groups = put.split_alternating_runs_on_comma(group) -- Process each value. local outer_container = m_ca_IPA.parse_comma_separated_groups(comma_separated_groups, true, args.root, "root") set_parsed_respelling(dialect, outer_container) end else for _, dialect_spec in ipairs(rsplit(args.root, "%s*;%s*")) do local dialect if dialect_spec:find("^[a-z]+:") then -- a dialect-specific spec local rest dialect, rest = dialect_spec:match("^([a-z]+):(.*)$") check_dialect_or_dialect_group(dialect) dialect_spec = rest end local termobjs = {} for _, word in ipairs(rsplit(dialect_spec, ",")) do table.insert(termobjs, {words = {{term = word}}}) end set_parsed_respelling(dialect, { terms = termobjs, }) end end -- Convert each canonicalized respelling to phonemic/phonetic IPA. m_ca_IPA.generate_phonemic_phonetic(parsed_respellings) -- Group the results. local grouped_pronuns = m_ca_IPA.group_pronuns_by_dialect(parsed_respellings) -- Format for display. for _, grouped_pronun_spec in pairs(grouped_pronuns) do local pronunciations = {} local function ins(text) table.insert(pronunciations, text) end -- Loop through each pronunciation. For each one, format the phonetic version "raw". for j, pronun in ipairs(grouped_pronun_spec.pronuns) do -- Add dialect tags to left accent qualifiers if first one local as = pronun.a if j == 1 then if as then as = m_table.deepCopy(as) else as = {} end for _, dialect in ipairs(grouped_pronun_spec.dialects) do table.insert(as, m_ca_IPA.dialects_to_names[dialect]) end else ins(", ") end local slash_pron = "/" .. pronun.phonetic:gsub("ˈ", "") .. "/" if as or pronun.q or pronun.qq or pronun.aa then ins(require("Module:pron qualifier").format_qualifiers { lang = lang, text = slash_pron, q = pronun.q, a = as, qq = pronun.qq, aa = pronun.aa }) else ins(slash_pron) end if pronun.refs then -- FIXME: Copied from [[Module:IPA]]. Should be in a module. local refs = {} if #pronun.refs > 0 then for _, refspec in ipairs(pronun.refs) do if type(refspec) ~= "table" then refspec = {text = refspec} end local refargs if refspec.name or refspec.group then refargs = {name = refspec.name, group = refspec.group} end table.insert(refs, mw.getCurrentFrame():extensionTag("ref", refspec.text, refargs)) end ins(table.concat(refs)) end end end grouped_pronun_spec.formatted = table.concat(pronunciations) end -- Concatenate formatted results. local formatted = {} for _, grouped_pronun_spec in ipairs(grouped_pronuns) do table.insert(formatted, grouped_pronun_spec.formatted) end data.post_note = "''root stress'': " .. table.concat(formatted, "; ") end end } ----------------------------------------------------------------------------------------- -- Numerals -- ----------------------------------------------------------------------------------------- -- Display additional inflection information for a numeral pos_functions["เลข"] = { params = { [1] = true, [2] = true, }, func = function(args, data, is_suffix) local feminine = args[1] local noun_form = args[2] if feminine then table.insert(data.genders, "m") table.insert(data.inflections, {label = "เพศหญิง", feminine}) if noun_form then table.insert(data.inflections, {label = "รูปนาม", noun_form}) end else table.insert(data.genders, "m") table.insert(data.genders, "f") end end } ----------------------------------------------------------------------------------------- -- Phrases -- ----------------------------------------------------------------------------------------- pos_functions["วลี"] = { params = { ["g"] = list, ["g_qual"] = {list = "g\1_qual", allow_holes = true}, ["m"] = list, ["m_qual"] = {list = "m\1_qual", allow_holes = true}, ["f"] = list, ["f_qual"] = {list = "f\1_qual", allow_holes = true}, }, func = function(args, data, is_suffix) data.genders = {} process_genders(data, args.g, args.g_qual) insert_ancillary_inflection(data, args.m, args.m_qual, "เพศชาย", "วลี") insert_ancillary_inflection(data, args.f, args.f_qual, "เพศหญิง", "วลี") end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["รูปปัจจัย"] = { params = { [1] = {required = true, list = true}, ["g"] = list, ["g_qual"] = {list = "g\1_qual", allow_holes = true}, }, func = function(args, data, is_suffix) data.genders = {} process_genders(data, args.g, args.g_qual) local suffix_type = {} for _, typ in ipairs(args[1]) do table.insert(suffix_type, "ปัจจัยสร้าง" .. typ) end table.insert(data.inflections, {label = "รูปผันของ " .. m_table.serialCommaJoin(suffix_type, {conj = "หรือ"})}) end, } return export cw1paaznu0fsoqcmcvejewj0i5ynd0u มอดูล:pt-headword 828 236296 5729300 5698770 2026-07-20T05:34:22Z Octahedron80 267 5729300 Scribunto text/plain -- This module contains code for Portuguese headword templates. -- Templates covered are: -- * {{pt-noun}}, {{pt-proper noun}}; -- * {{pt-verb}}; -- * {{pt-adj}}, {{pt-adj-comp}}, {{pt-adj-sup}}; -- * {{pt-det}}; -- * {{pt-pron-adj}}; -- * {{pt-contr-adj}}; -- * {{pt-pp}}; -- * {{pt-cardinal}}; -- * {{pt-adv}}. -- See [[Module:pt-verb]] for Portuguese conjugation templates. local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local m_strutils = require("Module:string utilities") local rfind = m_strutils.find local rmatch = m_strutils.match local rsplit = m_strutils.split local usub = m_strutils.sub local require_when_needed = require("Module:utilities/require when needed") local insert = table.insert local m_table = require("Module:table") local com = require("Module:pt-common") local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local inflection_utilities_module = "Module:inflection utilities" local romut_module = "Module:romance utilities" local pt_verb_module = "Module:pt-verb" local lang = require("Module:languages").getByCode("pt") local langname = --[[lang:getCanonicalName()]] lang:getCategoryName() 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") -- When followed by a hyphen in a hyphenated compound, the hyphen will be included with the prefix when linked. local include_hyphen_prefixes = m_table.listToSet { "ab", "afro", "anarco", "anglo", "ântero", "anti", "auto", "contra", "ex", "franco", "hiper", "infra", "inter", "intra", "macro", "micro", "neo", "pan", "pós", "pré", "pró", "proto", "sobre", "sub", "super", "vice", } ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function track(page) require("Module:debug/track")("pt-headword/" .. page) return true end local list_param = {list = true, disallow_holes = true} local boolean_param = {type = "boolean"} local metaphonic_label = "[[ภาคผนวก:การออกเสียงภาษาโปรตุเกส#เมทาโฟนี|เมทาโฟนี]]" local function make_plural(sg, special) local pl = com.make_plural(sg, special) if not pl then error(("Internal error: Unable to generate default plural of '%s'"):format(sg)) end return pl 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; -- `plpos` is the plural part of speech, used in [[Category:LANGNAME PLPOS with red links in their headword lines]]. -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, plpos, accel, frob) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, frob = frob, check_missing = true, lang = lang, plpos = plpos, } end -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) 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 parargs = frame:getParent().args local params = { ["head"] = list_param, ["id"] = true, ["json"] = boolean_param, ["splithyph"] = boolean_param, ["nolinkhead"] = boolean_param, ["nolink"] = {type = "boolean", alias_of = "nolinkhead"}, ["abbr"] = list_param, ["pagename"] = true, -- for testing } if pos_functions[poscat_th] then for key, val in pairs(pos_functions[poscat_th].params) do params[key] = val end end local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolinkhead then if #heads == 0 then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph, nil, include_hyphen_prefixes) if #heads == 0 then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) heads[i] = head end end end end local data = { lang = lang, pos_category = poscat_th, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, } local is_suffix = false if pagename:find("^%-") and poscat_th ~= "รูปปัจจัย" then 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[poscat_th] then pos_functions[poscat_th].func(args, data, is_suffix) end parse_and_insert_inflection(data, args, "abbr", "abbreviation") if args.json then return require("Module:JSON").toJSON(data) end return require("Module:headword").full_headword(data) end local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture replace -- expression. lemma = lemma:gsub("%%", "%%%%") return (term:gsub("#", lemma)) end local function is_metaphonic(args, lemma) if args.nometa then return false end if args.meta then return true end -- Anything in -oso with a preceding vowel (e.g. [[gostoso]], [[curioso]]) is normally metaphonic. return rfind(lemma, com.V .. ".*oso$") end ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet( {"m", "f", "mf", "mfbysense", "mfequiv", "gneut", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "gneut-p", "n-p", "?", "?-p"} ) local function validate_genders(genders) for _, g in ipairs(genders) do if type(g) == "table" then g = g.spec end if not allowed_genders[g] then error("Unrecognized gender: " .. g) end end end local function do_noun(args, data, pos, is_suffix, is_proper) local is_plurale_tantum = false local has_singular = false if is_suffix then pos = "ปัจจัย" end local plpos = --[[m_en_utilities.pluralize(pos)]] pos validate_genders(args[1]) data.genders = args[1] local saw_m = false local saw_f = false local saw_gneut = false local gender_for_irreg_ending -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if type(g) == "table" then g = g.spec end if g:find("-p$") then is_plurale_tantum = true else has_singular = true if g == "m" or g == "mf" or g == "mfbysense" then saw_m = true end if g == "f" or g == "mf" or g == "mfbysense" then saw_f = true end if g == "gneut" then saw_gneut = true end end end if saw_m and saw_f then gender_for_irreg_ending = "mf" elseif saw_f then gender_for_irreg_ending = "f" else gender_for_irreg_ending = "m" end local lemma = data.pagename local plurals = {} local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, check_missing = true, lang = lang, plpos = plpos, } end if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. pos) end insert(data.inflections, {label = glossary_link("พหูพจน์เท่านั้น")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], splitchar = ",", } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end table.remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" then error(("Unexpected plural code '%s'"):format(mode)) end end if is_plurale_tantum then -- both singular and plural insert(data.inflections, {label = "บางครั้ง" .. glossary_link("พหูพจน์เท่านั้น") .. "ในภาษาย่อย"}) end if mode == "?" then -- Plural is unknown insert(data.categories, langname .. " " .. plpos .. " with unknown or uncertain plurals") elseif mode == "!" then -- Plural is not attested insert(data.inflections, {label = "plural not attested"}) insert(data.categories, langname .. " " .. plpos .. " with unattested plurals") if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural insert(data.categories, plpos .. "นับไม่ได้" .. langname) -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert(data.inflections, {label = "โดยปกติ" .. glossary_link("นับไม่ได้")}) insert(data.categories, plpos .. "นับได้" .. langname) else insert(data.inflections, {label = glossary_link("นับไม่ได้")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural insert(data.inflections, {label = glossary_link("นับได้") .. "และ" .. glossary_link("นับไม่ได้")}) insert(data.categories, plpos .. "นับไม่ได้" .. langname) insert(data.categories, plpos .. "นับได้" .. langname) elseif plurals[1] then -- Countable nouns insert(data.categories, plpos .. "นับได้" .. langname) else -- Uncountable nouns insert(data.categories, plpos .. "นับไม่ได้" .. langname) end end -- Gather plurals, handling requests for default plurals. local has_default_or_hash = false for _, pl in ipairs(plurals) do if pl.term:find("^%+") or pl.term:find("#") then has_default_or_hash = true break end end if has_default_or_hash then for _, pl in ipairs(plurals) do if pl.term == "+" then pl.term = make_plural(lemma) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) pl.term = make_plural(lemma, pl.term) else pl.term = replace_hash_with_lemma(pl.term, lemma) end end end local pl1 = plurals[1] if pl1 and not plurals[2] and pl1.term == lemma then insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้"), q = pl1.q, qq = pl1.qq, l = pl1.l, ll = pl1.ll, refs = pl1.refs }) insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) else insert_noun_inflection(plurals, "พหูพจน์", "p") end if plurals[2] then insert(data.categories, langname .. " " .. plpos .. " with multiple plurals") end end -- Gather masculines/feminines. For each one, generate the corresponding plural. `field` is the name of the field -- containing the masculine or feminine forms (normally "m" or "f"); `inflect` is a function of one or two arguments -- to generate the default masculine or feminine from the lemma (the arguments are the lemma and optionally a -- "special" flag to indicate how to handle multiword lemmas, and the function is normally make_feminine or -- make_masculine from [[Module:pt-common]]); and `default_plurals` is a list into which the corresponding default -- plurals of the gathered or generated masculine or feminine forms are stored. local function handle_mf(field, inflect, default_plurals) local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = inflect(lemma) else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = inflect(lemma, special) end return term end } for _, mf in ipairs(mfs) do local plobj = m_table.shallowCopy(mf) plobj.term = make_plural(mf.term, special) -- Add an accelerator for each masculine/feminine plural whose lemma is the corresponding singular, so that -- the accelerated entry that is generated has a definition that looks like -- # {{plural of|pt|MFSING}} plobj.accel = {form = "p", lemma = mf.term} insert(default_plurals, plobj) end return mfs end local feminine_plurals = {} local feminines = handle_mf("f", com.make_feminine, feminine_plurals) local masculine_plurals = {} local masculines = handle_mf("m", com.make_masculine, masculine_plurals) local function handle_mf_plural(mfplfield, default_plurals, singulars) local mfpl = m_headword_utilities.parse_term_list_with_modifiers { paramname = mfplfield, forms = args[mfplfield], splitchar = ",", } if is_plurale_tantum then return mfpl end local new_mfpls = {} local saw_plus for i, mfpl in ipairs(mfpl) do local accel if #mfpl == #singulars then -- If same number of overriding masculine/feminine plurals as singulars, assume each plural goes with -- the corresponding singular and use each corresponding singular as the lemma in the accelerator. The -- generated entry will have -- # {{plural of|pt|SINGULAR}} -- as the definition. accel = {form = "p", lemma = singulars[i].term} else accel = nil end if mfpl.term == "+" then -- We should never see + twice. If we do, it will lead to problems since we overwrite the values of -- default_plurals the first time around. if saw_plus then error(("Saw + twice when handling %s="):format(mfplfield)) end saw_plus = true if not default_plurals[1] then -- FIXME: Can this happen? Not in corresponding Spanish code and the old Portuguese code tried to -- handle this condition by generating the default plural from the lemma. error("Internal error: Something wrong, no generated default m/f plurals at this stage") end for _, defpl in ipairs(default_plurals) do -- defpl is already a table and has an accel field m_headword_utilities.combine_termobj_qualifiers_labels(defpl, mfpl) insert(new_mfpls, defpl) end elseif mfpl.term:find("^%+") then mfpl.term = require(romut_module).get_special_indicator(mfpl.term) for _, mf in ipairs(singulars) do local mfplobj = m_table.shallowCopy(mfpl) mfplobj.term = make_plural(mf.term, mfpl.term) mfplobj.accel = accel m_headword_utilities.combine_termobj_qualifiers_labels(mfplobj, mf) insert(new_mfpls, mfplobj) end else mfpl.accel = accel mfpl.term = replace_hash_with_lemma(mfpl.term, lemma) insert(new_mfpls, mfpl) end end return new_mfpls end if args.fpl[1] then -- Override any existing feminine plurals. feminine_plurals = handle_mf_plural("fpl", feminine_plurals, feminines) end if args.mpl[1] then -- Override any existing masculine plurals. masculine_plurals = handle_mf_plural("mpl", masculine_plurals, masculines) end local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, plpos, accel) end insert_noun_inflection(feminines, "เพศหญิง", "f") insert_noun_inflection(feminine_plurals, "เพศหญิงพหูพจน์") insert_noun_inflection(masculines, "เพศชาย") insert_noun_inflection(masculine_plurals, "เพศชายพหูพจน์") if is_metaphonic(args, lemma) then insert(data.inflections, {label = metaphonic_label}) insert(data.categories, plpos .. langname .. "ที่มีเมทาโฟนี") end parse_and_insert_noun_inflection("dim", "ตัวบอกความเล็ก") parse_and_insert_noun_inflection("aug", "ตัวบอกความใหญ่") parse_and_insert_noun_inflection("pej", "pejorative") parse_and_insert_noun_inflection("dem", "คำประชานาม") parse_and_insert_noun_inflection("fdem", "คำประชานามหญิง") -- Maybe add category 'Portuguese nouns with irregular gender' (or similar) local irreg_gender_lemma = com.rsub(lemma, " .*", "") -- only look at first word if (rfind(irreg_gender_lemma, "[^ã]o$") and (gender_for_irreg_ending == "f" or gender_for_irreg_ending == "mf")) or (irreg_gender_lemma:find("a$") and (gender_for_irreg_ending == "m" or gender_for_irreg_ending == "mf")) then insert(data.categories, langname .. " " .. plpos .. " with irregular gender") end end local function get_noun_params(is_proper) return { [1] = {list = "g", disallow_holes = true, required = not is_proper, default = "?", type = "genders", flatten = true}, [2] = {list = "pl", disallow_holes = true}, ["m"] = list_param, ["f"] = list_param, ["mpl"] = list_param, ["fpl"] = list_param, ["dim"] = list_param, --diminutive(s) ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) ["dem"] = list_param, --demonym(s) ["fdem"] = list_param, --female demonym(s) ["meta"] = boolean_param, -- metaphonic ["nometa"] = boolean_param, -- explicitly not metaphonic } end pos_functions["คำนาม"] = { params = get_noun_params(), func = function(args, data, is_suffix) do_noun(args, data, "คำนาม", is_suffix) end, } pos_functions["คำวิสามานยนาม"] = { params = get_noun_params("is proper"), func = function(args, data, is_suffix) do_noun(args, data, "คำวิสามานยนาม", is_suffix, "is proper noun") end, } ----------------------------------------------------------------------------------------- -- Pronouns -- ----------------------------------------------------------------------------------------- local function do_pronoun(args, data, pos, is_suffix) if is_suffix then pos = "ปัจจัย" end local plpos = --[[m_en_utilities.pluralize(pos)]] pos if not is_suffix then data.pos_category = plpos end local lemma = data.pagename validate_genders(args[1]) data.genders = args[1] local function do_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, plpos, accel) end do_inflection("m", "เพศชาย") do_inflection("f", "เพศหญิง") do_inflection("sg", "เอกพจน์") do_inflection("pl", "พหูพจน์") do_inflection("mpl", "เพศชายพหูพจน์") do_inflection("fpl", "เพศหญิงพหูพจน์") do_inflection("n", "เพศกลาง") end local function get_pronoun_params() local params = { [1] = {list = "g", disallow_holes = true, type = "genders", flatten = true}, --gender(s) ["m"] = list_param, --masculine form(s) ["f"] = list_param, --feminine form(s) ["sg"] = list_param, --singular form(s) ["pl"] = list_param, --plural form(s) ["mpl"] = list_param, --masculine plural form(s) ["fpl"] = list_param, --feminine plural form(s) ["n"] = list_param, --neuter form(s) } return params end pos_functions["คำสรรพนาม"] = { params = get_pronoun_params(), func = function(args, data, is_suffix) do_pronoun(args, data, "คำสรรพนาม", is_suffix) end, } ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- -- Handle comparatives and superlatives for adjectives and adverbs, including user-specified comparatives and -- superlatives, default-requested comparatives/superlatives using '+', autogenerated comparatives/superlatives, -- and hascomp=. Code is the same for adjectives and adverbs. local function handle_adj_adv_comp(args, data, plpos, is_adv) local lemma = data.pagename local stem if is_adv then stem = com.rsub(lemma, "mente$", "") else stem = lemma end local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, check_missing = true, lang = lang, plpos = plpos, } end local function make_absolute_superlative(special) if is_adv then return com.make_adverbial_absolute_superlative(stem, special) else return com.make_absolute_superlative(stem, special) end end -- Maybe autogenerate default comparative/superlative. local comp, sup if args.comp and args.sup then-- comp= and sup= were given as options to the user -- If no comp, but a non-default sup given, then add the default comparative/superlative. -- This is useful when an absolute superlative is given. comp = m_headword_utilities.parse_term_list_with_modifiers { paramname = "comp", forms = args.comp, splitchar = ",", } sup = m_headword_utilities.parse_term_list_with_modifiers { paramname = "sup", forms = args.sup, splitchar = ",", } local saw_sup_plus = false if not comp[1] and sup[1] then for _, supval in ipairs(sup) do if supval.term == "+" then saw_sup_plus = true end end if not saw_sup_plus then comp = {{term = "+"}} insert(sup, 1, {term = "+"}) end end -- If comp=+, use default comparative 'mais ...', and set a default superlative if unspecified. local saw_comp_plus = false for _, compval in ipairs(comp) do if compval.term == "+" then saw_comp_plus = true compval.term = "[[mais]] [[" .. lemma .. "]]" end end if saw_comp_plus and not sup[1] then sup = {{term = "+"}} end -- If sup=+ (possibly from comp=+), use default superlative 'o mais ...'. Also handle absolute superlatives. for _, supval in ipairs(sup) do if supval.term == "+" then supval.term = "[[o]] [[mais]] [[" .. lemma .. "]]" elseif supval.term == "+abs" then supval.term = make_absolute_superlative() elseif rfind(supval.term, "^%+abs:") then local sp = rmatch(supval.term, "^%+abs:(.*)$") supval.term = make_absolute_superlative(sp) end end end if args.hascomp then if args.hascomp == "both" then insert(data.inflections, {label = "บางครั้ง" .. glossary_link("เปรียบเทียบได้")}) insert(data.categories, plpos .. "เปรียบเทียบได้" .. langname) insert(data.categories, plpos .. "เปรียบเทียบไม่ได้" .. langname) else local hascomp = require("Module:yesno")(args.hascomp) if hascomp == true then insert(data.inflections, {label = glossary_link("เปรียบเทียบได้")}) insert(data.categories, plpos .. "เปรียบเทียบได้" .. langname) elseif hascomp == false then insert(data.inflections, {label = glossary_link("เปรียบเทียบไม่ได้")}) insert(data.categories, plpos .. "เปรียบเทียบไม่ได้" .. langname) else error("Unrecognized value for hascomp=: " .. args.hascomp) end end elseif comp and comp[1] or sup and sup[1] then insert(data.inflections, {label = glossary_link("เปรียบเทียบได้")}) insert(data.categories, plpos .. "เปรียบเทียบได้" .. langname) end insert_inflection(comp, "ขั้นกว่า") insert_inflection(sup, "ขั้นสุด") end local function do_adjective(args, data, pos, is_suffix, is_superlative) local feminines = {} local masculine_plurals = {} local feminine_plurals = {} if is_suffix then pos = "ปัจจัย" end local plpos = --[[m_en_utilities.pluralize(pos)]] pos if not is_suffix then data.pos_category = plpos end if args.sp then local romut = require(romut_module) if not romut.allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(romut.allowed_special_indicators) do insert(indicators, "'" .. indic .. "'") end table.sort(indicators) error("Special inflection indicator beginning can only be " .. mw.text.listToText(indicators) .. ": " .. args.sp) end end local lemma = data.pagename local function fetch_inflections(field) local retval = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", } if not retval[1] then return {{term = "+"}} end return retval end local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, check_missing = true, lang = lang, plpos = plpos, } end if args.short then insert(data.inflections, {label = "[[Appendix:Portuguese verbs#Participles|short participle]]"}) end if args.inv then -- invariable adjective insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")}) insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) if args.sp or args.f[1] or args.pl[1] or args.mpl[1] or args.fpl[1] then error("Can't specify inflections with an invariable " .. pos) end elseif args.fonly then -- feminine-only if args.f[1] then error("Can't specify explicit feminines with feminine-only " .. pos) end if args.pl[1] then error("Can't specify explicit plurals with feminine-only " .. pos .. ", use fpl=") end if args.mpl[1] then error("Can't specify explicit masculine plurals with feminine-only " .. pos) end local argsfpl = fetch_inflections("fpl") for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then fpl.term = make_plural(lemma, args.sp) else fpl.term = replace_hash_with_lemma(fpl.term, lemma) end insert(feminine_plurals, fpl) end insert(data.inflections, {label = "เพศหญิงเท่านั้น"}) insert_inflection(feminine_plurals, "เพศหญิงพหูพจน์", "f|p") else -- Gather feminines. for _, f in ipairs(fetch_inflections("f")) do if f.term == "+" then -- Generate default feminine. f.term = com.make_feminine(lemma, args.sp) else f.term = replace_hash_with_lemma(f.term, lemma) end insert(feminines, f) end local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(feminines[1]) if fem_like_lemma then insert(data.categories, plpos .. "epicene" .. langname) end local mpl_field = "mpl" local fpl_field = "fpl" if args.pl[1] then if args.mpl[1] or args.fpl[1] then error("Can't specify both pl= and mpl=/fpl=") end mpl_field = "pl" fpl_field = "pl" end local argsmpl = fetch_inflections(mpl_field) local argsfpl = fetch_inflections(fpl_field) for _, mpl in ipairs(argsmpl) do if mpl.term == "+" then -- Generate default masculine plural. mpl.term = make_plural(lemma, args.sp) else mpl.term = replace_hash_with_lemma(mpl.term, lemma) end insert(masculine_plurals, mpl) end for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then for _, f in ipairs(feminines) do -- Generate default feminine plural; f is a table. local fplobj = m_table.shallowCopy(fpl) fplobj.term = make_plural(f.term, args.sp) m_headword_utilities.combine_termobj_qualifiers_labels(fplobj, f) insert(feminine_plurals, fplobj) end else fpl.term = replace_hash_with_lemma(fpl.term, lemma) insert(feminine_plurals, fpl) end end local fem_pl_like_masc_pl = masculine_plurals[1] and feminine_plurals[1] and m_table.deepEquals(masculine_plurals, feminine_plurals) local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(masculine_plurals[1]) if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then -- actually invariable insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")}) insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) else -- Make sure there are feminines given and not same as lemma. if not fem_like_lemma then insert_inflection(feminines, "เพศหญิง", "f|s") elseif args.gneut then data.genders = {"gneut"} else data.genders = {"mf"} end if fem_pl_like_masc_pl then if args.gneut then insert_inflection(masculine_plurals, "พหูพจน์", "p") else -- This is how the Spanish module works. -- insert_inflection(masculine_plurals, "masculine and feminine plural", "p") insert_inflection(masculine_plurals, "พหูพจน์", "p") end else insert_inflection(masculine_plurals, "เพศชายพหูพจน์", "m|p") insert_inflection(feminine_plurals, "เพศหญิงพหูพจน์", "f|p") end end end local function parse_and_insert_adj_inflection(field, label, accel, frob) parse_and_insert_inflection(data, args, field, label, plpos, accel, frob) end parse_and_insert_adj_inflection("n", "เพศกลาง") handle_adj_adv_comp(args, data, plpos, false) parse_and_insert_adj_inflection("dim", "ตัวบอกความเล็ก", nil, function(term) if term == "+" then term = com.make_diminutive(lemma) elseif term:find("^%+") then term = require(romut_module).get_special_indicator(term) term = com.make_diminutive(lemma, term) end return term end) parse_and_insert_adj_inflection("aug", "ตัวบอกความใหญ่", nil, function(term) if term == "+" then term = com.make_augmentative(lemma) elseif term:find("^%+") then term = require(romut_module).get_special_indicator(term) term = com.make_augmentative(lemma, term) end return term end) if is_metaphonic(args, lemma) then insert(data.inflections, {label = metaphonic_label}) insert(data.categories, plpos .. langname .. "ที่มีเมทาโฟนี") end if args.irreg and is_superlative then insert(data.categories, langname .. " irregular superlative " .. plpos) end end local function get_adjective_params(adjtype) local params = { ["inv"] = boolean_param, --invariable ["sp"] = true, -- special indicator: "first", "first-last", etc. ["f"] = list_param, --feminine form(s) ["pl"] = list_param, --plural override(s) ["mpl"] = list_param, --masculine plural override(s) ["fpl"] = list_param, --feminine plural override(s) ["meta"] = boolean_param, -- metaphonic ["nometa"] = boolean_param, -- explicitly not metaphonic } if adjtype == "base" then params["comp"] = list_param --comparative(s) params["sup"] = list_param --superlative(s) params["dim"] = list_param --diminutive(s) params["aug"] = list_param --augmentative(s) params["fonly"] = boolean_param -- feminine only params["gneut"] = boolean_param -- gender-neutral adjective e.g. [[latine]] (FIXME: do these exist in Portuguese?) params["hascomp"] = true -- has comparative end if adjtype == "part" then params["short"] = boolean_param -- short participle end if adjtype == "sup" then params["irreg"] = boolean_param end if adjtype == "pron" or adjtype == "contr" then params["n"] = list_param --neuter form(s) end return params end pos_functions["คำคุณศัพท์"] = { params = get_adjective_params("base"), func = function(args, data, is_suffix) do_adjective(args, data, "คำคุณศัพท์", is_suffix) end, } pos_functions["คำคุณศัพท์ขั้นกว่า"] = { params = get_adjective_params("comp"), func = function(args, data, is_suffix) do_adjective(args, data, "คำคุณศัพท์", is_suffix) end, } pos_functions["คำคุณศัพท์ขั้นสุด"] = { params = get_adjective_params("sup"), func = function(args, data, is_suffix) do_adjective(args, data, "คำคุณศัพท์", is_suffix, "is superlative") end, } pos_functions["รูปกริยาขยายอดีตกาล"] = { params = get_adjective_params("part"), func = function(args, data, is_suffix) do_adjective(args, data, "รูปกริยาขยาย", is_suffix) data.pos_category = "รูปกริยาขยายอดีตกาล" end, } pos_functions["ตัวกำหนด"] = { params = get_adjective_params("det"), func = function(args, data, is_suffix) do_adjective(args, data, "ตัวกำหนด", is_suffix) end, } pos_functions["คำสรรพนามคล้ายคุณศัพท์"] = { params = get_adjective_params("pron"), func = function(args, data, is_suffix) do_adjective(args, data, "คำสรรพนาม", is_suffix) end, } pos_functions["รูปหดย่อคล้ายคุณศัพท์"] = { params = get_adjective_params("contr"), func = function(args, data, is_suffix) do_adjective(args, data, "รูปหดย่อ", is_suffix) end, } ----------------------------------------------------------------------------------------- -- Adverbs -- ----------------------------------------------------------------------------------------- local function do_adverb(args, data, pos, is_suffix) if is_suffix then pos = "ปัจจัย" end local plpos = --[[m_en_utilities.pluralize(pos)]] pos if not is_suffix then data.pos_category = plpos end handle_adj_adv_comp(args, data, plpos, "is adv") end local function get_adverb_params(advtype) local params = {} if advtype == "base" then params["comp"] = list_param --comparative(s) params["sup"] = list_param --superlative(s) params["hascomp"] = true -- has comparative end return params end pos_functions["คำกริยาวิเศษณ์"] = { params = get_adverb_params("base"), func = function(args, data, is_suffix) do_adverb(args, data, "คำกริยาวิเศษณ์", is_suffix) end, } pos_functions["คำกริยาวิเศษณ์ขั้นกว่า"] = { params = get_adverb_params("comp"), func = function(args, data, is_suffix) do_adverb(args, data, "คำกริยาวิเศษณ์", is_suffix) end, } pos_functions["คำกริยาวิเศษณ์ขั้นสุด"] = { params = get_adverb_params("sup"), func = function(args, data, is_suffix) do_adverb(args, data, "คำกริยาวิเศษณ์", is_suffix) end, } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["คำกริยา"] = { params = { [1] = true, ["pres"] = list_param, --present ["pres_qual"] = {list = "pres\1_qual", allow_holes = true}, ["pres3s"] = list_param, --third-singular present ["pres3s_qual"] = {list = "pres3s\1_qual", allow_holes = true}, ["pret"] = list_param, --preterite ["pret_qual"] = {list = "pret\1_qual", allow_holes = true}, ["part"] = list_param, --participle ["part_qual"] = {list = "part\1_qual", allow_holes = true}, ["short_part"] = list_param, --short participle ["short_part_qual"] = {list = "short_part\1_qual", allow_holes = true}, ["noautolinktext"] = boolean_param, ["noautolinkverb"] = boolean_param, ["attn"] = boolean_param, }, func = function(args, data, frame) local preses, preses_3s, prets, parts, short_parts if args.attn then insert(data.categories, "Requests for attention concerning " .. langname) return end local pt_verb = require(pt_verb_module) local alternant_multiword_spec = pt_verb.do_generate_forms(args, "pt-verb", data.heads[1]) local specforms = alternant_multiword_spec.forms local function slot_exists(slot) return specforms[slot] and #specforms[slot] > 0 end local function do_finite(slot_tense, label_tense) -- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p -- (only3p verbs); but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. -- [[empedernir]]). local has_1s = slot_exists(slot_tense .. "_1s") local has_3s = slot_exists(slot_tense .. "_3s") local has_3p = slot_exists(slot_tense .. "_3p") if has_1s or (not has_3s and not has_3p) then return { slot = slot_tense .. "_1s", label = ("first-person singular %s"):format(label_tense), }, true elseif has_3s then return { slot = slot_tense .. "_3s", label = ("third-person singular %s"):format(label_tense), }, false else return { slot = slot_tense .. "_3p", label = ("third-person plural %s"):format(label_tense), }, false end end local did_pres_1s preses, did_pres_1s = do_finite("pres", "ปัจจุบันกาล") preses_3s = { slot = "pres_3s", label = "บุรุษที่สามเอกพจน์ปัจจุบันกาล", } prets = do_finite("pret", "อดีตกาลสิ้นสุด") parts = { slot = "pp_ms", label = "รูปกริยาขยายอดีตกาล", } short_parts = { slot = "short_pp_ms", label = "รูปกริยาขยายอดีตกาลสั้น", } if args.pres[1] or args.pres3s[1] or args.pret[1] or args.part[1] or args.short_part[1] then track("verb-old-multiarg") end local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Internal error: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty) local forms local to_insert if #args == 0 then forms = specforms[slot_desc.slot] if not forms or #forms == 0 then if skip_if_empty then return end forms = {{form = "-"}} end elseif #args == 1 and args[1] == "-" then forms = {{form = "-"}} else forms = {} for i, arg in ipairs(args) do local qual = qualifiers[i] if qual then -- FIXME: It's annoying we have to add brackets and strip them out later. The inflection -- code adds all footnotes with brackets around them; we should change this. qual = {"[" .. qual .. "]"} end local form = arg if not args.noautolinkverb then -- [[Module:inflection utilities]] already loaded by [[Module:pt-verb]] form = require(inflection_utilities_module).add_links(form) end insert(forms, {form = form, footnotes = qual}) end end if forms[1].form == "-" then to_insert = {label = "no " .. slot_desc.label} else local into_table = {label = slot_desc.label} for _, form in ipairs(forms) do local qualifiers = strip_brackets(form.footnotes) -- Strip redundant brackets surrounding entire form. These may get generated e.g. -- if we use the angle bracket notation with a single word. local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form stripped_form = pt_verb.remove_variant_codes(stripped_form) -- Don't include accelerators if brackets remain in form, as the result will be wrong. -- FIXME: For now, don't include accelerators. We should use the new {{pt-verb form of}} once -- implemented. -- local this_accel = not stripped_form:find("%[%[") and accel or nil local this_accel = nil insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel}) end to_insert = into_table end insert(data.inflections, to_insert) end local skip_pres_if_empty if alternant_multiword_spec.no_pres1_and_sub then insert(data.inflections, {label = "no first-person singular present"}) insert(data.inflections, {label = "no present subjunctive"}) end if alternant_multiword_spec.no_pres_stressed then insert(data.inflections, {label = "no stressed present indicative or subjunctive"}) skip_pres_if_empty = true end if alternant_multiword_spec.only3s then insert(data.inflections, {label = glossary_link("impersonal")}) elseif alternant_multiword_spec.only3sp then insert(data.inflections, {label = "บุรุษที่สามเท่านั้น"}) elseif alternant_multiword_spec.only3p then insert(data.inflections, {label = "บุรุษที่สามพหูพจน์เท่านั้น"}) end local has_vowel_alt if alternant_multiword_spec.vowel_alt then for _, vowel_alt in ipairs(alternant_multiword_spec.vowel_alt) do if vowel_alt ~= "+" and vowel_alt ~= "í" and vowel_alt ~= "ú" then has_vowel_alt = true break end end end do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty) -- We want to include both the pres_1s and pres_3s if there is a vowel alternation in the present singular. But -- we don't want to redundantly include the pres_3s if we already included it. if did_pres_1s and has_vowel_alt then do_verb_form(args.pres3s, args.pres3s_qual, preses_3s, skip_pres_if_empty) end do_verb_form(args.pret, args.pret_qual, prets) do_verb_form(args.part, args.part_qual, parts) do_verb_form(args.short_part, args.short_part_qual, short_parts, "skip if empty") -- Add categories. for _, cat in ipairs(alternant_multiword_spec.categories) do insert(data.categories, cat) end -- 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 #data.user_specified_heads == 0 or ( #data.user_specified_heads == 1 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 } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["รูปปัจจัย"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, }, func = function(args, data, is_suffix) validate_genders(args.g) data.genders = args.g 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 0eosrzqdjg0ismeddjsjlbv0v0fvcgb 5729301 5729300 2026-07-20T05:35:51Z Octahedron80 267 5729301 Scribunto text/plain -- This module contains code for Portuguese headword templates. -- Templates covered are: -- * {{pt-noun}}, {{pt-proper noun}}; -- * {{pt-verb}}; -- * {{pt-adj}}, {{pt-adj-comp}}, {{pt-adj-sup}}; -- * {{pt-det}}; -- * {{pt-pron-adj}}; -- * {{pt-contr-adj}}; -- * {{pt-pp}}; -- * {{pt-cardinal}}; -- * {{pt-adv}}. -- See [[Module:pt-verb]] for Portuguese conjugation templates. local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local m_strutils = require("Module:string utilities") local rfind = m_strutils.find local rmatch = m_strutils.match local rsplit = m_strutils.split local usub = m_strutils.sub local require_when_needed = require("Module:utilities/require when needed") local insert = table.insert local m_table = require("Module:table") local com = require("Module:pt-common") local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local inflection_utilities_module = "Module:inflection utilities" local romut_module = "Module:romance utilities" local pt_verb_module = "Module:pt-verb" local lang = require("Module:languages").getByCode("pt") local langname = --[[lang:getCanonicalName()]] lang:getCategoryName() 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") -- When followed by a hyphen in a hyphenated compound, the hyphen will be included with the prefix when linked. local include_hyphen_prefixes = m_table.listToSet { "ab", "afro", "anarco", "anglo", "ântero", "anti", "auto", "contra", "ex", "franco", "hiper", "infra", "inter", "intra", "macro", "micro", "neo", "pan", "pós", "pré", "pró", "proto", "sobre", "sub", "super", "vice", } ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function track(page) require("Module:debug/track")("pt-headword/" .. page) return true end local list_param = {list = true, disallow_holes = true} local boolean_param = {type = "boolean"} local metaphonic_label = "[[ภาคผนวก:การออกเสียงภาษาโปรตุเกส#เมทาโฟนี|เมทาโฟนี]]" local function make_plural(sg, special) local pl = com.make_plural(sg, special) if not pl then error(("Internal error: Unable to generate default plural of '%s'"):format(sg)) end return pl 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; -- `plpos` is the plural part of speech, used in [[Category:LANGNAME PLPOS with red links in their headword lines]]. -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, plpos, accel, frob) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, frob = frob, check_missing = true, lang = lang, plpos = plpos, } end -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) 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 parargs = frame:getParent().args local params = { ["head"] = list_param, ["id"] = true, ["json"] = boolean_param, ["splithyph"] = boolean_param, ["nolinkhead"] = boolean_param, ["nolink"] = {type = "boolean", alias_of = "nolinkhead"}, ["abbr"] = list_param, ["pagename"] = true, -- for testing } if pos_functions[poscat_th] then for key, val in pairs(pos_functions[poscat_th].params) do params[key] = val end end local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolinkhead then if #heads == 0 then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph, nil, include_hyphen_prefixes) if #heads == 0 then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) heads[i] = head end end end end local data = { lang = lang, pos_category = poscat_th, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, } local is_suffix = false if pagename:find("^%-") and poscat_th ~= "รูปปัจจัย" then 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[poscat_th] then pos_functions[poscat_th].func(args, data, is_suffix) end parse_and_insert_inflection(data, args, "abbr", "abbreviation") if args.json then return require("Module:JSON").toJSON(data) end return require("Module:headword").full_headword(data) end local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture replace -- expression. lemma = lemma:gsub("%%", "%%%%") return (term:gsub("#", lemma)) end local function is_metaphonic(args, lemma) if args.nometa then return false end if args.meta then return true end -- Anything in -oso with a preceding vowel (e.g. [[gostoso]], [[curioso]]) is normally metaphonic. return rfind(lemma, com.V .. ".*oso$") end ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet( {"m", "f", "mf", "mfbysense", "mfequiv", "gneut", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "gneut-p", "n-p", "?", "?-p"} ) local function validate_genders(genders) for _, g in ipairs(genders) do if type(g) == "table" then g = g.spec end if not allowed_genders[g] then error("Unrecognized gender: " .. g) end end end local function do_noun(args, data, pos, is_suffix, is_proper) local is_plurale_tantum = false local has_singular = false if is_suffix then pos = "ปัจจัย" end local plpos = --[[m_en_utilities.pluralize(pos)]] pos validate_genders(args[1]) data.genders = args[1] local saw_m = false local saw_f = false local saw_gneut = false local gender_for_irreg_ending -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if type(g) == "table" then g = g.spec end if g:find("-p$") then is_plurale_tantum = true else has_singular = true if g == "m" or g == "mf" or g == "mfbysense" then saw_m = true end if g == "f" or g == "mf" or g == "mfbysense" then saw_f = true end if g == "gneut" then saw_gneut = true end end end if saw_m and saw_f then gender_for_irreg_ending = "mf" elseif saw_f then gender_for_irreg_ending = "f" else gender_for_irreg_ending = "m" end local lemma = data.pagename local plurals = {} local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, check_missing = true, lang = lang, plpos = plpos, } end if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. pos) end insert(data.inflections, {label = glossary_link("พหูพจน์เท่านั้น")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], splitchar = ",", } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end table.remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" then error(("Unexpected plural code '%s'"):format(mode)) end end if is_plurale_tantum then -- both singular and plural insert(data.inflections, {label = "บางครั้ง" .. glossary_link("พหูพจน์เท่านั้น") .. "ในภาษาย่อย"}) end if mode == "?" then -- Plural is unknown insert(data.categories, langname .. " " .. plpos .. " with unknown or uncertain plurals") elseif mode == "!" then -- Plural is not attested insert(data.inflections, {label = "plural not attested"}) insert(data.categories, langname .. " " .. plpos .. " with unattested plurals") if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural insert(data.categories, plpos .. "นับไม่ได้" .. langname) -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert(data.inflections, {label = "โดยปกติ" .. glossary_link("นับไม่ได้")}) insert(data.categories, plpos .. "นับได้" .. langname) else insert(data.inflections, {label = glossary_link("นับไม่ได้")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural insert(data.inflections, {label = glossary_link("นับได้") .. "และ" .. glossary_link("นับไม่ได้")}) insert(data.categories, plpos .. "นับไม่ได้" .. langname) insert(data.categories, plpos .. "นับได้" .. langname) elseif plurals[1] then -- Countable nouns insert(data.categories, plpos .. "นับได้" .. langname) else -- Uncountable nouns insert(data.categories, plpos .. "นับไม่ได้" .. langname) end end -- Gather plurals, handling requests for default plurals. local has_default_or_hash = false for _, pl in ipairs(plurals) do if pl.term:find("^%+") or pl.term:find("#") then has_default_or_hash = true break end end if has_default_or_hash then for _, pl in ipairs(plurals) do if pl.term == "+" then pl.term = make_plural(lemma) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) pl.term = make_plural(lemma, pl.term) else pl.term = replace_hash_with_lemma(pl.term, lemma) end end end local pl1 = plurals[1] if pl1 and not plurals[2] and pl1.term == lemma then insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้"), q = pl1.q, qq = pl1.qq, l = pl1.l, ll = pl1.ll, refs = pl1.refs }) insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) else insert_noun_inflection(plurals, "พหูพจน์", "p") end if plurals[2] then insert(data.categories, langname .. " " .. plpos .. " with multiple plurals") end end -- Gather masculines/feminines. For each one, generate the corresponding plural. `field` is the name of the field -- containing the masculine or feminine forms (normally "m" or "f"); `inflect` is a function of one or two arguments -- to generate the default masculine or feminine from the lemma (the arguments are the lemma and optionally a -- "special" flag to indicate how to handle multiword lemmas, and the function is normally make_feminine or -- make_masculine from [[Module:pt-common]]); and `default_plurals` is a list into which the corresponding default -- plurals of the gathered or generated masculine or feminine forms are stored. local function handle_mf(field, inflect, default_plurals) local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = inflect(lemma) else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = inflect(lemma, special) end return term end } for _, mf in ipairs(mfs) do local plobj = m_table.shallowCopy(mf) plobj.term = make_plural(mf.term, special) -- Add an accelerator for each masculine/feminine plural whose lemma is the corresponding singular, so that -- the accelerated entry that is generated has a definition that looks like -- # {{plural of|pt|MFSING}} plobj.accel = {form = "p", lemma = mf.term} insert(default_plurals, plobj) end return mfs end local feminine_plurals = {} local feminines = handle_mf("f", com.make_feminine, feminine_plurals) local masculine_plurals = {} local masculines = handle_mf("m", com.make_masculine, masculine_plurals) local function handle_mf_plural(mfplfield, default_plurals, singulars) local mfpl = m_headword_utilities.parse_term_list_with_modifiers { paramname = mfplfield, forms = args[mfplfield], splitchar = ",", } if is_plurale_tantum then return mfpl end local new_mfpls = {} local saw_plus for i, mfpl in ipairs(mfpl) do local accel if #mfpl == #singulars then -- If same number of overriding masculine/feminine plurals as singulars, assume each plural goes with -- the corresponding singular and use each corresponding singular as the lemma in the accelerator. The -- generated entry will have -- # {{plural of|pt|SINGULAR}} -- as the definition. accel = {form = "p", lemma = singulars[i].term} else accel = nil end if mfpl.term == "+" then -- We should never see + twice. If we do, it will lead to problems since we overwrite the values of -- default_plurals the first time around. if saw_plus then error(("Saw + twice when handling %s="):format(mfplfield)) end saw_plus = true if not default_plurals[1] then -- FIXME: Can this happen? Not in corresponding Spanish code and the old Portuguese code tried to -- handle this condition by generating the default plural from the lemma. error("Internal error: Something wrong, no generated default m/f plurals at this stage") end for _, defpl in ipairs(default_plurals) do -- defpl is already a table and has an accel field m_headword_utilities.combine_termobj_qualifiers_labels(defpl, mfpl) insert(new_mfpls, defpl) end elseif mfpl.term:find("^%+") then mfpl.term = require(romut_module).get_special_indicator(mfpl.term) for _, mf in ipairs(singulars) do local mfplobj = m_table.shallowCopy(mfpl) mfplobj.term = make_plural(mf.term, mfpl.term) mfplobj.accel = accel m_headword_utilities.combine_termobj_qualifiers_labels(mfplobj, mf) insert(new_mfpls, mfplobj) end else mfpl.accel = accel mfpl.term = replace_hash_with_lemma(mfpl.term, lemma) insert(new_mfpls, mfpl) end end return new_mfpls end if args.fpl[1] then -- Override any existing feminine plurals. feminine_plurals = handle_mf_plural("fpl", feminine_plurals, feminines) end if args.mpl[1] then -- Override any existing masculine plurals. masculine_plurals = handle_mf_plural("mpl", masculine_plurals, masculines) end local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, plpos, accel) end insert_noun_inflection(feminines, "เพศหญิง", "f") insert_noun_inflection(feminine_plurals, "เพศหญิงพหูพจน์") insert_noun_inflection(masculines, "เพศชาย") insert_noun_inflection(masculine_plurals, "เพศชายพหูพจน์") if is_metaphonic(args, lemma) then insert(data.inflections, {label = metaphonic_label}) insert(data.categories, plpos .. langname .. "ที่มีเมทาโฟนี") end parse_and_insert_noun_inflection("dim", "ตัวบอกความเล็ก") parse_and_insert_noun_inflection("aug", "ตัวบอกความใหญ่") parse_and_insert_noun_inflection("pej", "pejorative") parse_and_insert_noun_inflection("dem", "คำประชานาม") parse_and_insert_noun_inflection("fdem", "คำประชานามหญิง") -- Maybe add category 'Portuguese nouns with irregular gender' (or similar) local irreg_gender_lemma = com.rsub(lemma, " .*", "") -- only look at first word if (rfind(irreg_gender_lemma, "[^ã]o$") and (gender_for_irreg_ending == "f" or gender_for_irreg_ending == "mf")) or (irreg_gender_lemma:find("a$") and (gender_for_irreg_ending == "m" or gender_for_irreg_ending == "mf")) then insert(data.categories, langname .. " " .. plpos .. " with irregular gender") end end local function get_noun_params(is_proper) return { [1] = {list = "g", disallow_holes = true, required = not is_proper, default = "?", type = "genders", flatten = true}, [2] = {list = "pl", disallow_holes = true}, ["m"] = list_param, ["f"] = list_param, ["mpl"] = list_param, ["fpl"] = list_param, ["dim"] = list_param, --diminutive(s) ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) ["dem"] = list_param, --demonym(s) ["fdem"] = list_param, --female demonym(s) ["meta"] = boolean_param, -- metaphonic ["nometa"] = boolean_param, -- explicitly not metaphonic } end pos_functions["คำนาม"] = { params = get_noun_params(), func = function(args, data, is_suffix) do_noun(args, data, "คำนาม", is_suffix) end, } pos_functions["คำวิสามานยนาม"] = { params = get_noun_params("is proper"), func = function(args, data, is_suffix) do_noun(args, data, "คำวิสามานยนาม", is_suffix, "is proper noun") end, } ----------------------------------------------------------------------------------------- -- Pronouns -- ----------------------------------------------------------------------------------------- local function do_pronoun(args, data, pos, is_suffix) if is_suffix then pos = "ปัจจัย" end local plpos = --[[m_en_utilities.pluralize(pos)]] pos if not is_suffix then data.pos_category = plpos end local lemma = data.pagename validate_genders(args[1]) data.genders = args[1] local function do_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, plpos, accel) end do_inflection("m", "เพศชาย") do_inflection("f", "เพศหญิง") do_inflection("sg", "เอกพจน์") do_inflection("pl", "พหูพจน์") do_inflection("mpl", "เพศชายพหูพจน์") do_inflection("fpl", "เพศหญิงพหูพจน์") do_inflection("n", "เพศกลาง") end local function get_pronoun_params() local params = { [1] = {list = "g", disallow_holes = true, type = "genders", flatten = true}, --gender(s) ["m"] = list_param, --masculine form(s) ["f"] = list_param, --feminine form(s) ["sg"] = list_param, --singular form(s) ["pl"] = list_param, --plural form(s) ["mpl"] = list_param, --masculine plural form(s) ["fpl"] = list_param, --feminine plural form(s) ["n"] = list_param, --neuter form(s) } return params end pos_functions["คำสรรพนาม"] = { params = get_pronoun_params(), func = function(args, data, is_suffix) do_pronoun(args, data, "คำสรรพนาม", is_suffix) end, } ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- -- Handle comparatives and superlatives for adjectives and adverbs, including user-specified comparatives and -- superlatives, default-requested comparatives/superlatives using '+', autogenerated comparatives/superlatives, -- and hascomp=. Code is the same for adjectives and adverbs. local function handle_adj_adv_comp(args, data, plpos, is_adv) local lemma = data.pagename local stem if is_adv then stem = com.rsub(lemma, "mente$", "") else stem = lemma end local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, check_missing = true, lang = lang, plpos = plpos, } end local function make_absolute_superlative(special) if is_adv then return com.make_adverbial_absolute_superlative(stem, special) else return com.make_absolute_superlative(stem, special) end end -- Maybe autogenerate default comparative/superlative. local comp, sup if args.comp and args.sup then-- comp= and sup= were given as options to the user -- If no comp, but a non-default sup given, then add the default comparative/superlative. -- This is useful when an absolute superlative is given. comp = m_headword_utilities.parse_term_list_with_modifiers { paramname = "comp", forms = args.comp, splitchar = ",", } sup = m_headword_utilities.parse_term_list_with_modifiers { paramname = "sup", forms = args.sup, splitchar = ",", } local saw_sup_plus = false if not comp[1] and sup[1] then for _, supval in ipairs(sup) do if supval.term == "+" then saw_sup_plus = true end end if not saw_sup_plus then comp = {{term = "+"}} insert(sup, 1, {term = "+"}) end end -- If comp=+, use default comparative 'mais ...', and set a default superlative if unspecified. local saw_comp_plus = false for _, compval in ipairs(comp) do if compval.term == "+" then saw_comp_plus = true compval.term = "[[mais]] [[" .. lemma .. "]]" end end if saw_comp_plus and not sup[1] then sup = {{term = "+"}} end -- If sup=+ (possibly from comp=+), use default superlative 'o mais ...'. Also handle absolute superlatives. for _, supval in ipairs(sup) do if supval.term == "+" then supval.term = "[[o]] [[mais]] [[" .. lemma .. "]]" elseif supval.term == "+abs" then supval.term = make_absolute_superlative() elseif rfind(supval.term, "^%+abs:") then local sp = rmatch(supval.term, "^%+abs:(.*)$") supval.term = make_absolute_superlative(sp) end end end if args.hascomp then if args.hascomp == "both" then insert(data.inflections, {label = "บางครั้ง" .. glossary_link("เปรียบเทียบได้")}) insert(data.categories, plpos .. "เปรียบเทียบได้" .. langname) insert(data.categories, plpos .. "เปรียบเทียบไม่ได้" .. langname) else local hascomp = require("Module:yesno")(args.hascomp) if hascomp == true then insert(data.inflections, {label = glossary_link("เปรียบเทียบได้")}) insert(data.categories, plpos .. "เปรียบเทียบได้" .. langname) elseif hascomp == false then insert(data.inflections, {label = glossary_link("เปรียบเทียบไม่ได้")}) insert(data.categories, plpos .. "เปรียบเทียบไม่ได้" .. langname) else error("Unrecognized value for hascomp=: " .. args.hascomp) end end elseif comp and comp[1] or sup and sup[1] then insert(data.inflections, {label = glossary_link("เปรียบเทียบได้")}) insert(data.categories, plpos .. "เปรียบเทียบได้" .. langname) end insert_inflection(comp, "ขั้นกว่า") insert_inflection(sup, "ขั้นสุด") end local function do_adjective(args, data, pos, is_suffix, is_superlative) local feminines = {} local masculine_plurals = {} local feminine_plurals = {} if is_suffix then pos = "ปัจจัย" end local plpos = --[[m_en_utilities.pluralize(pos)]] pos if not is_suffix then data.pos_category = plpos end if args.sp then local romut = require(romut_module) if not romut.allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(romut.allowed_special_indicators) do insert(indicators, "'" .. indic .. "'") end table.sort(indicators) error("Special inflection indicator beginning can only be " .. mw.text.listToText(indicators) .. ": " .. args.sp) end end local lemma = data.pagename local function fetch_inflections(field) local retval = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", } if not retval[1] then return {{term = "+"}} end return retval end local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, check_missing = true, lang = lang, plpos = plpos, } end if args.short then insert(data.inflections, {label = "[[Appendix:Portuguese verbs#Participles|short participle]]"}) end if args.inv then -- invariable adjective insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")}) insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) if args.sp or args.f[1] or args.pl[1] or args.mpl[1] or args.fpl[1] then error("Can't specify inflections with an invariable " .. pos) end elseif args.fonly then -- feminine-only if args.f[1] then error("Can't specify explicit feminines with feminine-only " .. pos) end if args.pl[1] then error("Can't specify explicit plurals with feminine-only " .. pos .. ", use fpl=") end if args.mpl[1] then error("Can't specify explicit masculine plurals with feminine-only " .. pos) end local argsfpl = fetch_inflections("fpl") for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then fpl.term = make_plural(lemma, args.sp) else fpl.term = replace_hash_with_lemma(fpl.term, lemma) end insert(feminine_plurals, fpl) end insert(data.inflections, {label = "เพศหญิงเท่านั้น"}) insert_inflection(feminine_plurals, "เพศหญิงพหูพจน์", "f|p") else -- Gather feminines. for _, f in ipairs(fetch_inflections("f")) do if f.term == "+" then -- Generate default feminine. f.term = com.make_feminine(lemma, args.sp) else f.term = replace_hash_with_lemma(f.term, lemma) end insert(feminines, f) end local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(feminines[1]) if fem_like_lemma then insert(data.categories, plpos .. "epicene" .. langname) end local mpl_field = "mpl" local fpl_field = "fpl" if args.pl[1] then if args.mpl[1] or args.fpl[1] then error("Can't specify both pl= and mpl=/fpl=") end mpl_field = "pl" fpl_field = "pl" end local argsmpl = fetch_inflections(mpl_field) local argsfpl = fetch_inflections(fpl_field) for _, mpl in ipairs(argsmpl) do if mpl.term == "+" then -- Generate default masculine plural. mpl.term = make_plural(lemma, args.sp) else mpl.term = replace_hash_with_lemma(mpl.term, lemma) end insert(masculine_plurals, mpl) end for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then for _, f in ipairs(feminines) do -- Generate default feminine plural; f is a table. local fplobj = m_table.shallowCopy(fpl) fplobj.term = make_plural(f.term, args.sp) m_headword_utilities.combine_termobj_qualifiers_labels(fplobj, f) insert(feminine_plurals, fplobj) end else fpl.term = replace_hash_with_lemma(fpl.term, lemma) insert(feminine_plurals, fpl) end end local fem_pl_like_masc_pl = masculine_plurals[1] and feminine_plurals[1] and m_table.deepEquals(masculine_plurals, feminine_plurals) local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(masculine_plurals[1]) if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then -- actually invariable insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")}) insert(data.categories, plpos .. "ผันรูปไม่ได้" .. langname) else -- Make sure there are feminines given and not same as lemma. if not fem_like_lemma then insert_inflection(feminines, "เพศหญิง", "f|s") elseif args.gneut then data.genders = {"gneut"} else data.genders = {"mf"} end if fem_pl_like_masc_pl then if args.gneut then insert_inflection(masculine_plurals, "พหูพจน์", "p") else -- This is how the Spanish module works. -- insert_inflection(masculine_plurals, "masculine and feminine plural", "p") insert_inflection(masculine_plurals, "พหูพจน์", "p") end else insert_inflection(masculine_plurals, "เพศชายพหูพจน์", "m|p") insert_inflection(feminine_plurals, "เพศหญิงพหูพจน์", "f|p") end end end local function parse_and_insert_adj_inflection(field, label, accel, frob) parse_and_insert_inflection(data, args, field, label, plpos, accel, frob) end parse_and_insert_adj_inflection("n", "เพศกลาง") handle_adj_adv_comp(args, data, plpos, false) parse_and_insert_adj_inflection("dim", "ตัวบอกความเล็ก", nil, function(term) if term == "+" then term = com.make_diminutive(lemma) elseif term:find("^%+") then term = require(romut_module).get_special_indicator(term) term = com.make_diminutive(lemma, term) end return term end) parse_and_insert_adj_inflection("aug", "ตัวบอกความใหญ่", nil, function(term) if term == "+" then term = com.make_augmentative(lemma) elseif term:find("^%+") then term = require(romut_module).get_special_indicator(term) term = com.make_augmentative(lemma, term) end return term end) if is_metaphonic(args, lemma) then insert(data.inflections, {label = metaphonic_label}) insert(data.categories, plpos .. langname .. "ที่มีเมทาโฟนี") end if args.irreg and is_superlative then insert(data.categories, langname .. " irregular superlative " .. plpos) end end local function get_adjective_params(adjtype) local params = { ["inv"] = boolean_param, --invariable ["sp"] = true, -- special indicator: "first", "first-last", etc. ["f"] = list_param, --feminine form(s) ["pl"] = list_param, --plural override(s) ["mpl"] = list_param, --masculine plural override(s) ["fpl"] = list_param, --feminine plural override(s) ["meta"] = boolean_param, -- metaphonic ["nometa"] = boolean_param, -- explicitly not metaphonic } if adjtype == "base" then params["comp"] = list_param --comparative(s) params["sup"] = list_param --superlative(s) params["dim"] = list_param --diminutive(s) params["aug"] = list_param --augmentative(s) params["fonly"] = boolean_param -- feminine only params["gneut"] = boolean_param -- gender-neutral adjective e.g. [[latine]] (FIXME: do these exist in Portuguese?) params["hascomp"] = true -- has comparative end if adjtype == "part" then params["short"] = boolean_param -- short participle end if adjtype == "sup" then params["irreg"] = boolean_param end if adjtype == "pron" or adjtype == "contr" then params["n"] = list_param --neuter form(s) end return params end pos_functions["คำคุณศัพท์"] = { params = get_adjective_params("base"), func = function(args, data, is_suffix) do_adjective(args, data, "คำคุณศัพท์", is_suffix) end, } pos_functions["คำคุณศัพท์ขั้นกว่า"] = { params = get_adjective_params("comp"), func = function(args, data, is_suffix) do_adjective(args, data, "คำคุณศัพท์", is_suffix) end, } pos_functions["คำคุณศัพท์ขั้นสุด"] = { params = get_adjective_params("sup"), func = function(args, data, is_suffix) do_adjective(args, data, "คำคุณศัพท์", is_suffix, "is superlative") end, } pos_functions["รูปกริยาขยายอดีตกาล"] = { params = get_adjective_params("part"), func = function(args, data, is_suffix) do_adjective(args, data, "รูปกริยาขยาย", is_suffix) data.pos_category = "รูปกริยาขยายอดีตกาล" end, } pos_functions["ตัวกำหนด"] = { params = get_adjective_params("det"), func = function(args, data, is_suffix) do_adjective(args, data, "ตัวกำหนด", is_suffix) end, } pos_functions["คำสรรพนามคล้ายคุณศัพท์"] = { params = get_adjective_params("pron"), func = function(args, data, is_suffix) do_adjective(args, data, "คำสรรพนาม", is_suffix) end, } pos_functions["รูปหดย่อคล้ายคุณศัพท์"] = { params = get_adjective_params("contr"), func = function(args, data, is_suffix) do_adjective(args, data, "รูปหดย่อ", is_suffix) end, } ----------------------------------------------------------------------------------------- -- Adverbs -- ----------------------------------------------------------------------------------------- local function do_adverb(args, data, pos, is_suffix) if is_suffix then pos = "ปัจจัย" end local plpos = --[[m_en_utilities.pluralize(pos)]] pos if not is_suffix then data.pos_category = plpos end handle_adj_adv_comp(args, data, plpos, "is adv") end local function get_adverb_params(advtype) local params = {} if advtype == "base" then params["comp"] = list_param --comparative(s) params["sup"] = list_param --superlative(s) params["hascomp"] = true -- has comparative end return params end pos_functions["คำกริยาวิเศษณ์"] = { params = get_adverb_params("base"), func = function(args, data, is_suffix) do_adverb(args, data, "คำกริยาวิเศษณ์", is_suffix) end, } pos_functions["คำกริยาวิเศษณ์ขั้นกว่า"] = { params = get_adverb_params("comp"), func = function(args, data, is_suffix) do_adverb(args, data, "คำกริยาวิเศษณ์", is_suffix) end, } pos_functions["คำกริยาวิเศษณ์ขั้นสุด"] = { params = get_adverb_params("sup"), func = function(args, data, is_suffix) do_adverb(args, data, "คำกริยาวิเศษณ์", is_suffix) end, } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["คำกริยา"] = { params = { [1] = true, ["pres"] = list_param, --present ["pres_qual"] = {list = "pres\1_qual", allow_holes = true}, ["pres3s"] = list_param, --third-singular present ["pres3s_qual"] = {list = "pres3s\1_qual", allow_holes = true}, ["pret"] = list_param, --preterite ["pret_qual"] = {list = "pret\1_qual", allow_holes = true}, ["part"] = list_param, --participle ["part_qual"] = {list = "part\1_qual", allow_holes = true}, ["short_part"] = list_param, --short participle ["short_part_qual"] = {list = "short_part\1_qual", allow_holes = true}, ["noautolinktext"] = boolean_param, ["noautolinkverb"] = boolean_param, ["attn"] = boolean_param, }, func = function(args, data, frame) local preses, preses_3s, prets, parts, short_parts if args.attn then insert(data.categories, "Requests for attention concerning " .. langname) return end local pt_verb = require(pt_verb_module) local alternant_multiword_spec = pt_verb.do_generate_forms(args, "pt-verb", data.heads[1]) local specforms = alternant_multiword_spec.forms local function slot_exists(slot) return specforms[slot] and #specforms[slot] > 0 end local function do_finite(slot_tense, label_tense) -- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p -- (only3p verbs); but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. -- [[empedernir]]). local has_1s = slot_exists(slot_tense .. "_1s") local has_3s = slot_exists(slot_tense .. "_3s") local has_3p = slot_exists(slot_tense .. "_3p") if has_1s or (not has_3s and not has_3p) then return { slot = slot_tense .. "_1s", label = ("บุรุษที่หนึ่งเอกพจน์%s"):format(label_tense), }, true elseif has_3s then return { slot = slot_tense .. "_3s", label = ("บุรุษที่สามเอกพจน์%s"):format(label_tense), }, false else return { slot = slot_tense .. "_3p", label = ("บุรุษที่สามพหูพจน์%s"):format(label_tense), }, false end end local did_pres_1s preses, did_pres_1s = do_finite("pres", "ปัจจุบันกาล") preses_3s = { slot = "pres_3s", label = "บุรุษที่สามเอกพจน์ปัจจุบันกาล", } prets = do_finite("pret", "อดีตกาลสิ้นสุด") parts = { slot = "pp_ms", label = "รูปกริยาขยายอดีตกาล", } short_parts = { slot = "short_pp_ms", label = "รูปกริยาขยายอดีตกาลสั้น", } if args.pres[1] or args.pres3s[1] or args.pret[1] or args.part[1] or args.short_part[1] then track("verb-old-multiarg") end local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Internal error: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty) local forms local to_insert if #args == 0 then forms = specforms[slot_desc.slot] if not forms or #forms == 0 then if skip_if_empty then return end forms = {{form = "-"}} end elseif #args == 1 and args[1] == "-" then forms = {{form = "-"}} else forms = {} for i, arg in ipairs(args) do local qual = qualifiers[i] if qual then -- FIXME: It's annoying we have to add brackets and strip them out later. The inflection -- code adds all footnotes with brackets around them; we should change this. qual = {"[" .. qual .. "]"} end local form = arg if not args.noautolinkverb then -- [[Module:inflection utilities]] already loaded by [[Module:pt-verb]] form = require(inflection_utilities_module).add_links(form) end insert(forms, {form = form, footnotes = qual}) end end if forms[1].form == "-" then to_insert = {label = "no " .. slot_desc.label} else local into_table = {label = slot_desc.label} for _, form in ipairs(forms) do local qualifiers = strip_brackets(form.footnotes) -- Strip redundant brackets surrounding entire form. These may get generated e.g. -- if we use the angle bracket notation with a single word. local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form stripped_form = pt_verb.remove_variant_codes(stripped_form) -- Don't include accelerators if brackets remain in form, as the result will be wrong. -- FIXME: For now, don't include accelerators. We should use the new {{pt-verb form of}} once -- implemented. -- local this_accel = not stripped_form:find("%[%[") and accel or nil local this_accel = nil insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel}) end to_insert = into_table end insert(data.inflections, to_insert) end local skip_pres_if_empty if alternant_multiword_spec.no_pres1_and_sub then insert(data.inflections, {label = "no first-person singular present"}) insert(data.inflections, {label = "no present subjunctive"}) end if alternant_multiword_spec.no_pres_stressed then insert(data.inflections, {label = "no stressed present indicative or subjunctive"}) skip_pres_if_empty = true end if alternant_multiword_spec.only3s then insert(data.inflections, {label = glossary_link("impersonal")}) elseif alternant_multiword_spec.only3sp then insert(data.inflections, {label = "บุรุษที่สามเท่านั้น"}) elseif alternant_multiword_spec.only3p then insert(data.inflections, {label = "บุรุษที่สามพหูพจน์เท่านั้น"}) end local has_vowel_alt if alternant_multiword_spec.vowel_alt then for _, vowel_alt in ipairs(alternant_multiword_spec.vowel_alt) do if vowel_alt ~= "+" and vowel_alt ~= "í" and vowel_alt ~= "ú" then has_vowel_alt = true break end end end do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty) -- We want to include both the pres_1s and pres_3s if there is a vowel alternation in the present singular. But -- we don't want to redundantly include the pres_3s if we already included it. if did_pres_1s and has_vowel_alt then do_verb_form(args.pres3s, args.pres3s_qual, preses_3s, skip_pres_if_empty) end do_verb_form(args.pret, args.pret_qual, prets) do_verb_form(args.part, args.part_qual, parts) do_verb_form(args.short_part, args.short_part_qual, short_parts, "skip if empty") -- Add categories. for _, cat in ipairs(alternant_multiword_spec.categories) do insert(data.categories, cat) end -- 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 #data.user_specified_heads == 0 or ( #data.user_specified_heads == 1 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 } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["รูปปัจจัย"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, }, func = function(args, data, is_suffix) validate_genders(args.g) data.genders = args.g 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 9cxskedvn8p7iuq5bfcnx2s5mk47fnp มอดูล:fr-conj 828 238530 5729453 5688354 2026-07-20T10:07:00Z Octahedron80 267 5729453 Scribunto text/plain local export = {} local m_links = require("Module:links") local lang = require("Module:languages").getByCode("fr") -- defined below local format_links, categorize --entry point function export.frconj(frame) --are we directly embedding through Template:fr-conj or calling the module? local args = {} if frame.args["direct"] == "yes" then args = frame:getParent().args else args = frame.args end --create the forms local data = {forms = {}, categories = {}, en = false, y = false, yen = false, l = false, le = false, la = false, les = false, l_en = false, l_y = false, l_yen = false, lesen = false, lesy = false, lesyen = false, refl = false, reflen = false, refll = false, reflle = false, reflla = false, reflles = false, reflly = false, refllesy = false, refly = false, reflyen = false, aux = ""} data.aux = args["aux"] if not (data.aux == "avoir" or data.aux == "être") then data.aux = "avoir ''or'' être" end if (args["inf"] == nil or args["inf"] == "" or args["inf"] == mw.loadData("Module:headword/data").pagename) then data.forms.inf_nolink = mw.loadData("Module:headword/data").pagename else data.forms.inf_nolink = format_links(args["inf"]) end data.forms.pp = format_links(args["pp"]) data.forms.ppr = format_links(args["ppr"]) if (args["pp"] == "—") then data.forms.pp_nolink = "—" elseif (args["pp"] == nil or mw.loadData("Module:headword/data").pagename) then data.forms.pp_nolink = mw.loadData("Module:headword/data").pagename else data.forms.pp_nolink = format_links(args["pp"]) end if (args["ppr"] == "—") then data.forms.ppr_nolink = "—" elseif (args["ppr"] == nil or mw.loadData("Module:headword/data").pagename) then data.forms.ppr_nolink = mw.loadData("Module:headword/data").pagename else data.forms.ppr_nolink = format_links(args["ppr"]) end local form_params = { "ind.p.1s", "ind.p.2s", "ind.p.3s", "ind.p.1p", "ind.p.2p", "ind.p.3p", "ind.i.1s", "ind.i.2s", "ind.i.3s", "ind.i.1p", "ind.i.2p", "ind.i.3p", "ind.ps.1s", "ind.ps.2s", "ind.ps.3s", "ind.ps.1p", "ind.ps.2p", "ind.ps.3p", "ind.f.1s", "ind.f.2s", "ind.f.3s", "ind.f.1p", "ind.f.2p", "ind.f.3p", "cond.p.1s", "cond.p.2s", "cond.p.3s", "cond.p.1p", "cond.p.2p", "cond.p.3p", "sub.p.1s", "sub.p.2s", "sub.p.3s", "sub.p.1p", "sub.p.2p", "sub.p.3p", "sub.pa.1s", "sub.pa.2s", "sub.pa.3s", "sub.pa.1p", "sub.pa.2p", "sub.pa.3p", "imp.p.2s", "imp.p.1p", "imp.p.2p", } for _, form in ipairs(form_params) do local key = form:gsub("%.", "_") data.forms[key] = format_links(args[form]) local alt = form .. ".alt" local alt_arg = args[alt] if not (alt_arg == nil or alt_arg == "" or alt_arg == "—") then data.forms[key] = data.forms[key] .. " <i>or</i> " .. format_links(alt_arg) end end --a few ugly hacks data.forms.ger = args["ger.override"] data.forms.inf_comp = args["inf.override"] data.forms.ger_comp = args["ger.comp.override"] --finish up if mw.title.getCurrentTitle().nsText == "" then return export.make_table(data) .. categorize(args,data) else return export.make_table(data) end end function format_links(link) if (link == nil or link == "" or link == "—") then return "—" else return m_links.full_link({lang = lang, term = link}) end end function categorize(args, data) output = "" if args.group == "1" or args.group == "1st" or args.group == "first" then output = output .. "[[Category:คำกริยากลุ่ม 1 ภาษาฝรั่งเศส]]" elseif args.group == "2" or args.group == "2st" or args.group == "second" then output = output .. "[[Category:คำกริยากลุ่ม 2 ภาษาฝรั่งเศส]]" elseif args.group == "3" or args.group == "3rd" or args.group == "third" then output = output .. "[[Category:คำกริยากลุ่ม 3 ภาษาฝรั่งเศส]]" end if data.aux == "être" then output = output .. "[[Category:คำกริยาภาษาฝรั่งเศสที่ใช้คำกริยาช่วย être]]" elseif data.aux == "avoir or être" then output = output .. "[[Category:คำกริยาภาษาฝรั่งเศสที่ใช้คำกริยาช่วย avoir หรือ être]]" end return output end --split from Module:fr-verb/core function export.make_table(data) local aux_gerund = "" if data.aux == "avoir" then aux_gerund = "[[ayant]]" elseif data.aux == "[[s']][[être]]" then aux_gerund = "[[s']][[étant]]" elseif data.aux == "s'en être" then aux_gerund = "[[s']][[en]] [[étant]]" elseif data.aux == "s'y être" then aux_gerund = "[[s']][[y]] [[étant]]" elseif data.aux == "s'y en être" then aux_gerund = "[[s']][[y]] [[en]] [[étant]]" elseif data.aux == "se l'être" then aux_gerund = "[[se]] [[l']][[étant]]" elseif data.aux == "se les être" then aux_gerund = "[[se]] [[les]] [[étant]]" elseif data.aux == "l'en avoir" then aux_gerund = "[[l']][[en]] [[ayant]]" elseif data.aux == "l'y en avoir" then aux_gerund = "[[l']][[y]] [[en]] [[ayant]]" elseif data.aux == "les en avoir" then aux_gerund = "[[les]] [[en]] [[ayant]]" elseif data.aux == "les y en avoir" then aux_gerund = "[[les]] [[y]] [[en]] [[ayant]]" elseif data.aux == "se les y être" then aux_gerund = "[[se]] [[les]] [[y]] [[étant]]" elseif data.aux == "se l'y être" then aux_gerund = "[[se]] [[l']][[y]] [[étant]]" elseif data.aux == "l'avoir" then aux_gerund = "[[l]]'[[ayant]]" elseif data.aux == "l'être" then aux_gerund = "[[l]]'[[étant]]" elseif data.aux == "l'avoir ''or'' être" then aux_gerund = "[[l]]'[[ayant]] ''or'' [[étant]]" elseif data.aux == "l'y avoir" then aux_gerund = "[[l]]'[[y]] [[ayant]]" elseif data.aux == "l'y être" then aux_gerund = "[[l]]'[[y]] [[étant]]" elseif data.aux == "l'y avoir ''or'' être" then aux_gerund = "[[l]]'[[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "les avoir" then aux_gerund = "[[les]] [[ayant]]" elseif data.aux == "les être" then aux_gerund = "[[les]] [[étant]]" elseif data.aux == "les avoir ''or'' être" then aux_gerund = "[[les]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "les y avoir" then aux_gerund = "[[les]] [[y]] [[ayant]]" elseif data.aux == "les y être" then aux_gerund = "[[les]] [[y]] [[étant]]" elseif data.aux == "les y avoir ''or'' être" then aux_gerund = "[[les]] [[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "y avoir" then aux_gerund = "[[y]] [[ayant]]" elseif data.aux == "y être" then aux_gerund = "[[y]] [[étant]]" elseif data.aux == "y avoir ''or'' être" then aux_gerund = "[[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "y en avoir" then aux_gerund = "[[y]] [[en]] [[ayant]]" elseif data.aux == "y en être" then aux_gerund = "[[y]] [[en]] [[étant]]" elseif data.aux == "y en avoir ''or'' être" then aux_gerund = "[[y]] [[en]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "en avoir" then aux_gerund = "[[en]] [[ayant]]" elseif data.aux == "en être" then aux_gerund = "[[en]] [[étant]]" elseif data.aux == "en avoir ''or'' être" then aux_gerund = "[[en] [[ayant]] ''or'' [[étant]]" elseif data.aux == "être" then aux_gerund = "[[étant]]" else aux_gerund = "[[ayant]] <i>or</i> [[étant]]" end local result = {} local inv = data.forms.pp_nolink local inv_sub = data.forms.pp_nolink local inversion_note = "" local inversion_sub_note = "" local replacement_note = "<sup>2</sup>" --Until someone implements a better solution if inv == "aimé" or inv == "chanté" or inv == "dansé" or inv == "dussé" or inv == "-é" or inv == "estimé" or inv == "eussé" or inv == "fussé" or inv == "mangé" or inv == "opiné" or inv == "parlé" or inv == "pensé" or inv == "pu" or inv == "trouvé" then inversion_note = "<sup>2</sup>" inversion_sub_note = "<sup>2</sup>" replacement_note = "<sup>3</sup>" if inv == "pu" then inv = "puis" inv_sub = "puissé" inversion_sub_note = "<sup>3</sup>" replacement_note = "<sup>4</sup>" end end -- Template parameter syntax refers to the corresponding item in the data.forms table: -- {{{inf_nolink}}} -> data.forms.inf_nolink if data.notes then table.insert(result, data.notes .. '\n') end table.insert(result, [=[ <div class="NavFrame"> <div class="NavHead" align=center>การผันรูปของ ''{{{inf_nolink}}}'' <span style="font-size:90%;">(ดูเพิ่ม [[ภาคผนวก:คำกริยาภาษาฝรั่งเศส]])</span></div> <div class="NavContent" align=left> {| class="roa-inflection-table" |- ! rowspan="2" class="roa-nonfinite-header" | <span title="infinitif">รูปกริยากลาง</span> ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลสามัญ</small> | {{{inf_nolink}}} |- ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลประสม</small> ]=]) if data.forms.inf_comp == "" then table.insert(result, '! colspan="6" | ' ..data.forms.inf_comp.. ' \n') elseif data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! rowspan="2" class="roa-nonfinite-header" | <span title="participe présent">รูปกริยาขยายปัจจุบันกาล</span> หรือ <span title="">รูปกริยาเป็นนาม</span><sup>1</sup> ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลสามัญ</small> | {{{ppr}}} |- ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลประสม</small> ]=]) if data.forms.ger_comp == "" then table.insert(result, '! colspan="6" class="roa-compound-row" | ' ..data.forms.ger_comp.. '\n') elseif data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | <i>' .. aux_gerund .. '</i> + รูปกริยาขยายอดีตกาล \n') end table.insert(result, [=[ |- ! colspan="2" class="roa-nonfinite-header" | <span title="participe passé">รูปกริยาขยายอดีตกาล</span> | {{{pp}}} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม |- ! class="roa-indicative-left-rail" colspan="2" | <span title="indicatif">มาลาบอกเล่า</span> ! class="roa-indicative-left-rail" | je (j’) ! class="roa-indicative-left-rail" | tu ! class="roa-indicative-left-rail" | il, elle, on ! class="roa-indicative-left-rail" | nous ! class="roa-indicative-left-rail" | vous ! class="roa-indicative-left-rail" | ils, elles |- ! rowspan="5" class="roa-indicative-left-rail" | <small>(กาลสามัญ)</small> ! class="roa-indicative-left-rail" style="height:3em;" | <span title="présent">ปัจจุบันกาล</span> | {{{ind_p_1s}}}]=] .. inversion_note .. [=[ | {{{ind_p_2s}}} | {{{ind_p_3s}}} | {{{ind_p_1p}}} | {{{ind_p_2p}}} | {{{ind_p_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imparfait">ไม่สมบูรณ์</span> | {{{ind_i_1s}}} | {{{ind_i_2s}}} | {{{ind_i_3s}}} | {{{ind_i_1p}}} | {{{ind_i_2p}}} | {{{ind_i_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé simple">past historic</span>]=] .. replacement_note .. [=[ | {{{ind_ps_1s}}} | {{{ind_ps_2s}}} | {{{ind_ps_3s}}} | {{{ind_ps_1p}}} | {{{ind_ps_2p}}} | {{{ind_ps_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur simple">อนาคตกาล</span> | {{{ind_f_1s}}} | {{{ind_f_2s}}} | {{{ind_f_3s}}} | {{{ind_f_1p}}} | {{{ind_f_2p}}} | {{{ind_f_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel présent">มาลาเงื่อนไข</span> | {{{cond_p_1s}}} | {{{cond_p_2s}}} | {{{cond_p_3s}}} | {{{cond_p_1p}}} | {{{cond_p_2p}}} | {{{cond_p_3p}}} |- ! rowspan="5" class="roa-indicative-left-rail" | <small>(กาลประสม)</small> ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé composé">ปัจจุบันกาลสมบูรณ์</span> ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | present indicative of <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="plus-que-parfait">pluperfect</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | imperfect indicative of <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé antérieur">past anterior</span>' .. replacement_note .. '\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | past historic of <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur antérieur">future perfect</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | future of <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel passé">conditional perfect</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | conditional of <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! class="roa-subjunctive-left-rail" colspan="2" | <span title="subjonctif">มาลาสมมุติ</span> ! class="roa-subjunctive-left-rail" | que je (j’) ! class="roa-subjunctive-left-rail" | que tu ! class="roa-subjunctive-left-rail" | qu’il, qu’elle ! class="roa-subjunctive-left-rail" | que nous ! class="roa-subjunctive-left-rail" | que vous ! class="roa-subjunctive-left-rail" | qu’ils, qu’elles |- ! rowspan="2" class="roa-subjunctive-left-rail" | <small>(กาลสามัญ)</small> ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif présent">ปัจจุบันกาล</span> | {{{sub_p_1s}}}]=] .. inversion_sub_note .. [=[ | {{{sub_p_2s}}} | {{{sub_p_3s}}} | {{{sub_p_1p}}} | {{{sub_p_2p}}} | {{{sub_p_3p}}} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="subjonctif imparfait">ไม่สมบูรณ์</span>]=] .. replacement_note .. [=[ | {{{sub_pa_1s}}} | {{{sub_pa_2s}}} | {{{sub_pa_3s}}} | {{{sub_pa_1p}}} | {{{sub_pa_2p}}} | {{{sub_pa_3p}}} |- ! rowspan="2" class="roa-subjunctive-left-rail" | <small>(กาลประสม)</small> ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif passé">อดีตกาล</span> ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | present subjunctive of <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif plus-que-parfait">pluperfect</span>' .. replacement_note .. '\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | imperfect subjunctive of <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! colspan="2" class="roa-imperative-left-rail" | <span title="impératif">มาลาสั่ง</span> ! class="roa-imperative-left-rail" | – ! class="roa-imperative-left-rail" | <s>tu</s> ! class="roa-imperative-left-rail" | – ! class="roa-imperative-left-rail" | <s>nous</s> ! class="roa-imperative-left-rail" | <s>vous</s> ! class="roa-imperative-left-rail" | – |- ! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">กาลสามัญ</span> | — | {{{imp_p_2s}}} | — | {{{imp_p_1p}}} | {{{imp_p_2p}}} | — |- ! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">กาลประสม</span> | — ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | simple imperative of <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ | — ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | simple imperative of <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | simple imperative of <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ | — |- | colspan="8" |<sup>1</sup> The French gerund is usable only with the preposition <i>[[en]]</i>. |- ]=]) if inversion_note ~= "" then table.insert(result, [=[ | colspan="8" |<sup>2</sup> <i>[[]=] .. inv .. [=[]]</i> when inverted. |- ]=]) end if inv ~= inv_sub then table.insert(result, [=[ | colspan="8" |<sup>3</sup> <i>[[]=] .. inv_sub .. [=[]]</i> when inverted. |- ]=]) end table.insert(result, [=[ | colspan="8" |]=] .. replacement_note .. [=[ In less formal writing or speech, these tenses may be found to have been replaced in the following way: : past historic → present perfect : past anterior → pluperfect : imperfect subjunctive → present subjunctive : pluperfect subjunctive → past subjunctive (Christopher Kendris [1995], <i>Master the Basics: French</i>, pp. [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA77 77], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA78 78], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA79 79], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA81 81]). |} </div> </div> ]=]) --[[ setmetatable(data.forms, { __index = function(t, k) mw.log('No key for ' .. k) end }) --]] return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. string.gsub(table.concat(result), "{{{([^}]+)}}}", function(code) return data.forms[code] end) end return export l3fe18uzs74vbj9wixckdxch50iop89 5729454 5729453 2026-07-20T10:11:25Z Octahedron80 267 5729454 Scribunto text/plain local export = {} local m_links = require("Module:links") local lang = require("Module:languages").getByCode("fr") -- defined below local format_links, categorize --entry point function export.frconj(frame) --are we directly embedding through Template:fr-conj or calling the module? local args = {} if frame.args["direct"] == "yes" then args = frame:getParent().args else args = frame.args end --create the forms local data = {forms = {}, categories = {}, en = false, y = false, yen = false, l = false, le = false, la = false, les = false, l_en = false, l_y = false, l_yen = false, lesen = false, lesy = false, lesyen = false, refl = false, reflen = false, refll = false, reflle = false, reflla = false, reflles = false, reflly = false, refllesy = false, refly = false, reflyen = false, aux = ""} data.aux = args["aux"] if not (data.aux == "avoir" or data.aux == "être") then data.aux = "avoir ''or'' être" end if (args["inf"] == nil or args["inf"] == "" or args["inf"] == mw.loadData("Module:headword/data").pagename) then data.forms.inf_nolink = mw.loadData("Module:headword/data").pagename else data.forms.inf_nolink = format_links(args["inf"]) end data.forms.pp = format_links(args["pp"]) data.forms.ppr = format_links(args["ppr"]) if (args["pp"] == "—") then data.forms.pp_nolink = "—" elseif (args["pp"] == nil or mw.loadData("Module:headword/data").pagename) then data.forms.pp_nolink = mw.loadData("Module:headword/data").pagename else data.forms.pp_nolink = format_links(args["pp"]) end if (args["ppr"] == "—") then data.forms.ppr_nolink = "—" elseif (args["ppr"] == nil or mw.loadData("Module:headword/data").pagename) then data.forms.ppr_nolink = mw.loadData("Module:headword/data").pagename else data.forms.ppr_nolink = format_links(args["ppr"]) end local form_params = { "ind.p.1s", "ind.p.2s", "ind.p.3s", "ind.p.1p", "ind.p.2p", "ind.p.3p", "ind.i.1s", "ind.i.2s", "ind.i.3s", "ind.i.1p", "ind.i.2p", "ind.i.3p", "ind.ps.1s", "ind.ps.2s", "ind.ps.3s", "ind.ps.1p", "ind.ps.2p", "ind.ps.3p", "ind.f.1s", "ind.f.2s", "ind.f.3s", "ind.f.1p", "ind.f.2p", "ind.f.3p", "cond.p.1s", "cond.p.2s", "cond.p.3s", "cond.p.1p", "cond.p.2p", "cond.p.3p", "sub.p.1s", "sub.p.2s", "sub.p.3s", "sub.p.1p", "sub.p.2p", "sub.p.3p", "sub.pa.1s", "sub.pa.2s", "sub.pa.3s", "sub.pa.1p", "sub.pa.2p", "sub.pa.3p", "imp.p.2s", "imp.p.1p", "imp.p.2p", } for _, form in ipairs(form_params) do local key = form:gsub("%.", "_") data.forms[key] = format_links(args[form]) local alt = form .. ".alt" local alt_arg = args[alt] if not (alt_arg == nil or alt_arg == "" or alt_arg == "—") then data.forms[key] = data.forms[key] .. " <i>or</i> " .. format_links(alt_arg) end end --a few ugly hacks data.forms.ger = args["ger.override"] data.forms.inf_comp = args["inf.override"] data.forms.ger_comp = args["ger.comp.override"] --finish up if mw.title.getCurrentTitle().nsText == "" then return export.make_table(data) .. categorize(args,data) else return export.make_table(data) end end function format_links(link) if (link == nil or link == "" or link == "—") then return "—" else return m_links.full_link({lang = lang, term = link}) end end function categorize(args, data) output = "" if args.group == "1" or args.group == "1st" or args.group == "first" then output = output .. "[[Category:คำกริยากลุ่ม 1 ภาษาฝรั่งเศส]]" elseif args.group == "2" or args.group == "2st" or args.group == "second" then output = output .. "[[Category:คำกริยากลุ่ม 2 ภาษาฝรั่งเศส]]" elseif args.group == "3" or args.group == "3rd" or args.group == "third" then output = output .. "[[Category:คำกริยากลุ่ม 3 ภาษาฝรั่งเศส]]" end if data.aux == "être" then output = output .. "[[Category:คำกริยาภาษาฝรั่งเศสที่ใช้คำกริยาช่วย être]]" elseif data.aux == "avoir or être" then output = output .. "[[Category:คำกริยาภาษาฝรั่งเศสที่ใช้คำกริยาช่วย avoir หรือ être]]" end return output end --split from Module:fr-verb/core function export.make_table(data) local aux_gerund = "" if data.aux == "avoir" then aux_gerund = "[[ayant]]" elseif data.aux == "[[s']][[être]]" then aux_gerund = "[[s']][[étant]]" elseif data.aux == "s'en être" then aux_gerund = "[[s']][[en]] [[étant]]" elseif data.aux == "s'y être" then aux_gerund = "[[s']][[y]] [[étant]]" elseif data.aux == "s'y en être" then aux_gerund = "[[s']][[y]] [[en]] [[étant]]" elseif data.aux == "se l'être" then aux_gerund = "[[se]] [[l']][[étant]]" elseif data.aux == "se les être" then aux_gerund = "[[se]] [[les]] [[étant]]" elseif data.aux == "l'en avoir" then aux_gerund = "[[l']][[en]] [[ayant]]" elseif data.aux == "l'y en avoir" then aux_gerund = "[[l']][[y]] [[en]] [[ayant]]" elseif data.aux == "les en avoir" then aux_gerund = "[[les]] [[en]] [[ayant]]" elseif data.aux == "les y en avoir" then aux_gerund = "[[les]] [[y]] [[en]] [[ayant]]" elseif data.aux == "se les y être" then aux_gerund = "[[se]] [[les]] [[y]] [[étant]]" elseif data.aux == "se l'y être" then aux_gerund = "[[se]] [[l']][[y]] [[étant]]" elseif data.aux == "l'avoir" then aux_gerund = "[[l]]'[[ayant]]" elseif data.aux == "l'être" then aux_gerund = "[[l]]'[[étant]]" elseif data.aux == "l'avoir ''or'' être" then aux_gerund = "[[l]]'[[ayant]] ''or'' [[étant]]" elseif data.aux == "l'y avoir" then aux_gerund = "[[l]]'[[y]] [[ayant]]" elseif data.aux == "l'y être" then aux_gerund = "[[l]]'[[y]] [[étant]]" elseif data.aux == "l'y avoir ''or'' être" then aux_gerund = "[[l]]'[[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "les avoir" then aux_gerund = "[[les]] [[ayant]]" elseif data.aux == "les être" then aux_gerund = "[[les]] [[étant]]" elseif data.aux == "les avoir ''or'' être" then aux_gerund = "[[les]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "les y avoir" then aux_gerund = "[[les]] [[y]] [[ayant]]" elseif data.aux == "les y être" then aux_gerund = "[[les]] [[y]] [[étant]]" elseif data.aux == "les y avoir ''or'' être" then aux_gerund = "[[les]] [[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "y avoir" then aux_gerund = "[[y]] [[ayant]]" elseif data.aux == "y être" then aux_gerund = "[[y]] [[étant]]" elseif data.aux == "y avoir ''or'' être" then aux_gerund = "[[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "y en avoir" then aux_gerund = "[[y]] [[en]] [[ayant]]" elseif data.aux == "y en être" then aux_gerund = "[[y]] [[en]] [[étant]]" elseif data.aux == "y en avoir ''or'' être" then aux_gerund = "[[y]] [[en]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "en avoir" then aux_gerund = "[[en]] [[ayant]]" elseif data.aux == "en être" then aux_gerund = "[[en]] [[étant]]" elseif data.aux == "en avoir ''or'' être" then aux_gerund = "[[en] [[ayant]] ''or'' [[étant]]" elseif data.aux == "être" then aux_gerund = "[[étant]]" else aux_gerund = "[[ayant]] <i>or</i> [[étant]]" end local result = {} local inv = data.forms.pp_nolink local inv_sub = data.forms.pp_nolink local inversion_note = "" local inversion_sub_note = "" local replacement_note = "<sup>2</sup>" --Until someone implements a better solution if inv == "aimé" or inv == "chanté" or inv == "dansé" or inv == "dussé" or inv == "-é" or inv == "estimé" or inv == "eussé" or inv == "fussé" or inv == "mangé" or inv == "opiné" or inv == "parlé" or inv == "pensé" or inv == "pu" or inv == "trouvé" then inversion_note = "<sup>2</sup>" inversion_sub_note = "<sup>2</sup>" replacement_note = "<sup>3</sup>" if inv == "pu" then inv = "puis" inv_sub = "puissé" inversion_sub_note = "<sup>3</sup>" replacement_note = "<sup>4</sup>" end end -- Template parameter syntax refers to the corresponding item in the data.forms table: -- {{{inf_nolink}}} -> data.forms.inf_nolink if data.notes then table.insert(result, data.notes .. '\n') end table.insert(result, [=[ <div class="NavFrame"> <div class="NavHead" align=center>การผันรูปของ ''{{{inf_nolink}}}'' <span style="font-size:90%;">(ดูเพิ่ม [[ภาคผนวก:คำกริยาภาษาฝรั่งเศส]])</span></div> <div class="NavContent" align=left> {| class="roa-inflection-table" |- ! rowspan="2" class="roa-nonfinite-header" | <span title="infinitif">รูปกริยากลาง</span> ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลสามัญ</small> | {{{inf_nolink}}} |- ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลประสม</small> ]=]) if data.forms.inf_comp == "" then table.insert(result, '! colspan="6" | ' ..data.forms.inf_comp.. ' \n') elseif data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! rowspan="2" class="roa-nonfinite-header" | <span title="participe présent">รูปกริยาขยายปัจจุบันกาล</span> หรือ <span title="">รูปกริยาเป็นนาม</span><sup>1</sup> ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลสามัญ</small> | {{{ppr}}} |- ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลประสม</small> ]=]) if data.forms.ger_comp == "" then table.insert(result, '! colspan="6" class="roa-compound-row" | ' ..data.forms.ger_comp.. '\n') elseif data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | <i>' .. aux_gerund .. '</i> + รูปกริยาขยายอดีตกาล \n') end table.insert(result, [=[ |- ! colspan="2" class="roa-nonfinite-header" | <span title="participe passé">รูปกริยาขยายอดีตกาล</span> | {{{pp}}} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม |- ! class="roa-indicative-left-rail" colspan="2" | <span title="indicatif">มาลาบอกเล่า</span> ! class="roa-indicative-left-rail" | je (j’) ! class="roa-indicative-left-rail" | tu ! class="roa-indicative-left-rail" | il, elle, on ! class="roa-indicative-left-rail" | nous ! class="roa-indicative-left-rail" | vous ! class="roa-indicative-left-rail" | ils, elles |- ! rowspan="5" class="roa-indicative-left-rail" | <small>(กาลสามัญ)</small> ! class="roa-indicative-left-rail" style="height:3em;" | <span title="présent">ปัจจุบันกาล</span> | {{{ind_p_1s}}}]=] .. inversion_note .. [=[ | {{{ind_p_2s}}} | {{{ind_p_3s}}} | {{{ind_p_1p}}} | {{{ind_p_2p}}} | {{{ind_p_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imparfait">ไม่สมบูรณ์</span> | {{{ind_i_1s}}} | {{{ind_i_2s}}} | {{{ind_i_3s}}} | {{{ind_i_1p}}} | {{{ind_i_2p}}} | {{{ind_i_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé simple">past historic</span>]=] .. replacement_note .. [=[ | {{{ind_ps_1s}}} | {{{ind_ps_2s}}} | {{{ind_ps_3s}}} | {{{ind_ps_1p}}} | {{{ind_ps_2p}}} | {{{ind_ps_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur simple">อนาคตกาล</span> | {{{ind_f_1s}}} | {{{ind_f_2s}}} | {{{ind_f_3s}}} | {{{ind_f_1p}}} | {{{ind_f_2p}}} | {{{ind_f_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel présent">มาลาเงื่อนไข</span> | {{{cond_p_1s}}} | {{{cond_p_2s}}} | {{{cond_p_3s}}} | {{{cond_p_1p}}} | {{{cond_p_2p}}} | {{{cond_p_3p}}} |- ! rowspan="5" class="roa-indicative-left-rail" | <small>(กาลประสม)</small> ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé composé">ปัจจุบันกาลสมบูรณ์</span> ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลมาลาบอกเล่าของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="plus-que-parfait">pluperfect</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์มาลาบอกเล่าของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé antérieur">past anterior</span>' .. replacement_note .. '\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปpast historicของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur antérieur">future perfect</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปอนาคตกาลของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel passé">conditional perfect</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปมาลาเงื่อนไขของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! class="roa-subjunctive-left-rail" colspan="2" | <span title="subjonctif">มาลาสมมุติ</span> ! class="roa-subjunctive-left-rail" | que je (j’) ! class="roa-subjunctive-left-rail" | que tu ! class="roa-subjunctive-left-rail" | qu’il, qu’elle ! class="roa-subjunctive-left-rail" | que nous ! class="roa-subjunctive-left-rail" | que vous ! class="roa-subjunctive-left-rail" | qu’ils, qu’elles |- ! rowspan="2" class="roa-subjunctive-left-rail" | <small>(กาลสามัญ)</small> ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif présent">ปัจจุบันกาล</span> | {{{sub_p_1s}}}]=] .. inversion_sub_note .. [=[ | {{{sub_p_2s}}} | {{{sub_p_3s}}} | {{{sub_p_1p}}} | {{{sub_p_2p}}} | {{{sub_p_3p}}} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="subjonctif imparfait">ไม่สมบูรณ์</span>]=] .. replacement_note .. [=[ | {{{sub_pa_1s}}} | {{{sub_pa_2s}}} | {{{sub_pa_3s}}} | {{{sub_pa_1p}}} | {{{sub_pa_2p}}} | {{{sub_pa_3p}}} |- ! rowspan="2" class="roa-subjunctive-left-rail" | <small>(กาลประสม)</small> ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif passé">อดีตกาล</span> ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลมาลาสมมุติของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif plus-que-parfait">pluperfect</span>' .. replacement_note .. '\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์มาลาสมมุติของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! colspan="2" class="roa-imperative-left-rail" | <span title="impératif">มาลาสั่ง</span> ! class="roa-imperative-left-rail" | – ! class="roa-imperative-left-rail" | <s>tu</s> ! class="roa-imperative-left-rail" | – ! class="roa-imperative-left-rail" | <s>nous</s> ! class="roa-imperative-left-rail" | <s>vous</s> ! class="roa-imperative-left-rail" | – |- ! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">กาลสามัญ</span> | — | {{{imp_p_2s}}} | — | {{{imp_p_1p}}} | {{{imp_p_2p}}} | — |- ! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">กาลประสม</span> | — ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | ใช้รูปกาลสามัญมาลาสั่งของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ | — ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | ใช้รูปกาลสามัญมาลาสั่งของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | ใช้รูปกาลสามัญมาลาสั่งของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ | — |- | colspan="8" |<sup>1</sup> The French gerund is usable only with the preposition <i>[[en]]</i>. |- ]=]) if inversion_note ~= "" then table.insert(result, [=[ | colspan="8" |<sup>2</sup> <i>[[]=] .. inv .. [=[]]</i> when inverted. |- ]=]) end if inv ~= inv_sub then table.insert(result, [=[ | colspan="8" |<sup>3</sup> <i>[[]=] .. inv_sub .. [=[]]</i> when inverted. |- ]=]) end table.insert(result, [=[ | colspan="8" |]=] .. replacement_note .. [=[ In less formal writing or speech, these tenses may be found to have been replaced in the following way: : past historic → present perfect : past anterior → pluperfect : imperfect subjunctive → present subjunctive : pluperfect subjunctive → past subjunctive (Christopher Kendris [1995], <i>Master the Basics: French</i>, pp. [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA77 77], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA78 78], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA79 79], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA81 81]). |} </div> </div> ]=]) --[[ setmetatable(data.forms, { __index = function(t, k) mw.log('No key for ' .. k) end }) --]] return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. string.gsub(table.concat(result), "{{{([^}]+)}}}", function(code) return data.forms[code] end) end return export 6m3dlviyv8v7z4w5b45zplos2t72w9g 5729455 5729454 2026-07-20T10:13:24Z Octahedron80 267 5729455 Scribunto text/plain local export = {} local m_links = require("Module:links") local lang = require("Module:languages").getByCode("fr") -- defined below local format_links, categorize --entry point function export.frconj(frame) --are we directly embedding through Template:fr-conj or calling the module? local args = {} if frame.args["direct"] == "yes" then args = frame:getParent().args else args = frame.args end --create the forms local data = {forms = {}, categories = {}, en = false, y = false, yen = false, l = false, le = false, la = false, les = false, l_en = false, l_y = false, l_yen = false, lesen = false, lesy = false, lesyen = false, refl = false, reflen = false, refll = false, reflle = false, reflla = false, reflles = false, reflly = false, refllesy = false, refly = false, reflyen = false, aux = ""} data.aux = args["aux"] if not (data.aux == "avoir" or data.aux == "être") then data.aux = "avoir ''or'' être" end if (args["inf"] == nil or args["inf"] == "" or args["inf"] == mw.loadData("Module:headword/data").pagename) then data.forms.inf_nolink = mw.loadData("Module:headword/data").pagename else data.forms.inf_nolink = format_links(args["inf"]) end data.forms.pp = format_links(args["pp"]) data.forms.ppr = format_links(args["ppr"]) if (args["pp"] == "—") then data.forms.pp_nolink = "—" elseif (args["pp"] == nil or mw.loadData("Module:headword/data").pagename) then data.forms.pp_nolink = mw.loadData("Module:headword/data").pagename else data.forms.pp_nolink = format_links(args["pp"]) end if (args["ppr"] == "—") then data.forms.ppr_nolink = "—" elseif (args["ppr"] == nil or mw.loadData("Module:headword/data").pagename) then data.forms.ppr_nolink = mw.loadData("Module:headword/data").pagename else data.forms.ppr_nolink = format_links(args["ppr"]) end local form_params = { "ind.p.1s", "ind.p.2s", "ind.p.3s", "ind.p.1p", "ind.p.2p", "ind.p.3p", "ind.i.1s", "ind.i.2s", "ind.i.3s", "ind.i.1p", "ind.i.2p", "ind.i.3p", "ind.ps.1s", "ind.ps.2s", "ind.ps.3s", "ind.ps.1p", "ind.ps.2p", "ind.ps.3p", "ind.f.1s", "ind.f.2s", "ind.f.3s", "ind.f.1p", "ind.f.2p", "ind.f.3p", "cond.p.1s", "cond.p.2s", "cond.p.3s", "cond.p.1p", "cond.p.2p", "cond.p.3p", "sub.p.1s", "sub.p.2s", "sub.p.3s", "sub.p.1p", "sub.p.2p", "sub.p.3p", "sub.pa.1s", "sub.pa.2s", "sub.pa.3s", "sub.pa.1p", "sub.pa.2p", "sub.pa.3p", "imp.p.2s", "imp.p.1p", "imp.p.2p", } for _, form in ipairs(form_params) do local key = form:gsub("%.", "_") data.forms[key] = format_links(args[form]) local alt = form .. ".alt" local alt_arg = args[alt] if not (alt_arg == nil or alt_arg == "" or alt_arg == "—") then data.forms[key] = data.forms[key] .. " <i>or</i> " .. format_links(alt_arg) end end --a few ugly hacks data.forms.ger = args["ger.override"] data.forms.inf_comp = args["inf.override"] data.forms.ger_comp = args["ger.comp.override"] --finish up if mw.title.getCurrentTitle().nsText == "" then return export.make_table(data) .. categorize(args,data) else return export.make_table(data) end end function format_links(link) if (link == nil or link == "" or link == "—") then return "—" else return m_links.full_link({lang = lang, term = link}) end end function categorize(args, data) output = "" if args.group == "1" or args.group == "1st" or args.group == "first" then output = output .. "[[Category:คำกริยากลุ่ม 1 ภาษาฝรั่งเศส]]" elseif args.group == "2" or args.group == "2st" or args.group == "second" then output = output .. "[[Category:คำกริยากลุ่ม 2 ภาษาฝรั่งเศส]]" elseif args.group == "3" or args.group == "3rd" or args.group == "third" then output = output .. "[[Category:คำกริยากลุ่ม 3 ภาษาฝรั่งเศส]]" end if data.aux == "être" then output = output .. "[[Category:คำกริยาภาษาฝรั่งเศสที่ใช้คำกริยาช่วย être]]" elseif data.aux == "avoir or être" then output = output .. "[[Category:คำกริยาภาษาฝรั่งเศสที่ใช้คำกริยาช่วย avoir หรือ être]]" end return output end --split from Module:fr-verb/core function export.make_table(data) local aux_gerund = "" if data.aux == "avoir" then aux_gerund = "[[ayant]]" elseif data.aux == "[[s']][[être]]" then aux_gerund = "[[s']][[étant]]" elseif data.aux == "s'en être" then aux_gerund = "[[s']][[en]] [[étant]]" elseif data.aux == "s'y être" then aux_gerund = "[[s']][[y]] [[étant]]" elseif data.aux == "s'y en être" then aux_gerund = "[[s']][[y]] [[en]] [[étant]]" elseif data.aux == "se l'être" then aux_gerund = "[[se]] [[l']][[étant]]" elseif data.aux == "se les être" then aux_gerund = "[[se]] [[les]] [[étant]]" elseif data.aux == "l'en avoir" then aux_gerund = "[[l']][[en]] [[ayant]]" elseif data.aux == "l'y en avoir" then aux_gerund = "[[l']][[y]] [[en]] [[ayant]]" elseif data.aux == "les en avoir" then aux_gerund = "[[les]] [[en]] [[ayant]]" elseif data.aux == "les y en avoir" then aux_gerund = "[[les]] [[y]] [[en]] [[ayant]]" elseif data.aux == "se les y être" then aux_gerund = "[[se]] [[les]] [[y]] [[étant]]" elseif data.aux == "se l'y être" then aux_gerund = "[[se]] [[l']][[y]] [[étant]]" elseif data.aux == "l'avoir" then aux_gerund = "[[l]]'[[ayant]]" elseif data.aux == "l'être" then aux_gerund = "[[l]]'[[étant]]" elseif data.aux == "l'avoir ''or'' être" then aux_gerund = "[[l]]'[[ayant]] ''or'' [[étant]]" elseif data.aux == "l'y avoir" then aux_gerund = "[[l]]'[[y]] [[ayant]]" elseif data.aux == "l'y être" then aux_gerund = "[[l]]'[[y]] [[étant]]" elseif data.aux == "l'y avoir ''or'' être" then aux_gerund = "[[l]]'[[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "les avoir" then aux_gerund = "[[les]] [[ayant]]" elseif data.aux == "les être" then aux_gerund = "[[les]] [[étant]]" elseif data.aux == "les avoir ''or'' être" then aux_gerund = "[[les]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "les y avoir" then aux_gerund = "[[les]] [[y]] [[ayant]]" elseif data.aux == "les y être" then aux_gerund = "[[les]] [[y]] [[étant]]" elseif data.aux == "les y avoir ''or'' être" then aux_gerund = "[[les]] [[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "y avoir" then aux_gerund = "[[y]] [[ayant]]" elseif data.aux == "y être" then aux_gerund = "[[y]] [[étant]]" elseif data.aux == "y avoir ''or'' être" then aux_gerund = "[[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "y en avoir" then aux_gerund = "[[y]] [[en]] [[ayant]]" elseif data.aux == "y en être" then aux_gerund = "[[y]] [[en]] [[étant]]" elseif data.aux == "y en avoir ''or'' être" then aux_gerund = "[[y]] [[en]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "en avoir" then aux_gerund = "[[en]] [[ayant]]" elseif data.aux == "en être" then aux_gerund = "[[en]] [[étant]]" elseif data.aux == "en avoir ''or'' être" then aux_gerund = "[[en] [[ayant]] ''or'' [[étant]]" elseif data.aux == "être" then aux_gerund = "[[étant]]" else aux_gerund = "[[ayant]] <i>or</i> [[étant]]" end local result = {} local inv = data.forms.pp_nolink local inv_sub = data.forms.pp_nolink local inversion_note = "" local inversion_sub_note = "" local replacement_note = "<sup>2</sup>" --Until someone implements a better solution if inv == "aimé" or inv == "chanté" or inv == "dansé" or inv == "dussé" or inv == "-é" or inv == "estimé" or inv == "eussé" or inv == "fussé" or inv == "mangé" or inv == "opiné" or inv == "parlé" or inv == "pensé" or inv == "pu" or inv == "trouvé" then inversion_note = "<sup>2</sup>" inversion_sub_note = "<sup>2</sup>" replacement_note = "<sup>3</sup>" if inv == "pu" then inv = "puis" inv_sub = "puissé" inversion_sub_note = "<sup>3</sup>" replacement_note = "<sup>4</sup>" end end -- Template parameter syntax refers to the corresponding item in the data.forms table: -- {{{inf_nolink}}} -> data.forms.inf_nolink if data.notes then table.insert(result, data.notes .. '\n') end table.insert(result, [=[ <div class="NavFrame"> <div class="NavHead" align=center>การผันรูปของ ''{{{inf_nolink}}}'' <span style="font-size:90%;">(ดูเพิ่ม [[ภาคผนวก:คำกริยาภาษาฝรั่งเศส]])</span></div> <div class="NavContent" align=left> {| class="roa-inflection-table" |- ! rowspan="2" class="roa-nonfinite-header" | <span title="infinitif">รูปกริยากลาง</span> ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลสามัญ</small> | {{{inf_nolink}}} |- ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลประสม</small> ]=]) if data.forms.inf_comp == "" then table.insert(result, '! colspan="6" | ' ..data.forms.inf_comp.. ' \n') elseif data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! rowspan="2" class="roa-nonfinite-header" | <span title="participe présent">รูปกริยาขยายปัจจุบันกาล</span> หรือ <span title="">รูปกริยาเป็นนาม</span><sup>1</sup> ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลสามัญ</small> | {{{ppr}}} |- ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลประสม</small> ]=]) if data.forms.ger_comp == "" then table.insert(result, '! colspan="6" class="roa-compound-row" | ' ..data.forms.ger_comp.. '\n') elseif data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | <i>' .. aux_gerund .. '</i> + รูปกริยาขยายอดีตกาล \n') end table.insert(result, [=[ |- ! colspan="2" class="roa-nonfinite-header" | <span title="participe passé">รูปกริยาขยายอดีตกาล</span> | {{{pp}}} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม |- ! class="roa-indicative-left-rail" colspan="2" | <span title="indicatif">มาลาบอกเล่า</span> ! class="roa-indicative-left-rail" | je (j’) ! class="roa-indicative-left-rail" | tu ! class="roa-indicative-left-rail" | il, elle, on ! class="roa-indicative-left-rail" | nous ! class="roa-indicative-left-rail" | vous ! class="roa-indicative-left-rail" | ils, elles |- ! rowspan="5" class="roa-indicative-left-rail" | <small>(กาลสามัญ)</small> ! class="roa-indicative-left-rail" style="height:3em;" | <span title="présent">ปัจจุบันกาล</span> | {{{ind_p_1s}}}]=] .. inversion_note .. [=[ | {{{ind_p_2s}}} | {{{ind_p_3s}}} | {{{ind_p_1p}}} | {{{ind_p_2p}}} | {{{ind_p_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imparfait">ไม่สมบูรณ์</span> | {{{ind_i_1s}}} | {{{ind_i_2s}}} | {{{ind_i_3s}}} | {{{ind_i_1p}}} | {{{ind_i_2p}}} | {{{ind_i_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé simple">past historic</span>]=] .. replacement_note .. [=[ | {{{ind_ps_1s}}} | {{{ind_ps_2s}}} | {{{ind_ps_3s}}} | {{{ind_ps_1p}}} | {{{ind_ps_2p}}} | {{{ind_ps_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur simple">อนาคตกาล</span> | {{{ind_f_1s}}} | {{{ind_f_2s}}} | {{{ind_f_3s}}} | {{{ind_f_1p}}} | {{{ind_f_2p}}} | {{{ind_f_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel présent">มาลาเงื่อนไข</span> | {{{cond_p_1s}}} | {{{cond_p_2s}}} | {{{cond_p_3s}}} | {{{cond_p_1p}}} | {{{cond_p_2p}}} | {{{cond_p_3p}}} |- ! rowspan="5" class="roa-indicative-left-rail" | <small>(กาลประสม)</small> ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé composé">ปัจจุบันกาลสมบูรณ์</span> ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลมาลาบอกเล่าของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="plus-que-parfait">อภิสมบูรณ์</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์มาลาบอกเล่าของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé antérieur">past anterior</span>' .. replacement_note .. '\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปpast historicของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur antérieur">อนาคตกาลสมบูรณ์</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปอนาคตกาลของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel passé">มาลาเงื่อนไขสมบูรณ์</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปมาลาเงื่อนไขของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! class="roa-subjunctive-left-rail" colspan="2" | <span title="subjonctif">มาลาสมมุติ</span> ! class="roa-subjunctive-left-rail" | que je (j’) ! class="roa-subjunctive-left-rail" | que tu ! class="roa-subjunctive-left-rail" | qu’il, qu’elle ! class="roa-subjunctive-left-rail" | que nous ! class="roa-subjunctive-left-rail" | que vous ! class="roa-subjunctive-left-rail" | qu’ils, qu’elles |- ! rowspan="2" class="roa-subjunctive-left-rail" | <small>(กาลสามัญ)</small> ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif présent">ปัจจุบันกาล</span> | {{{sub_p_1s}}}]=] .. inversion_sub_note .. [=[ | {{{sub_p_2s}}} | {{{sub_p_3s}}} | {{{sub_p_1p}}} | {{{sub_p_2p}}} | {{{sub_p_3p}}} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="subjonctif imparfait">ไม่สมบูรณ์</span>]=] .. replacement_note .. [=[ | {{{sub_pa_1s}}} | {{{sub_pa_2s}}} | {{{sub_pa_3s}}} | {{{sub_pa_1p}}} | {{{sub_pa_2p}}} | {{{sub_pa_3p}}} |- ! rowspan="2" class="roa-subjunctive-left-rail" | <small>(กาลประสม)</small> ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif passé">อดีตกาล</span> ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลมาลาสมมุติของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif plus-que-parfait">pluperfect</span>' .. replacement_note .. '\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์มาลาสมมุติของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! colspan="2" class="roa-imperative-left-rail" | <span title="impératif">มาลาสั่ง</span> ! class="roa-imperative-left-rail" | – ! class="roa-imperative-left-rail" | <s>tu</s> ! class="roa-imperative-left-rail" | – ! class="roa-imperative-left-rail" | <s>nous</s> ! class="roa-imperative-left-rail" | <s>vous</s> ! class="roa-imperative-left-rail" | – |- ! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">กาลสามัญ</span> | — | {{{imp_p_2s}}} | — | {{{imp_p_1p}}} | {{{imp_p_2p}}} | — |- ! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">กาลประสม</span> | — ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | ใช้รูปกาลสามัญมาลาสั่งของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ | — ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | ใช้รูปกาลสามัญมาลาสั่งของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | ใช้รูปกาลสามัญมาลาสั่งของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ | — |- | colspan="8" |<sup>1</sup> The French gerund is usable only with the preposition <i>[[en]]</i>. |- ]=]) if inversion_note ~= "" then table.insert(result, [=[ | colspan="8" |<sup>2</sup> <i>[[]=] .. inv .. [=[]]</i> when inverted. |- ]=]) end if inv ~= inv_sub then table.insert(result, [=[ | colspan="8" |<sup>3</sup> <i>[[]=] .. inv_sub .. [=[]]</i> when inverted. |- ]=]) end table.insert(result, [=[ | colspan="8" |]=] .. replacement_note .. [=[ In less formal writing or speech, these tenses may be found to have been replaced in the following way: : past historic → present perfect : past anterior → pluperfect : imperfect subjunctive → present subjunctive : pluperfect subjunctive → past subjunctive (Christopher Kendris [1995], <i>Master the Basics: French</i>, pp. [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA77 77], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA78 78], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA79 79], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA81 81]). |} </div> </div> ]=]) --[[ setmetatable(data.forms, { __index = function(t, k) mw.log('No key for ' .. k) end }) --]] return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. string.gsub(table.concat(result), "{{{([^}]+)}}}", function(code) return data.forms[code] end) end return export 2lwqss61xp3pl1rto1fppoh4vyfcj2g 5729456 5729455 2026-07-20T10:14:11Z Octahedron80 267 5729456 Scribunto text/plain local export = {} local m_links = require("Module:links") local lang = require("Module:languages").getByCode("fr") -- defined below local format_links, categorize --entry point function export.frconj(frame) --are we directly embedding through Template:fr-conj or calling the module? local args = {} if frame.args["direct"] == "yes" then args = frame:getParent().args else args = frame.args end --create the forms local data = {forms = {}, categories = {}, en = false, y = false, yen = false, l = false, le = false, la = false, les = false, l_en = false, l_y = false, l_yen = false, lesen = false, lesy = false, lesyen = false, refl = false, reflen = false, refll = false, reflle = false, reflla = false, reflles = false, reflly = false, refllesy = false, refly = false, reflyen = false, aux = ""} data.aux = args["aux"] if not (data.aux == "avoir" or data.aux == "être") then data.aux = "avoir ''or'' être" end if (args["inf"] == nil or args["inf"] == "" or args["inf"] == mw.loadData("Module:headword/data").pagename) then data.forms.inf_nolink = mw.loadData("Module:headword/data").pagename else data.forms.inf_nolink = format_links(args["inf"]) end data.forms.pp = format_links(args["pp"]) data.forms.ppr = format_links(args["ppr"]) if (args["pp"] == "—") then data.forms.pp_nolink = "—" elseif (args["pp"] == nil or mw.loadData("Module:headword/data").pagename) then data.forms.pp_nolink = mw.loadData("Module:headword/data").pagename else data.forms.pp_nolink = format_links(args["pp"]) end if (args["ppr"] == "—") then data.forms.ppr_nolink = "—" elseif (args["ppr"] == nil or mw.loadData("Module:headword/data").pagename) then data.forms.ppr_nolink = mw.loadData("Module:headword/data").pagename else data.forms.ppr_nolink = format_links(args["ppr"]) end local form_params = { "ind.p.1s", "ind.p.2s", "ind.p.3s", "ind.p.1p", "ind.p.2p", "ind.p.3p", "ind.i.1s", "ind.i.2s", "ind.i.3s", "ind.i.1p", "ind.i.2p", "ind.i.3p", "ind.ps.1s", "ind.ps.2s", "ind.ps.3s", "ind.ps.1p", "ind.ps.2p", "ind.ps.3p", "ind.f.1s", "ind.f.2s", "ind.f.3s", "ind.f.1p", "ind.f.2p", "ind.f.3p", "cond.p.1s", "cond.p.2s", "cond.p.3s", "cond.p.1p", "cond.p.2p", "cond.p.3p", "sub.p.1s", "sub.p.2s", "sub.p.3s", "sub.p.1p", "sub.p.2p", "sub.p.3p", "sub.pa.1s", "sub.pa.2s", "sub.pa.3s", "sub.pa.1p", "sub.pa.2p", "sub.pa.3p", "imp.p.2s", "imp.p.1p", "imp.p.2p", } for _, form in ipairs(form_params) do local key = form:gsub("%.", "_") data.forms[key] = format_links(args[form]) local alt = form .. ".alt" local alt_arg = args[alt] if not (alt_arg == nil or alt_arg == "" or alt_arg == "—") then data.forms[key] = data.forms[key] .. " <i>or</i> " .. format_links(alt_arg) end end --a few ugly hacks data.forms.ger = args["ger.override"] data.forms.inf_comp = args["inf.override"] data.forms.ger_comp = args["ger.comp.override"] --finish up if mw.title.getCurrentTitle().nsText == "" then return export.make_table(data) .. categorize(args,data) else return export.make_table(data) end end function format_links(link) if (link == nil or link == "" or link == "—") then return "—" else return m_links.full_link({lang = lang, term = link}) end end function categorize(args, data) output = "" if args.group == "1" or args.group == "1st" or args.group == "first" then output = output .. "[[Category:คำกริยากลุ่ม 1 ภาษาฝรั่งเศส]]" elseif args.group == "2" or args.group == "2st" or args.group == "second" then output = output .. "[[Category:คำกริยากลุ่ม 2 ภาษาฝรั่งเศส]]" elseif args.group == "3" or args.group == "3rd" or args.group == "third" then output = output .. "[[Category:คำกริยากลุ่ม 3 ภาษาฝรั่งเศส]]" end if data.aux == "être" then output = output .. "[[Category:คำกริยาภาษาฝรั่งเศสที่ใช้คำกริยาช่วย être]]" elseif data.aux == "avoir or être" then output = output .. "[[Category:คำกริยาภาษาฝรั่งเศสที่ใช้คำกริยาช่วย avoir หรือ être]]" end return output end --split from Module:fr-verb/core function export.make_table(data) local aux_gerund = "" if data.aux == "avoir" then aux_gerund = "[[ayant]]" elseif data.aux == "[[s']][[être]]" then aux_gerund = "[[s']][[étant]]" elseif data.aux == "s'en être" then aux_gerund = "[[s']][[en]] [[étant]]" elseif data.aux == "s'y être" then aux_gerund = "[[s']][[y]] [[étant]]" elseif data.aux == "s'y en être" then aux_gerund = "[[s']][[y]] [[en]] [[étant]]" elseif data.aux == "se l'être" then aux_gerund = "[[se]] [[l']][[étant]]" elseif data.aux == "se les être" then aux_gerund = "[[se]] [[les]] [[étant]]" elseif data.aux == "l'en avoir" then aux_gerund = "[[l']][[en]] [[ayant]]" elseif data.aux == "l'y en avoir" then aux_gerund = "[[l']][[y]] [[en]] [[ayant]]" elseif data.aux == "les en avoir" then aux_gerund = "[[les]] [[en]] [[ayant]]" elseif data.aux == "les y en avoir" then aux_gerund = "[[les]] [[y]] [[en]] [[ayant]]" elseif data.aux == "se les y être" then aux_gerund = "[[se]] [[les]] [[y]] [[étant]]" elseif data.aux == "se l'y être" then aux_gerund = "[[se]] [[l']][[y]] [[étant]]" elseif data.aux == "l'avoir" then aux_gerund = "[[l]]'[[ayant]]" elseif data.aux == "l'être" then aux_gerund = "[[l]]'[[étant]]" elseif data.aux == "l'avoir ''or'' être" then aux_gerund = "[[l]]'[[ayant]] ''or'' [[étant]]" elseif data.aux == "l'y avoir" then aux_gerund = "[[l]]'[[y]] [[ayant]]" elseif data.aux == "l'y être" then aux_gerund = "[[l]]'[[y]] [[étant]]" elseif data.aux == "l'y avoir ''or'' être" then aux_gerund = "[[l]]'[[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "les avoir" then aux_gerund = "[[les]] [[ayant]]" elseif data.aux == "les être" then aux_gerund = "[[les]] [[étant]]" elseif data.aux == "les avoir ''or'' être" then aux_gerund = "[[les]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "les y avoir" then aux_gerund = "[[les]] [[y]] [[ayant]]" elseif data.aux == "les y être" then aux_gerund = "[[les]] [[y]] [[étant]]" elseif data.aux == "les y avoir ''or'' être" then aux_gerund = "[[les]] [[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "y avoir" then aux_gerund = "[[y]] [[ayant]]" elseif data.aux == "y être" then aux_gerund = "[[y]] [[étant]]" elseif data.aux == "y avoir ''or'' être" then aux_gerund = "[[y]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "y en avoir" then aux_gerund = "[[y]] [[en]] [[ayant]]" elseif data.aux == "y en être" then aux_gerund = "[[y]] [[en]] [[étant]]" elseif data.aux == "y en avoir ''or'' être" then aux_gerund = "[[y]] [[en]] [[ayant]] ''or'' [[étant]]" elseif data.aux == "en avoir" then aux_gerund = "[[en]] [[ayant]]" elseif data.aux == "en être" then aux_gerund = "[[en]] [[étant]]" elseif data.aux == "en avoir ''or'' être" then aux_gerund = "[[en] [[ayant]] ''or'' [[étant]]" elseif data.aux == "être" then aux_gerund = "[[étant]]" else aux_gerund = "[[ayant]] <i>or</i> [[étant]]" end local result = {} local inv = data.forms.pp_nolink local inv_sub = data.forms.pp_nolink local inversion_note = "" local inversion_sub_note = "" local replacement_note = "<sup>2</sup>" --Until someone implements a better solution if inv == "aimé" or inv == "chanté" or inv == "dansé" or inv == "dussé" or inv == "-é" or inv == "estimé" or inv == "eussé" or inv == "fussé" or inv == "mangé" or inv == "opiné" or inv == "parlé" or inv == "pensé" or inv == "pu" or inv == "trouvé" then inversion_note = "<sup>2</sup>" inversion_sub_note = "<sup>2</sup>" replacement_note = "<sup>3</sup>" if inv == "pu" then inv = "puis" inv_sub = "puissé" inversion_sub_note = "<sup>3</sup>" replacement_note = "<sup>4</sup>" end end -- Template parameter syntax refers to the corresponding item in the data.forms table: -- {{{inf_nolink}}} -> data.forms.inf_nolink if data.notes then table.insert(result, data.notes .. '\n') end table.insert(result, [=[ <div class="NavFrame"> <div class="NavHead" align=center>การผันรูปของ ''{{{inf_nolink}}}'' <span style="font-size:90%;">(ดูเพิ่ม [[ภาคผนวก:คำกริยาภาษาฝรั่งเศส]])</span></div> <div class="NavContent" align=left> {| class="roa-inflection-table" |- ! rowspan="2" class="roa-nonfinite-header" | <span title="infinitif">รูปกริยากลาง</span> ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลสามัญ</small> | {{{inf_nolink}}} |- ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลประสม</small> ]=]) if data.forms.inf_comp == "" then table.insert(result, '! colspan="6" | ' ..data.forms.inf_comp.. ' \n') elseif data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! rowspan="2" class="roa-nonfinite-header" | <span title="participe présent">รูปกริยาขยายปัจจุบันกาล</span> หรือ <span title="">รูปกริยาเป็นนาม</span><sup>1</sup> ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลสามัญ</small> | {{{ppr}}} |- ! class="roa-nonfinite-header" style="height:3em;" | <small>กาลประสม</small> ]=]) if data.forms.ger_comp == "" then table.insert(result, '! colspan="6" class="roa-compound-row" | ' ..data.forms.ger_comp.. '\n') elseif data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | <i>' .. aux_gerund .. '</i> + รูปกริยาขยายอดีตกาล \n') end table.insert(result, [=[ |- ! colspan="2" class="roa-nonfinite-header" | <span title="participe passé">รูปกริยาขยายอดีตกาล</span> | {{{pp}}} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม |- ! class="roa-indicative-left-rail" colspan="2" | <span title="indicatif">มาลาบอกเล่า</span> ! class="roa-indicative-left-rail" | je (j’) ! class="roa-indicative-left-rail" | tu ! class="roa-indicative-left-rail" | il, elle, on ! class="roa-indicative-left-rail" | nous ! class="roa-indicative-left-rail" | vous ! class="roa-indicative-left-rail" | ils, elles |- ! rowspan="5" class="roa-indicative-left-rail" | <small>(กาลสามัญ)</small> ! class="roa-indicative-left-rail" style="height:3em;" | <span title="présent">ปัจจุบันกาล</span> | {{{ind_p_1s}}}]=] .. inversion_note .. [=[ | {{{ind_p_2s}}} | {{{ind_p_3s}}} | {{{ind_p_1p}}} | {{{ind_p_2p}}} | {{{ind_p_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imparfait">ไม่สมบูรณ์</span> | {{{ind_i_1s}}} | {{{ind_i_2s}}} | {{{ind_i_3s}}} | {{{ind_i_1p}}} | {{{ind_i_2p}}} | {{{ind_i_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé simple">past historic</span>]=] .. replacement_note .. [=[ | {{{ind_ps_1s}}} | {{{ind_ps_2s}}} | {{{ind_ps_3s}}} | {{{ind_ps_1p}}} | {{{ind_ps_2p}}} | {{{ind_ps_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur simple">อนาคตกาล</span> | {{{ind_f_1s}}} | {{{ind_f_2s}}} | {{{ind_f_3s}}} | {{{ind_f_1p}}} | {{{ind_f_2p}}} | {{{ind_f_3p}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel présent">มาลาเงื่อนไข</span> | {{{cond_p_1s}}} | {{{cond_p_2s}}} | {{{cond_p_3s}}} | {{{cond_p_1p}}} | {{{cond_p_2p}}} | {{{cond_p_3p}}} |- ! rowspan="5" class="roa-indicative-left-rail" | <small>(กาลประสม)</small> ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé composé">ปัจจุบันกาลสมบูรณ์</span> ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลมาลาบอกเล่าของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="plus-que-parfait">อภิสมบูรณ์</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์มาลาบอกเล่าของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="passé antérieur">past anterior</span>' .. replacement_note .. '\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปpast historicของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur antérieur">อนาคตกาลสมบูรณ์</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปอนาคตกาลของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-indicative-left-rail" style="height:3em;" | <span title="conditionnel passé">มาลาเงื่อนไขสมบูรณ์</span>\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปมาลาเงื่อนไขของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! class="roa-subjunctive-left-rail" colspan="2" | <span title="subjonctif">มาลาสมมุติ</span> ! class="roa-subjunctive-left-rail" | que je (j’) ! class="roa-subjunctive-left-rail" | que tu ! class="roa-subjunctive-left-rail" | qu’il, qu’elle ! class="roa-subjunctive-left-rail" | que nous ! class="roa-subjunctive-left-rail" | que vous ! class="roa-subjunctive-left-rail" | qu’ils, qu’elles |- ! rowspan="2" class="roa-subjunctive-left-rail" | <small>(กาลสามัญ)</small> ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif présent">ปัจจุบันกาล</span> | {{{sub_p_1s}}}]=] .. inversion_sub_note .. [=[ | {{{sub_p_2s}}} | {{{sub_p_3s}}} | {{{sub_p_1p}}} | {{{sub_p_2p}}} | {{{sub_p_3p}}} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="subjonctif imparfait">ไม่สมบูรณ์</span>]=] .. replacement_note .. [=[ | {{{sub_pa_1s}}} | {{{sub_pa_2s}}} | {{{sub_pa_3s}}} | {{{sub_pa_1p}}} | {{{sub_pa_2p}}} | {{{sub_pa_3p}}} |- ! rowspan="2" class="roa-subjunctive-left-rail" | <small>(กาลประสม)</small> ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif passé">อดีตกาล</span> ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลมาลาสมมุติของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, '|-\n! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="subjonctif plus-que-parfait">อภิสมบูรณ์</span>' .. replacement_note .. '\n') if data.forms.pp_nolink == "—" then table.insert(result, '! colspan="6" class="roa-compound-row" | — \n') else table.insert(result, '! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์มาลาสมมุติของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ |- ! colspan="2" class="roa-imperative-left-rail" | <span title="impératif">มาลาสั่ง</span> ! class="roa-imperative-left-rail" | – ! class="roa-imperative-left-rail" | <s>tu</s> ! class="roa-imperative-left-rail" | – ! class="roa-imperative-left-rail" | <s>nous</s> ! class="roa-imperative-left-rail" | <s>vous</s> ! class="roa-imperative-left-rail" | – |- ! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">กาลสามัญ</span> | — | {{{imp_p_2s}}} | — | {{{imp_p_1p}}} | {{{imp_p_2p}}} | — |- ! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | <span title="">กาลประสม</span> | — ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | ใช้รูปกาลสามัญมาลาสั่งของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ | — ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | ใช้รูปกาลสามัญมาลาสั่งของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ ]=]) if data.forms.pp_nolink == "—" then table.insert(result, '! class="roa-compound-row" | — \n') else table.insert(result, '! class="roa-compound-row" | ใช้รูปกาลสามัญมาลาสั่งของ <i>[[' .. data.aux .. ']]</i> + รูปกริยาขยายอดีตกาล\n') end table.insert(result, [=[ | — |- | colspan="8" |<sup>1</sup> The French gerund is usable only with the preposition <i>[[en]]</i>. |- ]=]) if inversion_note ~= "" then table.insert(result, [=[ | colspan="8" |<sup>2</sup> <i>[[]=] .. inv .. [=[]]</i> when inverted. |- ]=]) end if inv ~= inv_sub then table.insert(result, [=[ | colspan="8" |<sup>3</sup> <i>[[]=] .. inv_sub .. [=[]]</i> when inverted. |- ]=]) end table.insert(result, [=[ | colspan="8" |]=] .. replacement_note .. [=[ In less formal writing or speech, these tenses may be found to have been replaced in the following way: : past historic → present perfect : past anterior → pluperfect : imperfect subjunctive → present subjunctive : pluperfect subjunctive → past subjunctive (Christopher Kendris [1995], <i>Master the Basics: French</i>, pp. [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA77 77], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA78 78], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA79 79], [https://books.google.fr/books?id=g4G4jg5GWMwC&pg=PA81 81]). |} </div> </div> ]=]) --[[ setmetatable(data.forms, { __index = function(t, k) mw.log('No key for ' .. k) end }) --]] return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. string.gsub(table.concat(result), "{{{([^}]+)}}}", function(code) return data.forms[code] end) end return export s50h7b38ete407o3m4p0jvglnxlvug0 มอดูล:lb-headword 828 240712 5729286 5728617 2026-07-20T05:15:12Z Octahedron80 267 5729286 Scribunto text/plain local export = {} local pos_functions = {} local legal_gender = { ["m"] = true, ["m-s"] = true, ["m-p"] = true, ["f"] = true, ["f-s"] = true, ["f-p"] = true, ["n"] = true, ["n-s"] = true, ["n-p"] = true, ["?"] = true, ["?-s"] = true, ["?-p"] = true, ["p"] = true, } local gender_names = { ["m"] = "เพศชาย", ["m-s"] = "เพศชาย", ["m-p"] = "เพศชาย", ["f"] = "เพศหญิง", ["f-s"] = "เพศหญิง", ["f-p"] = "เพศหญิง", ["n"] = "เพศกลาง", ["n-s"] = "เพศกลาง", ["n-p"] = "เพศกลาง", ["?"] = "ไม่ทราบเพศ", ["?-s"] = "ไม่ทราบเพศ", ["?-p"] = "ไม่ทราบเพศ", ["p"] = "ไม่ทราบเพศ", } local plural_genders = { ["m-p"] = true, ["f-p"] = true, ["n-p"] = true, ["?-p"] = true, ["p"] = true, } local lang = require("Module:languages").getByCode("lb") -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local args = frame:getParent().args PAGENAME = mw.title.getCurrentTitle().text local head = args["head"]; if head == "" then head = nil end 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 data = {lang = lang, pos_category = poscat_th, categories = {}, heads = {args["head"]}, genders = {}, inflections = {}} if pos_functions[poscat_th] then pos_functions[poscat_th](class, args, data) end return require("Module:headword").full_headword(data) end pos_functions["คำคุณศัพท์"] = function(class, args, data) params = { [1] = {list = "m", default = mw.ustring.match(PAGENAME, "ee$") ~= nil and PAGENAME .. "ën" or PAGENAME .. "en"}, [2] = {list = "n", default = mw.ustring.match(PAGENAME, "[dt]$") ~= nil and PAGENAME or mw.ustring.gsub(PAGENAME, "([^AaIiEeOoUuÄäËëÉé])([aiou])([bcdfghjklmnpqrstvwxz])$", "%1%2%2%3") .. "t"}, ["f"] = {list = true}, ["comp"] = {list = true}, ["sup"] = {list = true, default = mw.ustring.match(PAGENAME, "[sxz]$") ~= nil and mw.ustring.gsub(PAGENAME, "([^AaIiEeOoUuÄäËëÉé])([aiou])([sxz])$", "%1%2%2%3") .. "ten" or mw.ustring.gsub(PAGENAME, "([^AaIiEeOoUuÄäËëÉé])([aiou])([bcdfghjklmnpqrstvwxz]?)$", "%1%2%2%3") .. "sten" }, ["comp-irreg-only"] = {type = "boolean"}, ["head"] = {default = PAGENAME}, ["pred-only"] = {type = "boolean"}, } local args = require("Module:parameters").process(args, params) data.heads = {args.head} if args["pred-only"] then table.insert(data.inflections, {label = 'predicate-only'}) table.insert(data.categories, 'Luxembourgish predicate only adjectives') else for i, form in ipairs(args[1]) do args[1][i] = {term = form, accel = 'masculine-form-of'} end args[1].label = "เพศชาย" table.insert(data.inflections, args[1]) if #args.f > 0 then for i, form in ipairs(args["f"]) do args["f"][i] = {term = form, accel = 'feminine-form-of'} end args["f"].label = "เพศหญิง" table.insert(data.inflections, args["f"]) end for i, form in ipairs(args[2]) do args[2][i] = {term = form, accel = 'neuter-form-of'} end args[2].label = "เพศกลาง" table.insert(data.inflections, args[2]) end if args["comp"][1] == '-' then table.insert(data.inflections, {label = 'เปรียบเทียบไม่ได้'}) table.insert(data.categories, 'คำคุณศัพท์เปรียบเทียบไม่ได้ภาษาลักเซมเบิร์ก') else if #args["comp"] > 0 then for i, form in ipairs(args["comp"]) do args["comp"][i] = {term = form, accel = 'comparative-form-of'} end if not args["comp-irreg-only"] then table.insert(args["comp"], 1, "[[méi]] " .. PAGENAME) end else args["comp"] = {"[[méi]] " .. PAGENAME} end args["comp"].label = "ขั้นกว่า" table.insert(data.inflections, args["comp"]) for i, form in ipairs(args["sup"]) do args["sup"][i] = {term = 'am [[' .. form .. ']]', accel = 'superlative-form-of'} end args["sup"].label = "ขั้นสุด" table.insert(data.inflections, args["sup"]) end end pos_functions["คำนาม"] = function(class, args, data) params = { [1] = {list = 'g', default = '?'}, [2] = {list = 'pl'}, ["dim"] = {list = true}, ["head"] = {default = PAGENAME}, ["m"] = {list = true}, ["f"] = {list = true}, } if data.pos_category == 'คำนาม' then params[2].default = mw.ustring.match(PAGENAME, "ee$") ~= nil and PAGENAME .. "ën" or PAGENAME .. "en" end local args = require("Module:parameters").process(args, params) data.heads = {args.head} local plur_tant = false for _, g in ipairs(args[1]) do if legal_gender[g] then table.insert(data.genders, g) table.insert(data.categories, "คำนาม" .. gender_names[g] .. "ภาษาลักเซมเบิร์ก") else error("Gender “" .. g .. "” is not an valid Luxembourgish gender.") end if plural_genders[g] then plur_tant = true end end if plur_tant then table.insert(data.inflections, {label = 'พหูพจน์เท่านั้น'}) table.insert(data.categories, 'คำนามพหูพจน์เท่านั้นภาษาลักเซมเบิร์ก') elseif args[2][1] == '-' then table.insert(data.inflections, {label = 'นับไม่ได้'}) table.insert(data.categories, 'คำนามนับไม่ได้ภาษาลักเซมเบิร์ก') elseif #args[2] > 0 then for i, form in ipairs(args[2]) do args[2][i] = {term = form, accel = 'plural-form-of'} end args[2].label = "พหูพจน์" table.insert(data.inflections, args[2]) if #args[2] > 1 then table.insert(data.categories, 'คำนามภาษาลักเซมเบิร์กที่มีหลายพหูพจน์') end end if #args["dim"] > 0 then for i, form in ipairs(args["dim"]) do args["dim"][i] = {term = form, accel = 'diminutive-form-of'} end args["dim"].label = "ตัวบอกความเล็ก" table.insert(data.inflections, args["dim"]) end if #args.f > 0 then args.f.label = "เพศหญิง" table.insert(data.inflections, args.f) end if #args.m > 0 then args.m.label = "เพศชาย" table.insert(data.inflections, args.m) end end pos_functions["คำวิสามานยนาม"] = pos_functions["คำนาม"] local function make_verb_forms(prefix) if prefix == nil then prefix = "" end if mw.ustring.match(prefix, "n$") then prefix = mw.ustring.gsub( prefix, "(.*)([^n])(n+)$", "%1%2" ) .. "n*" end local stem = mw.ustring.gsub(PAGENAME, "^(" .. prefix .. ")(.*)([eë]n)$", "%2") local dent_suff = mw.ustring.match(stem, "([td]+)$") local conjugated = "" if dent_suff then conjugated = mw.ustring.gsub(stem, "([td]+)$", mw.ustring.rep("t", #dent_suff)) else local lengthened = mw.ustring.gsub(stem, "([^AaIiEeOoUuÄäËëÉé])([aiou])([bcdfghjklmnpqrstvwz])$", "%1%2%2%3") conjugated = mw.ustring.match(lengthened, "(w)$") and mw.ustring.sub(lengthened, 1, -2) .. "ft" or lengthened .. "t" end return conjugated, (mw.ustring.match(conjugated, "^[ei]") and "gë" or "ge") .. conjugated end pos_functions["คำกริยา"] = function(class, args, data) third, pp = make_verb_forms(args.sep) params = { [1] = {list = '3s pres', default = third}, [2] = {list = 'pp', default = pp}, [3] = {default = 'hunn'}, ["pret"] = {list = true}, ["subj"] = {list = true}, ["head"] = {default = PAGENAME}, ["sep"] = {default = ""}, } local args = require("Module:parameters").process(args, params) data.heads = {args.head} local denasalized_prefix = mw.ustring.gsub( args.sep, "(.*)([^n])(n+)$", "%1%2" ) for i, form in ipairs(args[1]) do args[1][i] = { term = form .. (#args.sep > 0 and " " .. args.sep or ""), accel = 'third-singular-present-form-of' } end args[1].label = 'บุรุษที่สามเอกพจน์ปัจจุบันกาล' table.insert(data.inflections, args[1]) if #args.pret > 0 then for i, form in ipairs(args.pret) do args.pret[i] = { term = form .. (#args.sep > 0 and " " .. args.sep or ""), accel = 'past-perfect-form-of' } end args.pret.label = 'อดีตกาลสิ้นสุด' table.insert(data.inflections, args.pret) end for i, form in ipairs(args[2]) do args[2][i] = { term = (mw.ustring.match(form, "^[^dhntzaäeéëioöuü]") and denasalized_prefix or args.sep) .. form, accel = 'past-participle-form-of' } end args[2].label = 'รูปกริยาขยายอดีตกาล' table.insert(data.inflections, args[2]) if #args.subj > 0 then for i, form in ipairs(args.subj) do args.subj[i] = { term = form .. (#args.sep > 0 and " " .. args.sep or ""), accel = 'subjunctive-form-of' } end args.subj.label = 'past subjunctive' table.insert(data.inflections, args.subj) end if args[3] == 'hunn' then args[3] = {'hunn'} table.insert(data.categories, 'คำกริยาภาษาลักเซมเบิร์กใช้คำกริยาช่วย hunn') elseif args[3] == 'sinn' then args[3] = {'sinn'} table.insert(data.categories, 'คำกริยาภาษาลักเซมเบิร์กใช้คำกริยาช่วย sinn') elseif args[3] == 'both' then args[3] = {'hunn', 'sinn'} table.insert(data.categories, 'คำกริยาภาษาลักเซมเบิร์กใช้คำกริยาช่วย hunn และ sinn') else error("Verb auxiliary “" .. args[3] .. "” is not an valid Luxembourgish auxiliary (“hunn”, “sinn”, or “both”).") end args[3].label = "คำกริยาช่วย" table.insert(data.inflections, args[3]) end return export abbdc1q7op3ypmhum29gqpmrzd0cpyo agradecer 0 241107 5729316 5385694 2026-07-20T05:43:01Z Octahedron80 267 /* ภาษาอัสตูเรียส */ เก็บกวาด 5729316 wikitext text/x-wiki == ภาษากาลิเซีย == === รากศัพท์ === จาก {{affix|gl|a-|grado|-ecer}} === คำกริยา === {{gl-verb}}<br> {{gl-reinteg-verb}} # [[ขอบคุณ]] # [[ซาบซึ้ง]] ==== การผันรูป ==== {{gl-conj}} {{gl-reinteg-conj}} ==== คำตรงข้าม ==== * {{l|gl|desagradecer}} ==== คำเกี่ยวข้อง ==== * {{l|gl|agradecemento}} == ภาษาโปรตุเกส == === รากศัพท์ === จาก {{affix|pt|a-|grado|-ecer|id2=Etymology 3 2}} === การออกเสียง === {{pt-IPA|agradecêr}} * {{hyph|pt|a|gra|de|cer}} === คำกริยา === {{pt-verb}} # [[ขอบคุณ]] # [[ซาบซึ้ง]] ==== การผันรูป ==== {{pt-conj}} ==== คำตรงข้าม ==== * {{l|pt|desagradecer}} ==== คำเกี่ยวข้อง ==== * {{l|pt|agradecimento}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|osp|agradesçer}}; เทียบเท่า {{affix|es|a-|grado|-ecer|t2=will; liking, preference}}; ร่วมเชื้อสายกับ{{cog|an|agradeixer}} และ{{cog|ca|agrair}} === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-AdrianAbdulBaha-agradecer.wav<a:Colombia>>}} === คำกริยา === {{es-verb}} # {{lb|es|transitive}} [[ขอบคุณ]] #: {{ant|es|desagradecer}} #: {{ux|es|Le '''agradecí''' mucho su ayuda.|I '''thanked''' him very much for his help.}} # {{lb|es|transitive}} [[ซาบซึ้ง]] #: {{ant|es|desagradecer}} ==== การผันรูป ==== {{es-conj}} ==== ลูกคำ ==== {{col-auto|es | agradecido | agradecimiento | desagradecer }} === อ่านเพิ่ม === * {{R:es:DRAE}} == ภาษาอัสตูเรียส == === รูปแบบอื่น === * {{alt|ast|agraecer||Central Asturias|eye dialect}} * {{alt|ast|agradescer||obsolete}} === รากศัพท์ === จาก{{affix|ast|a-|grau|-ecer}} === การออกเสียง === * {{ast-pr}} === คำกริยา === {{ast-verb}} # [[ขอบคุณ]] # [[ซาบซึ้ง]] ==== การผันรูป ==== {{ast-conj-cer|agrade}} ==== ลูกคำ ==== {{col|ast|agradecimientu}} === อ่านเพิ่ม === * {{R:ast:DALLA}} * {{R:ast:DGLA}} t50jm3fiwrzzowebu19tycixqnju3u4 5729317 5729316 2026-07-20T05:43:22Z Octahedron80 267 /* รูปแบบอื่น */ 5729317 wikitext text/x-wiki == ภาษากาลิเซีย == === รากศัพท์ === จาก {{affix|gl|a-|grado|-ecer}} === คำกริยา === {{gl-verb}}<br> {{gl-reinteg-verb}} # [[ขอบคุณ]] # [[ซาบซึ้ง]] ==== การผันรูป ==== {{gl-conj}} {{gl-reinteg-conj}} ==== คำตรงข้าม ==== * {{l|gl|desagradecer}} ==== คำเกี่ยวข้อง ==== * {{l|gl|agradecemento}} == ภาษาโปรตุเกส == === รากศัพท์ === จาก {{affix|pt|a-|grado|-ecer|id2=Etymology 3 2}} === การออกเสียง === {{pt-IPA|agradecêr}} * {{hyph|pt|a|gra|de|cer}} === คำกริยา === {{pt-verb}} # [[ขอบคุณ]] # [[ซาบซึ้ง]] ==== การผันรูป ==== {{pt-conj}} ==== คำตรงข้าม ==== * {{l|pt|desagradecer}} ==== คำเกี่ยวข้อง ==== * {{l|pt|agradecimento}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|osp|agradesçer}}; เทียบเท่า {{affix|es|a-|grado|-ecer|t2=will; liking, preference}}; ร่วมเชื้อสายกับ{{cog|an|agradeixer}} และ{{cog|ca|agrair}} === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-AdrianAbdulBaha-agradecer.wav<a:Colombia>>}} === คำกริยา === {{es-verb}} # {{lb|es|transitive}} [[ขอบคุณ]] #: {{ant|es|desagradecer}} #: {{ux|es|Le '''agradecí''' mucho su ayuda.|I '''thanked''' him very much for his help.}} # {{lb|es|transitive}} [[ซาบซึ้ง]] #: {{ant|es|desagradecer}} ==== การผันรูป ==== {{es-conj}} ==== ลูกคำ ==== {{col-auto|es | agradecido | agradecimiento | desagradecer }} === อ่านเพิ่ม === * {{R:es:DRAE}} == ภาษาอัสตูเรียส == === รูปแบบอื่น === * {{alt|ast|agraecer||อัสตูเรียสตอนกลาง|eye dialect}} * {{alt|ast|agradescer||obsolete}} === รากศัพท์ === จาก{{affix|ast|a-|grau|-ecer}} === การออกเสียง === * {{ast-pr}} === คำกริยา === {{ast-verb}} # [[ขอบคุณ]] # [[ซาบซึ้ง]] ==== การผันรูป ==== {{ast-conj-cer|agrade}} ==== ลูกคำ ==== {{col|ast|agradecimientu}} === อ่านเพิ่ม === * {{R:ast:DALLA}} * {{R:ast:DGLA}} lklv1v379r57d1u63lqmmj4ubsdqc0y จักขุ 0 244042 5729212 1881333 2026-07-20T03:47:44Z Alifshinobi 397 5729212 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === {{bor+|th|pi|จกฺขุ}} === การออกเสียง === {{th-pron|จัก-ขุ}} === คำนาม === {{th-noun}} # {{lb|th|กลอน}} [[ตา]] (อวัยวะ) ==== ดูเพิ่ม ==== * {{l|th|จักษุ}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/t͡ɕak˨˦.xuʔ˨˦/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨧᩢ᩠ᨠᨡᩩ|t=[[ตั๊กแตน]][[สีเขียว]][[ชนิด]][[หนึ่ง]]}} # {{altform|nod|ᨧᨠ᩠ᨡᩩ|t=[[จักขุ#ภาษาไทย|จักขุ]] [ตา], ดวงตา}} == ภาษาบาลี == === คำนาม === {{pi-noun|n}} # {{pi-sc|t1|จกฺขุ}} <!-- ==== การผันรูป ==== {{pi-decl-noun|g=n}} --> 9gufe2w9nuz5feamg2r9xpetupf9u6o มอดูล:nl-verbs 828 246117 5729209 5684363 2026-07-20T03:44:12Z Octahedron80 267 5729209 Scribunto text/plain local m_utilities = require("Module:utilities") local m_links = require("Module:links") local m_table = require("Module:table") local lang = require("Module:languages").getByCode("nl") local export = {} -- Functions that do the actual inflecting by creating the forms of a basic term. local inflections = {} local irregular = {} -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local infl_type = frame.args[1] or error("Inflection type has not been specified. Please pass parameter 1 to the module invocation.") if not inflections[infl_type] then error("Unknown inflection type '" .. infl_type .. "'") end local params = { ["aux"] = {}, ["aux2"] = {}, ["bot"] = {type = "boolean"}, ["pref"] = {}, ["sep"] = {}, ["trans"] = {}, ["trans2"] = {}, ["vnoun"] = {}, ["vnoung"] = {}, ["vnoun2"] = {}, } for key, val in pairs(inflections[infl_type].params) do params[key] = val end local args = require("Module:parameters").process(frame:getParent().args, params) local data = {forms = {}, title = nil, categories = {}} inflections[infl_type].func(args, data) postprocess(args, data) if (args["bot"] or "") ~= "" then return make_bot_list(data, args["sep"]) else return make_table(data, args["sep"]) .. m_utilities.format_categories(data.categories, lang) end end function postprocess(args, data) -- Verbal noun local vnoun = args["vnoun"] local vnoun2 = args["vnoun2"] if vnoun then data.forms["vnoun"] = {vnoun, vnoun2} end -- Prefixed and separable local pref = args["pref"] local sep = args["sep"] if pref then table.insert(data.categories, "คำกริยาเติมอุปสรรคภาษาดัตช์") table.insert(data.categories, "คำกริยาเติมอุปสรรค " .. pref .. "- ภาษาดัตช์") data.title = data.title .. ", เติมอุปสรรค" end if sep then table.insert(data.categories, "คำกริยาแยกได้ภาษาดัตช์") table.insert(data.categories, "คำกริยาแยกได้ด้วย " .. sep .. " ภาษาดัตช์") data.title = data.title .. ", แยกได้" end if not pref and not sep then table.insert(data.categories, "คำกริยาพื้นฐานภาษาดัตช์") end local abbr = args["abbr"] add_pref(data, pref, abbr) add_sep(data, sep, pref, abbr) data.aux = args["aux"] or "hebben" if args["aux"] then if args["aux"] == "zijn" then require("Module:debug").track("nl-verb/zijn") else require("Module:debug").track("nl-verb/aux") end end if args["aux2"] then require("Module:debug").track("nl-verb/aux2") end data.trans = args["trans"] if data.trans then if data.trans == "acc" then table.insert(data.categories, "คำกริยากรรมการกภาษาดัตช์") elseif data.trans == "erg" then table.insert(data.categories, "คำกริยาสาธกการกภาษาดัตช์") elseif data.trans == "unerg" then table.insert(data.categories, "คำกริยาอสาธกการกภาษาดัตช์") elseif data.trans == "unacc" then table.insert(data.categories, "คำกริยาอกรรมการกภาษาดัตช์") else error("The \"trans=\" parameter has an invalid value. Valid are: acc, erg, unerg, unacc.") end end data.trans2 = args["trans2"] if data.trans2 then if data.trans2 == "acc" then table.insert(data.categories, "คำกริยากรรมการกภาษาดัตช์") elseif data.trans2 == "erg" then table.insert(data.categories, "คำกริยาสาธกการกภาษาดัตช์") elseif data.trans2 == "unerg" then table.insert(data.categories, "คำกริยาอสาธกการกภาษาดัตช์") elseif data.trans2 == "unacc" then table.insert(data.categories, "คำกริยาอกรรมการกภาษาดัตช์") else error("The \"trans2=\" parameter has an invalid value. Valid are: acc, erg, unerg, unacc.") end end if not args["trans"] then require("Module:debug").track("nl-verb/no trans") end end -- Add the unstressed prefix to all the verb forms, or -- if there is no prefix, add ge- to the past participle function add_pref(data, pref, abbr) if pref then -- Add prefix before every form for key, form in pairs(data.forms) do for i, subform in ipairs(form) do -- Add hyphen if abbr=1 data.forms[key][i] = not abbr and pref .. subform or pref .. "-" .. subform end end else -- Add ge- prefix before past participle if data.forms["past_ptc"] then for i, subform in ipairs(data.forms["past_ptc"]) do if not abbr then -- Place a diaeresis on the initial vowel of the stem if necessary if mw.ustring.find(subform, "^[eiu]") and not mw.ustring.find(subform, "^ij") then subform = subform:gsub("^e", "ë"):gsub("^i", "ï"):gsub("^u", "ü") end end -- Add hyphen if abbr=1 data.forms["past_ptc"][i] = not abbr and "ge" .. subform or "ge-" .. subform end end end end -- Add the separable part to all the verb forms function add_sep(data, sep, pref, abbr) if not sep then return end -- Add main clause forms local mainforms = {} for key, form in pairs(data.forms) do if (key:find("^pres_") or key:find("^past_")) and not key:find("_ptc$") then mainforms[key .. "_main"] = mw.clone(form) end end for key, form in pairs(mainforms) do data.forms[key] = form end -- Add separable part to forms for key, form in pairs(data.forms) do if key:find("_main$") or key:find("^impr_") then -- For main-clause finite forms, add the separable part after the form, separated by a space for i, subform in ipairs(data.forms[key]) do data.forms[key][i] = data.forms[key][i] .. " " .. sep end else -- For all other forms, add the separable part before the form, with no space for i, subform in ipairs(data.forms[key]) do -- Add a hyphen after the separable part if it ends with the same vowel -- that the main/prefixed verb begins with, for verbs like na-apen, -- also if abbr=1 but not for the past participle if (mw.ustring.find("aeiou", sep:sub(-1)) and sep:sub(-1) == subform:sub(1, 1)) or (abbr and key ~= "past_ptc" and not pref) then subform = sep .. "-" .. subform else subform = sep .. subform end data.forms[key][i] = subform end end end end --[=[ *** REGULAR VERBS (mostly) *** ]=]-- local function addform(data, key, form, index) if data.forms[key] then if index then table.insert(data.forms[key], index, form) else table.insert(data.forms[key], form) end else data.forms[key] = {form} end end -- Conjugate a weak verb inflections["weak"] = { params = { [1] = {required = true}, [2] = {}, [3] = {}, ["dt"] = {}, ["abbr"] = {type = "boolean"}, }, func = function(args, data) table.insert(data.categories, "คำกริยาอ่อนภาษาดัตช์") data.title = "อ่อน" local stems = {} local abbr = args["abbr"] stems["pres"] = args[1] or "{{{1}}}" if not abbr then stems["pres_e"] = args[2] present(data, stems) local dt = args["dt"] or (stems["pres_e"]:find("[cfhkpqstx]e$") and "t" or "d") stems["past"] = stems["pres"]:gsub("([^aeiou])i$", "%1ie") .. dt .. "e" past(data, stems) stems["past_ptc"] = args[3] or make_long(stems["pres"]) .. (stems["pres"]:find("[dt]$") and "" or dt) data.forms["past_ptc"] = {stems["past_ptc"]} if stems["past_ptc"]:find("n$") then table.insert(data.categories, "Dutch weak verbs with strong past participles") data.title = data.title .. " with strong past participle" end -- "zeggen" has an irregular past tense alongside the regular one if stems["pres"] == "zeg" then past(data, {["past"] = "zei", ["past_e"] = "zeide", ["past_t"] = "zeidt"}, 1) table.insert(data.categories, "คำกริยาอ่อนไม่ปรกติภาษาดัตช์") data.title = data.title .. ", ไม่ปรกติ" end else stems["pres_e"] = stems["pres"] .. "'e" stems["pres_t"] = stems["pres"] .. "'t" present(data, stems) local dt = args["dt"] or (stems["pres"]:find("[fpsxFPSX]$") and "t" or "d") stems["past"] = stems["pres"] .. "'" .. dt .. "e" past(data, stems) stems["past_ptc"] = stems["pres"] .. "'" .. dt data.forms["past_ptc"] = {stems["past_ptc"]} end end } -- Conjugate a weak verb with a past tense in -cht inflections["weak-cht"] = { params = { [1] = {required = true}, [2] = {}, [3] = {required = true}, }, func = function(args, data) table.insert(data.categories, "คำกริยาอ่อนภาษาดัตช์ (-cht)") data.title = "weak with past in ''-cht''" local stems = {} stems["pres"] = args[1] or "{{{1}}}" stems["pres_e"] = args[2] present(data, stems) stems["past"] = (args[3] or "{{{3}}}") .. "cht" past(data, stems) stems["past_ptc"] = stems["past"] data.forms["past_ptc"] = {stems["past_ptc"]} end } local syncopic_verbs = m_table.listToSet { "houd", "glijd", "rijd", "snijd" } -- Conjugate a strong verb inflections["strong"] = { params = { [1] = {required = true}, [2] = {required = true}, [3] = {required = true}, [4] = {}, [5] = {}, [6] = {}, ["class"] = {}, }, func = function(args, data) local class = args["class"] table.insert(data.categories, "คำกริยาแข็ง" .. (class and "กลุ่ม " .. class .. " " or "") .. "ภาษาดัตช์") data.title = "แข็ง" .. (class and "กลุ่ม " .. class or "") local stems = {} stems["pres"] = args[1] or "{{{1}}}" stems["pres_e"] = args[4] present(data, stems) stems["past"] = args[2] or "{{{2}}}" stems["past_e"] = args[5] stems["past_t"] = args[6] past(data, stems) stems["past_ptc"] = args[3] or "{{{3}}}" data.forms["past_ptc"] = {stems["past_ptc"]} -- If the final consonant of the past participle is not n, then it is a weak past participle. if not stems["past_ptc"]:find("n$") then table.insert(data.categories, "Dutch strong verbs with weak past participles") data.title = data.title .. " with weak past participle" end -- some verbs have alternative forms without the final -d if syncopic_verbs[stems["pres"]] then local syncopic_form = stems["pres"]:sub(1,-2) addform(data, "pres_indc_1sg", syncopic_form, 1) addform(data, "pres_indc_jij_inversion", syncopic_form, 1) addform(data, "impr_sg", syncopic_form, 1) table.insert(data.categories, "คำกริยาแข็งไม่ปรกติภาษาดัตช์") data.title = data.title .. ", ไม่ปรกติเล็กน้อย" elseif stems["pres"] == "scheid" and args["sep"] == "uit" then addform(data, "pres_indc_1sg", "schei", 1) addform(data, "pres_indc_jij_inversion", "schei", 1) addform(data, "impr_sg", "schei", 1) addform(data, "past_indc_sg", "schee", 1) addform(data, "past_indc_pl", "scheeën", 1) addform(data, "past_ptc", "scheeën", 1) table.insert(data.categories, "คำกริยาแข็งไม่ปรกติภาษาดัตช์") data.title = data.title .. ", ไม่ปรกติเล็กน้อย" -- If the initial or final consonants of the present stem don't match, then this verb is irregular. elseif stems["pres"]:match("^([^aeiouyj]*)") ~= stems["past"]:match("^([^aeiouyj]*)") or stems["pres"]:match("([^aeiouyj]*)$") ~= stems["past"]:match("([^aeiouyj]*)$") then table.insert(data.categories, "คำกริยาแข็งไม่ปรกติภาษาดัตช์") data.title = data.title .. ", ไม่ปรกติ" end end } -- Conjugate an irregular verb inflections["irregular"] = { params = { [1] = {required = true}, }, func = function(args, data) local base = args[1] or "zijn" if irregular[base] then irregular[base](data) else error("Unknown irregular verb '" .. base .. "'.") end end } --[=[ *** IRREGULAR VERB TYPES *** ]=]-- irregular["doen"] = function(data) table.insert(data.categories, "คำกริยาไม่ปรกติภาษาดัตช์") data.title = "ไม่ปรกติ" present(data, {["pres"] = "doe", ["pres_e"] = "doe"}) past(data, {["past"] = "deed", ["past_e"] = "dede"}) data.forms["past_ptc"] = {"daan"} data.forms["pres_indc_u"] = {"doet"} data.forms["pres_indc_3sg"] = {"doet"} end irregular["hebben"] = function(data) table.insert(data.categories, "คำกริยาอ่อนไม่ปรกติภาษาดัตช์") data.title = "อ่อน, ไม่ปรกติ" present(data, {["pres"] = "heb", ["pres_e"] = "hebbe"}) past(data, {["past"] = "had", ["past_e"] = "hadde"}) data.forms["past_ptc"] = {"had"} data.forms["pres_indc_u"] = {"hebt", "heeft"} data.forms["pres_indc_3sg"] = {"heeft"} end irregular["durven"] = function(data) table.insert(data.categories, "คำกริยาอดีตกาลสิ้นสุด-ปัจจุบันกาลภาษาดัตช์") data.title = "อดีตกาลสิ้นสุด-ปัจจุบันกาล" present(data, {["pres"] = "durf", ["pres_e"] = "durve", ["pres_t"] = "durft"}) past(data, {["past"] = "dorst"}) data.forms["past_ptc"] = {"durfd"} end irregular["kunnen"] = function(data) table.insert(data.categories, "คำกริยาอดีตกาลสิ้นสุด-ปัจจุบันกาลภาษาดัตช์") data.title = "อดีตกาลสิ้นสุด-ปัจจุบันกาล" present(data, {["pres"] = "kan", ["pres_e"] = "kunne", ["pres_t"] = "kunt"}) past(data, {["past"] = "kon", ["past_e"] = "konde", ["past_t"] = "kondt"}) addform(data, "pres_indc_jij", "kan") addform(data, "pres_indc_u", "kan") data.forms["pres_indc_jij_inversion"] = {"kun"} data.forms["pres_indc_3sg"] = {"kan"} data.forms["past_ptc"] = {"kund"} end irregular["moeten"] = function(data) table.insert(data.categories, "คำกริยาอดีตกาลสิ้นสุด-ปัจจุบันกาลภาษาดัตช์") data.title = "อดีตกาลสิ้นสุด-ปัจจุบันกาล" present(data, {["pres"] = "moet"}) past(data, {["past"] = "moest"}) data.forms["past_ptc"] = {"moeten"} end irregular["mogen"] = function(data) table.insert(data.categories, "คำกริยาอดีตกาลสิ้นสุด-ปัจจุบันกาลภาษาดัตช์") data.title = "อดีตกาลสิ้นสุด-ปัจจุบันกาล" present(data, {["pres"] = "mag", ["pres_e"] = "moge", ["pres_t"] = "moogt"}) past(data, {["past"] = "mocht"}) data.forms["pres_indc_jij"] = {"mag"} data.forms["pres_indc_u"] = {"mag"} data.forms["pres_indc_3sg"] = {"mag"} data.forms["past_ptc"] = {"mogen"} end irregular["weten"] = function(data) table.insert(data.categories, "คำกริยาอดีตกาลสิ้นสุด-ปัจจุบันกาลภาษาดัตช์") data.title = "อดีตกาลสิ้นสุด-ปัจจุบันกาล" present(data, {["pres"] = "weet", ["pres_e"] = "wete"}) past(data, {["past"] = "wist"}) data.forms["past_ptc"] = {"weten"} end irregular["willen"] = function(data) table.insert(data.categories, "คำกริยาไม่ปรกติภาษาดัตช์") data.title = "ไม่ปรกติ" present(data, {["pres"] = "wil", ["pres_e"] = "wille"}) past(data, {["past"] = "wilde"}) past(data, {["past"] = "wou", ["past_e"] = "woude", ["past_t"] = "woudt"}) data.forms["past_ptc"] = {"wild"} addform(data, "pres_indc_jij", "wil") addform(data, "pres_indc_u", "wil") data.forms["pres_indc_3sg"] = {"wil"} end irregular["zijn"] = function(data) table.insert(data.categories, "คำกริยาไม่ปรกติภาษาดัตช์") table.insert(data.categories, "คำกริยาsuppletiveภาษาดัตช์") data.title = "ไม่ปรกติ, suppletive" present(data, {["pres"] = "ben", ["pres_e"] = "zij", ["pres_t"] = "zijt"}) past(data, {["past"] = "was", ["past_e"] = "ware", ["past_t"] = "waart"}) data.forms["past_ptc"] = {"weest"} data.forms["pres_indc_jij"] = {"bent"} data.forms["pres_indc_u"] = {"bent", "is"} data.forms["pres_indc_3sg"] = {"is"} addform(data, "impr_sg", "wees", 1) addform(data, "impr_pl", "weest", 1) end irregular["zullen"] = function(data) table.insert(data.categories, "คำกริยาอดีตกาลสิ้นสุด-ปัจจุบันกาลภาษาดัตช์") data.title = "อดีตกาลสิ้นสุด-ปัจจุบันกาล" present(data, {["pres"] = "zal", ["pres_e"] = "zulle", ["pres_t"] = "zult"}) past(data, {["past"] = "zou", ["past_e"] = "zoude", ["past_t"] = "zoudt"}) data.forms["pres_indc_jij"] = {"zult", "zal"} data.forms["pres_indc_jij_inversion"] = {"zul"} data.forms["pres_indc_u"] = {"zult", "zal"} data.forms["pres_indc_3sg"] = {"zal"} end --[=[ *** HELPER FUNCTIONS *** ]=]-- -- Create regular present-tense forms function present(data, stems, index) if not stems["pres_e"] then stems["pres_e"] = stems["pres"] .. "e" end if not stems["pres_t"] then if mw.ustring.find(stems["pres"], "t$") then stems["pres_t"] = make_long(stems["pres"]) else stems["pres_t"] = make_long(stems["pres"]) .. "t" end end addform(data, "pres_indc_1sg", stems["pres"], index) addform(data, "pres_indc_jij", stems["pres_t"], index) if mw.ustring.find(stems["pres"], "t$") or mw.ustring.find(stems["pres"], "mag$") or mw.ustring.find(stems["pres"], "wil$") then -- do nothing else addform(data, "pres_indc_jij_inversion", stems["pres"], index) end addform(data, "pres_indc_gij", stems["pres_t"], index) addform(data, "pres_indc_u" , stems["pres_t"], index) addform(data, "pres_indc_3sg", stems["pres_t"], index) addform(data, "pres_indc_pl" , make_long(stems["pres_e"]) .. "n", index) addform(data, "pres_subj_sg" , stems["pres_e"], index) addform(data, "impr_sg", stems["pres"], index) addform(data, "impr_pl", stems["pres_t"], index) addform(data, "infinitive", make_long(stems["pres_e"]) .. "n", index) addform(data, "pres_ptc", make_long(stems["pres_e"]) .. "nd", index) end -- Create regular past-tense forms function past(data, stems, index) if not stems["past_e"] then if mw.ustring.find(stems["past"], "e$") then stems["past_e"] = stems["past"] else stems["past_e"] = stems["past"] .. "e" end end if not stems["past_t"] then if mw.ustring.find(stems["past"], "[^eio]e$") or mw.ustring.find(stems["past"], "[të]$") then stems["past_t"] = stems["past"] else stems["past_t"] = stems["past"] .. "t" end end addform(data, "past_indc_sg" , stems["past"], index) addform(data, "past_indc_gij" , stems["past_t"], index) addform(data, "past_indc_pl" , stems["past_e"] .. "n", index) addform(data, "past_subj_sg" , stems["past_e"], index) end -- A small helper function for those few verbs that have a stem ending in a -- vowel (like gaan, staan, skiën, echoën). This lengthens the stem-final vowel. function make_long(form) return (form:gsub("([^aeou])([aou])$", "%1%2%2"):gsub("([^aeiou])i$", "%1ie")) end -- Make the table function make_table(data, hasSep) local function show_form(form, inversion) 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 local ret = {} for key, subform in ipairs(form) do table.insert(ret, m_links.full_link({lang = lang, term = subform})) end if inversion then return table.concat(ret, "<sup>2</sup>, ") else return table.concat(ret, ", ") end end local function repl(param) if param == "lemma" then return m_links.full_link({lang = lang, alt = mw.loadData("Module:headword/data").pagename}, "term") elseif param == "info" then return data.title and " (" .. data.title .. ")" or "" elseif param:find("inversion") then return show_form(data.forms[param], true) else return show_form(data.forms[param], false) end end local wikicode = [=[ {| style="border:1px solid var(--wikt-palette-indigo-3,#CCCCFF); text-align:center; line-height:125%" class="inflection-table vsSwitcher" data-toggle-category="inflection" cellspacing="1" cellpadding="3" |- style="background:var(--wikt-palette-indigo-3,#CCCCFF); color:inherit" ! colspan="5" class="vsToggleElement" style="text-align: left" | การผันรูปของ {{{lemma}}}{{{info}}} |- class="vsShow" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#รูปกริยากลาง|รูปกริยากลาง]] | style="min-width: 12em;" | {{{infinitive}}} |- class="vsShow" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#อดีตกาล|อดีตกาล]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#เอกพจน์|เอกพจน์]] | ]=] .. (hasSep and "{{{past_indc_sg_main}}}" or "{{{past_indc_sg}}}") .. [=[ |- class="vsShow" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#อดีตกาล|อดีตกาล]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#รูปกริยาขยาย|รูปกริยาขยาย]] | {{{past_ptc}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#รูปกริยากลาง|รูปกริยากลาง]] | colspan="4" | {{{infinitive}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#รูปกริยาเป็นนาม|รูปกริยาเป็นนาม]] | colspan="4" | {{{infinitive}}} ]=] .. require("Module:gender and number").format_list({"n"}) .. (hasSep and [=[ |- class="vsHide" style="background:var(--wikt-palette-indigo-1,#E6E6FF); color:inherit" | ! colspan="2" style="font-weight: bold;" | [[ภาคผนวก:อภิธานศัพท์#อนุประโยคอิสระ|มุขยประโยค]] ! colspan="2" style="font-weight: bold;" | [[ภาคผนวก:อภิธานศัพท์#อนุประโยคไม่อิสระ|อนุประโยคซ้อนความ]] |- class="vsHide" style="background:var(--wikt-palette-indigo-1,#E6E6FF); color:inherit" | ! style="min-width: 12em; font-weight: bold" | [[ภาคผนวก:อภิธานศัพท์#ปัจจุบันกาล|ปัจจุบันกาล]] ! style="min-width: 12em; font-weight: bold" | [[ภาคผนวก:อภิธานศัพท์#อดีตกาล|อดีตกาล]] ! style="min-width: 12em; font-weight: bold" | [[ภาคผนวก:อภิธานศัพท์#ปัจจุบันกาล|ปัจจุบันกาล]] ! style="min-width: 12em; font-weight: bold" | [[ภาคผนวก:อภิธานศัพท์#อดีตกาล|อดีตกาล]]]=] or [=[ |- class="vsHide" style="background:var(--wikt-palette-indigo-1,#E6E6FF); color:inherit" | ! style="min-width: 12em; font-weight: bold" | [[ภาคผนวก:อภิธานศัพท์#ปัจจุบันกาล|ปัจจุบันกาล]] ! style="min-width: 12em; font-weight: bold" | [[ภาคผนวก:อภิธานศัพท์#อดีตกาล|อดีตกาล]] |-]=]) .. [=[ |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#บุรุษที่หนึ่ง|บุรุษที่หนึ่ง]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#เอกพจน์|เอกพจน์]] | ]=] .. (hasSep and "{{{pres_indc_1sg_main}}} || {{{past_indc_sg_main}}} || " or "") .. [=[{{{pres_indc_1sg}}} || {{{past_indc_sg}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#บุรุษที่สอง|บุรุษที่สอง]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#เอกพจน์|เอกพจน์]]&nbsp;(<span lang="nl">[[jij#ภาษาดัตช์|jij]]</span>) | ]=] .. (hasSep and "{{{pres_indc_jij_main}}}, {{{pres_indc_jij_inversion_main}}}<sup>2</sup> || {{{past_indc_sg_main}}} || " or "") .. (hasSep and "{{{pres_indc_jij}}} || {{{past_indc_sg}}} " or "{{{pres_indc_jij}}}, {{{pres_indc_jij_inversion}}}<sup>2</sup> || {{{past_indc_sg}}}") .. [=[ |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#บุรุษที่สอง|บุรุษที่สอง]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#เอกพจน์|เอกพจน์]]&nbsp;(<span lang="nl">[[u#ภาษาดัตช์|u]]</span>) | ]=] .. (hasSep and "{{{pres_indc_u_main}}} || {{{past_indc_sg_main}}} || " or "") .. [=[{{{pres_indc_u}}} || {{{past_indc_sg}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#บุรุษที่สอง|บุรุษที่สอง]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#เอกพจน์|เอกพจน์]]&nbsp;(<span lang="nl">[[gij#ภาษาดัตช์|gij]]</span>) | ]=] .. (hasSep and "{{{pres_indc_gij_main}}} || {{{past_indc_gij_main}}} || " or "") .. [=[{{{pres_indc_gij}}} || {{{past_indc_gij}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#บุรุษที่สาม|บุรุษที่สาม]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#เอกพจน์|เอกพจน์]] | ]=] .. (hasSep and "{{{pres_indc_3sg_main}}} || {{{past_indc_sg_main}}} || " or "") .. [=[{{{pres_indc_3sg}}} || {{{past_indc_sg}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#พหูพจน์|พหูพจน์]] | ]=] .. (hasSep and "{{{pres_indc_pl_main}}} || {{{past_indc_pl_main}}} || " or "") .. [=[{{{pres_indc_pl}}} || {{{past_indc_pl}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-1,#E6E6FF); height: 0.5em" | | colspan="2" |]=] .. (hasSep and [=[ || colspan="2" |]=] or "") .. [=[ |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#มาลาสมมุติ|มาลาสมมุติ]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#เอกพจน์|เอกพจน์]]<sup>1</sup> | ]=] .. (hasSep and "{{{pres_subj_sg_main}}} || {{{past_subj_sg_main}}} || " or "") .. [=[{{{pres_subj_sg}}} || {{{past_subj_sg}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#มาลาสมมุติ|มาลาสมมุติ]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#พหูพจน์|พหูพจน์]]<sup>1</sup> | ]=] .. (hasSep and "{{{pres_indc_pl_main}}} || {{{past_indc_pl_main}}} || " or "") .. [=[{{{pres_indc_pl}}} || {{{past_indc_pl}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-1,#E6E6FF); height: 0.5em" | | colspan="2" |]=] .. (hasSep and [=[ || rowspan="5" colspan="2" |]=] or "") .. [=[ |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#มาลาสั่ง|มาลาสั่ง]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#เอกพจน์|เอกพจน์]] | {{{impr_sg}}} | rowspan="2" style="background:var(--wikt-palette-indigo-1,#E6E6FF); color:inherit" | |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#มาลาสั่ง|มาลาสั่ง]]&nbsp;[[ภาคผนวก:อภิธานศัพท์#พหูพจน์|พหูพจน์]]<sup>1</sup> | {{{impr_pl}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-1,#E6E6FF); height: 0.5em" | | colspan="2" | |- class="vsHide" style="background:var(--wikt-palette-indigo-0,#F2F2FF); color:inherit" ! style="background:var(--wikt-palette-indigo-2,#CCCCFF); color:inherit" | [[ภาคผนวก:อภิธานศัพท์#รูปกริยาขยาย|รูปกริยาขยาย]] | {{{pres_ptc}}} || {{{past_ptc}}} |- class="vsHide" style="background:var(--wikt-palette-indigo-1,#E6E6FF); color:inherit" | colspan="5" style="text-align:left; vertical-align:top; font-size: smaller; line-height: 1em"| <sup>1)</sup> [[ภาคผนวก:อภิธานศัพท์#โบราณ|โบราณ]] <sup>2)</sup> ในกรณีของ[[ภาคผนวก:อภิธานศัพท์#การสลับที่|การสลับที่]] |}]=] wikicode = mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl) -- remove 'empty' 2sg forms (duplicates in case of inversion) + note if mw.ustring.find(wikicode, ", &mdash;<sup>2</sup>") then wikicode = mw.ustring.gsub(wikicode, ', &mdash;<sup>2</sup>', '') wikicode = mw.ustring.gsub(wikicode, ' <sup>2%)</sup> ในกรณีของ%[%[ภาคผนวก:อภิธานศัพท์#การสลับที่|การสลับที่%]%]', '') end return wikicode end function make_bot_list(data, hasSep) local ret = "" if hasSep then ret = ret .. "* sep=1\n" end for key, form in pairs(data.forms) do if type(form) == "table" then for key2, subform in ipairs(form) do ret = ret .. "* " .. key .. "_" .. key2 .. "=" .. subform .. "\n" end else ret = ret .. "* " .. key .. "=" .. form .. "\n" end end return ret end return export tjtqzsf96pprxfjk0em65oymjfu89k0 มอดูล:ca-verb 828 248061 5729297 5684466 2026-07-20T05:32:37Z Octahedron80 267 5729297 Scribunto text/plain --[=[ This module implements {{ca-conj}} and provides the underlying conjugation functions for {{ca-verb}} (whose actual formatting is done in [[Module:ca-headword]]). Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Catalan form representing the value of a given slot. -- "lemma" = The dictionary form of a given Catalan term. For Catalan, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("ca") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:ca-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub local rsub = com.rsub local u = mw.ustring.char -- version of rsubn() that returns a 2nd argument boolean indicating whether a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function link_term(term, display, face) return m_links.full_link({ lang = lang, term = term, alt = display }, face) end local front_vowel = "eèéiíï" local front_vowel_c = "[" .. front_vowel .. "]" local V = com.V -- vowel regex class local C = com.C -- consonant regex class -- IS_USER_STEM_OVERRIDE is prepended to user-supplied stem overrides to prevent `base.prefix` from being prepended. -- IS_USER_FORM_OVERRIDE is similar but also prevents final devoicing (cf. Balearic pres_1s 'trob' of [[trobar]]). -- Don't use 0xFFF0 in case we call a [[Module:parse-utilities]] function that uses it temporarily. local IS_USER_STEM_OVERRIDE = u(0xFFF1) local IS_USER_FORM_OVERRIDE = u(0xFFF2) --[=[ Irregular verbs: -ldre/-ndre verbs: infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caldre - cal [calent] calia caldrà calgué calgui - calgut,- coldre colc col colem colia coldré colguí colgui colguem colt,colta doldre dolc dol dolem dolia doldré dolguí dolgui dolguem dolgut,dolguda moldre molc mol molem molia moldré molguí molgui molguem molt,molta oldre olc ol olem olia oldré olguí olgui olguem olgut,olguda -soldre -solc -sol -solem -solia -soldré -solguí -solgui -solguem -solt,-solta (absoldre, dissoldre, resoldre) toldre tolc tol tolem tolia toldré tolguí tolgui tolguem tolt,tolta romandre romanc roman romanem romania romandré romanguí romangui romanguem romàs,romasa,romasos encendre encenc encén encenem encenia encendré encenguí encengui encenguem encès,encesa,encesos fendre fenc fen/-fèn fenem fenia fendré fenguí fengui fenguem fes/-fès,fesa,fesos (defendre, ofendre) -pendre -depenc -pèn -penem -penia -pendré -penguí -pengui -penguem -pès,-pesa,-pesos (dependre,despendre,expendre,suspendre) prendre prenc pren/-prèn prenem prenia prendré prenguí prengui prenguem pres/-près,presa,presos (aprendre, comprendre, desprendre, emprendre, reprendre, sorprendre) -tendre -tenc -tén -tenem -tenia -tendré -tenguí -tengui -tenguem -tès,-tesa,-tesos (pres2s: atens, pres3p: atenen) (atendre, contendre, distendre, entendre, estendre, pretendre) vendre venc ven venem venia vendré venguí vengui venguem venut,venuda (malvendre, revendre) fondre fonc fon fonem fonia fondré fonguí fongui fonguem fos/-fós,fosa,fosos (confondre, difondre, infondre, refondre) enfondre enfonc enfon enfonem enfonia enfondré enfonguí enfongui enfonguem enfús,enfusa,enfusos pondre ponc pon ponem ponia pondré ponguí pongui ponguem post,posta,postos (compondre, correspondre, descompondre, respondre) tondre tonc ton tonem tonia tondré tonguí tongui tonguem tos,tosa,tosos cerndre cerno cern cernem cernia cerndré cerní cerni cernem cernut,cernuda -ler verbs (mostly like -ldre verbs): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caler (var. of caldre) doler (var. of doldre) soler solc sol solem solia soldré solguí solgui solguem solgut,solguda valer/valdre valc val valem valia valdré valguí valgui valguem valgut,valguda (prevaler, equivaler) other -dre/-tre verbs (regular except sometimes pp): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp batre bato bat batem batia batré batí bati batem batut,batuda -metre -meto -met -metem -metia -metré -metí -meti -metem -mès,-mesa,-mesos (ad-, co-, compro-, e-, entremetre's, mal-, o-, per-, pro-, read-, re-, retrans-, sot-, tra-, trans-) perdre perdo perd perdem perdia perdré perdí perdi perdem perdut,perduda -ure verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp caure caic cau caiem queia quèiem cauré caiguí caigui caiguem caigut,caiguda (decaure, recaure) plaure plac plau plaem plaïa plaíem plauré plaguí plagui plaguem plagut,plaguda (complaure) raure rac rau raem raïa raíem rauré raguí ragui raguem ragut,raguda beure bec beu bevem bevia bevíem beuré beguí begui beguem begut,beguda (embeure) creure crec creu creiem creia crèiem creuré creguí cregui creguem cregut,creguda deure dec deu devem devia devíem deuré deguí degui deguem degut,deguda jeure jec jeu jaiem jeia jèiem jauré jaguí jegui jaguem jagut,jaguda (ajeure) lleure - lleu [-] llevia - lleurà llegué llegui - llegut,- seure sec seu seiem seia sèiem seuré seguí segui seguem segut,seguda (asseure) treure trec treu traiem treia trèiem trauré traguí tregui traguem tret,treta (abstreure, atreure, contreure, distreure, extreure, retreure, sostreure) veure veig veu veiem veia vèiem veuré viu,veieres/veres, vegi vegem vist,vista,vists/vistos (entreveure, preveure, reveure) veié/veu,veiérem/vérem riure ric riu riem reia rèiem riuré riguí rigui riguem rigut,riguda (somriure) (e)scriure escric escriu escrivim escrivia escrivíem escriuré escriví/escriguí escrigui escriguem escrit,escrita (circumscriure, descriure, inscriure, prescriure, proscriure, subscriure, transcriure) viure visc viu vivim vivia vivíem viuré visquí visqui visquem viscut,viscuda (conviure, sobreviure) cloure cloc clou cloem cloïa cloíem clouré cloguí clogui cloguem clos,closa,closos (concloure, descloure, encloure, excloure, incloure, recloure) encloure encloc enclou encloem encloïa encloíem enclouré encloguí enclogui encloguem enclòs,enclosa,enclosos coure coc cou coem coïa coíem couré coguí cogui coguem cuit/cogut,cuita/coguda moure moc mou movem movia movíem mouré moguí mogui moguem mogut,moguda (promoure) noure noc nou noem noïa noíem nouré noguí nogui noguem nogut,noguda ploure - plou [plovent] plovia - plourà plogué plogui - plogut,ploguda -nyer verbs (regular except pp) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp atènyer atenyo ateny atenyem atenyia atenyeré atenyí atenyi atenyem atès,atesa,atesos empènyer empenyo empeny empenyem empenyia empenyeré empenyí empenyi empenyem empès,empesa,empesos estrènyer estrenyo estreny estrenyem estrenyia estrenyeré estrenyí estrenyi estrenyem estret,estreta estrènyer (constrènyer,restrènyer) fènyer fenyo feny fenyem fenyia fenyeré fenyí/fenguí fenyi fenyem fenyut/fengut,fenyuda/fenguda pertànyer pertanyo pertany pertanyem pertanyia pertanyeré pertanyí/pertanguí pertanyi pertanyem pertanyut/pertangut,pertanyuda/pertanguda plànyer planyo plany planyem planyia planyeré planyí/planguí planyi planyem plangut/planyut,planguda/planyuda -xer verbs (NOTE: pres2s in -xes) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp créixer creixo creix creixem creixia creixeré creixí/cresquí creixi creixem crescut,crescuda (acréixer,decréixer) conèixer conec coneix coneixem coneixia coneixeré coneguí conegui coneguem conegut,coneguda (desconèixer,reconèixer) merèixer mereixo mereix mereixem mereixia mereixeré mereixí/meresquí mereixi mereixem merescut,merescuda néixer/ neixo/ neix/ naixem naixia naixeré naixí/nasquí neixi/ naixem/nasquem nascut,nascuda nàixer naixo naix naixi (renéixer) parèixer parec pareix pareixem pareixia pareixeré pareguí paregui pareguem paregut,pareguda (aparèixer,comparèixer,desaparèixer,reaparèixer) péixer peixo peix paixem paixia paixeré paixí peixi paixem pascut,pascuda misc. -er verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp córrer corro corre correm corria corríem correré correguí corri correm corregut,correguda fúmer fumo fum fumem fumia fumíem fumeré fumí fumi fumem fumut,fumuda prémer premo prem premem premia premíem premeré premí premi premem premut,premuda (es-, re-) témer temo tem temem temia temíem temeré temí temi temem temut,temuda trémer [regular] tòrcer torço torç torcem torcia torcíem torceré torcí torci torcem torçut,torçuda (des-) [pres2s torces] vèncer venço venç vencem vencia vencíem venceré vencí venci vencem vençut,vençuda (con-, re-) [pres2s vences] cabre/caber cabo cap cabem cabia cabíem cabré cabí càpiga capiguem cabut,cabuda [sub2s càpigues] haver he/haig ha havem/hem havia havíem hauré haguí hagi hàgim/haguem hagut,haguda [noimp] [cond1s hauria/haguera; impsub2s haguessis/haguesses] poder puc pot podem podia podíem podré poguí pugui puguem pogut,poguda saber sé sap sabem sabia sabíem sabré sabí sàpiga sapiguem sabut,sabuda [imp2s sàpigues, imp2p sapigueu] voler vull vol volem volia volíem voldré volguí vulgui vulguem volgut,volguda ser/ésser soc és som era érem seré fui sigui siguem estat/sigut,estada/siguda [ger sent/essent] [cond1s seria/fora] [pres: soc,ets,éts,som,sou,són; pret: fui,fores,fou,fórem,fóreu,foren; impsub: fos,fossis,fos,fóssim,fóssiu,fossin] [imp: sigues,sigueu] fer faig fa fem feia fèiem faré fiu faci fem fet,feta [pres3p fan] [pret: fiu,feres,feu,férem,féreu,feren] ]=] local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} proclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "em ", ["2s"] = "et ", ["3s"] = "es ", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "es ", } proclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "m'", ["2s"] = "t'", ["3s"] = "s'", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "s'", } enclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "-me", ["2s"] = "-te", ["3s"] = "-se", ["1p"] = "-nos", ["2p"] = "-vos", ["3p"] = "-se", } enclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "'m", ["2s"] = "'t", ["3s"] = "'s", ["1p"] = "'ns", ["2p"] = "-us", ["3p"] = "'s", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{ca-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{ca-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{ca-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{ca-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "ca-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{ca-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "pres|ind", person_number_list) add_basic_personal_slot("impf", "impf|ind", person_number_list) add_basic_personal_slot("pret", "pret|ind", person_number_list) add_basic_personal_slot("fut", "fut|ind", person_number_list) add_basic_personal_slot("cond", "cond", person_number_list) add_basic_personal_slot("pres_sub", "pres|sub", person_number_list) add_basic_personal_slot("impf_sub", "impf|sub", person_number_list) add_basic_personal_slot("imp", "imp", imp_person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'no' + subjunctive. add_basic_personal_slot("neg_imp", "neg|imp", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values_for_override(separated_groups, data, is_form_override) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local form = separated_group[1] -- Prepend marker to prevent prefixing with `base.prefix`, and (in the case of form overrides) prevent -- final devoicing. if is_form_override then form = IS_USER_FORM_OVERRIDE .. form else form = IS_USER_STEM_OVERRIDE .. form end local retval = {form = form, footnotes = footnotes} table.insert(retvals, retval) end return retvals end for _, overridable_stem in ipairs { "stem", "stressed_stem", "unstressed_stem", "pres_unstressed", "pres_stressed", "pres3s", -- overrides just pres_2s and pres_3s -- Don't include pres1s, pres3p; use pres_1s etc. if you need to override just those forms "impf1", "impf2", "pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", "impf_sub", "pp", "g_infix", "eix_infix", } do -- Written so we can substitute a different validator; parallel code in [[Module:es-verb]] and [[Module:pt-verb]] -- has simple_choice validators. overridable_stems[overridable_stem] = allow_multiple_values_for_override end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `g_infix`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/qu, ç/c, g/gu, j/g, gu/gü, qu/qü) occur automatically as appropriate for the ending. 2. If the ending begins with an asterisk, this is a signal to delete the accent on the last syllable of the stem, e.g. veié -> veierem. 3. If ending begins with i, it may turn into í or ï after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized [FIXME: This is not correct for Catalan, needs rewriting]: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. Defaults to `pret_base` + the conjugation vowel. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Orthographic consonant alternations in endings are handled automatically in combine_stem_ending(). { -- [[aguar]]: -- pres agúo, agúes, agúa, agüem, agüeu, agúen -- pres_sub aguï, aguïs, aguï, agüem, agüeu, aguïn -- contrast a more typical verb in -guar, [[enaiguar]]: -- pres enaiguo, enaigües, enaigua, enaigüem, enaigüeu, enaigüen -- pres_sub enaigüi, enaigüis, enaigüi, enaigüem, enaigüeu, enaigüin match = "^aguar", forms = { pres_stressed = "agú", pres_sub_stressed = "aguï", irreg = true, } }, { -- [[anar]] (full verb); highly irregular match = "^anar", var = "full", forms = { fut = "anir", pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = "vas", pres_3s = "va", pres_3p = "van", pres_sub_stressed = "vagi", imp_2s = "ves", irreg = true, } }, { -- [[anar]] (auxiliary); highly irregular match = "^anar", var = "aux", forms = { pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = {"vas", "vares"}, pres_3s = "va", pres_1p = {"vam", "vàrem"}, pres_2p = {"vau", "vàreu"}, pres_3p = {"van", "varen"}, pres_sub_stressed = "vagi", pres_sub_unstressed = "vàgi", impf1 = {}, impf2 = {}, fut = {}, pret = {}, pp = {}, gerund = {}, noimp = true, irreg = true, } }, { -- [[dar]] match = "^dar", forms = { pres_1s = {form = "do", footnotes = {"[obsolete]"}}, pres_2s = {form = "das", footnotes = {"[obsolete]"}}, pres_3s = {form = "da", footnotes = {"[obsolete]"}}, pres_3p = {form = "dan", footnotes = {"[obsolete]"}}, pres_sub_1s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_2s = {form = "des", footnotes = {"[obsolete]"}}, pres_sub_3s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_3p = {form = "den", footnotes = {"[obsolete]"}}, pret_1s = "di", -- regular except for lack of accent pret_3s = "da", -- regular except for lack of accent impf_sub_1s = "des", -- regular except for lack of accent impf_sub_3s = "des", -- regular except for lack of accent irreg = true, } }, { -- [[estar]]; highly irregular match = "^estar", forms = { pres_2s = "estàs", pres_3s = "està", pres_3p = "estan", g_infix = "estig", imp_2s = "estigues", imp_2p = "estigueu", pp = "estad", } }, -------------------------------------------------------------------------------------------- -- -er/-re -- -------------------------------------------------------------------------------------------- -- Regular verbs not needing entries here: -- -- [[rebre]], [[concebre]], [[decebre]], [[percebre]] -- [[rompre]] -- [[fúmer]], [[prémer]], [[témer]], [[trémer]] -- [[perdre]], [[batre]], [[botre]], [[fotre]], [[retre]] -- [[tòrcer]], [[vèncer]] -- etc. ------------------------------------------- -ldre/-ler -------------------------------------- { -- [[caldre]], [[doldre]], [[condoldre's]], [[oldre]] match = match_against_verbs("ldre", {"ca", "do", "^o"}), forms = { -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c g_infix = "+", } }, { -- [[caler]] match = "caler", like = "caldre", }, { -- [[doler]] and compounds match = "doler", like = "doldre", }, { -- [[valer]], [[equivaler]], [[prevaler]], [[sobrevaler]] match = "valer", forms = { -- see above for g_infix effects fut = "valdr", g_infix = "+", } }, { -- [[valdre]] and compounds match = "valdre", like = "valer", }, { -- [[soler]] match = "^soler", -- this must precede -oldre rule below for alt form [[soldre]] forms = { -- see above for g_infix effects fut = {}, pret = {}, impf_sub = "solgué", -- regular, but we disabled the preterite, which would normally disable impf_sub too g_infix = "+", pp = {}, noimp = true, } }, { -- [[soldre]] match = "^soldre", -- this must precede -oldre rule below like = "soler", }, { -- [[coldre]], [[moldre]], [[absoldre]], [[dissoldre]], [[resoldre]], [[toldre]] match = "oldre", -- this must follow [[doldre]]/[[oldre]] rule above forms = { -- see above for g_infix effects g_infix = "+", pp = "olt", } }, { -- [[voler]], [[malvoler]] match = "voler", forms = { fut = "voldr", pres_1s = "vull", pres_sub_stressed = "vulgui", pres_sub_unstressed = "vulgue", g_infix = "+", imp_2s = "vulgues", imp_2p = "vulgueu", } }, --------------------------------------------- -ndre ---------------------------------------- { -- [[romandre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("mandre", {"^ro"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "màs#", } }, { -- [[encendre]], [[atendre]], [[contendre]], [[desentendre's]], [[distendre]], [[entendre]], [[estendre]], -- [[pretendre]] match = match_against_verbs("endre", {"enc", "t"}), forms = { pres_3s = "én#", -- remove final accent without prefix with vowel; also removed when adding a suffix -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[vendre]], [[malvendre]], [[revendre]] match = "vendre", forms = { pres_3s = "vèn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "venud", -- g_infix would normally make it vengud } }, { -- [[fendre]], [[defendre]], [[ofendre]], [[dependre]], [[despendre]], [[expendre]], [[suspendre]], [[prendre]], -- [[aprendre]], [[comprendre]], [[desprendre]], [[emprendre]], [[reprendre]], [[sorprendre]] match = "endre", -- this must follow previous -endre rules above forms = { pres_3s = "èn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[enfondre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("fondre", {"^en"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "fús#", } }, { -- [[pondre]], [[compondre]], [[correspondre]], [[descompondre]], [[despondre's]], [[respondre]] match = "pondre", forms = { -- see above for g_infix effects g_infix = "+", pp = "post", } }, { -- [[fondre]], [[confondre]], [[difondre]], [[infondre]], [[refondre]], [[tondre]] match = "ondre", -- this must follow previous -ondre rules above forms = { -- see above for g_infix effects g_infix = "+", pp = "ós#", -- see above for effect of final # } }, --------------------------------------------- -nyer ---------------------------------------- { -- [[atènyer]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("tènyer", {"^a"}), forms = { pp = "tès#", irreg = true, } }, { -- [[empènyer]], [[espènyer]] match = match_against_verbs("pènyer", {"^em", "^es"}), forms = { pp = "pès#", irreg = true, } }, { -- [[estrènyer]], [[constrènyer]], [[destrènyer]], [[restrènyer]] match = match_against_verbs("strènyer", {"^e", "con", "^de", "^re"}), forms = { pp = "stret", irreg = true, } }, { -- [[fènyer]] match = "fènyer", forms = { pp = {"fengud", "fenyud"}, irreg = true, } }, { -- [[júnyer]] match = "júnyer", like = "junyir", }, { -- [[plànyer]], [[complànyer]], [[pertànyer]] match = match_against_verbs("ànyer", {"pl", "pert"}), forms = { pp = {"angud", "anyud"}, irreg = true, } }, --------------------------------------------- -aure ---------------------------------------- { -- [[caure]], [[decaure]], [[recaure]] match = "caure", forms = { -- stem ending in -ai and imperfect in -ia causes special stressed imperfect logic to take effect; we get -- impf1s queia, impf1p quèiem (preceding vowel changed to è and attached to initial consonant using -- combine_stem_ending(), which changes c- to qu-) stem = "caie", -- i dropped by g_infix before u -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c -- g_infix sets pres_stressed to end in -u, removing a preceding -i or -v g_infix = "+", } }, { -- [[plaure]], [[complaure]] match = "plaure", forms = { stem = "plae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, { -- [[raure]] match = "^raure", forms = { stem = "rae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = {"ragud", "ras"}, } }, --------------------------------------------- -eure ---------------------------------------- { -- [[beure]], [[embeure]], [[deure]], [[lleure]] match = match_against_verbs("eure", {"b", "d", "ll"}), forms = { stem = "eve", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[creure]], [[seure]], [[asseure]] match = match_against_verbs("eure", {"cr", "s"}), forms = { stem = "ee", pres_unstressed = "eie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) g_infix = "+", } }, { -- [[jeure]], [[ajeure]] match = "jeure", forms = { fut = "jaur", -- affects future and cond stressed_stem = "jee", -- affects stressed forms, which get g added by g_infix by added except for -- pres_stressed, which gets u added (controls pres_3s, pres_2s, pres_3p) unstressed_stem = "jae", -- affects unstressed_stem, which get g added by g_infix pres_stressed = {"jeu", "jau"}, pres_unstressed = "jaie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) pres_1s = {"jec", "jac"}, impf1 = "jei", -- otherwise we'd get impf_1s '#geia' etc. impf2 = "jèi", g_infix = "+", } }, { match = "jaure", like = "jeure", }, { -- [[treure]], [[abstreure]], [[atreure]], [[bestreure]], [[contreure]], [[detreure]], [[distreure]], -- [[extreure]], [[retreure], [[retrotreure]], [[sostreure]] match = "treure", forms = { -- like [[jeure]] except for irregular pp fut = "traur", stressed_stem = "tree", unstressed_stem = "trae", pres_stressed = {"treu", "trau"}, pres_unstressed = "traie", pres_1s = {"trec", "trac"}, g_infix = "+", pp = "tret", } }, { match = "traure", like = "treure", }, { -- [[veure]], [[entreveure]], [[preveure]], [[reveure]] match = "veure", forms = { stem = "veie", -- impf1s veia, impf1p vèiem (preceding vowel changed to è) pres_stressed = "veu", pres_1s = "vej", -- will be converted to 'veig'; 'veig' gets converted to 'veic' pres_sub_stressed = "vegi", pres_sub_unstressed = "vege", pret = {"veié", "vé"}, pret_1s = "viu", pret_3s = {"veié", "veu"}, impf_sub = "veié", pp = "vist", imp_2s = "veges", imp_2p = {"vegeu", "veieu"}, irreg = true, } }, --------------------------------------------- -iure ---------------------------------------- { -- [[escriure]], [[circumscriure]], [[descriure]], [[inscriure]], [[prescriure]], [[proscriure]], -- [[subscriure]], [[transcriure]] match = "scriure", forms = { stem = "scrivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "+", pret = {"scriví", "scrigué"}, pp = "scrit", } }, { -- [[riure]], [[somriure]] match = "riure", -- must follow rule for 'scriure' forms = { stem = "rie", -- impf1s reia, impf1p rèiem (preceding vowel changed to è) g_infix = "+", } }, { -- [[viure]], [[conviure]], [[desviure's]], [[sobreviure]] match = "viure", forms = { stem = "vivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "visc", -- applies to pres1s, sub, pret, pp } }, --------------------------------------------- -oure ---------------------------------------- { -- [[cloure]], [[concloure]], [[descloure]], [[encloure]], [[excloure]], [[incloure]], [[recloure]] match = "cloure", forms = { stem = "cloe", -- ï in impf1s cloïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "clòs#", -- remove final accent without prefix with vowel; also removed when adding a suffix } }, { -- [[coure]] "to cook" match = "coure", var = "cook", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "cuit", } }, { -- [[coure]] "to sting" match = "coure", var = "sting", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", -- pp regular 'cogud' } }, { -- [[moure]], [[promoure]], [[remoure]], [[somoure]], [[ploure]] match = match_against_verbs("oure", {"m", "pl"}), forms = { stem = "ove", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[noure]] match = "noure", forms = { stem = "noe", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, --------------------------------------------- -xer ---------------------------------------- { -- [[conèixer]], [[desconèixer]], [[reconèixer]] match = "conèixer", forms = { g_infix = "coneg", } }, { -- [[créixer]], [[acréixer]], [[decréixer]], [[recréixer]], [[sobrecréixer]] match = "créixer", forms = { pret = {"creixé", "cresqué"}, pres_sub_unstressed = {"creixe", "cresque"}, pp = "crescud", irreg = true, } }, { -- [[merèixer]], [[desmerèixer]], [[irèixer-se]] match = match_against_verbs("rèixer", {"me", "^i"}), forms = { pret = {"reixé", "resqué"}, pres_sub_unstressed = {"reixe", "resque"}, pp = "rescud", irreg = true, } }, { -- [[néixer]]/[[nàixer]], [[renéixer]]/[[renàixer]], [[sobrenéixer]]/[[sobrenàixer]], [[péixer]]/[[pàixer]] match = match_against_verbs("éixer", {"n", "p"}), forms = { stem = "aixe", fut = "aixer", pres_stressed = {"eix", "aix"}, pres_1s = "eixo", pret = {"aixé", "asqué"}, pres_sub_stressed = "eixi", pres_sub_unstressed = {"aixe", "asque"}, pp = "ascud", irreg = true, } }, { match = "àixer", like = "éixer", }, { -- [[parèixer]], [[aparèixer]], [[comparèixer]], [[desaparèixer]], [[reaparèixer]] match = "parèixer", forms = { g_infix = "pareg", } }, --------------------------------------------- misc ---------------------------------------- { -- [[cabre]] match = "cabre", forms = { pres_sub_stressed = "càpiga", pres_sub_unstressed = "capigue", irreg = true, } }, { -- [[caber]] match = "caber", like = "cabre", }, { -- [[saber]] match = "saber", forms = { fut = "sabr", pres_1s = "sé", pres_sub_stressed = "sàpiga", pres_sub_unstressed = "sapigue", imp_2s = "sàpiga", imp_2p = "sapigueu", irreg = true, } }, { -- [[poder]] match = "poder", forms = { fut = "podr", pres_1s = "puc", pres_sub_stressed = "pugui", pres_sub_unstressed = "pugue", g_infix = "pog", imp_2s = "pugues", imp_2p = "pugueu", irreg = true, } }, { -- [[córrer]], [[acórrer]], [[concórrer]], [[decórrer]], [[descórrer]], [[discórrer]], [[encórrer]], -- [[escórrer]], [[incórrer]], [[ocórrer]], [[recórrer]], [[socórrer]], [[transcórrer]] match = "córrer", forms = { pret = "corregué", pres_sub_unstressed = {"corre", "corregue"}, pp = "corregud", irreg = true, } }, { -- [[metre]], [[admetre]], [[arremetre]], [[cometre]], [[comprometre]], [[demetre]], [[descomprometre]], -- [[emetre]], [[entremetre's]], [[escometre]], [[malmetre]], [[manumetre]], [[ometre]], [[permetre]], -- [[prometre]], [[readmetre]], [[remetre]], [[retransmetre]], [[sotmetre]], [[trametre]], [[transmetre]] match = "metre", forms = { pp = "mès#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- { -- [[acudir]]; NOTE: Separation by meaning does not occur in DCC, DIEC, DEIEC, and DCVB says the distinction -- is geographical and makes no mention of distinction by meaning. OTOH ca.wikt does say that the pronominal -- sense "to occur" tends to conjugate non-inchoative. match = "acudir", forms = { eix_infix = {{ form = "+", footnotes = {'[especially in the sense "to turn up, to be present"]'} }, { form = "-", footnotes = {'[especially in the pronominal sense "to occur"]'} }} } }, -- [[afegir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[ajupir]] -- [[buixir]] -- [[bullir]], [[rebullir]] -- [[cruixir]], [[escruixir]] (Routledge says this is inchoative but DIEC, DEIEC and DCC all disagree; note -- pres_2s 'cruixes', handled automatically) -- [[dormir]], [[adormir]] -- [[funyir]] -- [[grunyir]] -- [[munyir]], [[esmunyir]] -- [[pudir]] -- [[punyir]] -- [[retrunyir]] -- [[sentir]], [[pressentir]], [[ressentir-se]]; not [[consentir]], with can be either non-inchoative or -- inchoative, and not [[assentir]] or [[dissentir]], which are only inchoative match = match_against_verbs("ir", {"ajup", "buix", "bull", "cruix", "dorm", "funy", "gruny", "muny", "pud", "puny", "retruny", "^sent", "pressent", "^ressent"}), forms = { eix_infix = "-", } }, { -- [[arrupir-se]]; -- [[brumir]]; -- [[brunzir]]; -- [[consumir]], [[resumir]], [[presumir]] (not [[sumir]], [[assumir]], [[subsumir]], which are regular) -- [[mentir]], [[desmentir]] -- [[percudir]]; cf. also [[acudir]], which to some extent has separate conjugations per meaning -- [[consentir]] match = match_against_verbs("ir", {"arrup", "brum", "brunz", "consum", "^resum", "presum", "ment", "percud", "consent"}), forms = { eix_infix = {"+", "-"}, } }, -- [[cenyir]]: -- non-inchoative or inchoative in Balearics, inchoative elsewhere { -- [[cobrir]], [[descobrir]], [[encobrir]], [[recobrir]], [[redescobrir]] match = "cobrir", forms = { pp = "cobert", irreg = true, } }, { -- [[collir]], [[acollir]], [[escollir]], [[recollir]] match = "collir", forms = { stressed_stem = "culli", eix_infix = "-", irreg = true, } }, { -- [[complir]], [[acomplir]], [[incomplir]] match = "complir", forms = { pp = {"complert", "complid"}, irreg = true, } }, { -- [[cosir]], [[descosir]], [[recosir]] match = "cosir", forms = { stressed_stem = "cusi", pres_3s = "cús#", eix_infix = "-", irreg = true, } }, { -- [[eixir]], [[deseixir-se]]; not [[teixir]] or [[entreteixir]], and not [[reeixir]] or [[sobreeixir]], -- which have an ï in the stem-stressed forms match = match_against_verbs("eixir", {"^", "des"}), forms = { stressed_stem = "ixi", eix_infix = "-", irreg = true, } }, { -- [[reeixir]], [[sobreeixir]] match = match_against_verbs("eixir", {"^re", "sobre"}), forms = { stressed_stem = "ïxi", eix_infix = "-", irreg = true, } }, -- [[engolir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[escopir]] match = "escopir", forms = { stressed_stem = "escupi", eix_infix = "-", irreg = true, } }, { -- [[establir]], [[preestablir]], [[restablir]] match = "establir", forms = { pp = {"establert", "establid"}, irreg = true, } }, -- [[ferir]]: -- non-inchoative in Balearics, inchoative elsewhere -- [[fregir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[fugir]], [[confugir]], [[defugir]], [[enfugir-se]]; pres sing ''fujo, fuges, fuig'' handled by -- combine_stem_ending(); can't be handled by rule above that lists many non-inchoative verbs because the -- prefix would be 'fug' and the front-back alternation code doesn't apply to prefixes. match = "fugir", forms = { eix_infix = "-", } }, { -- [[imprimir]], [[reimprimir]], [[sobreimprimir]]; not any other verbs in -primir; write it this way so -- there's a prefix with a vowel to prevent against the accent in the pp from being removed while still -- removing it in the feminine. match = match_against_verbs("primir", {"im"}), forms = { pp = "près#", irreg = true, } }, -- [[llegir]]: -- non-inchoative in Valencia and Minorca, inchoative elsewhere { -- [[lluir]]: regular inchoative in the figurative meaning "to display (something), to be showy" also in the -- legal meaning "free from a pecuniary obligation, such as a land-based tax (emphyteusis)"; irregular in the -- literal meaning "to shine"; use <no_built_in> to get regular conjugation. In the regular conjugation, -- umlauts appear in the following forms: pres_1p/pres_sub_1p/imp_1p lluïm, pres_2p/pres_sub_2p/imp_2p lluïu, -- impf_1s/impf_3s lluïa, impf_2s lluïes, impf_3p lluïen, pret_2s lluïres, pret_3p lluïren, -- impf_sub_2s lluïssis, impf_sub_3p lluïssin, throughout the pp: lluït, lluïda, lluïts, lluïdes. IN the -- irregular conjugation, umlauts appear in the same places as well as elsewhere in the present subjunctive: -- pres_sub_1s/pres_sub_3s/imp_3s lluï, pres_sub_2s lluïs, pres_sub_3p/imp_3p lluïn. Notably, they do *NOT* -- appear in the gerund lluint, the infinitive lluir, or anywhere in the future or conditional. Note that -- verbs.cat [https://www.verbs.cat/en/conjugation/899-lluir.html] lists additional irregular forms pres_1s -- lluu, and alternative impf_sub forms in -e- instead of -i- (lluïsses, lluíssem, lluísseu, lluïssen), but -- these are nonstandard or dialectal per both Routledge and DEIEC. match = "^lluir", forms = { eix_infix = "-", pres3s = {"lluu", "llu"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[entrelluir]] "to be half-seen", [[relluir]] "to shine", [[traslluir-se]] "to be translucent"; either -- inchoative or non-inchoative, not distinguished by meaning; note, [[deslluir]] and [[enlluir]] are regular -- inchoative verbs. match = match_against_verbs("lluir", {"entre", "^re", "tras"}), forms = { eix_infix = {"+", "-"}, pres3s = {"llueix", "lluu", "llú"}, -- generates pres_2s, imp_2s; note, pres_2s will end in -es due to -- combine_stem_ending() irreg = true, } }, { -- [[morir]], [[premorir]]; but not [[atemorir]] match = match_against_verbs("morir", {"^", "pre"}), forms = { eix_infix = "-", pp = "mort", irreg = true, } }, { -- [[obrir]], [[entreobrir]], [[reobrir]]; not [[cobrir]] and derivatives, not [[empobrir]], so we have to list -- them individually match = match_against_verbs("obrir", {"^", "entre", "^re"}), forms = { eix_infix = "-", pp = "obert", irreg = true, } }, { -- [[oferir]]; but not [[proferir]] match = "^oferir", forms = { pp = {"ofert", "oferid"}, irreg = true, } }, -- [[oir]], [[desoir]], [[entreoir]]: -- per Routledge, non-inchoative or inchoative normally but only -- non-inchoative in Valencian; but all dictionaries disagree and say it is a regular inchoative-only verb. -- It has the same umlauts as lluir (and [[corroir]], another regular inchoative verb). { -- [[omplir]], [[desomplir-se]], [[reomplir]]; not [[complir]] and derivatives, so we have to list them -- individually match = match_against_verbs("omplir", {"^", "des", "^re"}), forms = { eix_infix = "-", pp = {"omplert", "omplid"}, irreg = true, } }, -- [[penedir-se]]: -- non-inchoative in Balearics, inchoative elsewhere { -- [[pruir]] "to itch": same umlauts as in [[lluir]]. match = "^pruir", forms = { eix_infix = "-", pres3s = {"pruu", "pru"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[reblir]] match = "^reblir", forms = { pp = {"reblert", "reblid"}, irreg = true, } }, -- [[renyir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[sofrir]] match = "^sofrir", forms = { pp = {"sofert", "sofrid"}, irreg = true, } }, { -- [[sortir]], [[ressortir]], [[sobresortir]]; but not [[assortir]], which is regular inchoative match = match_against_verbs("sortir", {"^", "^res", "sobre"}), forms = { stressed_stem = "surti", eix_infix = "-", irreg = true, } }, { -- [[suplir]] match = "^suplir", forms = { pp = {"suplert", "suplid"}, irreg = true, } }, -- [[teixir]], [[entreteixir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[tenir]] but not any compounds; highly irregular match = "^tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"té", "ten", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[abstenir-se]], [[atenir-se]], [[captenir-se]], [[cartenir]], [[contenir]], [[detenir]], [[entretenir]], -- [[mantenir]], [[menystenir]], [[obtenir]], [[retenir]], [[sostenir]], [[viltenir]]; highly irregular match = "tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"tén", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[tindre]]: variant of [[tenir]] match = "tindre", like = "tenir", }, -- [[tenyir]], [[destenyir]]: -- non-inchoative in Valencia, but [[retenyir]] inchoative or non-inchoative in -- Valencia? (per Routledge); regular inchoative elsewhere { -- [[tossir]] "to cough" match = "^tossir", forms = { stressed_stem = "tussi", -- pres_2s gets 'tusses' pres_3s = "tus", -- note, pres_3s (a single form override) not pres3s (a stem override, which also affects -- pres_2s; but imp_2s is physically copied from pres_3s, so imp_2s correctly gets 'tus') eix_infix = "-", irreg = true, } }, { -- [[venir]] but not any compounds; highly irregular match = "^venir", forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "ve", imp_2s = "vine", g_infix = "ving", } }, { -- compounds of [[venir]]: [[advenir]], [[avenir]], [[contravenir]], [[convenir]], [[desavenir-se]], -- [[desconvenir]], [[entrevenir]], [[esdevenir]], [[intervenir]], [[obvenir]], [[pervenir]], [[prevenir]], -- [[provenir]], [[reconvenir]], [[revenir]], [[sobrevenir]], [[subvenir]]; but not [[enjovenir]] or -- [[rejovenir]]; highly irregular match = match_against_verbs("venir", {"^ad", "^a", "contra", "con", "desa", "entre", "esde", "inter", "ob", "per", "pre", "pro", "^re", "sobre", "sub"}), forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "vé", imp_2s = "vén", g_infix = "ving", } }, { -- [[vindre]]: variant of [[venir]] match = "vindre", like = "venir", }, -- [[vestir]], [[desvestir]], [[revestir]], maybe [[transvestir]]: non-inchoative in Valencia, inchoative or -- non-inchoative in the Balearics; regular inchoative elsewhere; but not [[envestir]] or [[investir]], which are -- regular inchoative everywhere { -- [[fer]], [[contrafer]], [[desfer]], [[estrafer]], [[perfer]], [[refer]], [[satisfer]]; highly irregular match = "fer", forms = { fut = "far", pres_1s = "faj", -- will be converted to 'faig'; 'faig' gets converted to 'faic' pres_2s = "fàs#", pres_3s = "fà#", pres_3p = "fan", pres_unstressed = "fe", impf1 = "fei", impf2 = "fèi", pres_sub_stressed = "faci", pres_sub_unstressed = "fe", pret = "fé", pret_1s = "fiu", pret_3s = "feu", impf_sub_1s = "fés#", -- regular except for base form [[fes]], lacking an accent impf_sub_3s = "fés#", -- same imp_2s = "fés#", pp = "fet", irreg = true, } }, { -- [[dir]], [[adir-se]], [[contradir]], [[desdir]], [[entredir]], [[interdir]], [[maldir]], [[predir]], [[redir]]; -- behaves like an -er/-re verb match = match_against_verbs("dir", {"^", "^a", "contra", "des", "entre", "inter", "mal", "pre", "^re"}), forms = { stem = "die", g_infix = "+", imp_2s = "digues", imp_2p = "digueu", pp = "dit", } }, { -- [[dur]], [[endur-se]]; behaves like an -er/-re verb match = "dur", forms = { stem = "due", g_infix = "+", pres3s = {"duu", "du"}, -- generates pres_2s, imp_2s impf1 = "dui", impf2 = "dúi", pp = "dut", } }, { -- [[ser]]; highly irregular match = "^ser", forms = { pres_1s = "soc", pres_2s = "ets", pres_3s = "és", pres_1p = "som", pres_2p = "sou", pres_3p = "són", impf1 = "er", impf2 = "ér", pres_sub_stressed = "sigui", pres_sub_unstressed = "sigue", pret = "fó", pret_1s = "fui", pret_3s = "fou", impf_sub_1s = "fos", -- regular except for lack of accent impf_sub_3s = "fos", -- same cond = {"serí", "fór"}, imp_2s = "sigues", imp_2p = "sigueu", pp = {"estad", "sigud"}, gerund = {"sent", "essent"}, irreg = true, } }, { -- [[ésser]]; variant of [[ser]] match = "^ésser", like = "ser", }, { -- [[haver]] as auxiliary; highly irregular match = "^haver", var = "aux", forms = { pres_1s = "he", pres_2s = "has", pres_3s = "ha", pres_1p = "hem", pres_2p = "heu", pres_3p = "han", fut = "haur", cond = {"haurí", "haguér"}, pres_sub_stressed = "hagi", pres_sub_unstressed = "hàgi", noimp = true, g_infix = "+", } }, { -- [[haver]] as full verb; highly irregular match = "^haver", var = "full", forms = { pres_1s = {"hec", "hac"}, pres_stressed = {"heu", "hau"}, fut = "haur", pres_sub_stressed = "hegui", g_infix = "+", } }, { -- [[heure]]; variant of full verb [[haver]] match = "^heure", like = "haver", likevar = "full", }, { -- [[haure]]; variant of full verb [[haver]] match = "^haure", like = "haver", likevar = "full", }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end local function add_stem_ending(stem, ending) if ending == "" then return stem end if stem:find("#$") then -- remove final accent when adding a suffix stem = com.remove_accents((stem:gsub("#$", "")), "final syllable only") end return stem .. ending end local function process_stem(stem, fn) if stem:find("#$") then local stem_no_pound_sign = stem:match("^(.*)#$") return fn(stem_no_pound_sign) .. "#" else return fn(stem) end end -- Add the `stem` to the `ending` and apply any phonetic modifications. `is_full_word` indicates that we're creating -- a "full word" not a stem, and turns on devoicing of final consonants. `dont_include_prefix` is used when creating -- stems and indicates not to prepend the prefix in `base.prefix` to the result. `is_pres_sub_stressed` is used when -- creating the pres_sub_stressed stem, to correctly handle both [[desaiguar]] and [[argüir]], whose respective -- interactions between ü and i/ï are very tricky. -- -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, stem, ending, is_full_word, dont_include_prefix, is_pres_sub_stressed) -- Include the prefix in the stem unless dont_include_prefix is given (used in construct_stems()), or the value of -- `stem` comes from a user-specified stem or form override. if not dont_include_prefix and not stem:find(IS_USER_STEM_OVERRIDE) and not stem:find(IS_USER_FORM_OVERRIDE) then stem = base.prefix .. stem end -- A * at the beginning of the ending is a signal to remove a stressed accent from the stem. This may feed any of -- the following rules. if ending:find("^%*") then ending = ending:gsub("^%*", "") stem = com.remove_accents(stem, "final syllable only") end -- If ending begins with s and stem ends in a sibilant, we need an e in between; cf. pres_2s 'apareixes' of -- [[aparèixer]], pres_2s 'torces' of [[tòrcer]], pres_2s 'fuges' of [[fugir]], pres_2s 'brunzes' of [[brunzir]]. -- This may feed the next rule. if ending:find("^s") and rfind(stem, "[çjsxz]$") then ending = "e" .. ending end -- By default, stems are in their "back" (standalone) form. Before a front vowel, convert the final consonant to -- its "front" form so the pronunciation doesn't change. if rfind(ending, "^" .. front_vowel_c) then -- adequar -> adeqües -- enaiguar -> enaigües -- pegar -> pegues -- arranjar -> arranges -- marcar -> marques -- abraçar -> abraces stem = com.back_to_front(stem) end -- Ending beginning in -i after diphthong ending in V + i compresses the two i's into one (cf. pret_1s 'desmaí' and -- pres_sub_1s 'desmaï' of [[desmaiar]]). This rule doesn't apply after pseudo-vowel u in gu/qu; cf. pret_1s 'guií' -- of [[guiar]] and contrast pret_1s 'cruí' of [[cruiar]]. This may feed the next rule. if rfind(ending, "^[iíï]") and rfind(stem, V .. "i$") and not rfind(stem, "[gq][uü]i$") then stem = stem:gsub("i$", "") end -- If ending begins with i (not í), it must get a diaeresis after a true vowel (not gu/qu, cf. pres_1p 'delinquim' -- of [[delinquir]], not '#delinquïm'; also not a diphthong ending in u, cf. pres_sub_1s 'apreui' of [[apreuar]] -- not '#apreuï') to prevent the two merging into a diphthong. Note that ü -> u before ï, but to simplify things -- we leave the double umlauts in place and remove the first one during postprocessing, in fix_double_umlauts(). -- Cf.: -- * impf_1s 'raïa' of [[raure]]; -- * pres_sub_1s 'creï' of [[crear]]; -- * pres_sub_1s 'associï' of [[associar]]; -- * impf_1s 'cloïa' of [[cloure]]; -- * pres_1p 'lluïm' of [[lluir]]; -- * pres_1p 'arguïm' of [[argüir]]. if ending:find("^i") and rfind(stem, "[aeiouü]$") and not stem:find("[aeiogq]u$") and -- Unstressed subjunctive endings of [[enaiguar]] remain without umlaut: enaigüi/enaigüis/enaigüin; -- but stressed endings of [[argüir]] that begin with 'i' do get an umlaut: arguït, impf. arguïa, including -- stressed subjunctive endings arguïm/arguïu. In both cases the ending is '-i' as part of the creation of -- the respective stems. There seems no way of distinguishing the two cases other than with a special flag. not (rfind(stem, "[gq]ü$") and ending == "i" and is_pres_sub_stressed) then ending = ending:gsub("^i", "ï") end local retval = add_stem_ending(stem, ending) if retval:find("#$") then -- remove final accent if no vowels in prefix retval = retval:gsub("#$", "") if not rfind(base.prefix, V) then retval = com.remove_accents(retval, "final syllable only") end end if is_full_word then local saw_is_user_form_override retval, saw_is_user_form_override = rsubb(retval, IS_USER_FORM_OVERRIDE, "") retval = retval:gsub(IS_USER_STEM_OVERRIDE, "") if not saw_is_user_form_override then -- Devoice final voiced obstruent (cf. pres_2s 'caps', pres_3s 'cap' of [[cabre]]). But not after a -- consonant (cf. pres_2s 'perds', pres_3s 'perd' of [[perdre]]), except for g -> c, which operates -- even after a consonant (pres_1s 'resolc' of [[resoldre]], pres_1s 'tinc' of [[tenir]]). retval = retval:gsub("g(s?)$", "c%1") retval = rsub(retval, "(" .. V .. ")([bdj])(s?)$", function(before, voiced, after) local devoice = { b = "p", d = "t", j = "ig", -- pres_3s 'fuj' of [[fugir]] -> 'fuig' } return before .. devoice[voiced] .. after end) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, stem, ending, "is full word") end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function map_general(stemforms, fn) return iut.map_forms(iut.convert_to_general_list_form(stemforms), fn) end local function flatmap_general(stemforms, fn) return iut.flatmap_forms(iut.convert_to_general_list_form(stemforms), fn) end -- Given a stem ending in a conjugation vowel -a/-e/-i/-ï, split into stem base and conjugation vowel, converting the -- stem base to "back" form if the conjugation vowel is front (hence 'torce' of [[tòrcer]] splits into 'torç' and 'e', -- and 'fugi' of [[fugir]] splits into 'fuj' and 'i'). local function split_conj_vowel(stem) local stem_base, conj_vowel = rmatch(stem, "^(.*)([aeiï])$") if not stem_base then error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i"):format(stem)) end if conj_vowel == "ï" then -- To simplify handling of ï, convert to i. It will be converted back to ï as necessary in -- combine_stem_ending(). conj_vowel = "i" end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end return stem_base, conj_vowel end local function construct_stems(base) base.output_stems = {} local stems = base.output_stems local bst = base.input_stems -- YUCK, see combine_stem_ending() for the necessity of is_pres_sub_stressed. local function combine(stem, ending, is_pres_sub_stressed) return combine_stem_ending(base, stem, ending, false, "dont include prefix", is_pres_sub_stressed) end stems.irreg = bst.irreg or bst.g_infix -- NOTE: Some stems end in a conjugation or similar vowel, specifically: -- * `stem` (ends in conjugation vowel -a/-e/-i); -- * `stressed_stem` (likewise); -- * `unstressed_stem` (likewise); -- * `pres_unstressed` (which assumes the form of the gerund minus the -nt; note that `pres_stressed` does *NOT* -- end in a conjugation vowel, but assumes the stem form; the value of pres_3s will be derived by adding -a for -- -ar verbs and otherwise adding an -e prop vowel when required, as in [[cobrir]], and otherwise adding no -- vowel); -- * `pres_sub_stressed` (which assumes the form of pres_sub_3s and hence usually ends in -i, occasionally -a); -- * `pres_sub_unstressed` (which assumes the form of pres_sub_1p minus the -m, hence ends in -e or -i). -- Save stem for use in add_categories_and_annotation() for determining the conjugation class. stems.stem = bst.stem or base.stem local eix_infix_stem if base.conj_vowel == "i" then -- Save eix_infix value for use in add_categories_and_annotation() for determining whether consonant -- alternations exist. stems.eix_infix = bst.eix_infix or bst.g_infix and "-" or "+" eix_infix_stem = flatmap_general(stems.eix_infix, function(form) if form == "+" then return map_general(stems.stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "eixe") end) elseif form == "-" then return stems.stem else return form end end) end local stressed_stem = bst.stressed_stem or eix_infix_stem or stems.stem local unstressed_stem = bst.unstressed_stem or stems.stem -- Add the 'g' that is characteristic of g-infix verbs. We remove a stem-final v, e.g. [[beure]] with stem 'beve' -- becomes 'beg'. local function add_g(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) stem_base = stem_base:gsub("v$", "") return combine(stem_base, "g") end) end -- Add the 'u' of the pres_3s that is characteristic of g-infix verbs (and conjugation vowel 'e', later removed). -- We remove a stem-final v, as well as i as part of a diphthong, e.g. [[beure]] with stem 'beve' becomes 'beue' -- and [[veure]] with stem 'veie' becomes 'veue' (but [[riure]] with stem 'rie' becomes 'riue' not '#rue'). We -- don't add -u after a consonant, e.g. [[doldre]] with stem 'dole' becomes 'dole' not '#dolue'. local function add_u(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if stem_base:find("v$") then stem_base = stem_base:gsub("v$", "") else stem_base = rsub(stem_base, "(" .. V .. ")i$", "%1") end -- Add u after vowel but not after another u, so we get pres_3p 'duen' of [[dur]] not '#duuen'. if rfind(stem_base, V .. "$") and not stem_base:find("u$") then return combine(stem_base, "u") else return stem_base end end) end local stressed_g_infix, unstressed_g_infix, g_infix_pres_stressed if bst.g_infix then local function flatmap_g_infix(default) return flatmap_general(bst.g_infix, function(form) if form == "+" then return default else return form end end) end stressed_g_infix = flatmap_g_infix(add_g(stressed_stem)) unstressed_g_infix = flatmap_g_infix(add_g(unstressed_stem)) g_infix_pres_stressed = add_u(stressed_stem) end stems.pres_unstressed = bst.pres_unstressed or unstressed_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres_stressed or g_infix_pres_stressed or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return stem_base end) stems.pres1s = -- If no_pres_stressed given, pres1s stem should be empty so no forms are generated. base.no_pres_stressed and {} or stressed_g_infix or map_general(stems.pres_stressed, function(form) return combine(form, "o") end) stems.pres3s = -- If no_pres_stressed given, pres3s stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres3s or map_general(stems.pres_stressed, function(form) if base.conj_vowel == "a" then return combine(form, "a") elseif rfind(form, C .. "[lr]$") and not rfind(form, V .. "ll$") then return combine(form, "e") else return form end end) stems.pres3p = -- If no_pres_stressed given, pres3p stem should be empty so no forms are generated. base.no_pres_stressed and {} or map_general(stems.pres_stressed, function(form) return combine(form, "en") end) local function compute_impf_stem(with_accent) return map_general(stems.pres_unstressed, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if conj_vowel == "a" then return combine(stem_base, with_accent and "àv" or "av") elseif stem_base:find("i#?$") then form = form:gsub("i#?$", "") return combine(rmatch(stem_base, "^(.-)" .. V .. "*$"), with_accent and "èi" or "ei") else return combine(stem_base, with_accent and "í" or "i") -- i -> ï after a vowel end end) end stems.impf1 = bst.impf1 or compute_impf_stem(false) stems.impf2 = bst.impf2 or compute_impf_stem(true) stems.pret = bst.pret or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "é") end ) or map_general(unstressed_stem, function(form) local accent_conj_vowel = { a = "à", e = "é", i = "í", } local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, accent_conj_vowel[conj_vowel]) end) stems.fut = bst.fut or base.inf_stem stems.cond = bst.cond or map_general(stems.fut, function(form) return combine(form, "í") end) stems.pres_sub_stressed = bst.pres_sub_stressed or stressed_g_infix and map_general(stressed_g_infix, function(form) return combine(form, "i") end) or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "i", "is pres_sub_stressed") end) stems.pres_sub_unstressed = bst.pres_sub_unstressed or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "e") end) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, conj_vowel == "i" and conj_vowel or "e") end) stems.impf_sub = bst.impf_sub or map_general(stems.pret, function(form) local stem_base = rmatch(form, "^(.*)à$") -- already in "back" form, no need to convert if stem_base then return combine(stem_base, "é") else return form end end) stems.pp = bst.pp or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "ud") end ) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) -- use combine() so we get 'abduïd' from 'abdu-' of [[abduir]], 'seguid' from 'seg-' from [[seguir]], etc. return combine(stem_base, (conj_vowel == "e" and "u" or conj_vowel) .. "d") end) end local function a_to_e(base, stems, suffix) return map_general(stems, function(form) local stem_base = form:match("^(.-)a$") if stem_base then suffix = "e" .. suffix else stem_base = form end return combine_stem_ending(base, stem_base, suffix, "is full word") end) end local function add_present_indic(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end addit("1s", stems.pres1s, "") insert_forms(base, "pres_2s", a_to_e(base, stems.pres3s, "s")) addit("3s", stems.pres3s, "") insert_forms(base, "pres_1p", a_to_e(base, stems.pres_unstressed, "m")) insert_forms(base, "pres_2p", a_to_e(base, stems.pres_unstressed, "u")) addit("3p", stems.pres3p, "") end local function add_present_subj(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end -- Regular -ar verb: [[amar]]: ami, amis, ami, amem, ameu, amin -- Regular -re verb: [[batre]]: bati, batis, bati, batem, bateu, batin (same as -ar verb) -- Regular -ir verb, no -eix- infix: [[dormir]]: dormi, dormis, dormi, dormim, dormiu, dormin -- Regular -ir verb, -eix- infix: [[imprimir]]: imprimeixi, imprimeixis, imprimeixi, imprimim, imprimiu, imprimeixin -- Stem changing in 123s/3p vs. 12p: -- * -eix- infix (-eix- in all stressed forms: 123s/3p of pres ind/sub, 2s imp) -- * [[collir]]: culli, cullis, culli, collim, colliu, cullin (cull- in all stressed forms) -- * [[cabre]]: càpiga, càpigues, càpiga, capiguem, capigueu, càpiguen (also different endings) addit("1s", stems.pres_sub_stressed, "") insert_forms(base, "pres_sub_2s", a_to_e(base, stems.pres_sub_stressed, "s")) addit("3s", stems.pres_sub_stressed, "") addit("1p", stems.pres_sub_unstressed, "m") addit("2p", stems.pres_sub_unstressed, "u") insert_forms(base, "pres_sub_3p", a_to_e(base, stems.pres_sub_stressed, "n")) end local function add_finite_non_present(base) local stems = base.output_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end add_tense("impf", stems.impf1, "a", "es", "a", nil, nil, "en") add_tense("impf", stems.impf2, nil, nil, nil, "em", "eu", nil) -- pret_1s ends in -í regardless of the normal vowel of the stem. insert_forms(base, "pret_1s", map_general(stems.pret, function(form) local stem_base, conj_vowel = rmatch(form, "^(.*)(" .. V .. ")$") if not stem_base then error(("Internal error: Preterite stem '%s' doesn't end in vowel"):format(form)) end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end -- Use combine_stem_ending() to handle back-to-front conversions, e.g. pegà -> peguí for [[pegar]] and ensure -- that the prefix gets added. return combine_stem_ending(base, stem_base, "í", "is full word") end)) -- * at the beginning of the ending means to remove an accent from the last vowel of the preterite stem. add_tense("pret", stems.pret, nil, "*res", "", "rem", "reu", "*ren") -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect subjunctive stem. add_tense("impf_sub", stems.impf_sub, "s", "*ssis", "s", "ssim", "ssiu", "*ssin") add_tense("fut", stems.fut, "é", "às", "à", "em", "eu", "an") add_tense("cond", stems.cond, "*a", "*es", "*a", "em", "eu", "*en") end local function add_non_finite_forms(base) local stems = base.output_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.orig_verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.orig_verb}) end end -- Gerunds don't have an umlaut over the i in cases like 'abduint' of 'abduir' (not '#abduïnt'). local pres_unstressed_no_umlaut = map_general(stems.pres_unstressed, function(form) return rsub(form, "ï$", "i") end) addit("gerund", pres_unstressed_no_umlaut, "nt") -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{ca-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, pres_unstressed_no_umlaut, "nt") end end addit("pp_ms", stems.pp, "") if not base.pp_inv then addit("pp_fs", stems.pp, "a") -- make_plural() handles the complexities of e.g. 'vist' of [[veure]] -> 'vistos'/'vists' and 'romàs' of -- [[romandre]] -> 'romasos'. We need to use flatmap_general() because make_plural() may return more than one -- plural, and we need to use map_general() on the result, applying combine_stem_ending(), to ensure that -- prefixes get properly added and plurals like 'amads' of stem 'amad' of [[amar]] get converted to 'amats'. insert_forms(base, "pp_mp", map_general(flatmap_general(stems.pp, function(form) -- Remove any # indicating that an accent will be dropped; it will be dropped in any case by make_plural(). form = form:gsub("#$", "") return com.make_plural(form, "m") end), function(form) return combine_stem_ending(base, form, "", "is full word") end)) addit("pp_fp", stems.pp, "es") end end local function add_imperatives(base) if base.noimp then return end -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) -- Copy pres2p to imperative plural since they are almost always the same. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) return form end)) -- Copy subjunctives to imperatives. for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function fix_double_umlauts(base) for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do form.form = form.form:gsub("üï", "uï") end end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end local function link_clitic(clitic) return (clitic:gsub("([^ %-]+)", "[[%1]]")) end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = link_clitic(clitic) .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Suffix `form` with `clitic`. Add links as appropriate unless the user requested no links. Check whether form already -- has brackets (as will be the case if the form has a fixed clitic). local function suffix_clitic_to_form(base, clitic, form) local autolink = not base.alternant_multiword_spec.args.noautolinkverb if base.alternant_multiword_spec.args.noautolinkverb then return form .. clitic else local clitic_suf = link_clitic(clitic) if form:find("%[%[") then return form .. clitic_suf else return "[[" .. form .. "]]" .. clitic_suf end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local persnum if slot:find("[123]") then persnum = slot:match("^.*_(.-)$") else persnum = "3s" end local function get_proclitic(form) --if not do_reflexive then -- return base.clitic if form:find("^[aeiouh]") then return proclitic_elided_person_number_to_reflexive_pronoun[persnum] else return proclitic_non_elided_person_number_to_reflexive_pronoun[persnum] end end local function get_enclitic(form) --if not do_reflexive then -- return base.clitic if rfind(form, C .. "$") or rfind(form, V .. "[iu]$") and not form:find("[gq]ui$") then return enclitic_non_elided_person_number_to_reflexive_pronoun[persnum] else return enclitic_elided_person_number_to_reflexive_pronoun[persnum] end end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = slot:find("infinitive") or slot:find("gerund") or slot:find("^imp_") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{ca-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "ca-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, get_proclitic(form), "... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then -- Add clitic after form. for _, form in ipairs(base.forms[slot]) do form.form = suffix_clitic_to_form(base, get_enclitic(form.form), form.form) end end elseif not do_joined then -- Add clitic before form. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, get_proclitic(form.form), "", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{ca-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) if base.noimp then return end -- Copy subjunctives to negative imperatives, preceded by "no". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "no " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[no]] " .. form else return "[[no]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) construct_stems(base) add_present_indic(base) add_present_subj(base) add_finite_non_present(base) add_non_finite_forms(base) fix_double_umlauts(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[no]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif first_element:find("^var:") then if #dot_separated_group > 1 then parse_err(("Can't attach footnotes to 'var:' spec '%s'"):format(first_element)) end base.var = first_element:match("^var:(.*)$") elseif first_element:find(":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values_for_override(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}, "is form override") end else parse_err("Unrecognized spec '" .. first_element .. "'") end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form so we can use it below in the 'lemma_linked' -- form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = rmatch(refl_verb, "^(.-)('s)$") end if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve links in multiword -- lemmas and include links in non-lemma forms rather than allowing the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.input_stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} base.orig_verb = base.verb -- in case of a 'like = "..."' redirect if not base.no_built_in then local function match_built_in_spec(verb, built_in_spec) local prefix, non_prefixed_verb if type(built_in_spec.match) == "function" then prefix, non_prefixed_verb = built_in_spec.match(verb) elseif built_in_spec.match:find("^%^") and rsub(built_in_spec.match, "^%^", "") == verb then -- begins with ^, for exact match, and matches prefix, non_prefixed_verb = "", verb else prefix, non_prefixed_verb = rmatch(verb, "^(.*)(" .. built_in_spec.match .. ")$") end return prefix, non_prefixed_verb end local function find_built_in(verb, var) for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then if not built_in_spec.var then if var then error(("Can't specify a variant spec 'var:%s' with verb '%s'"):format(var, verb)) end return prefix, non_prefixed_verb, built_in_spec elseif not var then local possible_vars = {} for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then table.insert(possible_vars, built_in_spec.var) end end error(("For verb '%s', must specify a variant using 'var:...'; possible values are %s"):format( verb, table.concat(possible_vars, ", "))) elseif built_in_spec.var == var then return prefix, non_prefixed_verb, built_in_spec end end end return nil end local prefix, non_prefixed_verb, built_in_spec = find_built_in(base.verb, base.var) if prefix then -- we found a built-in verb if built_in_spec.like then -- we found a redirect to another verb that has the same conjugation, just a different infinitive base.verb = prefix .. built_in_spec.like local new_prefix, new_non_prefixed_verb, new_built_in_spec = find_built_in(base.verb, built_in_spec.likevar) if new_prefix then -- redirected to another built-in verb base.prefix = new_prefix base.non_prefixed_verb = new_non_prefixed_verb built_in_spec = new_built_in_spec else built_in_spec = nil end else base.prefix = prefix base.non_prefixed_verb = non_prefixed_verb end end if built_in_spec then -- we found a built-in verb, possibly redirecting to another built-in verb for stem, forms in pairs(built_in_spec.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.input_stems[stem] = forms end end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.input_stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)(re)$") if not inf_stem then inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiu]r)$") end if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end -- Remove accents from e.g. [[parèixer]], [[córrer]]. inf_stem = com.remove_accents(inf_stem) -- Save full infinitive stem for use in future and conditional. base.inf_stem = (inf_stem .. suffix):gsub("e$", "") local stem = inf_stem if suffix == "re" then -- verbs in -ldre, -ndre have stem without the d stem = stem:gsub("([ln])d$", "%1") elseif suffix == "ur" then stem = stem .. "u" end base.conj_vowel = (suffix == "re" or suffix == "ur") and "e" or suffix:gsub("r$", "") -- If the stem is followed by a front vowel, convert it to its "back" form before calling combine_stem_ending(), -- which expects the "back" form of the stem and may convert it back to the "front" form. Don't do this conversion -- for ï so we leave [[arguïr]] (underlyingly 'argüïr') as 'argu' ("back" form), which becomes 'argü' ("front" form) -- before front vowel ï and we end up with base.stem containing the underlying form 'argüï'. We remove the first of -- two umlauts in a row in a postprocessing step (fix_double_umlauts()). if rfind(suffix, "^[ei]") then stem = com.front_to_back(stem) end -- Use combine_stem_ending() so we get ï if necessary. base.stem = combine_stem_ending(base, stem, base.conj_vowel, false, "dont include prefix") -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.input_stems[indicator_flag] end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:pt-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Catalan verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, cat .. "ภาษากาตาลา") end end if check_for_red_links and alternant_multiword_spec.source_template == "ca-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("verbs with red links in their inflection tables") must_break = true break end end end end if must_break then break end end end map_general(base.output_stems.stem, function(stem) local stem_base, conj_vowel = split_conj_vowel(stem) local need_no_eix_infix = true if conj_vowel ~= base.conj_vowel then insert_ann("conj", "[[ภาคผนวก:คำกริยาภาษากาตาลา#คำกริยาไม่ปรกติ|การผันรูปผสม]]") insert_cat("mixed conjugation verbs") elseif conj_vowel == "a" then insert_ann("conj", "[[ภาคผนวก:คำกริยาภาษากาตาลา#การผันรูปที่หนึ่ง|การผันรูปที่หนึ่ง]]") insert_cat("first conjugation verbs") elseif conj_vowel == "e" then insert_ann("conj", "[[ภาคผนวก:คำกริยาภาษากาตาลา#การผันรูปที่สอง|การผันรูปที่สอง]]") insert_cat("second conjugation verbs") elseif conj_vowel == "i" then insert_ann("conj", "[[ภาคผนวก:คำกริยาภาษากาตาลา#การผันรูปที่สาม|การผันรูปที่สาม]]") insert_cat("third conjugation verbs") need_no_eix_infix = false map_general(base.output_stems.eix_infix, function(form) if form == "+" then insert_ann("eix_infix", "with ''-eix-''") insert_cat("third conjugation verbs with -eix-") elseif form == "-" then insert_ann("eix_infix", "without ''-eix-''") insert_cat("third conjugation verbs without -eix-") end end) else error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i and split_conj_vowel() didn't catch it" ):format(stem)) end if need_no_eix_infix then insert_ann("eix_infix", "no infix") end end) if base.input_stems.g_infix then insert_ann("g_infix", "with velar infix") insert_cat("verbs with velar infix") else insert_ann("g_infix", "no infix") end if base.output_stems.irreg then insert_ann("irreg", "ไม่ปรกติ") insert_cat("คำกริยาไม่ปรกติ") else insert_ann("irreg", "ปรกติ") end if base.only3s then insert_ann("defective", "อบุรุษ") insert_cat("คำอบุรุษกริยา") elseif base.only3sp then insert_ann("defective", "บุรุษที่สามเท่านั้น") insert_cat("คำกริยาบุรุษที่สามเท่านั้น") elseif base.only3p then insert_ann("defective", "บุรุษที่สามพหูพจน์เท่านั้น") insert_cat("คำกริยาบุรุษที่สามพหูพจน์เท่านั้น") elseif base.no_pres_stressed then insert_ann("defective", "บกพร่อง") insert_cat("คำกริยาบกพร่อง") else insert_ann("defective", "บุรุษปรกติ") end --if base.clitic then -- insert_cat("verbs with lexical clitics") --end if base.refl then insert_cat("คำกริยาสะท้อน") end local stem_base, conj_vowel = split_conj_vowel(base.stem) local cons_alt if conj_vowel == "i" and base.output_stems.eix_infix == "+" then -- no alternations in verbs like [[afligir]] because all endings are front elseif stem_base:find("ç$") then cons_alt = "ç-c" elseif stem_base:find("c$") then cons_alt = "c-qu" elseif stem_base:find("g$") then cons_alt = "g-gu" elseif stem_base:find("gu$") then cons_alt = "gu-gü" elseif stem_base:find("j$") then cons_alt = "j-g" elseif stem_base:find("qu$") then cons_alt = "qu-qü" end if cons_alt then local desc = "สลับ " .. cons_alt insert_ann("cons_alt", desc) --insert_cat("คำกริยาที่" .. desc) m_table.insertIfNot(alternant_multiword_spec.categories, "คำกริยาภาษากาตาลาที่" .. desc) else insert_ann("cons_alt", "ไม่สลับพยัญชนะ") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.conj = {} ann.g_infix = {} ann.eix_infix = {} ann.irreg = {} ann.defective = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local conj = table.concat(ann.conj, " or ") if conj ~= "" then table.insert(ann_parts, conj) end local eix_infix = table.concat(ann.eix_infix, " or ") if eix_infix ~= "" and eix_infix ~= "no infix" then table.insert(ann_parts, eix_infix) end local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local g_infix = table.concat(ann.g_infix, " or ") if g_infix ~= "" and g_infix ~= "no infix" then table.insert(ann_parts, g_infix) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, ", ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then accel_obj.form = "verb-form-" .. reconstructed_verb_spec end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead">&nbsp; &nbsp; การผันรูปของ {title}</div> <div class="NavContent"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="3" class="roa-nonfinite-header" | <span title="infinitiu">รูปกริยากลาง</span> | colspan="5" | {infinitive} |- ! colspan="3" class="roa-nonfinite-header" | <span title="gerundi">รูปกริยาเป็นนาม</span> | colspan="5" | {gerund} |- ! rowspan="3" colspan="2" class="roa-nonfinite-header" | <span title="participi passat">รูปกริยาขยายอดีตกาล</span> | colspan="2" class="roa-nonfinite-header" | ! colspan="2" class="roa-nonfinite-header" | เพศชาย ! colspan="2" class="roa-nonfinite-header" | เพศหญิง |- ! colspan="2" class="roa-nonfinite-header" | เอกพจน์ | colspan="2" | {pp_ms} | colspan="2" | {pp_fs} |- ! colspan="2" class="roa-nonfinite-header" | พหูพจน์ | colspan="2" | {pp_mp} | colspan="2" | {pp_fp} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | บุรุษ ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม |- ! rowspan="6" class="roa-indicative-left-rail" | <span title="indicatiu">มาลาบอกเล่า</span> ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | <<jo>> ! class="roa-indicative-left-rail" | <<tu>> ! class="roa-indicative-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-indicative-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-indicative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-indicative-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="present">ปัจจุบันกาล</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imperfet">ไม่สมบูรณ์</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur">อนาคตกาล</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passat">อดีตกาลสิ้นสุด (สมบูรณ์)</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="condicional">มาลาเงื่อนไข</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" rowspan="3" | <span title="subjuntiu">มาลาสมมุติ</span> ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | <<jo>> ! class="roa-subjunctive-left-rail" | <<tu>> ! class="roa-subjunctive-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-subjunctive-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-subjunctive-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-subjunctive-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="present">ปัจจุบันกาล</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="imperfet">ไม่สมบูรณ์</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! rowspan="3" class="roa-imperative-left-rail" style="height:3em;" | <span title="imperatiu">มาลาสั่ง</span> ! class="roa-imperative-left-rail" | ! class="roa-imperative-left-rail" | &mdash; ! class="roa-imperative-left-rail" | <<tu>> ! class="roa-imperative-left-rail" | <<vostè>> ! class="roa-imperative-left-rail" | <<nosaltres>> ! class="roa-imperative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-imperative-left-rail" | <<vostès>> |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="afirmatiu">เชิงยืนยัน</span> | &mdash; | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="negatiu">เชิงปฏิเสธ</span> (<<no>>) | &mdash; | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, nil, "term") local ann_parts = {} if alternant_multiword_spec.annotation ~= "" then table.insert(ann_parts, alternant_multiword_spec.annotation) end if alternant_multiword_spec.args.titlenote then table.insert(ann_parts, alternant_multiword_spec.args.titlenote) end local annotation = table.concat(ann_parts, ", ") if annotation ~= "" then forms.title = forms.title .. " (" .. annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.title.getCurrentTitle().text local function in_template_space() return mw.title.getCurrentTitle().nsText == "แม่แบบ" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{ca-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "ca-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "ca-conj" or pagename == "ca-verb" or pagename == "ca-verb form of") and in_template_space() then arg1 = "amar<>" else arg1 = "<>" end end -- When called from {{ca-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "ca-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "ca-verb form of" and in_template_space() then verb_form_of_form = "ami" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "ca-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{ca-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["titlenote"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "ca-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export 0aoehuk7rmiar3yg102qvpn7gln3vtt escollir 0 248069 5729390 5385741 2026-07-20T07:52:06Z Octahedron80 267 /* การผันรูป */ 5729390 wikitext text/x-wiki == ภาษากาตาลา == === รากศัพท์ === จาก{{affix|ca|es-|collir}}, อาจจาก {{inh|ca|la-vul|*excolligere}}, จาก{{der|ca|la|ex-}} + {{m|la|colligo|colligere|t=รวบรวม}}. เทียบกับ{{cog|gl|escoller}}, {{cog|es|escoger}}, {{cog|pt|escolher}}, {{cog|ast|escoyer}}, {{cog|ext|escogel}}. === การออกเสียง === * {{ca-IPA}} * {{rhymes|i(ɾ)|lang=ca}} === คำกริยา === {{ca-verb|pres_1_sg=escullo}} # [[เลือก]] # [[เลือกตั้ง]] ==== การผันรูป ==== {{ca-conj}} ==== คำพ้องความ ==== * {{l|ca|triar}} * {{l|ca|elegir}} ==== ลูกคำ ==== * {{l|ca|escolliment}} 2le5t7z8m07tz5izj5hczivf4lsiymx 5729391 5729390 2026-07-20T07:53:52Z Octahedron80 267 /* ภาษากาตาลา */ 5729391 wikitext text/x-wiki == ภาษากาตาลา == === รากศัพท์ === จาก{{af|ca|es-|collir}}, หรือเป็นไปได้ว่าจาก{{inh|ca|la-vul|*excolligere}}, จาก{{der|ca|la|ex-}} + {{m|la|colligo|colligere|t=รวบรวม}}; เทียบ{{cog|gl|escoller}}, {{cog|es|escoger}}, {{cog|pt|escolher}}, {{cog|ast|escoyer}}, {{cog|ext|escogel}} === การออกเสียง === * {{ca-IPA}} * {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-escollir.wav|a=Catalonia}} * {{rhymes|ca|i(ɾ)|s=3}} === คำกริยา === {{ca-verb}} # [[เลือก]] # [[เลือกตั้ง]] ==== การผันรูป ==== {{ca-conj}} ==== คำพ้องความ ==== * {{l|ca|triar}} * {{l|ca|elegir}} ==== ลูกคำ ==== * {{l|ca|escolliment}} * {{l|ca|reescollir}} ==== อ่านเพิ่ม ==== * {{R:ca:IEC2}} hybk0x735is98jzqiylc1iuqfkh208h ແພບ 0 248479 5729258 1548361 2026-07-20T04:19:39Z Alifshinobi 397 /* ภาษาลาว */ 5729258 wikitext text/x-wiki == ภาษาลาว == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|th|แฟบ}}, {{cog|nod|ᨻᩯ᩠ᨷ}}, {{cog|kkh|ᨽᩮ᩠ᨷ}}, {{cog|khb|ᦶᦗᧇ}}, {{cog|shn|ၽႅပ်ႉ}} === การออกเสียง === {{lo-pron}} === คำคุณศัพท์ === {{lo-adj}} # [[แบน]] #: {{syn|lo|ແປ}} # [[บาง]] #: {{syn|lo|ບາງ}} j5bdmkjr5pkjdlt48wqlafzrmu590lg 5729259 5729258 2026-07-20T04:20:28Z Alifshinobi 397 /* ภาษาลาว */ 5729259 wikitext text/x-wiki == ภาษาลาว == === รากศัพท์ === มีรากศัพท์เดียวกับคำว่า {{l|lo|ແຟບ}}; ร่วมเชื้อสายกับ{{cog|th|แฟบ}}, {{cog|nod|ᨻᩯ᩠ᨷ}}, {{cog|kkh|ᨽᩮ᩠ᨷ}}, {{cog|khb|ᦶᦗᧇ}}, {{cog|shn|ၽႅပ်ႉ}} === การออกเสียง === {{lo-pron}} === คำคุณศัพท์ === {{lo-adj}} # [[แบน]] #: {{syn|lo|ແປ}} # [[บาง]] #: {{syn|lo|ບາງ}} cg2ywba5ya6hfct7tlte5n4pz527zpe ບຽນ 0 256291 5729198 1574497 2026-07-20T03:30:07Z Alifshinobi 397 /* ภาษาลาว */ 5729198 wikitext text/x-wiki == ภาษาลาว == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|th|เบียน}}, {{cog|nod|ᨷ᩠ᨿᩁ}} === การออกเสียง === {{lo-pron}} === คำกริยา === {{lo-verb}} # {{lb|lo|สกรรม}} [[เบียน]] #: {{syn|lo|ຂົ່ມເຫງ|ຄັ້ນ|ບີບ}} 68vbpahtmcbh2et9gpwrhvb28qw0bkp link 0 257191 5729016 2001188 2026-07-19T16:04:07Z ZilentFyld 6541 5729016 wikitext text/x-wiki == ภาษาอังกฤษ == {{lexitronimport}} === การออกเสียง{{botenimport}} === * {{IPA|en|/lɪŋk/}} * {{audio|en|en-us-link.ogg|a=US}} * {{rhymes|ɪŋk|lang=en}} === คำนาม === {{en-noun}}{{botenimport}} # ข้อลูกโซ่ # สิ่งที่เชื่อมต่อ # หน่วยความยาว เท่ากับ 7.92 # หน่วยระบบสื่อสาร # คบไฟ === คำกริยา === {{en-verb}}{{botenimport}} # {{lb|en|อกรรม}} เชื่อม # {{lb|en|สกรรม}} เชื่อม == ภาษาเยอรมัน == === รากศัพท์ === จาก{{inh|de|gmh|linc}}, {{m|gmh|lënc}}, จาก{{inh|de|goh|*link}}, {{m|goh|lënk|t=ซ้าย}}. เปรียบเทียบกับ{{cog|goh|lënka|t=มือซ้าย}} === การออกเสียง === * {{IPA|de|/lɪŋk/}} * {{audio|de|De-link.ogg|a=Germany (Berlin)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st}} # {{lb|de|only|_|attributive|_|and|_|not comparable}} [[ซ้าย]] #: {{uxi|de|auf der '''linken''' Seite|t=ทางด้าน'''ซ้าย'''}} #: {{uxi|de|ihr '''linker''' Fuß|t=เท้า'''ซ้าย'''ของหล่อน}} # {{lb|de|colloquial}} [[ไม่]][[น่า]][[ไว้วางใจ]] {{gloss|มีพิรุธ, ไม่ถูกต้อง, เสื่อมเสียชื่อเสียง, น่าสงสัย}} # {{lb|de|colloquial}} [[เจ้าเล่ห์]], [[ฉลาดแกมโกง]] ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} io4niv0f11anaw52ec9edx2dq2pentx ແກວດ 0 258259 5729057 2189816 2026-07-20T01:26:14Z Alifshinobi 397 /* รากศัพท์ */ 5729057 wikitext text/x-wiki {{also/auto}} == ภาษาลาว == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|tts|แกวด}}, {{cog|nod|ᨠ᩠ᩅᩯᨯ,ᨡ᩠ᩅᩯᨯ}} === การออกเสียง === {{lo-pron}} === คำกริยา === {{lo-verb}} # {{lb|lo|สกรรม}} [[กำหนด]], [[หมาย]], [[จำ]][[ไว้]] #: {{syn|lo|ກຳໜົດ|ໝາຍ}} ==== ลูกคำ ==== {{col4|lo |ແກວດກົດໝາຍ }} 1ra2i1rrxug456gol9meuxqrwyd1p8y ᩃ᩵ᩣ᩠ᨿ 0 262655 5729166 4757587 2026-07-20T02:55:48Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729166 wikitext text/x-wiki {{also/auto}} == ภาษาเขิน == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|nod|ᩃ᩵ᩣ᩠ᨿ}}, {{cog|lo|ລ່າຍ}}, {{cog|khb|ᦟᦻᧈ}} === การออกเสียง === * {{IPA|kkh|/laːj˨˨/|a=เชียงตุง}} === คำกริยา === {{kkh-verb}} # {{lb|kkh|สกรรม}} [[อำ]], [[หลอก]], [[พราง]] ==== คำพ้องความ ==== {{col4|kkh |ᨻᩮ᩠ᨯ |ᩋᩴᩣ |ᩉ᩠ᩃᩬᨠ |ᨻᩕᩣ᩠ᨦ }} === อ้างอิง === {{รายการอ้างอิง}} * ᨩᩣ᩠ᨿᨪᩮᨩᩮ᩠ᨾ. (n.d.). ''ᩋᨽᩥᨵᩤᨶᩈᩢ᩠ᨷᩅᩰᩉᩣ᩠ᩁᨸᩖᩯᨽᩣᩈᩣᨡᩨ᩠ᨶ''. == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=ล่าย}} === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|kkh|ᩃ᩵ᩣ᩠ᨿ}}, {{cog|lo|ລ່າຍ}}, {{cog|khb|ᦟᦻᧈ}} === การออกเสียง === * {{IPA|nod|/laːj˦˨/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # [[อำ]], [[หลอก]], [[พราง]] #: {{syn|nod|ᨧᩩ|ᩋᩣᩴ|ᩉᩖᩬᨠ|ᨻᩕᩣ᩠ᨦ}} rmmru76x0vmc6gehafpreg5blsih3w8 5729167 5729166 2026-07-20T02:56:08Z Alifshinobi 397 /* คำพ้องความ */ 5729167 wikitext text/x-wiki {{also/auto}} == ภาษาเขิน == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|nod|ᩃ᩵ᩣ᩠ᨿ}}, {{cog|lo|ລ່າຍ}}, {{cog|khb|ᦟᦻᧈ}} === การออกเสียง === * {{IPA|kkh|/laːj˨˨/|a=เชียงตุง}} === คำกริยา === {{kkh-verb}} # {{lb|kkh|สกรรม}} [[อำ]], [[หลอก]], [[พราง]] ==== คำพ้องความ ==== {{col4|kkh |ᨻᩮ᩠ᨯ |ᩋᩣᩴ |ᩉᩖᩬᨠ |ᨻᩕᩣ᩠ᨦ }} === อ้างอิง === {{รายการอ้างอิง}} * ᨩᩣ᩠ᨿᨪᩮᨩᩮ᩠ᨾ. (n.d.). ''ᩋᨽᩥᨵᩤᨶᩈᩢ᩠ᨷᩅᩰᩉᩣ᩠ᩁᨸᩖᩯᨽᩣᩈᩣᨡᩨ᩠ᨶ''. == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=ล่าย}} === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|kkh|ᩃ᩵ᩣ᩠ᨿ}}, {{cog|lo|ລ່າຍ}}, {{cog|khb|ᦟᦻᧈ}} === การออกเสียง === * {{IPA|nod|/laːj˦˨/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # [[อำ]], [[หลอก]], [[พราง]] #: {{syn|nod|ᨧᩩ|ᩋᩣᩴ|ᩉᩖᩬᨠ|ᨻᩕᩣ᩠ᨦ}} 58unzis82b6b55oaresgwvw3mj4yt2i 5729168 5729167 2026-07-20T02:57:16Z Alifshinobi 397 /* คำกริยา */ 5729168 wikitext text/x-wiki {{also/auto}} == ภาษาเขิน == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|nod|ᩃ᩵ᩣ᩠ᨿ}}, {{cog|lo|ລ່າຍ}}, {{cog|khb|ᦟᦻᧈ}} === การออกเสียง === * {{IPA|kkh|/laːj˨˨/|a=เชียงตุง}} === คำกริยา === {{kkh-verb}} # {{lb|kkh|สกรรม}} [[อำ]], [[หลอก]], [[พราง]] ==== คำพ้องความ ==== {{col4|kkh |ᨻᩮ᩠ᨯ |ᩋᩣᩴ |ᩉᩖᩬᨠ |ᨻᩕᩣ᩠ᨦ }} === อ้างอิง === {{รายการอ้างอิง}} * ᨩᩣ᩠ᨿᨪᩮᨩᩮ᩠ᨾ. (n.d.). ''ᩋᨽᩥᨵᩤᨶᩈᩢ᩠ᨷᩅᩰᩉᩣ᩠ᩁᨸᩖᩯᨽᩣᩈᩣᨡᩨ᩠ᨶ''. == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=ล่าย}} === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|kkh|ᩃ᩵ᩣ᩠ᨿ}}, {{cog|lo|ລ່າຍ}}, {{cog|khb|ᦟᦻᧈ}} === การออกเสียง === * {{IPA|nod|/laːj˦˨/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} [[หลอกลวง]] #: {{syn|nod|ᨧᩩ|ᩉᩖᩬᨠ}} # {{lb|nod|สกรรม}} [[อำ]], [[พราง]] #: {{syn|nod|ᨻᩕᩣ᩠ᨦ|ᩋᩣᩴ}} h19lbij1u6t0zl6sdzhp6tmcrk4nupz ᨲ᩠ᨿ᩵ᩅ 0 285300 5729034 5721678 2026-07-19T22:46:28Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729034 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=เตี่ยว|s=เต่ว}} === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|th|เตี่ยว}}, {{cog|lo|ຕ່ຽວ,ກະຕ່ຽວ}}, {{cog|tts|เตี่ยว}} หรือ {{m|tts|กะเตี่ยว}}, {{cog|kkh|ᨲ᩠ᨿ᩵ᩴ}}, {{cog|khb|ᦵᦎᧁᧈ}}, {{cog|shn|တဵဝ်ႇ}} === การออกเสียง === * {{IPA|nod|/tew˨˩/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # [[กางเกง]] #: {{syn|nod|ᨠᩰᩫ᩠ᨶ}} {{topics|nod|เครื่องนุ่งห่ม}} t3mbia7svp2gf59ooalyytulth4hppj มอดูล:de-verb 828 293778 5729199 5688358 2026-07-20T03:33:35Z Octahedron80 267 5729199 Scribunto text/plain local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present first singular) and "subc_subii_3p" (subordinate-clause subjunctive II third plural). Each slot is filled with zero or more forms. -- "form" = The conjugated German form representing the value of a given slot. -- "lemma" = The dictionary form of a given German term. For German, always the infinitive. ]=] --[=[ FIXME: 1. Handle fensterln. (DONE) 2. Handle spie- past tense of speien. (DONE) 3. Make sure rathen, verheirathen work. (DONE) 4. Modify einfix to better handle managen, framen. (DONE) 5. Use variant codes so variant imperatives with and without -e match up in conjoined verbs e.g. [[ausschneiden und einfügen]]. 6. In conjoined verbs e.g. [[ausschneiden und einfügen]], don't repeat auxiliaries. 7. Support 'nosplitprefix' meaning that no forms exist where the prefix is split form the main verb, e.g. [[voreinstellen]]. (DONE) --]=] local lang = require("Module:languages").getByCode("de") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local rfind = m_string_utilities.find local rmatch = m_string_utilities.match local rsplit = m_string_utilities.split local lcfirst = m_string_utilities.lcfirst local function link_term(term, face) return m_links.full_link({ lang = lang, term = term }, face) end local vowel = "aeiouyäëïöüÿáéíóúýàèìòùỳâêîôûŷãẽĩõũỹ" local vowel_c = "[" .. vowel .. "]" local not_vowel_c = "[^" .. vowel .. "]" local function ends_in_dt(stem) return stem:find("[dt]h?$") end local inseparable_prefixes = { "be", "emp", "ent", "er", "ge", "miss", "miß", "ver", "zer", -- can also be separable "durch", "hinter", "über", "um", "unter", "voll", "wider", "wieder", } local wuerde = link_term("würde", "term") local past_subjunctive_single_word_preferred = m_table.listToSet { "haben", "sein", "können", "müssen", "dürfen", "mögen", "sollen", "wollen", "werden" } local past_subjunctive_single_word_preferred_footnote = "[แนะนำให้ใช้, เลี่ยงรูปประกอบ " .. wuerde .. "]" local past_subjunctive_single_word_often_used = m_table.listToSet { "bleiben", "brauchen", "bringen", "fallen", "finden", "geben", "gehen", "halten", "heißen", "heissen", "kommen", "laufen", "lassen", "liegen", "nehmen", "sehen", "stehen", "tun", "thun", "wissen" } local past_subjunctive_single_word_often_used_footnote = "[พบได้ทั้งรูปนี้และรูปประกอบ " .. wuerde .. "]" local past_subjunctive_single_word_rare_footnote = "[พบได้น้อยมากยกเว้นในบริบทที่เป็นทางการมาก, แนะนำให้ใช้รูปประกอบ " .. wuerde .. "]" local schst_footnote = "[ใช้ได้ในลักษณะเป็นทางการในออสเตรีย, ใช้ในภาษาปากในทุกพื้นที่ที่พูดภาษาเยอรมัน]" local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = { "1s", "2s", "3s", "1p", "2p", "3p", } local persnum_to_index = {} for k, v in pairs(person_number_list) do persnum_to_index[v] = k end local imp_person_number_list = { "2s", "2p", } local verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"pres_part", "pres|part"}, {"perf_part", "past|part"}, {"zu_infinitive", "zu"}, -- will be handled specially by [[Module:accel/de]] {"aux", "-"}, } local verb_slots_subordinate_clause = { } local verb_slots_composed = { } -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is the set of inflection tags to add after the person/number tags, -- or "-" to use "-" as the inflection tags (which indicates that no accelerator entry -- should be generated). local function add_slot_personal(verb_slots, slot_prefix, tag_suffix) for persnum, persnum_tag in pairs(all_persons_numbers) do local slot = slot_prefix .. "_" .. persnum if tag_suffix == "-" then table.insert(verb_slots, {slot, "-"}) else table.insert(verb_slots, {slot, persnum_tag .. "|" .. tag_suffix}) end end end add_slot_personal(verb_slots_basic, "pres", "pres") add_slot_personal(verb_slots_basic, "subi", "sub:I") add_slot_personal(verb_slots_basic, "pret", "pret") add_slot_personal(verb_slots_basic, "subii", "sub:II") table.insert(verb_slots_basic, {"imp_2s", "s|imp"}) table.insert(verb_slots_basic, {"imp_2p", "p|imp"}) add_slot_personal(verb_slots_subordinate_clause, "subc_pres", "dep|pres") add_slot_personal(verb_slots_subordinate_clause, "subc_subi", "dep|sub:I") add_slot_personal(verb_slots_subordinate_clause, "subc_pret", "dep|pret") add_slot_personal(verb_slots_subordinate_clause, "subc_subii", "dep|sub:II") add_slot_personal(verb_slots_composed, "perf_ind", "-") add_slot_personal(verb_slots_composed, "perf_sub", "-") add_slot_personal(verb_slots_composed, "plup_ind", "-") add_slot_personal(verb_slots_composed, "plup_sub", "-") table.insert(verb_slots_composed, {"futi_inf", "-"}) add_slot_personal(verb_slots_composed, "futi_subi", "-") add_slot_personal(verb_slots_composed, "futi_ind", "-") add_slot_personal(verb_slots_composed, "futi_subii", "-") table.insert(verb_slots_composed, {"futii_inf", "-"}) add_slot_personal(verb_slots_composed, "futii_subi", "-") add_slot_personal(verb_slots_composed, "futii_ind", "-") add_slot_personal(verb_slots_composed, "futii_subii", "-") local all_verb_slots = {} for _, slot_and_accel in ipairs(verb_slots_basic) do table.insert(all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(verb_slots_subordinate_clause) do table.insert(all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(verb_slots_composed) do table.insert(all_verb_slots, slot_and_accel) end local pronouns = { "ich", "du", "er", "wir", "ihr", "sie", } local irreg_verbs = { ["haben"] = { ["pres"] = { "habe", "hast", "hat", "haben", "habt", "haben", }, ["pret"] = { "hatte", "hattest", "hatte", "hatten", "hattet", "hatten", }, ["subi"] = { "habe", "habest", "habe", "haben", "habet", "haben", }, ["subii"] = { "hätte", "hättest", "hätte", "hätten", "hättet", "hätten", }, ["imp"] = { {"hab", "habe"}, "habt", }, ["presp"] = "habend", ["pp"] = "habt", }, ["sein"] = { ["pres"] = { "bin", "bist", "ist", "sind", "seid", "sind", }, ["pret"] = { "war", "warst", "war", "waren", "wart", "waren", }, ["subi"] = { "sei", {"seist", "seiest"}, "sei", "seien", "seiet", "seien", }, ["subii"] = { "wäre", {"wärst", "wärest"}, "wäre", "wären", {"wärt", "wäret"}, "wären", }, ["imp"] = { "sei", "seid", }, ["presp"] = "seiend", ["pp"] = "wesen", }, ["tun"] = { ["pres"] = { "tue", "tust", "tut", "tun", "tut", "tun", }, ["pret"] = { "tat", {"tatest", "tatst"}, "tat", "taten", "tatet", "taten", }, ["subi"] = { "tue", "tuest", "tue", "tuen", "tuet", "tuen", }, ["subii"] = { "täte", "tätest", "täte", "täten", "tätet", "täten", }, ["imp"] = { {"tu", "tue"}, "tut", }, ["presp"] = "tuend", ["pp"] = "tan", }, -- FIXME, maybe we should construct this automatically from "tun". ["thun"] = { ["pres"] = { "thue", "thust", "thut", "thun", "thut", "thun", }, ["pret"] = { "that", {"thatest", "thatst"}, "that", "thaten", "thatet", "thaten", }, ["subi"] = { "thue", "thuest", "thue", "thuen", "thuet", "thuen", }, ["subii"] = { "thäte", "thätest", "thäte", "thäten", "thätet", "thäten", }, ["imp"] = { {"thu", "thue"}, "thut", }, ["presp"] = "thuend", ["pp"] = "than", }, ["werden"] = { ["pres"] = { "werde", "wirst", "wird", "werden", "werdet", "werden", }, ["pret"] = { {"wurde", {form = "ward", footnotes = {"[โบราณ]"}}}, {"wurdest", {form = "wardst", footnotes = {"[โบราณ]"}}}, {"wurde", {form = "ward", footnotes = {"[โบราณ]"}}}, "wurden", "wurdet", "wurden", }, ["subi"] = { "werde", "werdest", "werde", "werden", "werdet", "werden", }, ["subii"] = { "würde", "würdest", "würde", "würden", "würdet", "würden", }, ["imp"] = { {"werd", "werde"}, "werdet", }, ["presp"] = "werdend", ["pp"] = "worden", }, } local reflexive_possessive_forms = { ["sein"] = {"mein", "dein", "sein", "unser", "euer", "ihr"}, ["seine"] = {"meine", "deine", "seine", "unsere", "eure", "ihre"}, ["seinen"] = {"meinen", "deinen", "seinen", "unseren", "euren", "ihren"}, ["seinem"] = {"meinem", "deinem", "seinem", "unserem", "eurem", "ihrem"}, ["seiner"] = {"meiner", "deiner", "seiner", "unserer", "eurer", "ihrer"}, ["seines"] = {"meines", "deines", "seines", "unseses", "eures", "ihres"}, } local reflexive_case_forms = { ["accpron"] = {"mich", "dich", "sich", "uns", "euch", "sich"}, ["datpron"] = {"mir", "dir", "sich", "uns", "euch", "sich"}, } local function skip_slot(base, slot) if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if base.nosplitprefix then -- Verbs that don't allow split prefixes, e.g. [[voreinstellen]], don't have forms where the prefix is -- split from the main verb, including the present, preterite, subjunctive I and II and imperative (but -- not the subordinate clause equivalents). return slot:find("^pre[st]") or slot:find("^subi") or slot:find("^imp_") end if base.only3s and not slot:find("3s") or base.only3sp and not slot:find("3[sp]") then return true end return false end local function strip_spaces(text) return text:gsub("^%s*(.-)%s*", "%1") end local function escape_sein_sich_indicators(arg1) if not arg1:find("pron>") then return arg1 end local segments = put.parse_balanced_segment_run(arg1, "<", ">") -- Loop over every other segment. The even-numbered segments are angle-bracket specs while -- the odd-numbered segments are the text between them. for i = 2, #segments - 1, 2 do if segments[i] == "<accpron>" then segments[i] = "⦃⦃accpron⦄⦄" elseif segments[i] == "<datpron>" then segments[i] = "⦃⦃datpron⦄⦄" elseif segments[i] == "<pron>" then segments[i] = "⦃⦃pron⦄⦄" end end return table.concat(segments) end local function undo_escape_form(form) -- assign to var to throw away second value local newform = form:gsub("⦃⦃", "<"):gsub("⦄⦄", ">") return newform end local function remove_sein_sich_indicators(form) -- assign to var to throw away second value local newform = form:gsub("⦃⦃.-⦄⦄", "") return newform end local function replace_sein_sich_indicators(slot, form) if not form:find("⦃") then return form end local persnum = slot:match("^.*_([123][sp])$") local index if persnum then index = persnum_to_index[persnum] else index = 3 end form = form:gsub("sich(%]*)⦃⦃accpron⦄⦄", function(brackets) return reflexive_case_forms.accpron[index] .. brackets end) form = form:gsub("sich(%]*)⦃⦃datpron⦄⦄", function(brackets) return reflexive_case_forms.datpron[index] .. brackets end) form = form:gsub("(seine?[mnrs]?)(%]*)⦃⦃pron⦄⦄", function(sein_form, brackets) if reflexive_possessive_forms[sein_form] then return reflexive_possessive_forms[sein_form][index] .. brackets else error("Unrecognized sein-form '" .. sein_form .. "' in slot " .. slot .. ": " .. undo_escape_form(form)) end end) form = form:gsub("sein%]%]e?[mnrs]?⦃⦃pron⦄⦄", function(sein_ending) local sein_form = "sein" .. sein_ending if reflexive_possessive_forms[sein_form] then return reflexive_possessive_forms["sein"][index] .. "|" .. reflexive_possessive_forms[sein_form][index] .. "]]" else error("Unrecognized sein-form '" .. sein_form .. "' in slot " .. slot .. ": " .. undo_escape_form(form)) end end) if form:find("⦃⦃") or form:find("⦄⦄") then error("Unrecognized pronoun substitution in slot " .. slot .. ": " .. undo_escape_form(form)) end return form end local function combine_stem_ending(slot, stem, ending) local ending_with_pound = ending .. "#" if ending_with_pound:find("^st[ #]") then if rfind(stem, "[sxzß]$") then ending = ending:gsub("^s", "") elseif stem:find("st$") then -- bersten ending = ending:gsub("^st", "") end elseif ending_with_pound:find("^t[ #]") and stem:find("th?$") then ending = ending:gsub("^t", "") end return replace_sein_sich_indicators(slot, stem .. ending) end local function add(base, slot, stems, endings, footnotes) if skip_slot(base, slot) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(slot, stem, ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, iut.combine_footnotes(footnotes, base.all_footnotes)) end local function add_multi(base, slot, stems_and_endings, footnotes) if skip_slot(base, slot) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(slot, stem, ending) end iut.add_multiple_forms(base.forms, slot, stems_and_endings, do_combine_stem_ending, nil, nil, iut.combine_footnotes(footnotes, base.all_footnotes)) end local function add3(base, slot, stems1, stems2, endings, footnotes) return add_multi(base, slot, {stems1, stems2, endings}, footnotes) end local function add4(base, slot, stems1, stems2, stems3, endings, footnotes) return add_multi(base, slot, {stems1, stems2, stems3, endings}, footnotes) end local function add5(base, slot, stems1, stems2, stems3, stems4, endings, footnotes) return add_multi(base, slot, {stems1, stems2, stems3, stems4, endings}, footnotes) end local function get_subii_note(base) if base.from_headword then -- don't include autogenerated note if from_headword, so it doesn't end up in the headword qualifiers return nil end if past_subjunctive_single_word_preferred[base.base_verb] then return {past_subjunctive_single_word_preferred_footnote} elseif past_subjunctive_single_word_often_used[base.base_verb] then return {past_subjunctive_single_word_often_used_footnote} end return {past_subjunctive_single_word_rare_footnote} end local function add_zu_infinitive(base) if base.any_pre_pref then local zu if base.pre_pref == "" or base.pre_pref:find(" $") then zu = "zu " else zu = "zu" end add(base, "zu_infinitive", base.pre_pref .. zu, base.bare_infinitive) end end local function add_present(base, pretpres) local stems = base.infstem local stems23 = base.pres_23 or stems local function doadd(slot_pref, form_pref) -- Do forms based off the infinitive stem. for _, stemform in ipairs(stems) do local prefixed_stem = form_pref .. stemform.form local syncopated_stem = base.unstressed_el_er and prefixed_stem:gsub("e([lr])$", "%1") local function addit(slot, stem, ending, footnotes) add(base, slot_pref .. slot, stem, ending .. (slot_pref == "" and base.post_pref or ""), iut.combine_footnotes(footnotes, stemform.footnotes)) end -- first singular present indicative if not pretpres then -- pres_1s for preterite-present verbs used pres23 stem if base.unstressed_el_er then addit("pres_1s", syncopated_stem, "e") addit("pres_1s", prefixed_stem, "e") addit("pres_1s", prefixed_stem, "") else addit("pres_1s", prefixed_stem, "e") end end -- plural present indicative local e_in_2p = ends_in_dt(prefixed_stem) or base.unstressed_e_infix if e_in_2p then addit("pres_2p", prefixed_stem, "et") else addit("pres_2p", prefixed_stem, "t") end if base.unstressed_el_er or base.unstressed_erl then addit("pres_1p", prefixed_stem, "n") addit("pres_3p", prefixed_stem, "n") else addit("pres_1p", prefixed_stem, "en") addit("pres_3p", prefixed_stem, "en") end -- subjunctive I addit("subi_1s", prefixed_stem, "e") addit("subi_2s", prefixed_stem, "est") addit("subi_3s", prefixed_stem, "e") addit("subi_2p", prefixed_stem, "et") if base.unstressed_el_er then addit("subi_1s", syncopated_stem, "e") addit("subi_2s", syncopated_stem, "est") addit("subi_3s", syncopated_stem, "e") addit("subi_2p", syncopated_stem, "et") end if base.unstressed_el_er then addit("subi_1p", prefixed_stem, "n") addit("subi_3p", prefixed_stem, "n") else addit("subi_1p", prefixed_stem, "en") addit("subi_3p", prefixed_stem, "en") end -- imperative plural; most preterite-present verbs don't have it, and [[wissen]] is handled below if slot_pref == "" and not pretpres then if e_in_2p then addit("imp_2p", prefixed_stem, "et") else addit("imp_2p", prefixed_stem, "t") end end end -- Do forms based off of pres23 stem (also includes pres_1sg in preterite-present verbs). for _, stem23form in ipairs(stems23) do local prefixed_stem23 = form_pref .. stem23form.form local function addit(slot, stem, ending, footnotes) add(base, slot_pref .. slot, stem, ending .. (slot_pref == "" and base.post_pref or ""), iut.combine_footnotes(footnotes, stem23form.footnotes)) end if pretpres then -- Totally different code for preterite-present singular and imperative. addit("pres_1s", prefixed_stem23, "") addit("pres_2s", prefixed_stem23, "st") addit("pres_3s", prefixed_stem23, "") if slot_pref == "" and base.base_verb == "wissen" then -- Only [[wissen]] among the preterite-present verbs has an imperative. addit("imp_2s", "wiss", "e") -- dewikt mentions 'wisset' as an alternative, but not in Duden addit("imp_2p", "wiss", "t") end else -- Normal code path. local stem23_is_same_as_stem for _, stemform in ipairs(stems) do if stemform.form == stem23form.form then stem23_is_same_as_stem = true break end end -- present 2/3 singular local e_in_23s = base.unstressed_e_infix or stem23_is_same_as_stem and ends_in_dt(prefixed_stem23) if e_in_23s then addit("pres_2s", prefixed_stem23, "est") addit("pres_3s", prefixed_stem23, "et") else addit("pres_2s", prefixed_stem23, "st") if prefixed_stem23:find("sch$") then addit("pres_2s", prefixed_stem23, "t", not base.from_headword and {schst_footnote} or nil) end addit("pres_3s", prefixed_stem23, "t") end -- imperative singular; this may or may not be based off the pres23 stem -- Specifically, if the pres23 stem is different from the infinitive stem and does not have an ä or ö -- in it ([[fahren]], er [[fährt]] but imperative [[fahr]]/[[fahre]]; [[stoßen]], er [[stößt]] but -- imperative [[stoß]]/[[stoße]]), use it. Don't add -e unless '.longimp' is given (for [[sehen]], with -- imperatives [[sieh]] and [[siehe]]; but normally [[geben]] with imperative only [[gib]], similarly -- for [[treten]], [[gelten]], [[bergen]], [[etc.]]). In all other cases, use the infinitive stem, and -- under normal circumstances include two variants, without -e and with -e. We include only the variant -- with -e if '.e' is given ([[atmen]], [[zeichnen]], etc.), and we include only the variant without -e -- if '.shortimp' is given (unclear if this is needed for any verb). if slot_pref == "" then if not rfind(prefixed_stem23, "[äö]") and not stem23_is_same_as_stem then addit("imp_2s", prefixed_stem23, "") if base.longimp then addit("imp_2s", prefixed_stem23, "e") end else assert(form_pref == "") for _, stemform in ipairs(stems) do local function addimp(stem, ending) add(base, "imp_2s", stem, ending .. base.post_pref, stemform.footnotes) end local stem = stemform.form if base.unstressed_el_er then local syncopated_stem = stem:gsub("e([lr])$", "%1") addimp(syncopated_stem, "e") end if base.unstressed_e_infix then addimp(stem, "e") elseif base.shortimp then addimp(stem, "") else addimp(stem, "") addimp(stem, "e") end end end end end end end -- Do the basic forms doadd("", "") -- Also do the subordinate clause forms if any alternants have a prefix. if base.any_pre_pref then doadd("subc_", base.pre_pref) end -- Do the miscellaneous non-finite forms add3(base, "pres_part", base.pre_pref, base.bare_infinitive, "d") add_zu_infinitive(base) end -- Add the past forms and/or subjunctive II forms. `is_past` should be true if we're conjugating the past tense -- (not the past subjunctive), in which case the stems in `stem` should be the actual 1s/3s forms, ending in -te -- or -de if weak. If `is_past` is false, we're conjugating the past subjunctive. In that case, the stems passed -- in should include -e if that needs to be preserved in all forms (specifically, for [[spie]] past of [[speien]]; -- syncopated #'spist' is not allowed). (In practice, we chop off the final -e of explicitly user-specified past -- subjunctive forms and otherwise pass in the actual past tense. This means that user-specified past subjunctives -- in -te (e.g. [[brächte]]) will be passed in as 'brächt' but past subjunctives defaulted from the past tense -- will be passed in e.g. as 'lachte'. This works because for stems in -t and -d, the result is the same.) local function add_past_or_subii(base, slot_pref, stems, is_past) local function doadd(full_slot_pref, form_pref) for _, stemform in ipairs(stems) do local prefixed_stem = form_pref .. stemform.form local ends_in_e = prefixed_stem:find("e$") -- Normally, the weak past tense ends in -te and the strong past does not end in -e. An exception is -- [[spie]] (past tense of [[speien]]), which will be treated as weak (superseded spellings like -- 'spieen' will not be generated). local is_strong = is_past and not ends_in_e prefixed_stem = prefixed_stem:gsub("e$", "") local stem_ends_in_dt = ends_in_dt(prefixed_stem) local function addit(slot, ending, footnotes) local subii_footnotes if full_slot_pref:find("subii") then subii_footnotes = get_subii_note(base) end add(base, full_slot_pref .. slot, prefixed_stem, ending .. (full_slot_pref == slot_pref and base.post_pref or ""), iut.combine_footnotes(subii_footnotes, iut.combine_footnotes(footnotes, stemform.footnotes))) end if is_strong then addit("1s", "") addit("3s", "") if not stem_ends_in_dt then if rfind(prefixed_stem, "[sxzß]$") then addit("2s", "est") end addit("2s", "st") addit("2p", "t") else -- bitten -> batest or batst, similarly for laden, raten, etc. addit("2s", "est") if not prefixed_stem:find("st$") then -- bersten addit("2s", "st") end addit("2p", "et") end else -- Weak past and past subjunctive have same endings when ending in -d or -t (always the case for weak past). addit("1s", "e") addit("3s", "e") if not stem_ends_in_dt and not ends_in_e then addit("2s", "est") -- more formal; FIXME: should we footnote this? addit("2p", "et") -- more formal; FIXME: should we footnote this? addit("2s", "st") addit("2p", "t") else addit("2s", "est") addit("2p", "et") end end -- Both pasts, as well as past subjunctive, have same endings in 1p and 3p. addit("1p", "en") addit("3p", "en") end end -- Do the basic forms doadd(slot_pref, "") -- Also do the subordinate clause forms if any alternants have a prefix. if base.any_pre_pref then doadd("subc_" .. slot_pref, base.pre_pref) end end local conjs = {} conjs["normal"] = function(base) add_present(base) add_past_or_subii(base, "pret_", base.past, "past") add_past_or_subii(base, "subii_", base.past_sub or base.past) end conjs["pretpres"] = function(base) add_present(base, "pretpres") add_past_or_subii(base, "pret_", base.past, "past") add_past_or_subii(base, "subii_", base.past_sub or base.past) end conjs["irreg"] = function(base) local function doadd(slot_pref) local function addit(slot, forms, footnotes) if slot_pref == "" then add3(base, slot, base.insep_prefix, forms, base.post_pref, footnotes) else add(base, slot_pref .. slot, base.pre_pref .. base.insep_prefix, forms, footnotes) end end -- Do present, preterite, subjunctive I and II. for _, slot_tense in ipairs({"pres", "pret", "subi", "subii"}) do for index, forms in ipairs(base.irregverbobj[slot_tense]) do local persnum = person_number_list[index] local footnotes if slot_tense == "subii" then footnotes = get_subii_note(base) end addit(slot_tense .. "_" .. persnum, forms, footnotes) end end -- Do imperative. if slot_pref == "" then for index, forms in ipairs(base.irregverbobj["imp"]) do local persnum = imp_person_number_list[index] addit("imp_" .. persnum, forms) end end end -- Do the basic forms doadd("") -- Also do the subordinate clause forms if any alternants have a prefix. if base.any_pre_pref then doadd("subc_") end -- Do the miscellaneous non-finite forms iut.add_multiple_forms(base, "pp", {base.ge_prefix, base.insep_prefix, base.irregverbobj["pp"]}, -- We don't want to use combine_stem_ending because we want sein-sich indicators to be left alone, -- so they get replaced later when constructing composed forms. function(stem, ending) return stem .. ending end) add(base, "perf_part", base.pre_pref, base.pp) -- only [[werden]] by itself; not [[loswerden]], [[fertigwerden]], etc. if base.lemma == "werden" then iut.insert_form(base.forms, "perf_part", {form = "worden", footnotes = {"[เมื่อเป็นคำกริยาช่วย]"}}) end add(base, "pres_part", base.pre_pref .. base.insep_prefix, base.irregverbobj["presp"]) add_zu_infinitive(base) end local function add_composed_forms(base) local function add_composed(tense_mood, index, persnum, auxforms, participle, suffix, footnotes) local pers_auxforms = iut.convert_to_general_list_form(auxforms[index]) local linked_pers_auxforms = iut.map_forms(pers_auxforms, function(form) return "[[" .. form .. "]] " end) add4(base, tense_mood .. "_" .. persnum, linked_pers_auxforms, "[[" .. base.pre_pref, participle, "]]" .. suffix, footnotes) end local function add_composed_perf(tense_mood, index, persnum, haben_auxforms, sein_auxforms, haben_suffix, sein_suffix) for _, auxform in ipairs(base.aux) do if auxform.form == "haben" then add_composed(tense_mood, index, persnum, haben_auxforms, base.pp, haben_suffix, auxform.footnotes) end if auxform.form == "sein" then add_composed(tense_mood, index, persnum, sein_auxforms, base.pp, sein_suffix, auxform.footnotes) end end end local haben_forms = irreg_verbs["haben"] local sein_forms = irreg_verbs["sein"] local werden_forms = irreg_verbs["werden"] for index, persnum in ipairs(person_number_list) do add_composed_perf("perf_ind", index, persnum, haben_forms["pres"], sein_forms["pres"], "", "") add_composed_perf("perf_sub", index, persnum, haben_forms["subi"], sein_forms["subi"], "", "") add_composed_perf("plup_ind", index, persnum, haben_forms["pret"], sein_forms["pret"], "", "") add_composed_perf("plup_sub", index, persnum, haben_forms["subii"], sein_forms["subii"], "", "") for _, mood in ipairs({"ind", "subi", "subii"}) do local tense = mood == "ind" and "pres" or mood add_composed("futi_" .. mood, index, persnum, werden_forms[tense], base.bare_infinitive, "") add_composed_perf("futii_" .. mood, index, persnum, werden_forms[tense], werden_forms[tense], " [[haben]]", " [[sein]]") end end add3(base, "futi_inf", "[[" .. base.pre_pref, base.bare_infinitive, "]] [[werden]]") add5(base, "futii_inf", "[[" .. base.pre_pref, base.pp, "]] [[", base.aux, "]] [[werden]]") end local function handle_derived_slots(base) -- Compute linked versions of potential lemma slots, for use in {{de-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do iut.insert_forms(base.forms, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function conjugate_verb(base) if not conjs[base.conj] then error("Internal error: Unrecognized conjugation type '" .. base.conj .. "'") end conjs[base.conj](base) add_composed_forms(base) -- No overrides implemented currently. -- process_slot_overrides(base) handle_derived_slots(base) end local function parse_indicator_spec(angle_bracket_spec) local base = {} local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local function fetch_specs(comma_separated_group, transform_form) if not comma_separated_group then return {{}} 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 transform_form then form = transform_form(form) end table.insert(specs, {form = form, footnotes = fetch_footnotes(colon_separated_group)}) end return specs end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local comma_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*[,#]%s*", "preserve splitchar") local first_element = comma_separated_groups[1][1] if first_element == "haben" or first_element == "sein" then for j = 1, #comma_separated_groups, 2 do if j > 1 and strip_spaces(comma_separated_groups[j - 1][1]) ~= "," then parse_err("Separator of # not allowed with haben or sein") end local aux = comma_separated_groups[j][1] if aux ~= "haben" and aux ~= "sein" then parse_err("Unrecognized auxiliary '" .. aux .. "'") end if base.aux then for _, existing_aux in ipairs(base.aux) do if existing_aux.form == aux then parse_err("Auxiliary '" .. aux .. "' specified twice") end end else base.aux = {} end table.insert(base.aux, {form = aux, footnotes = fetch_footnotes(comma_separated_groups[j])}) end elseif first_element == "-ge" or first_element == "+ge" then for j = 1, #comma_separated_groups, 2 do if j > 1 and strip_spaces(comma_separated_groups[j - 1][1]) ~= "," then parse_err("Separator of # not allowed with +ge or -ge") end local prefix = comma_separated_groups[j][1] if prefix ~= "+ge" and prefix ~= "-ge" then parse_err("Unrecognized ge- prefix '" .. prefix .. "'") end local ge_prefix if prefix == "+ge" then ge_prefix = "ge" else ge_prefix = "" end if base.ge_prefix then for _, existing_prefix in ipairs(base.ge_prefix) do if existing_prefix.form == ge_prefix then parse_err("Ge- prefix '" .. prefix .. "' specified twice") end end else base.ge_prefix = {} end table.insert(base.ge_prefix, {form = ge_prefix, footnotes = fetch_footnotes(comma_separated_groups[j])}) end elseif #comma_separated_groups > 1 then -- principal parts specified if base.past then parse_err("Can't specify principal parts twice") end assert(#comma_separated_groups[2] == 1) local past_index local first_separator = strip_spaces(comma_separated_groups[2][1]) if first_separator == "#" then -- present 3rd singular specified base.pres_23 = fetch_specs(comma_separated_groups[1], function(form) local stem if base.conj == "pretpres" then stem = form else stem = form:match("^(.-)%-$") if not stem then stem = form:match("^(.-)e?t$") end end if stem then return stem else parse_err("Present 3sg form '" .. form .. "' should end in - (for the stem) or -t") end end) past_index = 3 else past_index = 1 end base.past = fetch_specs(comma_separated_groups[past_index], function(form) return form end) if #comma_separated_groups < past_index + 2 then parse_err("Missing past participle spec") end assert(#comma_separated_groups[past_index + 1] == 1) if strip_spaces(comma_separated_groups[past_index + 1][1]) ~= "," then parse_err("Only first separator can be a #") end base.pp = fetch_specs(comma_separated_groups[past_index + 2], function(form) if form:find("e[nd]$") or form:find("t$") then return form else parse_err("Past participle '" .. form .. "' should end in -en, -t, or -ed") end end) if #comma_separated_groups > past_index + 2 then assert(#comma_separated_groups[past_index + 3] == 1) if strip_spaces(comma_separated_groups[past_index + 3][1]) ~= "," then parse_err("Only first separator can be a #") end base.past_sub = fetch_specs(comma_separated_groups[past_index + 4], function(form) local stem = form:match("^(.-)e$") if not stem then parse_err("Past subjunctive '" .. form .. "' should end in -e") end return stem end) if #comma_separated_groups > past_index + 4 then parse_err("Too many specs given") end end elseif first_element == "pretpres" or first_element == "irreg" then if #comma_separated_groups[1] > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base.conj then parse_err("Conjugation specified as '" .. first_element .. "' but already specified or autodetermined as '" .. base.conj .. "'") end base.conj = first_element elseif first_element == "einfix" or first_element == "-einfix" then if #comma_separated_groups[1] > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end base.unstressed_e_infix = first_element == "einfix" elseif first_element == "shortimp" or first_element == "longimp" or first_element == "only3s" or first_element == "only3sp" or first_element == "nofinite" or first_element == "nosplitprefix" then if #comma_separated_groups[1] > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end base[first_element] = true elseif first_element == "" or first_element == "inf" then local footnotes = fetch_footnotes(comma_separated_groups[1]) if not footnotes then parse_err("Empty spec and 'inf' spec without footnotes not allowed") end if first_element == "inf" then base.infstem_footnotes = footnotes else base.all_footnotes = footnotes end else parse_err("Unrecognized spec '" .. comma_separated_groups[1][1] .. "'") end end return base end -- Normalize all lemmas, splitting off separable prefixes and substituting the pagename for blank lemmas. local function normalize_all_lemmas(alternant_multiword_spec, from_headword, pagename) local any_pre_pref iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = pagename end if base.lemma:find("_") and not base.lemma:find("%[%[") then -- If lemma is multiword and has no links, add links automatically. base.lemma= "[[" .. base.lemma:gsub("_", "]]_[[") .. "]]" end base.orig_lemma = base.lemma base.orig_lemma_no_links = m_links.remove_links(base.lemma) -- Normalize the linked lemma by removing dot, underscore, and <pron> and such indicators. base.linked_lemma = remove_sein_sich_indicators(base.lemma:gsub("%.", ""):gsub("_", " ")) base.lemma = m_links.remove_links(base.linked_lemma) local lemma = base.orig_lemma_no_links base.pre_pref, base.post_pref = "", "" local prefix, verb = lemma:match("^(.*)_(.-)$") if prefix then prefix = prefix:gsub("_", " ") -- in case of multiple preceding words base.pre_pref = base.pre_pref .. prefix .. " " base.post_pref = base.post_pref .. " " .. prefix else verb = lemma end prefix, base.base_verb = verb:match("^(.*)%.(.-)$") if prefix then -- Lowercase the separable prefixes (but not postfixes) to allow for specified infinitive `Rad.fahren`, -- which becomes actual infinitive [[radfahren]] but 'ich fahre Rad' etc. local prefix_parts = rsplit(prefix, "%.") for i, prefix_part in ipairs(prefix_parts) do prefix_parts[i] = lcfirst(prefix_part) end -- There may be multiple separable prefixes (e.g. [[wiedergutmachen]], ich mache wieder gut) base.pre_pref = base.pre_pref .. table.concat(prefix_parts) base.post_pref = base.post_pref .. " " .. prefix:gsub("%.", " ") else base.base_verb = verb end if base.pre_pref ~= "" then any_pre_pref = true end if base.only3s then alternant_multiword_spec.only3s = true end if base.only3sp then alternant_multiword_spec.only3sp = true end -- Remove <pron> indicators and such. local reconstructed_lemma = remove_sein_sich_indicators(base.pre_pref .. base.base_verb) base.lemma = reconstructed_lemma base.from_headword = from_headword end) if any_pre_pref then iut.map_word_specs(alternant_multiword_spec, function(base) base.any_pre_pref = true end) end if alternant_multiword_spec.only3s then iut.map_word_specs(alternant_multiword_spec, function(base) if not base.only3s then error("If some alternants specify 'only3s', all must") end end) end if alternant_multiword_spec.only3sp then iut.map_word_specs(alternant_multiword_spec, function(base) if not base.only3sp then error("If some alternants specify 'only3sp', all must") end end) end end local function detect_verb_type(base, verb_types) local this_verb_types = {} local function set_verb_type() base.verb_types = this_verb_types if verb_types then for _, verb_type in ipairs(this_verb_types) do m_table.insertIfNot(verb_types, verb_type) end end end if base.conj == "pretpres" then m_table.insertIfNot(this_verb_types, "pretpres") set_verb_type() return elseif base.conj == "irreg" then m_table.insertIfNot(this_verb_types, "irreg") set_verb_type() return end local infstem = m_table.deepCopy(base.infstem) local past = m_table.deepCopy(base.past) local pp = m_table.deepCopy(base.pp) local function matches_forms(forms, expected, ending_to_chop) expected = expected:gsub("C", not_vowel_c) .. "$" local seen = false for _, form in ipairs(forms) do local stem if ending_to_chop then stem = rmatch(form.form, "^(.*)" .. ending_to_chop .. "$") else stem = form.form end if stem and rfind("#" .. stem, expected) then seen = true form.seen = form.seen or "maybe" end end return seen end local function reset_maybes(forms, value) for _, form in ipairs(forms) do if form.seen == "maybe" then form.seen = value end end end local function reset_all_maybes(value) reset_maybes(infstem, value) reset_maybes(past, value) reset_maybes(pp, value) end local function has_unseen_weak_pp() for _, form in ipairs(pp) do if not form.seen and form.form:find("[dt]$") then return true end end return false end local function has_unseen_strong_pp() for _, form in ipairs(pp) do if not form.seen and form.form:find("n$") then return true end end return false end local function check(verbtype, infre, pastre, ppre, exclude) if exclude then for _, form in ipairs(infstem) do if exclude(form.form) then return end end end if matches_forms(infstem, infre) and matches_forms(past, pastre) and matches_forms(pp, ppre, "en") then m_table.insertIfNot(this_verb_types, verbtype) reset_all_maybes(true) else reset_all_maybes(false) end end local function check_strong() check("1", "Ce[iy]C*", "CieC*", "Cie?C*") -- beigen, bleiben, gedeihen, leihen, meiden, preisen, reiben, reihen, -- scheiden, scheinen, schreiben, schreien, schweigen, speiben, speien, speisen, steigen, treiben, weisen, -- zeihen; use 'Cie?C*' for past participle to handle 'schrien', 'spien' check("1", "Ce[iy]C*", "CiC*", "CiC*") -- beißen/beissen/beyßen/beyssen, bleichen, fleißen/fleissen, gleichen, -- gleiten, greifen, kneifen, kreischen, leiden, pfeifen, reißen/reissen, reiten, scheißen/scheissen, -- schleichen, schleifen, schleißen/schleissen, schmeißen/schmeissen, schneiden/schneyden, schreiten, -- spleißen/spleissen, streichen, streiten, weichen check("2", "CieC*", "CoC*", "CoC*") -- biegen, bieten, fliegen, fliehen, fließen/fliessen, frieren, -- genießen/geniessen, gießen/giessen, kiesen, kriechen, riechen, schieben, schießen/schiessen, schliefen, -- schließen/schliessen, sieden, sprießen/spriessen, stieben, triefen, verdrießen/verdriessen, verlieren, -- wiegen, ziehen check("2", "CauC*", "CoC*", "CoC*") -- krauchen, saufen, saugen check("2", "CüC", "CoC", "CoC") -- lügen, trügen local function exclude_nehmen_sprechen(form) -- need to exclude nehmen, stehlen, befehlen/empfehlen, sprechen, brechen, stechen return rfind(form, vowel_c .. "ch$") or rfind(form, vowel_c .. "h" .. not_vowel_c .. "$") end check("3", "C[ei]CC+", "CaCC+", "C[ou]CC+", exclude_nehmen_sprechen) -- [with e, + o in pp]: bergen, bersten, -- gelten, helfen, schelten, sterben, verderben, werben, werfen; [with i, + u in pp]: binden, brinnen, dringen, -- finden, gelingen, klingen, misslingen, ringen, schlingen, schwinden, schwingen, singen, sinken, springen, -- stinken, trinken, winden, wringen, zwingen; [with i, + o in pp]: rinnen, gewinnen, schwimmen, sinnen, -- spinnen check("3", "C[eiaö]CC+", "CoCC+", "CoCC+", exclude_nehmen_sprechen) -- [with e]: dreschen, fechten, flechten, melken, quellen, schmelzen, schwellen; [with i]: glimmen, klimmen; -- [with a]: schallen (geschallt), erschallen; [with ö]: erlöschen check("3", "quell", "quoll", "quoll") -- need to special-case quellen due to u preceding e check("3", "schind", "schund", "schund") -- need to special-case due to 'u' in past check("4", "C[eäo]C*", "Cah?Ch?", "CoC*") -- [with e]: befehlen, brechen, schrecken, nehmen, sprechen, stechen, -- stecken (gesteckt), stehlen, treffen; [with ä]: gebären; [with o]: kommen check("4", "C[äe]C", "Coh?C", "Coh?C", function(form) return form:find("heb$") end) -- [with ä]: gären, wägen, schwären; [with e]: bewegen, weben, scheren (but not heben) check("5", "C[ei]C*", "CaC", "CeC*") -- [with e, one C]: geben, genesen, geschehen, lesen, meßen, sehen, treten; -- [with e, two C]: essen, fressen, messen, vergessen; [with i, two C]: bitten, sitzen check("5", "C[ei]C*", "Cass", "Cess") -- essen, fressen, messen, sitzen in Swiss spelling check("5", "CieC", "CaC", "CeC") -- liegen check("6", "CaC*", "CuC*", "CaC*") -- backen, fragen (gefragt), graben, laden, mahlen, schaffen, schlagen, -- tragen, wachsen, waschen check("6", "heb", "h[ou]b", "hob") -- we need to special-case this because heben (class 6 per Wikipedia) has the -- exact same vowels as weben (class 4 per Wikipedia) check("6", "schwör", "schw[ou]r", "schwor") -- only strong verb with these vowels check("7", "CaC*", "CieC*", "CaC*") -- blasen, braten, fallen, halten, lassen, raten/rathen, schlafen check("7", "C[aäe]C*", "CiC*", "CaC*") -- [with a]: fangen; [with ä]: hängen; [with e]: gehen check("7", "Ce[iy]C*", "CieC*", "Ce[iy]C*") -- heißen/heissen/heyßen/heyssen check("7", "CauC*", "CieC*", "CauC*") -- hauen, laufen check("7", "CoC*", "CieC*", "CoC*") -- stoßen/stossen check("7", "CuC*", "CieC*", "CuC*") -- rufen end for _, form in ipairs(past) do local past_stem = form.form:match("^(.*)te$") -- matches_forms() expects a Lua pattern so we need to escape special pattern chars (e.g. * in [[f*cken]]) past_stem = past_stem and m_string_utilities.pattern_escape(past_stem) or nil if past_stem then if matches_forms(infstem, "#" .. past_stem) then -- Need to run matches_forms() on all possibilities even if earlier ones match, -- to mark the seen forms correctly. local matches_pp = matches_forms(pp, "#" .. past_stem .. "t") matches_pp = matches_forms(pp, "#ge" .. past_stem .. "t") or matches_pp if matches_pp then m_table.insertIfNot(this_verb_types, "weak") form.seen = true reset_all_maybes(true) else reset_all_maybes(false) end end end if not form.seen and form.form:find("ete$") then if matches_forms(infstem, "#" .. past_stem:gsub("e$", "")) then -- Need to run matches_forms() on all possibilities even if earlier ones match, -- to mark the seen forms correctly. local matches_pp = matches_forms(pp, "#" .. past_stem .. "t") matches_pp = matches_forms(pp, "#ge" .. past_stem .. "t") or matches_pp matches_pp = matches_forms(pp, "#" .. past_stem .. "d") or matches_pp matches_pp = matches_forms(pp, "#ge" .. past_stem .. "d") or matches_pp if matches_pp then m_table.insertIfNot(this_verb_types, "weak") form.seen = true reset_all_maybes(true) else reset_all_maybes(false) end end end if past_stem and not form.seen then if not has_unseen_weak_pp() and has_unseen_strong_pp() then m_table.insertIfNot(this_verb_types, "mixed") else m_table.insertIfNot(this_verb_types, "irregweak") end matches_forms(pp, "#" .. past_stem .. "t") matches_forms(pp, "#ge" .. past_stem .. "t") form.seen = true reset_all_maybes(true) end if not form.seen then check_strong() end if not form.seen then if not has_unseen_strong_pp() and has_unseen_weak_pp() then m_table.insertIfNot(this_verb_types, "mixed") else m_table.insertIfNot(this_verb_types, "irregstrong") end end end for _, form in ipairs(pp) do if not form.seen then if form.form:find("n$") then if m_table.contains(this_verb_types, "strong") then m_table.insertIfNot(this_verb_types, "irregstrong") elseif m_table.contains(this_verb_types, "weak") then m_table.insertIfNot(this_verb_types, "mixed") end elseif form.form:find("[dt]$") then if m_table.contains(this_verb_types, "weak") then m_table.insertIfNot(this_verb_types, "irregweak") elseif m_table.contains(this_verb_types, "strong") then m_table.insertIfNot(this_verb_types, "mixed") end end end end base.verb_types = this_verb_types if verb_types then for _, verb_type in ipairs(this_verb_types) do m_table.insertIfNot(verb_types, verb_type) end end set_verb_type() end local function detect_indicator_spec(base) base.forms = {} base.aux = base.aux or {{form = "haben"}} base.bare_infinitive = {{form = base.base_verb, footnotes = base.infstem_footnotes}} add(base, "infinitive", base.pre_pref, base.bare_infinitive) if base.only3s and base.only3sp then error("'only3s' and 'only3sp' cannot both be specified") end if base.conj == "irreg" then for irregverb, verbobj in pairs(irreg_verbs) do base.insep_prefix = base.base_verb:match("^(.-)" .. irregverb .. "$") if base.insep_prefix then base.irregverb = irregverb base.irregverbobj = verbobj if not base.ge_prefix then if base.insep_prefix ~= "" then base.ge_prefix = {{form = ""}} else base.ge_prefix = {{form = "ge"}} end end return end end error("Unrecognized irregular base verb '" .. base.base_verb .. "'") end -- The following applies to everything but 'irreg' verbs. local infstem, infroot = base.base_verb:match("^((.*)e[lr])n$") if infstem then base.unstressed_el_er = true else infstem, infroot = base.base_verb:match("^((.*)erl)n$") -- [[fensterln]] if infstem then base.unstressed_erl = true else infstem = base.base_verb:match("^(.*)en$") infroot = infstem if not infstem then error("Unrecognized infinitive, should end in -en, -eln, -ern or -erln: '" .. base.base_verb .. "'") end end end base.infstem = {{form = infstem, footnotes = base.infstem_footnotes}} if base.unstressed_e_infix == nil then -- Autodetect whether we need an -e- infix in the pres_2s and pres_3s ([[atmen]], [[eignen]], etc.). -- Almost all such cases have -Cmen or -Cnen where C is a consonant other than r or l and other than the -- following m or n (hence [[meinen]], [[lernen]], [[filmen]], [[schwimmen]] should be excluded); we also -- need to exclue -Vhmen and -Vhnen ([[wohnen]], [[rühmen]]), but not -Chmen and -Chnen ([[zeichnen]]). if base.base_verb:find("[mn]en$") and not base.base_verb:find("([mn])%1en$") and not rfind(base.base_verb, vowel_c .. "[hrl]?[mn]en$") then base.unstressed_e_infix = true end end if not base.conj then base.conj = "normal" end if base.conj == "normal" then local weak_past if not base.past then if base.unstressed_e_infix or ends_in_dt(infstem) then weak_past = infstem .. "et" else weak_past = infstem .. "t" end base.past = {{form = weak_past .. "e"}} end if not base.pp then if not weak_past then error("Internal error: past was explicitly given but not past participle") end if not base.ge_prefix then local no_ge for _, insep_prefix in ipairs(inseparable_prefixes) do -- There must be a vowel following the inseparable prefix; excludes beben, bechern, belfern, bellen, bessern, -- beten, betteln, betten, erben, erden, ernten, erzen, entern, gecken, gehren, gellen, gerben, geten, missen, -- zergen, zerren, etc. if rfind(infroot, "^" .. insep_prefix .. ".*" .. vowel_c .. ".*") and -- Exclude cases like beigen, beichten, beugen, beulen, geifern; this also wrongly excludes -- beirren, which needs -ge. not rfind(infroot, "^[bg]e[iu]" .. not_vowel_c .. "*$") then no_ge = true break end -- Check for -ier preceded by a vowel (excludes bieren, frieren, gieren, schmieren, stieren, zieren, etc.) if not base.unstressed_el_er and not base.unstressed_erl and rfind(infroot, "^.*" .. vowel_c .. ".*ier$") then no_ge = true break end end if no_ge then base.ge_prefix = {{form = ""}} else base.ge_prefix = {{form = "ge"}} end end base.pp = iut.map_forms(base.ge_prefix, function(form) if base.unstressed_el_er or base.unstressed_erl then return form .. base.base_verb:gsub("n$", "") .. "t" else return form .. weak_past end end) end else if not base.pp then error("For '" .. base.conj .. "' type verbs, past participle must be explicitly given") end end add(base, "perf_part", base.pre_pref, base.pp) end local function detect_all_indicator_specs(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) detect_verb_type(base) end) end -- Set the overall auxiliary or auxiliaries. We can't do this using the normal inflection -- code as it will produce e.g. '[[haben]] und [[haben]]' for conjoined verbs. local function compute_auxiliary(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) iut.insert_forms(alternant_multiword_spec.forms, "aux", base.aux) end) end function export.process_verb_classes(classes) local class_descs = {} local cats = {} local function insert_desc(desc) m_table.insertIfNot(class_descs, desc) end local function insert_cat(cat) m_table.insertIfNot(cats, cat .. "ภาษาเยอรมัน") end for _, class in ipairs(classes) do if class == "weak" then insert_desc("[[ภาคผนวก:อภิธานศัพท์#คำกริยาอ่อน|อ่อน]]") insert_cat("คำกริยาอ่อน") elseif class == "irregweak" then insert_desc("[[ภาคผนวก:อภิธานศัพท์#คำกริยาอ่อน|อ่อน]], [[ภาคผนวก:อภิธานศัพท์#ไม่ปรกติ|ไม่ปรกติ]]") insert_cat("คำกริยาอ่อน") insert_cat("คำกริยาอ่อนไม่ปรกติ") elseif class == "pretpres" then insert_desc("[[Appendix:Glossary#preterite-present verb|preterite-present]]") insert_cat("preterite-present verbs") elseif class == "irreg" then insert_desc("[[ภาคผนวก:อภิธานศัพท์#ไม่ปรกติ|ไม่ปรกติ]]") insert_cat("คำกริยาไม่ปรกติ") elseif class == "mixed" then insert_desc("คำกริยาผสม") insert_cat("คำกริยาผสม") elseif class == "irregstrong" then insert_desc("[[ภาคผนวก:อภิธานศัพท์#คำกริยาแข็ง|แข็ง]], [[ภาคผนวก:อภิธานศัพท์#ไม่ปรกติ|ไม่ปรกติ]]") insert_cat("คำกริยาแข็ง") insert_cat("คำกริยาแข็งไม่ปรกติ") elseif class:find("^[1-7]$") then insert_desc("[[ภาคผนวก:อภิธานศัพท์#คำกริยาแข็ง|แข็ง]], กลุ่ม " .. class) insert_cat("คำกริยาแข็ง") insert_cat("คำกริยาแข็งกลุ่ม " .. class .. "&nbsp;") else error("คำกริยาไม่ทราบกลุ่ม '" .. class .. "'") end end return class_descs, cats end local function add_categories_and_annotation(alternant_multiword_spec, base, from_headword, manual) local function insert_cat(full_cat) m_table.insertIfNot(alternant_multiword_spec.categories, full_cat) end if not from_headword then for _, slot_and_accel in ipairs(all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("คำกริยาที่มีลิงก์แดงในตารางการผันรูปภาษาเยอรมัน") must_break = true break end end end end if must_break then break end end end if manual then return end local class_descs, cats = export.process_verb_classes(base.verb_types) for _, desc in ipairs(class_descs) do m_table.insertIfNot(alternant_multiword_spec.verb_types, desc) end -- Don't place multiword terms in categories like 'German class 4 strong verbs' to avoid spamming the -- categories with such terms. if from_headword and not base.lemma:find(" ") then for _, cat in ipairs(cats) do insert_cat(cat) end end for _, aux in ipairs(base.aux) do m_table.insertIfNot(alternant_multiword_spec.auxiliaries, link_term(aux.form, "term")) if from_headword and not base.lemma:find(" ") then -- see above insert_cat("คำกริยาภาษาเยอรมันที่ใช้คำกริยาช่วย " .. aux.form) -- Set flags for use below in adding 'German verbs using haben and sein as auxiliary' alternant_multiword_spec["saw_" .. aux.form] = true end end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec, from_headword, manual) alternant_multiword_spec.categories = {} alternant_multiword_spec.verb_types = {} alternant_multiword_spec.auxiliaries = {} iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, from_headword) end) if manual then alternant_multiword_spec.annotation = "" return end local ann_parts = {} table.insert(ann_parts, table.concat(alternant_multiword_spec.verb_types, " หรือ ")) if #alternant_multiword_spec.auxiliaries > 0 then table.insert(ann_parts, ", คำกริยาช่วย " .. table.concat(alternant_multiword_spec.auxiliaries, " หรือ ")) end if from_headword and alternant_multiword_spec.saw_haben and alternant_multiword_spec.saw_sein then m_table.insertIfNot(alternant_multiword_spec.categories, "คำกริยาภาษาเยอรมันที่ใช้คำกริยาช่วย haben และ sein") end alternant_multiword_spec.annotation = table.concat(ann_parts) end local function show_forms(alternant_multiword_spec) local lemmas = iut.map_forms(alternant_multiword_spec.forms.infinitive, remove_sein_sich_indicators) alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local linked_pronouns = {} for index, pronoun in ipairs(pronouns) do -- use 'es' instead of 'er' for 3s-only verbs if index == 3 and alternant_multiword_spec.only3s then linked_pronouns[index] = link_term("es") else linked_pronouns[index] = link_term(pronoun) end end local dass = link_term("dass") .. " " local function generate_link(data) local link = m_links.full_link { lang = lang, term = data.form.formval_for_link, tr = "-", accel = data.form.accel_obj } local footnote_text = iut.get_footnote_text(data.form.footnotes, data.footnote_obj) local persnum = data.slot:match("^imp_(2[sp])$") if persnum then link = link .. " (" .. linked_pronouns[persnum_to_index[persnum]] .. ")" else persnum = data.slot:match("^.*_([123][sp])$") if persnum then link = linked_pronouns[persnum_to_index[persnum]] .. " " .. link end if data.slot:find("^subc_") then link = dass .. link end end return link .. footnote_text end local function join_spans(data) if data.slot == "aux" then return table.concat(data.formval_spans, " หรือ ") else return table.concat(data.formval_spans, "<br />") end end local props = { lang = lang, lemmas = lemmas, generate_link = generate_link, join_spans = join_spans, } props.slot_list = verb_slots_basic iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote props.slot_list = verb_slots_subordinate_clause iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_subordinate_clause = alternant_multiword_spec.forms.footnote props.slot_list = verb_slots_composed iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_composed = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div style="width:100%;text-align:left;background:var(--wikt-palette-grey-blue-1,#d9ebff)"> <div style="display:inline-block;text-align:left;padding-left:1em;padding-right:1em"> {footnote} </div></div> ]=] local zu_infinitive_table = [=[ |- ! colspan=2 style="background:var(--wikt-palette-grey-2,#d0d0d0)" | รูปกริยากลาง zu | colspan=4 data-accel-col=1 | {zu_infinitive} ]=] local basic_table = [=[ <div class="NavFrame" style=""> <div class="NavHead" style="">การผันรูปของ {title}</div> <div class="NavContent"> {\op}| style="border: 1px solid var(--wikt-palette-black,#000000); border-collapse:collapse; background:var(--wikt-palette-white,#fafafa); text-align:center; width:100%" class="inflection-table" |- ! colspan=2 style="background:var(--wikt-palette-grey-2,#d0d0d0)" | <span title="Infinitiv">รูปกริยากลาง</span> | colspan=4 data-accel-col=1 | {infinitive} |- ! colspan=2 style="background:var(--wikt-palette-grey-2,#d0d0d0)" | <span title="Partizip I (Partizip Präsens)">รูปกริยาขยายปัจจุบันกาล</span> | colspan=4 data-accel-col=20 | {pres_part} |- ! colspan=2 style="background:var(--wikt-palette-grey-2,#d0d0d0)" | <span title="Partizip II (Partizip Perfekt)">รูปกริยาขยายอดีตกาล</span> | colspan=4 data-accel-col=20 | {perf_part} {zu_infinitive_table}|- ! colspan=2 style="background:var(--wikt-palette-grey-2,#d0d0d0)" | <span title="Hilfsverb">คำกริยาช่วย</span> | colspan=4 | {aux} |- | rowspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | ! colspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | <span title="Indikativ">มาลาบอกเล่า</span> | rowspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | ! colspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | <span title="Konjunktiv">มาลาสมมุติ</span> |- ! style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | เอกพจน์ ! style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | พหูพจน์ ! style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | เอกพจน์ ! style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | พหูพจน์ |- ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4); width:7em" | <span title="Präsens">ปัจจุบันกาล</span> | data-accel-col=2 | {pres_1s} | data-accel-col=3 | {pres_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4); width:7em" | <span title="Konjunktiv I (Konjunktiv Präsens)">I</span> | data-accel-col=10 | {subi_1s} | data-accel-col=11 | {subi_1p} |- | data-accel-col=2 | {pres_2s} | data-accel-col=3 | {pres_2p} | data-accel-col=10 | {subi_2s} | data-accel-col=11 | {subi_2p} |- | data-accel-col=2 | {pres_3s} | data-accel-col=3 | {pres_3p} | data-accel-col=10 | {subi_3s} | data-accel-col=11 | {subi_3p} |- | colspan=6 style="background:var(--wikt-palette-grey-2,#d5d5d5); height: .25em" | |- ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4)" | <span title="Präteritum">อดีตกาลสิ้นสุด</span> | data-accel-col=6 | {pret_1s} | data-accel-col=7 | {pret_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4)" | <span title="Konjunktiv II (Konjunktiv Präteritum)">II</span> | data-accel-col=14 | {subii_1s} | data-accel-col=15 | {subii_1p} |- | data-accel-col=6 | {pret_2s} | data-accel-col=7 | {pret_2p} | data-accel-col=14 | {subii_2s} | data-accel-col=15 | {subii_2p} |- | data-accel-col=6 | {pret_3s} | data-accel-col=7 | {pret_3p} | data-accel-col=14 | {subii_3s} | data-accel-col=15 | {subii_3p} |- | colspan=6 style="background:var(--wikt-palette-grey-2,#d5d5d5); height: .25em" | |- ! style="background:var(--wikt-palette-grey-blue-3,#c0cfe4)" | <span title="Imperativ">มาลาสั่ง</span> | data-accel-col=18 | {imp_2s} | data-accel-col=19 | {imp_2p} | colspan=3 style="background:var(--wikt-palette-grey-1,#e0e0e0)" | |{\cl}{notes_clause}</div></div> ]=] local subordinate_clause_table = [=[ <div class="NavFrame" style=""> <div class="NavHead" style="">รูปกริยา {title} เมื่ออยู่ในอนุประโยค</div> <div class="NavContent"> {\op}| style="border: 1px solid var(--wikt-palette-black,#000000); border-collapse:collapse; background:var(--wikt-palette-white,#fafafa); text-align:center; width:100%" class="inflection-table" |- | style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | ! colspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | <span title="Indikativ">มาลาบอกเล่า</span> | style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | ! colspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | <span title="Konjunktiv">มาลาสมมุติ</span> |- ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4); width:7em" | <span title="Präsens">ปัจจุบันกาล</span> | data-accel-col=4 | {subc_pres_1s} | data-accel-col=5 | {subc_pres_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4); width:7em" | <span title="Konjunktiv I (Konjunktiv Präsens)">I</span> | data-accel-col=12 | {subc_subi_1s} | data-accel-col=13 | {subc_subi_1p} |- | data-accel-col=4 | {subc_pres_2s} | data-accel-col=5 | {subc_pres_2p} | data-accel-col=12 | {subc_subi_2s} | data-accel-col=13 | {subc_subi_2p} |- | data-accel-col=4 | {subc_pres_3s} | data-accel-col=5 | {subc_pres_3p} | data-accel-col=12 | {subc_subi_3s} | data-accel-col=13 | {subc_subi_3p} |- | colspan=6 style="background:var(--wikt-palette-grey-2,#d5d5d5); height: .25em" | |- ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4)" | <span title="Präteritum">อดีตกาลสิ้นสุด</span> | data-accel-col=8 | {subc_pret_1s} | data-accel-col=9 | {subc_pret_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4)" | <span title="Konjunktiv II (Konjunktiv Präteritum)">II</span> | data-accel-col=16 | {subc_subii_1s} | data-accel-col=17 | {subc_subii_1p} |- | data-accel-col=8 | {subc_pret_2s} | data-accel-col=9 | {subc_pret_2p} | data-accel-col=16 | {subc_subii_2s} | data-accel-col=17 | {subc_subii_2p} |- | data-accel-col=8 | {subc_pret_3s} | data-accel-col=9 | {subc_pret_3p} | data-accel-col=16 | {subc_subii_3s} | data-accel-col=17 | {subc_subii_3p} |{\cl}{notes_clause}</div></div> ]=] local composed_table = [=[ <div class="NavFrame" style=""> <div class="NavHead" style="">รูปประกอบของคำกริยา {title}</div> <div class="NavContent"> {\op}| style="border: 1px solid var(--wikt-palette-black,#000000); border-collapse:collapse; background:var(--wikt-palette-white,#fafafa); text-align:center; width:100%" class="inflection-table" |- ! colspan=6 style="background:var(--wikt-palette-grey-green-4,#99cc99)" | <span title="Perfekt">สมบูรณ์</span> |- ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | เอกพจน์ ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | พหูพจน์ ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | เอกพจน์ ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | พหูพจน์ |- ! rowspan=3 style="background:var(--wikt-palette-grey-green-2,#cfedcc); width:7em" | <span title="Indikativ">มาลาบอกเล่า</span> | {perf_ind_1s} | {perf_ind_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-green-2,#cfedcc); width:7em" | <span title="Konjunktiv">มาลาสมมุติ</span> | {perf_sub_1s} | {perf_sub_1p} |- | {perf_ind_2s} | {perf_ind_2p} | {perf_sub_2s} | {perf_sub_2p} |- | {perf_ind_3s} | {perf_ind_3p} | {perf_sub_3s} | {perf_sub_3p} |- ! colspan=6 style="background:var(--wikt-palette-grey-green-4,#99CC99)" | <span title="Plusquamperfekt">อภิสมบูรณ์</span> |- ! rowspan=3 style="background:var(--wikt-palette-grey-green-2,#cfedcc)" | <span title="Indikativ">มาลาบอกเล่า</span> | {plup_ind_1s} | {plup_ind_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-green-2,#cfedcc)" | <span title="Konjunktiv">มาลาสมมุติ</span> | {plup_sub_1s} | {plup_sub_1p} |- | {plup_ind_2s} | {plup_ind_2p} | {plup_sub_2s} | {plup_sub_2p} |- | {plup_ind_3s} | {plup_ind_3p} | {plup_sub_3s} | {plup_sub_3p} |- ! colspan=6 style="background:var(--wikt-palette-grey-indigo-4,#9999DF)" | <span title="Futur I">อนาคตกาล I</span> |- ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Infinitiv">รูปกริยากลาง</span> | rowspan=3 colspan=2 | {futi_inf} ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Konjunktiv I (Konjunktiv Präsens)">มาลาสมมุติ I</span> | {futi_subi_1s} | {futi_subi_1p} |- | {futi_subi_2s} | {futi_subi_2p} |- | {futi_subi_3s} | {futi_subi_3p} |- ! colspan=6 style="background:var(--wikt-palette-grey-2,#d5d5d5); height: .25em" | |- ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Indikativ">มาลาบอกเล่า</span> | {futi_ind_1s} | {futi_ind_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Konjunktiv II (Konjunktiv Präteritum)">มาลาสมมุติ II</span> | {futi_subii_1s} | {futi_subii_1p} |- | {futi_ind_2s} | {futi_ind_2p} | {futi_subii_2s} | {futi_subii_2p} |- | {futi_ind_3s} | {futi_ind_3p} | {futi_subii_3s} | {futi_subii_3p} |- ! colspan=6 style="background:var(--wikt-palette-grey-indigo-4,#9999DF)" | <span title="Futur II">อนาคตกาล II</span> |- ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Infinitiv">รูปกริยากลาง</span> | rowspan=3 colspan=2 | {futii_inf} ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Konjunktiv I (Konjunktiv Präsens)">มาลาสมมุติ I</span> | {futii_subi_1s} | {futii_subi_1p} |- | {futii_subi_2s} | {futii_subi_2p} |- | {futii_subi_3s} | {futii_subi_3p} |- ! colspan=6 style="background:var(--wikt-palette-grey-2,#d5d5d5); height: .25em" | |- ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Indikativ">มาลาบอกเล่า</span> | {futii_ind_1s} | {futii_ind_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Konjunktiv II (Konjunktiv Präteritum)">มาลาสมมุติ II</span> | {futii_subii_1s} | {futii_subii_1p} |- | {futii_ind_2s} | {futii_ind_2p} | {futii_subii_2s} | {futii_subii_2p} |- | {futii_ind_3s} | {futii_ind_3p} | {futii_subii_3s} | {futii_subii_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, "term") if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end -- Maybe format the subordinate clause table. local formatted_subordinate_clause_table if forms.subc_pres_3s ~= "—" then -- use 3s in case of only3s verb forms.zu_infinitive_table = m_string_utilities.format(zu_infinitive_table, forms) forms.footnote = alternant_multiword_spec.footnote_subordinate_clause forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" formatted_subordinate_clause_table = m_string_utilities.format(subordinate_clause_table, forms) else forms.zu_infinitive_table = "" formatted_subordinate_clause_table = "" end -- Format the basic table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local formatted_basic_table = m_string_utilities.format(basic_table, forms) -- Format the composed table. forms.footnote = alternant_multiword_spec.footnote_composed forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local formatted_composed_table = m_string_utilities.format(composed_table, forms) -- Paste them together. return formatted_basic_table .. formatted_subordinate_clause_table .. formatted_composed_table end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(parent_args, from_headword, def) local params = { [1] = true, pagename = true, json = {type = "boolean"}, -- for bot use } if from_headword then params["lemma"] = {list = true} params["id"] = true end local args = require("Module:parameters").process(parent_args, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename if not args[1] then if pagename == "de-conj" or pagename == "de-verb" then args[1] = def or "aus.fahren<fährt#fuhr,gefahren,führe.haben,sein>" else args[1] = pagename -- If pagename has spaces in it, add links around each word if args[1]:find(" ") then args[1] = "[[" .. args[1]:gsub(" ", "]] [[") .. "]]" end end end local parse_props = { parse_indicator_spec = parse_indicator_spec, lang = lang, allow_default_indicator = true, allow_blank_lemma = true, } local escaped_arg1 = escape_sein_sich_indicators(args[1]) local alternant_multiword_spec = iut.parse_inflected_text(escaped_arg1, parse_props) alternant_multiword_spec.pos = "คำกริยา" alternant_multiword_spec.args = args normalize_all_lemmas(alternant_multiword_spec, from_headword, pagename) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = all_verb_slots, lang = lang, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) compute_auxiliary(alternant_multiword_spec) compute_categories_and_annotation(alternant_multiword_spec, from_headword) if args.json then return require("Module:JSON").toJSON(alternant_multiword_spec) end return alternant_multiword_spec end -- Entry point for {{de-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local alternant_multiword_spec = export.do_generate_forms(parent_args) if type(alternant_multiword_spec) == "string" then -- json=1 specified return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end local numbered_params = { -- required params [1] = "infinitive", [2] = "pres_part", [3] = "perf_part", [4] = "aux", [5] = "pres_1s", [6] = "pres_2s", [7] = "pres_3s", [8] = "pres_1p", [9] = "pres_2p", [10] = "pres_3p", [11] = "pret_1s", [12] = "pret_2s", [13] = "pret_3s", [14] = "pret_1p", [15] = "pret_2p", [16] = "pret_3p", [17] = "subi_1s", [18] = "subi_2s", [19] = "subi_3s", [20] = "subi_1p", [21] = "subi_2p", [22] = "subi_3p", [23] = "subii_1s", [24] = "subii_2s", [25] = "subii_3s", [26] = "subii_1p", [27] = "subii_2p", [28] = "subii_3p", [29] = "imp_2s", [30] = "imp_2p", -- [31] formerly the 2nd variant of imp_2s; now no longer allowed (use comma-separated 29=) -- [32] formerly indicated whether the 2nd variant of imp_2s was present -- optional params [33] = "subc_pres_1s", [34] = "subc_pres_2s", [35] = "subc_pres_3s", [36] = "subc_pres_1p", [37] = "subc_pres_2p", [38] = "subc_pres_3p", [39] = "subc_pret_1s", [40] = "subc_pret_2s", [41] = "subc_pret_3s", [42] = "subc_pret_1p", [43] = "subc_pret_2p", [44] = "subc_pret_3p", [45] = "subc_subi_1s", [46] = "subc_subi_2s", [47] = "subc_subi_3s", [48] = "subc_subi_1p", [49] = "subc_subi_2p", [50] = "subc_subi_3p", [51] = "subc_subii_1s", [52] = "subc_subii_2s", [53] = "subc_subii_3s", [54] = "subc_subii_1p", [55] = "subc_subii_2p", [56] = "subc_subii_3p", [57] = "zu_infinitive", } local max_required_param = 30 -- Externally callable function to parse and conjugate a verb where all forms are given manually. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms_manual(parent_args) local params = { json = {type = "boolean"}, } for paramnum, _ in pairs(numbered_params) do params[paramnum] = {required = paramnum <= max_required_param} end local args = require("Module:parameters").process(parent_args, params) local base = { forms = {}, manual = true, } local function process_numbered_param(paramnum) local argval = args[paramnum] if paramnum == 4 then if argval == "h" then base.aux = {{form = "haben"}} elseif argval == "s" then base.aux = {{form = "sein"}} elseif argval == "hs" then base.aux = {{form = "haben"}, {form = "sein"}} elseif argval == "sh" then base.aux = {{form = "sein"}, {form = "haben"}} elseif not argval then error("Missing auxiliary in 4=") else error("Unrecognized auxiliary 4=" .. argval) end elseif argval and argval ~= "-" then local split_vals = rsplit(argval, "%s*,%s*") for _, val in ipairs(split_vals) do -- FIXME! This won't work with commas or brackets in footnotes. -- To fix this, use functions from [[Module:inflection utilities]]. local form, footnote = val:match("^(.-)%s*(%[[^%]%[]-%])$") local footnotes if form then footnotes = {footnote} else form = val end local slot = numbered_params[paramnum] --if slot:find("subii") then -- local subii_footnotes = get_subii_note(base) -- footnotes = iut.combine_footnotes(subii_footnotes, footnotes) --end iut.insert_form(base.forms, slot, {form = form, footnotes = footnotes}) end end end -- Do the infinitive first as we need to reference it in subjunctive II footnotes. process_numbered_param(1) for paramnum, _ in pairs(numbered_params) do if paramnum ~= 1 then process_numbered_param(paramnum) end end add_composed_forms(base) compute_categories_and_annotation(base, nil, "manual") return base, args.json end -- Entry point for {{de-conj-table}}. Template-callable function to parse and conjugate a verb given -- manually-specified inflections and generate a displayable table of the conjugated forms. function export.show_manual(frame) local parent_args = frame:getParent().args local base, json = export.do_generate_forms_manual(parent_args) if json then return require("Module:JSON").toJSON(base) end show_forms(base) return make_table(base) .. require("Module:utilities").format_categories(base.categories, lang) end return export nkio4f9ce0qknlc5tdjwqqf73eenm4y 5729210 5729199 2026-07-20T03:45:52Z Octahedron80 267 5729210 Scribunto text/plain local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present first singular) and "subc_subii_3p" (subordinate-clause subjunctive II third plural). Each slot is filled with zero or more forms. -- "form" = The conjugated German form representing the value of a given slot. -- "lemma" = The dictionary form of a given German term. For German, always the infinitive. ]=] --[=[ FIXME: 1. Handle fensterln. (DONE) 2. Handle spie- past tense of speien. (DONE) 3. Make sure rathen, verheirathen work. (DONE) 4. Modify einfix to better handle managen, framen. (DONE) 5. Use variant codes so variant imperatives with and without -e match up in conjoined verbs e.g. [[ausschneiden und einfügen]]. 6. In conjoined verbs e.g. [[ausschneiden und einfügen]], don't repeat auxiliaries. 7. Support 'nosplitprefix' meaning that no forms exist where the prefix is split form the main verb, e.g. [[voreinstellen]]. (DONE) --]=] local lang = require("Module:languages").getByCode("de") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local rfind = m_string_utilities.find local rmatch = m_string_utilities.match local rsplit = m_string_utilities.split local lcfirst = m_string_utilities.lcfirst local function link_term(term, face) return m_links.full_link({ lang = lang, term = term }, face) end local vowel = "aeiouyäëïöüÿáéíóúýàèìòùỳâêîôûŷãẽĩõũỹ" local vowel_c = "[" .. vowel .. "]" local not_vowel_c = "[^" .. vowel .. "]" local function ends_in_dt(stem) return stem:find("[dt]h?$") end local inseparable_prefixes = { "be", "emp", "ent", "er", "ge", "miss", "miß", "ver", "zer", -- can also be separable "durch", "hinter", "über", "um", "unter", "voll", "wider", "wieder", } local wuerde = link_term("würde", "term") local past_subjunctive_single_word_preferred = m_table.listToSet { "haben", "sein", "können", "müssen", "dürfen", "mögen", "sollen", "wollen", "werden" } local past_subjunctive_single_word_preferred_footnote = "[แนะนำให้ใช้, เลี่ยงรูปประกอบ " .. wuerde .. "]" local past_subjunctive_single_word_often_used = m_table.listToSet { "bleiben", "brauchen", "bringen", "fallen", "finden", "geben", "gehen", "halten", "heißen", "heissen", "kommen", "laufen", "lassen", "liegen", "nehmen", "sehen", "stehen", "tun", "thun", "wissen" } local past_subjunctive_single_word_often_used_footnote = "[พบได้ทั้งรูปนี้และรูปประกอบ " .. wuerde .. "]" local past_subjunctive_single_word_rare_footnote = "[พบได้น้อยมากยกเว้นในบริบทที่เป็นทางการมาก, แนะนำให้ใช้รูปประกอบ " .. wuerde .. "]" local schst_footnote = "[ใช้ได้ในลักษณะเป็นทางการในออสเตรีย, ใช้ในภาษาปากในทุกพื้นที่ที่พูดภาษาเยอรมัน]" local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = { "1s", "2s", "3s", "1p", "2p", "3p", } local persnum_to_index = {} for k, v in pairs(person_number_list) do persnum_to_index[v] = k end local imp_person_number_list = { "2s", "2p", } local verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"pres_part", "pres|part"}, {"perf_part", "past|part"}, {"zu_infinitive", "zu"}, -- will be handled specially by [[Module:accel/de]] {"aux", "-"}, } local verb_slots_subordinate_clause = { } local verb_slots_composed = { } -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is the set of inflection tags to add after the person/number tags, -- or "-" to use "-" as the inflection tags (which indicates that no accelerator entry -- should be generated). local function add_slot_personal(verb_slots, slot_prefix, tag_suffix) for persnum, persnum_tag in pairs(all_persons_numbers) do local slot = slot_prefix .. "_" .. persnum if tag_suffix == "-" then table.insert(verb_slots, {slot, "-"}) else table.insert(verb_slots, {slot, persnum_tag .. "|" .. tag_suffix}) end end end add_slot_personal(verb_slots_basic, "pres", "pres") add_slot_personal(verb_slots_basic, "subi", "sub:I") add_slot_personal(verb_slots_basic, "pret", "pret") add_slot_personal(verb_slots_basic, "subii", "sub:II") table.insert(verb_slots_basic, {"imp_2s", "s|imp"}) table.insert(verb_slots_basic, {"imp_2p", "p|imp"}) add_slot_personal(verb_slots_subordinate_clause, "subc_pres", "dep|pres") add_slot_personal(verb_slots_subordinate_clause, "subc_subi", "dep|sub:I") add_slot_personal(verb_slots_subordinate_clause, "subc_pret", "dep|pret") add_slot_personal(verb_slots_subordinate_clause, "subc_subii", "dep|sub:II") add_slot_personal(verb_slots_composed, "perf_ind", "-") add_slot_personal(verb_slots_composed, "perf_sub", "-") add_slot_personal(verb_slots_composed, "plup_ind", "-") add_slot_personal(verb_slots_composed, "plup_sub", "-") table.insert(verb_slots_composed, {"futi_inf", "-"}) add_slot_personal(verb_slots_composed, "futi_subi", "-") add_slot_personal(verb_slots_composed, "futi_ind", "-") add_slot_personal(verb_slots_composed, "futi_subii", "-") table.insert(verb_slots_composed, {"futii_inf", "-"}) add_slot_personal(verb_slots_composed, "futii_subi", "-") add_slot_personal(verb_slots_composed, "futii_ind", "-") add_slot_personal(verb_slots_composed, "futii_subii", "-") local all_verb_slots = {} for _, slot_and_accel in ipairs(verb_slots_basic) do table.insert(all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(verb_slots_subordinate_clause) do table.insert(all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(verb_slots_composed) do table.insert(all_verb_slots, slot_and_accel) end local pronouns = { "ich", "du", "er", "wir", "ihr", "sie", } local irreg_verbs = { ["haben"] = { ["pres"] = { "habe", "hast", "hat", "haben", "habt", "haben", }, ["pret"] = { "hatte", "hattest", "hatte", "hatten", "hattet", "hatten", }, ["subi"] = { "habe", "habest", "habe", "haben", "habet", "haben", }, ["subii"] = { "hätte", "hättest", "hätte", "hätten", "hättet", "hätten", }, ["imp"] = { {"hab", "habe"}, "habt", }, ["presp"] = "habend", ["pp"] = "habt", }, ["sein"] = { ["pres"] = { "bin", "bist", "ist", "sind", "seid", "sind", }, ["pret"] = { "war", "warst", "war", "waren", "wart", "waren", }, ["subi"] = { "sei", {"seist", "seiest"}, "sei", "seien", "seiet", "seien", }, ["subii"] = { "wäre", {"wärst", "wärest"}, "wäre", "wären", {"wärt", "wäret"}, "wären", }, ["imp"] = { "sei", "seid", }, ["presp"] = "seiend", ["pp"] = "wesen", }, ["tun"] = { ["pres"] = { "tue", "tust", "tut", "tun", "tut", "tun", }, ["pret"] = { "tat", {"tatest", "tatst"}, "tat", "taten", "tatet", "taten", }, ["subi"] = { "tue", "tuest", "tue", "tuen", "tuet", "tuen", }, ["subii"] = { "täte", "tätest", "täte", "täten", "tätet", "täten", }, ["imp"] = { {"tu", "tue"}, "tut", }, ["presp"] = "tuend", ["pp"] = "tan", }, -- FIXME, maybe we should construct this automatically from "tun". ["thun"] = { ["pres"] = { "thue", "thust", "thut", "thun", "thut", "thun", }, ["pret"] = { "that", {"thatest", "thatst"}, "that", "thaten", "thatet", "thaten", }, ["subi"] = { "thue", "thuest", "thue", "thuen", "thuet", "thuen", }, ["subii"] = { "thäte", "thätest", "thäte", "thäten", "thätet", "thäten", }, ["imp"] = { {"thu", "thue"}, "thut", }, ["presp"] = "thuend", ["pp"] = "than", }, ["werden"] = { ["pres"] = { "werde", "wirst", "wird", "werden", "werdet", "werden", }, ["pret"] = { {"wurde", {form = "ward", footnotes = {"[โบราณ]"}}}, {"wurdest", {form = "wardst", footnotes = {"[โบราณ]"}}}, {"wurde", {form = "ward", footnotes = {"[โบราณ]"}}}, "wurden", "wurdet", "wurden", }, ["subi"] = { "werde", "werdest", "werde", "werden", "werdet", "werden", }, ["subii"] = { "würde", "würdest", "würde", "würden", "würdet", "würden", }, ["imp"] = { {"werd", "werde"}, "werdet", }, ["presp"] = "werdend", ["pp"] = "worden", }, } local reflexive_possessive_forms = { ["sein"] = {"mein", "dein", "sein", "unser", "euer", "ihr"}, ["seine"] = {"meine", "deine", "seine", "unsere", "eure", "ihre"}, ["seinen"] = {"meinen", "deinen", "seinen", "unseren", "euren", "ihren"}, ["seinem"] = {"meinem", "deinem", "seinem", "unserem", "eurem", "ihrem"}, ["seiner"] = {"meiner", "deiner", "seiner", "unserer", "eurer", "ihrer"}, ["seines"] = {"meines", "deines", "seines", "unseses", "eures", "ihres"}, } local reflexive_case_forms = { ["accpron"] = {"mich", "dich", "sich", "uns", "euch", "sich"}, ["datpron"] = {"mir", "dir", "sich", "uns", "euch", "sich"}, } local function skip_slot(base, slot) if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if base.nosplitprefix then -- Verbs that don't allow split prefixes, e.g. [[voreinstellen]], don't have forms where the prefix is -- split from the main verb, including the present, preterite, subjunctive I and II and imperative (but -- not the subordinate clause equivalents). return slot:find("^pre[st]") or slot:find("^subi") or slot:find("^imp_") end if base.only3s and not slot:find("3s") or base.only3sp and not slot:find("3[sp]") then return true end return false end local function strip_spaces(text) return text:gsub("^%s*(.-)%s*", "%1") end local function escape_sein_sich_indicators(arg1) if not arg1:find("pron>") then return arg1 end local segments = put.parse_balanced_segment_run(arg1, "<", ">") -- Loop over every other segment. The even-numbered segments are angle-bracket specs while -- the odd-numbered segments are the text between them. for i = 2, #segments - 1, 2 do if segments[i] == "<accpron>" then segments[i] = "⦃⦃accpron⦄⦄" elseif segments[i] == "<datpron>" then segments[i] = "⦃⦃datpron⦄⦄" elseif segments[i] == "<pron>" then segments[i] = "⦃⦃pron⦄⦄" end end return table.concat(segments) end local function undo_escape_form(form) -- assign to var to throw away second value local newform = form:gsub("⦃⦃", "<"):gsub("⦄⦄", ">") return newform end local function remove_sein_sich_indicators(form) -- assign to var to throw away second value local newform = form:gsub("⦃⦃.-⦄⦄", "") return newform end local function replace_sein_sich_indicators(slot, form) if not form:find("⦃") then return form end local persnum = slot:match("^.*_([123][sp])$") local index if persnum then index = persnum_to_index[persnum] else index = 3 end form = form:gsub("sich(%]*)⦃⦃accpron⦄⦄", function(brackets) return reflexive_case_forms.accpron[index] .. brackets end) form = form:gsub("sich(%]*)⦃⦃datpron⦄⦄", function(brackets) return reflexive_case_forms.datpron[index] .. brackets end) form = form:gsub("(seine?[mnrs]?)(%]*)⦃⦃pron⦄⦄", function(sein_form, brackets) if reflexive_possessive_forms[sein_form] then return reflexive_possessive_forms[sein_form][index] .. brackets else error("Unrecognized sein-form '" .. sein_form .. "' in slot " .. slot .. ": " .. undo_escape_form(form)) end end) form = form:gsub("sein%]%]e?[mnrs]?⦃⦃pron⦄⦄", function(sein_ending) local sein_form = "sein" .. sein_ending if reflexive_possessive_forms[sein_form] then return reflexive_possessive_forms["sein"][index] .. "|" .. reflexive_possessive_forms[sein_form][index] .. "]]" else error("Unrecognized sein-form '" .. sein_form .. "' in slot " .. slot .. ": " .. undo_escape_form(form)) end end) if form:find("⦃⦃") or form:find("⦄⦄") then error("Unrecognized pronoun substitution in slot " .. slot .. ": " .. undo_escape_form(form)) end return form end local function combine_stem_ending(slot, stem, ending) local ending_with_pound = ending .. "#" if ending_with_pound:find("^st[ #]") then if rfind(stem, "[sxzß]$") then ending = ending:gsub("^s", "") elseif stem:find("st$") then -- bersten ending = ending:gsub("^st", "") end elseif ending_with_pound:find("^t[ #]") and stem:find("th?$") then ending = ending:gsub("^t", "") end return replace_sein_sich_indicators(slot, stem .. ending) end local function add(base, slot, stems, endings, footnotes) if skip_slot(base, slot) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(slot, stem, ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, iut.combine_footnotes(footnotes, base.all_footnotes)) end local function add_multi(base, slot, stems_and_endings, footnotes) if skip_slot(base, slot) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(slot, stem, ending) end iut.add_multiple_forms(base.forms, slot, stems_and_endings, do_combine_stem_ending, nil, nil, iut.combine_footnotes(footnotes, base.all_footnotes)) end local function add3(base, slot, stems1, stems2, endings, footnotes) return add_multi(base, slot, {stems1, stems2, endings}, footnotes) end local function add4(base, slot, stems1, stems2, stems3, endings, footnotes) return add_multi(base, slot, {stems1, stems2, stems3, endings}, footnotes) end local function add5(base, slot, stems1, stems2, stems3, stems4, endings, footnotes) return add_multi(base, slot, {stems1, stems2, stems3, stems4, endings}, footnotes) end local function get_subii_note(base) if base.from_headword then -- don't include autogenerated note if from_headword, so it doesn't end up in the headword qualifiers return nil end if past_subjunctive_single_word_preferred[base.base_verb] then return {past_subjunctive_single_word_preferred_footnote} elseif past_subjunctive_single_word_often_used[base.base_verb] then return {past_subjunctive_single_word_often_used_footnote} end return {past_subjunctive_single_word_rare_footnote} end local function add_zu_infinitive(base) if base.any_pre_pref then local zu if base.pre_pref == "" or base.pre_pref:find(" $") then zu = "zu " else zu = "zu" end add(base, "zu_infinitive", base.pre_pref .. zu, base.bare_infinitive) end end local function add_present(base, pretpres) local stems = base.infstem local stems23 = base.pres_23 or stems local function doadd(slot_pref, form_pref) -- Do forms based off the infinitive stem. for _, stemform in ipairs(stems) do local prefixed_stem = form_pref .. stemform.form local syncopated_stem = base.unstressed_el_er and prefixed_stem:gsub("e([lr])$", "%1") local function addit(slot, stem, ending, footnotes) add(base, slot_pref .. slot, stem, ending .. (slot_pref == "" and base.post_pref or ""), iut.combine_footnotes(footnotes, stemform.footnotes)) end -- first singular present indicative if not pretpres then -- pres_1s for preterite-present verbs used pres23 stem if base.unstressed_el_er then addit("pres_1s", syncopated_stem, "e") addit("pres_1s", prefixed_stem, "e") addit("pres_1s", prefixed_stem, "") else addit("pres_1s", prefixed_stem, "e") end end -- plural present indicative local e_in_2p = ends_in_dt(prefixed_stem) or base.unstressed_e_infix if e_in_2p then addit("pres_2p", prefixed_stem, "et") else addit("pres_2p", prefixed_stem, "t") end if base.unstressed_el_er or base.unstressed_erl then addit("pres_1p", prefixed_stem, "n") addit("pres_3p", prefixed_stem, "n") else addit("pres_1p", prefixed_stem, "en") addit("pres_3p", prefixed_stem, "en") end -- subjunctive I addit("subi_1s", prefixed_stem, "e") addit("subi_2s", prefixed_stem, "est") addit("subi_3s", prefixed_stem, "e") addit("subi_2p", prefixed_stem, "et") if base.unstressed_el_er then addit("subi_1s", syncopated_stem, "e") addit("subi_2s", syncopated_stem, "est") addit("subi_3s", syncopated_stem, "e") addit("subi_2p", syncopated_stem, "et") end if base.unstressed_el_er then addit("subi_1p", prefixed_stem, "n") addit("subi_3p", prefixed_stem, "n") else addit("subi_1p", prefixed_stem, "en") addit("subi_3p", prefixed_stem, "en") end -- imperative plural; most preterite-present verbs don't have it, and [[wissen]] is handled below if slot_pref == "" and not pretpres then if e_in_2p then addit("imp_2p", prefixed_stem, "et") else addit("imp_2p", prefixed_stem, "t") end end end -- Do forms based off of pres23 stem (also includes pres_1sg in preterite-present verbs). for _, stem23form in ipairs(stems23) do local prefixed_stem23 = form_pref .. stem23form.form local function addit(slot, stem, ending, footnotes) add(base, slot_pref .. slot, stem, ending .. (slot_pref == "" and base.post_pref or ""), iut.combine_footnotes(footnotes, stem23form.footnotes)) end if pretpres then -- Totally different code for preterite-present singular and imperative. addit("pres_1s", prefixed_stem23, "") addit("pres_2s", prefixed_stem23, "st") addit("pres_3s", prefixed_stem23, "") if slot_pref == "" and base.base_verb == "wissen" then -- Only [[wissen]] among the preterite-present verbs has an imperative. addit("imp_2s", "wiss", "e") -- dewikt mentions 'wisset' as an alternative, but not in Duden addit("imp_2p", "wiss", "t") end else -- Normal code path. local stem23_is_same_as_stem for _, stemform in ipairs(stems) do if stemform.form == stem23form.form then stem23_is_same_as_stem = true break end end -- present 2/3 singular local e_in_23s = base.unstressed_e_infix or stem23_is_same_as_stem and ends_in_dt(prefixed_stem23) if e_in_23s then addit("pres_2s", prefixed_stem23, "est") addit("pres_3s", prefixed_stem23, "et") else addit("pres_2s", prefixed_stem23, "st") if prefixed_stem23:find("sch$") then addit("pres_2s", prefixed_stem23, "t", not base.from_headword and {schst_footnote} or nil) end addit("pres_3s", prefixed_stem23, "t") end -- imperative singular; this may or may not be based off the pres23 stem -- Specifically, if the pres23 stem is different from the infinitive stem and does not have an ä or ö -- in it ([[fahren]], er [[fährt]] but imperative [[fahr]]/[[fahre]]; [[stoßen]], er [[stößt]] but -- imperative [[stoß]]/[[stoße]]), use it. Don't add -e unless '.longimp' is given (for [[sehen]], with -- imperatives [[sieh]] and [[siehe]]; but normally [[geben]] with imperative only [[gib]], similarly -- for [[treten]], [[gelten]], [[bergen]], [[etc.]]). In all other cases, use the infinitive stem, and -- under normal circumstances include two variants, without -e and with -e. We include only the variant -- with -e if '.e' is given ([[atmen]], [[zeichnen]], etc.), and we include only the variant without -e -- if '.shortimp' is given (unclear if this is needed for any verb). if slot_pref == "" then if not rfind(prefixed_stem23, "[äö]") and not stem23_is_same_as_stem then addit("imp_2s", prefixed_stem23, "") if base.longimp then addit("imp_2s", prefixed_stem23, "e") end else assert(form_pref == "") for _, stemform in ipairs(stems) do local function addimp(stem, ending) add(base, "imp_2s", stem, ending .. base.post_pref, stemform.footnotes) end local stem = stemform.form if base.unstressed_el_er then local syncopated_stem = stem:gsub("e([lr])$", "%1") addimp(syncopated_stem, "e") end if base.unstressed_e_infix then addimp(stem, "e") elseif base.shortimp then addimp(stem, "") else addimp(stem, "") addimp(stem, "e") end end end end end end end -- Do the basic forms doadd("", "") -- Also do the subordinate clause forms if any alternants have a prefix. if base.any_pre_pref then doadd("subc_", base.pre_pref) end -- Do the miscellaneous non-finite forms add3(base, "pres_part", base.pre_pref, base.bare_infinitive, "d") add_zu_infinitive(base) end -- Add the past forms and/or subjunctive II forms. `is_past` should be true if we're conjugating the past tense -- (not the past subjunctive), in which case the stems in `stem` should be the actual 1s/3s forms, ending in -te -- or -de if weak. If `is_past` is false, we're conjugating the past subjunctive. In that case, the stems passed -- in should include -e if that needs to be preserved in all forms (specifically, for [[spie]] past of [[speien]]; -- syncopated #'spist' is not allowed). (In practice, we chop off the final -e of explicitly user-specified past -- subjunctive forms and otherwise pass in the actual past tense. This means that user-specified past subjunctives -- in -te (e.g. [[brächte]]) will be passed in as 'brächt' but past subjunctives defaulted from the past tense -- will be passed in e.g. as 'lachte'. This works because for stems in -t and -d, the result is the same.) local function add_past_or_subii(base, slot_pref, stems, is_past) local function doadd(full_slot_pref, form_pref) for _, stemform in ipairs(stems) do local prefixed_stem = form_pref .. stemform.form local ends_in_e = prefixed_stem:find("e$") -- Normally, the weak past tense ends in -te and the strong past does not end in -e. An exception is -- [[spie]] (past tense of [[speien]]), which will be treated as weak (superseded spellings like -- 'spieen' will not be generated). local is_strong = is_past and not ends_in_e prefixed_stem = prefixed_stem:gsub("e$", "") local stem_ends_in_dt = ends_in_dt(prefixed_stem) local function addit(slot, ending, footnotes) local subii_footnotes if full_slot_pref:find("subii") then subii_footnotes = get_subii_note(base) end add(base, full_slot_pref .. slot, prefixed_stem, ending .. (full_slot_pref == slot_pref and base.post_pref or ""), iut.combine_footnotes(subii_footnotes, iut.combine_footnotes(footnotes, stemform.footnotes))) end if is_strong then addit("1s", "") addit("3s", "") if not stem_ends_in_dt then if rfind(prefixed_stem, "[sxzß]$") then addit("2s", "est") end addit("2s", "st") addit("2p", "t") else -- bitten -> batest or batst, similarly for laden, raten, etc. addit("2s", "est") if not prefixed_stem:find("st$") then -- bersten addit("2s", "st") end addit("2p", "et") end else -- Weak past and past subjunctive have same endings when ending in -d or -t (always the case for weak past). addit("1s", "e") addit("3s", "e") if not stem_ends_in_dt and not ends_in_e then addit("2s", "est") -- more formal; FIXME: should we footnote this? addit("2p", "et") -- more formal; FIXME: should we footnote this? addit("2s", "st") addit("2p", "t") else addit("2s", "est") addit("2p", "et") end end -- Both pasts, as well as past subjunctive, have same endings in 1p and 3p. addit("1p", "en") addit("3p", "en") end end -- Do the basic forms doadd(slot_pref, "") -- Also do the subordinate clause forms if any alternants have a prefix. if base.any_pre_pref then doadd("subc_" .. slot_pref, base.pre_pref) end end local conjs = {} conjs["normal"] = function(base) add_present(base) add_past_or_subii(base, "pret_", base.past, "past") add_past_or_subii(base, "subii_", base.past_sub or base.past) end conjs["pretpres"] = function(base) add_present(base, "pretpres") add_past_or_subii(base, "pret_", base.past, "past") add_past_or_subii(base, "subii_", base.past_sub or base.past) end conjs["irreg"] = function(base) local function doadd(slot_pref) local function addit(slot, forms, footnotes) if slot_pref == "" then add3(base, slot, base.insep_prefix, forms, base.post_pref, footnotes) else add(base, slot_pref .. slot, base.pre_pref .. base.insep_prefix, forms, footnotes) end end -- Do present, preterite, subjunctive I and II. for _, slot_tense in ipairs({"pres", "pret", "subi", "subii"}) do for index, forms in ipairs(base.irregverbobj[slot_tense]) do local persnum = person_number_list[index] local footnotes if slot_tense == "subii" then footnotes = get_subii_note(base) end addit(slot_tense .. "_" .. persnum, forms, footnotes) end end -- Do imperative. if slot_pref == "" then for index, forms in ipairs(base.irregverbobj["imp"]) do local persnum = imp_person_number_list[index] addit("imp_" .. persnum, forms) end end end -- Do the basic forms doadd("") -- Also do the subordinate clause forms if any alternants have a prefix. if base.any_pre_pref then doadd("subc_") end -- Do the miscellaneous non-finite forms iut.add_multiple_forms(base, "pp", {base.ge_prefix, base.insep_prefix, base.irregverbobj["pp"]}, -- We don't want to use combine_stem_ending because we want sein-sich indicators to be left alone, -- so they get replaced later when constructing composed forms. function(stem, ending) return stem .. ending end) add(base, "perf_part", base.pre_pref, base.pp) -- only [[werden]] by itself; not [[loswerden]], [[fertigwerden]], etc. if base.lemma == "werden" then iut.insert_form(base.forms, "perf_part", {form = "worden", footnotes = {"[เมื่อเป็นคำกริยาช่วย]"}}) end add(base, "pres_part", base.pre_pref .. base.insep_prefix, base.irregverbobj["presp"]) add_zu_infinitive(base) end local function add_composed_forms(base) local function add_composed(tense_mood, index, persnum, auxforms, participle, suffix, footnotes) local pers_auxforms = iut.convert_to_general_list_form(auxforms[index]) local linked_pers_auxforms = iut.map_forms(pers_auxforms, function(form) return "[[" .. form .. "]] " end) add4(base, tense_mood .. "_" .. persnum, linked_pers_auxforms, "[[" .. base.pre_pref, participle, "]]" .. suffix, footnotes) end local function add_composed_perf(tense_mood, index, persnum, haben_auxforms, sein_auxforms, haben_suffix, sein_suffix) for _, auxform in ipairs(base.aux) do if auxform.form == "haben" then add_composed(tense_mood, index, persnum, haben_auxforms, base.pp, haben_suffix, auxform.footnotes) end if auxform.form == "sein" then add_composed(tense_mood, index, persnum, sein_auxforms, base.pp, sein_suffix, auxform.footnotes) end end end local haben_forms = irreg_verbs["haben"] local sein_forms = irreg_verbs["sein"] local werden_forms = irreg_verbs["werden"] for index, persnum in ipairs(person_number_list) do add_composed_perf("perf_ind", index, persnum, haben_forms["pres"], sein_forms["pres"], "", "") add_composed_perf("perf_sub", index, persnum, haben_forms["subi"], sein_forms["subi"], "", "") add_composed_perf("plup_ind", index, persnum, haben_forms["pret"], sein_forms["pret"], "", "") add_composed_perf("plup_sub", index, persnum, haben_forms["subii"], sein_forms["subii"], "", "") for _, mood in ipairs({"ind", "subi", "subii"}) do local tense = mood == "ind" and "pres" or mood add_composed("futi_" .. mood, index, persnum, werden_forms[tense], base.bare_infinitive, "") add_composed_perf("futii_" .. mood, index, persnum, werden_forms[tense], werden_forms[tense], " [[haben]]", " [[sein]]") end end add3(base, "futi_inf", "[[" .. base.pre_pref, base.bare_infinitive, "]] [[werden]]") add5(base, "futii_inf", "[[" .. base.pre_pref, base.pp, "]] [[", base.aux, "]] [[werden]]") end local function handle_derived_slots(base) -- Compute linked versions of potential lemma slots, for use in {{de-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do iut.insert_forms(base.forms, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function conjugate_verb(base) if not conjs[base.conj] then error("Internal error: Unrecognized conjugation type '" .. base.conj .. "'") end conjs[base.conj](base) add_composed_forms(base) -- No overrides implemented currently. -- process_slot_overrides(base) handle_derived_slots(base) end local function parse_indicator_spec(angle_bracket_spec) local base = {} local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local function fetch_specs(comma_separated_group, transform_form) if not comma_separated_group then return {{}} 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 transform_form then form = transform_form(form) end table.insert(specs, {form = form, footnotes = fetch_footnotes(colon_separated_group)}) end return specs end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local comma_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*[,#]%s*", "preserve splitchar") local first_element = comma_separated_groups[1][1] if first_element == "haben" or first_element == "sein" then for j = 1, #comma_separated_groups, 2 do if j > 1 and strip_spaces(comma_separated_groups[j - 1][1]) ~= "," then parse_err("Separator of # not allowed with haben or sein") end local aux = comma_separated_groups[j][1] if aux ~= "haben" and aux ~= "sein" then parse_err("Unrecognized auxiliary '" .. aux .. "'") end if base.aux then for _, existing_aux in ipairs(base.aux) do if existing_aux.form == aux then parse_err("Auxiliary '" .. aux .. "' specified twice") end end else base.aux = {} end table.insert(base.aux, {form = aux, footnotes = fetch_footnotes(comma_separated_groups[j])}) end elseif first_element == "-ge" or first_element == "+ge" then for j = 1, #comma_separated_groups, 2 do if j > 1 and strip_spaces(comma_separated_groups[j - 1][1]) ~= "," then parse_err("Separator of # not allowed with +ge or -ge") end local prefix = comma_separated_groups[j][1] if prefix ~= "+ge" and prefix ~= "-ge" then parse_err("Unrecognized ge- prefix '" .. prefix .. "'") end local ge_prefix if prefix == "+ge" then ge_prefix = "ge" else ge_prefix = "" end if base.ge_prefix then for _, existing_prefix in ipairs(base.ge_prefix) do if existing_prefix.form == ge_prefix then parse_err("Ge- prefix '" .. prefix .. "' specified twice") end end else base.ge_prefix = {} end table.insert(base.ge_prefix, {form = ge_prefix, footnotes = fetch_footnotes(comma_separated_groups[j])}) end elseif #comma_separated_groups > 1 then -- principal parts specified if base.past then parse_err("Can't specify principal parts twice") end assert(#comma_separated_groups[2] == 1) local past_index local first_separator = strip_spaces(comma_separated_groups[2][1]) if first_separator == "#" then -- present 3rd singular specified base.pres_23 = fetch_specs(comma_separated_groups[1], function(form) local stem if base.conj == "pretpres" then stem = form else stem = form:match("^(.-)%-$") if not stem then stem = form:match("^(.-)e?t$") end end if stem then return stem else parse_err("Present 3sg form '" .. form .. "' should end in - (for the stem) or -t") end end) past_index = 3 else past_index = 1 end base.past = fetch_specs(comma_separated_groups[past_index], function(form) return form end) if #comma_separated_groups < past_index + 2 then parse_err("Missing past participle spec") end assert(#comma_separated_groups[past_index + 1] == 1) if strip_spaces(comma_separated_groups[past_index + 1][1]) ~= "," then parse_err("Only first separator can be a #") end base.pp = fetch_specs(comma_separated_groups[past_index + 2], function(form) if form:find("e[nd]$") or form:find("t$") then return form else parse_err("Past participle '" .. form .. "' should end in -en, -t, or -ed") end end) if #comma_separated_groups > past_index + 2 then assert(#comma_separated_groups[past_index + 3] == 1) if strip_spaces(comma_separated_groups[past_index + 3][1]) ~= "," then parse_err("Only first separator can be a #") end base.past_sub = fetch_specs(comma_separated_groups[past_index + 4], function(form) local stem = form:match("^(.-)e$") if not stem then parse_err("Past subjunctive '" .. form .. "' should end in -e") end return stem end) if #comma_separated_groups > past_index + 4 then parse_err("Too many specs given") end end elseif first_element == "pretpres" or first_element == "irreg" then if #comma_separated_groups[1] > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base.conj then parse_err("Conjugation specified as '" .. first_element .. "' but already specified or autodetermined as '" .. base.conj .. "'") end base.conj = first_element elseif first_element == "einfix" or first_element == "-einfix" then if #comma_separated_groups[1] > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end base.unstressed_e_infix = first_element == "einfix" elseif first_element == "shortimp" or first_element == "longimp" or first_element == "only3s" or first_element == "only3sp" or first_element == "nofinite" or first_element == "nosplitprefix" then if #comma_separated_groups[1] > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end base[first_element] = true elseif first_element == "" or first_element == "inf" then local footnotes = fetch_footnotes(comma_separated_groups[1]) if not footnotes then parse_err("Empty spec and 'inf' spec without footnotes not allowed") end if first_element == "inf" then base.infstem_footnotes = footnotes else base.all_footnotes = footnotes end else parse_err("Unrecognized spec '" .. comma_separated_groups[1][1] .. "'") end end return base end -- Normalize all lemmas, splitting off separable prefixes and substituting the pagename for blank lemmas. local function normalize_all_lemmas(alternant_multiword_spec, from_headword, pagename) local any_pre_pref iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = pagename end if base.lemma:find("_") and not base.lemma:find("%[%[") then -- If lemma is multiword and has no links, add links automatically. base.lemma= "[[" .. base.lemma:gsub("_", "]]_[[") .. "]]" end base.orig_lemma = base.lemma base.orig_lemma_no_links = m_links.remove_links(base.lemma) -- Normalize the linked lemma by removing dot, underscore, and <pron> and such indicators. base.linked_lemma = remove_sein_sich_indicators(base.lemma:gsub("%.", ""):gsub("_", " ")) base.lemma = m_links.remove_links(base.linked_lemma) local lemma = base.orig_lemma_no_links base.pre_pref, base.post_pref = "", "" local prefix, verb = lemma:match("^(.*)_(.-)$") if prefix then prefix = prefix:gsub("_", " ") -- in case of multiple preceding words base.pre_pref = base.pre_pref .. prefix .. " " base.post_pref = base.post_pref .. " " .. prefix else verb = lemma end prefix, base.base_verb = verb:match("^(.*)%.(.-)$") if prefix then -- Lowercase the separable prefixes (but not postfixes) to allow for specified infinitive `Rad.fahren`, -- which becomes actual infinitive [[radfahren]] but 'ich fahre Rad' etc. local prefix_parts = rsplit(prefix, "%.") for i, prefix_part in ipairs(prefix_parts) do prefix_parts[i] = lcfirst(prefix_part) end -- There may be multiple separable prefixes (e.g. [[wiedergutmachen]], ich mache wieder gut) base.pre_pref = base.pre_pref .. table.concat(prefix_parts) base.post_pref = base.post_pref .. " " .. prefix:gsub("%.", " ") else base.base_verb = verb end if base.pre_pref ~= "" then any_pre_pref = true end if base.only3s then alternant_multiword_spec.only3s = true end if base.only3sp then alternant_multiword_spec.only3sp = true end -- Remove <pron> indicators and such. local reconstructed_lemma = remove_sein_sich_indicators(base.pre_pref .. base.base_verb) base.lemma = reconstructed_lemma base.from_headword = from_headword end) if any_pre_pref then iut.map_word_specs(alternant_multiword_spec, function(base) base.any_pre_pref = true end) end if alternant_multiword_spec.only3s then iut.map_word_specs(alternant_multiword_spec, function(base) if not base.only3s then error("If some alternants specify 'only3s', all must") end end) end if alternant_multiword_spec.only3sp then iut.map_word_specs(alternant_multiword_spec, function(base) if not base.only3sp then error("If some alternants specify 'only3sp', all must") end end) end end local function detect_verb_type(base, verb_types) local this_verb_types = {} local function set_verb_type() base.verb_types = this_verb_types if verb_types then for _, verb_type in ipairs(this_verb_types) do m_table.insertIfNot(verb_types, verb_type) end end end if base.conj == "pretpres" then m_table.insertIfNot(this_verb_types, "pretpres") set_verb_type() return elseif base.conj == "irreg" then m_table.insertIfNot(this_verb_types, "irreg") set_verb_type() return end local infstem = m_table.deepCopy(base.infstem) local past = m_table.deepCopy(base.past) local pp = m_table.deepCopy(base.pp) local function matches_forms(forms, expected, ending_to_chop) expected = expected:gsub("C", not_vowel_c) .. "$" local seen = false for _, form in ipairs(forms) do local stem if ending_to_chop then stem = rmatch(form.form, "^(.*)" .. ending_to_chop .. "$") else stem = form.form end if stem and rfind("#" .. stem, expected) then seen = true form.seen = form.seen or "maybe" end end return seen end local function reset_maybes(forms, value) for _, form in ipairs(forms) do if form.seen == "maybe" then form.seen = value end end end local function reset_all_maybes(value) reset_maybes(infstem, value) reset_maybes(past, value) reset_maybes(pp, value) end local function has_unseen_weak_pp() for _, form in ipairs(pp) do if not form.seen and form.form:find("[dt]$") then return true end end return false end local function has_unseen_strong_pp() for _, form in ipairs(pp) do if not form.seen and form.form:find("n$") then return true end end return false end local function check(verbtype, infre, pastre, ppre, exclude) if exclude then for _, form in ipairs(infstem) do if exclude(form.form) then return end end end if matches_forms(infstem, infre) and matches_forms(past, pastre) and matches_forms(pp, ppre, "en") then m_table.insertIfNot(this_verb_types, verbtype) reset_all_maybes(true) else reset_all_maybes(false) end end local function check_strong() check("1", "Ce[iy]C*", "CieC*", "Cie?C*") -- beigen, bleiben, gedeihen, leihen, meiden, preisen, reiben, reihen, -- scheiden, scheinen, schreiben, schreien, schweigen, speiben, speien, speisen, steigen, treiben, weisen, -- zeihen; use 'Cie?C*' for past participle to handle 'schrien', 'spien' check("1", "Ce[iy]C*", "CiC*", "CiC*") -- beißen/beissen/beyßen/beyssen, bleichen, fleißen/fleissen, gleichen, -- gleiten, greifen, kneifen, kreischen, leiden, pfeifen, reißen/reissen, reiten, scheißen/scheissen, -- schleichen, schleifen, schleißen/schleissen, schmeißen/schmeissen, schneiden/schneyden, schreiten, -- spleißen/spleissen, streichen, streiten, weichen check("2", "CieC*", "CoC*", "CoC*") -- biegen, bieten, fliegen, fliehen, fließen/fliessen, frieren, -- genießen/geniessen, gießen/giessen, kiesen, kriechen, riechen, schieben, schießen/schiessen, schliefen, -- schließen/schliessen, sieden, sprießen/spriessen, stieben, triefen, verdrießen/verdriessen, verlieren, -- wiegen, ziehen check("2", "CauC*", "CoC*", "CoC*") -- krauchen, saufen, saugen check("2", "CüC", "CoC", "CoC") -- lügen, trügen local function exclude_nehmen_sprechen(form) -- need to exclude nehmen, stehlen, befehlen/empfehlen, sprechen, brechen, stechen return rfind(form, vowel_c .. "ch$") or rfind(form, vowel_c .. "h" .. not_vowel_c .. "$") end check("3", "C[ei]CC+", "CaCC+", "C[ou]CC+", exclude_nehmen_sprechen) -- [with e, + o in pp]: bergen, bersten, -- gelten, helfen, schelten, sterben, verderben, werben, werfen; [with i, + u in pp]: binden, brinnen, dringen, -- finden, gelingen, klingen, misslingen, ringen, schlingen, schwinden, schwingen, singen, sinken, springen, -- stinken, trinken, winden, wringen, zwingen; [with i, + o in pp]: rinnen, gewinnen, schwimmen, sinnen, -- spinnen check("3", "C[eiaö]CC+", "CoCC+", "CoCC+", exclude_nehmen_sprechen) -- [with e]: dreschen, fechten, flechten, melken, quellen, schmelzen, schwellen; [with i]: glimmen, klimmen; -- [with a]: schallen (geschallt), erschallen; [with ö]: erlöschen check("3", "quell", "quoll", "quoll") -- need to special-case quellen due to u preceding e check("3", "schind", "schund", "schund") -- need to special-case due to 'u' in past check("4", "C[eäo]C*", "Cah?Ch?", "CoC*") -- [with e]: befehlen, brechen, schrecken, nehmen, sprechen, stechen, -- stecken (gesteckt), stehlen, treffen; [with ä]: gebären; [with o]: kommen check("4", "C[äe]C", "Coh?C", "Coh?C", function(form) return form:find("heb$") end) -- [with ä]: gären, wägen, schwären; [with e]: bewegen, weben, scheren (but not heben) check("5", "C[ei]C*", "CaC", "CeC*") -- [with e, one C]: geben, genesen, geschehen, lesen, meßen, sehen, treten; -- [with e, two C]: essen, fressen, messen, vergessen; [with i, two C]: bitten, sitzen check("5", "C[ei]C*", "Cass", "Cess") -- essen, fressen, messen, sitzen in Swiss spelling check("5", "CieC", "CaC", "CeC") -- liegen check("6", "CaC*", "CuC*", "CaC*") -- backen, fragen (gefragt), graben, laden, mahlen, schaffen, schlagen, -- tragen, wachsen, waschen check("6", "heb", "h[ou]b", "hob") -- we need to special-case this because heben (class 6 per Wikipedia) has the -- exact same vowels as weben (class 4 per Wikipedia) check("6", "schwör", "schw[ou]r", "schwor") -- only strong verb with these vowels check("7", "CaC*", "CieC*", "CaC*") -- blasen, braten, fallen, halten, lassen, raten/rathen, schlafen check("7", "C[aäe]C*", "CiC*", "CaC*") -- [with a]: fangen; [with ä]: hängen; [with e]: gehen check("7", "Ce[iy]C*", "CieC*", "Ce[iy]C*") -- heißen/heissen/heyßen/heyssen check("7", "CauC*", "CieC*", "CauC*") -- hauen, laufen check("7", "CoC*", "CieC*", "CoC*") -- stoßen/stossen check("7", "CuC*", "CieC*", "CuC*") -- rufen end for _, form in ipairs(past) do local past_stem = form.form:match("^(.*)te$") -- matches_forms() expects a Lua pattern so we need to escape special pattern chars (e.g. * in [[f*cken]]) past_stem = past_stem and m_string_utilities.pattern_escape(past_stem) or nil if past_stem then if matches_forms(infstem, "#" .. past_stem) then -- Need to run matches_forms() on all possibilities even if earlier ones match, -- to mark the seen forms correctly. local matches_pp = matches_forms(pp, "#" .. past_stem .. "t") matches_pp = matches_forms(pp, "#ge" .. past_stem .. "t") or matches_pp if matches_pp then m_table.insertIfNot(this_verb_types, "weak") form.seen = true reset_all_maybes(true) else reset_all_maybes(false) end end end if not form.seen and form.form:find("ete$") then if matches_forms(infstem, "#" .. past_stem:gsub("e$", "")) then -- Need to run matches_forms() on all possibilities even if earlier ones match, -- to mark the seen forms correctly. local matches_pp = matches_forms(pp, "#" .. past_stem .. "t") matches_pp = matches_forms(pp, "#ge" .. past_stem .. "t") or matches_pp matches_pp = matches_forms(pp, "#" .. past_stem .. "d") or matches_pp matches_pp = matches_forms(pp, "#ge" .. past_stem .. "d") or matches_pp if matches_pp then m_table.insertIfNot(this_verb_types, "weak") form.seen = true reset_all_maybes(true) else reset_all_maybes(false) end end end if past_stem and not form.seen then if not has_unseen_weak_pp() and has_unseen_strong_pp() then m_table.insertIfNot(this_verb_types, "mixed") else m_table.insertIfNot(this_verb_types, "irregweak") end matches_forms(pp, "#" .. past_stem .. "t") matches_forms(pp, "#ge" .. past_stem .. "t") form.seen = true reset_all_maybes(true) end if not form.seen then check_strong() end if not form.seen then if not has_unseen_strong_pp() and has_unseen_weak_pp() then m_table.insertIfNot(this_verb_types, "mixed") else m_table.insertIfNot(this_verb_types, "irregstrong") end end end for _, form in ipairs(pp) do if not form.seen then if form.form:find("n$") then if m_table.contains(this_verb_types, "strong") then m_table.insertIfNot(this_verb_types, "irregstrong") elseif m_table.contains(this_verb_types, "weak") then m_table.insertIfNot(this_verb_types, "mixed") end elseif form.form:find("[dt]$") then if m_table.contains(this_verb_types, "weak") then m_table.insertIfNot(this_verb_types, "irregweak") elseif m_table.contains(this_verb_types, "strong") then m_table.insertIfNot(this_verb_types, "mixed") end end end end base.verb_types = this_verb_types if verb_types then for _, verb_type in ipairs(this_verb_types) do m_table.insertIfNot(verb_types, verb_type) end end set_verb_type() end local function detect_indicator_spec(base) base.forms = {} base.aux = base.aux or {{form = "haben"}} base.bare_infinitive = {{form = base.base_verb, footnotes = base.infstem_footnotes}} add(base, "infinitive", base.pre_pref, base.bare_infinitive) if base.only3s and base.only3sp then error("'only3s' and 'only3sp' cannot both be specified") end if base.conj == "irreg" then for irregverb, verbobj in pairs(irreg_verbs) do base.insep_prefix = base.base_verb:match("^(.-)" .. irregverb .. "$") if base.insep_prefix then base.irregverb = irregverb base.irregverbobj = verbobj if not base.ge_prefix then if base.insep_prefix ~= "" then base.ge_prefix = {{form = ""}} else base.ge_prefix = {{form = "ge"}} end end return end end error("Unrecognized irregular base verb '" .. base.base_verb .. "'") end -- The following applies to everything but 'irreg' verbs. local infstem, infroot = base.base_verb:match("^((.*)e[lr])n$") if infstem then base.unstressed_el_er = true else infstem, infroot = base.base_verb:match("^((.*)erl)n$") -- [[fensterln]] if infstem then base.unstressed_erl = true else infstem = base.base_verb:match("^(.*)en$") infroot = infstem if not infstem then error("Unrecognized infinitive, should end in -en, -eln, -ern or -erln: '" .. base.base_verb .. "'") end end end base.infstem = {{form = infstem, footnotes = base.infstem_footnotes}} if base.unstressed_e_infix == nil then -- Autodetect whether we need an -e- infix in the pres_2s and pres_3s ([[atmen]], [[eignen]], etc.). -- Almost all such cases have -Cmen or -Cnen where C is a consonant other than r or l and other than the -- following m or n (hence [[meinen]], [[lernen]], [[filmen]], [[schwimmen]] should be excluded); we also -- need to exclue -Vhmen and -Vhnen ([[wohnen]], [[rühmen]]), but not -Chmen and -Chnen ([[zeichnen]]). if base.base_verb:find("[mn]en$") and not base.base_verb:find("([mn])%1en$") and not rfind(base.base_verb, vowel_c .. "[hrl]?[mn]en$") then base.unstressed_e_infix = true end end if not base.conj then base.conj = "normal" end if base.conj == "normal" then local weak_past if not base.past then if base.unstressed_e_infix or ends_in_dt(infstem) then weak_past = infstem .. "et" else weak_past = infstem .. "t" end base.past = {{form = weak_past .. "e"}} end if not base.pp then if not weak_past then error("Internal error: past was explicitly given but not past participle") end if not base.ge_prefix then local no_ge for _, insep_prefix in ipairs(inseparable_prefixes) do -- There must be a vowel following the inseparable prefix; excludes beben, bechern, belfern, bellen, bessern, -- beten, betteln, betten, erben, erden, ernten, erzen, entern, gecken, gehren, gellen, gerben, geten, missen, -- zergen, zerren, etc. if rfind(infroot, "^" .. insep_prefix .. ".*" .. vowel_c .. ".*") and -- Exclude cases like beigen, beichten, beugen, beulen, geifern; this also wrongly excludes -- beirren, which needs -ge. not rfind(infroot, "^[bg]e[iu]" .. not_vowel_c .. "*$") then no_ge = true break end -- Check for -ier preceded by a vowel (excludes bieren, frieren, gieren, schmieren, stieren, zieren, etc.) if not base.unstressed_el_er and not base.unstressed_erl and rfind(infroot, "^.*" .. vowel_c .. ".*ier$") then no_ge = true break end end if no_ge then base.ge_prefix = {{form = ""}} else base.ge_prefix = {{form = "ge"}} end end base.pp = iut.map_forms(base.ge_prefix, function(form) if base.unstressed_el_er or base.unstressed_erl then return form .. base.base_verb:gsub("n$", "") .. "t" else return form .. weak_past end end) end else if not base.pp then error("For '" .. base.conj .. "' type verbs, past participle must be explicitly given") end end add(base, "perf_part", base.pre_pref, base.pp) end local function detect_all_indicator_specs(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) detect_verb_type(base) end) end -- Set the overall auxiliary or auxiliaries. We can't do this using the normal inflection -- code as it will produce e.g. '[[haben]] und [[haben]]' for conjoined verbs. local function compute_auxiliary(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) iut.insert_forms(alternant_multiword_spec.forms, "aux", base.aux) end) end function export.process_verb_classes(classes) local class_descs = {} local cats = {} local function insert_desc(desc) m_table.insertIfNot(class_descs, desc) end local function insert_cat(cat) m_table.insertIfNot(cats, cat .. "ภาษาเยอรมัน") end for _, class in ipairs(classes) do if class == "weak" then insert_desc("[[ภาคผนวก:อภิธานศัพท์#คำกริยาอ่อน|อ่อน]]") insert_cat("คำกริยาอ่อน") elseif class == "irregweak" then insert_desc("[[ภาคผนวก:อภิธานศัพท์#คำกริยาอ่อน|อ่อน]], [[ภาคผนวก:อภิธานศัพท์#ไม่ปรกติ|ไม่ปรกติ]]") insert_cat("คำกริยาอ่อน") insert_cat("คำกริยาอ่อนไม่ปรกติ") elseif class == "pretpres" then insert_desc("[[ภาคผนวก:อภิธานศัพท์#คำกริยาอดีตกาลสิ้นสุด-ปัจจุบันกาล|อดีตกาลสิ้นสุด-ปัจจุบันกาล]]") insert_cat("คำกริยาอดีตกาลสิ้นสุด-ปัจจุบันกาล") elseif class == "irreg" then insert_desc("[[ภาคผนวก:อภิธานศัพท์#ไม่ปรกติ|ไม่ปรกติ]]") insert_cat("คำกริยาไม่ปรกติ") elseif class == "mixed" then insert_desc("คำกริยาผสม") insert_cat("คำกริยาผสม") elseif class == "irregstrong" then insert_desc("[[ภาคผนวก:อภิธานศัพท์#คำกริยาแข็ง|แข็ง]], [[ภาคผนวก:อภิธานศัพท์#ไม่ปรกติ|ไม่ปรกติ]]") insert_cat("คำกริยาแข็ง") insert_cat("คำกริยาแข็งไม่ปรกติ") elseif class:find("^[1-7]$") then insert_desc("[[ภาคผนวก:อภิธานศัพท์#คำกริยาแข็ง|แข็ง]], กลุ่ม " .. class) insert_cat("คำกริยาแข็ง") insert_cat("คำกริยาแข็งกลุ่ม " .. class .. "&nbsp;") else error("คำกริยาไม่ทราบกลุ่ม '" .. class .. "'") end end return class_descs, cats end local function add_categories_and_annotation(alternant_multiword_spec, base, from_headword, manual) local function insert_cat(full_cat) m_table.insertIfNot(alternant_multiword_spec.categories, full_cat) end if not from_headword then for _, slot_and_accel in ipairs(all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("คำกริยาที่มีลิงก์แดงในตารางการผันรูปภาษาเยอรมัน") must_break = true break end end end end if must_break then break end end end if manual then return end local class_descs, cats = export.process_verb_classes(base.verb_types) for _, desc in ipairs(class_descs) do m_table.insertIfNot(alternant_multiword_spec.verb_types, desc) end -- Don't place multiword terms in categories like 'German class 4 strong verbs' to avoid spamming the -- categories with such terms. if from_headword and not base.lemma:find(" ") then for _, cat in ipairs(cats) do insert_cat(cat) end end for _, aux in ipairs(base.aux) do m_table.insertIfNot(alternant_multiword_spec.auxiliaries, link_term(aux.form, "term")) if from_headword and not base.lemma:find(" ") then -- see above insert_cat("คำกริยาภาษาเยอรมันที่ใช้คำกริยาช่วย " .. aux.form) -- Set flags for use below in adding 'German verbs using haben and sein as auxiliary' alternant_multiword_spec["saw_" .. aux.form] = true end end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec, from_headword, manual) alternant_multiword_spec.categories = {} alternant_multiword_spec.verb_types = {} alternant_multiword_spec.auxiliaries = {} iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, from_headword) end) if manual then alternant_multiword_spec.annotation = "" return end local ann_parts = {} table.insert(ann_parts, table.concat(alternant_multiword_spec.verb_types, " หรือ ")) if #alternant_multiword_spec.auxiliaries > 0 then table.insert(ann_parts, ", คำกริยาช่วย " .. table.concat(alternant_multiword_spec.auxiliaries, " หรือ ")) end if from_headword and alternant_multiword_spec.saw_haben and alternant_multiword_spec.saw_sein then m_table.insertIfNot(alternant_multiword_spec.categories, "คำกริยาภาษาเยอรมันที่ใช้คำกริยาช่วย haben และ sein") end alternant_multiword_spec.annotation = table.concat(ann_parts) end local function show_forms(alternant_multiword_spec) local lemmas = iut.map_forms(alternant_multiword_spec.forms.infinitive, remove_sein_sich_indicators) alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local linked_pronouns = {} for index, pronoun in ipairs(pronouns) do -- use 'es' instead of 'er' for 3s-only verbs if index == 3 and alternant_multiword_spec.only3s then linked_pronouns[index] = link_term("es") else linked_pronouns[index] = link_term(pronoun) end end local dass = link_term("dass") .. " " local function generate_link(data) local link = m_links.full_link { lang = lang, term = data.form.formval_for_link, tr = "-", accel = data.form.accel_obj } local footnote_text = iut.get_footnote_text(data.form.footnotes, data.footnote_obj) local persnum = data.slot:match("^imp_(2[sp])$") if persnum then link = link .. " (" .. linked_pronouns[persnum_to_index[persnum]] .. ")" else persnum = data.slot:match("^.*_([123][sp])$") if persnum then link = linked_pronouns[persnum_to_index[persnum]] .. " " .. link end if data.slot:find("^subc_") then link = dass .. link end end return link .. footnote_text end local function join_spans(data) if data.slot == "aux" then return table.concat(data.formval_spans, " หรือ ") else return table.concat(data.formval_spans, "<br />") end end local props = { lang = lang, lemmas = lemmas, generate_link = generate_link, join_spans = join_spans, } props.slot_list = verb_slots_basic iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote props.slot_list = verb_slots_subordinate_clause iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_subordinate_clause = alternant_multiword_spec.forms.footnote props.slot_list = verb_slots_composed iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_composed = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div style="width:100%;text-align:left;background:var(--wikt-palette-grey-blue-1,#d9ebff)"> <div style="display:inline-block;text-align:left;padding-left:1em;padding-right:1em"> {footnote} </div></div> ]=] local zu_infinitive_table = [=[ |- ! colspan=2 style="background:var(--wikt-palette-grey-2,#d0d0d0)" | รูปกริยากลาง zu | colspan=4 data-accel-col=1 | {zu_infinitive} ]=] local basic_table = [=[ <div class="NavFrame" style=""> <div class="NavHead" style="">การผันรูปของ {title}</div> <div class="NavContent"> {\op}| style="border: 1px solid var(--wikt-palette-black,#000000); border-collapse:collapse; background:var(--wikt-palette-white,#fafafa); text-align:center; width:100%" class="inflection-table" |- ! colspan=2 style="background:var(--wikt-palette-grey-2,#d0d0d0)" | <span title="Infinitiv">รูปกริยากลาง</span> | colspan=4 data-accel-col=1 | {infinitive} |- ! colspan=2 style="background:var(--wikt-palette-grey-2,#d0d0d0)" | <span title="Partizip I (Partizip Präsens)">รูปกริยาขยายปัจจุบันกาล</span> | colspan=4 data-accel-col=20 | {pres_part} |- ! colspan=2 style="background:var(--wikt-palette-grey-2,#d0d0d0)" | <span title="Partizip II (Partizip Perfekt)">รูปกริยาขยายอดีตกาล</span> | colspan=4 data-accel-col=20 | {perf_part} {zu_infinitive_table}|- ! colspan=2 style="background:var(--wikt-palette-grey-2,#d0d0d0)" | <span title="Hilfsverb">คำกริยาช่วย</span> | colspan=4 | {aux} |- | rowspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | ! colspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | <span title="Indikativ">มาลาบอกเล่า</span> | rowspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | ! colspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | <span title="Konjunktiv">มาลาสมมุติ</span> |- ! style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | เอกพจน์ ! style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | พหูพจน์ ! style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | เอกพจน์ ! style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | พหูพจน์ |- ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4); width:7em" | <span title="Präsens">ปัจจุบันกาล</span> | data-accel-col=2 | {pres_1s} | data-accel-col=3 | {pres_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4); width:7em" | <span title="Konjunktiv I (Konjunktiv Präsens)">I</span> | data-accel-col=10 | {subi_1s} | data-accel-col=11 | {subi_1p} |- | data-accel-col=2 | {pres_2s} | data-accel-col=3 | {pres_2p} | data-accel-col=10 | {subi_2s} | data-accel-col=11 | {subi_2p} |- | data-accel-col=2 | {pres_3s} | data-accel-col=3 | {pres_3p} | data-accel-col=10 | {subi_3s} | data-accel-col=11 | {subi_3p} |- | colspan=6 style="background:var(--wikt-palette-grey-2,#d5d5d5); height: .25em" | |- ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4)" | <span title="Präteritum">อดีตกาลสิ้นสุด</span> | data-accel-col=6 | {pret_1s} | data-accel-col=7 | {pret_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4)" | <span title="Konjunktiv II (Konjunktiv Präteritum)">II</span> | data-accel-col=14 | {subii_1s} | data-accel-col=15 | {subii_1p} |- | data-accel-col=6 | {pret_2s} | data-accel-col=7 | {pret_2p} | data-accel-col=14 | {subii_2s} | data-accel-col=15 | {subii_2p} |- | data-accel-col=6 | {pret_3s} | data-accel-col=7 | {pret_3p} | data-accel-col=14 | {subii_3s} | data-accel-col=15 | {subii_3p} |- | colspan=6 style="background:var(--wikt-palette-grey-2,#d5d5d5); height: .25em" | |- ! style="background:var(--wikt-palette-grey-blue-3,#c0cfe4)" | <span title="Imperativ">มาลาสั่ง</span> | data-accel-col=18 | {imp_2s} | data-accel-col=19 | {imp_2p} | colspan=3 style="background:var(--wikt-palette-grey-1,#e0e0e0)" | |{\cl}{notes_clause}</div></div> ]=] local subordinate_clause_table = [=[ <div class="NavFrame" style=""> <div class="NavHead" style="">รูปกริยา {title} เมื่ออยู่ในอนุประโยค</div> <div class="NavContent"> {\op}| style="border: 1px solid var(--wikt-palette-black,#000000); border-collapse:collapse; background:var(--wikt-palette-white,#fafafa); text-align:center; width:100%" class="inflection-table" |- | style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | ! colspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | <span title="Indikativ">มาลาบอกเล่า</span> | style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | ! colspan=2 style="background:var(--wikt-palette-grey-indigo-3,#a0ade3)" | <span title="Konjunktiv">มาลาสมมุติ</span> |- ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4); width:7em" | <span title="Präsens">ปัจจุบันกาล</span> | data-accel-col=4 | {subc_pres_1s} | data-accel-col=5 | {subc_pres_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4); width:7em" | <span title="Konjunktiv I (Konjunktiv Präsens)">I</span> | data-accel-col=12 | {subc_subi_1s} | data-accel-col=13 | {subc_subi_1p} |- | data-accel-col=4 | {subc_pres_2s} | data-accel-col=5 | {subc_pres_2p} | data-accel-col=12 | {subc_subi_2s} | data-accel-col=13 | {subc_subi_2p} |- | data-accel-col=4 | {subc_pres_3s} | data-accel-col=5 | {subc_pres_3p} | data-accel-col=12 | {subc_subi_3s} | data-accel-col=13 | {subc_subi_3p} |- | colspan=6 style="background:var(--wikt-palette-grey-2,#d5d5d5); height: .25em" | |- ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4)" | <span title="Präteritum">อดีตกาลสิ้นสุด</span> | data-accel-col=8 | {subc_pret_1s} | data-accel-col=9 | {subc_pret_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-blue-3,#c0cfe4)" | <span title="Konjunktiv II (Konjunktiv Präteritum)">II</span> | data-accel-col=16 | {subc_subii_1s} | data-accel-col=17 | {subc_subii_1p} |- | data-accel-col=8 | {subc_pret_2s} | data-accel-col=9 | {subc_pret_2p} | data-accel-col=16 | {subc_subii_2s} | data-accel-col=17 | {subc_subii_2p} |- | data-accel-col=8 | {subc_pret_3s} | data-accel-col=9 | {subc_pret_3p} | data-accel-col=16 | {subc_subii_3s} | data-accel-col=17 | {subc_subii_3p} |{\cl}{notes_clause}</div></div> ]=] local composed_table = [=[ <div class="NavFrame" style=""> <div class="NavHead" style="">รูปประกอบของคำกริยา {title}</div> <div class="NavContent"> {\op}| style="border: 1px solid var(--wikt-palette-black,#000000); border-collapse:collapse; background:var(--wikt-palette-white,#fafafa); text-align:center; width:100%" class="inflection-table" |- ! colspan=6 style="background:var(--wikt-palette-grey-green-4,#99cc99)" | <span title="Perfekt">สมบูรณ์</span> |- ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | เอกพจน์ ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | พหูพจน์ ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | เอกพจน์ ! style="background:var(--wikt-palette-grey-green-4,#99cc99)" | พหูพจน์ |- ! rowspan=3 style="background:var(--wikt-palette-grey-green-2,#cfedcc); width:7em" | <span title="Indikativ">มาลาบอกเล่า</span> | {perf_ind_1s} | {perf_ind_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-green-2,#cfedcc); width:7em" | <span title="Konjunktiv">มาลาสมมุติ</span> | {perf_sub_1s} | {perf_sub_1p} |- | {perf_ind_2s} | {perf_ind_2p} | {perf_sub_2s} | {perf_sub_2p} |- | {perf_ind_3s} | {perf_ind_3p} | {perf_sub_3s} | {perf_sub_3p} |- ! colspan=6 style="background:var(--wikt-palette-grey-green-4,#99CC99)" | <span title="Plusquamperfekt">อภิสมบูรณ์</span> |- ! rowspan=3 style="background:var(--wikt-palette-grey-green-2,#cfedcc)" | <span title="Indikativ">มาลาบอกเล่า</span> | {plup_ind_1s} | {plup_ind_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-green-2,#cfedcc)" | <span title="Konjunktiv">มาลาสมมุติ</span> | {plup_sub_1s} | {plup_sub_1p} |- | {plup_ind_2s} | {plup_ind_2p} | {plup_sub_2s} | {plup_sub_2p} |- | {plup_ind_3s} | {plup_ind_3p} | {plup_sub_3s} | {plup_sub_3p} |- ! colspan=6 style="background:var(--wikt-palette-grey-indigo-4,#9999DF)" | <span title="Futur I">อนาคตกาล I</span> |- ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Infinitiv">รูปกริยากลาง</span> | rowspan=3 colspan=2 | {futi_inf} ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Konjunktiv I (Konjunktiv Präsens)">มาลาสมมุติ I</span> | {futi_subi_1s} | {futi_subi_1p} |- | {futi_subi_2s} | {futi_subi_2p} |- | {futi_subi_3s} | {futi_subi_3p} |- ! colspan=6 style="background:var(--wikt-palette-grey-2,#d5d5d5); height: .25em" | |- ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Indikativ">มาลาบอกเล่า</span> | {futi_ind_1s} | {futi_ind_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Konjunktiv II (Konjunktiv Präteritum)">มาลาสมมุติ II</span> | {futi_subii_1s} | {futi_subii_1p} |- | {futi_ind_2s} | {futi_ind_2p} | {futi_subii_2s} | {futi_subii_2p} |- | {futi_ind_3s} | {futi_ind_3p} | {futi_subii_3s} | {futi_subii_3p} |- ! colspan=6 style="background:var(--wikt-palette-grey-indigo-4,#9999DF)" | <span title="Futur II">อนาคตกาล II</span> |- ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Infinitiv">รูปกริยากลาง</span> | rowspan=3 colspan=2 | {futii_inf} ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Konjunktiv I (Konjunktiv Präsens)">มาลาสมมุติ I</span> | {futii_subi_1s} | {futii_subi_1p} |- | {futii_subi_2s} | {futii_subi_2p} |- | {futii_subi_3s} | {futii_subi_3p} |- ! colspan=6 style="background:var(--wikt-palette-grey-2,#d5d5d5); height: .25em" | |- ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Indikativ">มาลาบอกเล่า</span> | {futii_ind_1s} | {futii_ind_1p} ! rowspan=3 style="background:var(--wikt-palette-grey-indigo-2,#ccccff)" | <span title="Konjunktiv II (Konjunktiv Präteritum)">มาลาสมมุติ II</span> | {futii_subii_1s} | {futii_subii_1p} |- | {futii_ind_2s} | {futii_ind_2p} | {futii_subii_2s} | {futii_subii_2p} |- | {futii_ind_3s} | {futii_ind_3p} | {futii_subii_3s} | {futii_subii_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, "term") if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end -- Maybe format the subordinate clause table. local formatted_subordinate_clause_table if forms.subc_pres_3s ~= "—" then -- use 3s in case of only3s verb forms.zu_infinitive_table = m_string_utilities.format(zu_infinitive_table, forms) forms.footnote = alternant_multiword_spec.footnote_subordinate_clause forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" formatted_subordinate_clause_table = m_string_utilities.format(subordinate_clause_table, forms) else forms.zu_infinitive_table = "" formatted_subordinate_clause_table = "" end -- Format the basic table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local formatted_basic_table = m_string_utilities.format(basic_table, forms) -- Format the composed table. forms.footnote = alternant_multiword_spec.footnote_composed forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local formatted_composed_table = m_string_utilities.format(composed_table, forms) -- Paste them together. return formatted_basic_table .. formatted_subordinate_clause_table .. formatted_composed_table end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(parent_args, from_headword, def) local params = { [1] = true, pagename = true, json = {type = "boolean"}, -- for bot use } if from_headword then params["lemma"] = {list = true} params["id"] = true end local args = require("Module:parameters").process(parent_args, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename if not args[1] then if pagename == "de-conj" or pagename == "de-verb" then args[1] = def or "aus.fahren<fährt#fuhr,gefahren,führe.haben,sein>" else args[1] = pagename -- If pagename has spaces in it, add links around each word if args[1]:find(" ") then args[1] = "[[" .. args[1]:gsub(" ", "]] [[") .. "]]" end end end local parse_props = { parse_indicator_spec = parse_indicator_spec, lang = lang, allow_default_indicator = true, allow_blank_lemma = true, } local escaped_arg1 = escape_sein_sich_indicators(args[1]) local alternant_multiword_spec = iut.parse_inflected_text(escaped_arg1, parse_props) alternant_multiword_spec.pos = "คำกริยา" alternant_multiword_spec.args = args normalize_all_lemmas(alternant_multiword_spec, from_headword, pagename) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = all_verb_slots, lang = lang, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) compute_auxiliary(alternant_multiword_spec) compute_categories_and_annotation(alternant_multiword_spec, from_headword) if args.json then return require("Module:JSON").toJSON(alternant_multiword_spec) end return alternant_multiword_spec end -- Entry point for {{de-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local alternant_multiword_spec = export.do_generate_forms(parent_args) if type(alternant_multiword_spec) == "string" then -- json=1 specified return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end local numbered_params = { -- required params [1] = "infinitive", [2] = "pres_part", [3] = "perf_part", [4] = "aux", [5] = "pres_1s", [6] = "pres_2s", [7] = "pres_3s", [8] = "pres_1p", [9] = "pres_2p", [10] = "pres_3p", [11] = "pret_1s", [12] = "pret_2s", [13] = "pret_3s", [14] = "pret_1p", [15] = "pret_2p", [16] = "pret_3p", [17] = "subi_1s", [18] = "subi_2s", [19] = "subi_3s", [20] = "subi_1p", [21] = "subi_2p", [22] = "subi_3p", [23] = "subii_1s", [24] = "subii_2s", [25] = "subii_3s", [26] = "subii_1p", [27] = "subii_2p", [28] = "subii_3p", [29] = "imp_2s", [30] = "imp_2p", -- [31] formerly the 2nd variant of imp_2s; now no longer allowed (use comma-separated 29=) -- [32] formerly indicated whether the 2nd variant of imp_2s was present -- optional params [33] = "subc_pres_1s", [34] = "subc_pres_2s", [35] = "subc_pres_3s", [36] = "subc_pres_1p", [37] = "subc_pres_2p", [38] = "subc_pres_3p", [39] = "subc_pret_1s", [40] = "subc_pret_2s", [41] = "subc_pret_3s", [42] = "subc_pret_1p", [43] = "subc_pret_2p", [44] = "subc_pret_3p", [45] = "subc_subi_1s", [46] = "subc_subi_2s", [47] = "subc_subi_3s", [48] = "subc_subi_1p", [49] = "subc_subi_2p", [50] = "subc_subi_3p", [51] = "subc_subii_1s", [52] = "subc_subii_2s", [53] = "subc_subii_3s", [54] = "subc_subii_1p", [55] = "subc_subii_2p", [56] = "subc_subii_3p", [57] = "zu_infinitive", } local max_required_param = 30 -- Externally callable function to parse and conjugate a verb where all forms are given manually. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms_manual(parent_args) local params = { json = {type = "boolean"}, } for paramnum, _ in pairs(numbered_params) do params[paramnum] = {required = paramnum <= max_required_param} end local args = require("Module:parameters").process(parent_args, params) local base = { forms = {}, manual = true, } local function process_numbered_param(paramnum) local argval = args[paramnum] if paramnum == 4 then if argval == "h" then base.aux = {{form = "haben"}} elseif argval == "s" then base.aux = {{form = "sein"}} elseif argval == "hs" then base.aux = {{form = "haben"}, {form = "sein"}} elseif argval == "sh" then base.aux = {{form = "sein"}, {form = "haben"}} elseif not argval then error("Missing auxiliary in 4=") else error("Unrecognized auxiliary 4=" .. argval) end elseif argval and argval ~= "-" then local split_vals = rsplit(argval, "%s*,%s*") for _, val in ipairs(split_vals) do -- FIXME! This won't work with commas or brackets in footnotes. -- To fix this, use functions from [[Module:inflection utilities]]. local form, footnote = val:match("^(.-)%s*(%[[^%]%[]-%])$") local footnotes if form then footnotes = {footnote} else form = val end local slot = numbered_params[paramnum] --if slot:find("subii") then -- local subii_footnotes = get_subii_note(base) -- footnotes = iut.combine_footnotes(subii_footnotes, footnotes) --end iut.insert_form(base.forms, slot, {form = form, footnotes = footnotes}) end end end -- Do the infinitive first as we need to reference it in subjunctive II footnotes. process_numbered_param(1) for paramnum, _ in pairs(numbered_params) do if paramnum ~= 1 then process_numbered_param(paramnum) end end add_composed_forms(base) compute_categories_and_annotation(base, nil, "manual") return base, args.json end -- Entry point for {{de-conj-table}}. Template-callable function to parse and conjugate a verb given -- manually-specified inflections and generate a displayable table of the conjugated forms. function export.show_manual(frame) local parent_args = frame:getParent().args local base, json = export.do_generate_forms_manual(parent_args) if json then return require("Module:JSON").toJSON(base) end show_forms(base) return make_table(base) .. require("Module:utilities").format_categories(base.categories, lang) end return export ewybghnwvni9uj7s29t20exy8pcfice ᩋᩩ᩠᩶ᨿ 0 295482 5729295 1953560 2026-07-20T05:29:16Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729295 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=อุ้ย|s=อุ๊ย}} === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|kkh|ᨴᩪ᩠᩶ᨿ}} === การออกเสียง === * {{IPA|nod|/ʔuj˦˥/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ᨤᩫ᩠ᨶ}} # [[ปู่]], [[ย่า]], [[ตา]] [[หรือ]][[ยาย]] #: {{syn|nod|ᨴᩩ᩠᩶ᨿ}} {{topics|nod|ครอบครัว}} d4sopg4qnj0p47v5g59xajnx20upn74 ᨠᩖᩬ᩠ᨿ 0 301699 5729036 1952759 2026-07-19T22:57:48Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729036 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=กลอย|s=ก๋อย}} === การออกเสียง === * {{IPA|nod|/kɔːj˨˦/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # [[กลอย]] {{gloss|ชื่อไม้เถามีหนาม มีหัวกลมใหญ่อยู่ใต้ดิน หัวดิบมีพิษเบื่อเมา}} {{topics|nod|พืช}} py6kaolvldo8u3yt1l3y3fb1mtmdp1z เต่าทอง 0 307477 5729381 1563772 2026-07-20T07:40:44Z Alifshinobi 397 5729381 wikitext text/x-wiki == ภาษาไทย == {{wp}} === การออกเสียง === {{th-pron|เต่า-ทอง}} === รากศัพท์ 1 === {{com|th|เต่า|ทอง}} ==== คำนาม ==== {{th-noun|ตัว}} # ชื่อแมลงพวกด้วงขนาดเล็กหลายชนิด หลายสกุล ในวงศ์ Chrysomelidae รูปร่างค่อนข้างกลม ลำตัวโค้งแบน ปีกแข็งใส โค้งนูน เมื่อหุบปีกจดกันด้านหลังทำให้มองคล้ายหลังเต่า ปีกมีลวดลายเหลือบสีทอง เรียก เต่าทอง เช่น ชนิด Aspidomorpha sanctaecrucis (Fabricius) ตัวยาวประมาณ 1 เซนติเมตร ชนิด Cassida circumdata (Herbst) ตัวยาวประมาณ 4 มิลลิเมตร ===== คำแปลภาษาอื่น ===== {{trans-top|แมลงพวกด้วงขนาดเล็ก}} * ลาว: {{t+|lo|ແມງເຕົ່າທອງ}} * อังกฤษ: {{t+|en|ladybug|tr=เลดีบัก}}, {{t+|en|ladybird|tr=เลดีเบิร์ด}} {{trans-bottom}} === รากศัพท์ 2 === ==== คำนาม ==== {{th-noun}} # ชื่อเพลงไทย อัตรา ๒ ชั้น # ชื่อเพลงเรื่องประเภทเพลงช้า # ชื่อเพลงไทยประเภทเพลงโหมโรง bd9xk1f21gfabebj7nt9dpq44dhr521 หยวก 0 307848 5729410 4893774 2026-07-20T08:44:44Z Heavenchris 5375 5729410 wikitext text/x-wiki == ภาษาไทย == {{wp|พริกหยวก}} === การออกเสียง === {{th-pron|หฺยวก}} === รากศัพท์ 1 === {{inh+|th|tai-swe-pro|*ˀjuəkᴰᴸ³}} (Jonsson, 1991); ร่วมเชื้อสายกับ{{cog|nod|ᩀ᩠ᩅᨠ}}, {{cog|lo|ຢວກ}}, {{cog|khb|ᦷᦊᧅᧈ}}, {{cog|tdd|ᥕᥨᥐᥱ||ต้นกล้วยป่า}}, {{cog|phk|ယုက်}}, {{cog|aho|𑜊𑜤𑜀𑜫||หน่อกล้วย}}, {{cog|zzj|yueg}} ==== รูปแบบอื่น ==== * {{alt|th|*อยวก||เลิกใช้}} ==== คำนาม ==== {{th-noun}} # [[ลำต้น]][[กล้วย]], [[ส่วน]][[ใน]][[หรือ]][[แกน]][[อ่อน]][[ของ]]ลำต้น[[เทียม]][[ของ]]กล้วย [[มี]][[สีขาว]] [[กิน]][[ได้]] {{ตย|หั่นหยวกต้มกับรำให้หมูกิน}} {{ตย|ต้มหยวก}} {{ตย|แกงหยวก}} ==== คำคุณศัพท์ ==== {{th-adj|-}} # [[ไม่]][[แข็ง]][[แน่น]] {{ตย|มีดเล่มนี้คมมาก ตัดกิ่งไม้ได้ง่ายเหมือนฟันหยวก}} # [[ใช้]][[เปรียบ]][[ผิว]][[ที่]][[ขาว]][[มาก]][[ว่า]] ขาว[[เหมือน]]หยวก === รากศัพท์ 2 === ==== คำนาม ==== {{th-noun}} # ({{lang|th|[[พริก]]}}~) [[ชื่อ]][[พริก]][[พันธุ์]][[หนึ่ง]]ของชนิด Capsicum annuum L. ใน[[วงศ์]] Solanaceae [[ผล]][[ใหญ่]][[ป้อม]] [[เมื่อ]][[อ่อน]][[สีเหลือง]][[อม]][[เขียว]] ahxty5amcx5gd11ydr7iw3mgl1v0kzq ᨶᩢ᩠ᨠ 0 309058 5729172 3325494 2026-07-20T03:01:32Z ~2026-32817-27 19068 5729172 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=นัก}} === การออกเสียง === * {{IPA|nod|/nak˦˥/|a=เชียงใหม่}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|th|นัก}} ==== คำคุณศัพท์ ==== {{nod-adj}} # [[มาก]] ==== คำกริยาวิเศษณ์ ==== {{nod-adv}} # [[มาก]], [[อย่าง]][[ยิ่ง]][[หรือ]][[หนัก]][[ไป]][[ใน]][[ทาง]][[ใด]][[ทาง]][[หนึ่ง]] #: {{ux|nod|[[ᩉ᩠ᨶᩣ᩠ᩅ]]'''ᨶᩢ᩠ᨠ'''|'''หนาว'''มาก}} === รากศัพท์ 2 === ร่วมเชื้อสายกับ{{cog|th|นัก}} ==== อุปสรรค ==== {{head|nod|อุปสรรค}} # {{lb|nod|หน่วยคำไม่อิสระ}} [[นัก]] {{gl|ผู้, ผู้ชำนาญการ}} {{prefixsee|nod}} === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. 8yc64x37afkyw9f0v0q20wteg2a8gi5 มอดูล:languages/data/2/extra 828 312282 5729129 5719181 2026-07-20T02:35:49Z Octahedron80 267 5729129 Scribunto text/plain local m = {} m["aa"] = { aliases = {"กาฟาร์", "Afar", "Qafar"}, } m["ab"] = { aliases = {"อับคัซ", "อับฮัซ", "Abkhaz", "Abkhazian", "Abxazo"}, } m["ae"] = { aliases = {"เซนด์", "แบกเตรียเก่า", "Avestan", "Zend", "Old Bactrian"}, } m["af"] = { aliases = {"แอฟริคานส์", "Afrikaans"}, } m["ak"] = { aliases = {"Akan"}, varieties = {"Twi-Fante", "Twi", {"Fante", "Fanti"}, "Asante", "Akuapem"}, } m["am"] = { aliases = {"Amharic"}, } m["an"] = { aliases = {"Aragonese"}, } m["ar"] = { -- FIXME, some of the following are varieties but it's not clear which ones aliases = {"อาหรับมาตรฐาน", "อาหรับวรรณกรรม", "Arabic", "Standard Arabic", "Literary Arabic", "High Arabic"}, varieties = {{"อาหรับมาตรฐานใหม่", "Modern Standard Arabic"}, {"อาหรับคลาสสิก", "Classical Arabic"}, {"อาหรับแบบยิว", "Judeo-Arabic"}}, } m["as"] = { aliases = {"Assamese", "Asamiya"}, } m["av"] = { aliases = {"Avar", "Avaric"}, } m["ay"] = { aliases = {"Aymara"}, varieties = {{"ไอย์มาราใต้", "Southern Aymara"}, {"ไอย์มารากลาง", "Central Aymara"}}, } m["az"] = { aliases = {"อาเซอรี", "อาซารี", "เติร์กแบบอาเซอรี", "เติร์กแบบอาเซอร์ไบจาน", "Azerbaijani", "Azeri", "Azari", "Azeri Turkic", "Azerbaijani Turkic"}, varieties = { {"อาเซอร์ไบจานเหนือ", "North Azerbaijani"}, {"อาเซอร์ไบจานใต้", "South Azerbaijani"}, {"Afshar", "Afshari", "Afshar Azerbaijani", "Afchar"}, {"Qashqa'i", "Qashqai", "Kashkay"}, "Sonqor" }, } m["ba"] = { aliases = {"บัชคีร์", "บัชคอร์", "Bashkir"}, } m["be"] = { aliases = {"รัสเซียขาว", "Belarusian", "Belorussian", "Belarusan", "Bielorussian", "Byelorussian", "Belarussian", "White Russian"}, } m["bg"] = { aliases = {"Bulgarian"}, } m["bh"] = { aliases = {"พิหารี", "Bihari"}, } m["bi"] = { aliases = {"Bislama"}, } m["bm"] = { aliases = {"Bambara", "Bamanankan"}, } m["bn"] = { aliases = {"เบงกาลี", "บังลา", "Bengali", "Bangla"}, } m["bo"] = { aliases = {"Tibetan"}, varieties = { {"Amdo Tibetan", "Amdo"}, "Dolpo", {"Khams", "Khams Tibetan"}, "Khamba", "Gola", "Humla", "Limi", {"Lhasa", "Lhasa Tibetan"}, "Lhomi", "Loke", "Lowa", "Mugom", "Mugu", "Mustang", "Nubri", "Panang", "Shing Saapa", "Thudam", "Tichurong", "Tseku", {"Ü", "Dbus"}, "Walungge"}, -- and "Gyalsumdo", "Lower Manang"? "Kyirong"? } m["br"] = { aliases = {"Breton"}, varieties = {{"Gwenedeg", "Vannetais"}, {"Kerneveg", "Cornouaillais"}, {"Leoneg", "Léonard"}, {"Tregerieg", "Trégorrois"}}, } m["ca"] = { aliases = {"คาตาลัน", "Catalan"}, -- don't list varieties here that are in [[Module:etymology languages/data]] } m["ce"] = { aliases = {"Chechen"}, } m["ch"] = { aliases = {"Chamorro", "Chamoru"}, } m["co"] = { aliases = {"Corsican", "Corsu"}, } m["cr"] = { aliases = {"Cree"}, } m["cs"] = { aliases = {"Czech"}, } m["cu"] = { aliases = {"สลาวิกคริสตจักรเก่า", "Old Church Slavonic", "Old Church Slavic"}, } m["cv"] = { aliases = {"Chuvash"}, } m["cy"] = { aliases = {"Welsh"}, varieties = {"Cofi Welsh", {"Dyfedeg", "Dyfed Welsh", "Demetian"}, {"Gwenhwyseg", "Gwent Welsh", "Gwentian"}, {"Gwyndodeg", "Gwynedd Welsh", "Venedotian"}, "North Wales Welsh", {"Powyseg", "Powys Welsh", "Powysian"}, "South Wales Welsh", "Patagonian Welsh"}, } m["da"] = { aliases = {"เดนิช", "Danish"}, } m["de"] = { aliases = {"เยอรมันสูง", "เยอรมันสูงใหม่", "ด็อยทช์", "German", "High German", "New High German", "Deutsch"}, varieties = {"Alsatian German", "American German", "Bavarian German", "Belgian German", "Central German", "DDR German", "East African German", "German German", "Hessian German", "Indiana German", "Liechtenstein German", "Lorraine German", "Luxembourgish German", "Namibian German", "Northern German", "Prussian German", "Silesia German", "South African German", "Southern German", "South Tyrolean German", "Switzerland German", "Texan German"}, } m["dv"] = { aliases = {"ดิเวฮิ", "Dhivehi", "Divehi", "Maldivian"}, varieties = {{"มาห์ล", "Mahal", "Mahl"}}, } m["dz"] = { aliases = {"Dzongkha"}, } m["ee"] = { aliases = {"Ewe"}, } m["el"] = { aliases = {"กรีกใหม่", "Greek", "Modern Greek", "Neo-Hellenic"}, } m["en"] = { aliases = {"อังกฤษใหม่", "English", "Modern English", "New English"}, varieties = {"Polari", "Yinglish"}, } m["eo"] = { aliases = {"Esperanto"}, } m["es"] = { aliases = {"คาสตีล", "Spanish", "Castilian"}, varieties = {{"Amazonian Spanish", "Amazonic Spanish"}, "Loreto-Ucayali Spanish"}, } m["et"] = { aliases = {"Estonian"}, } m["eu"] = { aliases = {"Basque", "Euskara"}, } m["fa"] = { aliases = {"ฟาร์ซี", "เปอร์เซียใหม่", "Persian", "Farsi", "New Persian", "Modern Persian"}, varieties = {{"Western Persian", "Iranian Persian"}, {"Eastern Persian", "Dari"}, {"Aimaq", "Aimak", "Aymaq", "Eimak"}}, } m["ff"] = { aliases = {"Fula", "Fulani"}, varieties = {"Adamawa Fulfulde", "Bagirmi Fulfulde", "Borgu Fulfulde", "Central-Eastern Niger Fulfulde", "Fulfulde", "Maasina Fulfulde", "Nigerian Fulfulde", "Pular", "Pulaar", "Western Niger Fulfulde"}, -- Maasina, etc are dialects, subsumed into this code; Pular and Pulaar are distinct } m["fi"] = { aliases = {"ฟินนิช", "ซูโอมี", "Finnish", "Suomi"}, } m["fj"] = { aliases = {"ฟิจิ", "Fijian"}, } m["fo"] = { aliases = {"Faroese", "Faeroese"}, } m["fr"] = { aliases = {"ฝรั่งเศสใหม่", "French", "Modern French"}, varieties = {"African French", "Algerian French", "Alsatian French", "Antilles French", "Atlantic Canadian French", "Belgian French", "Congolese French", "European French", "French French", "Haitian French", "Ivorian French", "Lorraine French", "Louisiana French", "Luxembourgish French", "Malian French", "Marseille French", "Missourian French", "Moroccan French", "Newfoundland French", "North American French", "Picard French", "Provençal French‎", "Quebec French", "Réunion French", "Rwandan French", "Tunisian French", "West African French"}, } m["fy"] = { aliases = {"ฟรีเชีย", "West Frisian", "Western Frisian", "Frisian"}, } m["ga"] = { aliases = {"ไอร์แลนด์", "แกลิกแบบไอร์แลนด์", "Irish", "Irish Gaelic", "Gaelic"}, -- calling it simply "Gaelic" is rare in Ireland, but relatively common in the Irish diaspora varieties = {{"Cois Fharraige Irish", "Cois Fhairrge Irish"}, {"Connacht Irish", "Connaught Irish"}, "Cork Irish", "Donegal Irish", "Galway Irish", "Kerry Irish", "Mayo Irish", "Munster Irish", "Ulster Irish", "Waterford Irish", "West Muskerry Irish"}, } m["gd"] = { aliases = {"Scottish Gaelic", "Gaelic", "Gàidhlig", "Scots Gaelic", "Scottish"}, varieties = {"Argyll Gaelic", "Arran Scottish Gaelic", {"Canadian Gaelic", "Canadian Scottish Gaelic", "Cape Breton Gaelic"}, "East Sutherland Gaelic", {"Galwegian Gaelic", "Gallovidian Gaelic", "Gallowegian Gaelic", "Galloway Gaelic"}, "Hebridean Gaelic", "Highland Gaelic"}, } m["gl"] = { aliases = {"Galician"}, } m["gn"] = { aliases = {"Guaraní", "Guarani"}, } m["gu"] = { aliases = {"Gujarati"}, } m["gv"] = { aliases = {"แกลิกแบบเกาะแมน", "Manx", "Manx Gaelic"}, varieties = {"Northern Manx", "Southern Manx"}, } m["ha"] = { aliases = {"Hausa"}, } m["he"] = { aliases = {"อิฟริท", "Hebrew", "Ivrit"}, } m["hi"] = { aliases = {"ฮินดู", "Hindi"}, other_names = {"Hindavi"}, } m["ho"] = { aliases = {"Hiri Motu", "Pidgin Motu", "Police Motu"}, } m["ht"] = { aliases = {"ครีโอลไฮติ", "ไฮติครีโอล", "เฮติครีโอล", "ครีโอล", "Haitian Creole", "Creole", "Haitian", "Kreyòl"}, } m["hu"] = { aliases = {"มอยอร์", "Hungarian", "Magyar"}, } m["hy"] = { aliases = {"อาร์มีเนียใหม่", "Armenian", "Modern Armenian"}, varieties = {{"อาร์มีเนียตะวันออก", "Eastern Armenian"}, {"อาร์มีเนียตะวันตก", "Western Armenian"}}, } m["hz"] = { aliases = {"Herero"}, } m["ia"] = { aliases = {"Interlingua"}, } m["id"] = { aliases = {"มลายูแบบอินโดนีเซีย", "Indonesian"}, } m["ie"] = { aliases = {"ออกซิเดนทาล", "Interlingue", "Occidental"}, } m["ig"] = { aliases = {"Igbo"}, } m["ii"] = { aliases = {"อี๋แบบเสฉวน", "อี๋เหนือ", "อี๋แบบเหลียงซาน", "Sichuan Yi", "Nuosu", "Nosu", "Northern Yi", "Liangshan Yi"}, } m["ik"] = { aliases = {"Inupiak", "Iñupiaq", "Inupiatun"}, } m["io"] = { aliases = {"Ido"}, } m["is"] = { aliases = {"Icelandic"}, } m["it"] = { aliases = {"อิตาเลียน", "Italian"}, } m["iu"] = { aliases = {"Inuktitut"}, varieties = { "Aivilimmiut", {"Eastern Canadian Inuktitut", "Eastern Canadian Inuit"}, {"Inuinnaq", "Inuinnaqtun"}, {"Inuvialuktun", "Inuvialuk", "Western Canadian Inuktitut", "Western Canadian Inuit", "Western Canadian Inuktun"}, "Kivallirmiut", "Natsilingmiut", "Nunavimmiutit", "Nunatsiavummiut", {"Siglitun", "Siglit"}}, } m["ja"] = { aliases = {"ญี่ปุ่นใหม่", "Japanese", "Modern Japanese", "Nipponese", "Nihongo"}, } m["jv"] = { aliases = {"Javanese"}, } m["ka"] = { aliases = {"Georgian"}, varieties = {{"จอร์เจียแบบยิว", "Judeo-Georgian", "Kivruli", "Gruzinic"}}, } m["kg"] = { aliases = {"Kongo", "Kikongo"}, varieties = {"Koongo", "Laari", "San Salvador Kongo", "Yombe"}, } m["ki"] = { aliases = {"กีกูยู", "Kikuyu", "Gikuyu", "Gĩkũyũ"}, } m["kj"] = { aliases = {"Kuanyama", "Oshikwanyama"}, } m["kk"] = { aliases = {"คาซัคสถาน", "Kazakh"}, } m["kl"] = { aliases = {"กะลาลลิซุต", "Greenlandic", "Kalaallisut"}, } m["km"] = { aliases = {"กัมพูชา", "เขมรตอนกลาง", "เขมรใหม่", "Khmer", "Cambodian", "Central Khmer", "Modern Khmer"}, } m["kn"] = { aliases = {"กันนาดา", "Kannada"}, } m["ko"] = { aliases = {"เกาหลีใหม่", "Korean", "Modern Korean"}, } m["kr"] = { aliases = {"กานัวรี", "Kanuri"}, varieties = {"Kanembu", "Bilma Kanuri", "Central Kanuri", "Manga Kanuri", "Tumari Kanuri"}, } m["ks"] = { aliases = {"กัศมีร์", "Kashmiri", "Koshur"}, } -- "kv" IS TREATED AS "koi", "kpv", SEE WT:LT m["kw"] = { aliases = {"คอร์นิช", "Cornish"}, } m["ky"] = { aliases = {"คีร์กีซสถาน", "Kyrgyz", "Kirghiz", "Kirgiz"}, } m["la"] = { aliases = {"ลาติน", "Latin"}, } m["lb"] = { aliases = {"Luxembourgish"}, } m["lg"] = { aliases = {"Luganda", "Ganda", "Oluganda"}, } m["li"] = { aliases = {"Limburgish", "Limburgan", "Limburgian", "Limburgic"}, } m["ln"] = { aliases = {"กาลา", "Lingala", "Ngala"}, } m["lo"] = { aliases = {"Lao", "Laotian"}, } m["lt"] = { aliases = {"Lithuanian"}, } m["lu"] = { } m["lv"] = { aliases = {"Latvian", "Lettish", "Lett"}, } m["mg"] = { aliases = {"Malagasy"}, varieties = { {"Antankarana", "Antankarana Malagasy"}, {"Bara Malagasy", "Bara"}, {"Betsimisaraka Malagasy", "Betsimisaraka"}, {"Northern Betsimisaraka Malagasy", "Northern Betsimisaraka"}, {"Southern Betsimisaraka Malagasy", "Southern Betsimisaraka"}, {"Bushi", "Shibushi", "Kibushi"}, {"Masikoro Malagasy", "Masikoro"}, "Plateau Malagasy", "Sakalava", {"Tandroy Malagasy", "Tandroy"}, {"Tanosy", "Tanosy Malagasy"}, "Tesaka", {"Tsimihety", "Tsimihety Malagasy"}}, } m["mh"] = { aliases = {"Marshallese"}, } m["mi"] = { aliases = {"เมารี", "Maori", "Māori"}, } m["mk"] = { aliases = {"Macedonian"}, } m["ml"] = { aliases = {"มลยาลัม", "มาลายาลัม", "Malayalam"}, } m["mn"] = { aliases = {"Mongolian"}, varieties = {"Khalkha Mongolian"}, } -- "mo" IS TREATED AS "ro", SEE WT:LT m["mr"] = { aliases = {"Marathi"}, } m["ms"] = { aliases = {"มาเลย์", "มลายู", "มลายูมาตรฐาน", "มลายูแบบมาเลเซีย", "Malay", "Malaysian", "Standard Malay"}, } m["mt"] = { aliases = {"Maltese"}, } m["my"] = { aliases = {"เมียนมา", "Burmese", "Myanmar"}, varieties = {"Mandalay Burmese", "Myeik Burmese", "Palaw Burmese", {"Rangoon Burmese", "Yangon Burmese"}, "Yaw Burmese"}, } m["na"] = { aliases = {"Nauruan", "Nauru"}, } m["nb"] = { aliases = {"บุ๊กมอล", "Norwegian Bokmål", "Bokmål"}, } m["nd"] = { aliases = {"North Ndebele"}, } m["ne"] = { aliases = {"เนปาลี", "Nepali", "Nepalese"}, varieties = {"Palpa"}, -- 3832956, former "plp", retired by ISO as spurious } m["ng"] = { } m["nl"] = { aliases = {"Dutch"}, varieties = {{"เนเธอร์แลนด์", "Netherlandic"}, {"เฟลมิช", "Flemish"}}, -- FIXME, check this } m["nn"] = { aliases = {"นอร์เวย์ใหม่", "นือนอสก์", "Norwegian Nynorsk", "New Norwegian", "Nynorsk"}, } m["no"] = { aliases = {"Norwegian"}, } m["nr"] = { aliases = {"South Ndebele"}, } m["nv"] = { aliases = {"Navajo", "Navaho", "Diné bizaad"}, } m["ny"] = { aliases = {"จีเจวา", "เชวา", "ชีเชวา", "Chichewa", "Chicheŵa", "Chinyanja", "Nyanja", "Chewa", "Cicewa", "Cewa", "Cinyanja"}, } m["oc"] = { aliases = {"อ็อกซิตัน", "Occitan"}, -- don't list varieties here that are in [[Module:etymology languages/data]] } m["oj"] = { aliases = {"Ojibwe", "Ojibway", "Ojibwa"}, varieties = {{"Chippewa", "Ojibwemowin", "Southwestern Ojibwa"}}, } m["om"] = { aliases = {"Oromo"}, varieties = {"Orma", "Borana-Arsi-Guji Oromo", "West Central Oromo"}, } m["or"] = { aliases = {"โอเดีย", "Oriya", "Odia", "Oorya"}, } m["os"] = { aliases = {"Ossetian", "Ossete", "Ossetic"}, varieties = {"Digor", "Iron"}, } m["pa"] = { aliases = {"ปัญจาบี", "Punjabi", "Panjabi"}, } m["pi"] = { aliases = {"บาฬี", "ปาลิ", "ปาลี", "ปาฬิ", "ปาฬี", "Pali"}, } m["pl"] = { aliases = {"โปลิช", "Polish"}, } m["ps"] = { aliases = {"ปัชโต", "ปัชตุน", "ปุชโต", "ปัชตู", "อัฟกัน", "Pashto", "Pashtun", "Pushto", "Pashtu", "Afghani"}, varieties = {{"ปาทานตอนกลาง", "ปัชโตตอนกลาง", "Central Pashto"}, {"ปาทานเหนือ", "ปัชโตเหนือ", "Northern Pashto"}, {"ปาทานใต้", "ปัชโตใต้", "Southern Pashto"}, {"Pukhto", "Pakhto", "Pakkhto"}}, } m["pt"] = { aliases = {"โปรตุเกสใหม่", "Portuguese", "Modern Portuguese"}, } m["qu"] = { aliases = {"Quechua"}, } m["rm"] = { aliases = {"Romansch", "Romansh", "Rumantsch", "Romanche"}, } m["ro"] = { aliases = {"รูมาเนีย", "Romanian", "Daco-Romanian", "Roumanian", "Rumanian"}, } m["ru"] = { aliases = {"Russian"}, } m["rw"] = { -- don't list varieties here that are in [[Module:etymology languages/data]] aliases = {"Rwanda-Rundi"}, varieties = {{"Ha", "Giha"}, "Hangaza", "Vinza", "Shubi"}, -- Deleted "Subi", which normally refers to a different language } m["sa"] = { aliases = {"Sanskrit"}, } m["sc"] = { aliases = {"Sardinian"}, -- don't list varieties here that are in [[Module:etymology languages/data]] } m["sd"] = { aliases = {"สินธี", "Sindhi"}, } m["se"] = { aliases = {"Northern Sami", "North Sami", "Northern Saami", "North Saami"}, } m["sg"] = { aliases = {"Sango"}, } m["sh"] = { aliases = {"Serbo-Croatian", "BCS", "Croato-Serbian", "Serbocroatian"}, -- don't list varieties here that are in [[Module:etymology languages/data]] varieties = {{"บอสเนีย", "Bosnian"}, {"โครเอเชีย", "Croatian"}, {"มอนเตเนโกร", "Montenegrin"}, {"เซอร์เบีย", "Serbian"}, "Shtokavian"}, } m["si"] = { aliases = {"Sinhalese", "Singhalese", "Sinhala"}, } m["sk"] = { aliases = {"Slovak"}, } m["sl"] = { aliases = {"สโลเวเนีย", "สโลวีน", "Slovene", "Slovenian"}, } m["sm"] = { aliases = {"Samoan"}, } m["sn"] = { aliases = {"Shona"}, } m["so"] = { aliases = {"Somali"}, } m["sq"] = { aliases = {"Albanian"}, -- don't list varieties here that are in [[Module:etymology languages/data]] } m["ss"] = { aliases = {"สวาตี", "Swazi", "Swati"}, } m["st"] = { aliases = {"โซโท", "Sotho", "Sesotho", "Southern Sesotho", "Southern Sotho"}, } m["su"] = { aliases = {"Sundanese"}, } m["sv"] = { aliases = {"สวีดิช", "Swedish"}, } m["sw"] = { aliases = {"Swahili"}, varieties = {{"Settler Swahili", "KiSetla", "KiSettla", "Setla", "Settla", "Kitchen Swahili"}, {"Kihindi", "Indian Swahili"}, {"KiShamba", "Kishamba", "Field Swahili"}, {"Kibabu", "Asian Swahili"}, {"Kimanga", "Arab Swahili"}, {"Kitvita", "Army Swahili"}}, } m["ta"] = { aliases = {"Tamil"}, } m["te"] = { aliases = {"Telugu"}, } m["tg"] = { aliases = {"ทาจิกิสถาน", "เปอร์เซียแบบทาจิก", "Tajik", "Tadjik", "Tadzhik", "Tajiki", "Tajik Persian", "Tajiki Persian"}, } m["th"] = { aliases = {"สยาม", "ไทยกลาง", "Thai", "Siamese", "Central Thai"}, } m["ti"] = { aliases = {"ทิกรินยา", "Tigrinya"}, } m["tk"] = { aliases = {"เติร์กเมนิสถาน", "Turkmen"}, } m["tl"] = { aliases = {"Tagalog"}, } m["tn"] = { aliases = {"Tswana", "Setswana"}, } m["to"] = { aliases = {"ตองกา", "Tongan"}, } m["tr"] = { aliases = {"เติร์ก", "Turkish"}, } m["ts"] = { aliases = {"Xitsonga"}, } m["tt"] = { aliases = {"Tatar"}, } -- "tw" IS TREATED AS "ak", SEE WT:LT m["ty"] = { aliases = {"Tahitian"}, } m["ug"] = { aliases = {"Uyghur", "Uigur", "Uighur", "Uygur"}, } m["uk"] = { aliases = {"Ukrainian"}, } m["ur"] = { aliases = {"Urdu"}, } m["uz"] = { aliases = {"อุซเบกิสถาน", "Uzbek"}, varieties = {{"อุซเบกเหนือ", "Norther Uzbek"}, {"อุซเบกใต้","Southern Uzbek"}}, } m["ve"] = { aliases = {"Venda"}, } m["vi"] = { aliases = {"ญวน", "อันนัม", "อนัม", "อนำ", "อานำ", "อานัม", "Vietnamese", "Annamese", "Annamite"}, } m["vo"] = { aliases = {"Volapük"}, } m["wa"] = { aliases = {"Walloon", "Liégeois", "Namurois", "Wallo-Picard", "Wallo-Lorrain"}, } m["wo"] = { aliases = {"Wolof"}, varieties = {"Gambian Wolof"}, -- the subsumed dialect 'wof' } m["xh"] = { aliases = {"Xhosa"}, } m["yi"] = { aliases = {"อิดดิช", "Yiddish"}, varieties = {"American Yiddish", "Daytshmerish Yiddish", "Mideastern Yiddish", "Galitzish", {"Northeastern Yiddish", "Litvish", "Lithuanian Yiddish"}, {"Northwestern Yiddish", "Netherlandic Yiddish"}, {"Polish Yiddish", "Poylish"}, "South African Yiddish", {"Southeastern Yiddish", "Ukrainian Yiddish", "Ukrainish"}, {"Southwestern Yiddish", "Judeo-Alsatian"}, "Udmurtish" }, } m["yo"] = { aliases = {"Yoruba"}, } m["za"] = { aliases = {"Zhuang"}, -- FIXME, are all of the following distinct? varieties = { "Chongzuo Zhuang", "Guibei Zhuang", "Guibian Zhuang", "Central Hongshuihe Zhuang", "Eastern Hongshuihe Zhuang", "Lianshan Zhuang", "Liujiang Zhuang", "Liuqian Zhuang", {"Min Zhuang", "Minz Zhuang"}, "Nong Zhuang", -- see zhn "Qiubei Zhuang", "Shangsi Zhuang", {"Dai Zhuang", "Wenma", "Wenma Thu", "Wenma Zhuang"}, "Yang Zhuang", {"Yongbei Zhuang", "Wuming Zhuang", "Standard Zhuang"}, "Yongnan Zhuang", "Youjiang Zhuang", "Zuojiang Zhuang"}, } m["zh"] = { aliases = {"Chinese"}, } m["zu"] = { aliases = {"อีซีซูลู", "Zulu", "isiZulu"}, } return m rmm02isdmfn3lregojnjifpmkz45ado มอดูล:languages/data/3/s/extra 828 312293 5729120 5726531 2026-07-20T02:24:29Z Octahedron80 267 5729120 Scribunto text/plain local m = {} m["saa"] = { } m["sab"] = { aliases = {"Bugle", "Murire", "Muoy"}, varieties = {"Sabanero", {"Bokotá", "Bogota"}}, } m["sac"] = { varieties = {{"Sac", "Sauk"}, "Kickapoo", {"Mesquakie", "Meskwaki"}}, } m["sad"] = { } m["sae"] = { } m["saf"] = { } m["sah"] = { aliases = {"ยาคุต", "Yakut", "Sakha"}, } m["saj"] = { } m["sak"] = { aliases = {"Shake"}, } m["sam"] = { aliases = {"Samaritan"}, } m["sao"] = { } m["saq"] = { } m["sar"] = { aliases = {"Sarabeca", "Saraveka", "Sarave"}, } m["sas"] = { } m["sat"] = { aliases = {"สันถัล", "Santali"}, } m["sau"] = { } m["sav"] = { } m["saw"] = { } m["sax"] = { aliases = {"Saa"}, } m["say"] = { } m["saz"] = { } m["sba"] = { } m["sbb"] = { } m["sbc"] = { aliases = {"Kele (New Guinea)", "Kele (Papua New Guinea)", "Kele"}, } m["sbd"] = { } m["sbe"] = { aliases = {"Saliba"}, } m["sbf"] = { aliases = {"Mikeyir", "Mekeyir", "Mekeyer"}, } m["sbg"] = { } m["sbh"] = { -- I'm guessing these are varieties, since they represent the names of the two islands on which the language -- (Sori-Harengan) is spoken. varieties = {"Sori", "Harengan"}, } m["sbi"] = { } m["sbj"] = { } m["sbk"] = { } m["sbl"] = { } m["sbm"] = { } m["sbn"] = { } m["sbo"] = { } m["sbp"] = { } m["sbq"] = { } m["sbr"] = { } m["sbs"] = { } m["sbt"] = { } m["sbu"] = { } m["sbv"] = { } m["sbw"] = { } m["sbx"] = { } m["sby"] = { } m["sbz"] = { } m["scb"] = { } m["sce"] = { aliases = {"ซันตา", "Dongxiang", "Santa"}, } m["scf"] = { } m["scg"] = { } m["sch"] = { -- Alias vs. variety here is a guess; Wikipedia says "Sakachep also known as Khelma" and says the ethnicity is -- "The Khelma, also known as the Sakachep" but Ethnologue also says "dialects are Khelma, Thangachep, and Sakachep" -- which may be bogus. aliases = {"Khelma"}, } m["sci"] = { } m["sck"] = { } m["scl"] = { -- These represent different valleys where the language is spoken, hence likely distinct dialects. varieties = {"Gilgiti", "Astori", "Chilasi"}, } m["scn"] = { aliases = {"Sicilian"}, } m["sco"] = { aliases = {"สก็อต", "สกอตส์", "สก็อตส์", "Scots", "Lowland Scots"}, } m["scp"] = { aliases = {"Hyolmo", "Yohlmo", "Helambu Sherpa"}, -- Wikipedia says Syuba/Kagate (code skw) may be close enough to be a dialect. Langtang is mutually intelligible -- with Yolmo but often considered a separate language; yet we don't have a code for it so I'm putting it as a -- variety. varieties = {"Melamchi Valley Yolmo", "Langtang", "Lamjung Yolmo", "Ilam Yolmo"}, } m["scq"] = { aliases = {"Sa'och", "Chung"}, } m["scs"] = { } m["scu"] = { } m["scv"] = { } m["scw"] = { } m["scx"] = { } m["sda"] = { } m["sdb"] = { aliases = {"Shabaki"}, } m["sdc"] = { aliases = {"Sassarese"}, } m["sde"] = { } m["sdf"] = { aliases = {"Sarliya"}, } m["sdg"] = { } m["sdh"] = { -- Kermanshahi can refer either to Southern Kurdish as a whole or to the prestige dialect. We distinct the latter -- as Kermanshani with an n following ''Habib Borjian, “KERMANSHAH vii. Languages and Dialects,” Encyclopædia -- Iranica, Vol. 16, Fasc. 3, New York, 2017, pp. 327-331.'' but this may not make a lot of sense. aliases = {"Kermanshahi", "Kermanshahi Kurdish"}, -- We classify Laki as a separate language but it is often considered a dialect of Southern Kurdish. varieties = {{"Kermanshani", "Kermanshani Kurdish"}, {"Kolya'i", "Kolyā'i"}, "Zangana", "Kalhori", {"Sanjābi", "Sanjabi"}, {"Feyli", "Fayli", "Ilāmi", "Ilami"}}, } m["sdj"] = { } m["sdk"] = { } m["sdl"] = { } m["sdm"] = { } m["sdn"] = { } m["sdo"] = { aliases = {"Bukar-Sadong"}, } m["sdp"] = { } m["sdr"] = { } m["sds"] = { aliases = {"Tunisian Berber"}, } m["sdu"] = { } m["sdx"] = { } m["sea"] = { aliases = {"Semai"}, } -- seb is a duplicate code of spp m["sec"] = { } m["sed"] = { } m["see"] = { } m["sef"] = { } m["seg"] = { } m["seh"] = { varieties = {{"Malawi Sena", "Malawian Sena"}, {"Nuclear Sena", "Mozambican Sena"}}, -- includes [swk] for Malawian Sena, but [bwg] for Barwe is distinct } m["sei"] = { } m["sej"] = { } m["sek"] = { aliases = {"Tsek'ene"}, varieties = {{"Kwadacha", "Kwadacha Sekani", "Kwadacha Tsek'ene"}}, } m["sen"] = { } m["seo"] = { } m["sep"] = { } m["seq"] = { } m["ser"] = { -- Wikipedia treats Kitanemuk as a separate language but it says it may have been a dialect (it is extinct). varieties = {"Kitanemuk"}, } m["ses"] = { aliases = {"Koyraboro Senni Songhay", "Koyraboro Senni Songhai", "Koroboro Senni"}, -- other_names = {"Eastern Songhay"}, -- this is a geographic grouping of Songhay languages including Koyraboro Senni } m["set"] = { } m["seu"] = { } m["sev"] = { } m["sew"] = { } m["sey"] = { } m["sez"] = { aliases = {"Senthang"}, } m["sfb"] = { } m["sfe"] = { } m["sfm"] = { } m["sfs"] = { } m["sfw"] = { } m["sga"] = { aliases = {"Old Irish"}, } m["sgb"] = { } m["sgc"] = { } m["sgd"] = { aliases = {"Surigaonon"}, } m["sge"] = { } m["sgg"] = { aliases = {"Swiss German Sign Language"}, } m["sgh"] = { } m["sgi"] = { } m["sgk"] = { } m["sgm"] = { } m["sgp"] = { } m["sgr"] = { aliases = {"Sangsari"}, } m["sgs"] = { } m["sgt"] = { aliases = {"Brokpa"}, } m["sgu"] = { } m["sgw"] = { } m["sgx"] = { } m["sgy"] = { -- FIXME: Sanglich is the name of the language as used in Tajikistan, while Sanglechi is the name as used in -- Afghanistan. Hence they could be different dialects, but provisionally I'm classifying them as aliases. aliases = {"Sanglich"}, -- "Warduji" may not exist at all } m["sgz"] = { } m["sha"] = { } m["shb"] = { } m["shc"] = { } m["shd"] = { } m["she"] = { } m["shg"] = { aliases = {"Shwa", "Shwakhwe"}, } m["shh"] = { aliases = {"Shoshoni"}, varieties = {{"Gosiute", "Goshute"}, {"Eastern Shoshone", "Eastern Shoshoni"}, {"Western Shoshone", "Western Shoshoni"}, {"Northern Shoshone", "Northern Shoshoni"}}, } m["shi"] = { aliases = {"Tachelhit", "Chleuh", "Shilha", "Tashlhiyt", "Tashelhit Berber", "Tachelhit Berber", "Tashlhiyt Berber", "Soussian"}, } m["shj"] = { } m["shk"] = { } m["shl"] = { } m["shm"] = { } m["shn"] = { aliases = {"ฉาน", "กว๊ามไต๊", "กำไต", "Shan", "Kwam Tai", "Kam Tai", "Tai Yai"}, } m["sho"] = { } m["shp"] = { } m["shq"] = { } m["shr"] = { } m["shs"] = { } m["sht"] = { } m["shu"] = { } m["shv"] = { aliases = {"Jibbali"}, } m["shw"] = { } m["shx"] = { aliases = {"Ho Ne", "Ho Nte"}, } m["shy"] = { aliases = {"Shawiya Berber", "Chaouïa", "Tacawit"}, } m["shz"] = { } m["sia"] = { } m["sib"] = { } m["sid"] = { aliases = {"Sidamo", "Sidaama"}, } m["sie"] = { } m["sif"] = { } m["sig"] = { } m["sih"] = { } m["sii"] = { } m["sij"] = { } m["sik"] = { } m["sil"] = { } m["sim"] = { aliases = {"Mende", "Mende (New Guinea)"}, } m["sip"] = { aliases = {"ภูเตีย", "Sikkimese", "Bhutia", "Dranjongke", "Dranjoke", "Denjongka", "Denzongpeke", "Denzongke"}, } m["siq"] = { } m["sir"] = { } m["sis"] = { } m["siu"] = { } m["siv"] = { } m["siw"] = { } m["six"] = { aliases = {"Garia", "Kari"}, } m["siy"] = { } m["siz"] = { aliases = {"Siwa", "Siwan", "Siwa Berber"}, } m["sja"] = { } m["sjb"] = { } m["sjd"] = { aliases = {"Kildin Sami"}, } m["sje"] = { aliases = {"Pite Sami"}, } m["sjg"] = { } m["sjk"] = { } m["sjl"] = { -- Per Wikipedia, these are two languages. There is also a yet more divergent variety Bangru (Northern Miji). varieties = { {"Western Miji", "Dmay", "Dhammai", "Dhəmmai", "Sajalang", "Sajolang"}, {"Eastern Miji", "Namrai", "Nəmrai"}, } } m["sjm"] = { } m["sjn"] = { aliases = {"Sindarin"}, } m["sjo"] = { aliases = {"Sibo", "Sibe", "Xibo"}, } m["sjp"] = { } m["sjr"] = { } m["sjs"] = { } m["sjt"] = { } m["sju"] = { } m["sjw"] = { } m["ska"] = { } m["skb"] = { aliases = {"Saek"}, } m["skc"] = { aliases = {"Sauk"}, } m["skd"] = { } m["ske"] = { aliases = {"Seke"}, } m["skf"] = { aliases = {"Mekens", "Mekem", "Amniapé"}, -- Glottolog refers to the third variety as Siokweriat corresponding to Koarategayat etc. varieties = {{"Sakirabiá", "Sakïrabiát", "Sakiráp", "Sakurabiat"}, {"Koaratira", "Guaratira", "Kanoé"}, {"Koarategayat", "Guaratégaya", "Guarategaja", "Warategáya"}}, } m["skh"] = { } m["ski"] = { other_names = {"Sikanese"}, } m["skj"] = { -- compare 'ths' } m["skk"] = { } m["skm"] = { other_names = {"Kutong"}, } m["skn"] = { } m["sko"] = { } m["skp"] = { } m["skq"] = { } m["skr"] = { other_names = {"Siraiki", "Seraiki"}, } m["sks"] = { aliases = {"ไมอา", "มายา", "Maia", "Maya", "Banar", "Pila", "Saki", "Suaro", "Turutap", "Yakiba"}, } m["skt"] = { other_names = {"Kisakata", "Lesa", "Odual", "Saka", "Bai", "Kibai", "Bay", "Kibay", "Djia", "Dia", "Dja", "Kidjia", "Wadia", "Tuku", "Ketu", "Batow"}, } m["sku"] = { } m["skv"] = { } m["skw"] = { other_names = {"Skepi Dutch", "Skepi Dutch Creole", "Essequibo Dutch"}, } m["skx"] = { } m["sky"] = { aliases = {"Sikaiana", "Sikayana"}, } m["skz"] = { } m["slc"] = { other_names = {"Saliba", "Sáliba", "Saliva", "Sáliva"}, } m["sld"] = { } m["sle"] = { } m["slf"] = { other_names = {"Swiss Italian Sign Language"}, } m["slg"] = { } m["slh"] = { } -- "sli" "Silesian German" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["slj"] = { } m["sll"] = { } m["slm"] = { aliases = {"Pangutaran Sama", "Siyama"}, } m["sln"] = { } m["slp"] = { other_names = {"Solor", "Solorese"}, } m["slq"] = { } m["slr"] = { aliases = {"Salar"}, } m["sls"] = { } m["slt"] = { } m["slu"] = { } m["slw"] = { } m["slx"] = { } m["sly"] = { } m["slz"] = { } m["sma"] = { aliases = {"Southern Sami"}, } m["smb"] = { } m["smc"] = { } m["smd"] = { } m["smf"] = { } m["smg"] = { } m["smh"] = { } m["smj"] = { aliases = {"Lule Sami"}, } m["smk"] = { aliases = {"บีนูโบลีเนา", "Bolinao", "Binubolinao"}, } m["sml"] = { aliases = {"Central Sama"}, } m["smm"] = { } m["smn"] = { aliases = {"Inari Sami"}, } m["smp"] = { other_names = {"Samaritan"}, } m["smq"] = { } m["smr"] = { other_names = {"Simalur", "Devayan", "Defayan", "Simolol", "Simulul", "Simeuloë"}, } m["sms"] = { } m["smt"] = { } m["smu"] = { aliases = {"Somray"}, } m["smv"] = { } m["smw"] = { } m["smx"] = { } m["smy"] = { } m["smz"] = { } m["snb"] = { } m["snc"] = { } m["sne"] = { } m["snf"] = { } m["sng"] = { other_names = {"Sanga", "Luba-Sanga", "Sanga (Democratic Republic of Congo)", "Sanga (Democratic Republic of the Congo)"}, } m["sni"] = { } m["snj"] = { } m["snk"] = { } m["snl"] = { } m["snm"] = { } m["snn"] = { } m["sno"] = { } m["snp"] = { } m["snq"] = { other_names = {"Chango"}, } m["snr"] = { } m["sns"] = { } m["snu"] = { } m["snv"] = { } m["snw"] = { } m["snx"] = { } m["sny"] = { } m["snz"] = { other_names = {"Kow", "Sinsauru", "Asas"}, } m["soa"] = { aliases = {"ไทโซ่ง", "ลาวโซ่ง", "Thai Song", "Lao Song", "Song"}, } m["sob"] = { } m["soc"] = { other_names = {"So"}, } m["sod"] = { } m["soe"] = { } m["sog"] = { } m["soh"] = { other_names = {"Aka", "Sillok"}, } m["soi"] = { other_names = {"Sonaha", "Sonahaa", "Sunah", "Sunha"}, } m["sok"] = { } m["sol"] = { } m["soo"] = { other_names = {"Songo", "Tsong"}, } m["sop"] = { } m["soq"] = { } m["sor"] = { } m["sos"] = { other_names = {"Seeku", "Sembla", "Sambla"}, } m["sou"] = { aliases = {"ถิ่นใต้", "ไทยถิ่นใต้", "ตามโพร", "Southern Thai", "Dambro"}, } m["sov"] = { } m["sow"] = { } m["sox"] = { other_names = {"So", "Sso", "Shwo", "Fo"}, } m["soy"] = { } m["soz"] = { } m["spb"] = { other_names = {"Sepa"}, } m["spc"] = { other_names = {"Kaliana", "Kariana", "Kaliána", "Sapä́", "Sape"}, } m["spd"] = { } m["spe"] = { other_names = {"Sepa", "Sepa (Papua New Guinea)"}, } m["spg"] = { } m["spi"] = { } m["spk"] = { } m["spl"] = { } m["spm"] = { } m["spn"] = { } m["spo"] = { other_names = {"Montana Salish", "Salish", "Séliš", "Kalispel-Pend d'oreille", "Kalispel"}, } m["spp"] = { other_names = {"Suppire", "Supyire Senoufo", "Supyire Senufo", "Shempire Senoufo", "Shempire"}, } m["spr"] = { } m["sps"] = { } m["spt"] = { } m["spu"] = { } m["spv"] = { other_names = {"Kosali", "Koshali"}, } m["spx"] = { other_names = {"Old Sabellic", "Old Sabellian", "Middle Adriatic", "Central Adriatic"}, } m["spy"] = { } m["sqa"] = { } m["sqh"] = { } m["sqk"] = { } m["sqm"] = { } m["sqn"] = { } m["sqo"] = { } m["sqq"] = { } m["sqr"] = { } m["sqs"] = { } m["sqt"] = { aliases = {"Socotri"}, } m["squ"] = { } m["sra"] = { } m["srb"] = { } m["sre"] = { } m["srf"] = { } m["srg"] = { } m["srh"] = { } m["sri"] = { } m["srk"] = { aliases = {"Serudung"}, } m["srl"] = { } m["srm"] = { aliases = {"ซารามักกัน", "Saramaccan"}, } m["srn"] = { } m["srq"] = { } m["srr"] = { } m["srs"] = { aliases = {"Sarcee", "Sarsi", "Tsuu T'ina", "Tsu T'ina"}, } m["srt"] = { } m["sru"] = { other_names = {"Paíter", "Suruí-Paíter", "Suruí de Rondônia", "Suruí do Jiparaná"}, } m["srv"] = { } m["srw"] = { } m["srx"] = { } m["sry"] = { } m["srz"] = { } m["ssb"] = { } m["ssc"] = { } m["ssd"] = { } m["sse"] = { } m["ssf"] = { other_names = {"Sao"}, } m["ssg"] = { } m["ssh"] = { } m["ssi"] = { other_names = {"Bhilki"}, } m["ssj"] = { } m["ssk"] = { } m["ssl"] = { } m["ssm"] = { } m["sso"] = { } m["ssp"] = { } m["ssq"] = { } m["ssr"] = { other_names = {"Swiss French Sign Language"}, } m["sss"] = { } m["sst"] = { } m["ssu"] = { } m["ssv"] = { } m["ssx"] = { } m["ssy"] = { aliases = {"Saho"}, } m["ssz"] = { } m["stb"] = { } m["std"] = { } m["ste"] = { } m["stf"] = { } m["stg"] = { } m["sth"] = { other_names = {"Cant"}, } m["sti"] = { } m["stj"] = { } m["stk"] = { } m["stm"] = { } m["stn"] = { } m["sto"] = { } m["stp"] = { } m["stq"] = { aliases = {"Saterland Frisian"}, other_names = {"ฟรีเชียตะวันออก", "East Frisian", "Eastern Frisian"}, -- Saterland F is a dialect of East F; see [[WT:T:ASTQ]] } m["str"] = { } m["sts"] = { } m["stt"] = { } m["stu"] = { } m["stv"] = { } m["stw"] = { } m["sty"] = { } m["sua"] = { } m["sub"] = { } m["suc"] = { } m["sue"] = { } m["sug"] = { } m["sui"] = { } m["suk"] = { } m["suq"] = { } m["sur"] = { other_names = {"Sura", "Mupun"}, } m["sus"] = { } m["sut"] = { } m["suv"] = { } m["suw"] = { } m["sux"] = { aliases = {"ซูเมเรียน", "สุเมเรียน", "Sumerian"}, } m["suy"] = { } m["suz"] = { } m["sva"] = { } m["svb"] = { } m["svc"] = { } m["sve"] = { } m["svk"] = { } m["svm"] = { aliases = {"Slavo-molisano", "Molise Slavic", "Molise Croatian"}, } m["svs"] = { } m["svx"] = { } m["swb"] = { } m["swf"] = { } m["swg"] = { } m["swi"] = { aliases = {"Sui", "Ai Sui", "Shui", "Sui Li", "Suipo"}, } m["swj"] = { } m["swl"] = { } m["swm"] = { } m["swn"] = { other_names = {"Sawknah", "Fezzan", "Fogaha"}, } m["swo"] = { } m["swp"] = { } m["swq"] = { } m["swr"] = { } m["sws"] = { } m["swt"] = { } m["swu"] = { } m["sww"] = { } m["swx"] = { other_names = {"Zuruahá", "Suruaha", "Suruwaha", "Zuruaha", "Índios do Coxodoá"}, } m["swy"] = { } m["sxb"] = { } m["sxc"] = { } m["sxe"] = { } m["sxg"] = { other_names = {"Shuhi", "Xumi"}, } m["sxk"] = { } m["sxl"] = { other_names = {"Selian"}, } m["sxm"] = { aliases = {"ซัมเร", "สำเร", "Samre"}, } m["sxn"] = { } m["sxo"] = { } m["sxr"] = { } m["sxs"] = { } -- "sxu" "Upper Saxon" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["sxw"] = { } m["sya"] = { } m["syb"] = { } m["syc"] = { aliases = {"Classical Syriac"}, } m["syi"] = { } m["syk"] = { } m["syl"] = { aliases = {"สิเลฏิ", "สิเลฏี", "สิลอฏิ", "Sylheti"}, } m["sym"] = { } m["syn"] = { } m["syo"] = { } m["sys"] = { } m["syw"] = { aliases = {"Syuba"}, } m["syx"] = { other_names = {"Shamay", "Samayi", "Samay", "Shamayi"}, } m["syy"] = { } m["sza"] = { } m["szb"] = { } m["szc"] = { } m["szd"] = { } m["sze"] = { } m["szg"] = { } m["szl"] = { aliases = {"โปแลนด์แบบไซลีเซีย", "Silesian", "Upper Silesian", "Silesian Polish", "Upper Silesian Polish"}, } m["szn"] = { } m["szp"] = { other_names = {"Inanwatan"}, } m["szv"] = { other_names = {"Isu", "Isu (Fako Division)", "Isuwu", "Suwu", "Subu"}, } m["szw"] = { other_names = {"Weda", "Weda-Sawai", "Kobe", "Faya-Mafa", "Messa-Dote"}, } m["szy"] = { aliases = {"Sakizaya"}, } return m 0gd8lqte4a02v4oigkx86ya1lw5iiox 5729124 5729120 2026-07-20T02:32:10Z Octahedron80 267 5729124 Scribunto text/plain local m = {} m["saa"] = { } m["sab"] = { aliases = {"Bugle", "Murire", "Muoy"}, varieties = {"Sabanero", {"Bokotá", "Bogota"}}, } m["sac"] = { varieties = {{"Sac", "Sauk"}, "Kickapoo", {"Mesquakie", "Meskwaki"}}, } m["sad"] = { } m["sae"] = { } m["saf"] = { } m["sah"] = { aliases = {"ยาคุต", "Yakut", "Sakha"}, } m["saj"] = { } m["sak"] = { aliases = {"Shake"}, } m["sam"] = { aliases = {"Samaritan"}, } m["sao"] = { } m["saq"] = { } m["sar"] = { aliases = {"Sarabeca", "Saraveka", "Sarave"}, } m["sas"] = { } m["sat"] = { aliases = {"สันถัล", "Santali"}, } m["sau"] = { } m["sav"] = { } m["saw"] = { } m["sax"] = { aliases = {"Saa"}, } m["say"] = { } m["saz"] = { } m["sba"] = { } m["sbb"] = { } m["sbc"] = { aliases = {"Kele (New Guinea)", "Kele (Papua New Guinea)", "Kele"}, } m["sbd"] = { } m["sbe"] = { aliases = {"Saliba"}, } m["sbf"] = { aliases = {"Mikeyir", "Mekeyir", "Mekeyer"}, } m["sbg"] = { } m["sbh"] = { -- I'm guessing these are varieties, since they represent the names of the two islands on which the language -- (Sori-Harengan) is spoken. varieties = {"Sori", "Harengan"}, } m["sbi"] = { } m["sbj"] = { } m["sbk"] = { } m["sbl"] = { } m["sbm"] = { } m["sbn"] = { } m["sbo"] = { } m["sbp"] = { } m["sbq"] = { } m["sbr"] = { } m["sbs"] = { } m["sbt"] = { } m["sbu"] = { } m["sbv"] = { } m["sbw"] = { } m["sbx"] = { } m["sby"] = { } m["sbz"] = { } m["scb"] = { } m["sce"] = { aliases = {"ซันตา", "Dongxiang", "Santa"}, } m["scf"] = { } m["scg"] = { } m["sch"] = { -- Alias vs. variety here is a guess; Wikipedia says "Sakachep also known as Khelma" and says the ethnicity is -- "The Khelma, also known as the Sakachep" but Ethnologue also says "dialects are Khelma, Thangachep, and Sakachep" -- which may be bogus. aliases = {"Khelma"}, } m["sci"] = { } m["sck"] = { } m["scl"] = { -- These represent different valleys where the language is spoken, hence likely distinct dialects. varieties = {"Gilgiti", "Astori", "Chilasi"}, } m["scn"] = { aliases = {"Sicilian"}, } m["sco"] = { aliases = {"สก็อต", "สกอตส์", "สก็อตส์", "Scots", "Lowland Scots"}, } m["scp"] = { aliases = {"Hyolmo", "Yohlmo", "Helambu Sherpa"}, -- Wikipedia says Syuba/Kagate (code skw) may be close enough to be a dialect. Langtang is mutually intelligible -- with Yolmo but often considered a separate language; yet we don't have a code for it so I'm putting it as a -- variety. varieties = {"Melamchi Valley Yolmo", "Langtang", "Lamjung Yolmo", "Ilam Yolmo"}, } m["scq"] = { aliases = {"Sa'och", "Chung"}, } m["scs"] = { } m["scu"] = { } m["scv"] = { } m["scw"] = { } m["scx"] = { } m["sda"] = { } m["sdb"] = { aliases = {"Shabaki"}, } m["sdc"] = { aliases = {"Sassarese"}, } m["sde"] = { } m["sdf"] = { aliases = {"Sarliya"}, } m["sdg"] = { } m["sdh"] = { -- Kermanshahi can refer either to Southern Kurdish as a whole or to the prestige dialect. We distinct the latter -- as Kermanshani with an n following ''Habib Borjian, “KERMANSHAH vii. Languages and Dialects,” Encyclopædia -- Iranica, Vol. 16, Fasc. 3, New York, 2017, pp. 327-331.'' but this may not make a lot of sense. aliases = {"Kermanshahi", "Kermanshahi Kurdish"}, -- We classify Laki as a separate language but it is often considered a dialect of Southern Kurdish. varieties = {{"Kermanshani", "Kermanshani Kurdish"}, {"Kolya'i", "Kolyā'i"}, "Zangana", "Kalhori", {"Sanjābi", "Sanjabi"}, {"Feyli", "Fayli", "Ilāmi", "Ilami"}}, } m["sdj"] = { } m["sdk"] = { } m["sdl"] = { } m["sdm"] = { } m["sdn"] = { } m["sdo"] = { aliases = {"Bukar-Sadong"}, } m["sdp"] = { } m["sdr"] = { } m["sds"] = { aliases = {"Tunisian Berber"}, } m["sdu"] = { } m["sdx"] = { } m["sea"] = { aliases = {"Semai"}, } -- seb is a duplicate code of spp m["sec"] = { } m["sed"] = { } m["see"] = { } m["sef"] = { } m["seg"] = { } m["seh"] = { varieties = {{"Malawi Sena", "Malawian Sena"}, {"Nuclear Sena", "Mozambican Sena"}}, -- includes [swk] for Malawian Sena, but [bwg] for Barwe is distinct } m["sei"] = { } m["sej"] = { } m["sek"] = { aliases = {"Tsek'ene"}, varieties = {{"Kwadacha", "Kwadacha Sekani", "Kwadacha Tsek'ene"}}, } m["sen"] = { } m["seo"] = { } m["sep"] = { } m["seq"] = { } m["ser"] = { -- Wikipedia treats Kitanemuk as a separate language but it says it may have been a dialect (it is extinct). varieties = {"Kitanemuk"}, } m["ses"] = { aliases = {"Koyraboro Senni Songhay", "Koyraboro Senni Songhai", "Koroboro Senni"}, -- other_names = {"Eastern Songhay"}, -- this is a geographic grouping of Songhay languages including Koyraboro Senni } m["set"] = { } m["seu"] = { } m["sev"] = { } m["sew"] = { } m["sey"] = { } m["sez"] = { aliases = {"Senthang"}, } m["sfb"] = { } m["sfe"] = { } m["sfm"] = { } m["sfs"] = { } m["sfw"] = { } m["sga"] = { aliases = {"Old Irish"}, } m["sgb"] = { } m["sgc"] = { } m["sgd"] = { aliases = {"Surigaonon"}, } m["sge"] = { } m["sgg"] = { aliases = {"Swiss German Sign Language"}, } m["sgh"] = { } m["sgi"] = { } m["sgk"] = { } m["sgm"] = { } m["sgp"] = { } m["sgr"] = { aliases = {"Sangsari"}, } m["sgs"] = { } m["sgt"] = { aliases = {"Brokpa"}, } m["sgu"] = { } m["sgw"] = { } m["sgx"] = { } m["sgy"] = { -- FIXME: Sanglich is the name of the language as used in Tajikistan, while Sanglechi is the name as used in -- Afghanistan. Hence they could be different dialects, but provisionally I'm classifying them as aliases. aliases = {"Sanglich"}, -- "Warduji" may not exist at all } m["sgz"] = { } m["sha"] = { } m["shb"] = { } m["shc"] = { } m["shd"] = { } m["she"] = { } m["shg"] = { aliases = {"Shwa", "Shwakhwe"}, } m["shh"] = { aliases = {"Shoshoni"}, varieties = {{"Gosiute", "Goshute"}, {"Eastern Shoshone", "Eastern Shoshoni"}, {"Western Shoshone", "Western Shoshoni"}, {"Northern Shoshone", "Northern Shoshoni"}}, } m["shi"] = { aliases = {"Tachelhit", "Chleuh", "Shilha", "Tashlhiyt", "Tashelhit Berber", "Tachelhit Berber", "Tashlhiyt Berber", "Soussian"}, } m["shj"] = { } m["shk"] = { } m["shl"] = { } m["shm"] = { } m["shn"] = { aliases = {"ฉาน", "กว๊ามไต๊", "กำไต", "Shan", "Kwam Tai", "Kam Tai", "Tai Yai"}, } m["sho"] = { } m["shp"] = { } m["shq"] = { } m["shr"] = { } m["shs"] = { } m["sht"] = { } m["shu"] = { } m["shv"] = { aliases = {"Jibbali"}, } m["shw"] = { } m["shx"] = { aliases = {"Ho Ne", "Ho Nte"}, } m["shy"] = { aliases = {"Shawiya Berber", "Chaouïa", "Tacawit"}, } m["shz"] = { } m["sia"] = { } m["sib"] = { } m["sid"] = { aliases = {"Sidamo", "Sidaama"}, } m["sie"] = { } m["sif"] = { } m["sig"] = { } m["sih"] = { } m["sii"] = { } m["sij"] = { } m["sik"] = { } m["sil"] = { } m["sim"] = { aliases = {"Mende", "Mende (New Guinea)"}, } m["sip"] = { aliases = {"ภูเตีย", "Sikkimese", "Bhutia", "Dranjongke", "Dranjoke", "Denjongka", "Denzongpeke", "Denzongke"}, } m["siq"] = { } m["sir"] = { } m["sis"] = { } m["siu"] = { } m["siv"] = { } m["siw"] = { } m["six"] = { aliases = {"Garia", "Kari"}, } m["siy"] = { } m["siz"] = { aliases = {"Siwa", "Siwan", "Siwa Berber"}, } m["sja"] = { } m["sjb"] = { } m["sjd"] = { aliases = {"Kildin Sami"}, } m["sje"] = { aliases = {"Pite Sami"}, } m["sjg"] = { } m["sjk"] = { } m["sjl"] = { -- Per Wikipedia, these are two languages. There is also a yet more divergent variety Bangru (Northern Miji). varieties = { {"Western Miji", "Dmay", "Dhammai", "Dhəmmai", "Sajalang", "Sajolang"}, {"Eastern Miji", "Namrai", "Nəmrai"}, } } m["sjm"] = { } m["sjn"] = { aliases = {"Sindarin"}, } m["sjo"] = { aliases = {"Sibo", "Sibe", "Xibo"}, } m["sjp"] = { } m["sjr"] = { } m["sjs"] = { } m["sjt"] = { } m["sju"] = { } m["sjw"] = { } m["ska"] = { } m["skb"] = { aliases = {"Saek"}, } m["skc"] = { aliases = {"Sauk"}, } m["skd"] = { } m["ske"] = { aliases = {"Seke"}, } m["skf"] = { aliases = {"Mekens", "Mekem", "Amniapé"}, -- Glottolog refers to the third variety as Siokweriat corresponding to Koarategayat etc. varieties = {{"Sakirabiá", "Sakïrabiát", "Sakiráp", "Sakurabiat"}, {"Koaratira", "Guaratira", "Kanoé"}, {"Koarategayat", "Guaratégaya", "Guarategaja", "Warategáya"}}, } m["skh"] = { } m["ski"] = { other_names = {"Sikanese"}, } m["skj"] = { -- compare 'ths' } m["skk"] = { } m["skm"] = { other_names = {"Kutong"}, } m["skn"] = { } m["sko"] = { } m["skp"] = { } m["skq"] = { } m["skr"] = { other_names = {"Siraiki", "Seraiki"}, } m["sks"] = { aliases = {"ไมอา", "มายา", "Maia", "Maya", "Banar", "Pila", "Saki", "Suaro", "Turutap", "Yakiba"}, } m["skt"] = { other_names = {"Kisakata", "Lesa", "Odual", "Saka", "Bai", "Kibai", "Bay", "Kibay", "Djia", "Dia", "Dja", "Kidjia", "Wadia", "Tuku", "Ketu", "Batow"}, } m["sku"] = { } m["skv"] = { } m["skw"] = { other_names = {"Skepi Dutch", "Skepi Dutch Creole", "Essequibo Dutch"}, } m["skx"] = { } m["sky"] = { aliases = {"Sikaiana", "Sikayana"}, } m["skz"] = { } m["slc"] = { other_names = {"Saliba", "Sáliba", "Saliva", "Sáliva"}, } m["sld"] = { } m["sle"] = { } m["slf"] = { other_names = {"Swiss Italian Sign Language"}, } m["slg"] = { } m["slh"] = { } -- "sli" "Silesian German" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["slj"] = { } m["sll"] = { } m["slm"] = { aliases = {"Pangutaran Sama", "Siyama"}, } m["sln"] = { } m["slp"] = { other_names = {"Solor", "Solorese"}, } m["slq"] = { } m["slr"] = { aliases = {"Salar"}, } m["sls"] = { } m["slt"] = { } m["slu"] = { } m["slw"] = { } m["slx"] = { } m["sly"] = { } m["slz"] = { } m["sma"] = { aliases = {"Southern Sami"}, } m["smb"] = { } m["smc"] = { } m["smd"] = { } m["smf"] = { } m["smg"] = { } m["smh"] = { } m["smj"] = { aliases = {"Lule Sami"}, } m["smk"] = { aliases = {"บีนูโบลีเนา", "Bolinao", "Binubolinao"}, } m["sml"] = { aliases = {"Central Sama"}, } m["smm"] = { } m["smn"] = { aliases = {"Inari Sami"}, } m["smp"] = { other_names = {"Samaritan"}, } m["smq"] = { } m["smr"] = { other_names = {"Simalur", "Devayan", "Defayan", "Simolol", "Simulul", "Simeuloë"}, } m["sms"] = { } m["smt"] = { } m["smu"] = { aliases = {"Somray"}, } m["smv"] = { } m["smw"] = { } m["smx"] = { } m["smy"] = { } m["smz"] = { } m["snb"] = { } m["snc"] = { } m["sne"] = { } m["snf"] = { } m["sng"] = { other_names = {"Sanga", "Luba-Sanga", "Sanga (Democratic Republic of Congo)", "Sanga (Democratic Republic of the Congo)"}, } m["sni"] = { } m["snj"] = { } m["snk"] = { } m["snl"] = { } m["snm"] = { } m["snn"] = { } m["sno"] = { } m["snp"] = { } m["snq"] = { other_names = {"Chango"}, } m["snr"] = { } m["sns"] = { } m["snu"] = { } m["snv"] = { } m["snw"] = { } m["snx"] = { } m["sny"] = { } m["snz"] = { other_names = {"Kow", "Sinsauru", "Asas"}, } m["soa"] = { aliases = {"ไทโซ่ง", "ลาวโซ่ง", "Thai Song", "Lao Song", "Song"}, } m["sob"] = { } m["soc"] = { other_names = {"So"}, } m["sod"] = { } m["soe"] = { } m["sog"] = { } m["soh"] = { other_names = {"Aka", "Sillok"}, } m["soi"] = { other_names = {"Sonaha", "Sonahaa", "Sunah", "Sunha"}, } m["sok"] = { } m["sol"] = { } m["soo"] = { other_names = {"Songo", "Tsong"}, } m["sop"] = { } m["soq"] = { } m["sor"] = { } m["sos"] = { other_names = {"Seeku", "Sembla", "Sambla"}, } m["sou"] = { aliases = {"ถิ่นใต้", "ไทยถิ่นใต้", "ตามโพร", "Southern Thai", "Dambro"}, } m["sov"] = { } m["sow"] = { } m["sox"] = { other_names = {"So", "Sso", "Shwo", "Fo"}, } m["soy"] = { } m["soz"] = { } m["spb"] = { other_names = {"Sepa"}, } m["spc"] = { other_names = {"Kaliana", "Kariana", "Kaliána", "Sapä́", "Sape"}, } m["spd"] = { } m["spe"] = { other_names = {"Sepa", "Sepa (Papua New Guinea)"}, } m["spg"] = { } m["spi"] = { } m["spk"] = { } m["spl"] = { } m["spm"] = { } m["spn"] = { } m["spo"] = { other_names = {"Montana Salish", "Salish", "Séliš", "Kalispel-Pend d'oreille", "Kalispel"}, } m["spp"] = { other_names = {"Suppire", "Supyire Senoufo", "Supyire Senufo", "Shempire Senoufo", "Shempire"}, } m["spr"] = { } m["sps"] = { } m["spt"] = { } m["spu"] = { } m["spv"] = { other_names = {"Kosali", "Koshali"}, } m["spx"] = { other_names = {"Old Sabellic", "Old Sabellian", "Middle Adriatic", "Central Adriatic"}, } m["spy"] = { } m["sqa"] = { } m["sqh"] = { } m["sqk"] = { } m["sqm"] = { } m["sqn"] = { } m["sqo"] = { } m["sqq"] = { } m["sqr"] = { } m["sqs"] = { } m["sqt"] = { aliases = {"Socotri"}, } m["squ"] = { } m["sra"] = { } m["srb"] = { } m["sre"] = { } m["srf"] = { } m["srg"] = { } m["srh"] = { } m["sri"] = { } m["srk"] = { aliases = {"Serudung"}, } m["srl"] = { } m["srm"] = { aliases = {"ซารามักกัน", "Saramaccan"}, } m["srn"] = { aliases = {"Sranan Tongo"}, } m["srq"] = { } m["srr"] = { } m["srs"] = { aliases = {"Sarcee", "Sarsi", "Tsuu T'ina", "Tsu T'ina"}, } m["srt"] = { } m["sru"] = { other_names = {"Paíter", "Suruí-Paíter", "Suruí de Rondônia", "Suruí do Jiparaná"}, } m["srv"] = { } m["srw"] = { } m["srx"] = { } m["sry"] = { } m["srz"] = { } m["ssb"] = { } m["ssc"] = { } m["ssd"] = { } m["sse"] = { } m["ssf"] = { other_names = {"Sao"}, } m["ssg"] = { } m["ssh"] = { } m["ssi"] = { other_names = {"Bhilki"}, } m["ssj"] = { } m["ssk"] = { } m["ssl"] = { } m["ssm"] = { } m["sso"] = { } m["ssp"] = { } m["ssq"] = { } m["ssr"] = { other_names = {"Swiss French Sign Language"}, } m["sss"] = { } m["sst"] = { } m["ssu"] = { } m["ssv"] = { } m["ssx"] = { } m["ssy"] = { aliases = {"Saho"}, } m["ssz"] = { } m["stb"] = { } m["std"] = { } m["ste"] = { } m["stf"] = { } m["stg"] = { } m["sth"] = { other_names = {"Cant"}, } m["sti"] = { } m["stj"] = { } m["stk"] = { } m["stm"] = { } m["stn"] = { } m["sto"] = { } m["stp"] = { } m["stq"] = { aliases = {"Saterland Frisian"}, other_names = {"ฟรีเชียตะวันออก", "East Frisian", "Eastern Frisian"}, -- Saterland F is a dialect of East F; see [[WT:T:ASTQ]] } m["str"] = { } m["sts"] = { } m["stt"] = { } m["stu"] = { } m["stv"] = { } m["stw"] = { } m["sty"] = { } m["sua"] = { } m["sub"] = { } m["suc"] = { } m["sue"] = { } m["sug"] = { } m["sui"] = { } m["suk"] = { } m["suq"] = { } m["sur"] = { other_names = {"Sura", "Mupun"}, } m["sus"] = { } m["sut"] = { } m["suv"] = { } m["suw"] = { } m["sux"] = { aliases = {"ซูเมเรียน", "สุเมเรียน", "Sumerian"}, } m["suy"] = { } m["suz"] = { } m["sva"] = { } m["svb"] = { } m["svc"] = { } m["sve"] = { } m["svk"] = { } m["svm"] = { aliases = {"Slavo-molisano", "Molise Slavic", "Molise Croatian"}, } m["svs"] = { } m["svx"] = { } m["swb"] = { } m["swf"] = { } m["swg"] = { } m["swi"] = { aliases = {"Sui", "Ai Sui", "Shui", "Sui Li", "Suipo"}, } m["swj"] = { } m["swl"] = { } m["swm"] = { } m["swn"] = { other_names = {"Sawknah", "Fezzan", "Fogaha"}, } m["swo"] = { } m["swp"] = { } m["swq"] = { } m["swr"] = { } m["sws"] = { } m["swt"] = { } m["swu"] = { } m["sww"] = { } m["swx"] = { other_names = {"Zuruahá", "Suruaha", "Suruwaha", "Zuruaha", "Índios do Coxodoá"}, } m["swy"] = { } m["sxb"] = { } m["sxc"] = { } m["sxe"] = { } m["sxg"] = { other_names = {"Shuhi", "Xumi"}, } m["sxk"] = { } m["sxl"] = { other_names = {"Selian"}, } m["sxm"] = { aliases = {"ซัมเร", "สำเร", "Samre"}, } m["sxn"] = { } m["sxo"] = { } m["sxr"] = { } m["sxs"] = { } -- "sxu" "Upper Saxon" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["sxw"] = { } m["sya"] = { } m["syb"] = { } m["syc"] = { aliases = {"Classical Syriac"}, } m["syi"] = { } m["syk"] = { } m["syl"] = { aliases = {"สิเลฏิ", "สิเลฏี", "สิลอฏิ", "Sylheti"}, } m["sym"] = { } m["syn"] = { } m["syo"] = { } m["sys"] = { } m["syw"] = { aliases = {"Syuba"}, } m["syx"] = { other_names = {"Shamay", "Samayi", "Samay", "Shamayi"}, } m["syy"] = { } m["sza"] = { } m["szb"] = { } m["szc"] = { } m["szd"] = { } m["sze"] = { } m["szg"] = { } m["szl"] = { aliases = {"โปแลนด์แบบไซลีเซีย", "Silesian", "Upper Silesian", "Silesian Polish", "Upper Silesian Polish"}, } m["szn"] = { } m["szp"] = { other_names = {"Inanwatan"}, } m["szv"] = { other_names = {"Isu", "Isu (Fako Division)", "Isuwu", "Suwu", "Subu"}, } m["szw"] = { other_names = {"Weda", "Weda-Sawai", "Kobe", "Faya-Mafa", "Messa-Dote"}, } m["szy"] = { aliases = {"Sakizaya"}, } return m h6weror6ug25p17s7pdrvssczgnfo3k มอดูล:languages/data/3/r/extra 828 312297 5729383 5726941 2026-07-20T07:42:23Z Octahedron80 267 5729383 Scribunto text/plain local m = {} m["raa"] = { } m["rab"] = { other_names = {"Chamlinge", "Rodong", "Camling"}, } m["rac"] = { } m["rad"] = { aliases = {"Rade", "Rhade"}, } m["raf"] = { } m["rag"] = { other_names = {"Logoli", "Ragoli"}, } m["rah"] = { other_names = {"Maituri", "Rongdani", "Rava"}, } m["rai"] = { other_names = {"Ramoaina", "Ramuaaina", "Ramuaina", "Duke of York", "Aalawa", "Aalawaa", "Alawa", "Mioko"}, } m["rak"] = { other_names = {"Tulu", "Bohuai"}, } m["ral"] = { } m["ram"] = { other_names = {"Krahô", "Canela-Krahô"}, } m["ran"] = { other_names = {"Kimaam"}, } m["rao"] = { } m["rap"] = { aliases = {"ราปานุย", "Rapa Nui", "Rapanui", "Pascuense"}, } m["raq"] = { } m["rar"] = { aliases = {"Rarotongan", "มาวรีแบบหมู่เกาะคุก", "Cook Islands Maori", "Cook Islands Māori"}, } m["ras"] = { other_names = {"Tingal", "Tagale", "Tegele", "Tekele", "Togole", "Rashad", "Gom", "Kom"}, } m["rat"] = { } m["rau"] = { } m["rav"] = { } m["raw"] = { aliases = {"ราวาง", "Rawang"}, } m["rax"] = { } m["ray"] = { } m["raz"] = { } m["rbb"] = { } m["rbk"] = { other_names = {"Northern Bontok"}, } m["rbl"] = { } m["rcf"] = { } m["rdb"] = { } m["rea"] = { } m["reb"] = { } m["ree"] = { other_names = {"Lisum", "Ma'aging", "Long Badan", "Uma Daro", "Long Kehobo", "Uma Poh", "Uma Juman", "Long Murun", "Long Geng", "Lemena"}, } m["reg"] = { } m["rei"] = { } m["rej"] = { other_names = {"Rejangese"}, } m["rel"] = { } m["rem"] = { } m["ren"] = { } m["rer"] = { } m["res"] = { } m["ret"] = { other_names = {"Reta"}, } m["rey"] = { } m["rga"] = { } m["rge"] = { aliases = {"Romani Greek", "Hellenoromani"}, } m["rgk"] = { } m["rgn"] = { aliases = {"Romagnol", "Romagnolo"}, } m["rgr"] = { } m["rgs"] = { } m["rgu"] = { } m["rhg"] = { aliases = {"โรฮิงญา", "โรฮิงยา", "Rohingya"}, } m["rhp"] = { } m["ria"] = { other_names = {"Riang"}, } m["rif"] = { aliases = {"ตะริฟิต", "ริเฟียน", "ริฟเฟียน", "Tarifit", "Rifian", "Riffian", "Tamazight"}, } m["ril"] = { } m["rim"] = { } m["rin"] = { } m["rir"] = { } m["rit"] = { other_names = {"Ritharrŋu", "Ritharngu"}, } m["riu"] = { } m["rjg"] = { } m["rji"] = { } m["rjs"] = { aliases = {"ราชวังศี", "Rajbanshi"}, } m["rka"] = { } m["rkb"] = { other_names = {"Erikbatsa", "Aripaktsa", "Erikpatsa"}, } m["rkh"] = { } m["rki"] = { aliases = {"อาระกัน", "Rakhine", "Arakanese", "Ramree", "Yangbye", "Thandwe", "Chaungtha"}, } m["rkm"] = { } m["rkt"] = { other_names = {"Rangpuri"}, } m["rkw"] = { } m["rma"] = { } m["rmb"] = { } m["rmc"] = { } m["rmd"] = { } m["rme"] = { } m["rmf"] = { } m["rmg"] = { } m["rmh"] = { } m["rmi"] = { } m["rmk"] = { } m["rml"] = { } m["rmm"] = { } m["rmn"] = { } m["rmo"] = { other_names = {"Sinti Romani", "Sinti-Manouche", "Sinti"}, } m["rmp"] = { } m["rmq"] = { } m["rms"] = { } m["rmt"] = { } m["rmu"] = { } m["rmv"] = { } m["rmw"] = { other_names = {"Welsh Romany", "Kååle"}, } m["rmx"] = { } m["rmy"] = { } m["rmz"] = { } m["rnd"] = { aliases = {"Ruund", "Northern Lunda", "Uruund"}, } m["rng"] = { other_names = {"Xironga"}, } m["rnl"] = { } m["rnn"] = { } m["rnp"] = { } m["rnw"] = { } m["rob"] = { } m["roc"] = { } m["rod"] = { } m["roe"] = { } m["rof"] = { } m["rog"] = { } m["rol"] = { } m["rom"] = { aliases = {"ยิปซี", "Romani", "Gypsy"}, } m["roo"] = { } m["rop"] = { aliases = {"Kriol"}, } m["ror"] = { } m["rou"] = { } m["row"] = { } m["rpn"] = { } m["rpt"] = { } m["rri"] = { } m["rro"] = { } m["rrt"] = { } m["rsb"] = { } m["rsl"] = { aliases = {"Russian Sign Language"}, } m["rsk"] = { aliases = {"พันโนเนีย", "Pannonian Rusyn", "Pannonian", "Rusyn", "Ruthenian"}, } m["rsm"] = { } m["rtc"] = { other_names = {"Rungtu Chin", "Thaungtha"}, } m["rth"] = { } m["rtm"] = { } m["rtw"] = { } m["rub"] = { } m["ruc"] = { } m["rue"] = { aliases = {"คาร์พาเทีย", "Carpathian Rusyn", "Carpathian", "Rusyn", "Ruthenian", "Carpatho-Rusyn"}, } m["ruf"] = { } m["rug"] = { } m["ruh"] = { } m["rui"] = { } m["ruk"] = { } m["ruo"] = { aliases = {"Istro-Romanian"}, } m["rup"] = { } m["ruq"] = { } m["rut"] = { } m["ruu"] = { } m["ruy"] = { other_names = {"Mala"}, } m["ruz"] = { } m["rwa"] = { } m["rwk"] = { } m["rwm"] = { } m["rwo"] = { } m["rxd"] = { } m["rxw"] = { } m["ryn"] = { aliases = {"Northern Amami-Oshima"}, } m["rys"] = { aliases = {"Yaeyama"}, } m["ryu"] = { aliases = {"Okinawan"}, } m["rzh"] = { other_names = {"Rāziḥī", "Jabal Razih"}, } return m 0ole6vj0w9n1h4ishxka7yba4kt37hz มอดูล:es-verb 828 314624 5729353 5713274 2026-07-20T07:29:55Z Octahedron80 267 5729353 Scribunto text/plain local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2sv" (present subjunctive second-person singular voseo form) "impf_sub_ra_3p" (imperfect subjunctive -ra form third-person plural), "imp_1p_comb_lo" (imperative first-person plural combined with clitic [[lo]]). Each slot is filled with zero or more forms. -- "form" = The conjugated Spanish form representing the value of a given slot. -- "lemma" = The dictionary form of a given Spanish term. For Spanish, always the infinitive. ]=] --[=[ FIXME: 1. Implement no_pres_stressed for aterir, garantir. (NOTE: Per RAE, garantir used in all forms in Argentina/Uruguay.) [DONE] 2. Support concluyo. [DONE] 3. Fixes for veo -> ve vs. preveo -> prevé. [DONE] 4. Various more irregular verbs, e.g. predecir, redecir, bendecir, maldecir. [DONE] 5. Raising of e -> i, o -> u before -iendo, -ió, etc. occurs only in -ir verbs. [DONE] 6. Raising of e -> i, o -> u happens before subjunctive -amos, -áis in -ir verbs. [DONE] 7. Implement reflexive verbs. [DONE] 8. Implement categories. [DONE] 9. Implement show_forms. [DONE] 10. Reconcile stems.vowel_alt from irregular verbs with vowel_alt from indicators. May require moving the irregular-verb handling code in construct_stems() into detect_indicator_spec(). [DONE] 11. Implement make_table. [DONE] 12. Vowel alternation should show u-ue (jugar), i-ie (adquirir), e-í (reír) alternations specially. [DONE] 13. Handle linking of multiword forms as is done in [[Module:es-headword]]. [DONE] 14. Implement comparison against previous module. [DONE] 15. Implement categorization of irregularities for individual tenses. 16. Support nocomb=1. [DONE] 17. (Possibly) display irregular forms in a different color, as with the old module. 18. (Possibly) display a "rule" description indicating the types of alternations. 19. Implement replace_reflexive_indicators(). [NOT DONE; SUPPORT REMOVED] 20. Implement verbs with attached clitics e.g. [[pasarlo]], [[corrérsela]]. [DONE] 21. When footnote + tú/vos notation, add a space before tú/vos. 22. Fix [[erguir]] so ie-i vowel alternation produces ye- at beginning of word, similarly for errar. Also allow multiple vowel alternation specs in irregular verbs, for errar. Finally, ie should show as e-ye for errar and as e-ye-i for erguir. [DONE] 23. Figure out why red links in combined forms show up as black not red. 24. Consider including alternative superseded forms of verbs like [[ciar]] (e.g. pret_3s = cio, ció with footnote). 25. Allow conjugation of suffixes e.g. -ir, -ecer; need to fix in [[Module:inflection utilities]]. [DONE] 26. Allow specification of stems esp. so that footnotes can be hung off them; use + for the default. 27. Don't remove monosyllabic accents when conjugating suffixes. [DONE] 28. If multiword expression with no <>, add <> after first word, as with [[Module:es-headword]]. [DONE] 29. (Possibly) link the parts of a reflexive or cliticized infinitive, as done in [[Module:es-headword]]. [DONE] 30. Final fixes to allow [[Module:es-headword]] to use this module. [DONE] --]=] local lang = require("Module:languages").getByCode("es") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local com = require("Module:es-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsub = com.rsub local function link_term(term) return m_links.full_link({ lang = lang, term = term }, "term") end local V = com.V -- vowel regex class local AV = com.AV -- accented vowel regex class local C = com.C -- consonant regex class local fut_sub_note = "[ส่วนใหญ่เลิกใช้ ปัจจุบันใช้ในภาษากฎหมายเป็นหลัก]" local pres_sub_voseo_note = "[" .. link_term("voseo") .. " ในอาร์เจนตินาและอุรุกวัย นิยมใช้รูป " .. link_term("tú") .. " สำหรับมาลาสมมุติปัจจุบันกาล]" local vowel_alternants = m_table.listToSet({"ie", "ie-i", "ye", "ye-i", "ue", "ue-u", "hue", "i", "í", "ú", "+"}) local vowel_alternant_to_desc = { ["ie"] = "e-ie", ["ie-i"] = "e-ie-i", ["ye"] = "e-ye", ["ye-i"] = "e-ye-i", ["ue"] = "o-ue", ["ue-u"] = "o-ue-u", ["hue"] = "o-hue", ["i"] = "e-i", ["í"] = "i-í", ["ú"] = "u-ú", } local raise_vowel = {["e"] = "i", ["o"] = "u"} local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["2sv"] = "2|s|voseo", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list_basic = {"1s", "2s", "3s", "1p", "2p", "3p"} local person_number_list_voseo = {"1s", "2s", "2sv", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "2sv", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} person_number_to_reflexive_pronoun = { ["1s"] = "me", ["2s"] = "te", ["2sv"] = "te", ["3s"] = "se", ["1p"] = "nos", ["2p"] = "os", ["3p"] = "se", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "no_pres1_and_sub", "only3s", "only3sp", "only3p", "no_built_in", } -- Initialize all the slots for which we generate forms. The particular slots may depend on whether we're generating -- combined slots (`not alternant_multiword_spec.nocomb`, which is always false if we're dealing with a verb with an -- attached clitic, such as [[hincarla]], or a reflexive or partly-reflexive verb, where a partly-reflexive verb is -- a conjoined term made up of two or more verbs, where some but not all are reflexive). It may also depend on whether -- we're being requested to generate some double-combined forms, such as [[llevándoselo]]; see the comment below for -- `verb_slot_double_combined_rows`. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the combined-form table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Slots that go into the combined-form table, along with double-combined slots (e.g. [[llevándoselo]]) that are -- requested for use with {{es-verb form of}}. alternant_multiword_spec.verb_slots_combined = {} -- Special slots used to handle non-reflexive parts of reflexive verbs in {{es-verb form of}}. -- For example, for a reflexive-only verb like [[jambarse]], we want to be able to use {{es-verb form of}} on -- [[jambe]] (which should mention that it is a part of 'me jambe', first-person singular present subjunctive, and -- 'se jambe', third-person singular present subjunctive) or on [[jambamos]] (which should mention that it is a -- part of 'nos jambamos', first-person plural present indicative or preterite). Similarly, we want to use -- {{es-verb form of}} on [[jambando]] (which should mention that it is a part of 'se ... jambando', syntactic -- variant of [[jambándose]], which is the gerund of [[jambarse]]). To do this, we need to be able to map -- non-reflexive parts like [[jambe]], [[jambamos]], [[jambando]], etc. to their reflexive equivalent(s), to the -- tag(s) of the equivalent(s), and, in the case of forms like [[jambando]], [[jambar]] and imperatives, to the -- separated syntactic variant of the verb+clitic combination. We do this by creating slots for the non-reflexive -- part equivalent of each basic reflexive slot, and for the separated syntactic-variant equivalent of each basic -- reflexive slot that is formed of verb+clitic. We use slots in this way to deal with multiword lemmas. Note that -- we run into difficulties mapping between reflexive verbs, non-reflexive part equivalents, and separated syntactic -- variants if a slot contains more than one form. To handle this, if there are the same number of forms in two -- slots we're trying to match up, we assume the forms match one-to-one; otherwise we don't match up the two slots -- (which means {{es-verb form of}} won't work in this case, but such a case is extremely rare and not worth -- worrying about). Alternatives that handle this "properly" are significantly more complicated and require -- non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "es-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- For generating combined forms, i.e. combinations of a basic form (specifically, infinitive, gerund or an -- imperative form) with a clitic (or in some cases, two clitics). This is a list of lists of the form -- {BASIC_SLOT, CLITICS} where BASIC_SLOT is the slot to add the clitic pronouns to (e.g. "gerund" or "imp_2s") -- and CLITICS is a list of the clitic pronouns to add. alternant_multiword_spec.verb_slot_combined_rows = {} -- For generating double combined forms (e.g. [[llevándoselo]] or [[dámela]]). This is used by {{es-verb form of}} -- when it detects that it is being requested to find the inflection tags for a double-combined form. The number of -- double-combined forms is relatively large, so to optimize this, [[Module:es-inflections]] (which implements -- {{es-verb form of}}) detects which two clitics are involved, and we only generate double-combined forms -- involving those two clitics; this is specified using `double_combined_forms_to_include`, passed into -- do_generate_forms(). The value of this field is a list of lists of the form {SINGLE_COMB_SLOT, CLITICS} where -- SINGLE_COMB_SLOT is the single-combined slot to add the object clitic pronouns to (e.g. "gerund_comb_se" or -- "imp_2s_comb_me") and CLITICS is a list of the clitic pronouns to add. CLITICS will normally be a length-one -- list whose value is one of {"lo", "la", "le", "los", "las", "les"}. alternant_multiword_spec.verb_slot_double_combined_rows = {} -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot, need_variant_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{es-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) if need_variant_slot then table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_variant", "-"}) end end end end add_basic_personal_slot("pres", "pres|ind", person_number_list_voseo) add_basic_personal_slot("impf", "impf|ind", person_number_list_basic) add_basic_personal_slot("pret", "pret|ind", person_number_list_basic) add_basic_personal_slot("fut", "fut|ind", person_number_list_basic) add_basic_personal_slot("cond", "cond", person_number_list_basic) add_basic_personal_slot("pres_sub", "pres|sub", person_number_list_voseo) add_basic_personal_slot("impf_sub_ra", "impf|sub", person_number_list_basic) add_basic_personal_slot("impf_sub_se", "impf|sub", person_number_list_basic) add_basic_personal_slot("fut_sub", "fut|sub", person_number_list_basic) -- Need variant slots because the imperative clitics are suffixed. add_basic_personal_slot("imp", "imp", imp_person_number_list, nil, "need variant slot") -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'no' + subjunctive. add_basic_personal_slot("neg_imp", "neg|imp", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[jambando]] mapping to [[jambándome]] -- (only [[jambándose]]) or [[jambar]] mapping to [[jambarme]] (only [[jambarse]]). add_basic_personal_slot("infinitive", "inf", person_number_list_basic, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list_basic, "no special verb form of") local third_person_object_clitics = {"lo", "la", "le", "los", "las", "les"} -- Add combined-form slots. if not alternant_multiword_spec.nocomb then -- Add a row of slots representing the combination of a basic slot with a clitic. `basic_slot` is the basic slot -- descriptor, `tag_prefix` is a string describing the inflection tags of the basic slot, and `personal_clitics` -- is a list of the personal clitics ("me", "te", "se", "nos" or "os") to add to the basic slot. local function add_combined_slot_row(basic_slot, tag_prefix, personal_clitics) -- First, add each individual combined slot to `verb_slots_combined`. local clitics_with_object = m_table.append(personal_clitics, third_person_object_clitics) for _, clitic in ipairs(clitics_with_object) do local slot = basic_slot .. "_comb_" .. clitic -- You have to pass this through full_link() to get a Spanish-specific link local accel = tag_prefix .. "|combined with [[" .. clitic .. "]]" table.insert(alternant_multiword_spec.verb_slots_combined, {slot, accel}) end -- Also, add the row to `verb_slot_combined_rows`. table.insert(alternant_multiword_spec.verb_slot_combined_rows, {basic_slot, clitics_with_object}) -- Also do double-combined forms for a specific set of clitics, if requested. See the comment above -- `verb_slot_double_combined_rows` above. if alternant_multiword_spec.double_combined_forms_to_include then for _, personal_clitic in ipairs(personal_clitics) do for _, object_clitic in ipairs(third_person_object_clitics) do for _, form_to_include in ipairs(alternant_multiword_spec.double_combined_forms_to_include) do local to_include_personal_clitic, to_include_object_clitic = unpack(form_to_include) if personal_clitic == to_include_personal_clitic and object_clitic == to_include_object_clitic then local single_comb_slot = basic_slot .. "_comb_" .. personal_clitic local slot = single_comb_slot .. "_" .. object_clitic local accel = tag_prefix .. "|combined with [[" .. personal_clitic .. "]] and [[" .. object_clitic .. "]]" table.insert(alternant_multiword_spec.verb_slots_combined, {slot, accel}) table.insert(alternant_multiword_spec.verb_slot_double_combined_rows, {single_comb_slot, {object_clitic}}) break end end end end end end add_combined_slot_row("infinitive", "inf", {"me", "te", "se", "nos", "os"}) add_combined_slot_row("gerund", "gerund", {"me", "te", "se", "nos", "os"}) local function add_combined_imp_slot_row(persnum, personal_clitics) add_combined_slot_row("imp_" .. persnum, all_persons_numbers[persnum] .. "|imp", personal_clitics) end add_combined_imp_slot_row("2s", {"me", "te", "nos"}) add_combined_imp_slot_row("2sv", {"me", "te", "nos"}) add_combined_imp_slot_row("3s", {"me", "se", "nos"}) add_combined_imp_slot_row("1p", {"te", "nos", "os"}) add_combined_imp_slot_row("2p", {"me", "nos", "os"}) add_combined_imp_slot_row("3p", {"me", "se", "nos"}) end -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_combined) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end alternant_multiword_spec.verb_slots_combined_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_combined) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_combined_map[slot] = accel end end -- Return true if `form` is accented and is likely monosyllabic. Used in remove_monosyllabic_accents(); if true, we -- run the syllabification algorithm to determine the syllable count, and if monosyllabic, remove the accent. Also used -- in conjunction with user-specified form overrides to add an asterisk to prevent accents from being removed. local function may_need_monosyllabic_accent_removed(form) return not rfind(form, "^%-") and rfind(form, AV) and not rfind(form, V .. C .. V) end local overridable_stems = {} -- If `add_monosyllabic_asterisk` is given, add a * to accented forms that may be monosyllabic to prevent the accent -- from being removed in remove_monosyllabic_accents(). local function allow_multiple_values_for_override(separated_groups, data, add_monosyllabic_asterisk) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local form = separated_group[1] if add_monosyllabic_asterisk and may_need_monosyllabic_accent_removed(form) then form = form .. "*" end -- Add suppress_prefix to prevent the built-in verb prefix from being added to the override. local retval = {form = form, footnotes = footnotes, suppress_prefix = true} table.insert(retvals, retval) end return retvals end local function simple_choice(choices) return function(separated_groups, data) if #separated_groups > 1 then data.parse_err("For spec '" .. data.prefix .. ":', only one value currently allowed") end if #separated_groups[1] > 1 then data.parse_err("For spec '" .. data.prefix .. ":', no footnotes currently allowed") end local choice = separated_groups[1][1] if not m_table.contains(choices, choice) then data.parse_err("For spec '" .. data.prefix .. ":', saw value '" .. choice .. "' but expected one of '" .. table.concat(choices, ",") .. "'") end return choice end end for _, overridable_stem in ipairs { "pres_unstressed", "pres_stressed", "pres1_and_sub", -- Don't include pres1; use pres_1s if you need to override just that form "impf", "full_impf", "pret", {"pret_conj", simple_choice({"irreg", "ar", "er", "ir"}) }, "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", "impf_sub_ra", "impf_sub_se", "fut_sub", "pp", } do if type(overridable_stem) == "string" then overridable_stems[overridable_stem] = allow_multiple_values_for_override else local stem, validator = unpack(overridable_stem) overridable_stems[stem] = validator end end local function match_against_verbs(ref_verb, prefixes) return function(verb) for _, prefix in ipairs(prefixes) do if verb == prefix .. ref_verb then return prefix, ref_verb end end return nil end end --[=[ Special cases for verbs: diluviar, atardecer: impersonal; all finite non-3s forms are nonexistent or hypothetical. Handle using '.only3s'. empecer, atañer, concernir: all finite non-third-person forms are nonexistent or hypothetical. Handle using '.only3sp'. desnacer: Former module claimed an irregular past participle 'desnato'. Verb is not in RAE at all and barely exists; unlikely to have irregular past participle. desposeer: Former module claimed an irregular past participle 'desposeso'. Not per RAE. valer: Former module claimed an irregular imperative 'val'. Not per RAE. manumitir: Former module claimed an irregular past participle 'manumiso'. Not per RAE. raer: Former module claimed a pres 1sg rao. Not per RAE. rehuir: Handle using +ú. sustituir: Former module claimed an irregular past participle 'sustituto'. Not per RAE. venir: Former module claimed an irregular clitic combination ven + nos -> venos. Not per native speakers. --------- Verbs to check: rehuir (+ú), prohibir (+í), reunir (+ú) --------- -ir verbs: There are several types of vowel alternations: 1. No alternation. Includes some verbs in -e- and -o-, e.g. aterir(se) (no_pres_stressed), tra(n)sgredir (pres_stressed forms rare), abolir (pres_stressed forms rare), colorir (no_pres_stressed), sumergir, divergir, convergir, arrecir (no_pres_stressed), rostir, polir (obsolete), condir (obsolete), possibly ascondir (obsolete), atordir (obsolete), sacodir (obsolete), sobrevendir (possible misspelling), empedernir (no_pres_stressed), decebir (obsolete; possibly actually like concebir, i.e. decibo not decebo), premir (obsolete), expremir (obsolete), exir (obsolete), escreuir (obsolete; fix conjugation), escrebir (obsolete), agredir; sometimes the stressed forms are rare or disused. (Also embaír, desvaír are no_pres_stressed.) 2a. ie: Infinitive has -e-, changing to -ie- when stressed. No raising before i+V. Only hendir, cernir, discernir, concernir (only3sp); discernir -> discierno, discerniendo, discernió, discernamos. 2b. ye: Infinitive has -e-, changing to -ye- when stressed. No raising before i+V. Does not occur (cf. errar). 3a. ie-i: Infinitive has -e- or -i-, changing to -ie- when stressed. Raising before i+V and 1p/2p pres subjunctive: sentir -> siento, sintiendo, sintió, sintamos. adquirir -> adquiero, adquiriendo, adquirió, adquiramos. 3b. ye-i: Infinitive has -e-, changing to -ye- when stressed. Raising before i+V and 1p/2p pres subjunctive. Only erguir: erguir -> yergo, irguiendo, irguió, irgamos. 4. i: Infinitive has -e-, changing to -i- when stressed. Raising before i+V and 1p/2p pres subjunctive: vestir -> visto, vistiendo, vistió, vistamos. Variant: ceñir -> ciño, ciñendo, ciñó, ciñamos. NOTE: preterir (no_pres_stressed). 5. ue-u: Infinitive has -o-, changing to -ue- when stressed. Raising before i+V and 1p/2p pres subjunctive: Only dormir, morir and compounds. dormir -> duermo, durmiendo, durmió, durmamos. 6. ue: This type would be parallel to 'ie' but doesn't appear to exist. --------- Verbs to fix (extra forms need to be excised or deleted): The above verbs under type (1) -ir vowel alternations; [[neviscar]] (impersonal), [[acaecer]] (third-person only), [[acontecer]] (third-person only), [[cellisquear]] (impersonal), [[pintear]] (impersonal? other meaning "to play hookey" given, not in RAE), [[diluviar]] (impersonal). [[desabrir]] (not like abrir, rare in pres_stressed/sub forms), [[jabrir]] (not like abrir). Verbs with existing errors: * [[abeldar]]: (missing <ie>) [FORMS TO DELETE] * [[acaecer]]: (used only in 3rd person) [DELETE ALL FIRST AND SECOND PERSON FORMS] * [[acontecer]]: (used only in 3rd person) [DELETE ALL FIRST AND SECOND PERSON FORMS] * [[anticuar]] (conjugated without ú) [FORMS TO DELETE] * [[antojar]]: (used only in 3rd person) [DELETE ALL FIRST AND SECOND PERSON FORMS] * [[aerografiar]]: (conjugated without í) [FORMS TO DELETE] * [[afiliar]]: (conjugated with í/+ should be only +) [FORMS TO DELETE] * [[agraviar]]: (wrongly has í) [FORMS TO DELETE] * [[arrecir]]: (not given as no_pres_stressed) [FORMS TO DELETE] * [[aserrar]]: (missing <ie>) [FORMS TO DELETE] * [[aspaventar]]: (missing <ie>) [OK] * [[atesar]]: (wrongly has ie) [FORMS TO DELETE] * [[avalentar]]: (wrongly has ie) [FORMS TO DELETE] * [[autorregularse]] (conjugated as non-reflexive) [OK] * [[auxiliar]]: (conjugated with í/+ should be only +) [FORMS TO DELETE] * [[balbucir]] (pres1_and_sub nonexistent) [DELETE PRES1_AND_SUB FORMS] * [[caçar]] (conjugated as -zar) [OK] * [[calefacer]] (extra form caleface) [FIX] * [[cellisquear]]: (used only in 3rd person singular) [DELETE ALL FIRST AND SECOND PERSON FORMS, ALL 3RD PLURAL FORMS AND ALL PP NON-MS FORMS] * [[chilenizar]] (conjugated with no cons alternation) [OK] * [[colorir]]: (not given as no_pres_stressed) [FORMS TO DELETE] * [[comisariar]] (conjugated without í) [FORMS TO DELETE] * [[complacer]] (missing complega in imperative 3s) [OK] * [[comprehender]] (conjugated as comprender) [OK] * [[decebir]] (was conjugated without <i>) [FORMS TO DELETE] * [[desafiliar]]: (conjugated with í/+ should be only +) [FORMS TO DELETE] * [[desagregar]] (conjugated with no cons alternation) [FORMS TO DELETE] * [[desairar]]: (conjugated with í should be only +) [FORMS TO DELETE] * [[descordar]]: (missing <ue>) [FORMS TO DELETE] * [[deseleccionar]] (conjugated as desseleccionar) [OK] * [[desestacionalizar]] (conjugated with no cons alternation) [FORMS TO DELETE] * [[desgonzar]] (conjugated with no cons alternation) [FORMS TO DELETE] * [[desguinzar]] (conjugated with no cons alternation) [FORMS TO DELETE] * [[deshacer]] (extra form deshace, desháceme etc.) [OK] * [[desnacer]] (extra form desnato etc.) [DELETE PP FORMS] * [[desposeer]] (extra form desposeso etc.) [DELETE PP FORMS] * [[dezmar]]: (wrongly has ie) [FORMS TO DELETE] * [[diluviar]]: (used only in 3rd person singular) [DELETE ALL FIRST AND SECOND PERSON FORMS, ALL 3RD PLURAL FORMS AND ALL PP NON-MS FORMS] * [[draftear]] (extraneous param lang=es) [REMOVE PARAM] * [[ejemplarizar]] (extraneous param compound=1) [compound -> combined] * [[ejercitar]] (extraneous param compound=1) [compound -> combined] * [[empecer]] (empezca has imperatives, 1s in its verb form entry) [FIX] * [[encentar]]: (wrongly has ie) [OK] * [[encubertar]]: (wrongly has ie) [FORMS TO DELETE] * [[entrechocar]] (conjugated with no cons alternation) [FORMS TO DELETE] * [[entredecir]] (imp_2s has entredice should be entredí; extra future/cond forms entredeciré etc.) [FORMS TO DELETE/FIX] * [[escenografiar]]: (conjugated without í) [FORMS TO DELETE] * [[estar]] (incorrect combined forms, e.g. éstela instead of estela) [OK] * [[extasiar]]: (conjugated with í/+ should be only í) [FORMS TO DELETE] * [[facer]] (extra form face, fáceme, etc.) [FIX] * [[ferrar]]: (missing <ie>) [FORMS TO DELETE] * [[gloriar]]: (conjugated with í/+ should be only í) [FORMS TO DELETE] * [[hacer]] (extra form hace, háceme, etc.) [DELETE hácete] * [[homogeneizar]] (extra form homogeneízo) [DELETE homogeneízo, homogeneízas, homogeneíza, homogeneízan, homogeneícen, homogeneícemos] * [[incensar]]: (missing <ie>) [FORMS TO DELETE] * [[ir]] (extraneous param aux=ser) [REMOVE PARAM] * [[jacer]] (extra form jace, jáceme, etc.) [FIX] * [[jarrear]] (extraneous param impersonal=yes) * [[litografiar]]: (conjugated without í) [FORMS TO DELETE] * [[manumitir]] (extra form manumiso, etc.) [FIX; is an adjective] * [[mecanografiar]]: (conjugated without í) [FORMS TO DELETE] * [[mordiscar]] (conjugated with no cons alternation) [FORMS TO DELETE] * [[neviscar]]: (used only in 3rd person singular) [DELETE ALL FIRST AND SECOND PERSON FORMS, ALL 3RD PLURAL FORMS AND ALL PP NON-MS FORMS] * [[obsipar]] (conjugated as obispar) [DELETE VERB] * [[obstar]]: (used only in 3rd person) [DELETE ALL FIRST AND SECOND PERSON FORMS] * [[orificar]] (conjugated as orificiar) [OK] * [[complacer]], [[placer]] (missing plega in imperative 3s, etc.) [OK] * [[prevaler]] (extra form preval, incorrect form prévalme etc.) [DELETE preval] * [[preterir]]: (not given as no_pres_stressed) [FORMS TO DELETE] * [[raer]] (extra form rao) [DELETE rao] * [[rebordar]] (extraneous param lang=es) [REMOVE PARAM] * [[redecir]] (incorrect imp_2s redice instead of redí) [FIX] * [[reinstitucionalizar]] (conjugated with no cons alternation) [FORMS TO DELETE] * [[reirse]] [DELETE] * [[serigrafiar]]: (conjugated without í) [FORMS TO DELETE] * [[sobresalir]] (incorrect combined forms e.g. sobrésalme) [OK] * [[superpoblar]] (missing <ue>) [FORMS TO DELETE] * [[sustituir]] (extra form sustituto, etc.) [OK] * [[usucapir]]: (used only in inf and pp) [DELETE ALL FORMS BUT PP] * [[valefacer]] (extra form valeface) [FIX] * [[valer]] (extra form val, etc.) [OK] * LOTS OF COMBINED FORMS OF VERBS IN -iar, -uar, -ai-, -au-, -ei-, -eu-, etc. Example: afeitar (afeítate, afeítese, afeítense). Need a script to find them. * [[acostar]]: normally <ue> but in meaning "arrive at the coast", <> * [[adecuar]]: <+,ú> * [[aerografiar]]: <í> * [[aferrar]]: <+,ie[obsolete]> * [[afiliar]]: <> * [[aforar]]: in meaning "to gauge, to measure": <>; in meaning "otorgar fuero": <ue> * [[arrecir]]: <no_pres_stressed> * [[agraviar]]: <> * [[agriar]]: <í,+> * [[aserrar]]: <ie> * [[asolar]]: in meaning "destroy": <ue,+>; in meaning "to dry up": <> * [[aspaventar]]: <ie> * [[atentar]]: in meaning "to commit a crime" does not have vowel alt * [[atesar]]: <>; possibly <ie> in obsolete meaning "atiesar" * [[atestar]]: in meaning "to pack": <ie,+>; in meaning "testify": <> * [[autoevacuarse]]: <+,ú> * [[auxiliar]]: <> * [[avalentar]]: <> * [[cimentar]]: <ie,+> * [[colar]]: most meanings <ue> but "canonically confer (an ecclesiastical benefit)" <> * [[colorir]]: <no_pres_stressed> * [[comisariar]]: <í> * [[desafiliar]]: <> * [[desaforar]]: "to deprive of fuero": <ue,+[less common]> * [[desairar]]: <> * [[desolar]]: <ue,+> * [[desmembrar]]: <ie,+> * [[dezmar]]: <> * [[ejecutoriar]]: <í,+> * [[emparentar]]: <ie,+> * [[encentar]]: <> * [[encubertar]]: <> * [[engrosar]]: <ue,+> * [[escenografiar]]: <í> * [[evacuar]]: <+,ú> * [[expatriar]]: <í,+> * [[extasiar]]: <í> * [[ferrar]]: <ie> * [[follar]]: <ue> * [[gloriar]]: <í> * [[hibernar]]: no vowel alt or e-ie; e-ie not in RAE, ask about it * [[historiar]]: <í,+> * [[incensar]]: <ie> * [[invernar]]: <ie,+> * [[licuar]]: <+,ú> * [[litografiar]]: <í> * [[mecanografiar]]: <í> * [[paliar]]: <í,+> * [[preterir]]: <i.no_pres_stressed> * [[promiscuar]]: <+,ú> * [[readecuar]]: <+,ú> * [[repatriar]]: <í,+> * [[retrocar]]: <ue,+> * [[serigrafiar]]: <í> * [[soterrar]]: <ie,+> * [[superpoblar]]: <ue> * [[templar]]: <+,ie[in some parts of Latin America]> * [[vidriar]]: <í,+> Second round of verbs to fix: * [[apropriar]]: forms point to reflexive [FORMS TO FIX] * [[autogobernarse]]: (missing <ie>) [FORMS TO DELETE] * [[autorreproducirse]]: (wrongly had regular preterite and impf/fut sub) [FORMS TO DELETE] * [[aventarse]]: (missing <ie>) [FORMS TO DELETE] * [[aventar]]: forms point to reflexive [FORMS TO FIX] * [[culiar]]: yo culio or culío? [VERIFY] * [[desnacer]]: delete [[dasnatos]] * [[poseer]]: delete [[posesa]], [[posesos]], [[posesas]] * [[reproducir]]: (wrongly had regular preterite and impf/fut sub) [FORMS TO DELETE] * [[trasgredir]]: (wrongly had <i>) [FORMS TO DELETE] --------- Irregular conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the irregular verbs that match this object. 2. forms=: Specifies the irregular stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[andar]] and [[desandar]] but not [[mandar]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `vowel_alt`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/z, g/gu, gu/gü, g/j) occur automatically as appropriate for the ending. 2. Raising of e -> i, o -> u in -ir verbs before an ending beginning with i + vowel, as well as in the 1p/2p forms of the present subjunctive (dormir -> durmiendo, durmió, durmamos), are handled here. Raising happens only for -ir verbs and only when the stem setting `raising_conj` is true (which is normally set to true when vowel alternations `ie-i`, `ye-i`, `ue-u`, `i`, `í` or `ú` are specified). 3. Numerous modifications are automatically made before an ending beginning with i + vowel. These include: a. final -i of stem absorbed: sonreír -> sonrió, sonriera, sonriendo; b. in the preterite of irregular verbs (likewise for other tenses derived from the preterite stem, i.e. imperfect and and future subjunctive), initial i absorbed after j and u (dijeron not #dijieron, likewise for condujeron, trajeron; also fueron not #fuyeron). This happens only when stem setting `pret_conj` == "irreg"; this must be set explicitly by irregular verbs. Does not apply everywhere because of cases like regular [[tejer]] (tejieron not #tejeron), regular [[concluir]] (concluyeron not #conclueron). c. initial i of ending -> y after vowel and word-initially: poseer -> poseyó, poseyera, poseyendo; ir -> yendo; d. initial i of ending -> y after gü, which becomes gu: argüir -> arguyó, arguyera, arguyendo; e. initial i of ending absorbed after ñ, ll, y: tañer -> tañó, tañera, tañendo; bullir -> bulló, bullera, bullendo 4. If the ending begins with (h)i, it gets an accent after a/e/i/o to prevent the two merging into a diphthong: caer -> caíste, caímos; reír -> reíste, reímos (pres and pret). This does not apply after u, e.g. concluir -> concluiste, concluimos. 5. In -uir verbs (i.e. -ir verbs with stem ending in -u), a y is added before endings beginning with a/e/o: concluir -> concluyo, concluyen, concluya, concluyamos. Note that preterite concluyó, gerund concluyendo, etc. are handled by a different rule above (3b). The following stems are recognized: -- pres_unstressed: The present indicative unstressed stem (2s voseo, 1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem. -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1_and_sub: Overriding stem for 1s present indicative and the entire subjunctive. Only set by irregular verbs and by the indicator `no_pres_stressed` (since verbs of this sort, e.g. [[aterir]], are missing the entire subjunctive as well as the forms with stressed root). Used by many irregular verbs, e.g. [[caer]], [[roer]], [[salir]], [[tener]], [[valer]], [[venir]], etc. Some verbs set this and then supply an override for the pres_1sg if it's irregular, e.g. [[saber]], with irregular subjunctive stem "sep-" and special 1s present indicative "sé*" (the * indicates that the monosyllabic accent should not be removed). -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres1_and_sub if given, else pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p, also 2s voseo for -ar verbs). Defaults to pres1_and_sub if given, else the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p, also 2s voseo for -er/-ir verbs). Defaults to pres1. -- impf: The imperfect stem. Defaults to the infinitive stem. -- pret: The preterite stem. Defaults to the infinitive stem. -- pret_conj: Determines the set of endings used in the preterite. Should be one of "ar", "er", "ir" or "irreg". Defaults to the conjugation as determined from the infinitive. -- fut: The future stem. Defaults to the infinitive stem. -- cond: The conditional stem. Defaults to fut. -- impf_sub_ra: The imperfect subjunctive -ra stem. Defaults to the preterite stem. -- impf_sub_se: The imperfect subjunctive -se stem. Defaults to the preterite stem. -- fut_sub: The future subjunctive stem. Defaults to the preterite stem. -- pp: The past participle stem. Default is based on the verb conjugation: infinitive stem + "ad" for -ar verbs, otherwise infinitive stem + "id". ]=] local built_in_conjugations = { { -- andar, desandar -- we don't want to match e.g. mandar. match = match_against_verbs("andar", {"", "des"}), forms = {pret = "anduv", pret_conj = "irreg"} }, { -- asir, desasir match = "asir", -- use 'asgu' because we're in a front environment; if we use 'asg', we'll get '#asjo' forms = {pres1_and_sub = "asgu"} }, { -- abrir, cubrir and compounds match = function(verb) local prefix, base_verb = rmatch(verb, "^(.*)(brir)$") -- Only match abrir, cubrir and compounds, and don't match desabrir/jabrir if not prefix then return nil elseif not prefix:find("a$") and not prefix:find("cu$") then return nil elseif prefix == "desa" or prefix == "ja" then return nil else return prefix, base_verb end end, forms = {pp = "biert"} }, { match = "caber", forms = {pres1_and_sub = "quep", pret = "cup", pret_conj = "irreg", fut = "cabr"} }, { -- caer, decaer, descaer, recaer match = "caer", -- use 'caigu' because we're in a front environment; if we use 'caig', we'll get '#caijo' forms = {pres1_and_sub = "caigu"} }, { -- cocer, escocer, precocer, etc. match = "cocer", -- override cons_alt, otherwise the verb would be categorized as a c-zc alternating verb forms = {vowel_alt = "ue", pres1 = "cuez", pres_sub_unstressed = "coz", cons_alt = "c-z"}, -- not cozco, as would normally be generated }, { -- dar, desdar match = match_against_verbs("dar", {"", "des"}), forms = { -- we need to override various present indicative forms and add an accent for the compounds; -- not needed for the simplex and in fact the accents will be removed in that case pres_1s = "doy", pres_2s = "dás", pres_3s = "dá", pres_2p = "dáis", pres_3p = "dán", pret = "d", pret_conj = "er", pres_sub_1s = "dé*", -- * signals that the monosyllabic accent must remain pres_sub_2s = "dés", pres_sub_3s = "dé*", pres_sub_2p = "déis", pres_sub_3p = "dén", imp_2s = "dá", } }, { -- decir, redecir, entredecir match = match_against_verbs("decir", {"", "re", "entre"}), forms = { -- for this and variant verbs in -decir, we set cons_alt to false because we don't want the -- verb categorized as a c-zc alternating verb, which would happen by default -- use 'digu' because we're in a front environment; if we use 'dig', we'll get '#dijo' pres1_and_sub = "digu", vowel_alt = "i", cons_alt = false, pret = "dij", pret_conj = "irreg", pp = "dich", fut = "dir", imp_2s = "dí" -- need the accent for the compounds; it will be removed in the simplex } }, { -- antedecir, interdecir match = match_against_verbs("decir", {"ante", "inter"}), forms = { pres1_and_sub = "digu", vowel_alt = "i", cons_alt = false, pret = "dij", pret_conj = "irreg", pp = "dich", fut = "dir" -- imp_2s regular } }, { -- bendecir, maldecir match = match_against_verbs("decir", {"ben", "mal"}), forms = { pres1_and_sub = "digu", vowel_alt = "i", cons_alt = false, pret = "dij", pret_conj = "irreg", pp = {"decid", "dit"} -- imp_2s regular, fut regular } }, { -- condecir, contradecir, desdecir, predecir, others? match = "decir", forms = { pres1_and_sub = "digu", vowel_alt = "i", cons_alt = false, pret = "dij", pret_conj = "irreg", pp = "dich", fut = {"decir", "dir"} -- imp_2s regular } }, { -- conducir, producir, reducir, traducir, etc. match = "ducir", forms = {pret = "duj", pret_conj = "irreg"} }, { -- elegir, reelegir; not preelegir, per RAE match = match_against_verbs("elegir", {"", "re"}), forms = {vowel_alt = "i", pp = {"elegid", "elect"}} }, { -- erguir match = "^erguir", forms = { vowel_alt = {"i", "ye-i"}, -- We would not need to make this verb irregular except for the alternative unstressed present subjunctive forms -- in yerg-. We can't use pres_sub_unstressed = {"irgu", "yergu"} because the "i" and "ye-i" vowel alternations -- are e->i raising in the unstressed present subjunctive and we wrongly get irgamos/yirgamos etc. pres_sub_2sv = {"irgás", "yergás"}, pres_sub_1p = {"irgamos", "yergamos"}, pres_sub_2p = {"irgáis", "yergáis"}, }, }, { match = "^estar", forms = { pres_1s = "estoy", pres_2s = "estás", pres_2sv = "estás", pres_3s = "está", pres_3p = "están", pret = "estuv", pret_conj = "irreg", pres_sub_1s = "esté", pres_sub_2s = "estés", pres_sub_2sv = "estés", pres_sub_3s = "esté", pres_sub_3p = "estén", imp_2s = "está", imp_2sv = "está", } }, { -- freír, refreír match = "freír", forms = {vowel_alt = "í", pp = {"freíd", "frit"}} }, { match = "garantir", forms = { pres_stressed = {{form = "garant", footnotes = {"[only used in Argentina and Uruguay]"}}}, pres1_and_sub = {{form = "garant", footnotes = {"[only used in Argentina and Uruguay]"}}}, } }, { match = "^haber", forms = { pres_1s = "he", pres_2s = "has", pres_2sv = "has", pres_3s = {"ha", {form = "hay", footnotes = {"[used impersonally]"}}}, pres_1p = "hemos", pres_3p = "han", pres1_and_sub = "hay", -- only for subjunctive as we override pres_1s pret = "hub", pret_conj = "irreg", imp_2s = {"habe", "he"}, imp_2sv = {"habe", "he"}, fut = "habr", } }, { match = "satisfacer", forms = { -- see below for cons_alt setting and pres1_and_sub setting pres1_and_sub = "satisfagu", cons_alt = false, pret = "satisfic", pret_conj = "irreg", pp = "satisfech", fut = "satisfar", imp_2s = {"satisface", "satisfaz"} } }, { match = match_against_verbs("hacer", {"contra", "re"}), -- contrahacer/rehacer require an extra accent in the preterite (rehíce, rehízo). forms = { -- see below for cons_alt setting and pres1_and_sub setting pres1_and_sub = "hagu", cons_alt = false, pret = "hic", pret_1s = "híce", pret_3s = "hízo", pret_conj = "irreg", pp = "hech", fut = "har", imp_2s = "haz" } }, { -- hacer, deshacer, contrahacer, rehacer, facer, desfacer, jacer match = function(verb) return rmatch(verb, "^(.*[hjf])(acer)$") end, forms = { -- for these verbs, we set cons_alt to false because we don't want the verb categorized as a -- c-zc alternating verb, which would happen by default -- use 'agu' because we're in a front environment; if we use 'ag', we'll get '#hajo' pres1_and_sub = "agu", cons_alt = false, pret = "ic", pret_conj = "irreg", pp = "ech", fut = "ar", imp_2s = "az" } }, { -- imprimir, reimprimir match = "imprimir", forms = {pp = {"imprimid", "impres"}} }, { -- infecir match = "infecir", -- override cons_alt, otherwise the verb would be categorized as a c-zc alternating verb forms = {vowel_alt = "i", pres1 = "infiz", pres_sub_unstressed = "infez", cons_alt = "c-z"}, -- not infizco, as would normally be generated }, { match = "infecir", -- override cons_alt, otherwise the verb would be categorized as a c-zc alternating verb forms = {pres1_and_sub = "infez", cons_alt = "c-z"}, -- not mezco, as would normally be generated }, { match = "^ir", forms = { pres_1s = "voy", pres_2s = "vas", pres_2sv = "vas", pres_3s = "va", pres_1p = "vamos", pres_2p = "vais", pres_3p = "van", pres1_and_sub = "vay", -- only for subjunctive as we override pres_1s full_impf = "ib", impf_1p = "íbamos", pret = "fu", pret_conj = "irreg", -- this signals that fu + -ieron -> fueron not fuyeron pret_1s = "fui", pret_3s = "fue", imp_2s = "ve", imp_2sv = "andá", imp_1p = {"vamos", "vayamos"}, refl_imp_2p = {"idos", "iros"}, imp_2p_comb_os = {"idos", "iros"}, } }, { -- mecer, remecer -- we don't want to match e.g. adormecer, estremecer match = match_against_verbs("mecer", {"re", ""}), -- override cons_alt, otherwise the verb would be categorized as a c-zc alternating verb forms = {pres1_and_sub = "mez", cons_alt = "c-z"}, -- not mezco, as would normally be generated }, { -- morir, desmorir, premorir match = "morir", forms = {vowel_alt = "ue-u", pp = "muert"}, }, { -- oír, desoír, entreoír, trasoír match = "oír", -- use 'oigu' because we're in a front environment; if we use 'oig', we'll get '#oijo' forms = {pres1_and_sub = "oigu"} }, { match = "olver", -- solver, volver, bolver and derivatives forms = {vowel_alt = "ue", pp = "uelt"} }, { -- placer, desplacer match = "placer", forms = { pret_3s = {"plació", {form = "plugo", footnotes = {"[archaic]"}}}, pret_3p = {"placieron", {form = "pluguieron", footnotes = {"[archaic]"}}}, pres_sub_3s = {"plazca", {form = "plega", footnotes = {"[archaic]"}}, {form = "plegue", footnotes = {"[archaic]"}}}, impf_sub_ra_3s = {"placiera", {form = "pluguiera", footnotes = {"[archaic]"}}}, impf_sub_ra_3p = {"placieran", {form = "pluguieran", footnotes = {"[archaic]"}}}, impf_sub_se_3s = {"placiese", {form = "pluguiese", footnotes = {"[archaic]"}}}, impf_sub_se_3p = {"placiesen", {form = "pluguiesen", footnotes = {"[archaic]"}}}, fut_sub_3s = {"placiere", {form = "pluguiere", footnotes = {"[archaic]"}}}, fut_sub_3p = {"placieren", {form = "pluguieren", footnotes = {"[archaic]"}}}, } }, { match = "poder", forms = {vowel_alt = "ue", pret = "pud", pret_conj = "irreg", fut = "podr", gerund = "pudiendo"} }, { -- poner, componer, deponer, imponer, oponer, suponer, many others match = "poner", forms = { -- use 'pongu' because we're in a front environment; if we use 'pong', we'll get '#ponjo' pres1_and_sub = "pongu", pret = "pus", pret_conj = "irreg", fut = "pondr", pp = "puest", imp_2s = "pón" -- need the accent for the compounds; it will be removed in the simplex } }, { -- proveer, desproveer match = "proveer", forms = {pp = {"proveíd", "provist"}}, }, { match = "pudrir", forms = {pp = "podrid"} }, { -- querer, desquerer, malquerer match = "querer", forms = {vowel_alt = "ie", pret = "quis", pret_conj = "irreg", fut = "querr"} }, { match = "^raer", -- use 'raigu' because we're in a front environment; if we use 'raig', we'll get '#raijo' forms = {pres1_and_sub = {"raigu", "ray"}} }, { -- roer, corroer match = "roer", -- use 'roigu' because we're in a front environment; if we use 'roig', we'll get '#roijo' forms = {pres1_and_sub = {"ro", "roigu", "roy"}} }, { -- romper, entrerromper, arromper, derromper; not corromper; FIXME: not sure about interromper (obsolete) match = function(verb) local prefix, base_verb = rmatch(verb, "^(.*)(romper)$") -- Don't match corromper if prefix == "cor" then return nil else return prefix, base_verb end end, forms = {pp = "rot"} }, { -- saber, resaber match = "saber", forms = { pres_1s = "sé*", -- * signals that the monosyllabic accent must remain pres1_and_sub = "sep", -- only for subjunctive as we override pres_1s pret = "sup", pret_conj = "irreg", fut = "sabr", } }, { match = "salir", forms = { -- use 'salgu' because we're in a front environment; if we use 'salg', we'll get '#saljo' pres1_and_sub = "salgu", fut = "saldr", imp_2s = "sal", -- These don't exist per the RAE. imp_2s_comb_lo = {}, imp_2s_comb_los = {}, imp_2s_comb_la = {}, imp_2s_comb_las = {}, imp_2s_comb_le = {}, imp_2s_comb_les = {}, }, }, { match = "scribir", -- escribir, describir, proscribir, etc. forms = {pp = {"scrit", {form = "script", footnotes = {"[Argentina and Uruguay]"}}}} }, { match = "^ser", forms = { pres_1s = "soy", pres_2s = "eres", pres_2sv = "sos", pres_3s = "es", pres_1p = "somos", pres_2p = "sois", pres_3p = "son", pres1_and_sub = "se", -- only for subjunctive as we override pres_1s full_impf = "er", impf_1p = "éramos", pret = "fu", pret_conj = "irreg", -- this signals that fu + -ieron -> fueron not fuyeron pret_1s = "fui", pret_3s = "fue", fut = "ser", imp_2s = "sé*", -- * signals that the monosyllabic accent must remain imp_2sv = "sé*", } }, { match = "^soler", forms = { vowel_alt = "ue", fut = {{form = "soler", footnotes = {"[rare but acceptable]"}}}, fut_sub = {{form = "sol", footnotes = {"[rare but acceptable]"}}}, pp = {{form = "solid", footnotes = {"[rare but acceptable]"}}}, } }, { -- tener, abstener, contener, detener, obtener, sostener, and many others match = "tener", forms = { -- use 'tengu' because we're in a front environment; if we use 'teng', we'll get '#tenjo' pres1_and_sub = "tengu", vowel_alt = "ie", pret = "tuv", pret_conj = "irreg", fut = "tendr", imp_2s = "tén" -- need the accent for the compounds; it will be removed in the simplex } }, { -- traer, atraer, detraer, distraer, extraer, sustraer, and many others match = "traer", -- use 'traigu' because we're in a front environment; if we use 'traig', we'll get '#traijo' forms = {pres1_and_sub = "traigu", pret = "traj", pret_conj = "irreg"} }, { -- valer, equivaler, prevaler match = "valer", -- use 'valgu' because we're in a front environment; if we use 'valg', we'll get '#valjo' forms = {pres1_and_sub = "valgu", fut = "valdr"} }, { match = "venir", forms = { -- use 'vengu' because we're in a front environment; if we use 'veng', we'll get '#venjo' pres1_and_sub = "vengu", vowel_alt = "ie-i", pret = "vin", pret_conj = "irreg", -- uniquely for this verb, pres sub 2sv/1p/2p do not raise the vowel even though we are an -- e-ie-i verb (contrast sentir -> sintamos/sintáis) pres_sub_2sv = "vengás", pres_sub_1p = "vengamos", pres_sub_2p = "vengáis", fut = "vendr", imp_2s = "vén" -- need the accent for the compounds; it will be removed in the simplex } }, { -- We want to match antever etc. but not atrever etc. No way to avoid listing each verb. match = match_against_verbs("ver", {"ante", "entre", "pre", "re", ""}), forms = { -- we need to override various present indicative forms and add an accent for the compounds; -- not needed for the simplex and in fact the accents will be removed in that case pres_2s = "vés", pres_2sv = "vés", pres_3s = "vé", pres_2p = "véis", pres_3p = "vén", pres1_and_sub = "ve", impf = "ve", pp = "vist", imp_2s = "vé" -- need the accent for the compounds; it will be removed in the simplex } }, { -- yacer, adyacer, subyacer match = "yacer", -- use 'yazqu/yazgu/yagu' because we're in a front environment; see 'decir' above forms = {pres1_and_sub = {"yazqu", "yazgu", "yagu"}, imp_2s = {"yace", "yaz"}} }, } local reflexive_masc_forms = { ["su"] = {"mi", "tu", "su", "nuestro", "vuestro", "su"}, ["sus"] = {"mis", "tus", "sus", "nuestros", "vuestros", "sus"}, ["sí"] = {"mí", "ti", "sí", "nosotros", "vosotros", "sí"}, ["consigo"] = {"conmigo", "contigo", "consigo", "con nosotros", "con vosotros", "consigo"}, } local reflexive_fem_forms = { ["su"] = {"mi", "tu", "su", "nuestra", "vuestra", "su"}, ["sus"] = {"mis", "tus", "sus", "nuestras", "vuestras", "sus"}, ["sí"] = {"mí", "ti", "sí", "nosotras", "vosotras", "sí"}, ["consigo"] = {"conmigo", "contigo", "consigo", "con nosotras", "con vosotras", "consigo"}, } local reflexive_forms = { ["se"] = {"me", "te", "se", "nos", "os", "se"}, ["suyo"] = {"mío", "tuyo", "suyo", "nuestro", "vuestro", "suyo"}, ["suya"] = {"mía", "tuya", "suya", "nuestra", "vuestra", "suya"}, ["suyos"] = {"míos", "tuyos", "suyos", "nuestros", "vuestros", "suyos"}, ["suyas"] = {"mías", "tuyas", "suyas", "nuestras", "vuestras", "suyas"}, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.combined_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end -- Add the `stem` to the `ending` for the given `slot` and apply any phonetic modifications. -- `is_combining_ending` is true if `ending` is actually the ending (this function is also -- called to combine prefix + stem). WARNING: This function is written very carefully; changes -- to it can easily have unintended consequences. local function combine_stem_ending(base, slot, stem, ending, is_combining_ending) if not is_combining_ending then return stem .. ending end if base.stems.raising_conj and (rfind(ending, "^i" .. V) or slot == "pres_sub_1p" or slot == "pres_sub_2p" or slot == "pres_sub_2sv") then -- need to raise e -> i, o -> u: dormir -> durmió, durmiera, durmiendo, durmamos stem = rsub(stem, "([eo])(" .. C .. "*)$", function(vowel, rest) return raise_vowel[vowel] .. rest end) -- also with stem ending in -gu or -qu (e.g. erguir -> irguió, irguiera, irguiendo, irgamos) stem = rsub(stem, "([eo])(" .. C .. "*[gq]u)$", function(vowel, rest) return raise_vowel[vowel] .. rest end) end -- Lots of sound changes involving endings beginning with i + vowel if rfind(ending, "^i" .. V) then -- (1) final -i of stem absorbed: sonreír -> sonrió, sonriera, sonriendo; note that this rule may be fed -- by the preceding one (stem sonre- raised to sonri-, then final i absorbed) stem = stem:gsub("i$", "") -- (2) In the preterite of irregular verbs (likewise for other tenses derived from the preterite stem, i.e. -- imperfect and future subjunctive), initial i absorbed after j (dijeron not #dijieron, likewise for -- condujeron, trajeron) and u (fueron not #fuyeron). Does not apply in regular verb tejer (tejieron not -- #tejeron) and concluir (concluyeron not #conclueron). if base.stems.pret_conj == "irreg" and rfind(stem, "[ju]$") then ending = ending:gsub("^i", "") end -- (3) initial i -> y after vowel and word-initially: poseer -> poseyó, poseyera, poseyendo; -- concluir -> concluyó, concluyera, concluyendo; ir -> yendo; but not conseguir/delinquir if stem == "" or (rfind(stem, V .. "$") and not rfind(stem, "[gq]u$")) then ending = ending:gsub("^i", "y") end -- (4) -gü + ie- -> -guye-: argüir -> arguyó, arguyera, arguyendo if stem:find("gü$") then -- transfer the y to the stem to avoid gü -> gu below in front/back conversions stem = stem:gsub("ü$", "uy") ending = ending:gsub("^i", "") end -- (5) initial i absorbed after ñ, ll, y: tañer -> tañó, tañera, tañendo; bullir -> bulló, bullera, bullendo if rfind(stem, "[ñy]$") or rfind(stem, "ll$") then ending = ending:gsub("^i", "") end end -- If ending begins with i, it must get an accent after a/e/i/o to prevent the two merging into a diphthong: -- caer -> caíste, caímos; reír -> reíste, reímos (pres and pret). This does not apply after u, e.g. -- concluir -> concluiste, concluimos. if ending:find("^i") and stem:find("[aeio]$") then ending = ending:gsub("^i", "í") end -- If -oír/-uir (i.e. -ir with stem ending in -o/u, e.g. oír, concluir), a y must be added before endings -- beginning with a/e/o. Check for base.stems.pret_conj == "irreg" to exclude stem fu- of [[ir]]. if base.conj == "ir" and rfind(ending, "^[aeoáéó]") and base.stems.pret_conj ~= "irreg" then if rfind(stem, "[oú]$") then -- oír -> oye, rehuir -> rehúyo/rehúye (with indicator 'ú') stem = stem .. "y" elseif rfind(stem, "[^gq]u$") then -- concluir, but not conseguir or delinquir stem = stem .. "y" elseif stem:find("ü$") then -- argüir -> arguyendo stem = stem:gsub("ü$", "uy") end end -- Spelling changes in the stem; it depends on whether the stem given is the pre-front-vowel or -- pre-back-vowel variant, as indicated by `frontback`. We want these front-back spelling changes to happen -- between stem and ending, not between prefix and stem; the prefix may not have the same "front/backness" -- as the stem. local is_front = rfind(ending, "^[eiéí]") if base.frontback == "front" and not is_front then -- parecer -> parezco, conducir -> conduzco; use zqu to avoid triggering the following gsub(); -- the third line will replace zqu -> zc if slot ~= "pret_3s" then -- exclude hice -> hizo (not #hizco) stem = rsub(stem, "(" .. V .. ")c$", "%1zqu") end stem = stem:gsub("sc$", "squ") -- evanescer -> evanesco, fosforescer -> fosforesco stem = stem:gsub("c$", "z") -- ejercer -> ejerzo, uncir -> unzo stem = stem:gsub("qu$", "c") -- delinquir -> delinco, parecer -> parezqu- -> parezco stem = stem:gsub("g$", "j") -- coger -> cojo, afligir -> aflijo stem = stem:gsub("gu$", "g") -- distinguir -> distingo stem = stem:gsub("gü$", "gu") -- may not occur; argüir -> arguyo handled above elseif base.frontback == "back" and is_front then stem = stem:gsub("gu$", "gü") -- averiguar -> averigüé stem = stem:gsub("g$", "gu") -- cargar -> cargué stem = stem:gsub("c$", "qu") -- marcar -> marqué stem = rsub(stem, "[çz]$", "c") -- aderezar/adereçar -> aderecé end return stem .. ending end local function check_stems_for_suppress_prefix(slot, stems) -- Check whether any or all stems have `suppress_prefix`. local any_suppress_prefix = false local any_not_suppress_prefix = false if type(stems) == "table" then if stems.suppress_prefix then -- A single form object. any_suppress_prefix = true else for _, stem in ipairs(stems) do if type(stem) == "table" and stem.suppress_prefix then any_suppress_prefix = true else any_not_suppress_prefix = true end end end else any_not_suppress_prefix = true end if any_suppress_prefix and any_not_suppress_prefix then -- This should never happen because suppress_prefix is set on user-specified stem and individual form -- overrides, which should completely replace built-in overrides (which don't have suppress_prefix). error("Internal error: For slot '" .. slot .. ", saw a mixture of suppress-prefix and non-suppress-prefix stems, and can't handle") else return any_suppress_prefix end end local function add(base, slot, stems, endings, is_combining_ending, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, slot, stem, ending, is_combining_ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, base.all_footnotes) end local function add3(base, slot, stems, endings, allow_overrides) local suppress_prefix = base.prefix == "" or check_stems_for_suppress_prefix(slot, stems) if suppress_prefix then return add(base, slot, stems, endings, "is combining ending", allow_overrides) end if skip_slot(base, slot, allow_overrides) then return end local is_combining_ending = false local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, slot, stem, ending, is_combining_ending) end -- Have to reimplement add_multiple_forms() ourselves due to the is_combining_ending -- flag, which needs to be different when adding prefix to stems vs. stems to ending. -- Otherwise we get e.g. #reímpreso instead of reimpreso. local tempdest = {} iut.add_forms(tempdest, slot, base.prefix, stems, do_combine_stem_ending) is_combining_ending = true iut.add_forms(base.forms, slot, tempdest[slot], endings, do_combine_stem_ending) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function add_present_indic(base) local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end local s2, s2v, s3, p1, p2, p3 if base.conj == "ar" then s2, s2v, s3, p1, p2, p3 = "as", "ás", "a", "amos", "áis", "an" elseif base.conj == "er" then s2, s2v, s3, p1, p2, p3 = "es", "és", "e", "emos", "éis", "en" elseif base.conj == "ir" then s2, s2v, s3, p1, p2, p3 = "es", "ís", "e", "imos", "ís", "en" else error("Internal error: Unrecognized conjugation " .. base.conj) end addit("1s", base.stems.pres1, "o") addit("2s", base.stems.pres_stressed, s2) addit("2sv", base.stems.pres_unstressed, s2v) addit("3s", base.stems.pres_stressed, s3) addit("1p", base.stems.pres_unstressed, p1) addit("2p", base.stems.pres_unstressed, p2) addit("3p", base.stems.pres_stressed, p3) end local function add_present_subj(base) local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end local s1, s2, s2v, s3, p1, p2, p3, voseo_stem if base.conj == "ar" then s1, s2, s2v, s3, p1, p2, p3 = "e", "es", "és", "e", "emos", "éis", "en" else s1, s2, s2v, s3, p1, p2, p3 = "a", "as", "ás", "a", "amos", "áis", "an" end addit("1s", base.stems.pres_sub_stressed, s1) addit("2s", base.stems.pres_sub_stressed, s2) addit("2sv", base.stems.pres_sub_unstressed, s2v) addit("3s", base.stems.pres_sub_stressed, s3) addit("1p", base.stems.pres_sub_unstressed, p1) addit("2p", base.stems.pres_sub_unstressed, p2) addit("3p", base.stems.pres_sub_stressed, p3) end local function add_imper(base) local function addit(slot, stems, ending) add3(base, "imp_" .. slot, stems, ending) end if base.conj == "ar" then addit("2s", base.stems.pres_stressed, "a") addit("2sv", base.stems.pres_unstressed, "á") addit("2p", base.stems.pres_unstressed, "ad") elseif base.conj == "er" then addit("2s", base.stems.pres_stressed, "e") addit("2sv", base.stems.pres_unstressed, "é") addit("2p", base.stems.pres_unstressed, "ed") elseif base.conj == "ir" then addit("2s", base.stems.pres_stressed, "e") addit("2sv", base.stems.pres_unstressed, "í") addit("2p", base.stems.pres_unstressed, "id") else error("Internal error: Unrecognized conjugation " .. base.conj) end end local function add_finite_non_present(base) local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end local stems = base.stems if stems.full_impf then -- An override needs to be supplied for the impf_1p due to the accent on the stem. add_tense("impf", stems.full_impf, "a", "as", "a", {}, "ais", "an") elseif base.conj == "ar" then add_tense("impf", stems.impf, "aba", "abas", "aba", "ábamos", "abais", "aban") else add_tense("impf", stems.impf, "ía", "ías", "ía", "íamos", "íais", "ían") end if stems.pret_conj == "irreg" then add_tense("pret", stems.pret, "e", "iste", "o", "imos", "isteis", "ieron") elseif stems.pret_conj == "ar" then add_tense("pret", stems.pret, "é", "aste", "ó", "amos", "asteis", "aron") else add_tense("pret", stems.pret, "í", "iste", "ió", "imos", "isteis", "ieron") end if stems.pret_conj == "ar" then add_tense("impf_sub_ra", stems.impf_sub_ra, "ara", "aras", "ara", "áramos", "arais", "aran") add_tense("impf_sub_se", stems.impf_sub_se, "ase", "ases", "ase", "ásemos", "aseis", "asen") add_tense("fut_sub", stems.fut_sub, "are", "ares", "are", "áremos", "areis", "aren") else add_tense("impf_sub_ra", stems.impf_sub_ra, "iera", "ieras", "iera", "iéramos", "ierais", "ieran") add_tense("impf_sub_se", stems.impf_sub_se, "iese", "ieses", "iese", "iésemos", "ieseis", "iesen") add_tense("fut_sub", stems.fut_sub, "iere", "ieres", "iere", "iéremos", "iereis", "ieren") end add_tense("fut", stems.fut, "é", "ás", "á", "emos", "éis", "án") add_tense("cond", stems.cond, "ía", "ías", "ía", "íamos", "íais", "ían") end local function add_non_finite_forms(base) local stems = base.stems local function addit(slot, stems, ending) add3(base, slot, stems, ending) end insert_form(base, "infinitive", {form = base.verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below for -- "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list_basic) do insert_form(base, "infinitive_" .. persnum, {form = base.verb}) end end local ger_ending = base.conj == "ar" and "ando" or "iendo" addit("gerund", stems.pres_unstressed, ger_ending) -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the same -- form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate clitic -- pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic pronouns won't be -- added, and {{es-verb form of}} will wrongly consider all these combinations as possible inflections of the bare -- gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list_basic) do addit("gerund_" .. persnum, stems.pres_unstressed, ger_ending) end end addit("pp_ms", stems.pp, "o") addit("pp_fs", stems.pp, "a") addit("pp_mp", stems.pp, "os") addit("pp_fp", stems.pp, "as") end local function copy_subjunctives_to_imperatives(base) -- Copy subjunctives to imperatives, unless there's an override for the given slot (as with the imp_1p of [[ir]]). for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end -- Remove monosyllabic accents (e.g. the 3sg preterite of fiar is fio not #fió). Note that there are a -- few monosyllabic verb forms that intentionally have an accent, to distinguish them from other words -- with the same pronunciation. These are as follows: -- (1) [[sé]] 1sg present indicative of [[saber]]; -- (2) [[sé]] 2sg imperative of [[ser]]; -- (3) [[dé]] 1sg and 3sg present subjunctive of [[dar]]. -- For these, a * is added, which indicates that the accent needs to remain. If we see such a *, we remove -- it but otherwise leave the form alone. local function remove_monosyllabic_accents(base) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) if base.forms[slot] then for _, form in ipairs(base.forms[slot]) do if form.form:find("%*") then -- * means leave alone any accented vowel form.form = form.form:gsub("%*", "") elseif may_need_monosyllabic_accent_removed(form.form) then -- Has an accented vowel and no VCV sequence and not a suffix; may be monosyllabic, in which -- case we need to remove the accent. Check # of syllables and remove accent if only 1. Note -- that the checks for accented vowel and VCV sequence are not strictly needed, but are -- optimizations to avoid running the whole syllabification algorithm on every verb form. local syllables = com.syllabify(form.form) if #syllables == 1 then form.form = com.remove_accent_from_syllable(syllables[1]) end end end end end end -- Add the appropriate clitic pronouns in `clitics` to the forms in `base_slot`. `store_cliticized_form` is a function -- of three arguments (clitic, formobj, cliticized_form) and should store the cliticized form for the specified clitic -- and form object. local function add_forms_with_clitic(base, base_slot, clitics, store_cliticized_form) if not base.forms[base_slot] then -- This can happen, e.g. in only3s/only3sp/only3p verbs. return end for _, formobj in ipairs(base.forms[base_slot]) do -- Figure out the correct accenting of the verb when a clitic pronoun is attached to it. We may need to -- add or remove an accent mark: -- (1) No accent mark currently, none needed: infinitive sentar -> sentarlo; imperative singular ten -> tenlo; -- (2) Accent mark currently, still needed: infinitive oír -> oírlo; -- (3) No accent mark currently, accent needed: imperative singular siente -> siéntelo; -- (4) Accent mark currently, not needed: imperative singular está -> estalo, sé -> selo. local syllables = com.syllabify(formobj.form) local sylno = com.stressed_syllable(syllables) table.insert(syllables, "lo") local needs_accent = com.accent_needed(syllables, sylno) if needs_accent then syllables[sylno] = com.add_accent_to_syllable(syllables[sylno]) else syllables[sylno] = com.remove_accent_from_syllable(syllables[sylno]) end table.remove(syllables) -- remove added clitic pronoun local reaccented_form = table.concat(syllables) for _, clitic in ipairs(clitics) do local cliticized_form -- Some further special cases. if base_slot == "imp_1p" and (clitic == "nos" or clitic == "os") then -- Final -s disappears: sintamos + nos -> sintámonos, sintamos + os -> sintámoos cliticized_form = reaccented_form:gsub("s$", "") .. clitic elseif base_slot == "imp_2p" and clitic == "os" then -- Final -d disappears, which may cause an accent to be required: -- haced + os -> haceos, sentid + os -> sentíos if reaccented_form:find("id$") then cliticized_form = reaccented_form:gsub("id$", "íos") else cliticized_form = reaccented_form:gsub("d$", "os") end else cliticized_form = reaccented_form .. clitic end store_cliticized_form(clitic, formobj, cliticized_form) end end end -- Generate the combinations of verb form (infinitive, gerund or various imperatives) + clitic pronoun. local function add_combined_forms(base) for _, base_slot_and_clitics in ipairs(base.alternant_multiword_spec.verb_slot_combined_rows) do local base_slot, clitics = unpack(base_slot_and_clitics) add_forms_with_clitic(base, base_slot, clitics, function(clitic, formobj, cliticized_form) insert_form(base, base_slot .. "_comb_" .. clitic, {form = cliticized_form, footnotes = formobj.footnotes}) end ) end for _, single_comb_slot_and_clitics in ipairs(base.alternant_multiword_spec.verb_slot_double_combined_rows) do local single_comb_slot, clitics = unpack(single_comb_slot_and_clitics) add_forms_with_clitic(base, single_comb_slot, clitics, function(clitic, formobj, cliticized_form) insert_form(base, single_comb_slot .. "_" .. clitic, {form = cliticized_form, footnotes = formobj.footnotes}) end ) end end local function process_slot_overrides(base, do_basic, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or do_basic and base.basic_overrides or base.combined_overrides for slot, forms in pairs(overrides) do local suppress_prefix = base.prefix == "" or check_stems_for_suppress_prefix(slot, forms) add(base, slot, suppress_prefix and "" or base.prefix, forms, false, "allow overrides") end end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function add_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = "[[" .. clitic .. "]]" .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Add a reflexive pronoun or fixed clitic, e.g. [[lo]], as appropriate to the base form that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local clitic if not do_reflexive then clitic = base.clitic elseif slot:find("[123]") then local persnum = slot:match("^.*_(.-)$") clitic = person_number_to_reflexive_pronoun[persnum] else clitic = "se" end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = slot:find("infinitive") or slot:find("gerund") or slot:find("^imp_") -- Maybe generate non-reflexive parts and separated syntactic variants for use in {{es-verb form of}}. -- See comment in add_slots() above `need_special_verb_form_of_slots`. Check for do_joined so we only -- run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "es-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[jambando]] is a -- non-reflexive equivalent of [[jambándome]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return add_clitic_to_form(base, clitic, " ... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then add_forms_with_clitic(base, slot, {clitic}, function(clitic, formobj, cliticized_form) formobj.form = cliticized_form end ) end elseif not do_joined then -- Add clitic as separate word before all other forms. for _, form in ipairs(base.forms[slot]) do form.form = add_clitic_to_form(base, clitic, " ", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{es-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) -- Copy subjunctives to negative imperatives, preceded by "no". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "no " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[no]] " .. form else return "[[no]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) add_present_indic(base) add_present_subj(base) add_imper(base) add_finite_non_present(base) add_non_finite_forms(base) -- This should happen before add_combined_forms() so overrides of basic forms end up part of the combined forms. process_slot_overrides(base, "do basic") -- do basic slot overrides -- This should happen after process_slot_overrides() in case a derived slot is based on an override (as with the -- imp_3s of [[dar]], [[estar]]). copy_subjunctives_to_imperatives(base) -- This should happen after process_slot_overrides() because overrides may have accents in them that need to be -- removed. (This happens e.g. for most present indicative forms of [[ver]], which have accents in them for the -- prefixed derived verbs, but the accents shouldn't be present in the base verb.) remove_monosyllabic_accents(base) if not base.nocomb then add_combined_forms(base) end -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[házmelo]] but [[no]] [[me]] [[lo]] [[haga]]. if base.refl then -- This should happen after remove_monosyllabic_accents() so the * marking the preservation of monosyllabic -- accents doesn't end up in the middle of a word. add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, "do basic", "do reflexive") -- do reflexive-only basic slot overrides end if base.clitic then -- This should happen after reflexives are added. add_reflexive_or_fixed_clitic_to_forms(base, false, "do joined") add_reflexive_or_fixed_clitic_to_forms(base, false, false) end if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) if not base.nocomb then process_slot_overrides(base, false) -- do combined slot overrides end -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = iut.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = iut.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif rfind(first_element, ":") then local colon_separated_groups = iut.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values_for_override( colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}, "add monosyllabic asterisk" ) end else local comma_separated_groups = iut.split_alternating_runs(dot_separated_group, "%s*,%s*") for j = 1, #comma_separated_groups do local alt = comma_separated_groups[j][1] if not vowel_alternants[alt] then if #comma_separated_groups == 1 then parse_err("Unrecognized spec or vowel alternant '" .. alt .. "'") else parse_err("Unrecognized vowel alternant '" .. alt .. "'") end end if base.vowel_alt then for _, existing_alt in ipairs(base.vowel_alt) do if existing_alt.form == alt then parse_err("Vowel alternant '" .. alt .. "' specified twice") end end else base.vowel_alt = {} end table.insert(base.vowel_alt, {form = alt, footnotes = fetch_footnotes(comma_separated_groups[j])}) end end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, pagename) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form -- so we can use it below in the 'lemma_linked' form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = pagename end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb, clitic = rmatch(base.lemma, "^(.-)(l[aeo]s?)$") if not refl_verb then refl_verb, clitic = base.lemma, nil end local verb, refl = rmatch(refl_verb, "^(.-)(se)$") if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.clitic = clitic if base.refl and base.clitic then -- We have to parse the verb suffix to see how to construct the base verb; e.g. -- abrírsela -> abrir but oírsela -> oír. We parse the verb suffix again in all cases -- in detect_indicator_spec(), after splitting off the prefix of irrregular verbs. local actual_verb local inf_stem, suffix = rmatch(base.user_specified_verb, "^(.*)([aáeéií]r)$") if not inf_stem then error("Unrecognized infinitive: " .. base.user_specified_verb) end if suffix == "ír" and inf_stem:find("[aeo]$") then -- accent on suffix should remain base.verb = base.user_specified_verb else base.verb = inf_stem .. com.remove_accent_from_syllable(suffix) end else base.verb = base.user_specified_verb end local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl or base.clitic then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "[[" .. refl .. "]]" or "") .. (clitic and "[[" .. clitic .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve -- links in multiword lemmas and include links in non-lemma forms rather than allowing -- the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function construct_stems(base) local stems = base.stems stems.pres_unstressed = stems.pres_unstressed or base.inf_stem stems.pres_stressed = stems.pres_stressed or -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or base.vowel_alt or base.inf_stem stems.pres1_and_sub = stems.pres1_and_sub or -- If no_pres_stressed given, the entire subjunctive is missing. base.no_pres_stressed and {} or -- If no_pres1_and_sub given, pres1 and entire subjunctive are missing. base.no_pres1_and_sub and {} or nil stems.pres1 = stems.pres1 or stems.pres1_and_sub or stems.pres_stressed stems.impf = stems.impf or base.inf_stem stems.pret = stems.pret or base.inf_stem stems.pret_conj = stems.pret_conj or base.conj stems.fut = stems.fut or base.inf_stem .. base.conj stems.cond = stems.cond or stems.fut stems.pres_sub_stressed = stems.pres_sub_stressed or stems.pres1 stems.pres_sub_unstressed = stems.pres_sub_unstressed or stems.pres1_and_sub or stems.pres_unstressed stems.impf_sub_ra = stems.impf_sub_ra or stems.pret stems.impf_sub_se = stems.impf_sub_se or stems.pret stems.fut_sub = stems.fut_sub or stems.pret stems.pp = stems.pp or base.conj == "ar" and combine_stem_ending(base, "pp_ms", base.inf_stem, "ad", "is combining ending") or -- use combine_stem_ending esp. so we get reído, caído, etc. combine_stem_ending(base, "pp_ms", base.inf_stem, "id", "is combining ending") end -- Make a list of the slots given in `list1` and optionally `list2`, with `prefix` added to the beginning of each slot -- name. The elements of each list are of the form {SLOT, ACCEL}. Used for error messages. local function construct_possible_slots(list1, list2, prefix) list2 = list2 or {} prefix = prefix or "" local slots = {} local function insert_list_slots(list) for _, slotaccel in ipairs(list) do local slot, accel = unpack(slotaccel) table.insert(slots, prefix .. slot) end end insert_list_slots(list1) insert_list_slots(list2) return m_table.serialCommaJoin(slots) end local function detect_indicator_spec(base) base.forms = {} base.non_reflexive_forms = {} base.stems = {} if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.basic_overrides = {} base.basic_reflexive_only_overrides = {} base.combined_overrides = {} if not base.no_built_in then for _, built_in_conj in ipairs(built_in_conjugations) do if type(built_in_conj.match) == "function" then base.prefix, base.non_prefixed_verb = built_in_conj.match(base.verb) elseif built_in_conj.match:find("^%^") and rsub(built_in_conj.match, "^%^", "") == base.verb then -- begins with ^, for exact match, and matches base.prefix, base.non_prefixed_verb = "", base.verb else base.prefix, base.non_prefixed_verb = rmatch(base.verb, "^(.*)(" .. built_in_conj.match .. ")$") end if base.prefix then -- we found a built-in verb base.irreg_verb = true for stem, forms in pairs(built_in_conj.forms) do if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_combined_map[stem] then -- an individual form override of a combined form base.combined_overrides[stem] = forms else base.stems[stem] = forms end end break end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if override:find("^refl_") then if not base.refl then error("Can't set reflexive-only override '" .. override .. "' on a non-reflexive verb") end override = override:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized reflexive-only override 'refl_" .. override .. "': possible slots are " .. construct_possible_slots(base.alternant_multiword_spec.verb_slots_basic, nil, "refl_")) end base.basic_reflexive_only_overrides[override] = values elseif base.alternant_multiword_spec.verb_slots_basic_map[override] then base.basic_overrides[override] = values elseif base.alternant_multiword_spec.verb_slots_combined_map[override] then base.combined_overrides[override] = values else error("Unrecognized override '" .. override .. "': possible slots are " .. construct_possible_slots(base.alternant_multiword_spec.verb_slots_basic, base.alternant_multiword_spec.verb_slots_combined)) end end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeií]r)$") if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end base.inf_stem = inf_stem suffix = suffix == "ír" and "ir" or suffix base.conj = suffix base.frontback = suffix == "ar" and "back" or "front" if base.stems.vowel_alt then -- built-in verb with specified vowel alternation if base.vowel_alt then error(base.verb .. " is a recognized built-in verb, and should not have vowel alternations specified with it") end base.vowel_alt = iut.convert_to_general_list_form(base.stems.vowel_alt) end -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.stems[indicator_flag] end -- Convert vowel alternation indicators into stems. if base.vowel_alt then for _, altform in ipairs(base.vowel_alt) do altform.alt = altform.form -- save original indicator local alt = altform.alt if base.conj == "ir" then local raising = ( alt == "ie-i" or alt == "ye-i" or alt == "ue-u" or alt == "i" or alt == "í" or alt == "ú" ) if base.stems.raising_conj == nil then base.stems.raising_conj = raising elseif base.stems.raising_conj ~= raising then error("Can't currently support a mixture of raising (e.g. 'ie-i') and non-raising (e.g. 'ie') vowel alternations in -ir verbs") end end if alt == "+" then altform.form = base.inf_stem else local normalized_alt = alt if alt == "ie-i" or alt == "ye-i" or alt == "ue-u" then if base.conj ~= "ir" then error("Vowel alternation '" .. alt .. "' only supported with -ir verbs") end -- ie-i is like i except for the vowel raising before i+V, similarly for ye-i, ue-u, -- so convert appropriately. normalized_alt = alt == "ie-i" and "ie" or alt == "ye-i" and "ye" or "ue" end local ret = com.apply_vowel_alternation(base.inf_stem, normalized_alt) if ret.err then error("To use '" .. alt .. "', present stem '" .. base.inf_stem .. "' " .. ret.err) end altform.form = ret.ret end end end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:es-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec -- If reflexive or fixed clitic, don't include combined forms. alternant_multiword_spec.nocomb = alternant_multiword_spec.nocomb or base.clitic or base.refl end) add_slots(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) base.nocomb = alternant_multiword_spec.args.nocomb detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end construct_stems(base) end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Spanish verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, cat .. "ภาษาสเปน") end end if check_for_red_links and alternant_multiword_spec.source_template == "es-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("verbs with red links in their inflection tables") must_break = true break end end end end if must_break then break end end end --insert_cat("คำกริยาที่ลงท้ายด้วย -" .. base.conj) m_table.insertIfNot(alternant_multiword_spec.categories, "คำกริยาภาษาสเปนที่ลงท้ายด้วย -" .. base.conj) if base.irreg_verb then insert_ann("irreg", "ไม่ปรกติ") insert_cat("คำกริยาไม่ปรกติ") else insert_ann("irreg", "ปรกติ") end if base.only3s then insert_ann("defective", "อบุรุษ") insert_cat("คำอบุรุษกริยา") elseif base.only3sp then insert_ann("defective", "บุรุษที่สามเท่านั้น") insert_cat("คำกริยาบุรุษที่สามเท่านั้น") elseif base.only3p then insert_ann("defective", "บุรุษที่สามพหูพจน์เท่านั้น") insert_cat("คำกริยาบุรุษที่สามพหูพจน์เท่านั้น") elseif base.no_pres_stressed or base.no_pres1_and_sub then insert_ann("defective", "บกพร่อง") insert_cat("คำกริยาบกพร่อง") else insert_ann("defective", "บุรุษปรกติ") end if base.clitic then insert_cat("verbs with lexical clitics") end if base.refl then insert_cat("คำกริยาสะท้อน") end if not base.vowel_alt then insert_ann("vowel_alt", "ไม่เปลี่ยนแปรสระ") else local inf_stem = base.inf_stem:gsub("[gq]u$", "x") for _, alt in ipairs(base.vowel_alt) do if alt.alt == "+" then insert_ann("vowel_alt", "ไม่เปลี่ยนแปรสระ") else local desc if alt.alt == "ue" and rfind(inf_stem, "u" .. C .. "*$") then desc = "เปลี่ยนแปร u-ue" -- jugar elseif alt.alt == "ie" and rfind(inf_stem, "i" .. C .. "*$") then desc = "เปลี่ยนแปร i-ie" -- adquirir elseif alt.alt == "í" and rfind(inf_stem, "e" .. C .. "*$") then desc = "เปลี่ยนแปร e-í" -- reír, freír, etc. else desc = "เปลี่ยนแปร " .. vowel_alternant_to_desc[alt.alt] end insert_ann("vowel_alt", desc) --insert_cat("คำกริยาที่" .. desc) m_table.insertIfNot(alternant_multiword_spec.categories, "คำกริยาภาษาสเปนที่มีการ" .. desc) end end end local cons_alt = base.stems.cons_alt if cons_alt == nil then if base.conj == "ar" then if base.inf_stem:find("z$") then cons_alt = "c-z" elseif base.inf_stem:find("ç$") then cons_alt = "c-ç" elseif base.inf_stem:find("c$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-gu" elseif base.inf_stem:find("gu$") then cons_alt = "gu-gü" end else if base.no_pres_stressed or base.no_pres1_and_sub then cons_alt = nil -- no c-zc alternation in balbucir or arrecir elseif rfind(base.inf_stem, V .. "c$") then cons_alt = "c-zc" elseif base.inf_stem:find("sc$") then cons_alt = "แข็ง-อ่อน" elseif base.inf_stem:find("c$") then cons_alt = "c-z" elseif base.inf_stem:find("qu$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-j" elseif base.inf_stem:find("gu$") then cons_alt = "g-gu" elseif base.inf_stem:find("gü$") then cons_alt = "gu-gü" end end end if cons_alt then local desc = "เปลี่ยนแปร" .. (cons_alt ~= "แข็ง-อ่อน" and " " or "") .. cons_alt insert_ann("cons_alt", desc) --insert_cat("คำกริยาที่" .. desc) m_table.insertIfNot(alternant_multiword_spec.categories, "คำกริยาภาษาสเปนที่มีการ" .. desc) else insert_ann("cons_alt", "ไม่เปลี่ยนแปรพยัญชนะ") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.irreg = {} ann.defective = {} ann.vowel_alt = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local vowel_alt = table.concat(ann.vowel_alt, " or ") if vowel_alt ~= "" and vowel_alt ~= "non-alternating" then table.insert(ann_parts, vowel_alt) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, "; ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) -- Initialize the footnotes with those for the future subjunctive and maybe the pres subjunctive -- voseo usage. In the latter case, we only do it if there is a distinct pres subjunctive voseo form. local function create_footnote_obj() local obj = iut.create_footnote_obj() iut.get_footnote_text({fut_sub_note}, obj) -- Compute whether the tú and voseo variants are different, for each voseo variant. -- We use this later in make_table(). for _, slot in ipairs({"pres_2s", "pres_sub_2s", "imp_2s"}) do alternant_multiword_spec["separate_" .. slot .. "v"] = false iut.map_word_specs(alternant_multiword_spec, function(base) if not m_table.deepEquals(base.forms[slot], base.forms[slot .. "v"]) then alternant_multiword_spec["separate_" .. slot .. "v"] = true end end) end if alternant_multiword_spec.separate_pres_sub_2sv then iut.get_footnote_text({pres_sub_voseo_note}, obj) end return obj end local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then if slot:find("^pp_") then accel_obj.form = slot elseif slot == "gerund" then accel_obj.form = "gerund-" .. reconstructed_verb_spec else accel_obj.form = "verb-form-" .. reconstructed_verb_spec end end return accel_obj end local props = { lang = lang, lemmas = lemmas, create_footnote_obj = create_footnote_obj, transform_accel_obj = transform_accel_obj, } props.slot_list = alternant_multiword_spec.verb_slots_basic iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote props.create_footnote_obj = nil props.slot_list = alternant_multiword_spec.verb_slots_combined iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_combined = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local pres_2sv_template = '<sup><sup>tú</sup></sup><br />{pres_2sv}<sup><sup>vos</sup></sup>' local pres_sub_2sv_template = '<sup><sup>tú</sup></sup><br />{pres_sub_2sv}<sup><sup>vos<sup class="roa-red-superscript">2</sup></sup></sup>' local imp_2sv_template = '<sup><sup>tú</sup></sup><br />{imp_2sv}<sup><sup>vos</sup></sup>' local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead" align=center>&nbsp; &nbsp; การผันรูปของ {title} (ดูที่ [[ภาคผนวก:คำกริยาภาษาสเปน]])</div> <div class="NavContent"> {\op}| class="roa-inflection-table" |- ! colspan="3" class="roa-nonfinite-header" | <span title="infinitivo">รูปกริยากลาง</span> | colspan="5" | {infinitive} |- ! colspan="3" class="roa-nonfinite-header" | <span title="gerundio">รูปกริยาเป็นนาม</span> | colspan="5" | {gerund} |- ! rowspan="3" colspan="2" class="roa-nonfinite-header" | <span title="participio (pasado)">รูปกริยาขยายอดีตกาล</span> | colspan="2" class="roa-nonfinite-header" | ! colspan="2" class="roa-nonfinite-header" | <span title="masculino">เพศชาย</span> ! colspan="2" class="roa-nonfinite-header" | <span title="femenino">เพศหญิง</span> |- ! colspan="2" class="roa-nonfinite-header" | เอกพจน์ | colspan="2" | {pp_ms} | colspan="2" | {pp_fs} |- ! colspan="2" class="roa-nonfinite-header" | พหูพจน์ | colspan="2" | {pp_mp} | colspan="2" | {pp_fp} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" | บุรุษที่หนึ่ง ! class="roa-person-number-header" | บุรุษที่สอง ! class="roa-person-number-header" | บุรุษที่สาม ! class="roa-person-number-header" | บุรุษที่หนึ่ง ! class="roa-person-number-header" | บุรุษที่สอง ! class="roa-person-number-header" | บุรุษที่สาม |-{reflexive_non_finite_clause} ! rowspan="6" class="roa-indicative-left-rail" | <span title="indicativo">มาลาบอกเล่า</span> ! class="roa-native-person-number-header" | ! class="roa-native-person-number-header" | yo ! class="roa-native-person-number-header" | tú<br />vos ! class="roa-native-person-number-header" | él/ella/ello<br />usted ! class="roa-native-person-number-header" | nosotros<br />nosotras ! class="roa-native-person-number-header" | vosotros<br />vosotras ! class="roa-native-person-number-header" | ellos/ellas<br />ustedes |- ! class="roa-finite-header" | <span title="presente de indicativo">ปัจจุบันกาล</span> | {pres_1s} | {pres_2s}{pres_2sv_text} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-finite-header" | <span title="pretérito imperfecto (copréterito)">ไม่สมบูรณ์</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-finite-header" | <span title="pretérito perfecto simple (pretérito indefinido)">อดีตกาลสิ้นสุด (สมบูรณ์)</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-finite-header" | <span title="futuro simple (futuro imperfecto)">อนาคตกาล</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-finite-header" | <span title="condicional simple (pospretérito de modo indicativo)">มาลาเงื่อนไข</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-person-number-header" style="height:.75em" colspan="8" | |- ! rowspan="5" class="roa-subjunctive-left-rail" | <span title="subjuntivo">มาลาสมมุติ</span> ! class="roa-native-person-number-header" | ! class="roa-native-person-number-header" | yo ! class="roa-native-person-number-header" | tú<br />vos ! class="roa-native-person-number-header" | él/ella/ello<br />usted ! class="roa-native-person-number-header" | nosotros<br />nosotras ! class="roa-native-person-number-header" | vosotros<br />vosotras ! class="roa-native-person-number-header" | ellos/ellas<br />ustedes |- ! class="roa-finite-header" | <span title="presente de subjuntivo">ปัจจุบันกาล</span> | {pres_sub_1s} | {pres_sub_2s}{pres_sub_2sv_text} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-finite-header" | <span title="pretérito imperfecto de subjuntivo">ไม่สมบูรณ์</span><br />(ra) | {impf_sub_ra_1s} | {impf_sub_ra_2s} | {impf_sub_ra_3s} | {impf_sub_ra_1p} | {impf_sub_ra_2p} | {impf_sub_ra_3p} |- ! class="roa-finite-header" | <span title="pretérito imperfecto de subjuntivo">ไม่สมบูรณ์</span><br />(se) | {impf_sub_se_1s} | {impf_sub_se_2s} | {impf_sub_se_3s} | {impf_sub_se_1p} | {impf_sub_se_2p} | {impf_sub_se_3p} |- ! class="roa-finite-header" | <span title="futuro simple de subjuntivo (futuro de subjuntivo)">อนาคตกาล</span><sup class="roa-red-superscript">1</sup> | {fut_sub_1s} | {fut_sub_2s} | {fut_sub_3s} | {fut_sub_1p} | {fut_sub_2p} | {fut_sub_3p} |- ! class="roa-person-number-header" style="height:.75em" colspan="8" | |- ! rowspan="6" class="roa-imperative-left-rail" | <span title="imperativo">มาลาสั่ง</span> ! class="roa-native-person-number-header" | ! class="roa-native-person-number-header" | — ! class="roa-native-person-number-header" | tú<br />vos ! class="roa-native-person-number-header" | usted ! class="roa-native-person-number-header" | nosotros<br />nosotras ! class="roa-native-person-number-header" | vosotros<br />vosotras ! class="roa-native-person-number-header" | ustedes |- ! class="roa-finite-header" | <span title="imperativo afirmativo">เชิงยืนยัน</span> | | {imp_2s}{imp_2sv_text} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-finite-header" | <span title="imperativo negativo">เชิงปฏิเสธ</span> | | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div> ]=] local reflexive_non_finite_template = [=[ ! rowspan="3" class="roa-nonfinite-header" | personal non-finite ! class="roa-native-person-number-header" | ! class="roa-native-person-number-header" | yo ! class="roa-native-person-number-header" | tú<br />vos ! class="roa-native-person-number-header" | él/ella/ello<br />usted ! class="roa-native-person-number-header" | nosotros<br />nosotras ! class="roa-native-person-number-header" | vosotros<br />vosotras ! class="roa-native-person-number-header" | ellos/ellas<br />ustedes |- ! class="roa-finite-header" | <span title="infinitivo">รูปกริยากลาง</span> | {infinitive_1s} | {infinitive_2s} | {infinitive_3s} | {infinitive_1p} | {infinitive_2p} | {infinitive_3p} |- ! class="roa-finite-header" | <span title="gerundio">รูปกริยาเป็นนาม</span> | {gerund_1s} | {gerund_2s} | {gerund_3s} | {gerund_1p} | {gerund_2p} | {gerund_3p} |- ! class="roa-person-number-header" style="height:.75em" colspan="8" | |-]=] local combined_form_combined_tu_vos_template = [=[ ! class="roa-person-number-header" style="height:.35em" colspan="8" | |- ! rowspan="2" class="roa-combined-with-imperative" | with informal second-person singular ''tú/vos'' imperative {imp_2s} ! class="roa-finite-header" | สัมปทานการก | {imp_2s_comb_me} | {imp_2s_comb_te} | {imp_2s_comb_le} | {imp_2s_comb_nos} | ''ไม่ใช้'' | {imp_2s_comb_les} |- ! class="roa-finite-header" | กรรมการก | {imp_2s_comb_me} | {imp_2s_comb_te} | {imp_2s_comb_lo}, {imp_2s_comb_la} | {imp_2s_comb_nos} | ''ไม่ใช้'' | {imp_2s_comb_los}, {imp_2s_comb_las} |-]=] local combined_form_separate_tu_vos_template = [=[ ! class="roa-person-number-header" style="height:.35em" colspan="8" | |- ! rowspan="2" class="roa-combined-with-imperative" | with informal second-person singular ''tú'' imperative {imp_2s} ! class="roa-finite-header" | สัมปทานการก | {imp_2s_comb_me} | {imp_2s_comb_te} | {imp_2s_comb_le} | {imp_2s_comb_nos} | ''ไม่ใช้'' | {imp_2s_comb_les} |- ! class="roa-finite-header" | กรรมการก | {imp_2s_comb_me} | {imp_2s_comb_te} | {imp_2s_comb_lo}, {imp_2s_comb_la} | {imp_2s_comb_nos} | ''ไม่ใช้'' | {imp_2s_comb_los}, {imp_2s_comb_las} |- ! class="roa-person-number-header" style="height:.35em" colspan="8" | |- ! rowspan="2" class="roa-combined-with-imperative" | with informal second-person singular ''vos'' imperative {imp_2sv} ! class="roa-finite-header" | สัมปทานการก | {imp_2sv_comb_me} | {imp_2sv_comb_te} | {imp_2sv_comb_le} | {imp_2sv_comb_nos} | ''ไม่ใช้'' | {imp_2sv_comb_les} |- ! class="roa-finite-header" | กรรมการก | {imp_2sv_comb_me} | {imp_2sv_comb_te} | {imp_2sv_comb_lo}, {imp_2sv_comb_la} | {imp_2sv_comb_nos} | ''ไม่ใช้'' | {imp_2sv_comb_los}, {imp_2sv_comb_las} |-]=] local combined_form_table = [=[ {description}<div class="NavFrame"> <div class="NavHead" align=center>&nbsp; &nbsp; รูปประสมของ {title} ที่เลือกมาบางส่วน</div> <div class="NavContent"> รูปเหล่านี้สร้างขึ้นโดยอัตโนมัติและอาจไม่ได้ใช้งานจริง การใช้คำสรรพนามแตกต่างกันไปในแต่ละภูมิภาค {\op}| class="inflection-table es-inflection-table" |- ! colspan="2" rowspan="2" class="roa-person-number-header" | ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" | บุรุษที่หนึ่ง ! class="roa-person-number-header" | บุรุษที่สอง ! class="roa-person-number-header" | บุรุษที่สาม ! class="roa-person-number-header" | บุรุษที่หนึ่ง ! class="roa-person-number-header" | บุรุษที่สอง ! class="roa-person-number-header" | บุรุษที่สาม |- ! rowspan="2" class="roa-combined-with-infinitive" | with infinitive {infinitive} ! class="roa-finite-header" | สัมปทานการก | {infinitive_comb_me} | {infinitive_comb_te} | {infinitive_comb_le}, {infinitive_comb_se} | {infinitive_comb_nos} | {infinitive_comb_os} | {infinitive_comb_les}, {infinitive_comb_se} |- ! class="roa-finite-header" | กรรมการก | {infinitive_comb_me} | {infinitive_comb_te} | {infinitive_comb_lo}, {infinitive_comb_la}, {infinitive_comb_se} | {infinitive_comb_nos} | {infinitive_comb_os} | {infinitive_comb_los}, {infinitive_comb_las}, {infinitive_comb_se} |- ! class="roa-person-number-header" style="height:.35em" colspan="8" | |- ! rowspan="2" class="roa-combined-with-gerund" | with gerund {gerund} ! class="roa-finite-header" | สัมปทานการก | {gerund_comb_me} | {gerund_comb_te} | {gerund_comb_le}, {gerund_comb_se} | {gerund_comb_nos} | {gerund_comb_os} | {gerund_comb_les}, {gerund_comb_se} |- ! class="roa-finite-header" | กรรมการก | {gerund_comb_me} | {gerund_comb_te} | {gerund_comb_lo}, {gerund_comb_la}, {gerund_comb_se} | {gerund_comb_nos} | {gerund_comb_os} | {gerund_comb_los}, {gerund_comb_las}, {gerund_comb_se} |-{tu_vos_clause} ! class="roa-person-number-header" style="height:.35em" colspan="8" | |- ! rowspan="2" class="roa-combined-with-imperative" | with formal second-person singular imperative {imp_3s} ! class="roa-finite-header" | สัมปทานการก | {imp_3s_comb_me} | ''ไม่ใช้'' | {imp_3s_comb_le}, {imp_3s_comb_se} | {imp_3s_comb_nos} | ''ไม่ใช้'' | {imp_3s_comb_les} |- ! class="roa-finite-header" | กรรมการก | {imp_3s_comb_me} | ''ไม่ใช้'' | {imp_3s_comb_lo}, {imp_3s_comb_la}, {imp_3s_comb_se} | {imp_3s_comb_nos} | ''ไม่ใช้'' | {imp_3s_comb_los}, {imp_3s_comb_las} |- ! class="roa-person-number-header" style="height:.35em" colspan="8" | |- ! rowspan="2" class="roa-combined-with-imperative" | with first-person plural imperative {imp_1p} ! class="roa-finite-header" | สัมปทานการก | ''ไม่ใช้'' | {imp_1p_comb_te} | {imp_1p_comb_le} | {imp_1p_comb_nos} | {imp_1p_comb_os} | {imp_1p_comb_les} |- ! class="roa-finite-header" | กรรมการก | ''ไม่ใช้'' | {imp_1p_comb_te} | {imp_1p_comb_lo}, {imp_1p_comb_la} | {imp_1p_comb_nos} | {imp_1p_comb_os} | {imp_1p_comb_los}, {imp_1p_comb_las} |- ! class="roa-person-number-header" style="height:.35em" colspan="8" | |- ! rowspan="2" class="roa-combined-with-imperative" | with informal second-person plural imperative {imp_2p} ! class="roa-finite-header" | สัมปทานการก | {imp_2p_comb_me} | ''ไม่ใช้'' | {imp_2p_comb_le} | {imp_2p_comb_nos} | {imp_2p_comb_os} | {imp_2p_comb_les} |- ! class="roa-finite-header" | กรรมการก | {imp_2p_comb_me} | ''ไม่ใช้'' | {imp_2p_comb_lo}, {imp_2p_comb_la} | {imp_2p_comb_nos} | {imp_2p_comb_os} | {imp_2p_comb_los}, {imp_2p_comb_las} |- ! class="roa-person-number-header" style="height:.35em" colspan="8" | |- ! rowspan="2" class="roa-combined-with-imperative" | with formal second-person plural imperative {imp_3p} ! class="roa-finite-header" | สัมปทานการก | {imp_3p_comb_me} | ''ไม่ใช้'' | {imp_3p_comb_le} | {imp_3p_comb_nos} | ''ไม่ใช้'' | {imp_3p_comb_les}, {imp_3p_comb_se} |- ! class="roa-finite-header" | กรรมการก | {imp_3p_comb_me} | ''ไม่ใช้'' | {imp_3p_comb_lo}, {imp_3p_comb_la} | {imp_3p_comb_nos} | ''ไม่ใช้'' | {imp_3p_comb_los}, {imp_3p_comb_las}, {imp_3p_comb_se} |{\cl}{notes_clause}</div></div> ]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form) if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end forms.description = "" -- Format the basic table. forms.footnote = alternant_multiword_spec.footnote_basic forms.reflexive_non_finite_clause = alternant_multiword_spec.refl and m_string_utilities.format(reflexive_non_finite_template, forms) or "" forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" -- The separate_* values are computed in show_forms(). forms.pres_2sv_text = alternant_multiword_spec.separate_pres_2sv and m_string_utilities.format(pres_2sv_template, forms) or "" forms.pres_sub_2sv_text = alternant_multiword_spec.separate_pres_sub_2sv and m_string_utilities.format(pres_sub_2sv_template, forms) or "" forms.imp_2sv_text = alternant_multiword_spec.separate_imp_2sv and m_string_utilities.format(imp_2sv_template, forms) or "" local formatted_basic_table = m_string_utilities.format(basic_table, forms) -- Format the combined table. local formatted_combined_table if alternant_multiword_spec.refl or alternant_multiword_spec.args.nocomb or alternant_multiword_spec.clitic then formatted_combined_table = "" else forms.footnote = alternant_multiword_spec.footnote_combined forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" -- separate_imp_2sv is computed in show_forms(). local tu_vos_template = alternant_multiword_spec.separate_imp_2sv and combined_form_separate_tu_vos_template or combined_form_combined_tu_vos_template forms.tu_vos_clause = m_string_utilities.format(tu_vos_template, forms) formatted_combined_table = m_string_utilities.format(combined_form_table, forms) end -- Paste them together. return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. formatted_basic_table .. formatted_combined_table end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head, double_combined_forms_to_include) local PAGENAME = mw.title.getCurrentTitle().text local function in_template_space() return mw.title.getCurrentTitle().nsText == "แม่แบบ" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{es-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<ue>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "es-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "es-conj" or pagename == "es-verb") and in_template_space() then arg1 = "licuar<+,ú>" elseif pagename == "es-verb form of" and in_template_space() then arg1 = "amar" else arg1 = "<>" end end -- When called from {{es-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "es-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "es-verb form of" and in_template_space() then verb_form_of_form = "ame" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local parse_props = { parse_indicator_spec = parse_indicator_spec, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma -- Now determine if we need to generate any double-combined forms, and if so, which clitics are involved. -- See the comment above the initialization of `verb_slot_double_combined_rows` above in add_slots(). if verb_form_of_form and rfind(verb_form_of_form, AV) then -- All double-clitic forms have an explicit accent, so we check for this. In addition, all double-clitic forms -- are of the form "(me|te|se|nos|os)(lo|la|le)s$". We have no alternations in Lua patterns, but we can exploit -- the similarity of the clitics in question. local single_comb_form, object_clitic = rmatch(verb_form_of_form, "^(.*)(l[aeo]s?)$") if single_comb_form then local personal_clitic = rmatch(single_comb_form, "^.*([mts]e)$") if not personal_clitic then personal_clitic = rmatch(single_comb_form, "^.-(n?os)$") end if personal_clitic then if personal_clitic == "nos" then -- "os" is a substring of "nos"; conceivably we could have a form ending in -n + os, and we don't -- know whether to interpret as -n + os or - + nos. alternant_multiword_spec.double_combined_forms_to_include = {{"nos", object_clitic}, {"os", object_clitic}} else alternant_multiword_spec.double_combined_forms_to_include = {{personal_clitic, object_clitic}} end end end end normalize_all_lemmas(alternant_multiword_spec, pagename) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and not from_headword and not from_verb_form_of then -- There is a circular reference in `base.alternant_multiword_spec`, which points back to top level. iut.map_word_specs(alternant_multiword_spec, function(base) base.alternant_multiword_spec = nil end) return require("Module:JSON").toJSON(alternant_multiword_spec) end return alternant_multiword_spec end -- Entry point for {{es-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["nocomb"] = {type = "boolean"}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "es-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export o4i1ubprsll68viyiqsevn5xzggph9c มอดูล:pt-verb 828 326177 5729302 5703152 2026-07-20T05:36:44Z Octahedron80 267 5729302 Scribunto text/plain local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Portuguese form representing the value of a given slot. -- "lemma" = The dictionary form of a given Portuguese term. For Portuguese, always the infinitive. ]=] --[=[ FIXME: --"i-e" alternation doesn't work properly when the stem comes with a hiatus in it. --]=] local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local lang = require("Module:languages").getByCode("pt") local m_str_utils = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:pt-common") local format = m_str_utils.format local remove_final_accent = com.remove_final_accent local rfind = m_str_utils.find local rmatch = m_str_utils.match local rsplit = m_str_utils.split local rsub = com.rsub local u = m_str_utils.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility local function link_term(term) return m_links.full_link({ lang = lang, term = term }, "term") end local V = com.V -- vowel regex class local AV = com.AV -- accented vowel regex class local C = com.C -- consonant regex class local AC = u(0x0301) -- acute = ́ local TEMPC1 = u(0xFFF1) -- temporary character used for consonant substitutions local TEMP_MESOCLITIC_INSERTION_POINT = u(0xFFF2) -- temporary character used to mark the mesoclitic insertion point local VAR_BR = u(0xFFF3) -- variant code for Brazil local VAR_PT = u(0xFFF4) -- variant code for Portugal local VAR_SUPERSEDED = u(0xFFF5) -- variant code for superseded forms local VAR_NORMAL = u(0xFFF6) -- variant code for non-superseded forms local all_var_codes = VAR_BR .. VAR_PT .. VAR_SUPERSEDED .. VAR_NORMAL local var_codes_no_superseded = VAR_BR .. VAR_PT .. VAR_NORMAL local var_code_c = "[" .. all_var_codes .. "]" local var_code_no_superseded_c = "[" .. var_codes_no_superseded .. "]" local not_var_code_c = "[^" .. all_var_codes .. "]" -- Export variant codes for use in [[Module:pt-inflections]]. export.VAR_BR = VAR_BR export.VAR_PT = VAR_PT export.VAR_SUPERSEDED = VAR_SUPERSEDED export.VAR_NORMAL = VAR_NORMAL local short_pp_footnote = "[โดยปกติใช้กับคำกริยาช่วย " .. link_term("ser") .. " และ " .. link_term("estar") .. "]" local long_pp_footnote = "[โดยปกติใช้กับคำกริยาช่วย " .. link_term("haver") .. " และ " .. link_term("ter") .. "]" --[=[ Vowel alternations: <i-e>: 'i' in pres1s and the whole present subjunctive; 'e' elsewhere when stressed. Generally 'e' otherwise when unstressed. E.g. [[sentir]], [[conseguir]] (the latter additionally with 'gu-g' alternation). <u-o>: 'u' in pres1s and the whole present subjunctive; 'o' elsewhere when stressed. Either 'o' or 'u' otherwise when unstressed. E.g. [[dormir]], [[subir]]. <i>: 'i' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'e'. E.g. [[progredir]], also [[premir]] per Priberam. <u>: 'u' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'o'. E.g. [[polir]], [[extorquir]] (the latter also <u-o>). <í>: The last 'i' of the stem (excluding stem-final 'i') becomes 'í' when stressed. E.g.: * [[proibir]] ('proíbo, proíbe(s), proíbem, proíba(s), proíbam') * [[faiscar]] ('faísco, faísca(s), faíscam, faísque(s), faísquem' also with 'c-qu' alternation) * [[homogeneizar]] ('homogeneízo', etc.) * [[mobiliar]] ('mobílio', etc.; note here the final -i is ignored when determining which vowel to stress) * [[tuitar]] ('tuíto', etc.) <ú>: The last 'u' of the stem (excluding stem-final 'u') becomes 'ú' when stressed. E.g.: * [[reunir]] ('reúno, reúne(s), reúnem, reúna(s), reúnam') * [[esmiuçar]] ('esmiúço, esmiúça(s), esmiúça, esmiúce(s), esmiúcem' also with 'ç-c' alternation) * [[reusar]] ('reúso, reúsa(s), reúsa, reúse(s), reúsem') * [[saudar]] ('saúdo, saúda(s), saúda, saúde(s), saúdem') ]=] local vowel_alternants = m_table.listToSet({"i-e", "i", "í", "u-o", "u", "ú", "ei", "+"}) local vowel_alternant_to_desc = { ["i-e"] = "การเปลี่ยนแปร ''i-e'' ในปัจจุบันกาลเอกพจน์", ["i"] = "''e'' กลายเป็น ''i'' เมื่อเน้น", ["í"] = "''i'' กลายเป็น ''í'' เมื่อเน้น", ["u-o"] = "การเปลี่ยนแปร ''u-o'' ในปัจจุบันกาลเอกพจน์", ["u"] = "''o'' กลายเป็น ''u'' เมื่อเน้น", ["ú"] = "''u'' กลายเป็น ''ú'' เมื่อเน้น", ["ei"] = "''i'' กลายเป็น ''ei'' เมื่อเน้น", } local vowel_alternant_to_cat = { ["i-e"] = "การเปลี่ยนแปร i-e ในปัจจุบันกาลเอกพจน์", ["i"] = " e กลายเป็น i เมื่อเน้น", ["í"] = " i กลายเป็น í เมื่อเน้น", ["u-o"] = "การเปลี่ยนแปร u-o ในปัจจุบันกาลเอกพจน์", ["u"] = " o กลายเป็น u เมื่อเน้น", ["ú"] = " u กลายเป็น ú เมื่อเน้น", ["ei"] = " i กลายเป็น ei เมื่อเน้น", } local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} person_number_to_reflexive_pronoun = { ["1s"] = "me", ["2s"] = "te", ["3s"] = "se", ["1p"] = "nos", ["2p"] = "vos", ["3p"] = "se", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "no_pres1_and_sub", "only3s", "only3sp", "only3p", "pp_inv", "irreg", "no_built_in", "e_ei_cat", } -- Remove any variant codes e.g. VAR_BR, VAR_PT, VAR_SUPERSEDED. Needs to be called from [[Module:pt-headword]] on the -- output of do_generate_forms(). `keep_superseded` leaves VAR_SUPERSEDED; used in the `canonicalize` function of -- show_forms() because we then process and remove it in `generate_forms`. FIXME: Use metadata for this once it's -- supported in [[Module:inflection utilities]]. function export.remove_variant_codes(form, keep_superseded) return rsub(form, keep_superseded and var_code_no_superseded_c or var_code_c, "") end -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"short_pp_ms", "short|m|s|past|part"}, {"short_pp_fs", "short|f|s|past|part"}, {"short_pp_mp", "short|m|p|past|part"}, {"short_pp_fp", "short|f|p|past|part"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{pt-verb form of}}. -- For example, for a reflexive-only verb like [[esbaldar-se]], we want to be able to use {{pt-verb form of}} on -- [[esbalde]] (which should mention that it is a part of 'me esbalde', first-person singular present subjunctive, -- and 'se esbalde', third-person singular present subjunctive) or on [[esbaldamos]] (which should mention that it -- is a part of 'esbaldamo-nos', first-person plural present indicative or preterite). Similarly, we want to use -- {{pt-verb form of}} on [[esbaldando]] (which should mention that it is a part of 'se ... esbaldando', syntactic -- variant of [[esbaldando-se]], which is the gerund of [[esbaldar-se]]). To do this, we need to be able to map -- non-reflexive parts like [[esbalde]], [[esbaldamos]], [[esbaldando]], etc. to their reflexive equivalent(s), to -- the tag(s) of the equivalent(s), and, in the case of forms like [[esbaldando]], [[esbaldar]] and imperatives, to -- the separated syntactic variant of the verb+clitic combination. We do this by creating slots for the -- non-reflexive part equivalent of each basic reflexive slot, and for the separated syntactic-variant equivalent -- of each basic reflexive slot that is formed of verb+clitic. We use slots in this way to deal with multiword -- lemmas. Note that we run into difficulties mapping between reflexive verbs, non-reflexive part equivalents, and -- separated syntactic variants if a slot contains more than one form. To handle this, if there are the same number -- of forms in two slots we're trying to match up, we assume the forms match one-to-one; otherwise we don't match up -- the two slots (which means {{pt-verb form of}} won't work in this case, but such a case is extremely rare and not -- worth worrying about). Alternatives that handle this "properly" are significantly more complicated and require -- non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "pt-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{pt-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "pres|ind", person_number_list) add_basic_personal_slot("impf", "impf|ind", person_number_list) add_basic_personal_slot("pret", "pret|ind", person_number_list) add_basic_personal_slot("plup", "plup|ind", person_number_list) add_basic_personal_slot("fut", "fut|ind", person_number_list) add_basic_personal_slot("cond", "cond", person_number_list) add_basic_personal_slot("pres_sub", "pres|sub", person_number_list) add_basic_personal_slot("impf_sub", "impf|sub", person_number_list) add_basic_personal_slot("fut_sub", "fut|sub", person_number_list) add_basic_personal_slot("imp", "imp", imp_person_number_list) add_basic_personal_slot("pers_inf", "pers|inf", person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'não' + subjunctive. add_basic_personal_slot("neg_imp", "neg|imp", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[esbaldando]] mapping to [[esbaldando-me]] -- (only [[esbaldando-se]]) or [[esbaldar]] mapping to [[esbaldar-me]] (only [[esbaldar-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values(separated_groups, data) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local retval = {form = separated_group[1], footnotes = footnotes} table.insert(retvals, retval) end return retvals end local function simple_choice(choices) return function(separated_groups, data) if #separated_groups > 1 then data.parse_err("For spec '" .. data.prefix .. ":', only one value currently allowed") end if #separated_groups[1] > 1 then data.parse_err("For spec '" .. data.prefix .. ":', no footnotes currently allowed") end local choice = separated_groups[1][1] if not m_table.contains(choices, choice) then data.parse_err("For spec '" .. data.prefix .. ":', saw value '" .. choice .. "' but expected one of '" .. table.concat(choices, ",") .. "'") end return choice end end for _, overridable_stem in ipairs { "pres_unstressed", "pres_stressed", "pres1_and_sub", -- Don't include pres1; use pres_1s if you need to override just that form "impf", "full_impf", "pret_base", "pret", {"pret_conj", simple_choice({"irreg", "ar", "er", "ir"}) }, "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", {"sub_conj", simple_choice({"ar", "er"}) }, "plup", "impf_sub", "fut_sub", "pers_inf", "pp", "short_pp", } do if type(overridable_stem) == "string" then overridable_stems[overridable_stem] = allow_multiple_values else local stem, validator = unpack(overridable_stem) overridable_stems[stem] = validator end end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `vowel_alt`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/z, g/gu, gu/gü, g/j) occur automatically as appropriate for the ending. 2. If the stem begins with an acute accent, the accent is moved onto the last vowel of the prefix (for handling verbs in -uar such as [[minguar]], pres_3s 'míngua'). 3. If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. 4. If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem, e.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. 5. If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1_and_sub: Overriding stem for 1s present indicative and the entire subjunctive. Only set by irregular verbs and by the indicators `no_pres_stressed` (e.g. [[precaver]]) and `no_pres1_and_sub` (since verbs of this sort, e.g. [[puir]], are missing the entire subjunctive as well as the 1s present indicative). Used by many irregular verbs, e.g. [[caber]], verbs in '-air', [[dizer]], [[ter]], [[valer]], etc. Some verbs set this and then supply an override for the pres_1sg if it's irregular, e.g. [[saber]], with irregular subjunctive stem "saib-" and special 1s present indicative "sei". -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres1_and_sub if given, else pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to pres1_and_sub if given, else the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- sub_conj: Determines the set of endings used in the subjunctive. Should be one of "ar" or "er". -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- full_impf: The full imperfect stem missing only the endings (-a, -as, -am, etc.). Used for verbs with irregular imperfects such as [[ser]], [[ter]], [[vir]] and [[pôr]]. Overrides must be supplied for the impf_1p and impf_2p due to these forms having an accent on the stem. -- pret_base: The preterite stem (not including the -a-/-e-/-i- stem suffix). Defaults to the infinitive stem. -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.). Used for verbs with irregular preterites (pret_conj == "irreg") such as [[fazer]], [[poder]], [[trazer]], etc. Overrides must be supplied for the pret_1s and pret_3s. Defaults to `pret_base` + the accented conjugation vowel. -- pret_conj: Determines the set of endings used in the preterite. Should be one of "ar", "er", "ir" or "irreg". Defaults to the conjugation as determined from the infinitive. When pret_conj == "irreg", stem `pret` is used, otherwise `pret_base`. -- fut: The future stem. Defaults to the infinitive stem + the unaccented conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- fut_sub: The future subjunctive stem. Defaults to `pret`. -- plup: The pluperfect stem. Defaults to `pret`. -- pers_inf: The personal infinitive stem. Defaults to the infinitive stem + the accented conjugation vowel. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + "ado" for -ar verbs, otherwise infinitive stem + "ido". -- short_pp: The short masculine singular past participle, for verbs with such a form. No default. -- pp_inv: True if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- (1) Verbs with short past participles: need to specify the short pp explicitly. -- -- aceitar: use <short_pp:aceito[Brazil],aceite[Portugal]> -- anexar, completar, expressar, expulsar, findar, fritar, ganhar, gastar, limpar, pagar, pasmar, pegar, soltar: -- use <short_pp:anexo> etc. -- assentar: use <short_pp:assente> -- entregar: use <short_pp:entregue> -- enxugar: use <short_pp:enxuto> -- matar: use <short_pp:morto> -- -- (2) Verbs with orthographic consonant alternations: handled automatically. -- -- -car (brincar, buscar, pecar, trancar, etc.): automatically handled in combine_stem_ending() -- -çar (alcançar, começar, laçar): automatically handled in combine_stem_ending() -- -gar (apagar, cegar, esmagar, largar, navegar, resmungar, sugar, etc.): automatically handled in combine_stem_ending() -- -- (3) Verbs with vowel alternations: need to specify the alternation explicitly unless it always happens, in -- which case it's handled automatically through an entry below. -- -- esmiuçar changing to esmiúço: use <ú> -- faiscar changing to faísco: use <í> -- -iar changing to -eio (ansiar, incendiar, mediar, odiar, remediar, etc.): use <ei> -- -izar changing to -ízo (ajuizar, enraizar, homogeneizar, plebeizar, etc.): use <í> -- mobiliar changing to mobílio: use <í> -- reusar changing to reúso: use <ú> -- saudar changing to saúdo: use <ú> -- tuitar/retuitar changing to (re)tuíto: use <í> { -- dar, desdar match = match_against_verbs("dar", {"^", "^des", "^re"}), forms = { pres_1s = "dou", pres_2s = "dás", pres_3s = "dá", -- damos, dais regular pres_3p = "dão", pret = "dé", pret_conj = "irreg", pret_1s = "dei", pret_3s = "deu", pres_sub_1s = "dê", pres_sub_2s = "dês", pres_sub_3s = "dê", pres_sub_1p = {"demos", "dêmos"}, -- deis regular pres_sub_3p = {"deem", VAR_SUPERSEDED .. "dêem"}, irreg = true, } }, { -- -ear (frear, nomear, semear, etc.) match = "ear", forms = { pres_stressed = "ei", e_ei_cat = true, } }, { -- estar match = match_against_verbs("estar", {"^", "sob", "sobr"}), forms = { pres_1s = "estou", pres_2s = "estás", pres_3s = "está", -- FIXME, estámos is claimed as an alternative pres_1p in the old conjugation data, but I believe this is garbage pres_3p = "estão", pres1_and_sub = "estej", -- only for subjunctive as we override pres_1s sub_conj = "er", pret = "estivé", pret_conj = "irreg", pret_1s = "estive", pret_3s = "esteve", -- [[sobestar]], [[sobrestar]] are transitive so they have fully inflected past participles pp_inv = function(base, prefix) return prefix == "" end, irreg = true, } }, { -- tar (clipping of estar) match = "^tar", forms = { pres_1s = "tou", pres_2s = "tás", pres_3s = "tá", pres_3p = "tão", pres1_and_sub = "tej", -- only for subjunctive as we override pres_1s sub_conj = "er", pret = "tivé", pret_conj = "irreg", pret_1s = "tive", pret_3s = "teve", --FIXME: Needs support for forms that are just "tar" to become "tá" instead in Brazil. pp_inv = true, irreg = true, } }, { -- It appears that only [[resfolegar]] has proparoxytone forms, not [[folegar]] or [[tresfolegar]]. match = "^resfolegar", forms = { pres_stressed = {"resfóleg", "resfoleg"}, irreg = true, } }, { -- aguar/desaguar/enxaguar, ambiguar/apaziguar/averiguar, minguar, cheguar?? (obsolete variant of [[chegar]]) match = "guar", forms = { -- combine_stem_ending() will move the acute accent backwards so it sits after the last vowel in [[minguar]] pres_stressed = {{form = AC .. "gu", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = "gu", footnotes = {"[โปรตุเกสแบบยุโรป]"}}}, pres_sub_stressed = { {form = AC .. "gu", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = "gu", footnotes = {"[โปรตุเกสแบบยุโรป]"}}, {form = AC .. VAR_SUPERSEDED .. "gü", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = VAR_SUPERSEDED .. "gú", footnotes = {"[โปรตุเกสแบบยุโรป]"}}, }, pres_sub_unstressed = {"gu", {form = VAR_SUPERSEDED .. "gü", footnotes = {"[โปรตุเกสแบบบราซิล]"}}}, pret_1s = {"guei", {form = VAR_SUPERSEDED .. "güei", footnotes = {"[โปรตุเกสแบบบราซิล]"}}}, } }, { -- adequar/readequar, antiquar/obliquar, apropinquar match = "quar", forms = { -- combine_stem_ending() will move the acute accent backwards so it sits after the last vowel in [[apropinquar]] pres_stressed = {{form = AC .. "qu", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = "qu", footnotes = {"[โปรตุเกสแบบยุโรป]"}}}, pres_sub_stressed = { {form = AC .. "qu", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = "qu", footnotes = {"[โปรตุเกสแบบยุโรป]"}}, {form = AC .. VAR_SUPERSEDED .. "qü", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = VAR_SUPERSEDED .. "qú", footnotes = {"[โปรตุเกสแบบยุโรป]"}}, }, pres_sub_unstressed = {"qu", {form = VAR_SUPERSEDED .. "qü", footnotes = {"[โปรตุเกสแบบบราซิล]"}}}, pret_1s = {"quei", {form = VAR_SUPERSEDED .. "qüei", footnotes = {"[โปรตุเกสแบบบราซิล]"}}}, } }, { -- coar match = "^coar", forms = { pres_1s = {"coo", {form = VAR_SUPERSEDED .. "côo", footnotes = {"[โปรตุเกสแบบบราซิล]"}}}, pres_2s = {"coas", VAR_SUPERSEDED .. "côas"}, pres_3s = {"coa", VAR_SUPERSEDED .. "côa"}, } }, { -- maquiar match = "maquiar", forms = { pres_stressed = {"maqui", {form = "maquei", footnotes = {"[ไม่ทางการ, ไม่ควรใช้]"}}}, } }, { -- -oar (abençoar, coroar, enjoar, perdoar, etc.) match = "oar", forms = { pres_1s = {"oo", {form = VAR_SUPERSEDED .. "ôo", footnotes = {"[โปรตุเกสแบบบราซิล]"}}}, } }, { -- -oiar (apoiar, boiar) match = "oiar", forms = { pres_stressed = {"oi", {form = VAR_SUPERSEDED .. "ói", footnotes = {"[โปรตุเกสแบบบราซิล]"}}}, } }, { -- parar match = "^parar", forms = { pres_3s = {"para", VAR_SUPERSEDED .. "pára"}, } }, { -- pelar match = "^pelar", forms = { pres_1s = {"pelo", VAR_SUPERSEDED .. "pélo"}, pres_2s = {"pelas", VAR_SUPERSEDED .. "pélas"}, pres_3s = {"pela", VAR_SUPERSEDED .. "péla"}, } }, -------------------------------------------------------------------------------------------- -- -er -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- precaver: use <no_pres_stressed> -- -cer (verbs in -ecer, descer, vencer, etc.): automatically handled in combine_stem_ending() -- -ger (proteger, reger, etc.): automatically handled in combine_stem_ending() -- -guer (erguer/reerguer/soerguer): automatically handled in combine_stem_ending() { -- benzer match = "benzer", forms = {short_pp = "bento"} }, { -- caber match = "caber", forms = { pres1_and_sub = "caib", pret = "coubé", pret_1s = "coube", pret_3s = "coube", pret_conj = "irreg", irreg = true, } }, { -- crer, descrer match = "crer", forms = { pres_2s = "crês", pres_3s = "crê", pres_2p = "credes", pres_3p = {"creem", VAR_SUPERSEDED .. "crêem"}, pres1_and_sub = "crei", irreg = true, } }, { -- dizer, bendizer, condizer, contradizer, desdizer, maldizer, predizer, etc. match = "dizer", forms = { -- use 'digu' because we're in a front environment; if we use 'dig', we'll get '#dijo' pres1_and_sub = "digu", pres_3s = "diz", pret = "dissé", pret_conj = "irreg", pret_1s = "disse", pret_3s = "disse", pp = "dito", fut = "dir", imp_2s = {"diz", "dize"}, -- per Infopédia irreg = true, } }, { -- eleger, reeleger match = "eleger", forms = {short_pp = "eleito"} }, { -- acender, prender; not desprender, etc. match = match_against_verbs("ender", {"^ac", "^pr"}), forms = {short_pp = "eso"} }, { -- fazer, afazer, contrafazer, desfazer, liquefazer, perfazer, putrefazer, rarefazer, refazer, satisfazer, tumefazer match = "fazer", forms = { pres1_and_sub = "faç", pres_3s = "faz", pret = "fizé", pret_conj = "irreg", pret_1s = "fiz", pret_3s = "fez", pp = "feito", fut = "far", imp_2s = {"faz", {form = "faze", footnotes = {"[Brazil only]"}}}, -- per Priberam irreg = true, } }, { match = "^haver", forms = { pres_1s = "hei", pres_2s = "hás", pres_3s = "há", pres_1p = {"havemos", "hemos"}, pres_2p = {"haveis", "heis"}, pres_3p = "hão", pres1_and_sub = "haj", -- only for subjunctive as we override pres_1s pret = "houvé", pret_conj = "irreg", pret_1s = "houve", pret_3s = "houve", imp_2p = "havei", irreg = true, } }, -- reaver below under r- { -- jazer, adjazer match = "jazer", forms = { pres_3s = "jaz", imp_2s = {"jaz", "jaze"}, -- per Infopédia irreg = true, } }, { -- ler, reler, tresler; not excel(l)er, valer, etc. match = match_against_verbs("ler", {"^", "^re", "tres"}), forms = { pres_2s = "lês", pres_3s = "lê", pres_2p = "ledes", pres_3p = {"leem", VAR_SUPERSEDED .. "lêem"}, pres1_and_sub = "lei", irreg = true, } }, { -- morrer, desmorrer match = "morrer", forms = {short_pp = "morto"} }, { -- doer, moer/remoer, roer/corroer, soer match = "oer", forms = { pres_1s = function(base, prefix) return prefix ~= "s" and {"oo", VAR_SUPERSEDED .. "ôo"} or nil end, pres_2s = "óis", pres_3s = "ói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() only3sp = function(base, prefix) return prefix == "d" end, no_pres1_and_sub = function(base, prefix) return prefix == "s" end, irreg = true, } }, { -- perder match = "perder", forms = { -- use 'perqu' because we're in a front environment; if we use 'perc', we'll get '#perço' pres1_and_sub = "perqu", irreg = true, } }, { -- poder match = "poder", forms = { pres1_and_sub = "poss", pret = "pudé", pret_1s = "pude", pret_3s = "pôde", pret_conj = "irreg", irreg = true, } }, { -- prazer, aprazer, comprazer, desprazer match = "prazer", forms = { pres_3s = "praz", pret = "prouvé", pret_1s = "prouve", pret_3s = "prouve", pret_conj = "irreg", only3sp = function(base, prefix) return not prefix:find("com$") end, irreg = true, } }, -- prover below, just below ver { -- requerer; must precede querer match = "requerer", forms = { -- old module claims alt pres_3s 'requere'; not in Priberam, Infopédia or conjugacao.com.br pres_3s = "requer", pres1_and_sub = "requeir", imp_2s = {{form = "requere", footnotes = {"[Brazil only]"}}, "requer"}, -- per Priberam -- regular preterite, unlike [[querer]] irreg = true, } }, { -- querer, desquerer, malquerer match = "querer", forms = { -- old module claims alt pres_3s 'quere'; not in Priberam, Infopédia or conjugacao.com.br pres_1s = "quero", pres_3s = "quer", pres1_and_sub = "queir", -- only for subjunctive as we override pres_1s pret = "quisé", pret_1s = "quis", pret_3s = "quis", pret_conj = "irreg", imp_2s = {{form = "quere", footnotes = {"[Brazil only]"}}, {form = "quer", footnotes = {"[Brazil only]"}}}, -- per Priberam irreg = true, } }, { match = "reaver", forms = { no_pres_stressed = true, pret = "reouvé", pret_conj = "irreg", pret_1s = "reouve", pret_3s = "reouve", irreg = true, } }, { -- saber, ressaber match = "saber", forms = { pres_1s = "sei", pres1_and_sub = "saib", -- only for subjunctive as we override pres_1s pret = "soubé", pret_1s = "soube", pret_3s = "soube", pret_conj = "irreg", irreg = true, } }, { -- escrever/reescrever, circunscrever, descrever/redescrever, inscrever, prescrever, proscrever, subscrever, -- transcrever, others? match = "screver", forms = { pp = "scrito", irreg = true, } }, { -- suspender match = "suspender", forms = {short_pp = "suspenso"} }, { match = "^ser", forms = { pres_1s = "sou", pres_2s = "és", pres_3s = "é", pres_1p = "somos", pres_2p = "sois", pres_3p = "são", pres1_and_sub = "sej", -- only for subjunctive as we override pres_1s full_impf = "er", impf_1p = "éramos", impf_2p = "éreis", pret = "fô", pret_1s = "fui", pret_3s = "foi", pret_conj = "irreg", imp_2s = "sê", imp_2p = "sede", pp_inv = true, irreg = true, } }, { -- We want to match abster, conter, deter, etc. but not abater, cometer, etc. No way to avoid listing each verb. match = match_against_verbs("ter", {"abs", "^a", "con", "de", "entre", "man", "ob", "^re", "sus", "^"}), forms = { pres_2s = function(base, prefix) return prefix == "" and "tens" or "téns" end, pres_3s = function(base, prefix) return prefix == "" and "tem" or "tém" end, pres_2p = "tendes", pres_3p = "têm", pres1_and_sub = "tenh", full_impf = "tinh", impf_1p = "tínhamos", impf_2p = "tínheis", pret = "tivé", pret_1s = "tive", pret_3s = "teve", pret_conj = "irreg", irreg = true, } }, { match = "trazer", forms = { -- use 'tragu' because we're in a front environment; if we use 'trag', we'll get '#trajo' pres1_and_sub = "tragu", pres_3s = "traz", pret = "trouxé", pret_1s = "trouxe", pret_3s = "trouxe", pret_conj = "irreg", fut = "trar", irreg = true, } }, { -- valer, desvaler, equivaler match = "valer", forms = { pres1_and_sub = "valh", irreg = true, } }, { -- coerir, incoerir --FIXME: This should be a part of the <i-e> section. It's an "i-e", but with accents to prevent a diphthong when it gets stressed. match = "coerir", forms = { vowel_alt = "i-e", pres1_and_sub = "coír", pres_sub_unstressed = "coir", } }, { -- We want to match antever etc. but not absolver, atrever etc. No way to avoid listing each verb. match = match_against_verbs("ver", {"ante", "des", "entre", "pre", "^re", "^"}), forms = { pres_2s = "vês", pres_3s = "vê", pres_2p = "vedes", pres_3p = {"veem", VAR_SUPERSEDED .. "vêem"}, pres1_and_sub = "vej", pret = "ví", pret_1s = "vi", pret_3s = "viu", pret_conj = "irreg", pp = "visto", irreg = true, } }, { -- [[prover]] and [[desprover]] have regular preterite and past participle match = "prover", forms = { pres_2s = "provês", pres_3s = "provê", pres_2p = "provedes", pres_3p = {"proveem", VAR_SUPERSEDED .. "provêem"}, pres1_and_sub = "provej", irreg = true, } }, { -- Only envolver, revolver. Not volver, desenvolver, devolver, evolver, etc. match = match_against_verbs("volver", {"^en", "^re"}), forms = {short_pp = "volto"}, }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- abolir: per Priberam: <no_pres1_and_sub> for Brazil, use <u-o> for Portugal -- barrir: use <only3sp> -- carpir, colorir, demolir: use <no_pres1_and_sub> -- descolorir: per Priberam: <no_pres_stressed> for Brazil, use <no_pres1_and_sub> for Portugal -- delir, espavorir, falir, florir, remir, renhir: use <no_pres_stressed> -- empedernir: per Priberam: <no_pres_stressed> for Brazil, use <i-e> for Portugal -- transir: per Priberam: <no_pres_stressed> for Brazil, regular for Portugal -- aspergir, despir, flectir/deflectir/genuflectir/genufletir/reflectir/refletir, mentir/desmentir, -- sentir/assentir/consentir/dissentir/pressentir/ressentir, convergir/divergir, aderir/adherir, -- ferir/auferir/conferir/deferir/desferir/diferir/differir/inferir/interferir/preferir/proferir/referir/transferir, -- gerir/digerir/ingerir/sugerir, preterir, competir/repetir, servir, advertir/animadvertir/divertir, -- vestir/investir/revestir/travestir, seguir/conseguir/desconseguir/desseguir/perseguir/prosseguir: use <i-e> -- inerir: use <i-e> (per Infopédia, and per Priberam for Brazil), use <i-e.only3sp> (per Priberam for Portugal) -- compelir/expelir/impelir/repelir: per Priberam: use <i-e> for Brazil, <no_pres1_and_sub> for Portugal (Infopédia -- says <i-e>); NOTE: old module claims short_pp 'repulso' but none of Priberam, Infopédia and conjugacao.com.br agree -- dormir, engolir, tossir, subir, acudir/sacudir, fugir, sumir/consumir (NOT assumir/presumir/resumir): use <u-o> -- polir/repolir (claimed in old module to have no pres stressed, but Priberam disagrees for both Brazil and -- Portugal; Infopédia lists repolir as completely regular and not like polir, but I think that's an error): use -- <u> -- premir: per Priberam: use <no_pres1_and_sub> for Brazil, <i> for Portugal (for Portugal, Priberam says -- primo/primes/prime, while Infopédia says primo/premes/preme; Priberam is probably more reliable) -- extorquir/retorquir use <no_pres1_and_sub> for Brazil, <u-o,u> for Portugal -- agredir/progredir/regredir/transgredir: use <i> -- denegrir, prevenir: use <i> -- eclodir: per Priberam: regular in Brazil, <u-o.only3sp> in Portugal (Infopédia says regular) -- cerzir: per Priberam: use <i> for Brazil, use <i-e> for Portugal (Infopédia says <i-e,i>) -- cergir: per Priberam: use <i-e> for Brazil, no conjugation given for Portugal (Infopédia says <i-e>) -- proibir/coibir: use <í> -- reunir: use <ú> -- -- -cir alternations (aducir, ressarcir): automatically handled in combine_stem_ending() -- -gir alternations (agir, dirigir, exigir): automatically handled in combine_stem_ending() -- -guir alternations (e.g. conseguir): automatically handled in combine_stem_ending() -- -quir alternations (e.g. extorquir): automatically handled in combine_stem_ending() { -- verbs in -air (cair, sair, trair and derivatives: decair/descair/recair, sobres(s)air, -- abstrair/atrair/contrair/distrair/extrair/protrair/retrair/subtrair) match = "air", forms = { pres1_and_sub = "ai", pres_2s = "ais", pres_3s = "ai", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- abrir/desabrir/reabrir match = "abrir", forms = {pp = "aberto"} }, { -- cobrir/descobrir/encobrir/recobrir/redescobrir match = "cobrir", forms = {vowel_alt = "u-o", pp = "coberto"} }, { -- conduzir, produzir, reduzir, traduzir, etc.; luzir, reluzir, tremeluzir match = "uzir", forms = { pres_3s = "uz", imp_2s = {"uz", "uze"}, -- per Infopédia irreg = true, } }, { -- parir match = "parir", forms = { pres1_and_sub = {{form = "pair", footnotes = {"[โบราณ, ปัจจุบันพบได้ยาก, บางครั้งไม่ควรใช้]"}}}, -- per Houaiss irreg = true, } }, { -- pedir, desimpedir, despedir, espedir, expedir, impedir -- medir -- comedir (per Priberam, no_pres_stressed in Brazil) match = match_against_verbs("edir", {"m", "p"}), forms = { pres1_and_sub = "eç", irreg = true, } }, { -- explodir, implodir match = "plodir", forms = { vowel_alt = {{form = "+", footnotes = {"[บราซิล]"}}, {form = "u-o", footnotes = {"[โปรตุเกส]"}}}, } }, { -- frigir match = "frigir", forms = {vowel_alt = "i-e", short_pp = "frito"}, }, { -- inserir match = "inserir", forms = {vowel_alt = "i-e", short_pp = {form = "inserto", footnotes = {"[โปรตุเกสแบบยุโรปเท่านั้น]"}}}, }, { -- ir match = "^ir", forms = { pres_1s = "vou", pres_2s = "vais", pres_3s = "vai", pres_1p = "vamos", pres_2p = "ides", pres_3p = "vão", pres_sub_1s = "vá", pres_sub_2s = "vás", pres_sub_3s = "vá", pres_sub_1p = "vamos", pres_sub_2p = "vades", pres_sub_3p = "vão", pret = "fô", pret_1s = "fui", pret_3s = "foi", pret_conj = "irreg", irreg = true, } }, { -- emergir, imergir, submergir match = "mergir", forms = {vowel_alt = {"i-e", "+"}, short_pp = "merso"}, }, { match = "ouvir", forms = { pres1_and_sub = {"ouç", "oiç"}, irreg = true, } }, { -- exprimir, imprimir, comprimir (but not descomprimir per Priberam), deprimir, oprimir/opprimir (but not reprimir, -- suprimir/supprimir per Priberam) match = match_against_verbs("primir", {"^com", "ex", "im", "de", "^o", "op"}), forms = {short_pp = "presso"} }, { -- rir, sorrir match = match_against_verbs("rir", {"^", "sor"}), forms = { pres_2s = "ris", pres_3s = "ri", pres_2p = "rides", pres_3p = "riem", pres1_and_sub = "ri", irreg = true, } }, { -- distinguir, extinguir match = "tinguir", forms = { short_pp = "tinto", -- gu/g alternations handled in combine_stem_ending() } }, { -- delinquir, arguir/redarguir -- NOTE: The following is based on delinquir, with arguir/redarguir by parallelism. -- In Priberam, delinquir and arguir are exactly parallel, but in Infopédia they aren't; only delinquir has -- alternatives like 'delínques'. I assume this is because forms like 'delínques' are Brazilian and -- Infopédia is from Portugal, so their coverage of Brazilian forms may be inconsistent. match = match_against_verbs("uir", {"delinq", "arg"}), forms = { -- use 'ü' because we're in a front environment; if we use 'u', we'll get '#delinco', '#argo' pres1_and_sub = {{form = AC .. "ü", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = "ü", footnotes = {"[โปรตุเกสแบบยุโรป]"}}}, -- FIXME: verify. This is by partial parallelism with the present subjunctive of verbs in -quar (also a -- front environment). Infopédia has 'delinquis ou delínques' and Priberam has 'delinqúis'. pres_2s = { {form = AC .. "ues", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = "uis", footnotes = {"[โปรตุเกสแบบยุโรป]"}}, -- This form should occur only with an infinitive 'delinqüir' etc. -- {form = AC .. VAR_SUPERSEDED .. "ües", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = VAR_SUPERSEDED .. "úis", footnotes = {"[โปรตุเกสแบบยุโรป]"}}, }, -- Same as previous. pres_3s = { {form = AC .. "ue", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = "ui", footnotes = {"[โปรตุเกสแบบยุโรป]"}}, -- This form should occur only with an infinitive 'delinqüir' etc. -- {form = AC .. VAR_SUPERSEDED .. "üe", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = VAR_SUPERSEDED .. "úi", footnotes = {"[โปรตุเกสแบบยุโรป]"}}, }, -- Infopédia has 'delinquem ou delínquem' and Priberam has 'delinqúem'. pres_3p = { {form = AC .. "uem", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = "uem", footnotes = {"[โปรตุเกสแบบยุโรป]"}}, -- This form should occur only with an infinitive 'delinqüir' etc. -- {form = AC .. VAR_SUPERSEDED .. "üem", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = VAR_SUPERSEDED .. "úem", footnotes = {"[โปรตุเกสแบบยุโรป]"}}, }, -- FIXME: The old module also had several other alternative forms (given as [123]_alt, not identified as -- obsolete): -- impf: delinquia/delinquía, delinquias/delinquías, delinquia/delinquía, delinquíamos, delinquíeis, delinquiam/delinquíam -- plup: delinquira/delinquíra, delinquiras/delinquíras, delinquira/delinquíra, delinquíramos, delinquíreis, delinquiram/delinquíram -- pres_1p = delinquimos/delinquímos, pres_2p = delinquis/delinquís -- pret = delinqui/delinquí, delinquiste/delinquíste, delinquiu, delinquimos/delinquímos, delinquistes/delinquístes, delinquiram/delinquíram -- pers_inf = delinquir, delinquires, delinquir, delinquirmos, delinquirdes, delinquirem/delinquírem -- fut_sub = delinquir, delinquires, delinquir, delinquirmos, delinquirdes, delinquirem/delinquírem -- -- None of these alternative forms can be found in the Infopédia, Priberam, Collins or Reverso conjugation -- tables, so their status is unclear, and I have omitted them. } }, { -- verbs in -truir (construir, destruir, reconstruir) but not obstruir/desobstruir, instruir, which are handled -- by the default -uir handler below match = match_against_verbs("struir", {"con", "de"}), forms = { pres_2s = {"stróis", "struis"}, pres_3s = {"strói", "strui"}, pres_3p = {"stroem", "struem"}, -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- verbs in -cluir (concluir, excluir, incluir): like -uir but has short_pp concluso etc. in Brazil match = "cluir", forms = { pres_2s = "cluis", pres_3s = "clui", -- all occurrences of accented í in endings handled in combine_stem_ending() short_pp = {form = "cluso", footnotes = {"[Brazil only]"}}, } }, { -- puir, ruir: like -uir but defective in pres_1s, all pres sub match = match_against_verbs("uir", {"^p", "^r"}), forms = { pres_2s = "uis", pres_3s = "ui", -- all occurrences of accented í in endings handled in combine_stem_ending() no_pres1_and_sub = true, irreg = true, } }, { -- remaining verbs in -uir (concluir/excluir/incluir/concruir/concruyr, abluir/diluir, afluir/fluir/influir, -- aluir, anuir, atribuir/contribuir/distribuir/redistribuir/retribuir/substituir, coevoluir/evoluir, -- constituir/destituir/instituir/reconstituir/restituir, derruir, diminuir, estatuir, fruir/usufruir, imbuir, -- imiscuir, poluir, possuir, pruir -- FIXME: old module lists short pp incluso for incluir that can't be verified, ask about this -- FIXME: handle -uyr verbs? match = function(verb) -- Don't match -guir verbs (e.g. [[seguir]], [[conseguir]]) or -quir verbs (e.g. [[extorquir]]) if verb:find("guir$") or verb:find("quir$") then return nil else return match_against_verbs("uir", {""})(verb) end end, forms = { pres_2s = "uis", pres_3s = "ui", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- We want to match advir, convir, devir, etc. but not ouvir, servir, etc. No way to avoid listing each verb. match = match_against_verbs("vir", {"ad", "^a", "con", "contra", "de", "^desa", "inter", "pro", "^re", "sobre", "^"}), forms = { pres_2s = function(base, prefix) return prefix == "" and "vens" or "véns" end, pres_3s = function(base, prefix) return prefix == "" and "vem" or "vém" end, pres_2p = "vindes", pres_3p = "vêm", pres1_and_sub = "venh", full_impf = "vinh", impf_1p = "vínhamos", impf_2p = "vínheis", pret = "vié", pret_1s = "vim", pret_3s = "veio", pret_conj = "irreg", pp = "vindo", irreg = true, } }, -------------------------------------------------------------------------------------------- -- misc -- -------------------------------------------------------------------------------------------- { -- pôr, antepor, apor, compor/decompor/descompor, contrapor, depor, dispor, expor, impor, interpor, justapor, -- opor, pospor, propor, repor, sobrepor, supor/pressupor, transpor, superseded forms like [[decompôr]], others? match = "p[oô]r", forms = { pres1_and_sub = "ponh", pres_2s = "pões", pres_3s = "põe", pres_1p = "pomos", pres_2p = "pondes", pres_3p = "põem", full_impf = "punh", impf_1p = "púnhamos", impf_2p = "púnheis", pret = "pusé", pret_1s = "pus", pret_3s = "pôs", pret_conj = "irreg", pers_inf = "po", gerund = "pondo", pp = "posto", irreg = true, } }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end -- Apply vowel alternations to stem. local function apply_vowel_alternations(stem, alternations) local alternation_stems = {} local saw_pres1_and_sub = false local saw_pres_stressed = false -- Process alternations other than +. for _, altobj in ipairs(alternations) do local alt = altobj.form local pres1_and_sub, pres_stressed, err -- Treat final -gu, -qu as a consonant, so the previous vowel can alternate (e.g. conseguir -> consigo). -- This means a verb in -guar can't have a u-ú alternation but I don't think there are any verbs like that. stem = rsub(stem, "([gq])u$", "%1" .. TEMPC1) if alt == "+" then -- do nothing yet elseif alt == "ei" then local before_last_vowel = rmatch(stem, "^(.*)i$") if not before_last_vowel then err = "stem should end in -i" else pres1_and_sub = nil pres_stressed = before_last_vowel .. "ei" end else local before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-[ui])$") if not before_last_vowel then before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-)$") end if alt == "i-e" then if last_vowel == "e" or last_vowel == "i" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel if last_vowel == "i" then pres_stressed = before_last_vowel .. "e" .. after_last_vowel end else err = "should have -e- or -i- as the last vowel" end elseif alt == "i" then if last_vowel == "e" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -e- as the last vowel" end elseif alt == "u-o" then if last_vowel == "o" or last_vowel == "u" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel if last_vowel == "u" then pres_stressed = before_last_vowel .. "o" .. after_last_vowel end else err = "should have -o- or -u- as the last vowel" end elseif alt == "u" then if last_vowel == "o" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -o- as the last vowel" end elseif alt == "í" then if last_vowel == "i" then pres_stressed = before_last_vowel .. "í" .. after_last_vowel else err = "should have -i- as the last vowel" end elseif alt == "ú" then if last_vowel == "u" then pres_stressed = before_last_vowel .. "ú" .. after_last_vowel else err = "should have -u- as the last vowel" end else error("Internal error: Unrecognized vowel alternation '" .. alt .. "'") end end if pres1_and_sub then pres1_and_sub = {form = pres1_and_sub:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres1_and_sub = true end if pres_stressed then pres_stressed = {form = pres_stressed:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres_stressed = true end table.insert(alternation_stems, { altobj = altobj, pres1_and_sub = pres1_and_sub, pres_stressed = pres_stressed, err = err }) end -- Now do +. We check to see which stems are used by other alternations and specify those so any footnotes are -- properly attached. for _, alternation_stem in ipairs(alternation_stems) do if alternation_stem.altobj.form == "+" then local stemobj = {form = stem, footnotes = alternation_stem.altobj.footnotes} alternation_stem.pres1_and_sub = saw_pres1_and_sub and stemobj or nil alternation_stem.pres_stressed = saw_pres_stressed and stemobj or nil end end return alternation_stems end -- Add the `stem` to the `ending` for the given `slot` and apply any phonetic modifications. -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, slot, prefix, stem, ending, dont_include_prefix) -- If the stem begins with an acute accent, this is a signal to move the accent onto the last vowel of the prefix. -- Cf. míngua of minguar. if stem:find("^" .. AC) then stem = rsub(stem, "^" .. AC, "") if dont_include_prefix then error("Internal error: Can't handle acute accent at beginning of stem if dont_include_prefix is given") end prefix = rsub(prefix, "([aeiouyAEIOUY])([^aeiouyAEIOUY]*)$", "%1" .. AC .. "%2") end -- Use the full stem for checking for -gui ending and such, because 'stem' is just 'u' for [[arguir]], -- [[delinquir]]. local full_stem = prefix .. stem -- Include the prefix in the stem unless dont_include_prefix is given (used for the past participle stem). if not dont_include_prefix then stem = prefix .. stem end -- If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter -- of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent -- on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems -- ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. if ending:find("^%*%*") then ending = rsub(ending, "^%*%*", "") if rfind(full_stem, "[gq]uí$") or not rfind(full_stem, V .. "[íú]$") then stem = remove_final_accent(stem) end end -- If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem. -- E.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. if ending:find("^%*") then ending = rsub(ending, "^%*", "") stem = remove_final_accent(stem) end -- If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent -- the two merging into a diphthong: -- * cair -> -- * pres: caímos, caís; -- * impf: all forms (caí-); -- * pret: caí, caíste (but not caiu), caímos, caístes, caíram; -- * plup: all forms (caír-); -- * impf_sub: all forms (caíss-); -- * fut_sub: caíres, caírem (but not cair, cairmos, cairdes) -- * pp: caído (but not gerund caindo) -- * atribuir, other verbs in -uir -> same pattern as for cair etc. -- * roer -> -- * pret: roí -- * impf: all forms (roí-) -- * pp: roído if ending:find("^i") and full_stem:find("[aeiou]$") and not full_stem:find("[gq]u$") and ending ~= "ir" and ending ~= "iu" and ending ~= "indo" and not ending:find("^ir[md]") then ending = ending:gsub("^i", "í") end -- Spelling changes in the stem; it depends on whether the stem given is the pre-front-vowel or -- pre-back-vowel variant, as indicated by `frontback`. We want these front-back spelling changes to happen -- between stem and ending, not between prefix and stem; the prefix may not have the same "front/backness" -- as the stem. local is_front = rfind(ending, "^[eiéíê]") if base.frontback == "front" and not is_front then stem = stem:gsub("c$", "ç") -- conhecer -> conheço, vencer -> venço, descer -> desço stem = stem:gsub("g$", "j") -- proteger -> protejo, fugir -> fujo stem = stem:gsub("gu$", "g") -- distinguir -> distingo, conseguir -> consigo stem = stem:gsub("qu$", "c") -- extorquir -> exturco stem = stem:gsub("([gq])ü$", "%1u") -- argüir (superseded) -> arguo, delinqüir (superseded) -> delinquo elseif base.frontback == "back" and is_front then -- The following changes are all superseded so we don't do them: -- averiguar -> averigüei, minguar -> mingüei; antiquar -> antiqüei, apropinquar -> apropinqüei -- stem = stem:gsub("([gq])u$", "%1ü") stem = stem:gsub("g$", "gu") -- cargar -> carguei, apagar -> apaguei stem = stem:gsub("c$", "qu") -- marcar -> marquei stem = stem:gsub("ç$", "c") -- começar -> comecei -- j does not go to g here; desejar -> deseje not #desege end return stem .. ending end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, slot, base.prefix, stem, ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function construct_stems(base, vowel_alt) local stems = {} stems.pres_unstressed = base.stems.pres_unstressed or base.inf_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or base.stems.pres_stressed or vowel_alt.pres_stressed or base.inf_stem stems.pres1_and_sub = -- If no_pres_stressed given, the entire subjunctive is missing. base.no_pres_stressed and {} or -- If no_pres1_and_sub given, pres1 and entire subjunctive are missing. base.no_pres1_and_sub and {} or base.stems.pres1_and_sub or vowel_alt.pres1_and_sub or nil stems.pres1 = base.stems.pres1 or stems.pres1_and_sub or stems.pres_stressed stems.impf = base.stems.impf or base.inf_stem stems.full_impf = base.stems.full_impf stems.pret_base = base.stems.pret_base or base.inf_stem stems.pret = base.stems.pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret_base), function(form) return form .. base.conj_vowel end) stems.pret_conj = base.stems.pret_conj or base.conj stems.fut = base.stems.fut or base.inf_stem .. base.conj stems.cond = base.stems.cond or stems.fut stems.pres_sub_stressed = base.stems.pres_sub_stressed or stems.pres1 stems.pres_sub_unstressed = base.stems.pres_sub_unstressed or stems.pres1_and_sub or stems.pres_unstressed stems.sub_conj = base.stems.sub_conj or base.conj stems.plup = base.stems.plup or stems.pret stems.impf_sub = base.stems.impf_sub or stems.pret stems.fut_sub = base.stems.fut_sub or stems.pret stems.pers_inf = base.stems.pers_inf or base.inf_stem .. base.conj_vowel stems.pp = base.stems.pp or base.conj == "ar" and combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ado", "dont include prefix") or -- use combine_stem_ending esp. so we get roído, caído, etc. combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ido", "dont include prefix") stems.pp_ms = stems.pp local function masc_to_fem(form) if rfind(form, "o$") then return rsub(form, "o$", "a") else return form end end stems.pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.pp_ms), masc_to_fem) if base.stems.short_pp then stems.short_pp_ms = base.stems.short_pp stems.short_pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.short_pp_ms), masc_to_fem) end base.this_stems = stems end local function add_present_indic(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end local s2, s3, p1, p2, p3 if base.conj == "ar" then s2, s3, p1, p2, p3 = "as", "a", "amos", "ais", "am" elseif base.conj == "er" or base.conj == "or" then -- verbs in -por have the present overridden s2, s3, p1, p2, p3 = "es", "e", "emos", "eis", "em" elseif base.conj == "ir" then s2, s3, p1, p2, p3 = "es", "e", "imos", "is", "em" else error("Internal error: Unrecognized conjugation " .. base.conj) end addit("1s", stems.pres1, "o") addit("2s", stems.pres_stressed, s2) addit("3s", stems.pres_stressed, s3) addit("1p", stems.pres_unstressed, p1) addit("2p", stems.pres_unstressed, p2) addit("3p", stems.pres_stressed, p3) end local function add_present_subj(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end local s1, s2, s3, p1, p2, p3 if stems.sub_conj == "ar" then s1, s2, s3, p1, p2, p3 = "e", "es", "e", "emos", "eis", "em" else s1, s2, s3, p1, p2, p3 = "a", "as", "a", "amos", "ais", "am" end addit("1s", stems.pres_sub_stressed, s1) addit("2s", stems.pres_sub_stressed, s2) addit("3s", stems.pres_sub_stressed, s3) addit("1p", stems.pres_sub_unstressed, p1) addit("2p", stems.pres_sub_unstressed, p2) addit("3p", stems.pres_sub_stressed, p3) end local function add_finite_non_present(base) local stems = base.this_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end if stems.full_impf then -- An override needs to be supplied for the impf_1p and impf_2p due to the written accent on the stem. add_tense("impf", stems.full_impf, "a", "as", "a", {}, {}, "am") elseif base.conj == "ar" then add_tense("impf", stems.impf, "ava", "avas", "ava", "ávamos", "áveis", "avam") else add_tense("impf", stems.impf, "ia", "ias", "ia", "íamos", "íeis", "iam") end -- * at the beginning of the ending means to remove a final accent from the preterite stem. if stems.pret_conj == "irreg" then add_tense("pret", stems.pret, {}, "*ste", {}, "*mos", "*stes", "*ram") elseif stems.pret_conj == "ar" then add_tense("pret", stems.pret_base, "ei", "aste", "ou", {{form = VAR_BR .. "amos", footnotes = {"[โปรตุเกสแบบบราซิล]"}}, {form = VAR_PT .. "ámos", footnotes = {"[โปรตุเกสแบบยุโรป]"}}}, "astes", "aram") elseif stems.pret_conj == "er" then add_tense("pret", stems.pret_base, "i", "este", "eu", "emos", "estes", "eram") else add_tense("pret", stems.pret_base, "i", "iste", "iu", "imos", "istes", "iram") end -- * at the beginning of the ending means to remove a final accent from the stem. -- ** is similar but is "conditional" on a consonant preceding the final vowel. add_tense("plup", stems.plup, "**ra", "**ras", "**ra", "ramos", "reis", "**ram") add_tense("impf_sub", stems.impf_sub, "**sse", "**sses", "**sse", "ssemos", "sseis", "**ssem") add_tense("fut_sub", stems.fut_sub, "*r", "**res", "*r", "*rmos", "*rdes", "**rem") local mark = TEMP_MESOCLITIC_INSERTION_POINT add_tense("fut", stems.fut, mark .. "ei", mark .. "ás", mark .. "á", mark .. "emos", mark .. "eis", mark .. "ão") add_tense("cond", stems.cond, mark .. "ia", mark .. "ias", mark .. "ia", mark .. "íamos", mark .. "íeis", mark .. "iam") -- Different stems for different parts of the personal infinitive to correctly handle forms of [[sair]] and [[pôr]]. add_tense("pers_inf", base.non_prefixed_verb, "", {}, "", {}, {}, {}) add_tense("pers_inf", stems.pers_inf, {}, "**res", {}, "*rmos", "*rdes", "**rem") end local function add_non_finite_forms(base) local stems = base.this_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below for -- "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.verb}) end end -- verbs in -por have the gerund overridden local ger_ending = base.conj == "ar" and "ando" or base.conj == "er" and "endo" or "indo" addit("gerund", stems.pres_unstressed, ger_ending) -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the same -- form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate clitic -- pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic pronouns won't be -- added, and {{pt-verb form of}} will wrongly consider all these combinations as possible inflections of the bare -- gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, stems.pres_unstressed, ger_ending) end end -- Skip the long/short past participle footnotes if called from {{pt-verb}} so they don't show in the headword. local long_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "pt-verb" and {long_pp_footnote} or nil addit("pp_ms", stems.pp_ms, "", long_pp_footnotes) if not base.pp_inv then addit("pp_fs", stems.pp_fs, "", long_pp_footnotes) addit("pp_mp", stems.pp_ms, "s", long_pp_footnotes) addit("pp_fp", stems.pp_fs, "s", long_pp_footnotes) end if stems.short_pp_ms then local short_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "pt-verb" and {short_pp_footnote} or nil addit("short_pp_ms", stems.short_pp_ms, "", short_pp_footnotes) if not base.pp_inv then addit("short_pp_fs", stems.short_pp_fs, "", short_pp_footnotes) addit("short_pp_mp", stems.short_pp_ms, "s", short_pp_footnotes) addit("short_pp_fp", stems.short_pp_fs, "s", short_pp_footnotes) end end end local function copy_forms_to_imperatives(base) -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) if not skip_slot(base, "imp_2p") then -- Copy pres2p to imperative 2p minus -s since they are almost always the same. -- But not if there's an override, to avoid possibly throwing an error. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) if not form:find("s$") then error("Can't derive second-person plural imperative from second-person plural present indicative " .. "because form '" .. form .. "' doesn't end in -s") end return rsub(form, "s$", "") end)) end -- Copy subjunctives to imperatives, unless there's an override for the given slot (as with the imp_1p of [[ir]]). for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = "[[" .. clitic .. "]]" .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Add the appropriate clitic pronouns in `clitics` to the forms in `base_slot`. `store_cliticized_form` is a function -- of three arguments (clitic, formobj, cliticized_form) and should store the cliticized form for the specified clitic -- and form object. local function suffix_clitic_to_forms(base, base_slot, clitics, store_cliticized_form) if not base.forms[base_slot] then -- This can happen, e.g. in only3s/only3sp/only3p verbs. return end local autolink = not base.alternant_multiword_spec.args.noautolinkverb for _, formobj in ipairs(base.forms[base_slot]) do for _, clitic in ipairs(clitics) do local cliticized_form if formobj.form:find(TEMP_MESOCLITIC_INSERTION_POINT) then -- mesoclisis in future and conditional local infinitive, suffix = rmatch(formobj.form, "^(.*)" .. TEMP_MESOCLITIC_INSERTION_POINT .. "(.*)$") if not infinitive then error("Internal error: Can't find mesoclitic insertion point in slot '" .. base_slot .. "', form '" .. formobj.form .. "'") end local full_form = infinitive .. suffix if autolink and not infinitive:find("%[%[") then infinitive = "[[" .. infinitive .. "]]" end cliticized_form = autolink and infinitive .. "-[[" .. clitic .. "]]-[[" .. full_form .. "|" .. suffix .. "]]" or infinitive .. "-" .. clitic .. "-" .. suffix else local clitic_suffix = autolink and "-[[" .. clitic .. "]]" or "-" .. clitic local form_needs_link = autolink and not formobj.form:find("%[%[") if base_slot:find("1p$") then -- Final -s disappears: esbaldávamos + nos -> esbaldávamo-nos, etc. cliticized_form = formobj.form:gsub("s$", "") if form_needs_link then cliticized_form = "[[" .. formobj.form .. "|" .. cliticized_form .. "]]" end else cliticized_form = formobj.form if form_needs_link then cliticized_form = "[[" .. cliticized_form .. "]]" end end cliticized_form = cliticized_form .. clitic_suffix end store_cliticized_form(clitic, formobj, cliticized_form) end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local clitic if not do_reflexive then clitic = base.clitic elseif slot:find("[123]") then local persnum = slot:match("^.*_(.-)$") clitic = person_number_to_reflexive_pronoun[persnum] else clitic = "se" end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = not slot:find("_sub") -- Maybe generate non-reflexive parts and separated syntactic variants for use in {{pt-verb form of}}. -- See comment in add_slots() above `need_special_verb_form_of_slots`. Check for do_joined so we only -- run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "pt-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[esbaldando]] is a -- non-reflexive equivalent of [[esbaldando-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, clitic, " ... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then suffix_clitic_to_forms(base, slot, {clitic}, function(clitic, formobj, cliticized_form) formobj.form = cliticized_form end ) end elseif not do_joined then -- Add clitic as separate word before all other forms. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, clitic, " ", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{pt-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) -- Copy subjunctives to negative imperatives, preceded by "não". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "não " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[não]] " .. form else return "[[não]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end -- Remove special characters added to future and conditional forms to indicate mesoclitic insertion points. local function remove_mesoclitic_insertion_points(base) for slot, forms in pairs(base.forms) do if slot:find("^fut_") or slot:find("^cond_") then for _, form in ipairs(forms) do form.form = form.form:gsub(TEMP_MESOCLITIC_INSERTION_POINT, "") end end end end -- If called from {{pt-verb}}, remove superseded forms; otherwise add a footnote indicating they are superseded. local function process_superseded_forms(base) if base.alternant_multiword_spec.source_template == "pt-verb" then for slot, forms in pairs(base.forms) do -- As an optimization, check if there are any superseded forms and don't do anything if not. local saw_superseded = false for _, form in ipairs(forms) do if form.form:find(VAR_SUPERSEDED) then saw_superseded = true break end end if saw_superseded then base.forms[slot] = iut.flatmap_forms(base.forms[slot], function(form) if form:find(VAR_SUPERSEDED) then return {} else return {form} end end) end end else for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if form.form:find(VAR_SUPERSEDED) then form.footnotes = iut.combine_footnotes(form.footnotes, {"[superseded]"}) end end end end end local function conjugate_verb(base) for _, vowel_alt in ipairs(base.vowel_alt_stems) do construct_stems(base, vowel_alt) add_present_indic(base) add_present_subj(base) end add_finite_non_present(base) add_non_finite_forms(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). copy_forms_to_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[esbalda-te]] but [[não]] [[te]] [[esbalde]]. if base.refl then -- This should happen after remove_monosyllabic_accents() so the * marking the preservation of monosyllabic -- accents doesn't end up in the middle of a word. add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end remove_mesoclitic_insertion_points(base) process_superseded_forms(base) end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif rfind(first_element, ":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) end else local comma_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*,%s*") for j = 1, #comma_separated_groups do local alt = comma_separated_groups[j][1] if not vowel_alternants[alt] then if #comma_separated_groups == 1 then parse_err("Unrecognized spec or vowel alternant '" .. alt .. "'") else parse_err("Unrecognized vowel alternant '" .. alt .. "'") end end if base.vowel_alt then for _, existing_alt in ipairs(base.vowel_alt) do if existing_alt.form == alt then parse_err("Vowel alternant '" .. alt .. "' specified twice") end end else base.vowel_alt = {} end table.insert(base.vowel_alt, {form = alt, footnotes = fetch_footnotes(comma_separated_groups[j])}) end end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form -- so we can use it below in the 'lemma_linked' form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb and reflexive pronoun. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve -- links in multiword lemmas and include links in non-lemma forms rather than allowing -- the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} if not base.no_built_in then for _, built_in_conj in ipairs(built_in_conjugations) do if type(built_in_conj.match) == "function" then base.prefix, base.non_prefixed_verb = built_in_conj.match(base.verb) elseif built_in_conj.match:find("^%^") and rsub(built_in_conj.match, "^%^", "") == base.verb then -- begins with ^, for exact match, and matches base.prefix, base.non_prefixed_verb = "", base.verb else base.prefix, base.non_prefixed_verb = rmatch(base.verb, "^(.*)(" .. built_in_conj.match .. ")$") end if base.prefix then -- we found a built-in verb for stem, forms in pairs(built_in_conj.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.stems[stem] = forms end end break end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeioô]r)$") if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end base.inf_stem = inf_stem suffix = suffix == "ôr" and "or" or suffix base.conj = suffix base.conj_vowel = suffix == "ar" and "á" or suffix == "ir" and "í" or "ê" base.frontback = suffix == "ar" and "back" or "front" if base.stems.vowel_alt then -- built-in verb with specified vowel alternation if base.vowel_alt then error(base.verb .. " is a recognized built-in verb, and should not have vowel alternations specified with it") end base.vowel_alt = iut.convert_to_general_list_form(base.stems.vowel_alt) end -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.stems[indicator_flag] end -- Convert vowel alternation indicators into stems. local vowel_alt = base.vowel_alt or {{form = "+"}} base.vowel_alt_stems = apply_vowel_alternations(base.inf_stem, vowel_alt) for _, vowel_alt_stems in ipairs(base.vowel_alt_stems) do if vowel_alt_stems.err then error("To use '" .. vowel_alt_stems.altobj.form .. "', present stem '" .. base.prefix .. base.inf_stem .. "' " .. vowel_alt_stems.err) end end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:pt-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) alternant_multiword_spec.vowel_alt = {} iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end -- Vowel alternants. Do these after calling detect_indicator_spec() because the latter sets base.vowel_alt for -- built-in verbs. if base.vowel_alt then for _, altobj in ipairs(base.vowel_alt) do m_table.insertIfNot(alternant_multiword_spec.vowel_alt, altobj.form) end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Portuguese verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, cat .. "ภาษาโปรตุเกส") end end if check_for_red_links and alternant_multiword_spec.source_template == "pt-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("verbs with red links in their inflection tables") must_break = true break end end end end if must_break then break end end end --insert_cat("คำกริยาที่ลงท้ายด้วย -" .. base.conj) m_table.insertIfNot(alternant_multiword_spec.categories, "คำกริยาภาษาโปรตุเกสที่ลงท้ายด้วย -" .. base.conj) if base.irreg then insert_ann("irreg", "ไม่ปรกติ") insert_cat("คำกริยาไม่ปรกติ") else insert_ann("irreg", "ปรกติ") end if base.only3s then insert_ann("defective", "อบุรุษ") insert_cat("คำอบุรุษกริยา") elseif base.only3sp then insert_ann("defective", "บุรุษที่สามเท่านั้น") insert_cat("คำกริยาบุรุษที่สามเท่านั้น") elseif base.only3p then insert_ann("defective", "บุรุษที่สามพหูพจน์เท่านั้น") insert_cat("คำกริยาบุรุษที่สามพหูพจน์เท่านั้น") elseif base.no_pres_stressed or base.no_pres1_and_sub then insert_ann("defective", "บกพร่อง") insert_cat("คำกริยาบกพร่อง") else insert_ann("defective", "บุรุษปรกติ") end if base.stems.short_pp then insert_ann("short_pp", "p.p.สั้นไม่ปรกติ") insert_cat("verbs with irregular short past participle") else insert_ann("short_pp", "p.p.ปรกติ") end if base.clitic then insert_cat("verbs with lexical clitics") end if base.refl then insert_cat("คำกริยาสะท้อน") end if base.e_ei_cat then insert_ann("vowel_alt", "''e'' กลายเป็น ''ei'' เมื่อเน้น") --insert_cat("คำกริยาที่ e กลายเป็น ei เมื่อเน้น") m_table.insertIfNot(alternant_multiword_spec.categories, "คำกริยาภาษาโปรตุเกสที่ e กลายเป็น ei เมื่อเน้น") elseif not base.vowel_alt then insert_ann("vowel_alt", "ไม่เปลี่ยนแปรสระ") else for _, alt in ipairs(base.vowel_alt) do if alt.form == "+" then insert_ann("vowel_alt", "ไม่เปลี่ยนแปรสระ") else insert_ann("vowel_alt", vowel_alternant_to_desc[alt.form]) --insert_cat("คำกริยาที่" .. vowel_alternant_to_cat[alt.form]) m_table.insertIfNot(alternant_multiword_spec.categories, "คำกริยาภาษาโปรตุเกสที่" .. vowel_alternant_to_cat[alt.form]) end end end local cons_alt = base.stems.cons_alt if cons_alt == nil then if base.conj == "ar" then if base.inf_stem:find("ç$") then cons_alt = "c-ç" elseif base.inf_stem:find("c$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-gu" end else if base.no_pres_stressed or base.no_pres1_and_sub then cons_alt = nil -- no e.g. c-ç alternation in this case elseif base.inf_stem:find("c$") then cons_alt = "c-ç" elseif base.inf_stem:find("qu$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-j" elseif base.inf_stem:find("gu$") then cons_alt = "g-gu" end end end if cons_alt then local desc = "เปลี่ยนแปร " .. cons_alt insert_ann("cons_alt", desc) --insert_cat("คำกริยาที่" .. desc) m_table.insertIfNot(alternant_multiword_spec.categories, "คำกริยาภาษาโปรตุเกสที่" .. desc) else insert_ann("cons_alt", "ไม่เปลี่ยนแปรพยัญชนะ") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.irreg = {} ann.short_pp = {} ann.defective = {} ann.vowel_alt = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local short_pp = table.concat(ann.short_pp, " or ") if short_pp ~= "" and short_pp ~= "regular" then table.insert(ann_parts, short_pp) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local vowel_alt = table.concat(ann.vowel_alt, " or ") if vowel_alt ~= "" and vowel_alt ~= "non-alternating" then table.insert(ann_parts, vowel_alt) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, "; ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() if alternant_multiword_spec.forms.short_pp_ms then alternant_multiword_spec.has_short_pp = true end local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then if slot:find("^pp_") then accel_obj.form = slot elseif slot == "gerund" then accel_obj.form = "gerund-" .. reconstructed_verb_spec else accel_obj.form = "verb-form-" .. reconstructed_verb_spec end end return accel_obj end -- Italicize superseded forms. local function generate_link(data) local formval_for_link = data.form.formval_for_link if formval_for_link:find(VAR_SUPERSEDED) then formval_for_link = formval_for_link:gsub(VAR_SUPERSEDED, "") return m_links.full_link({lang = lang, term = formval_for_link, tr = "-", accel = data.form.accel_obj}, "term") .. iut.get_footnote_text(data.form.footnotes, data.footnote_obj) end end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, canonicalize = function(form) return export.remove_variant_codes(form, "keep superseded") end, generate_link = generate_link, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead" align="center">&nbsp; &nbsp; การผันรูปของ {title} (ดูเพิ่ม [[ภาคผนวก:คำกริยาภาษาโปรตุเกส]])</div> <div class="NavContent" align="left"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! class="roa-person-number-header" rowspan="2" | ! class="roa-person-number-header" colspan="3" | เอกพจน์ ! class="roa-person-number-header" colspan="3" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<eu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<tu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<ele>> / <<ela>> / <<você>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<nós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<vós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<eles>> / <<elas>> / <<vocês>>) |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="infinitivo">รูปกริยากลาง</span>'' |- ! class="roa-nonfinite-header" | '''<span title="infinitivo impessoal">คำอบุรุษกริยา</span>''' | colspan="6" | {infinitive} |- ! class="roa-nonfinite-header" | '''<span title="infinitivo pessoal">คำบุรุษกริยา</span>''' | {pers_inf_1s} | {pers_inf_2s} | {pers_inf_3s} | {pers_inf_1p} | {pers_inf_2p} | {pers_inf_3p} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="gerúndio">รูปกริยาเป็นนาม</span>'' |- | class="roa-nonfinite-header" | | colspan="6" | {gerund} |-{pp_clause} ! class="roa-indicative-left-rail" colspan="7" | ''<span title="indicativo">มาลาบอกเล่า</span>'' |- ! class="roa-indicative-left-rail" | <span title="presente">ปัจจุบันกาล</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito imperfeito">ไม่สมบูรณ์</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito perfeito">อดีตกาลสิ้นสุด (สมบูรณ์)</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito mais-que-perfeito simples">อภิสมบูรณ์</span> | {plup_1s} | {plup_2s} | {plup_3s} | {plup_1p} | {plup_2p} | {plup_3p} |- ! class="roa-indicative-left-rail" | <span title="futuro do presente">อนาคตกาล</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" | <span title="condicional / futuro do pretérito">มาลาเงื่อนไข</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" colspan="7" | ''<span title="conjuntivo (pt) / subjuntivo (br)">มาลาสมมุติ</span>'' |- ! class="roa-subjunctive-left-rail" | <span title=" presente do conjuntivo (pt) / subjuntivo (br)">ปัจจุบันกาล</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="pretérito imperfeito do conjuntivo (pt) / subjuntivo (br)">ไม่สมบูรณ์</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="futuro do conjuntivo (pt) / subjuntivo (br)">อนาคตกาล</span> | {fut_sub_1s} | {fut_sub_2s} | {fut_sub_3s} | {fut_sub_1p} | {fut_sub_2p} | {fut_sub_3p} |- ! class="roa-imperative-left-rail" colspan="7" | ''<span title="imperativo">มาลาสั่ง</span>'' |- ! class="roa-imperative-left-rail" | <span title="imperativo afirmativo">เชิงยืนยัน</span> | rowspan="2" | | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" | <span title="imperativo negativo">เชิงปฏิเสธ</span> (<<não>>) | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div>]=] local double_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio irregular">รูปกริยาขยายอดีตกาลสั้น</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {short_pp_ms} | colspan="3" | {short_pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {short_pp_fs} | colspan="3" | {short_pp_fp} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio regular">รูปกริยาขยายอดีตกาลยาว</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local single_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio passado">รูปกริยาขยายอดีตกาล</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form) if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and format(notes_template, forms) or "" -- has_short_pp is computed in show_forms(). local pp_template = alternant_multiword_spec.has_short_pp and double_pp_template or single_pp_template forms.pp_clause = format(pp_template, forms) local table_with_pronouns = rsub(basic_table, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "แม่แบบ" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{pt-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "pt-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "pt-conj" or pagename == "pt-verb") and in_template_space() then arg1 = "cergir<i-e,i>" elseif pagename == "pt-verb form of" and in_template_space() then arg1 = "amar" else arg1 = "<>" end end -- When called from {{pt-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "pt-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "pt-verb form of" and in_template_space() then verb_form_of_form = "ame" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, get_variants = function(form) return rsub(form, not_var_code_c, "") end, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "pt-conj" then -- Remove variant codes to avoid causing problems with bots. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = export.remove_variant_codes(form.form) end end return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{pt-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "pt-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export 16aunb09lpiim5qt5ci3qjdf7ycldls ເຕົ່າທອງ 0 327924 5729409 1760578 2026-07-20T08:09:22Z Alifshinobi 397 /* คำนาม */ 5729409 wikitext text/x-wiki == ภาษาลาว == === รากศัพท์ === {{com|lo|ເຕົ່າ|ທອງ|t1=เต่า|t2=ทอง}} === การออกเสียง === {{lo-pron|ເຕົ່າ-ທອງ}} === คำนาม === {{lo-noun|ໂຕ}} # {{lang|lo|([[ແມງ]]~)}} [[แมลง]][[เต่าทอง]] === อ้างอิง === {{รายการอ้างอิง}} * ''SEAlang library Lao lexicography''. SEAlang Projects. http://sealang.net/lao/dictionary.htm {{topics|lo|แมลง}} 3br0078oroqsbdpasl6ygc54khplzvv แม่แบบ:ast-verb-ir 10 332252 5729444 1767334 2026-07-20T09:42:13Z Octahedron80 267 5729444 wikitext text/x-wiki {{head|ast|คำกริยา|head={{{head|}}}<!-- -->|บุรุษที่หนึ่งเอกพจน์ปัจจุบันกาลมาลาบอกเล่า<!-- -->|{{{first singular|{{{stem|{{{2|{{{1|}}}}}}}}}o}}}<!-- -->|รูปกริยาขยายอดีตกาล<!-- -->|{{{participle|{{{stem|{{{1|}}}}}}íu}}}<!-- -->}}<noinclude>{{documentation}}</noinclude> 7fn9w7aaat7njoq0no9eb2cc3rwmeif แม่แบบ:ast-conj-table 10 332254 5729350 1767339 2026-07-20T07:27:28Z Octahedron80 267 5729350 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters --><templatestyles src="Module:roa-verb/style.css" /><div class="NavFrame"> <div class="NavHead" style="text-align: left">การผันรูปของ <i lang="ast">{{pagename}}</i></div> <div class="NavContent"> {| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยากลาง | colspan="6" style="text-align:center" | {{{infinitive}}} |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยาเป็นนาม | colspan="6" style="text-align:center" | {{l|ast|{{{gerundive}}}}} |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยาขยาย | colspan="6" style="text-align:center" | {{{part|{{g|m}} {{l|ast|{{{part_m}}}}}, {{g|f}} {{l|ast|{{{part_f}}}}}, {{g|n}} {{l|ast|{{{part_n}}}}}, {{g|m-p}} {{l|ast|{{{part_m-p}}}}}, {{g|f-p}} {{l|ast|{{{part_f-p}}}}}}}} |- class="roa-person-number-header" ! colspan="2" | บุรุษ ! style="width:12.5%" | บุรุษที่หนึ่งเอกพจน์<br/>yo ! style="width:12.5%" | บุรุษที่สองเอกพจน์<br/>tu ! style="width:12.5%" | บุรุษที่สามเอกพจน์<br/>él/elli ! style="width:12.5%" | บุรุษที่หนึ่งพหูพจน์<br/>nosotros/nós ! style="width:12.5%" | บุรุษที่สองพหูพจน์<br/>vosotros/vós ! style="width:12.5%" | บุรุษที่สามพหูพจน์<br/>ellos |- ! class="roa-indicative-left-rail" rowspan="6" | มาลาบอกเล่า ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาล | {{l|ast|{{{pres_ind_1sg}}}}} | {{l|ast|{{{pres_ind_2sg}}}}} | {{l|ast|{{{pres_ind_3sg}}}}} | {{l|ast|{{{pres_ind_1pl}}}}} | {{l|ast|{{{pres_ind_2pl}}}}} | {{l|ast|{{{pres_ind_3pl}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | ไม่สมบูรณ์ | {{l|ast|{{{impf_ind_1sg}}}}} | {{l|ast|{{{impf_ind_2sg}}}}} | {{l|ast|{{{impf_ind_3sg}}}}} | {{l|ast|{{{impf_ind_1pl}}}}} | {{l|ast|{{{impf_ind_2pl}}}}} | {{l|ast|{{{impf_ind_3pl}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อดีตกาลสิ้นสุด (สมบูรณ์) | {{l|ast|{{{pret_ind_1sg}}}}} | {{l|ast|{{{pret_ind_2sg}}}}} | {{l|ast|{{{pret_ind_3sg}}}}} | {{l|ast|{{{pret_ind_1pl}}}}} | {{l|ast|{{{pret_ind_2pl}}}}} | {{l|ast|{{{pret_ind_3pl}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อภิสมบูรณ์ | {{l|ast|{{{plup_ind_1sg}}}}} | {{l|ast|{{{plup_ind_2sg}}}}} | {{l|ast|{{{plup_ind_3sg}}}}} | {{l|ast|{{{plup_ind_1pl}}}}} | {{l|ast|{{{plup_ind_2pl}}}}} | {{l|ast|{{{plup_ind_3pl}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาล | {{l|ast|{{{futr_ind_1sg}}}}} | {{l|ast|{{{futr_ind_2sg}}}}} | {{l|ast|{{{futr_ind_3sg}}}}} | {{l|ast|{{{futr_ind_1pl}}}}} | {{l|ast|{{{futr_ind_2pl}}}}} | {{l|ast|{{{futr_ind_3pl}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไข | {{l|ast|{{{cond_1sg}}}}} | {{l|ast|{{{cond_2sg}}}}} | {{l|ast|{{{cond_3sg}}}}} | {{l|ast|{{{cond_1pl}}}}} | {{l|ast|{{{cond_2pl}}}}} | {{l|ast|{{{cond_3pl}}}}} |- ! class="roa-subjunctive-left-rail" rowspan="2" | มาลาสมมุติ ! class="roa-subjunctive-left-rail" style="height:3em;" | ปัจจุบันกาล | {{l|ast|{{{pres_sub_1sg}}}}} | {{l|ast|{{{pres_sub_2sg}}}}} | {{l|ast|{{{pres_sub_3sg}}}}} | {{l|ast|{{{pres_sub_1pl}}}}} | {{l|ast|{{{pres_sub_2pl}}}}} | {{l|ast|{{{pres_sub_3pl}}}}} |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ไม่สมบูรณ์ | {{l|ast|{{{impf_sub_1sg}}}}} | {{l|ast|{{{impf_sub_2sg}}}}} | {{l|ast|{{{impf_sub_3sg}}}}} | {{l|ast|{{{impf_sub_1pl}}}}} | {{l|ast|{{{impf_sub_2pl}}}}} | {{l|ast|{{{impf_sub_3pl}}}}} |- ! class="roa-imperative-left-rail" colspan="2" style="height:3em;" | มาลาสั่ง | | {{l|ast|{{{impr_2sg}}}}} | | | {{l|ast|{{{impr_2pl}}}}} | |} </div></div><!-- --><noinclude>{{documentation}}<templatedata> { "params": { "infinitive": {}, "gerundive": {}, "part": {}, "part_m": {}, "part_f": {}, "part_n": {}, "part_m-p": {}, "part_f-p": {}, "pres_ind_1sg": {}, "pres_ind_2sg": {}, "pres_ind_3sg": {}, "pres_ind_1pl": {}, "pres_ind_2pl": {}, "pres_ind_3pl": {}, "impf_ind_1sg": {}, "impf_ind_2sg": {}, "impf_ind_3sg": {}, "impf_ind_1pl": {}, "impf_ind_2pl": {}, "impf_ind_3pl": {}, "pret_ind_1sg": {}, "pret_ind_2sg": {}, "pret_ind_3sg": {}, "pret_ind_1pl": {}, "pret_ind_2pl": {}, "pret_ind_3pl": {}, "plup_ind_1sg": {}, "plup_ind_2sg": {}, "plup_ind_3sg": {}, "plup_ind_1pl": {}, "plup_ind_2pl": {}, "plup_ind_3pl": {}, "pres_sub_1sg": {}, "pres_sub_2sg": {}, "pres_sub_3sg": {}, "pres_sub_1pl": {}, "pres_sub_2pl": {}, "pres_sub_3pl": {}, "impf_sub_1sg": {}, "impf_sub_2sg": {}, "impf_sub_3sg": {}, "impf_sub_1pl": {}, "impf_sub_2pl": {}, "impf_sub_3pl": {}, "futr_ind_1sg": {}, "futr_ind_2sg": {}, "futr_ind_3sg": {}, "futr_ind_1pl": {}, "futr_ind_2pl": {}, "futr_ind_3pl": {}, "cond_1sg": {}, "cond_2sg": {}, "cond_3sg": {}, "cond_1pl": {}, "cond_2pl": {}, "cond_3pl": {}, "impr_2sg": {}, "impr_2pl": {} } } </templatedata></noinclude> ldt8tw6livjsakjjzmq0ko6zc8vbwxt ขอก 0 334474 5729163 1893737 2026-07-20T02:51:49Z Alifshinobi 397 /* ภาษาคำเมือง */ 5729163 wikitext text/x-wiki == ภาษาไทย == === การออกเสียง === {{th-pron|ขอก}} === คำนาม === {{th-noun}} # [[เขต]], [[แดน]] == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xɔːk˨˩/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{altform|nod|ᨡᩬᨠ|t=[[เขต]], [[แดน]]; [[ขอบ]]}} tvkvokiy6chruedo1571qzd10b469rx ᩈ᩶ᩣ᩠ᨾ 0 335629 5729263 3325842 2026-07-20T04:26:50Z Alifshinobi 397 /* รากศัพท์ 3 */ 5729263 wikitext text/x-wiki {{also/auto}} == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=ส้าม}} === การออกเสียง === * {{IPA|nod|/saːm˦˦ʔ/|a=เชียงใหม่}} === รากศัพท์ 1 === ==== คำกริยา ==== {{nod-verb}} # [[ได้ใจ]], [[ย่าม]][[ใจ]]; [[พอใจ]]ที่จะได้รับอย่างที่เคยได้ === รากศัพท์ 2 === ==== คำกริยา ==== {{nod-verb}} # [[บ้าเลือด]], [[บันดาล]][[โทสะ]]อย่างไม่กลัวตาย === รากศัพท์ 3 === ร่วมเชื้อสายกับ{{cog|khb|ᦉᦱᧄᧉ}} ==== คำกริยา ==== {{nod-verb}} # {{lb|nod|อกรรม}} [[บ่น]], [[พร่ำ]]บ่น; [[กระจาย]][[เรื่อง]] #: {{syn|nod|ᨧᩫ᩠᩵ᨾ|ᨪᩯ᩠᩵ᨾ}} === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. alhl38b3c3vswbydzwd55ii99a0work มอดูล:gl-verb 828 336631 5729418 4933753 2026-07-20T09:13:45Z Octahedron80 267 5729418 Scribunto text/plain --[=[ This module implements {{gl-conj}} and provides the underlying conjugation functions for {{gl-verb}} (whose actual formatting is done in [[Module:gl-headword]]). This module uses the standard norm for Galician spelling. See also [[Module:gl-reinteg-verb]], which implements the reintegrationist norm. Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Galician form representing the value of a given slot. -- "lemma" = The dictionary form of a given Galician term. For Galician, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("gl") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:gl-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility local function link_term(term, display) return m_links.full_link({ lang = lang, term = term, alt = display }, "term") end local V = com.V -- vowel regex class local AV = com.AV -- accented vowel regex class local C = com.C -- consonant regex class local TEMPC1 = u(0xFFF1) -- temporary character used for consonant substitutions local short_pp_footnote = "[usually used with auxiliary verbs " .. link_term("ser") .. " and " .. link_term("estar") .. "]" local long_pp_footnote = "[usually used with auxiliary verbs " .. link_term("haber") .. " and " .. link_term("ter") .. "]" --[=[ Vowel alternations: <i-e>: 'i' in pres1s, imp2s and the whole present subjunctive; 'e' elsewhere when stressed. Generally 'e' otherwise when unstressed. E.g. [[sentir]], [[conseguir]] (the latter additionally with 'gu-g' alternation). <u-o>: 'u' in pres1s, imp2s and the whole present subjunctive; 'o' elsewhere when stressed. Generally 'u' otherwise when unstressed. E.g. [[durmir]], [[subir]]. <i>: 'i' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'e'. E.g. [[vestir]], [[pedir]]. <u>: 'u' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'o'. There may be no such verbs in standard Galician. <í>: The last 'i' of the stem) becomes 'í' when stressed. E.g.: * [[faiscar]] (only3sp; faísca, faíscan, faísque, faísquen' also with 'c-qu' alternation), [[acainzar]], [[avaiñar]], [[cainzar]], [[caiñar]], [[desenvaiñar]], [[envaiñar]], [[arremuiñar]], [[arrepuiñar]], [[arruinar]], [[cuincar]], [[cuiñar]], [[muiñar]] * verbs in -eizar and -aizar, e.g. [[europeizar]] ('europeízo, europeíce', etc. also with 'z-c' alternation) * [[desenraizar]], [[enraizar]], [[hebraizar]], [[xudaizar]] * [[europeizar]], [[homoxeneizar]] * some verbs in -uizar: * [[enxuizar]] (enxuízo, enxuíza, enxuíce, enxuícen, also with 'z-c' alternation), [[axuizar]] * but not any in -guizar ([[arreguizar]], [[desgaleguizar]], [[empreguizar]], [[esguizar]], [[espreguizar]], [[galeguizar]]) or -quizar ([[catequizar]], [[esnaquizar]], [[xerarquizar]]) * none in -aiar? * not [[abraiar]], [[achaiar]], [[alfaiar]], [[amaiar]], [[arraiar]], [[atalaiar]], [[desmaiar]], [[encaiar]], [[engraiar]], [[ensaiar]], [[espraiar]], [[faiar]], [[laiar]], [[maiar]], [[raiar]], [[salaiar]] * unknown: [[craiar]] * some verbs in -biar: * [[adobiar]], [[asubiar]], [[espabiar]] * but not [[arrubiar]], [[asoberbiar]] /e/?, [[cambiar]], [[descambiar]], [[enrabiar]], [[ensoberbiar]] /e/?, [[entibiar]], [[gabiar]], [[gobiar]] /ɔ/, [[intercambiar]], [[rabiar]], [[recambiar]], [[sarabiar]] (only3s), [[turbiar]] * none in -ciar: * not [[acariciar]], [[agraciar]], [[anunciar]], [[apreciar]] /e/?, [[asociar]] /ɔ/, [[auspiciar]], [[autofinanciar]], [[aviciar]], [[axenciar]] /ɛ/, [[beneficiar]], [[comerciar]] /ɛ/, [[concienciar]] /ɛ/, [[conferenciar]] /e/?, [[congraciar]], [[denunciar]], [[depreciar]] /e/?, [[desasociar]] /ɔ/, [[desenviciar]], [[desgraciar]], [[desperdiciar]], [[diferenciar]] /e/?, [[dilixenciar]] /e/?, [[disociar]] /ɔ/, [[distanciar]], [[divorciar]] /ɔ/, [[enranciar]], [[ensuciar]], [[enunciar]], [[enviciar]], [[escanciar]], [[especiar]] /?/, [[evidenciar]] /e/?, [[financiar]], [[graciar]], [[influenciar]] /e/?, [[iniciar]], [[licenciar]] /ɛ/, [[maliciar]], [[negociar]] /ɔ/, [[oficiar]], [[potenciar]] /e/?, [[prenunciar]], [[presenciar]] /e/?, [[pronunciar]], [[propiciar]], [[quintaesenciar]] /e/?, [[reiniciar]], [[renunciar]], [[reverenciar]] /e/?, [[saciar]], [[sentenciar]] /e/?, [[silenciar]] /e/?, [[viciar]] * some verbs in -diar: * [[adiar]], [[vadiar]] * but not [[asediar]] /ɛ/, [[compendiar]] /ɛ/, [[custodiar]] /ɔ/, [[deslendiar]] /e/?, [[entremediar]] /e/?, [[estipendiar]] /e/?, [[fastidiar]], [[incendiar]] /e/?, [[insidiar]], [[irradiar]], [[mediar]] /e/?, [[odiar]] /ɔ/, [[parodiar]] /ɔ/, [[preludiar]], [[radiar]], [[remediar]] /ɛ/, [[repudiar]], [[salmodiar]] /ɔ/, [[subsidiar]], [[vilipendiar]] /ɛ/ * some verbs in -fiar: * [[afiar]], [[confiar]], [[desafiar]], [[desconfiar]], [[desenfiar]], [[enfiar]], [[esfiar]], [[esgrafiar]], [[fiar]], [[porfiar]], probably [[sobrefiar]] (not indicated) * but not [[atrofiar]] /ɔ/, [[hipertrofiar]] /ɔ/ * verbs in -guiar: * [[guiar]], [[radioguiar]], [[teleguiar]] * verbs in -hiar: * [[chiar]], [[rechiar]], [[rechouchiar]] * some verbs in -liar: * [[aliar]] (alío, alía, alíe, alíen), [[ampliar]], [[avaliar]], [[desliar]], [[liar]] * but not [[afiliar]] (afilio, afilia, afilie, afilien), [[auxiliar]], [[conciliar]], [[defoliar]], [[domiciliar]], [[escoliar]], [[espoliar]], [[exfoliar]], [[exiliar]], [[interfoliar]], [[reconciliar]] * [[paliar]] goes both ways: 'palio/palío', 'palia/palía', 'palie/palíe', 'palien/palíen' * unknown: [[represaliar]] * some verbs in -miar: * [[gurrumiar]], [[miar]] * but not [[agremiar]], [[amomiar]], [[encomiar]], [[premiar]], [[rumiar]] * some verbs in -niar: * [[agoniar]], [[desagoniar]] * but not [[calumniar]], [[conxeniar]], [[herniar]], [[miniar]] * none in -oiar? * not [[aboiar]] /ɔ/, [[acoiar]] /ɔ/, [[apoiar]] /o/, [[arroiar]] /o/ (only3s), [[choiar]]/[[enchoiar]] /ɔ/, [[enxoiar]] /ɔ/, [[loiar]] /o/ * some verbs in -piar: * [[arrepiar]], [[espiar]], [[expiar]], [[piar]] * but not [[apropiar]], [[copiar]], [[expropiar]], [[fotocopiar]], [[lurpiar]], [[principiar]], [[recopiar]], [[tapiar]], [[xerocopiar]] * some verbs in -quiar: * [[esquiar]], [[maquiar]], [[remaquiar]], [[tosquiar]] * but not [[obsequiar]] * unknown: [[franquiar]] * some verbs in -riar: * [[arrefriar]], [[arriar]], [[avariar]], [[criar]], [[desvariar]], [[enriar]], [[escagarriar]], [[estriar]], [[malcriar]], [[recriar]], [[variar]] * but not [[anguriar]], [[asalariar]], [[cariar]] (only3sp), [[contrariar]], [[desmemoriar]], [[expatriar]], [[gloriar]], [[historiar]], [[inventariar]], [[inxuriar]], [[leriar]], [[repatriar]], [[seriar]], [[vangloriar]] * some verbs in -siar: * [[fantasiar]] * but not [[anestesiar]], [[extasiar]] * [[ansiar]] goes both ways: 'ansio/ansío', 'ansia/ansía', 'ansie/ansíe', 'ansien/ansíen' * some verbs in -tiar: * [[amnistiar]], [[desenfastiar]], [[enfastiar]] * but not [[angustiar]], [[sitiar]] * some verbs in -viar: * [[ataviar]], [[aviar]], [[desataviar]], [[desviar]], [[enviar]], [[extraviar]], [[reenviar]] * but not [[abreviar]], [[agraviar]], [[aliviar]], [[desagraviar]], [[diluviar]] (only3s), [[obviar]] * some verbs in -xiar: * [[vixiar]] * but not [[asfixiar]], [[colexiar]] /e/, [[contaxiar]], [[desprestixiar]], [[eloxiar]], [[plaxiar]], [[presaxiar]], [[prestixiar]], [[privilexiar]] /e/, [[refuxiar]] <ú>: The last 'u' of the stem becomes 'ú' when stressed. E.g.: * [[reunir]] ('reúno, reúne(s), reúnem, reúna(s), reúnan') * [[esmiuzar]] ('esmiúzo, esmiúza(s), esmiúza, esmiúce(s), esmiúcen' also with 'z-c' alternation) * [[saudar]] ('saúdo, saúda(s), saúda, saúde(s), saúden') * [[auñar]], [[desembaular]], [[embaular]] * [[afiuzar]], [[desafiuzar]], [[desmiudar]], [[desmiuzar]], [[enviuvar]], [[esmiuzar]] but not [[triunfar]] * NOTE: It seems most or all verbs in -uar other than in -guar, -quar have stressed ú, so we make it the default. ]=] local vowel_alternants = m_table.listToSet({"i-e", "i", "í", "u-o", "u", "ú", "+"}) local vowel_alternant_to_desc = { ["i-e"] = "''i-e'' alternation in present singular", ["i"] = "''e'' becomes ''i'' when stressed", ["í"] = "''i'' becomes ''í'' when stressed", ["u-o"] = "''u-o'' alternation in present singular", ["u"] = "''o'' becomes ''u'' when stressed", ["ú"] = "''u'' becomes ''ú'' when stressed", } local vowel_alternant_to_cat = { ["i-e"] = "i-e alternation in present singular", ["i"] = "e becoming i when stressed", ["í"] = "i becoming í when stressed", ["u-o"] = "u-o alternation in present singular", ["u"] = "o becoming u when stressed", ["ú"] = "u becoming ú when stressed", } local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} person_number_to_reflexive_pronoun = { ["1s"] = "me", ["2s"] = "te", ["3s"] = "se", ["1p"] = "nos", ["2p"] = "vos", ["3p"] = "se", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "no_pres1_and_sub", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"short_pp_ms", "short|m|s|past|part"}, {"short_pp_fs", "short|f|s|past|part"}, {"short_pp_mp", "short|m|p|past|part"}, {"short_pp_fp", "short|f|p|past|part"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{gl-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{gl-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{gl-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{gl-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "gl-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{gl-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "pres|ind", person_number_list) add_basic_personal_slot("impf", "impf|ind", person_number_list) add_basic_personal_slot("pret", "pret|ind", person_number_list) add_basic_personal_slot("plup", "plup|ind", person_number_list) add_basic_personal_slot("fut", "fut|ind", person_number_list) add_basic_personal_slot("cond", "cond", person_number_list) add_basic_personal_slot("pres_sub", "pres|sub", person_number_list) add_basic_personal_slot("impf_sub", "impf|sub", person_number_list) add_basic_personal_slot("fut_sub", "fut|sub", person_number_list) add_basic_personal_slot("imp", "imp", imp_person_number_list) add_basic_personal_slot("pers_inf", "pers|inf", person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'non' + subjunctive. add_basic_personal_slot("neg_imp", "neg|imp", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values(separated_groups, data) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local retval = {form = separated_group[1], footnotes = footnotes} table.insert(retvals, retval) end return retvals end local function simple_choice(choices) return function(separated_groups, data) if #separated_groups > 1 then data.parse_err("For spec '" .. data.prefix .. ":', only one value currently allowed") end if #separated_groups[1] > 1 then data.parse_err("For spec '" .. data.prefix .. ":', no footnotes currently allowed") end local choice = separated_groups[1][1] if not m_table.contains(choices, choice) then data.parse_err("For spec '" .. data.prefix .. ":', saw value '" .. choice .. "' but expected one of '" .. table.concat(choices, ",") .. "'") end return choice end end for _, overridable_stem in ipairs { "pres_unstressed", "pres_stressed", "pres1_and_sub", -- Don't include pres1; use pres_1s if you need to override just that form "impf", "full_impf", {"pret_conj", simple_choice({"irreg", "ar", "er", "ir"}) }, "pret_base", "pret", "short_pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", {"sub_conj", simple_choice({"ar", "er"}) }, "plup", "impf_sub", "fut_sub", "pers_inf", "pp", "short_pp", } do if type(overridable_stem) == "string" then overridable_stems[overridable_stem] = allow_multiple_values else local stem, validator = unpack(overridable_stem) overridable_stems[stem] = validator end end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `vowel_alt`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/z, g/gu, gu/gü, g/j) occur automatically as appropriate for the ending. 2. If the stem begins with an acute accent, the accent is moved onto the last vowel of the prefix (for handling verbs in -uar such as [[minguar]], pres_3s 'míngua'). 3. If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. 4. If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem, e.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. 5. If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1_and_sub: Overriding stem for 1s present indicative and the entire subjunctive. Only set by irregular verbs and by the indicators `no_pres_stressed` (e.g. [[precaver]]) and `no_pres1_and_sub` (since verbs of this sort, e.g. [[puir]], are missing the entire subjunctive as well as the 1s present indicative). Used by many irregular verbs, e.g. [[caber]], verbs in '-air', [[dizer]], [[ter]], [[valer]], etc. Some verbs set this and then supply an override for the pres_1s if it's irregular, e.g. [[saber]], with irregular subjunctive stem "saib-" and special 1s present indicative "sei". -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres1_and_sub if given, else pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to pres1_and_sub if given, else the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- sub_conj: Determines the set of endings used in the subjunctive. Should be one of "ar" or "er". -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- full_impf: The full imperfect stem missing only the endings (-a, -as, -am, etc.). Used for verbs with irregular imperfects such as [[ser]], [[ter]], [[vir]] and [[pór]]. -- pret_conj: Determines the set of endings used in the preterite. Should be one of "ar", "er", "ir" or "irreg". Defaults to the conjugation as determined from the infinitive. When pret_conj == "irreg", `pret` is used, otherwise `pret_base`. -- pret_base: The preterite stem (not including the -a-/-e-/-i- stem suffix). Defaults to the infinitive stem. Only used when pret_conj ~= "irreg". -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. The pret_1s and pret_3s are handled using the short_pret stem instead (pret_1s '-en', pret_3s '-o'). Defaults to `pret_base` + the conjugation vowel. -- short_pret: The short preterite stem, used with 1s and 3s endings (pret_1s '-en', pret_3s '-o'). Only used with irregular preterites (pret_conj == "irreg"). Normally derived from pret by deleting the final vowel, and doesn't need to be given explicitly. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- fut_sub: The future subjunctive stem. Defaults to `pret`. -- plup: The pluperfect stem. Defaults to `pret`. -- pers_inf: The personal infinitive stem. Defaults to the infinitive stem + the conjugation vowel. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- short_pp: The short masculine singular past participle, for verbs with such a form. No default. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- (1) Verbs with short past participles: need to specify the short pp explicitly. -- -- aceitar: use <short_pp:aceite> -- anexar, completar, expressar, expulsar, findar, fritar, ganhar, gastar, limpar, pagar, pasmar, pegar, soltar: -- use <short_pp:anexo> etc. -- assentar: use <short_pp:assente> -- entregar: use <short_pp:entregue> -- enxugar: use <short_pp:enxuto> -- matar: use <short_pp:morto> -- -- (2) Verbs with orthographic consonant alternations: handled automatically. -- -- -car (brincar, buscar, pecar, trancar, etc.): automatically handled in combine_stem_ending() -- -zar (alcanzar, comezar, lazar): automatically handled in combine_stem_ending() -- -gar (apagar, cegar, esmagar, largar, navegar, resmungar, sugar, etc.): automatically handled in combine_stem_ending() -- -guar (iguar, minguar): automatically handled in combine_stem_ending() -- -- (3) Verbs with vowel alternations: need to specify the alternation explicitly unless it always happens, in -- which case it's handled automatically through an entry below. -- -- esmiuzar changing to esmiúzo: use <ú> -- faiscar changing to faísco: use <í> -- -izar changing to -ízo (ajuizar, enraizar, homogeneizar, plebeizar, etc.): use <í> -- reusar changing to reúso: use <ú> -- saudar changing to saúdo: use <ú> -- tuitar/retuitar changing to (re)tuíto: use <í> { -- dar match = "^dar", -- [[desdar]] doesn't seem to exist; [[redar]] is regular and unrelated to [[dar]] forms = { pres_1s = "dou", pres_2s = "dás", pres_3s = "dá", pres_3p = "dán#", pres1_and_sub = "de", -- only for subjunctive as we override pres_1s sub_conj = "er", pret_conj = "irreg", pret = "de", pret_1s = "dei", pret_3s = "deu", -- /dɛw/ irreg = true, } }, { -- estar match = "^estar", -- [[sobestar]] and [[sobrestar]] seem not to exist forms = { pres_1s = "estou", pres_2s = "estás", pres_3s = "está", pres_3p = "están", pres1_and_sub = "este", -- only for subjunctive as we override pres_1s sub_conj = "er", pret_conj = "irreg", pret = "estive", pp_inv = true, -- no [[sobestar]] or [[sobrestar]], which would be transitive irreg = true, } }, { -- verbs in -uar but not -guar match = function(verb) if verb:find("guar$") then return nil else return match_against_verbs("uar", {""})(verb) end end, forms = { vowel_alt = "ú", } }, -------------------------------------------------------------------------------------------- -- -er -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- -cer (verbs in -ecer, vencer, etc.): automatically handled in combine_stem_ending() -- -guer (erguer/soerguer): automatically handled in combine_stem_ending() { -- must be listed before -aer match = "^traer", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() pres1_and_sub = "trai", pret_conj = "irreg", pret = "trouxe", irreg = true, } }, { -- verbs in -aer (caer, raer, debaer, degraer, esvaer and derivatives of traer, but not traer itself: -- acaer/decaer/recaer, -- abstraer/atraer/contraer/descontraer/detraer/distraer/extraer/maltraer/retraer/retrotraer/subtraer) match = "aer", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() pres1_and_sub = "ai", irreg = true, } }, { -- caber match = "caber", forms = { pres1_and_sub = "caib", pret_conj = "irreg", pret = "coube", irreg = true, } }, { -- crer, descrer match = "crer", forms = { pres1_and_sub = "cre", pres_2s = "crés#", pres_3s = "cré#", pres_3p = "crén#", -- regular except the lack of accent in base verb pret_1p = "crín#", irreg = true, } }, { -- acender, prender/aprender; not comprender/desprender/reprender, etc. match = match_against_verbs("ender", {"^ac", "^pr", "^apr"}), forms = {short_pp = "eso"}, }, { -- erguer; but not soerguer match = "^erguer", forms = {short_pp = "ergueito"}, }, { -- facer, afacer, contrafacer, desafacer, desfacer, perfacer, rarefacer, refacer, satisfacer, tumefacer match = "facer", forms = { -- use 'fagu' because we're in a front environment; if we use 'fag', we'll get '#fajo' pres1_and_sub = "fagu", pres_2s = "fás#", pres_3s = "fai", pres_3p = "fán#", pret_conj = "irreg", pret = "fixe", pp = "feito", fut = "far", irreg = true, cons_alt = false, -- avoid claiming we have a c-z alternation } }, { match = "^haber", forms = { pres_1s = "hei", pres_2s = "has", pres_3s = {"ha", "hai"}, pres_3p = "han", pres1_and_sub = "hax", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "hoube", noimp = true, irreg = true, } }, { -- ler, reler, trasler; not escoller, expeler, valer, etc. match = match_against_verbs("ler", {"^", "^re", "tras"}), forms = { pres1_and_sub = "le", pres_2s = "lés#", pres_3s = "lé#", pres_3p = "lén#", -- regular except the lack of accent in base verb pret_1p = "lín#", irreg = true, } }, { -- morrer, premorrer match = "morrer", forms = {pp = "morto"}, }, { -- nacer; but not renacer match = "^nacer", forms = {short_pp = "nado"}, }, { -- moer, but not remoer match = "^moer", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() pres1_and_sub = "moi", short_pp = "mudo", -- the main table says 'mundo' but the page for [[mundo]] says 'mudo' is "máis recomendable" irreg = true, } }, { -- choer/deschoer, doer/condoer, remoer, proer, roer/corroer match = "oer", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() pres1_and_sub = "oi", irreg = true, } }, { -- coller, toller and derivatives (acoller, desacoller, desencoller, encoller, entrecoller, escoller, recoller; -- destoller, entretoller) match = "oller", forms = {short_pp = "olleito"}, }, { -- poder match = "poder", forms = { pres1_and_sub = "poid", -- only for subjunctive as we override pres_1s pres_1s = "podo", -- /ɔ/ pret_conj = "irreg", pret = "puide", irreg = true, } }, { -- poñer, antepoñer, apoñer/desapoñer, arrepoñer, compoñer/descompoñer/recompoñer, contrapoñer, depoñer, -- dispoñer/indispoñer/predispoñer, empoñer, expoñer/sobreexpoñer/subexpoñer, impoñer/reimpoñer, interpoñer, -- opoñer, pospoñer, propoñer, repoñer, sobrepoñer, superpoñer, supoñer/presupoñer, traspoñer, xustapoñer match = "poñer", forms = { pres_2s = "pós#", pres_3s = "pón#", pret_conj = "irreg", pret = "puxe", pp = "posto", irreg = true, } }, { -- pracer, but not apracer, compracer, descompracer, despracer match = "^pracer", forms = { pret_conj = "irreg", pret = "prougue", irreg = true, } }, -- prover below, just below ver { -- querer match = "querer", forms = { pres1_and_sub = "queir", -- only for subjunctive as we override pres_1s pres_1s = "quero", -- /ɛ/ pret_conj = "irreg", pret = "quixe", irreg = true, } }, { -- romper; but not corromper, interromper, irromper or prorromper match = "^romper", forms = {short_pp = "roto"}, }, { -- saber, ressaber match = "saber", forms = { pres_1s = "sei", pres1_and_sub = "saib", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "soube", irreg = true, } }, { -- absolver, disolver, resolver match = "solver", forms = {short_pp = "solto"}, }, { -- suspender; but not others in -pender match = "suspender", forms = {short_pp = "suspenso"}, }, { match = "^ser", forms = { pres_1s = "son", pres_2s = "es", pres_3s = "é", pres_1p = "somos", pres_2p = "sodes", pres_3p = "son", pres1_and_sub = "sex", -- only for subjunctive as we override pres_1s full_impf = "er", pret_conj = "irreg", pret = "fo", pret_1s = "fun", pret_2s = "fuches", pret_3s = "foi", imp_2s = "sé", imp_2p = "sede", irreg = true, } }, { -- We want to match abster, conter, deter, etc. but not abater, cometer, etc. No way to avoid listing each verb. match = match_against_verbs("ter", {"abs", "^a", "con", "de", "entre", "man", "ob", "^re", "sos", "^"}), forms = { pres_2s = "tés#", pres_3s = "tén#", pres_2p = {"tendes", "tedes"}, pres_3p = "teñen", pres1_and_sub = "teñ", full_impf = "tiñ", pret_conj = "irreg", pret = "tive", irreg = true, } }, -- traer listed above at the beginning of the -er verbs { -- valer, equivaler match = "valer", forms = { pres1_and_sub = "vall", irreg = true, } }, { -- We want to match antever etc. but not absolver, atrever etc. No way to avoid listing each verb. -- NOTE: [[rever]] has two meanings, one with regular conjugation. Use <no_built_in> for this one. match = match_against_verbs("ver", {"entre", "pre", "^re", "^"}), forms = { pres_2s = "vés#", pres_3s = "vé#", pres_3p = "vén#", pres1_and_sub = "vex", pret_conj = "irreg", pret = "vi", pret_1s = "vín#", pret_3s = "viu", pp = "visto", irreg = true, } }, { -- [[prover]] has regular preterite and past participle match = "^prover", forms = { pres_2s = "provés", pres_3s = "prové", pres_3p = "provén", pres1_and_sub = "provex", short_pp = "provisto", irreg = true, } }, { -- [[desprover]] has its own conjugation match = "^desprover", forms = { pres_2s = "desprovés", pres_3s = "desprové", pres_3p = "desprovén", pres1_and_sub = "desprove", short_pp = "desprovisto", irreg = true, } }, { -- volver, avolver/desenvolver/devolver/envolver/revolver match = "volver", forms = {short_pp = "volto"}, }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- subir (NOT rubir), acudir/sacudir (NOT escudir, aludir/eludir), urdir/desurdir, xurdir/rexurdir, -- engulir, pulir, bulir/rebulir, ulir, mulir (NOT escapulir), durmir, sumir/consumir/ensumir (NOT -- asumir/reasumir/presumir/resumir/subsumir), cuspir/chuspir, sufrir, tusir, xunguir/conxunguir/desxunguir, -- munguir, fuxir/muxir/ruxir: use <u-o> -- [NOTE: imp_2s durme, consume/sume] -- sosubir/susubir: use <u-o>? (archaic, not in RAG dictionary) -- abolir: use <no_pres_stressed> -- descolorir: use <no_pres_stressed> -- empedernir: use <no_pres_stressed> -- espir/despir, refletir, adherir, pedir/desapedir/despedir/expedir/impedir/reexpedir, medir/comedir/descomedir, -- aferir/conferir/deferir/diferir/inferir/interferir/preferir/proferir/referir/transferir, -- dixerir/enxerir/suxerir, preterir, competir/repetir, advertir/divertir, vestir/investir/revestir/travestir, -- agredir/transgredir, espelir: use <i> -- mentir/desmentir, sentir/asentir/consentir/disentir/presentir/resentir, ferir (but no derivatives), servir, -- seguir/conseguir/perseguir/proseguir: use <i-e> -- [NOTE: imp_2s minte] -- denegrir: use <i.only3sp> -- prohibir/coibir: regular -- cumprir: use <no_built_in> in the meaning "fulfill" -- reunir: use <ú> -- argüír/redargüír: use <ú>? -- -- -cir alternations (aducir, resarcir): automatically handled in combine_stem_ending() -- -guir alternations (e.g. conseguir, cinguir, xunguir, tinguir): automatically handled in combine_stem_ending() -- -quir alternations (e.g. delinquir): automatically handled in combine_stem_ending() -- -güír alternations (e.g. argüír): automatically handled in combine_stem_ending() { -- saír/sobresaír match = "aír", forms = { pres1_and_sub = "ai", -- all occurrences of accented í and ï in endings handled in combine_stem_ending() irreg = true, } }, { -- abrir/desabrir/reabrir match = "abrir", forms = {pp = "aberto"}, }, { -- aflixir match = "aflixir", -- FIXME: should this be {pp = {"aflicto", "aflixido"}}? forms = {short_pp = "aflicto"}, }, { -- cubrir/descubrir/encubrir/recubrir/redescubrir match = "cubrir", forms = {vowel_alt = "u-o", pp = "coberto"}, }, { -- cumprir (only in the meaning "to be necessary"; otherwise use <no_built_in>) match = "^cumprir", forms = { -- We could create a <u-ó> just for this verb but that seems overkill unless another such verb appears pres_stressed = "cómpr", pres1_and_sub = "cumpr", }, }, { -- dicir, bendicir, contradicir, desdicir, maldicir, predicir -- FIXME: bendicir and maldicir can also be entirely regular. This could be handled like this: -- ((bendicir<>,bendicir<no_built_in>)) match = "dicir", forms = { -- use 'digu' because we're in a front environment; if we use 'dig', we'll get '#dijo' pres1_and_sub = "digu", pres_2s = "dís#", pres_3s = "dí#", pres_3p = "dín#", pret_conj = "irreg", pret = "dixe", pp = function(base, prefix) return (prefix == "" or prefix == "des" or prefix == "pre") and "dito" or {"dito", "dicido"} end, pp = "dito", fut = "dir", irreg = true, cons_alt = false, -- avoid claiming we have a c-z alternation } }, { -- elixir, reelixir match = "elixir", -- FIXME: should this be {pp = {"electo", "elixido"}}? forms = {short_pp = "electo"}, }, { -- frixir/sofrixir, fritir/sofritir match = "fri[xt]ir", forms = {short_pp = "frito"}, }, { -- inserir, reinserir match = "inserir", forms = { vowel_alt = "i", short_pp = "inserto", }, }, { -- ir match = "^ir", forms = { pres_1s = "vou", pres_2s = "vas", pres_3s = "vai", pres_1p = "imos", pres_2p = "ides", pres_3p = "van", pres1_and_sub = "vai", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "fo", pret_1s = "fun", pret_2s = "fuches", pret_3s = "foi", imp_1p = "vamos", irreg = true, } }, { -- oír, desoír, entreoír match = "oír", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() pres1_and_sub = "oi", -- /ɔ/ irreg = true, } }, { match = "ouvir", forms = { pres1_and_sub = "ouz", irreg = true, } }, { -- parir, malparir match = "parir", forms = { pres1_and_sub = "pair", irreg = true, } }, { -- imprimir/reimprimir/sobreimprimir, but not comprimir/descomprimir, deprimir, oprimir, reprimir, suprimir match = "imprimir", forms = {short_pp = "impreso"} }, { -- rir, sorrir match = match_against_verbs("rir", {"^", "sor"}), forms = { pres_2s = "ris#", pres_3s = "ri#", pres_3p = "rin#", pret_1s = "rin#", -- regular except the lack of accent in base verb pres1_and_sub = "rí", irreg = true, } }, { -- adscribir, circunscribir, describir, escribir/reescribir, inscribir, prescribir, proscribir, sobrescribir, -- subscribir, transcribir match = "scribir", forms = { pp = "scrito", irreg = true, } }, { -- concluír/recluír; not excluír/incluír/ocluír match = match_against_verbs("cluír", {"con", "re"}), forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() vowel_alt = "ú", short_pp = "cluso", } }, { -- posuír; not desposuír match = "^posuír", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() vowel_alt = "ú", short_pp = "poseso", } }, { -- remaining verbs in -uír (excluír/incluír/ocluír, diluír, -- afluír/confluír/difluír/fluír/efluír/influír/refluír, atuír/desatuír, -- atribuír/contribuír/distribuír/redistribuír/retribuír/substituír, -- constituír/destituír/instituír/prostituír/reconstituír/restituír, -- construír/desobstruír/destruír/instruír/obstruír/reconstruír, derruír, -- desposuír, diminuír, luír/esluír, estatuír, imbuír, inmiscuír, intuír, puír, pruír) match = "[uü]ír", -- this won't match -guir verbs (e.g. [[conseguir]]) or -quir verbs (e.g. [[delinquir]]) forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() vowel_alt = "ú", } }, { -- We want to match advir, convir, devir, etc. but not ouvir, servir, etc. No way to avoid listing each verb. match = match_against_verbs("vir", {"ad", "^a", "con", "contra", "de", "^desa", "inter", "pre", "pro", "sobre", "^"}), forms = { pres_2s = "vés", pres_3s = "vén", pres_2p = {"vindes", "vides"}, pres_3p = "veñen", pres1_and_sub = "veñ", full_impf = "viñ", pret_conj = "irreg", pret = "viñe", pret_1s = "vín#", pret_3s = "veu", pp = "vindo", -- FIXME! The following is as in the RAG tables but may be a typo and should be vén for [[vir]] like pres_3s imp_2s = "vén#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- misc -- -------------------------------------------------------------------------------------------- { -- pór, antepor, apor/desapor, arrepor, compor/descompor/recompor, contrapor, depor, dispor/indispor/predispor, -- empor, expor/sobreexpor/subexpor, impor/reimpor, interpor, opor, pospor, propor, repor, sobrepor, -- superpor, supor/presupor, traspor, xustapor match = "p[oó]r", forms = { pres_2s = "pós#", pres_3s = "pón#", pres_1p = "pomos", pres_2p = "pondes", pres_3p = "pón#", pres1_and_sub = "poñ", full_impf = "puñ", pret_conj = "irreg", pret = "puxe", fut = "por", pers_inf = "po", pers_inf_1s = function(base, prefix) return prefix == "" and "pór" or "por" end, pers_inf_3s = function(base, prefix) return prefix == "" and "pór" or "por" end, gerund = "pondo", pp = "posto", irreg = true, } }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.noimp or base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end -- Apply vowel alternations to stem. local function apply_vowel_alternations(stem, alternations) local alternation_stems = {} local saw_pres1_and_sub = false local saw_pres_stressed = false local saw_imp2s_override = false local origstem = stem -- Treat final -gu, -qu as a consonant, so the previous vowel can alternate (e.g. conseguir -> consigo). -- This means a verb in -guar can't have a u-ú alternation but I don't think there are any verbs like that. stem = rsub(stem, "([gq])u$", "%1" .. TEMPC1) -- Process alternations other than +. for _, altobj in ipairs(alternations) do local alt = altobj.form local pres1_and_sub, pres_stressed, imp2s_override, err if alt == "+" then -- do nothing yet else local before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-)$") if alt == "i-e" then if last_vowel == "e" or last_vowel == "i" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel imp2s_override = pres1_and_sub if last_vowel == "i" then pres_stressed = before_last_vowel .. "e" .. after_last_vowel end else err = "should have -e- or -i- as the last vowel" end elseif alt == "i" then if last_vowel == "e" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -e- as the last vowel" end elseif alt == "u-o" then if last_vowel == "o" or last_vowel == "u" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel imp2s_override = pres1_and_sub if last_vowel == "u" then pres_stressed = before_last_vowel .. "o" .. after_last_vowel end else err = "should have -o- or -u- as the last vowel" end elseif alt == "u" then if last_vowel == "o" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -o- as the last vowel" end elseif alt == "í" then if last_vowel == "i" then pres_stressed = before_last_vowel .. "í" .. after_last_vowel else err = "should have -i- as the last vowel" end elseif alt == "ú" then if last_vowel == "u" or last_vowel == "ü" then pres_stressed = before_last_vowel .. "ú" .. after_last_vowel else err = "should have -u- or -ü- as the last vowel" end else error("Internal error: Unrecognized vowel alternation '" .. alt .. "'") end end local function unapply_u_mod(val) if val then return {form = val:gsub(TEMPC1, "u"), footnotes = altobj.footnotes}, true else return nil, false end end pres1_and_sub, saw_pres1_and_sub = unapply_u_mod(pres1_and_sub) pres_stressed, saw_pres_stressed = unapply_u_mod(pres_stressed) imp2s_override, saw_imp2s_override = unapply_u_mod(imp2s_override) table.insert(alternation_stems, { altobj = altobj, pres1_and_sub = pres1_and_sub, pres_stressed = pres_stressed, imp2s_override = imp2s_override, err = err }) end -- Now do +. We check to see which stems are used by other alternations and specify those so any footnotes are -- properly attached. for _, alternation_stem in ipairs(alternation_stems) do if alternation_stem.altobj.form == "+" then local stemobj = {form = origstem, footnotes = alternation_stem.altobj.footnotes} alternation_stem.pres1_and_sub = saw_pres1_and_sub and stemobj or nil alternation_stem.pres_stressed = saw_pres_stressed and stemobj or nil alternation_stem.imp2s_override = saw_imp2s_override and stemobj or nil end end return alternation_stems end -- Add the `stem` to the `ending` for the given `slot` and apply any phonetic modifications. -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, slot, prefix, stem, ending, dont_include_prefix) -- If the ending begins with an acute accent, it goes after the last vowel, but we don't have to do anything. -- Use the full stem for checking for -gui ending and such, because 'stem' is just 'u' for [[arguir]], -- [[delinquir]]. local full_stem = prefix .. stem -- Include the prefix in the stem unless dont_include_prefix is given (used for the past participle stem). if not dont_include_prefix then stem = full_stem end -- If ending begins with i, it must get an accent after a/o/u to prevent the two merging into a diphthong: -- caer -> caíches, caído; doer -> doíches, doído; concluír -> concluíches, concluído. if ending:find("^i") and stem:find("[aouü]$") and not stem:find("[gq]u$") then -- Special case for impf_1p/impf_2p, where the i is unstressed and changes into ï. FIXME: Maybe we should be -- checking the slot value instead. if ending == "iamos" or ending == "iades" then ending = ending:gsub("^i", "ï") else ending = ending:gsub("^i", "í") end end -- Spelling changes in the stem; it depends on whether the stem given is the pre-front-vowel or -- pre-back-vowel variant, as indicated by `frontback`. We want these front-back spelling changes to happen -- between stem and ending, not between prefix and stem; the prefix may not have the same "front/backness" -- as the stem. local is_front = rfind(ending, "^[eiéíï]") if base.frontback == "front" and not is_front then stem = stem:gsub("c$", "z") -- coñecer -> coñezo, vencer -> venzo, inmiscir -> inmiszo stem = stem:gsub("gu$", "g") -- distinguir -> distingo, conseguir -> consigo stem = stem:gsub("qu$", "c") -- delinquir -> delinco stem = stem:gsub("gü$", "gu") -- argüír -> arguamos elseif base.frontback == "back" and is_front then stem = stem:gsub("gu$", "gü") -- iguar -> igüei stem = stem:gsub("g$", "gu") -- cargar -> carguei, apagar -> apaguei stem = stem:gsub("c$", "qu") -- marcar -> marquei stem = rsub(stem, "z$", "c") -- aderezar -> aderecei end local retval = stem .. ending if retval:find("#$") then -- remove final accent if no prefix retval = retval:gsub("#$", "") if prefix == "" then retval = com.remove_final_accent(retval) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, slot, base.prefix, stem, ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function construct_stems(base, vowel_alt, imp_only) local stems = {} if imp_only then stems.imp2s_override = -- If no_pres_stressed given, there should be no imp_2s. not base.no_pres_stressed and ( base.stems.imp2s_override or vowel_alt.imp2s_override or nil) or nil base.this_stems = stems return end local function combine(slot, stem, ending) return combine_stem_ending(base, slot, base.prefix, stem, ending, "dont include prefix") end stems.pres_unstressed = base.stems.pres_unstressed or base.inf_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or base.stems.pres_stressed or vowel_alt.pres_stressed or base.inf_stem stems.pres1_and_sub = -- If no_pres_stressed given, the entire subjunctive is missing. base.no_pres_stressed and {} or -- If no_pres1_and_sub given, pres1 and entire subjunctive are missing. base.no_pres1_and_sub and {} or base.stems.pres1_and_sub or vowel_alt.pres1_and_sub or nil stems.pres1 = base.stems.pres1 or stems.pres1_and_sub or stems.pres_stressed stems.impf = base.stems.impf or base.inf_stem stems.full_impf = base.stems.full_impf stems.pret_base = base.stems.pret_base or base.inf_stem stems.pret_conj = base.stems.pret_conj or base.conj stems.pret = base.stems.pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret_base), -- use combine_stem_ending esp. so we get saíra etc. function(form) return combine("pret", form, base.conj_vowel) end) stems.short_pret = base.stems.gl_short_pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret), function(form) return rsub(form, com.V .. "$", "") end) stems.fut = base.stems.fut or base.inf_stem .. base.conj stems.cond = base.stems.cond or stems.fut stems.pres_sub_stressed = base.stems.pres_sub_stressed or stems.pres1 stems.pres_sub_unstressed = base.stems.pres_sub_unstressed or stems.pres1_and_sub or stems.pres_unstressed stems.sub_conj = base.stems.sub_conj or base.conj stems.plup = base.stems.plup or stems.pret -- Needed for plup_1p and plup_2p if there's an accent in the regular pluperfect stem (as for [[saír]]). stems.plup_unstressed = iut.map_forms(iut.convert_to_general_list_form(stems.plup), com.remove_final_accent) stems.impf_sub = base.stems.impf_sub or stems.pret -- Needed for impf_sub_1p and impf_sub_2p. We can't just add an acute accent because there may already be one -- (as for [[saír]]). stems.impf_sub_antepenult_stressed = iut.map_forms(iut.convert_to_general_list_form(stems.impf_sub), com.add_final_accent) stems.fut_sub = base.stems.fut_sub or stems.pret -- use combine_stem_ending esp. so we get saír, saírmos, etc. stems.pers_inf = base.stems.pers_inf or combine("pers_inf", base.inf_stem, base.conj_vowel) -- use combine_stem_ending esp. so we get roído, caído, etc. stems.pp = base.stems.pp or combine("pp_ms", base.inf_stem, base.conj == "ar" and "ado" or "ido") stems.pp_ms = stems.pp local function masc_to_fem(form) if rfind(form, "o$") then return rsub(form, "o$", "a") else return form end end stems.pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.pp_ms), masc_to_fem) if base.stems.short_pp then stems.short_pp_ms = base.stems.short_pp stems.short_pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.short_pp_ms), masc_to_fem) end base.this_stems = stems end local function add_present_indic(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end local s2, s3, p1, p2, p3 if base.conj == "ar" then s2, s3, p1, p2, p3 = "as", "a", "amos", "ades", "an" elseif base.conj == "er" or base.conj == "or" then -- verbs in -por have the present overridden s2, s3, p1, p2, p3 = "es", "e", "emos", "edes", "en" elseif base.conj == "ir" then s2, s3, p1, p2, p3 = "es", "e", "imos", "ides", "en" else error("Internal error: Unrecognized conjugation " .. base.conj) end addit("1s", stems.pres1, "o") addit("2s", stems.pres_stressed, s2) addit("3s", stems.pres_stressed, s3) addit("1p", stems.pres_unstressed, p1) addit("2p", stems.pres_unstressed, p2) addit("3p", stems.pres_stressed, p3) end local function add_present_subj(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end local s1, s2, s3, p1, p2, p3 if stems.sub_conj == "ar" then s1, s2, s3, p1, p2, p3 = "e", "es", "e", "emos", "edes", "en" else s1, s2, s3, p1, p2, p3 = "a", "as", "a", "amos", "ades", "an" end addit("1s", stems.pres_sub_stressed, s1) addit("2s", stems.pres_sub_stressed, s2) addit("3s", stems.pres_sub_stressed, s3) addit("1p", stems.pres_sub_unstressed, p1) addit("2p", stems.pres_sub_unstressed, p2) addit("3p", stems.pres_sub_stressed, p3) end local function add_finite_non_present(base) local stems = base.this_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end if stems.full_impf then add_tense("impf", stems.full_impf, "a", "as", "a", "amos", "ades", "an") elseif base.conj == "ar" then add_tense("impf", stems.impf, "aba", "abas", "aba", "abamos", "abades", "aban") else add_tense("impf", stems.impf, "ía", "ías", "ía", "iamos", "iades", "ían") end if stems.pret_conj == "irreg" then add_tense("pret", stems.short_pret, "en", nil, "o") add_tense("pret", stems.pret, nil, "ches", nil, "mos", "stes", "ron") elseif stems.pret_conj == "ar" then add_tense("pret", stems.pret_base, "ei", "aches", "ou", "amos", "astes", "aron") elseif stems.pret_conj == "er" then add_tense("pret", stems.pret_base, "ín", "iches", "eu", "emos", "estes", "eron") else add_tense("pret", stems.pret_base, "ín", "iches", "iu", "imos", "istes", "iron") end add_tense("plup", stems.plup, "ra", "ras", "ra", nil, nil, "ran") add_tense("plup", stems.plup_unstressed, nil, nil, nil, "ramos", "rades", nil) add_tense("impf_sub", stems.impf_sub, "se", "ses", "se", nil, nil, "sen") add_tense("impf_sub", stems.impf_sub_antepenult_stressed, nil, nil, nil, "semos", "sedes", nil) add_tense("fut_sub", stems.fut_sub, "r", "res", "r", "rmos", "rdes", "ren") add_tense("fut", stems.fut, "ei", "ás", "á", "emos", "edes", "án") add_tense("cond", stems.cond, "ía", "ías", "ía", "iamos", "iades", "ían") -- [[pór]] needs overrides of the pers_inf_1s and pers_inf_3s. add_tense("pers_inf", stems.pers_inf, "r", "res", "r", "rmos", "rdes", "ren") end local function add_non_finite_forms(base) local stems = base.this_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.verb}) end end -- verbs in -por have the gerund overridden local ger_ending = base.conj == "ar" and "ando" or base.conj == "er" and "endo" or "indo" addit("gerund", stems.pres_unstressed, ger_ending) -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{gl-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, stems.pres_unstressed, ger_ending) end end -- Skip the long/short past participle footnotes if called from {{gl-verb}} so they don't show in the headword. local long_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-verb" and {long_pp_footnote} or nil addit("pp_ms", stems.pp_ms, "", long_pp_footnotes) if not base.pp_inv then addit("pp_fs", stems.pp_fs, "", long_pp_footnotes) addit("pp_mp", stems.pp_ms, "s", long_pp_footnotes) addit("pp_fp", stems.pp_fs, "s", long_pp_footnotes) end if stems.short_pp_ms then local short_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-verb" and {short_pp_footnote} or nil addit("short_pp_ms", stems.short_pp_ms, "", short_pp_footnotes) if not base.pp_inv then addit("short_pp_fs", stems.short_pp_fs, "", short_pp_footnotes) addit("short_pp_mp", stems.short_pp_ms, "s", short_pp_footnotes) addit("short_pp_fp", stems.short_pp_fs, "s", short_pp_footnotes) end end end local function add_imperatives(base) for _, vowel_alt in ipairs(base.vowel_alt_stems) do construct_stems(base, vowel_alt, "imp only") local stems = base.this_stems if stems.imp2s_override then add3(base, "imp_2s", stems.imp2s_override, base.conj == "ar" and "a" or "e") else -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) end end if not skip_slot(base, "imp_2p") then -- Copy pres2p to imperative 2p minus -s since they are almost always the same. -- But not if there's an override, to avoid possibly throwing an error. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) local form_no_s = rmatch(form, "^(.*)s$") if not form_no_s then error("Can't derive second-person plural imperative from second-person plural present indicative " .. "because form '" .. form .. "' doesn't end in -s") end return form_no_s end)) end -- Copy subjunctives to imperatives, unless there's an override for the given slot (as with the imp_1p of [[ir]]). for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = "[[" .. clitic .. "]]" .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Add the appropriate clitic pronouns in `clitics` to the forms in `base_slot`. `store_cliticized_form` is a function -- of three arguments (clitic, formobj, cliticized_form) and should store the cliticized form for the specified clitic -- and form object. local function suffix_clitic_to_forms(base, base_slot, clitics, store_cliticized_form) if not base.forms[base_slot] then -- This can happen, e.g. in only3s/only3sp/only3p verbs. return end for _, formobj in ipairs(base.forms[base_slot]) do -- Figure out the correct accenting of the verb when a clitic pronoun is attached to it. We may need to -- add or remove an accent mark: -- (1) No accent mark currently, none needed: infinitive sentar -> sentarse; imperative singular ten -> tente; -- (2) Accent mark currently, still needed: infinitive concluír -> concluírse; -- (3) No accent mark currently, accent needed: imperative singular sinte -> síntete; -- (4) Accent mark currently, not needed: third singular sentirá -> sentirase, imperative singular dá -> date. local syllables = com.syllabify(formobj.form) local sylno = com.stressed_syllable(syllables) table.insert(syllables, "lo") -- arbitrary stand-in local needs_accent = com.accent_needed(syllables, sylno) if needs_accent then syllables[sylno] = com.add_accent_to_syllable(syllables[sylno]) else syllables[sylno] = com.remove_accent_from_syllable(syllables[sylno]) end table.remove(syllables) -- remove added clitic pronoun local reaccented_form = table.concat(syllables) for _, clitic in ipairs(clitics) do local cliticized_form -- Some further special cases. if base_slot:find("_1p$") and clitic == "nos" then -- Final -s disappears: sintamos + nos -> sintámonos cliticized_form = reaccented_form:gsub("s$", "") .. clitic elseif clitic:find("^[oa]s?$") then if reaccented_form:find("[rs]$") then cliticized_form = reaccented_form:gsub("[rs]$", "l") .. clitic elseif reaccented_form:find(V .. "[iu]$") then cliticized_form = reaccented_form .. "n" .. clitic else cliticized_form = reaccented_form .. clitic end else cliticized_form = reaccented_form .. clitic end store_cliticized_form(clitic, formobj, cliticized_form) end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local clitic if not do_reflexive then clitic = base.clitic elseif slot:find("[123]") then local persnum = slot:match("^.*_(.-)$") clitic = person_number_to_reflexive_pronoun[persnum] else clitic = "se" end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = not slot:find("_sub") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{gl-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "gl-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, clitic, " ... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then suffix_clitic_to_forms(base, slot, {clitic}, function(clitic, formobj, cliticized_form) formobj.form = cliticized_form end ) end elseif not do_joined then -- Add clitic as separate word before all other forms. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, clitic, " ", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{gl-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) -- Copy subjunctives to negative imperatives, preceded by "non". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "non " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[non]] " .. form else return "[[non]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) for _, vowel_alt in ipairs(base.vowel_alt_stems) do construct_stems(base, vowel_alt) add_present_indic(base) add_present_subj(base) end add_finite_non_present(base) add_non_finite_forms(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[non]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif rfind(first_element, ":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) end else local comma_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*,%s*") for j = 1, #comma_separated_groups do local alt = comma_separated_groups[j][1] if not vowel_alternants[alt] then if #comma_separated_groups == 1 then parse_err("Unrecognized spec or vowel alternant '" .. alt .. "'") else parse_err("Unrecognized vowel alternant '" .. alt .. "'") end end if base.vowel_alt then for _, existing_alt in ipairs(base.vowel_alt) do if existing_alt.form == alt then parse_err("Vowel alternant '" .. alt .. "' specified twice") end end else base.vowel_alt = {} end table.insert(base.vowel_alt, {form = alt, footnotes = fetch_footnotes(comma_separated_groups[j])}) end end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form -- so we can use it below in the 'lemma_linked' form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)(se)$") if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve -- links in multiword lemmas and include links in non-lemma forms rather than allowing -- the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} if not base.no_built_in then for _, built_in_conj in ipairs(built_in_conjugations) do if type(built_in_conj.match) == "function" then base.prefix, base.non_prefixed_verb = built_in_conj.match(base.verb) elseif built_in_conj.match:find("^%^") and rsub(built_in_conj.match, "^%^", "") == base.verb then -- begins with ^, for exact match, and matches base.prefix, base.non_prefixed_verb = "", base.verb else base.prefix, base.non_prefixed_verb = rmatch(base.verb, "^(.*)(" .. built_in_conj.match .. ")$") end if base.prefix then -- we found a built-in verb for stem, forms in pairs(built_in_conj.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.stems[stem] = forms end end break end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiíoó]r)$") if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end base.inf_stem = inf_stem suffix = suffix == "ór" and "or" or suffix == "ír" and "ir" or suffix base.conj = suffix base.conj_vowel = suffix == "ar" and "a" or suffix == "ir" and "i" or "e" base.frontback = suffix == "ar" and "back" or "front" if base.stems.vowel_alt then -- built-in verb with specified vowel alternation if base.vowel_alt then error(base.verb .. " is a recognized built-in verb, and should not have vowel alternations specified with it") end base.vowel_alt = iut.convert_to_general_list_form(base.stems.vowel_alt) end -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.stems[indicator_flag] end -- Convert vowel alternation indicators into stems. local vowel_alt = base.vowel_alt or {{form = "+"}} base.vowel_alt_stems = apply_vowel_alternations(base.inf_stem, vowel_alt) for _, vowel_alt_stems in ipairs(base.vowel_alt_stems) do if vowel_alt_stems.err then error("To use '" .. vowel_alt_stems.altobj.form .. "', present stem '" .. base.prefix .. base.inf_stem .. "' " .. vowel_alt_stems.err) end end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:gl-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) alternant_multiword_spec.vowel_alt = {} iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end -- Vowel alternants. Do these after calling detect_indicator_spec() because the latter sets base.vowel_alt for -- built-in verbs. if base.vowel_alt then for _, altobj in ipairs(base.vowel_alt) do m_table.insertIfNot(alternant_multiword_spec.vowel_alt, altobj.form) end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Galician verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "Galician " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "gl-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("verbs with red links in their inflection tables") must_break = true break end end end end if must_break then break end end end if(base.conj == "or") then insert_cat("verbs ending in -er") else insert_cat("verbs ending in -" .. base.conj) end if base.irreg then insert_ann("irreg", "irregular") insert_cat("irregular verbs") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "impersonal") insert_cat("impersonal verbs") elseif base.only3sp then insert_ann("defective", "third-person only") insert_cat("third-person-only verbs") elseif base.only3p then insert_ann("defective", "third-person plural only") insert_cat("third-person-plural-only verbs") elseif base.no_pres_stressed or base.no_pres1_and_sub then insert_ann("defective", "defective") insert_cat("defective verbs") else insert_ann("defective", "regular") end if base.stems.short_pp then insert_ann("short_pp", "irregular short past participle") insert_cat("verbs with irregular short past participle") else insert_ann("short_pp", "regular") end if base.clitic then insert_cat("verbs with lexical clitics") end if base.refl then insert_cat("reflexive verbs") end if not base.vowel_alt then insert_ann("vowel_alt", "non-alternating") else for _, alt in ipairs(base.vowel_alt) do if alt.form == "+" then insert_ann("vowel_alt", "non-alternating") else insert_ann("vowel_alt", vowel_alternant_to_desc[alt.form]) insert_cat("verbs with " .. vowel_alternant_to_cat[alt.form]) end end end local cons_alt = base.stems.cons_alt if cons_alt == nil then if base.conj == "ar" then if base.inf_stem:find("z$") then cons_alt = "c-z" elseif base.inf_stem:find("c$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-gu" elseif base.inf_stem:find("gu$") then cons_alt = "gu-gü" end else if base.no_pres_stressed or base.no_pres1_and_sub then cons_alt = nil -- no e.g. c-z alternation in this case elseif base.inf_stem:find("c$") then cons_alt = "c-z" elseif base.inf_stem:find("qu$") then cons_alt = "c-qu" elseif base.inf_stem:find("gu$") then cons_alt = "g-gu" elseif base.inf_stem:find("gü$") then cons_alt = "gu-gü" end end end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat("verbs with " .. desc) else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.irreg = {} ann.short_pp = {} ann.defective = {} ann.vowel_alt = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local short_pp = table.concat(ann.short_pp, " or ") if short_pp ~= "" and short_pp ~= "regular" then table.insert(ann_parts, short_pp) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local vowel_alt = table.concat(ann.vowel_alt, " or ") if vowel_alt ~= "" and vowel_alt ~= "non-alternating" then table.insert(ann_parts, vowel_alt) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, "; ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() if alternant_multiword_spec.forms.short_pp_ms then alternant_multiword_spec.has_short_pp = true end local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then if slot:find("^pp_") then accel_obj.form = slot elseif slot == "gerund" then accel_obj.form = "gerund-" .. reconstructed_verb_spec else accel_obj.form = "verb-form-" .. reconstructed_verb_spec end end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead" align=center>&nbsp; &nbsp; การผันรูปของ {title}</div> <div class="NavContent" align="left"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! class="roa-person-number-header" rowspan="2" | ! class="roa-person-number-header" colspan="3" | เอกพจน์ ! class="roa-person-number-header" colspan="3" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<eu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<ti>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<el>> / <<ela>> / <<vostede|Vde.>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<nós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<vós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<eles>> / <<elas>> / <<vostedes|Vdes.>>) |- | class="roa-nonfinite-header" colspan="7" | ''<span title="infinitivo">รูปกริยากลาง</span>'' |- | class="roa-nonfinite-header" | '''<span title="infinitivo impersoal">คำอบุรุษกริยา</span>''' | colspan="6" | {infinitive} |- | class="roa-nonfinite-header" | '''<span title="infinitivo conxugado">คำบุรุษกริยา</span>''' | {pers_inf_1s} | {pers_inf_2s} | {pers_inf_3s} | {pers_inf_1p} | {pers_inf_2p} | {pers_inf_3p} |- | class="roa-nonfinite-header" colspan="7" | ''<span title="xerundio">รูปกริยาเป็นนาม</span>'' |- | class="roa-nonfinite-header" | | colspan="6" | {gerund} |-{pp_clause} ! class="roa-indicative-left-rail" colspan="7" | ''<span title="indicativo">มาลาบอกเล่า</span>'' |- ! class="roa-indicative-left-rail" | <span title="presente">ปัจจุบันกาล</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito imperfecto">ไม่สมบูรณ์</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito perfecto">อดีตกาลสิ้นสุด (สมบูรณ์)</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito pluscuamperfecto">อภิสมบูรณ์</span> | {plup_1s} | {plup_2s} | {plup_3s} | {plup_1p} | {plup_2p} | {plup_3p} |- ! class="roa-indicative-left-rail" | <span title="futuro do presente">อนาคตกาล</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" | <span title="condicional">มาลาเงื่อนไข</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" colspan="7" | ''<span title="subxuntivo">มาลาสมมุติ</span>'' |- ! class="roa-subjunctive-left-rail" | <span title=" presente do subxuntivo">ปัจจุบันกาล</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="pretérito imperfecto do subxuntivo">ไม่สมบูรณ์</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="futuro do subxuntivo">อนาคตกาล</span> | {fut_sub_1s} | {fut_sub_2s} | {fut_sub_3s} | {fut_sub_1p} | {fut_sub_2p} | {fut_sub_3p} |- ! class="roa-imperative-left-rail" colspan="7" | ''<span title="imperativo">มาลาสั่ง</span>'' |- ! class="roa-imperative-left-rail" | <span title="imperativo afirmativo">เชิงยืนยัน</span> | rowspan="2" | | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" | <span title="imperativo negativo">เชิงปฏิเสธ</span> (<<non>>) | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div> ]=] local double_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="participio irregular">รูปกริยาขยายอดีตกาลสั้น</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {short_pp_ms} | colspan="3" | {short_pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {short_pp_fs} | colspan="3" | {short_pp_fp} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="participio regular">รูปกริยาขยายอดีตกาลยาว</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local single_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="participio pasado">รูปกริยาขยายอดีตกาล</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form) if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" -- has_short_pp is computed in show_forms(). local pp_template = alternant_multiword_spec.has_short_pp and double_pp_template or single_pp_template forms.pp_clause = m_string_utilities.format(pp_template, forms) local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "แม่แบบ" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{gl-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "gl-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "gl-conj" or pagename == "gl-verb") and in_template_space() then arg1 = "paliar<í,+>" elseif pagename == "gl-verb form of" and in_template_space() then arg1 = "amar" else arg1 = "<>" end end -- When called from {{gl-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "gl-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "gl-verb form of" and in_template_space() then verb_form_of_form = "ame" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "gl-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{gl-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "gl-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export 7l0ov7iq9tgh824enjf44wjt7evemm8 5729420 5729418 2026-07-20T09:18:08Z Octahedron80 267 5729420 Scribunto text/plain --[=[ This module implements {{gl-conj}} and provides the underlying conjugation functions for {{gl-verb}} (whose actual formatting is done in [[Module:gl-headword]]). This module uses the standard norm for Galician spelling. See also [[Module:gl-reinteg-verb]], which implements the reintegrationist norm. Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Galician form representing the value of a given slot. -- "lemma" = The dictionary form of a given Galician term. For Galician, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("gl") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:gl-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility local function link_term(term, display) return m_links.full_link({ lang = lang, term = term, alt = display }, "term") end local V = com.V -- vowel regex class local AV = com.AV -- accented vowel regex class local C = com.C -- consonant regex class local TEMPC1 = u(0xFFF1) -- temporary character used for consonant substitutions local short_pp_footnote = "[usually used with auxiliary verbs " .. link_term("ser") .. " and " .. link_term("estar") .. "]" local long_pp_footnote = "[usually used with auxiliary verbs " .. link_term("haber") .. " and " .. link_term("ter") .. "]" --[=[ Vowel alternations: <i-e>: 'i' in pres1s, imp2s and the whole present subjunctive; 'e' elsewhere when stressed. Generally 'e' otherwise when unstressed. E.g. [[sentir]], [[conseguir]] (the latter additionally with 'gu-g' alternation). <u-o>: 'u' in pres1s, imp2s and the whole present subjunctive; 'o' elsewhere when stressed. Generally 'u' otherwise when unstressed. E.g. [[durmir]], [[subir]]. <i>: 'i' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'e'. E.g. [[vestir]], [[pedir]]. <u>: 'u' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'o'. There may be no such verbs in standard Galician. <í>: The last 'i' of the stem) becomes 'í' when stressed. E.g.: * [[faiscar]] (only3sp; faísca, faíscan, faísque, faísquen' also with 'c-qu' alternation), [[acainzar]], [[avaiñar]], [[cainzar]], [[caiñar]], [[desenvaiñar]], [[envaiñar]], [[arremuiñar]], [[arrepuiñar]], [[arruinar]], [[cuincar]], [[cuiñar]], [[muiñar]] * verbs in -eizar and -aizar, e.g. [[europeizar]] ('europeízo, europeíce', etc. also with 'z-c' alternation) * [[desenraizar]], [[enraizar]], [[hebraizar]], [[xudaizar]] * [[europeizar]], [[homoxeneizar]] * some verbs in -uizar: * [[enxuizar]] (enxuízo, enxuíza, enxuíce, enxuícen, also with 'z-c' alternation), [[axuizar]] * but not any in -guizar ([[arreguizar]], [[desgaleguizar]], [[empreguizar]], [[esguizar]], [[espreguizar]], [[galeguizar]]) or -quizar ([[catequizar]], [[esnaquizar]], [[xerarquizar]]) * none in -aiar? * not [[abraiar]], [[achaiar]], [[alfaiar]], [[amaiar]], [[arraiar]], [[atalaiar]], [[desmaiar]], [[encaiar]], [[engraiar]], [[ensaiar]], [[espraiar]], [[faiar]], [[laiar]], [[maiar]], [[raiar]], [[salaiar]] * unknown: [[craiar]] * some verbs in -biar: * [[adobiar]], [[asubiar]], [[espabiar]] * but not [[arrubiar]], [[asoberbiar]] /e/?, [[cambiar]], [[descambiar]], [[enrabiar]], [[ensoberbiar]] /e/?, [[entibiar]], [[gabiar]], [[gobiar]] /ɔ/, [[intercambiar]], [[rabiar]], [[recambiar]], [[sarabiar]] (only3s), [[turbiar]] * none in -ciar: * not [[acariciar]], [[agraciar]], [[anunciar]], [[apreciar]] /e/?, [[asociar]] /ɔ/, [[auspiciar]], [[autofinanciar]], [[aviciar]], [[axenciar]] /ɛ/, [[beneficiar]], [[comerciar]] /ɛ/, [[concienciar]] /ɛ/, [[conferenciar]] /e/?, [[congraciar]], [[denunciar]], [[depreciar]] /e/?, [[desasociar]] /ɔ/, [[desenviciar]], [[desgraciar]], [[desperdiciar]], [[diferenciar]] /e/?, [[dilixenciar]] /e/?, [[disociar]] /ɔ/, [[distanciar]], [[divorciar]] /ɔ/, [[enranciar]], [[ensuciar]], [[enunciar]], [[enviciar]], [[escanciar]], [[especiar]] /?/, [[evidenciar]] /e/?, [[financiar]], [[graciar]], [[influenciar]] /e/?, [[iniciar]], [[licenciar]] /ɛ/, [[maliciar]], [[negociar]] /ɔ/, [[oficiar]], [[potenciar]] /e/?, [[prenunciar]], [[presenciar]] /e/?, [[pronunciar]], [[propiciar]], [[quintaesenciar]] /e/?, [[reiniciar]], [[renunciar]], [[reverenciar]] /e/?, [[saciar]], [[sentenciar]] /e/?, [[silenciar]] /e/?, [[viciar]] * some verbs in -diar: * [[adiar]], [[vadiar]] * but not [[asediar]] /ɛ/, [[compendiar]] /ɛ/, [[custodiar]] /ɔ/, [[deslendiar]] /e/?, [[entremediar]] /e/?, [[estipendiar]] /e/?, [[fastidiar]], [[incendiar]] /e/?, [[insidiar]], [[irradiar]], [[mediar]] /e/?, [[odiar]] /ɔ/, [[parodiar]] /ɔ/, [[preludiar]], [[radiar]], [[remediar]] /ɛ/, [[repudiar]], [[salmodiar]] /ɔ/, [[subsidiar]], [[vilipendiar]] /ɛ/ * some verbs in -fiar: * [[afiar]], [[confiar]], [[desafiar]], [[desconfiar]], [[desenfiar]], [[enfiar]], [[esfiar]], [[esgrafiar]], [[fiar]], [[porfiar]], probably [[sobrefiar]] (not indicated) * but not [[atrofiar]] /ɔ/, [[hipertrofiar]] /ɔ/ * verbs in -guiar: * [[guiar]], [[radioguiar]], [[teleguiar]] * verbs in -hiar: * [[chiar]], [[rechiar]], [[rechouchiar]] * some verbs in -liar: * [[aliar]] (alío, alía, alíe, alíen), [[ampliar]], [[avaliar]], [[desliar]], [[liar]] * but not [[afiliar]] (afilio, afilia, afilie, afilien), [[auxiliar]], [[conciliar]], [[defoliar]], [[domiciliar]], [[escoliar]], [[espoliar]], [[exfoliar]], [[exiliar]], [[interfoliar]], [[reconciliar]] * [[paliar]] goes both ways: 'palio/palío', 'palia/palía', 'palie/palíe', 'palien/palíen' * unknown: [[represaliar]] * some verbs in -miar: * [[gurrumiar]], [[miar]] * but not [[agremiar]], [[amomiar]], [[encomiar]], [[premiar]], [[rumiar]] * some verbs in -niar: * [[agoniar]], [[desagoniar]] * but not [[calumniar]], [[conxeniar]], [[herniar]], [[miniar]] * none in -oiar? * not [[aboiar]] /ɔ/, [[acoiar]] /ɔ/, [[apoiar]] /o/, [[arroiar]] /o/ (only3s), [[choiar]]/[[enchoiar]] /ɔ/, [[enxoiar]] /ɔ/, [[loiar]] /o/ * some verbs in -piar: * [[arrepiar]], [[espiar]], [[expiar]], [[piar]] * but not [[apropiar]], [[copiar]], [[expropiar]], [[fotocopiar]], [[lurpiar]], [[principiar]], [[recopiar]], [[tapiar]], [[xerocopiar]] * some verbs in -quiar: * [[esquiar]], [[maquiar]], [[remaquiar]], [[tosquiar]] * but not [[obsequiar]] * unknown: [[franquiar]] * some verbs in -riar: * [[arrefriar]], [[arriar]], [[avariar]], [[criar]], [[desvariar]], [[enriar]], [[escagarriar]], [[estriar]], [[malcriar]], [[recriar]], [[variar]] * but not [[anguriar]], [[asalariar]], [[cariar]] (only3sp), [[contrariar]], [[desmemoriar]], [[expatriar]], [[gloriar]], [[historiar]], [[inventariar]], [[inxuriar]], [[leriar]], [[repatriar]], [[seriar]], [[vangloriar]] * some verbs in -siar: * [[fantasiar]] * but not [[anestesiar]], [[extasiar]] * [[ansiar]] goes both ways: 'ansio/ansío', 'ansia/ansía', 'ansie/ansíe', 'ansien/ansíen' * some verbs in -tiar: * [[amnistiar]], [[desenfastiar]], [[enfastiar]] * but not [[angustiar]], [[sitiar]] * some verbs in -viar: * [[ataviar]], [[aviar]], [[desataviar]], [[desviar]], [[enviar]], [[extraviar]], [[reenviar]] * but not [[abreviar]], [[agraviar]], [[aliviar]], [[desagraviar]], [[diluviar]] (only3s), [[obviar]] * some verbs in -xiar: * [[vixiar]] * but not [[asfixiar]], [[colexiar]] /e/, [[contaxiar]], [[desprestixiar]], [[eloxiar]], [[plaxiar]], [[presaxiar]], [[prestixiar]], [[privilexiar]] /e/, [[refuxiar]] <ú>: The last 'u' of the stem becomes 'ú' when stressed. E.g.: * [[reunir]] ('reúno, reúne(s), reúnem, reúna(s), reúnan') * [[esmiuzar]] ('esmiúzo, esmiúza(s), esmiúza, esmiúce(s), esmiúcen' also with 'z-c' alternation) * [[saudar]] ('saúdo, saúda(s), saúda, saúde(s), saúden') * [[auñar]], [[desembaular]], [[embaular]] * [[afiuzar]], [[desafiuzar]], [[desmiudar]], [[desmiuzar]], [[enviuvar]], [[esmiuzar]] but not [[triunfar]] * NOTE: It seems most or all verbs in -uar other than in -guar, -quar have stressed ú, so we make it the default. ]=] local vowel_alternants = m_table.listToSet({"i-e", "i", "í", "u-o", "u", "ú", "+"}) local vowel_alternant_to_desc = { ["i-e"] = "''i-e'' alternation in present singular", ["i"] = "''e'' becomes ''i'' when stressed", ["í"] = "''i'' becomes ''í'' when stressed", ["u-o"] = "''u-o'' alternation in present singular", ["u"] = "''o'' becomes ''u'' when stressed", ["ú"] = "''u'' becomes ''ú'' when stressed", } local vowel_alternant_to_cat = { ["i-e"] = "i-e alternation in present singular", ["i"] = "e becoming i when stressed", ["í"] = "i becoming í when stressed", ["u-o"] = "u-o alternation in present singular", ["u"] = "o becoming u when stressed", ["ú"] = "u becoming ú when stressed", } local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} person_number_to_reflexive_pronoun = { ["1s"] = "me", ["2s"] = "te", ["3s"] = "se", ["1p"] = "nos", ["2p"] = "vos", ["3p"] = "se", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "no_pres1_and_sub", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"short_pp_ms", "short|m|s|past|part"}, {"short_pp_fs", "short|f|s|past|part"}, {"short_pp_mp", "short|m|p|past|part"}, {"short_pp_fp", "short|f|p|past|part"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{gl-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{gl-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{gl-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{gl-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "gl-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{gl-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "pres|ind", person_number_list) add_basic_personal_slot("impf", "impf|ind", person_number_list) add_basic_personal_slot("pret", "pret|ind", person_number_list) add_basic_personal_slot("plup", "plup|ind", person_number_list) add_basic_personal_slot("fut", "fut|ind", person_number_list) add_basic_personal_slot("cond", "cond", person_number_list) add_basic_personal_slot("pres_sub", "pres|sub", person_number_list) add_basic_personal_slot("impf_sub", "impf|sub", person_number_list) add_basic_personal_slot("fut_sub", "fut|sub", person_number_list) add_basic_personal_slot("imp", "imp", imp_person_number_list) add_basic_personal_slot("pers_inf", "pers|inf", person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'non' + subjunctive. add_basic_personal_slot("neg_imp", "neg|imp", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values(separated_groups, data) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local retval = {form = separated_group[1], footnotes = footnotes} table.insert(retvals, retval) end return retvals end local function simple_choice(choices) return function(separated_groups, data) if #separated_groups > 1 then data.parse_err("For spec '" .. data.prefix .. ":', only one value currently allowed") end if #separated_groups[1] > 1 then data.parse_err("For spec '" .. data.prefix .. ":', no footnotes currently allowed") end local choice = separated_groups[1][1] if not m_table.contains(choices, choice) then data.parse_err("For spec '" .. data.prefix .. ":', saw value '" .. choice .. "' but expected one of '" .. table.concat(choices, ",") .. "'") end return choice end end for _, overridable_stem in ipairs { "pres_unstressed", "pres_stressed", "pres1_and_sub", -- Don't include pres1; use pres_1s if you need to override just that form "impf", "full_impf", {"pret_conj", simple_choice({"irreg", "ar", "er", "ir"}) }, "pret_base", "pret", "short_pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", {"sub_conj", simple_choice({"ar", "er"}) }, "plup", "impf_sub", "fut_sub", "pers_inf", "pp", "short_pp", } do if type(overridable_stem) == "string" then overridable_stems[overridable_stem] = allow_multiple_values else local stem, validator = unpack(overridable_stem) overridable_stems[stem] = validator end end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `vowel_alt`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/z, g/gu, gu/gü, g/j) occur automatically as appropriate for the ending. 2. If the stem begins with an acute accent, the accent is moved onto the last vowel of the prefix (for handling verbs in -uar such as [[minguar]], pres_3s 'míngua'). 3. If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. 4. If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem, e.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. 5. If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1_and_sub: Overriding stem for 1s present indicative and the entire subjunctive. Only set by irregular verbs and by the indicators `no_pres_stressed` (e.g. [[precaver]]) and `no_pres1_and_sub` (since verbs of this sort, e.g. [[puir]], are missing the entire subjunctive as well as the 1s present indicative). Used by many irregular verbs, e.g. [[caber]], verbs in '-air', [[dizer]], [[ter]], [[valer]], etc. Some verbs set this and then supply an override for the pres_1s if it's irregular, e.g. [[saber]], with irregular subjunctive stem "saib-" and special 1s present indicative "sei". -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres1_and_sub if given, else pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to pres1_and_sub if given, else the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- sub_conj: Determines the set of endings used in the subjunctive. Should be one of "ar" or "er". -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- full_impf: The full imperfect stem missing only the endings (-a, -as, -am, etc.). Used for verbs with irregular imperfects such as [[ser]], [[ter]], [[vir]] and [[pór]]. -- pret_conj: Determines the set of endings used in the preterite. Should be one of "ar", "er", "ir" or "irreg". Defaults to the conjugation as determined from the infinitive. When pret_conj == "irreg", `pret` is used, otherwise `pret_base`. -- pret_base: The preterite stem (not including the -a-/-e-/-i- stem suffix). Defaults to the infinitive stem. Only used when pret_conj ~= "irreg". -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. The pret_1s and pret_3s are handled using the short_pret stem instead (pret_1s '-en', pret_3s '-o'). Defaults to `pret_base` + the conjugation vowel. -- short_pret: The short preterite stem, used with 1s and 3s endings (pret_1s '-en', pret_3s '-o'). Only used with irregular preterites (pret_conj == "irreg"). Normally derived from pret by deleting the final vowel, and doesn't need to be given explicitly. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- fut_sub: The future subjunctive stem. Defaults to `pret`. -- plup: The pluperfect stem. Defaults to `pret`. -- pers_inf: The personal infinitive stem. Defaults to the infinitive stem + the conjugation vowel. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- short_pp: The short masculine singular past participle, for verbs with such a form. No default. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- (1) Verbs with short past participles: need to specify the short pp explicitly. -- -- aceitar: use <short_pp:aceite> -- anexar, completar, expressar, expulsar, findar, fritar, ganhar, gastar, limpar, pagar, pasmar, pegar, soltar: -- use <short_pp:anexo> etc. -- assentar: use <short_pp:assente> -- entregar: use <short_pp:entregue> -- enxugar: use <short_pp:enxuto> -- matar: use <short_pp:morto> -- -- (2) Verbs with orthographic consonant alternations: handled automatically. -- -- -car (brincar, buscar, pecar, trancar, etc.): automatically handled in combine_stem_ending() -- -zar (alcanzar, comezar, lazar): automatically handled in combine_stem_ending() -- -gar (apagar, cegar, esmagar, largar, navegar, resmungar, sugar, etc.): automatically handled in combine_stem_ending() -- -guar (iguar, minguar): automatically handled in combine_stem_ending() -- -- (3) Verbs with vowel alternations: need to specify the alternation explicitly unless it always happens, in -- which case it's handled automatically through an entry below. -- -- esmiuzar changing to esmiúzo: use <ú> -- faiscar changing to faísco: use <í> -- -izar changing to -ízo (ajuizar, enraizar, homogeneizar, plebeizar, etc.): use <í> -- reusar changing to reúso: use <ú> -- saudar changing to saúdo: use <ú> -- tuitar/retuitar changing to (re)tuíto: use <í> { -- dar match = "^dar", -- [[desdar]] doesn't seem to exist; [[redar]] is regular and unrelated to [[dar]] forms = { pres_1s = "dou", pres_2s = "dás", pres_3s = "dá", pres_3p = "dán#", pres1_and_sub = "de", -- only for subjunctive as we override pres_1s sub_conj = "er", pret_conj = "irreg", pret = "de", pret_1s = "dei", pret_3s = "deu", -- /dɛw/ irreg = true, } }, { -- estar match = "^estar", -- [[sobestar]] and [[sobrestar]] seem not to exist forms = { pres_1s = "estou", pres_2s = "estás", pres_3s = "está", pres_3p = "están", pres1_and_sub = "este", -- only for subjunctive as we override pres_1s sub_conj = "er", pret_conj = "irreg", pret = "estive", pp_inv = true, -- no [[sobestar]] or [[sobrestar]], which would be transitive irreg = true, } }, { -- verbs in -uar but not -guar match = function(verb) if verb:find("guar$") then return nil else return match_against_verbs("uar", {""})(verb) end end, forms = { vowel_alt = "ú", } }, -------------------------------------------------------------------------------------------- -- -er -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- -cer (verbs in -ecer, vencer, etc.): automatically handled in combine_stem_ending() -- -guer (erguer/soerguer): automatically handled in combine_stem_ending() { -- must be listed before -aer match = "^traer", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() pres1_and_sub = "trai", pret_conj = "irreg", pret = "trouxe", irreg = true, } }, { -- verbs in -aer (caer, raer, debaer, degraer, esvaer and derivatives of traer, but not traer itself: -- acaer/decaer/recaer, -- abstraer/atraer/contraer/descontraer/detraer/distraer/extraer/maltraer/retraer/retrotraer/subtraer) match = "aer", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() pres1_and_sub = "ai", irreg = true, } }, { -- caber match = "caber", forms = { pres1_and_sub = "caib", pret_conj = "irreg", pret = "coube", irreg = true, } }, { -- crer, descrer match = "crer", forms = { pres1_and_sub = "cre", pres_2s = "crés#", pres_3s = "cré#", pres_3p = "crén#", -- regular except the lack of accent in base verb pret_1p = "crín#", irreg = true, } }, { -- acender, prender/aprender; not comprender/desprender/reprender, etc. match = match_against_verbs("ender", {"^ac", "^pr", "^apr"}), forms = {short_pp = "eso"}, }, { -- erguer; but not soerguer match = "^erguer", forms = {short_pp = "ergueito"}, }, { -- facer, afacer, contrafacer, desafacer, desfacer, perfacer, rarefacer, refacer, satisfacer, tumefacer match = "facer", forms = { -- use 'fagu' because we're in a front environment; if we use 'fag', we'll get '#fajo' pres1_and_sub = "fagu", pres_2s = "fás#", pres_3s = "fai", pres_3p = "fán#", pret_conj = "irreg", pret = "fixe", pp = "feito", fut = "far", irreg = true, cons_alt = false, -- avoid claiming we have a c-z alternation } }, { match = "^haber", forms = { pres_1s = "hei", pres_2s = "has", pres_3s = {"ha", "hai"}, pres_3p = "han", pres1_and_sub = "hax", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "hoube", noimp = true, irreg = true, } }, { -- ler, reler, trasler; not escoller, expeler, valer, etc. match = match_against_verbs("ler", {"^", "^re", "tras"}), forms = { pres1_and_sub = "le", pres_2s = "lés#", pres_3s = "lé#", pres_3p = "lén#", -- regular except the lack of accent in base verb pret_1p = "lín#", irreg = true, } }, { -- morrer, premorrer match = "morrer", forms = {pp = "morto"}, }, { -- nacer; but not renacer match = "^nacer", forms = {short_pp = "nado"}, }, { -- moer, but not remoer match = "^moer", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() pres1_and_sub = "moi", short_pp = "mudo", -- the main table says 'mundo' but the page for [[mundo]] says 'mudo' is "máis recomendable" irreg = true, } }, { -- choer/deschoer, doer/condoer, remoer, proer, roer/corroer match = "oer", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() pres1_and_sub = "oi", irreg = true, } }, { -- coller, toller and derivatives (acoller, desacoller, desencoller, encoller, entrecoller, escoller, recoller; -- destoller, entretoller) match = "oller", forms = {short_pp = "olleito"}, }, { -- poder match = "poder", forms = { pres1_and_sub = "poid", -- only for subjunctive as we override pres_1s pres_1s = "podo", -- /ɔ/ pret_conj = "irreg", pret = "puide", irreg = true, } }, { -- poñer, antepoñer, apoñer/desapoñer, arrepoñer, compoñer/descompoñer/recompoñer, contrapoñer, depoñer, -- dispoñer/indispoñer/predispoñer, empoñer, expoñer/sobreexpoñer/subexpoñer, impoñer/reimpoñer, interpoñer, -- opoñer, pospoñer, propoñer, repoñer, sobrepoñer, superpoñer, supoñer/presupoñer, traspoñer, xustapoñer match = "poñer", forms = { pres_2s = "pós#", pres_3s = "pón#", pret_conj = "irreg", pret = "puxe", pp = "posto", irreg = true, } }, { -- pracer, but not apracer, compracer, descompracer, despracer match = "^pracer", forms = { pret_conj = "irreg", pret = "prougue", irreg = true, } }, -- prover below, just below ver { -- querer match = "querer", forms = { pres1_and_sub = "queir", -- only for subjunctive as we override pres_1s pres_1s = "quero", -- /ɛ/ pret_conj = "irreg", pret = "quixe", irreg = true, } }, { -- romper; but not corromper, interromper, irromper or prorromper match = "^romper", forms = {short_pp = "roto"}, }, { -- saber, ressaber match = "saber", forms = { pres_1s = "sei", pres1_and_sub = "saib", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "soube", irreg = true, } }, { -- absolver, disolver, resolver match = "solver", forms = {short_pp = "solto"}, }, { -- suspender; but not others in -pender match = "suspender", forms = {short_pp = "suspenso"}, }, { match = "^ser", forms = { pres_1s = "son", pres_2s = "es", pres_3s = "é", pres_1p = "somos", pres_2p = "sodes", pres_3p = "son", pres1_and_sub = "sex", -- only for subjunctive as we override pres_1s full_impf = "er", pret_conj = "irreg", pret = "fo", pret_1s = "fun", pret_2s = "fuches", pret_3s = "foi", imp_2s = "sé", imp_2p = "sede", irreg = true, } }, { -- We want to match abster, conter, deter, etc. but not abater, cometer, etc. No way to avoid listing each verb. match = match_against_verbs("ter", {"abs", "^a", "con", "de", "entre", "man", "ob", "^re", "sos", "^"}), forms = { pres_2s = "tés#", pres_3s = "tén#", pres_2p = {"tendes", "tedes"}, pres_3p = "teñen", pres1_and_sub = "teñ", full_impf = "tiñ", pret_conj = "irreg", pret = "tive", irreg = true, } }, -- traer listed above at the beginning of the -er verbs { -- valer, equivaler match = "valer", forms = { pres1_and_sub = "vall", irreg = true, } }, { -- We want to match antever etc. but not absolver, atrever etc. No way to avoid listing each verb. -- NOTE: [[rever]] has two meanings, one with regular conjugation. Use <no_built_in> for this one. match = match_against_verbs("ver", {"entre", "pre", "^re", "^"}), forms = { pres_2s = "vés#", pres_3s = "vé#", pres_3p = "vén#", pres1_and_sub = "vex", pret_conj = "irreg", pret = "vi", pret_1s = "vín#", pret_3s = "viu", pp = "visto", irreg = true, } }, { -- [[prover]] has regular preterite and past participle match = "^prover", forms = { pres_2s = "provés", pres_3s = "prové", pres_3p = "provén", pres1_and_sub = "provex", short_pp = "provisto", irreg = true, } }, { -- [[desprover]] has its own conjugation match = "^desprover", forms = { pres_2s = "desprovés", pres_3s = "desprové", pres_3p = "desprovén", pres1_and_sub = "desprove", short_pp = "desprovisto", irreg = true, } }, { -- volver, avolver/desenvolver/devolver/envolver/revolver match = "volver", forms = {short_pp = "volto"}, }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- subir (NOT rubir), acudir/sacudir (NOT escudir, aludir/eludir), urdir/desurdir, xurdir/rexurdir, -- engulir, pulir, bulir/rebulir, ulir, mulir (NOT escapulir), durmir, sumir/consumir/ensumir (NOT -- asumir/reasumir/presumir/resumir/subsumir), cuspir/chuspir, sufrir, tusir, xunguir/conxunguir/desxunguir, -- munguir, fuxir/muxir/ruxir: use <u-o> -- [NOTE: imp_2s durme, consume/sume] -- sosubir/susubir: use <u-o>? (archaic, not in RAG dictionary) -- abolir: use <no_pres_stressed> -- descolorir: use <no_pres_stressed> -- empedernir: use <no_pres_stressed> -- espir/despir, refletir, adherir, pedir/desapedir/despedir/expedir/impedir/reexpedir, medir/comedir/descomedir, -- aferir/conferir/deferir/diferir/inferir/interferir/preferir/proferir/referir/transferir, -- dixerir/enxerir/suxerir, preterir, competir/repetir, advertir/divertir, vestir/investir/revestir/travestir, -- agredir/transgredir, espelir: use <i> -- mentir/desmentir, sentir/asentir/consentir/disentir/presentir/resentir, ferir (but no derivatives), servir, -- seguir/conseguir/perseguir/proseguir: use <i-e> -- [NOTE: imp_2s minte] -- denegrir: use <i.only3sp> -- prohibir/coibir: regular -- cumprir: use <no_built_in> in the meaning "fulfill" -- reunir: use <ú> -- argüír/redargüír: use <ú>? -- -- -cir alternations (aducir, resarcir): automatically handled in combine_stem_ending() -- -guir alternations (e.g. conseguir, cinguir, xunguir, tinguir): automatically handled in combine_stem_ending() -- -quir alternations (e.g. delinquir): automatically handled in combine_stem_ending() -- -güír alternations (e.g. argüír): automatically handled in combine_stem_ending() { -- saír/sobresaír match = "aír", forms = { pres1_and_sub = "ai", -- all occurrences of accented í and ï in endings handled in combine_stem_ending() irreg = true, } }, { -- abrir/desabrir/reabrir match = "abrir", forms = {pp = "aberto"}, }, { -- aflixir match = "aflixir", -- FIXME: should this be {pp = {"aflicto", "aflixido"}}? forms = {short_pp = "aflicto"}, }, { -- cubrir/descubrir/encubrir/recubrir/redescubrir match = "cubrir", forms = {vowel_alt = "u-o", pp = "coberto"}, }, { -- cumprir (only in the meaning "to be necessary"; otherwise use <no_built_in>) match = "^cumprir", forms = { -- We could create a <u-ó> just for this verb but that seems overkill unless another such verb appears pres_stressed = "cómpr", pres1_and_sub = "cumpr", }, }, { -- dicir, bendicir, contradicir, desdicir, maldicir, predicir -- FIXME: bendicir and maldicir can also be entirely regular. This could be handled like this: -- ((bendicir<>,bendicir<no_built_in>)) match = "dicir", forms = { -- use 'digu' because we're in a front environment; if we use 'dig', we'll get '#dijo' pres1_and_sub = "digu", pres_2s = "dís#", pres_3s = "dí#", pres_3p = "dín#", pret_conj = "irreg", pret = "dixe", pp = function(base, prefix) return (prefix == "" or prefix == "des" or prefix == "pre") and "dito" or {"dito", "dicido"} end, pp = "dito", fut = "dir", irreg = true, cons_alt = false, -- avoid claiming we have a c-z alternation } }, { -- elixir, reelixir match = "elixir", -- FIXME: should this be {pp = {"electo", "elixido"}}? forms = {short_pp = "electo"}, }, { -- frixir/sofrixir, fritir/sofritir match = "fri[xt]ir", forms = {short_pp = "frito"}, }, { -- inserir, reinserir match = "inserir", forms = { vowel_alt = "i", short_pp = "inserto", }, }, { -- ir match = "^ir", forms = { pres_1s = "vou", pres_2s = "vas", pres_3s = "vai", pres_1p = "imos", pres_2p = "ides", pres_3p = "van", pres1_and_sub = "vai", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "fo", pret_1s = "fun", pret_2s = "fuches", pret_3s = "foi", imp_1p = "vamos", irreg = true, } }, { -- oír, desoír, entreoír match = "oír", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() pres1_and_sub = "oi", -- /ɔ/ irreg = true, } }, { match = "ouvir", forms = { pres1_and_sub = "ouz", irreg = true, } }, { -- parir, malparir match = "parir", forms = { pres1_and_sub = "pair", irreg = true, } }, { -- imprimir/reimprimir/sobreimprimir, but not comprimir/descomprimir, deprimir, oprimir, reprimir, suprimir match = "imprimir", forms = {short_pp = "impreso"} }, { -- rir, sorrir match = match_against_verbs("rir", {"^", "sor"}), forms = { pres_2s = "ris#", pres_3s = "ri#", pres_3p = "rin#", pret_1s = "rin#", -- regular except the lack of accent in base verb pres1_and_sub = "rí", irreg = true, } }, { -- adscribir, circunscribir, describir, escribir/reescribir, inscribir, prescribir, proscribir, sobrescribir, -- subscribir, transcribir match = "scribir", forms = { pp = "scrito", irreg = true, } }, { -- concluír/recluír; not excluír/incluír/ocluír match = match_against_verbs("cluír", {"con", "re"}), forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() vowel_alt = "ú", short_pp = "cluso", } }, { -- posuír; not desposuír match = "^posuír", forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() vowel_alt = "ú", short_pp = "poseso", } }, { -- remaining verbs in -uír (excluír/incluír/ocluír, diluír, -- afluír/confluír/difluír/fluír/efluír/influír/refluír, atuír/desatuír, -- atribuír/contribuír/distribuír/redistribuír/retribuír/substituír, -- constituír/destituír/instituír/prostituír/reconstituír/restituír, -- construír/desobstruír/destruír/instruír/obstruír/reconstruír, derruír, -- desposuír, diminuír, luír/esluír, estatuír, imbuír, inmiscuír, intuír, puír, pruír) match = "[uü]ír", -- this won't match -guir verbs (e.g. [[conseguir]]) or -quir verbs (e.g. [[delinquir]]) forms = { -- all occurrences of accented í and ï in endings handled in combine_stem_ending() vowel_alt = "ú", } }, { -- We want to match advir, convir, devir, etc. but not ouvir, servir, etc. No way to avoid listing each verb. match = match_against_verbs("vir", {"ad", "^a", "con", "contra", "de", "^desa", "inter", "pre", "pro", "sobre", "^"}), forms = { pres_2s = "vés", pres_3s = "vén", pres_2p = {"vindes", "vides"}, pres_3p = "veñen", pres1_and_sub = "veñ", full_impf = "viñ", pret_conj = "irreg", pret = "viñe", pret_1s = "vín#", pret_3s = "veu", pp = "vindo", -- FIXME! The following is as in the RAG tables but may be a typo and should be vén for [[vir]] like pres_3s imp_2s = "vén#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- misc -- -------------------------------------------------------------------------------------------- { -- pór, antepor, apor/desapor, arrepor, compor/descompor/recompor, contrapor, depor, dispor/indispor/predispor, -- empor, expor/sobreexpor/subexpor, impor/reimpor, interpor, opor, pospor, propor, repor, sobrepor, -- superpor, supor/presupor, traspor, xustapor match = "p[oó]r", forms = { pres_2s = "pós#", pres_3s = "pón#", pres_1p = "pomos", pres_2p = "pondes", pres_3p = "pón#", pres1_and_sub = "poñ", full_impf = "puñ", pret_conj = "irreg", pret = "puxe", fut = "por", pers_inf = "po", pers_inf_1s = function(base, prefix) return prefix == "" and "pór" or "por" end, pers_inf_3s = function(base, prefix) return prefix == "" and "pór" or "por" end, gerund = "pondo", pp = "posto", irreg = true, } }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.noimp or base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end -- Apply vowel alternations to stem. local function apply_vowel_alternations(stem, alternations) local alternation_stems = {} local saw_pres1_and_sub = false local saw_pres_stressed = false local saw_imp2s_override = false local origstem = stem -- Treat final -gu, -qu as a consonant, so the previous vowel can alternate (e.g. conseguir -> consigo). -- This means a verb in -guar can't have a u-ú alternation but I don't think there are any verbs like that. stem = rsub(stem, "([gq])u$", "%1" .. TEMPC1) -- Process alternations other than +. for _, altobj in ipairs(alternations) do local alt = altobj.form local pres1_and_sub, pres_stressed, imp2s_override, err if alt == "+" then -- do nothing yet else local before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-)$") if alt == "i-e" then if last_vowel == "e" or last_vowel == "i" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel imp2s_override = pres1_and_sub if last_vowel == "i" then pres_stressed = before_last_vowel .. "e" .. after_last_vowel end else err = "should have -e- or -i- as the last vowel" end elseif alt == "i" then if last_vowel == "e" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -e- as the last vowel" end elseif alt == "u-o" then if last_vowel == "o" or last_vowel == "u" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel imp2s_override = pres1_and_sub if last_vowel == "u" then pres_stressed = before_last_vowel .. "o" .. after_last_vowel end else err = "should have -o- or -u- as the last vowel" end elseif alt == "u" then if last_vowel == "o" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -o- as the last vowel" end elseif alt == "í" then if last_vowel == "i" then pres_stressed = before_last_vowel .. "í" .. after_last_vowel else err = "should have -i- as the last vowel" end elseif alt == "ú" then if last_vowel == "u" or last_vowel == "ü" then pres_stressed = before_last_vowel .. "ú" .. after_last_vowel else err = "should have -u- or -ü- as the last vowel" end else error("Internal error: Unrecognized vowel alternation '" .. alt .. "'") end end local function unapply_u_mod(val) if val then return {form = val:gsub(TEMPC1, "u"), footnotes = altobj.footnotes}, true else return nil, false end end pres1_and_sub, saw_pres1_and_sub = unapply_u_mod(pres1_and_sub) pres_stressed, saw_pres_stressed = unapply_u_mod(pres_stressed) imp2s_override, saw_imp2s_override = unapply_u_mod(imp2s_override) table.insert(alternation_stems, { altobj = altobj, pres1_and_sub = pres1_and_sub, pres_stressed = pres_stressed, imp2s_override = imp2s_override, err = err }) end -- Now do +. We check to see which stems are used by other alternations and specify those so any footnotes are -- properly attached. for _, alternation_stem in ipairs(alternation_stems) do if alternation_stem.altobj.form == "+" then local stemobj = {form = origstem, footnotes = alternation_stem.altobj.footnotes} alternation_stem.pres1_and_sub = saw_pres1_and_sub and stemobj or nil alternation_stem.pres_stressed = saw_pres_stressed and stemobj or nil alternation_stem.imp2s_override = saw_imp2s_override and stemobj or nil end end return alternation_stems end -- Add the `stem` to the `ending` for the given `slot` and apply any phonetic modifications. -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, slot, prefix, stem, ending, dont_include_prefix) -- If the ending begins with an acute accent, it goes after the last vowel, but we don't have to do anything. -- Use the full stem for checking for -gui ending and such, because 'stem' is just 'u' for [[arguir]], -- [[delinquir]]. local full_stem = prefix .. stem -- Include the prefix in the stem unless dont_include_prefix is given (used for the past participle stem). if not dont_include_prefix then stem = full_stem end -- If ending begins with i, it must get an accent after a/o/u to prevent the two merging into a diphthong: -- caer -> caíches, caído; doer -> doíches, doído; concluír -> concluíches, concluído. if ending:find("^i") and stem:find("[aouü]$") and not stem:find("[gq]u$") then -- Special case for impf_1p/impf_2p, where the i is unstressed and changes into ï. FIXME: Maybe we should be -- checking the slot value instead. if ending == "iamos" or ending == "iades" then ending = ending:gsub("^i", "ï") else ending = ending:gsub("^i", "í") end end -- Spelling changes in the stem; it depends on whether the stem given is the pre-front-vowel or -- pre-back-vowel variant, as indicated by `frontback`. We want these front-back spelling changes to happen -- between stem and ending, not between prefix and stem; the prefix may not have the same "front/backness" -- as the stem. local is_front = rfind(ending, "^[eiéíï]") if base.frontback == "front" and not is_front then stem = stem:gsub("c$", "z") -- coñecer -> coñezo, vencer -> venzo, inmiscir -> inmiszo stem = stem:gsub("gu$", "g") -- distinguir -> distingo, conseguir -> consigo stem = stem:gsub("qu$", "c") -- delinquir -> delinco stem = stem:gsub("gü$", "gu") -- argüír -> arguamos elseif base.frontback == "back" and is_front then stem = stem:gsub("gu$", "gü") -- iguar -> igüei stem = stem:gsub("g$", "gu") -- cargar -> carguei, apagar -> apaguei stem = stem:gsub("c$", "qu") -- marcar -> marquei stem = rsub(stem, "z$", "c") -- aderezar -> aderecei end local retval = stem .. ending if retval:find("#$") then -- remove final accent if no prefix retval = retval:gsub("#$", "") if prefix == "" then retval = com.remove_final_accent(retval) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, slot, base.prefix, stem, ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function construct_stems(base, vowel_alt, imp_only) local stems = {} if imp_only then stems.imp2s_override = -- If no_pres_stressed given, there should be no imp_2s. not base.no_pres_stressed and ( base.stems.imp2s_override or vowel_alt.imp2s_override or nil) or nil base.this_stems = stems return end local function combine(slot, stem, ending) return combine_stem_ending(base, slot, base.prefix, stem, ending, "dont include prefix") end stems.pres_unstressed = base.stems.pres_unstressed or base.inf_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or base.stems.pres_stressed or vowel_alt.pres_stressed or base.inf_stem stems.pres1_and_sub = -- If no_pres_stressed given, the entire subjunctive is missing. base.no_pres_stressed and {} or -- If no_pres1_and_sub given, pres1 and entire subjunctive are missing. base.no_pres1_and_sub and {} or base.stems.pres1_and_sub or vowel_alt.pres1_and_sub or nil stems.pres1 = base.stems.pres1 or stems.pres1_and_sub or stems.pres_stressed stems.impf = base.stems.impf or base.inf_stem stems.full_impf = base.stems.full_impf stems.pret_base = base.stems.pret_base or base.inf_stem stems.pret_conj = base.stems.pret_conj or base.conj stems.pret = base.stems.pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret_base), -- use combine_stem_ending esp. so we get saíra etc. function(form) return combine("pret", form, base.conj_vowel) end) stems.short_pret = base.stems.gl_short_pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret), function(form) return rsub(form, com.V .. "$", "") end) stems.fut = base.stems.fut or base.inf_stem .. base.conj stems.cond = base.stems.cond or stems.fut stems.pres_sub_stressed = base.stems.pres_sub_stressed or stems.pres1 stems.pres_sub_unstressed = base.stems.pres_sub_unstressed or stems.pres1_and_sub or stems.pres_unstressed stems.sub_conj = base.stems.sub_conj or base.conj stems.plup = base.stems.plup or stems.pret -- Needed for plup_1p and plup_2p if there's an accent in the regular pluperfect stem (as for [[saír]]). stems.plup_unstressed = iut.map_forms(iut.convert_to_general_list_form(stems.plup), com.remove_final_accent) stems.impf_sub = base.stems.impf_sub or stems.pret -- Needed for impf_sub_1p and impf_sub_2p. We can't just add an acute accent because there may already be one -- (as for [[saír]]). stems.impf_sub_antepenult_stressed = iut.map_forms(iut.convert_to_general_list_form(stems.impf_sub), com.add_final_accent) stems.fut_sub = base.stems.fut_sub or stems.pret -- use combine_stem_ending esp. so we get saír, saírmos, etc. stems.pers_inf = base.stems.pers_inf or combine("pers_inf", base.inf_stem, base.conj_vowel) -- use combine_stem_ending esp. so we get roído, caído, etc. stems.pp = base.stems.pp or combine("pp_ms", base.inf_stem, base.conj == "ar" and "ado" or "ido") stems.pp_ms = stems.pp local function masc_to_fem(form) if rfind(form, "o$") then return rsub(form, "o$", "a") else return form end end stems.pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.pp_ms), masc_to_fem) if base.stems.short_pp then stems.short_pp_ms = base.stems.short_pp stems.short_pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.short_pp_ms), masc_to_fem) end base.this_stems = stems end local function add_present_indic(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end local s2, s3, p1, p2, p3 if base.conj == "ar" then s2, s3, p1, p2, p3 = "as", "a", "amos", "ades", "an" elseif base.conj == "er" or base.conj == "or" then -- verbs in -por have the present overridden s2, s3, p1, p2, p3 = "es", "e", "emos", "edes", "en" elseif base.conj == "ir" then s2, s3, p1, p2, p3 = "es", "e", "imos", "ides", "en" else error("Internal error: Unrecognized conjugation " .. base.conj) end addit("1s", stems.pres1, "o") addit("2s", stems.pres_stressed, s2) addit("3s", stems.pres_stressed, s3) addit("1p", stems.pres_unstressed, p1) addit("2p", stems.pres_unstressed, p2) addit("3p", stems.pres_stressed, p3) end local function add_present_subj(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end local s1, s2, s3, p1, p2, p3 if stems.sub_conj == "ar" then s1, s2, s3, p1, p2, p3 = "e", "es", "e", "emos", "edes", "en" else s1, s2, s3, p1, p2, p3 = "a", "as", "a", "amos", "ades", "an" end addit("1s", stems.pres_sub_stressed, s1) addit("2s", stems.pres_sub_stressed, s2) addit("3s", stems.pres_sub_stressed, s3) addit("1p", stems.pres_sub_unstressed, p1) addit("2p", stems.pres_sub_unstressed, p2) addit("3p", stems.pres_sub_stressed, p3) end local function add_finite_non_present(base) local stems = base.this_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end if stems.full_impf then add_tense("impf", stems.full_impf, "a", "as", "a", "amos", "ades", "an") elseif base.conj == "ar" then add_tense("impf", stems.impf, "aba", "abas", "aba", "abamos", "abades", "aban") else add_tense("impf", stems.impf, "ía", "ías", "ía", "iamos", "iades", "ían") end if stems.pret_conj == "irreg" then add_tense("pret", stems.short_pret, "en", nil, "o") add_tense("pret", stems.pret, nil, "ches", nil, "mos", "stes", "ron") elseif stems.pret_conj == "ar" then add_tense("pret", stems.pret_base, "ei", "aches", "ou", "amos", "astes", "aron") elseif stems.pret_conj == "er" then add_tense("pret", stems.pret_base, "ín", "iches", "eu", "emos", "estes", "eron") else add_tense("pret", stems.pret_base, "ín", "iches", "iu", "imos", "istes", "iron") end add_tense("plup", stems.plup, "ra", "ras", "ra", nil, nil, "ran") add_tense("plup", stems.plup_unstressed, nil, nil, nil, "ramos", "rades", nil) add_tense("impf_sub", stems.impf_sub, "se", "ses", "se", nil, nil, "sen") add_tense("impf_sub", stems.impf_sub_antepenult_stressed, nil, nil, nil, "semos", "sedes", nil) add_tense("fut_sub", stems.fut_sub, "r", "res", "r", "rmos", "rdes", "ren") add_tense("fut", stems.fut, "ei", "ás", "á", "emos", "edes", "án") add_tense("cond", stems.cond, "ía", "ías", "ía", "iamos", "iades", "ían") -- [[pór]] needs overrides of the pers_inf_1s and pers_inf_3s. add_tense("pers_inf", stems.pers_inf, "r", "res", "r", "rmos", "rdes", "ren") end local function add_non_finite_forms(base) local stems = base.this_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.verb}) end end -- verbs in -por have the gerund overridden local ger_ending = base.conj == "ar" and "ando" or base.conj == "er" and "endo" or "indo" addit("gerund", stems.pres_unstressed, ger_ending) -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{gl-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, stems.pres_unstressed, ger_ending) end end -- Skip the long/short past participle footnotes if called from {{gl-verb}} so they don't show in the headword. local long_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-verb" and {long_pp_footnote} or nil addit("pp_ms", stems.pp_ms, "", long_pp_footnotes) if not base.pp_inv then addit("pp_fs", stems.pp_fs, "", long_pp_footnotes) addit("pp_mp", stems.pp_ms, "s", long_pp_footnotes) addit("pp_fp", stems.pp_fs, "s", long_pp_footnotes) end if stems.short_pp_ms then local short_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-verb" and {short_pp_footnote} or nil addit("short_pp_ms", stems.short_pp_ms, "", short_pp_footnotes) if not base.pp_inv then addit("short_pp_fs", stems.short_pp_fs, "", short_pp_footnotes) addit("short_pp_mp", stems.short_pp_ms, "s", short_pp_footnotes) addit("short_pp_fp", stems.short_pp_fs, "s", short_pp_footnotes) end end end local function add_imperatives(base) for _, vowel_alt in ipairs(base.vowel_alt_stems) do construct_stems(base, vowel_alt, "imp only") local stems = base.this_stems if stems.imp2s_override then add3(base, "imp_2s", stems.imp2s_override, base.conj == "ar" and "a" or "e") else -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) end end if not skip_slot(base, "imp_2p") then -- Copy pres2p to imperative 2p minus -s since they are almost always the same. -- But not if there's an override, to avoid possibly throwing an error. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) local form_no_s = rmatch(form, "^(.*)s$") if not form_no_s then error("Can't derive second-person plural imperative from second-person plural present indicative " .. "because form '" .. form .. "' doesn't end in -s") end return form_no_s end)) end -- Copy subjunctives to imperatives, unless there's an override for the given slot (as with the imp_1p of [[ir]]). for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = "[[" .. clitic .. "]]" .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Add the appropriate clitic pronouns in `clitics` to the forms in `base_slot`. `store_cliticized_form` is a function -- of three arguments (clitic, formobj, cliticized_form) and should store the cliticized form for the specified clitic -- and form object. local function suffix_clitic_to_forms(base, base_slot, clitics, store_cliticized_form) if not base.forms[base_slot] then -- This can happen, e.g. in only3s/only3sp/only3p verbs. return end for _, formobj in ipairs(base.forms[base_slot]) do -- Figure out the correct accenting of the verb when a clitic pronoun is attached to it. We may need to -- add or remove an accent mark: -- (1) No accent mark currently, none needed: infinitive sentar -> sentarse; imperative singular ten -> tente; -- (2) Accent mark currently, still needed: infinitive concluír -> concluírse; -- (3) No accent mark currently, accent needed: imperative singular sinte -> síntete; -- (4) Accent mark currently, not needed: third singular sentirá -> sentirase, imperative singular dá -> date. local syllables = com.syllabify(formobj.form) local sylno = com.stressed_syllable(syllables) table.insert(syllables, "lo") -- arbitrary stand-in local needs_accent = com.accent_needed(syllables, sylno) if needs_accent then syllables[sylno] = com.add_accent_to_syllable(syllables[sylno]) else syllables[sylno] = com.remove_accent_from_syllable(syllables[sylno]) end table.remove(syllables) -- remove added clitic pronoun local reaccented_form = table.concat(syllables) for _, clitic in ipairs(clitics) do local cliticized_form -- Some further special cases. if base_slot:find("_1p$") and clitic == "nos" then -- Final -s disappears: sintamos + nos -> sintámonos cliticized_form = reaccented_form:gsub("s$", "") .. clitic elseif clitic:find("^[oa]s?$") then if reaccented_form:find("[rs]$") then cliticized_form = reaccented_form:gsub("[rs]$", "l") .. clitic elseif reaccented_form:find(V .. "[iu]$") then cliticized_form = reaccented_form .. "n" .. clitic else cliticized_form = reaccented_form .. clitic end else cliticized_form = reaccented_form .. clitic end store_cliticized_form(clitic, formobj, cliticized_form) end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local clitic if not do_reflexive then clitic = base.clitic elseif slot:find("[123]") then local persnum = slot:match("^.*_(.-)$") clitic = person_number_to_reflexive_pronoun[persnum] else clitic = "se" end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = not slot:find("_sub") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{gl-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "gl-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, clitic, " ... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then suffix_clitic_to_forms(base, slot, {clitic}, function(clitic, formobj, cliticized_form) formobj.form = cliticized_form end ) end elseif not do_joined then -- Add clitic as separate word before all other forms. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, clitic, " ", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{gl-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) -- Copy subjunctives to negative imperatives, preceded by "non". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "non " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[non]] " .. form else return "[[non]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) for _, vowel_alt in ipairs(base.vowel_alt_stems) do construct_stems(base, vowel_alt) add_present_indic(base) add_present_subj(base) end add_finite_non_present(base) add_non_finite_forms(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[non]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif rfind(first_element, ":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) end else local comma_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*,%s*") for j = 1, #comma_separated_groups do local alt = comma_separated_groups[j][1] if not vowel_alternants[alt] then if #comma_separated_groups == 1 then parse_err("Unrecognized spec or vowel alternant '" .. alt .. "'") else parse_err("Unrecognized vowel alternant '" .. alt .. "'") end end if base.vowel_alt then for _, existing_alt in ipairs(base.vowel_alt) do if existing_alt.form == alt then parse_err("Vowel alternant '" .. alt .. "' specified twice") end end else base.vowel_alt = {} end table.insert(base.vowel_alt, {form = alt, footnotes = fetch_footnotes(comma_separated_groups[j])}) end end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form -- so we can use it below in the 'lemma_linked' form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)(se)$") if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve -- links in multiword lemmas and include links in non-lemma forms rather than allowing -- the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} if not base.no_built_in then for _, built_in_conj in ipairs(built_in_conjugations) do if type(built_in_conj.match) == "function" then base.prefix, base.non_prefixed_verb = built_in_conj.match(base.verb) elseif built_in_conj.match:find("^%^") and rsub(built_in_conj.match, "^%^", "") == base.verb then -- begins with ^, for exact match, and matches base.prefix, base.non_prefixed_verb = "", base.verb else base.prefix, base.non_prefixed_verb = rmatch(base.verb, "^(.*)(" .. built_in_conj.match .. ")$") end if base.prefix then -- we found a built-in verb for stem, forms in pairs(built_in_conj.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.stems[stem] = forms end end break end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiíoó]r)$") if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end base.inf_stem = inf_stem suffix = suffix == "ór" and "or" or suffix == "ír" and "ir" or suffix base.conj = suffix base.conj_vowel = suffix == "ar" and "a" or suffix == "ir" and "i" or "e" base.frontback = suffix == "ar" and "back" or "front" if base.stems.vowel_alt then -- built-in verb with specified vowel alternation if base.vowel_alt then error(base.verb .. " is a recognized built-in verb, and should not have vowel alternations specified with it") end base.vowel_alt = iut.convert_to_general_list_form(base.stems.vowel_alt) end -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.stems[indicator_flag] end -- Convert vowel alternation indicators into stems. local vowel_alt = base.vowel_alt or {{form = "+"}} base.vowel_alt_stems = apply_vowel_alternations(base.inf_stem, vowel_alt) for _, vowel_alt_stems in ipairs(base.vowel_alt_stems) do if vowel_alt_stems.err then error("To use '" .. vowel_alt_stems.altobj.form .. "', present stem '" .. base.prefix .. base.inf_stem .. "' " .. vowel_alt_stems.err) end end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:gl-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) alternant_multiword_spec.vowel_alt = {} iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end -- Vowel alternants. Do these after calling detect_indicator_spec() because the latter sets base.vowel_alt for -- built-in verbs. if base.vowel_alt then for _, altobj in ipairs(base.vowel_alt) do m_table.insertIfNot(alternant_multiword_spec.vowel_alt, altobj.form) end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Galician verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "Galician " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "gl-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("verbs with red links in their inflection tables") must_break = true break end end end end if must_break then break end end end if(base.conj == "or") then insert_cat("verbs ending in -er") else insert_cat("verbs ending in -" .. base.conj) end if base.irreg then insert_ann("irreg", "irregular") insert_cat("irregular verbs") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "impersonal") insert_cat("impersonal verbs") elseif base.only3sp then insert_ann("defective", "third-person only") insert_cat("third-person-only verbs") elseif base.only3p then insert_ann("defective", "third-person plural only") insert_cat("third-person-plural-only verbs") elseif base.no_pres_stressed or base.no_pres1_and_sub then insert_ann("defective", "defective") insert_cat("defective verbs") else insert_ann("defective", "regular") end if base.stems.short_pp then insert_ann("short_pp", "irregular short past participle") insert_cat("verbs with irregular short past participle") else insert_ann("short_pp", "regular") end if base.clitic then insert_cat("verbs with lexical clitics") end if base.refl then insert_cat("reflexive verbs") end if not base.vowel_alt then insert_ann("vowel_alt", "non-alternating") else for _, alt in ipairs(base.vowel_alt) do if alt.form == "+" then insert_ann("vowel_alt", "non-alternating") else insert_ann("vowel_alt", vowel_alternant_to_desc[alt.form]) insert_cat("verbs with " .. vowel_alternant_to_cat[alt.form]) end end end local cons_alt = base.stems.cons_alt if cons_alt == nil then if base.conj == "ar" then if base.inf_stem:find("z$") then cons_alt = "c-z" elseif base.inf_stem:find("c$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-gu" elseif base.inf_stem:find("gu$") then cons_alt = "gu-gü" end else if base.no_pres_stressed or base.no_pres1_and_sub then cons_alt = nil -- no e.g. c-z alternation in this case elseif base.inf_stem:find("c$") then cons_alt = "c-z" elseif base.inf_stem:find("qu$") then cons_alt = "c-qu" elseif base.inf_stem:find("gu$") then cons_alt = "g-gu" elseif base.inf_stem:find("gü$") then cons_alt = "gu-gü" end end end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat("verbs with " .. desc) else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.irreg = {} ann.short_pp = {} ann.defective = {} ann.vowel_alt = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local short_pp = table.concat(ann.short_pp, " or ") if short_pp ~= "" and short_pp ~= "regular" then table.insert(ann_parts, short_pp) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local vowel_alt = table.concat(ann.vowel_alt, " or ") if vowel_alt ~= "" and vowel_alt ~= "non-alternating" then table.insert(ann_parts, vowel_alt) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, "; ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() if alternant_multiword_spec.forms.short_pp_ms then alternant_multiword_spec.has_short_pp = true end local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then if slot:find("^pp_") then accel_obj.form = slot elseif slot == "gerund" then accel_obj.form = "gerund-" .. reconstructed_verb_spec else accel_obj.form = "verb-form-" .. reconstructed_verb_spec end end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead" align=center>&nbsp; &nbsp; การผันรูปของ {title}</div> <div class="NavContent" align="left"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! class="roa-person-number-header" rowspan="2" | ! class="roa-person-number-header" colspan="3" | เอกพจน์ ! class="roa-person-number-header" colspan="3" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<eu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<ti>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<el>> / <<ela>> / <<vostede|Vde.>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<nós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<vós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<eles>> / <<elas>> / <<vostedes|Vdes.>>) |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="infinitivo">รูปกริยากลาง</span>'' |- | class="roa-nonfinite-header" | '''<span title="infinitivo impersoal">คำอบุรุษกริยา</span>''' | colspan="6" | {infinitive} |- | class="roa-nonfinite-header" | '''<span title="infinitivo conxugado">คำบุรุษกริยา</span>''' | {pers_inf_1s} | {pers_inf_2s} | {pers_inf_3s} | {pers_inf_1p} | {pers_inf_2p} | {pers_inf_3p} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="xerundio">รูปกริยาเป็นนาม</span>'' |- | class="roa-nonfinite-header" | | colspan="6" | {gerund} |-{pp_clause} ! class="roa-indicative-left-rail" colspan="7" | ''<span title="indicativo">มาลาบอกเล่า</span>'' |- ! class="roa-indicative-left-rail" | <span title="presente">ปัจจุบันกาล</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito imperfecto">ไม่สมบูรณ์</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito perfecto">อดีตกาลสิ้นสุด (สมบูรณ์)</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito pluscuamperfecto">อภิสมบูรณ์</span> | {plup_1s} | {plup_2s} | {plup_3s} | {plup_1p} | {plup_2p} | {plup_3p} |- ! class="roa-indicative-left-rail" | <span title="futuro do presente">อนาคตกาล</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" | <span title="condicional">มาลาเงื่อนไข</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" colspan="7" | ''<span title="subxuntivo">มาลาสมมุติ</span>'' |- ! class="roa-subjunctive-left-rail" | <span title=" presente do subxuntivo">ปัจจุบันกาล</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="pretérito imperfecto do subxuntivo">ไม่สมบูรณ์</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="futuro do subxuntivo">อนาคตกาล</span> | {fut_sub_1s} | {fut_sub_2s} | {fut_sub_3s} | {fut_sub_1p} | {fut_sub_2p} | {fut_sub_3p} |- ! class="roa-imperative-left-rail" colspan="7" | ''<span title="imperativo">มาลาสั่ง</span>'' |- ! class="roa-imperative-left-rail" | <span title="imperativo afirmativo">เชิงยืนยัน</span> | rowspan="2" | | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" | <span title="imperativo negativo">เชิงปฏิเสธ</span> (<<non>>) | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div> ]=] local double_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="participio irregular">รูปกริยาขยายอดีตกาลสั้น</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {short_pp_ms} | colspan="3" | {short_pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {short_pp_fs} | colspan="3" | {short_pp_fp} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="participio regular">รูปกริยาขยายอดีตกาลยาว</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local single_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="participio pasado">รูปกริยาขยายอดีตกาล</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form) if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" -- has_short_pp is computed in show_forms(). local pp_template = alternant_multiword_spec.has_short_pp and double_pp_template or single_pp_template forms.pp_clause = m_string_utilities.format(pp_template, forms) local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "แม่แบบ" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{gl-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "gl-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "gl-conj" or pagename == "gl-verb") and in_template_space() then arg1 = "paliar<í,+>" elseif pagename == "gl-verb form of" and in_template_space() then arg1 = "amar" else arg1 = "<>" end end -- When called from {{gl-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "gl-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "gl-verb form of" and in_template_space() then verb_form_of_form = "ame" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "gl-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{gl-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "gl-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export 9g68txkljp9j9kpfxwp1vuhsqv7mhvb แม่แบบ:ast-verb-ar 10 336641 5729256 1902742 2026-07-20T04:16:45Z Octahedron80 267 5729256 wikitext text/x-wiki {{head|ast|คำกริยา|head={{{head|}}}<!-- -->|บุรุษที่หนึ่งเอกพจน์ปัจจุบันกาลมาลาบอกเล่า<!-- -->|{{{first singular|{{{stem|{{{2|{{{1|}}}}}}}}}o}}}<!-- -->|รูปกริยาขยายอดีตกาล<!-- -->|{{{participle|{{{stem|{{{1|}}}}}}áu}}}<!-- -->}}<noinclude>{{documentation}}</noinclude> 5uafqdewqduikjql0qs4d3lsg96yckx มอดูล:ast-conj/data 828 336642 5729216 1902744 2026-07-20T03:54:08Z Octahedron80 267 5729216 Scribunto text/plain local inflections = {} inflections["ar"] = function(args, data) args[4] = args[4] or args[3] or args[2] or args[1] args[3] = args[3] or args[1] args[2] = args[2] or args[1] data.forms.infinitive = {args[1] .. "ar"} data.forms.gerund = {args[1] .. "ando"} data.forms.part_m = {args[1] .. "áu"} data.forms.part_f = {args[1] .. "ada"} data.forms.part_n = {args[1] .. "ao"} data.forms["part_m-p"] = {args[1] .. "aos"} data.forms["part_f-p"] = {args[1] .. "aes"} data.forms.pres_ind_1sg = {args[2] .. "o"} data.forms.pres_ind_2sg = {args[4] .. "es"} data.forms.pres_ind_3sg = {args[2] .. "a"} data.forms.pres_ind_1pl = {args[1] .. "amos"} data.forms.pres_ind_2pl = {args[1] .. "áis"} data.forms.pres_ind_3pl = {args[4] .. "en"} data.forms.impf_ind_1sg = {args[1] .. "aba"} data.forms.impf_ind_2sg = {args[1] .. "abes"} data.forms.impf_ind_3sg = {args[1] .. "aba"} data.forms.impf_ind_1pl = {args[1] .. "ábemos", args[1] .. "ábamos"} data.forms.impf_ind_2pl = {args[1] .. "abeis", args[1] .. "abais"} data.forms.impf_ind_3pl = {args[1] .. "aben"} data.forms.pret_ind_1sg = {args[3] .. "é"} data.forms.pret_ind_2sg = {args[1] .. "asti", args[3] .. "esti"} data.forms.pret_ind_3sg = {args[1] .. "ó"} data.forms.pret_ind_1pl = {args[3] .. "emos"} data.forms.pret_ind_2pl = {args[1] .. "astis", args[3] .. "estis"} data.forms.pret_ind_3pl = {args[1] .. "aron"} data.forms.plup_ind_1sg = {args[1] .. "are", args[1] .. "ara"} data.forms.plup_ind_2sg = {args[1] .. "ares", args[1] .. "aras"} data.forms.plup_ind_3sg = {args[1] .. "are", args[1] .. "ara"} data.forms.plup_ind_1pl = {args[1] .. "áremos", args[1] .. "áramos"} data.forms.plup_ind_2pl = {args[1] .. "areis", args[1] .. "arais"} data.forms.plup_ind_3pl = {args[1] .. "aren", args[1] .. "aran"} data.forms.futr_ind_1sg = {args[1] .. "aré"} data.forms.futr_ind_2sg = {args[1] .. "arás"} data.forms.futr_ind_3sg = {args[1] .. "ará"} data.forms.futr_ind_1pl = {args[1] .. "aremos"} data.forms.futr_ind_2pl = {args[1] .. "aréis"} data.forms.futr_ind_3pl = {args[1] .. "arán"} data.forms.cond_ind_1sg = {args[1] .. "aría"} data.forms.cond_ind_2sg = {args[1] .. "aríes"} data.forms.cond_ind_3sg = {args[1] .. "aría"} data.forms.cond_ind_1pl = {args[1] .. "aríemos", args[1] .. "aríamos"} data.forms.cond_ind_2pl = {args[1] .. "aríeis", args[1] .. "aríais"} data.forms.cond_ind_3pl = {args[1] .. "aríen"} data.forms.pres_sub_1sg = {args[4] .. "e"} data.forms.pres_sub_2sg = {args[4] .. "es", args[2] .. "as"} data.forms.pres_sub_3sg = {args[4] .. "e"} data.forms.pres_sub_1pl = {args[3] .. "emos"} data.forms.pres_sub_2pl = {args[3] .. "éis"} data.forms.pres_sub_3pl = {args[4] .. "en", args[2] .. "an"} data.forms.impf_sub_1sg = {args[1] .. "are", args[1] .. "ara"} data.forms.impf_sub_2sg = {args[1] .. "ares", args[1] .. "aras"} data.forms.impf_sub_3sg = {args[1] .. "are", args[1] .. "ara"} data.forms.impf_sub_1pl = {args[1] .. "áremos", args[1] .. "áramos"} data.forms.impf_sub_2pl = {args[1] .. "areis", args[1] .. "arais"} data.forms.impf_sub_3pl = {args[1] .. "aren", args[1] .. "aran"} data.forms.impr_2sg = {args[2] .. "a"} data.forms.impr_2pl = {args[1] .. "ái"} end inflections["er"] = function(args, data) data.forms.infinitive = {args[1] .. "er"} data.forms.gerund = {args[1] .. "iendo"} data.forms.part_m = {args[1] .. "íu"} data.forms.part_f = {args[1] .. "ida"} data.forms.part_n = {args[1] .. "ío"} data.forms["part_m-p"] = {args[1] .. "íos"} data.forms["part_f-p"] = {args[1] .. "íes"} data.forms.pres_ind_1sg = {args[1] .. "o"} data.forms.pres_ind_2sg = {args[1] .. "es"} data.forms.pres_ind_3sg = {args[1] .. "e"} data.forms.pres_ind_1pl = {args[1] .. "emos"} data.forms.pres_ind_2pl = {args[1] .. "éis"} data.forms.pres_ind_3pl = {args[1] .. "en"} data.forms.impf_ind_1sg = {args[1] .. "ía"} data.forms.impf_ind_2sg = {args[1] .. "íes"} data.forms.impf_ind_3sg = {args[1] .. "ía"} data.forms.impf_ind_1pl = {args[1] .. "íemos"} data.forms.impf_ind_2pl = {args[1] .. "íeis"} data.forms.impf_ind_3pl = {args[1] .. "íen"} data.forms.pret_ind_1sg = {args[1] .. "í"} data.forms.pret_ind_2sg = {args[1] .. "iesti"} data.forms.pret_ind_3sg = {args[1] .. "ió"} data.forms.pret_ind_1pl = {args[1] .. "iemos"} data.forms.pret_ind_2pl = {args[1] .. "iestis"} data.forms.pret_ind_3pl = {args[1] .. "ieron"} data.forms.plup_ind_1sg = {args[1] .. "iere"} data.forms.plup_ind_2sg = {args[1] .. "ieras"} data.forms.plup_ind_3sg = {args[1] .. "iere"} data.forms.plup_ind_1pl = {args[1] .. "iéremos"} data.forms.plup_ind_2pl = {args[1] .. "iereis"} data.forms.plup_ind_3pl = {args[1] .. "ieran"} data.forms.futr_ind_1sg = {args[1] .. "eré"} data.forms.futr_ind_2sg = {args[1] .. "erás"} data.forms.futr_ind_3sg = {args[1] .. "erá"} data.forms.futr_ind_1pl = {args[1] .. "eremos"} data.forms.futr_ind_2pl = {args[1] .. "eréis"} data.forms.futr_ind_3pl = {args[1] .. "erán"} data.forms.cond_ind_1sg = {args[1] .. "ería"} data.forms.cond_ind_2sg = {args[1] .. "eríes"} data.forms.cond_ind_3sg = {args[1] .. "ería"} data.forms.cond_ind_1pl = {args[1] .. "eríemos", args[1] .. "eríamos"} data.forms.cond_ind_2pl = {args[1] .. "eríeis", args[1] .. "eríais"} data.forms.cond_ind_3pl = {args[1] .. "eríen"} data.forms.pres_sub_1sg = {args[1] .. "a"} data.forms.pres_sub_2sg = {args[1] .. "as"} data.forms.pres_sub_3sg = {args[1] .. "a"} data.forms.pres_sub_1pl = {args[1] .. "amos"} data.forms.pres_sub_2pl = {args[1] .. "áis"} data.forms.pres_sub_3pl = {args[1] .. "an"} data.forms.impf_sub_1sg = {args[1] .. "iere"} data.forms.impf_sub_2sg = {args[1] .. "ieras"} data.forms.impf_sub_3sg = {args[1] .. "iere"} data.forms.impf_sub_1pl = {args[1] .. "iéremos"} data.forms.impf_sub_2pl = {args[1] .. "iereis"} data.forms.impf_sub_3pl = {args[1] .. "ieran"} data.forms.impr_2sg = {args[1] .. "i"} data.forms.impr_2pl = {args[1] .. "éi"} end inflections["ir"] = function(args, data) data.forms.infinitive = {args[1] .. "ir"} data.forms.gerund = {args[1] .. "iendo"} data.forms.part_m = {args[1] .. "íu"} data.forms.part_f = {args[1] .. "ida"} data.forms.part_n = {args[1] .. "ío"} data.forms["part_m-p"] = {args[1] .. "íos"} data.forms["part_f-p"] = {args[1] .. "íes"} data.forms.pres_ind_1sg = {args[1] .. "o"} data.forms.pres_ind_2sg = {args[1] .. "es"} data.forms.pres_ind_3sg = {args[1] .. "e"} data.forms.pres_ind_1pl = {args[1] .. "imos"} data.forms.pres_ind_2pl = {args[1] .. "ís"} data.forms.pres_ind_3pl = {args[1] .. "en"} data.forms.impf_ind_1sg = {args[1] .. "ía"} data.forms.impf_ind_2sg = {args[1] .. "íes"} data.forms.impf_ind_3sg = {args[1] .. "ía"} data.forms.impf_ind_1pl = {args[1] .. "íemos", args[1] .. "íamos"} data.forms.impf_ind_2pl = {args[1] .. "íeis", args[1] .. "íais"} data.forms.impf_ind_3pl = {args[1] .. "íen"} data.forms.pret_ind_1sg = {args[1] .. "í"} data.forms.pret_ind_2sg = {args[1] .. "iesti", args[1] .. "isti"} data.forms.pret_ind_3sg = {args[1] .. "ió"} data.forms.pret_ind_1pl = {args[1] .. "iemos", args[1] .. "imos"} data.forms.pret_ind_2pl = {args[1] .. "iestis", args[1] .. "istis"} data.forms.pret_ind_3pl = {args[1] .. "ieron"} data.forms.plup_ind_1sg = {args[1] .. "iere", args[1] .. "iera"} data.forms.plup_ind_2sg = {args[1] .. "ieres", args[1] .. "ieras"} data.forms.plup_ind_3sg = {args[1] .. "iere", args[1] .. "iera"} data.forms.plup_ind_1pl = {args[1] .. "iéremos", args[1] .. "iéramos"} data.forms.plup_ind_2pl = {args[1] .. "iereis", args[1] .. "ierais"} data.forms.plup_ind_3pl = {args[1] .. "ieren", args[1] .. "ieran"} data.forms.futr_ind_1sg = {args[1] .. "iré"} data.forms.futr_ind_2sg = {args[1] .. "irás"} data.forms.futr_ind_3sg = {args[1] .. "irá"} data.forms.futr_ind_1pl = {args[1] .. "iremos"} data.forms.futr_ind_2pl = {args[1] .. "iréis"} data.forms.futr_ind_3pl = {args[1] .. "irán"} data.forms.cond_ind_1sg = {args[1] .. "iría"} data.forms.cond_ind_2sg = {args[1] .. "iríes"} data.forms.cond_ind_3sg = {args[1] .. "iría"} data.forms.cond_ind_1pl = {args[1] .. "iríemos", args[1] .. "iríamos"} data.forms.cond_ind_2pl = {args[1] .. "iríeis", args[1] .. "iríais"} data.forms.cond_ind_3pl = {args[1] .. "iríen"} data.forms.pres_sub_1sg = {args[1] .. "a"} data.forms.pres_sub_2sg = {args[1] .. "as"} data.forms.pres_sub_3sg = {args[1] .. "a"} data.forms.pres_sub_1pl = {args[1] .. "amos"} data.forms.pres_sub_2pl = {args[1] .. "áis"} data.forms.pres_sub_3pl = {args[1] .. "an"} data.forms.impf_sub_1sg = {args[1] .. "iere", args[1] .. "iera"} data.forms.impf_sub_2sg = {args[1] .. "ieres", args[1] .. "ieras"} data.forms.impf_sub_3sg = {args[1] .. "iere", args[1] .. "iera"} data.forms.impf_sub_1pl = {args[1] .. "iéremos", args[1] .. "iéramos"} data.forms.impf_sub_2pl = {args[1] .. "iereis", args[1] .. "ierais"} data.forms.impf_sub_3pl = {args[1] .. "ieren", args[1] .. "ieran"} data.forms.impr_2sg = {args[1] .. "i"} data.forms.impr_2pl = {args[1] .. "íi"} end inflections["cir"] = function(args, data) data.forms.infinitive = {args[1] .. "cir"} data.forms.gerund = {args[1] .. "ciendo"} data.forms.part_m = {args[1] .. "cíu"} data.forms.part_f = {args[1] .. "cida"} data.forms.part_n = {args[1] .. "cío"} data.forms["part_m-p"] = {args[1] .. "cíos"} data.forms["part_f-p"] = {args[1] .. "cíes"} data.forms.pres_ind_1sg = {args[1] .. "zo"} data.forms.pres_ind_2sg = {args[1] .. "ces"} data.forms.pres_ind_3sg = {args[1] .. "z"} data.forms.pres_ind_1pl = {args[1] .. "cimos"} data.forms.pres_ind_2pl = {args[1] .. "cís"} data.forms.pres_ind_3pl = {args[1] .. "cen"} data.forms.impf_ind_1sg = {args[1] .. "cía"} data.forms.impf_ind_2sg = {args[1] .. "cíes"} data.forms.impf_ind_3sg = {args[1] .. "cía"} data.forms.impf_ind_1pl = {args[1] .. "cíemos"} data.forms.impf_ind_2pl = {args[1] .. "cíeis"} data.forms.impf_ind_3pl = {args[1] .. "cíen"} data.forms.pret_ind_1sg = {args[1] .. "cí"} data.forms.pret_ind_2sg = {args[1] .. "ciesti"} data.forms.pret_ind_3sg = {args[1] .. "ció"} data.forms.pret_ind_1pl = {args[1] .. "ciemos"} data.forms.pret_ind_2pl = {args[1] .. "ciestis"} data.forms.pret_ind_3pl = {args[1] .. "cieron"} data.forms.plup_ind_1sg = {args[1] .. "ciere"} data.forms.plup_ind_2sg = {args[1] .. "cieres"} data.forms.plup_ind_3sg = {args[1] .. "ciere"} data.forms.plup_ind_1pl = {args[1] .. "ciéremos"} data.forms.plup_ind_2pl = {args[1] .. "ciereis"} data.forms.plup_ind_3pl = {args[1] .. "cieren"} data.forms.futr_ind_1sg = {args[1] .. "ciré"} data.forms.futr_ind_2sg = {args[1] .. "cirás"} data.forms.futr_ind_3sg = {args[1] .. "cirá"} data.forms.futr_ind_1pl = {args[1] .. "ciremos"} data.forms.futr_ind_2pl = {args[1] .. "ciréis"} data.forms.futr_ind_3pl = {args[1] .. "cirán"} data.forms.cond_ind_1sg = {args[1] .. "ciría"} data.forms.cond_ind_2sg = {args[1] .. "ciríes"} data.forms.cond_ind_3sg = {args[1] .. "ciría"} data.forms.cond_ind_1pl = {args[1] .. "ciríemos", args[1] .. "ciríamos"} data.forms.cond_ind_2pl = {args[1] .. "ciríeis", args[1] .. "ciríais"} data.forms.cond_ind_3pl = {args[1] .. "ciríen"} data.forms.pres_sub_1sg = {args[1] .. "za"} data.forms.pres_sub_2sg = {args[1] .. "zas"} data.forms.pres_sub_3sg = {args[1] .. "za"} data.forms.pres_sub_1pl = {args[1] .. "zamos"} data.forms.pres_sub_2pl = {args[1] .. "záis"} data.forms.pres_sub_3pl = {args[1] .. "zan"} data.forms.impf_sub_1sg = {args[1] .. "ciere"} data.forms.impf_sub_2sg = {args[1] .. "cieres"} data.forms.impf_sub_3sg = {args[1] .. "ciere"} data.forms.impf_sub_1pl = {args[1] .. "ciéremos"} data.forms.impf_sub_2pl = {args[1] .. "ciereis"} data.forms.impf_sub_3pl = {args[1] .. "cieren"} data.forms.impr_2sg = {args[1] .. "z"} data.forms.impr_2pl = {args[1] .. "cíi"} end inflections["ensugar"] = function(args, data) inflections["ar"]({"ensug"}, data) table.insert(data.forms.part_m, "ensuchu") table.insert(data.forms.part_f, "ensucha") table.insert(data.forms.part_n, "ensucho") table.insert(data.forms["part_m-p"], "ensuchos") table.insert(data.forms["part_f-p"], "ensuchas") data.forms.pres_ind_2sg = {"ensugues"} data.forms.pres_ind_3pl = {"ensuguen"} data.forms.pres_sub_1sg = {"ensugue"} data.forms.pres_sub_2sg = {"ensugues", "ensugas"} data.forms.pres_sub_3sg = {"ensugue"} data.forms.pres_sub_1pl = {"ensuguemos"} data.forms.pres_sub_2pl = {"ensuguéis"} data.forms.pres_sub_3pl = {"ensuguen", "ensugan"} table.insert(data.categories, "คำกริยาไม่ปรกติภาษาอัสตูเรียส") end inflections["coyer"] = function(args, data) inflections["ar"]({"coy"}, data) data.forms.pres_ind_1sg = {"cueyo"} data.forms.pres_ind_2sg = {"cueyes"} data.forms.pres_ind_3sg = {"cueye"} data.forms.pres_ind_3pl = {"cueyen"} data.forms.pres_sub_1sg = {"cueya"} data.forms.pres_sub_2sg = {"cueyas"} data.forms.pres_sub_3sg = {"cueya"} data.forms.pres_sub_3pl = {"cueyan"} table.insert(data.forms.impr_2sg, "cueyi") table.insert(data.categories, "คำกริยาไม่ปรกติภาษาอัสตูเรียส") end inflections["facer"] = function(args, data) data.forms.infinitive = {"facer", "faer"} data.forms.gerund = {"faciendo", "fayendo"} data.forms.part_m = {"fechu"} data.forms.part_f = {"fecha"} data.forms.part_n = {"fecho"} data.forms["part_m-p"] = {"fechos"} data.forms["part_f-p"] = {"feches"} data.forms.pres_ind_1sg = {"fago", "faigo"} data.forms.pres_ind_2sg = {"faes"} data.forms.pres_ind_3sg = {"fai"} data.forms.pres_ind_1pl = {"facemos", "faemos"} data.forms.pres_ind_2pl = {"facéis", "faéis"} data.forms.pres_ind_3pl = {"faen"} data.forms.impf_ind_1sg = {"facía", "faía"} data.forms.impf_ind_2sg = {"facíes", "faíes"} data.forms.impf_ind_3sg = {"facía", "faía"} data.forms.impf_ind_1pl = {"facíemos", "facíamos", "faíemos", "faíamos"} data.forms.impf_ind_2pl = {"facíeis", "facíais", "faíeis", "faíais"} data.forms.impf_ind_3pl = {"facíen", "faíen"} data.forms.pret_ind_1sg = {"fici", "fixi"} data.forms.pret_ind_2sg = {"ficisti", "ficesti", "fixisti", "fixesti"} data.forms.pret_ind_3sg = {"fizo", "fixo"} data.forms.pret_ind_1pl = {"ficimos", "ficemos", "fiximos", "fixemos"} data.forms.pret_ind_2pl = {"ficistis", "ficestis", "fixistis", "fixestis"} data.forms.pret_ind_3pl = {"ficieron", "fixieron"} data.forms.plup_ind_1sg = {"ficiere", "ficiera", "fixiere", "fixiera"} data.forms.plup_ind_2sg = {"ficieres", "ficieras", "fixiere", "fixiera"} data.forms.plup_ind_3sg = {"ficiere", "ficiera", "fixiere", "fixiera"} data.forms.plup_ind_1pl = {"ficiéremos", "fixiéramos", "fixiéremos", "fixiéramos"} data.forms.plup_ind_2pl = {"ficiereis", "ficierais", "fixiereis", "fixierais"} data.forms.plup_ind_3pl = {"ficieren", "ficieran", "fixieren", "fixieran"} data.forms.futr_ind_1sg = {"fadré", "fairé"} data.forms.futr_ind_2sg = {"fadrás", "fairás"} data.forms.futr_ind_3sg = {"fadrá", "fairá"} data.forms.futr_ind_1pl = {"fadremos", "fairemos"} data.forms.futr_ind_2pl = {"fadréis", "fairéis"} data.forms.futr_ind_3pl = {"fadrán", "fairán"} data.forms.cond_ind_1sg = {"fadría", "fairía"} data.forms.cond_ind_2sg = {"fadríes", "fairíes"} data.forms.cond_ind_3sg = {"fadría", "fairía"} data.forms.cond_ind_1pl = {"fadríemos", "fadríamos", "fairíemos", "fairíamos"} data.forms.cond_ind_2pl = {"fadríeis", "fadríais", "fairíeis", "fairíais"} data.forms.cond_ind_3pl = {"fadríen", "fairíen"} data.forms.pres_sub_1sg = {"faga", "faiga"} data.forms.pres_sub_2sg = {"fagas", "faigas"} data.forms.pres_sub_3sg = {"faga", "faiga"} data.forms.pres_sub_1pl = {"fagamos", "faigamos"} data.forms.pres_sub_2pl = {"fagáis", "faigáis"} data.forms.pres_sub_3pl = {"fagan", "faigan"} data.forms.impf_sub_1sg = {"ficiere", "ficiera", "fixiere", "fixiera"} data.forms.impf_sub_2sg = {"ficieres", "ficieras", "fixiere", "fixiera"} data.forms.impf_sub_3sg = {"ficiere", "ficiera", "fixiere", "fixiera"} data.forms.impf_sub_1pl = {"ficiéremos", "ficiéramos", "fixiéremos", "fixiéramos"} data.forms.impf_sub_2pl = {"ficiereis", "ficierais", "fixiereis", "fixierais"} data.forms.impf_sub_3pl = {"ficieren", "ficieran", "fixieren", "fixieran"} data.forms.impr_2sg = {"fai"} data.forms.impr_2pl = {"facéi", "faéi"} table.insert(data.categories, "คำกริยาไม่ปรกติภาษาอัสตูเรียส") end inflections["poder"] = function(args, data) data.forms.infinitive = {"poder"} data.forms.gerund = {"pudiendo"} data.forms.part_m = {"podíu"} data.forms.part_f = {"podida"} data.forms.part_n = {"podío"} data.forms["part_m-p"] = {"podíos"} data.forms["part_f-p"] = {"podíes"} data.forms.pres_ind_1sg = {"puedo", "pueo"} data.forms.pres_ind_2sg = {"puedes", "pues"} data.forms.pres_ind_3sg = {"pue"} data.forms.pres_ind_1pl = {"podemos"} data.forms.pres_ind_2pl = {"podéis"} data.forms.pres_ind_3pl = {"pueden", "puen"} data.forms.impf_ind_1sg = {"podía"} data.forms.impf_ind_2sg = {"podíes"} data.forms.impf_ind_3sg = {"podía"} data.forms.impf_ind_1pl = {"podíemos", "podíamos"} data.forms.impf_ind_2pl = {"podíeis", "podíais"} data.forms.impf_ind_3pl = {"podíen"} data.forms.pret_ind_1sg = {"pudi"} data.forms.pret_ind_2sg = {"pudisti", "pudiesti"} data.forms.pret_ind_3sg = {"pudo"} data.forms.pret_ind_1pl = {"pudimos", "pudiemos"} data.forms.pret_ind_2pl = {"pudistis", "pudiestis"} data.forms.pret_ind_3pl = {"pudieron"} data.forms.plup_ind_1sg = {"pudiere", "pudiera"} data.forms.plup_ind_2sg = {"pudieres", "pudieras"} data.forms.plup_ind_3sg = {"pudiere", "pudiera"} data.forms.plup_ind_1pl = {"pudiéremos", "pudiéramos"} data.forms.plup_ind_2pl = {"pudiereis", "pudierais"} data.forms.plup_ind_3pl = {"pudieren", "pudieran"} data.forms.futr_ind_1sg = {"podré"} data.forms.futr_ind_2sg = {"podrás"} data.forms.futr_ind_3sg = {"podrá"} data.forms.futr_ind_1pl = {"podremos"} data.forms.futr_ind_2pl = {"podréis"} data.forms.futr_ind_3pl = {"podrán"} data.forms.cond_ind_1sg = {"podría"} data.forms.cond_ind_2sg = {"podríes"} data.forms.cond_ind_3sg = {"podría"} data.forms.cond_ind_1pl = {"podríemos", "podríamos"} data.forms.cond_ind_2pl = {"podríeis", "podríais"} data.forms.cond_ind_3pl = {"podríen"} data.forms.pres_sub_1sg = {"pueda", "puea"} data.forms.pres_sub_2sg = {"puedas", "pueas"} data.forms.pres_sub_3sg = {"pueda", "puea"} data.forms.pres_sub_1pl = {"podamos"} data.forms.pres_sub_2pl = {"podáis"} data.forms.pres_sub_3pl = {"puedan", "puean"} data.forms.impf_sub_1sg = {"pudiere", "pudiera"} data.forms.impf_sub_2sg = {"pudieres", "pudieras"} data.forms.impf_sub_3sg = {"pudiere", "pudiera"} data.forms.impf_sub_1pl = {"pudiéremos", "pudiéramos"} data.forms.impf_sub_2pl = {"pudiereis", "pudierais"} data.forms.impf_sub_3pl = {"pudieren", "pudieran"} data.forms.impr_2sg = {"pue"} data.forms.impr_2pl = {"podéi"} table.insert(data.categories, "คำกริยาไม่ปรกติภาษาอัสตูเรียส") end inflections["poner"] = function(args, data) data.forms.infinitive = {"poder"} data.forms.gerund = {"poniendo"} data.forms.part_m = {"puestu"} data.forms.part_f = {"puesta"} data.forms.part_n = {"puesto"} data.forms["part_m-p"] = {"puestos"} data.forms["part_f-p"] = {"puestes"} data.forms.pres_ind_1sg = {"pongo"} data.forms.pres_ind_2sg = {"pones"} data.forms.pres_ind_3sg = {"pon"} data.forms.pres_ind_1pl = {"ponemos"} data.forms.pres_ind_2pl = {"ponéis"} data.forms.pres_ind_3pl = {"ponen"} data.forms.impf_ind_1sg = {"ponía"} data.forms.impf_ind_2sg = {"poníes"} data.forms.impf_ind_3sg = {"ponía"} data.forms.impf_ind_1pl = {"poníemos", "poníamos"} data.forms.impf_ind_2pl = {"poníeis", "poníais"} data.forms.impf_ind_3pl = {"poníen"} data.forms.pret_ind_1sg = {"punxi"} data.forms.pret_ind_2sg = {"punxesti", "punxisti"} data.forms.pret_ind_3sg = {"punxo"} data.forms.pret_ind_1pl = {"punxemos", "punximos"} data.forms.pret_ind_2pl = {"punxestis", "punxistis"} data.forms.pret_ind_3pl = {"punxeron"} data.forms.plup_ind_1sg = {"punxere", "punxera"} data.forms.plup_ind_2sg = {"punxeres", "punxeras"} data.forms.plup_ind_3sg = {"punxere", "punxera"} data.forms.plup_ind_1pl = {"punxéremos", "punxéramos"} data.forms.plup_ind_2pl = {"punxereis", "punxerais"} data.forms.plup_ind_3pl = {"punxeren", "punxeran"} data.forms.futr_ind_1sg = {"pondré"} data.forms.futr_ind_2sg = {"pondrás"} data.forms.futr_ind_3sg = {"pondrá"} data.forms.futr_ind_1pl = {"pondremos"} data.forms.futr_ind_2pl = {"pondréis"} data.forms.futr_ind_3pl = {"pondrán"} data.forms.cond_ind_1sg = {"pondría"} data.forms.cond_ind_2sg = {"pondríes"} data.forms.cond_ind_3sg = {"pondría"} data.forms.cond_ind_1pl = {"pondríemos", "pondríamos"} data.forms.cond_ind_2pl = {"pondríeis", "pondríais"} data.forms.cond_ind_3pl = {"pondríen"} data.forms.pres_sub_1sg = {"ponga"} data.forms.pres_sub_2sg = {"pongas"} data.forms.pres_sub_3sg = {"ponga"} data.forms.pres_sub_1pl = {"pongamos"} data.forms.pres_sub_2pl = {"pongáis"} data.forms.pres_sub_3pl = {"pongan"} data.forms.impf_sub_1sg = {"punxere", "punxera"} data.forms.impf_sub_2sg = {"punxeres", "punxeras"} data.forms.impf_sub_3sg = {"punxere", "punxera"} data.forms.impf_sub_1pl = {"punxéremos", "punxéramos"} data.forms.impf_sub_2pl = {"punxereis", "punxerais"} data.forms.impf_sub_3pl = {"punxeren", "punxeran"} data.forms.impr_2sg = {"pon"} data.forms.impr_2pl = {"ponéi"} table.insert(data.categories, "คำกริยาไม่ปรกติภาษาอัสตูเรียส") end inflections["querer"] = function(args, data) data.forms.infinitive = {"querer"} data.forms.gerund = {"queriendo"} data.forms.part_m = {"queríu"} data.forms.part_f = {"querida"} data.forms.part_n = {"querío"} data.forms["part_m-p"] = {"queríos"} data.forms["part_f-p"] = {"queríes"} data.forms.pres_ind_1sg = {"quiero"} data.forms.pres_ind_2sg = {"quies"} data.forms.pres_ind_3sg = {"quier"} data.forms.pres_ind_1pl = {"queremos"} data.forms.pres_ind_2pl = {"queréis"} data.forms.pres_ind_3pl = {"quieren"} data.forms.impf_ind_1sg = {"quería"} data.forms.impf_ind_2sg = {"queríes"} data.forms.impf_ind_3sg = {"quería"} data.forms.impf_ind_1pl = {"queríemos", "queríamos"} data.forms.impf_ind_2pl = {"queríeis", "queríais"} data.forms.impf_ind_3pl = {"queríen"} data.forms.pret_ind_1sg = {"quixi"} data.forms.pret_ind_2sg = {"quixesti", "quixisti"} data.forms.pret_ind_3sg = {"quixo"} data.forms.pret_ind_1pl = {"quixemos", "quiximos"} data.forms.pret_ind_2pl = {"quixestis", "quixistis"} data.forms.pret_ind_3pl = {"quixeron"} data.forms.plup_ind_1sg = {"quixere", "quixera"} data.forms.plup_ind_2sg = {"quixeres", "quixeras"} data.forms.plup_ind_3sg = {"quixere", "quixera"} data.forms.plup_ind_1pl = {"quixéremos", "quixéramos"} data.forms.plup_ind_2pl = {"quixereis", "quixerais"} data.forms.plup_ind_3pl = {"quixeren", "quixeran"} data.forms.futr_ind_1sg = {"quedré"} data.forms.futr_ind_2sg = {"quedrás"} data.forms.futr_ind_3sg = {"quedrá"} data.forms.futr_ind_1pl = {"quedremos"} data.forms.futr_ind_2pl = {"quedréis"} data.forms.futr_ind_3pl = {"quedrán"} data.forms.cond_ind_1sg = {"quedría"} data.forms.cond_ind_2sg = {"quedríes"} data.forms.cond_ind_3sg = {"quedría"} data.forms.cond_ind_1pl = {"quedríemos", "quedríamos"} data.forms.cond_ind_2pl = {"quedríeis", "quedríais"} data.forms.cond_ind_3pl = {"quedríen"} data.forms.pres_sub_1sg = {"quiera"} data.forms.pres_sub_2sg = {"quieras"} data.forms.pres_sub_3sg = {"quiera"} data.forms.pres_sub_1pl = {"queramos"} data.forms.pres_sub_2pl = {"queráis"} data.forms.pres_sub_3pl = {"quieran"} data.forms.impf_sub_1sg = {"quixere", "quixera"} data.forms.impf_sub_2sg = {"quixeres", "quixeras"} data.forms.impf_sub_3sg = {"quixere", "quixera"} data.forms.impf_sub_1pl = {"quixéremos", "quixéramos"} data.forms.impf_sub_2pl = {"quixereis", "quixerais"} data.forms.impf_sub_3pl = {"quixeren", "quixeran"} data.forms.impr_2sg = {"quier"} data.forms.impr_2pl = {"queréi"} table.insert(data.categories, "คำกริยาไม่ปรกติภาษาอัสตูเรียส") end inflections["ser"] = function(args, data) data.forms.infinitive = {"ser"} data.forms.gerund = {"siendo"} data.forms.part_all = {"sío"} data.forms.pres_ind_1sg = {"soi", "so"} data.forms.pres_ind_2sg = {"yes"} data.forms.pres_ind_3sg = {"ye"} data.forms.pres_ind_1pl = {"somos"} data.forms.pres_ind_2pl = {"sois"} data.forms.pres_ind_3pl = {"son"} data.forms.impf_ind_1sg = {"yera"} data.forms.impf_ind_2sg = {"yeres"} data.forms.impf_ind_3sg = {"yera"} data.forms.impf_ind_1pl = {"yéremos", "yéramos"} data.forms.impf_ind_2pl = {"yereis", "yerais"} data.forms.impf_ind_3pl = {"yeren"} data.forms.pret_ind_1sg = {"fui"} data.forms.pret_ind_2sg = {"fuesti", "fuisti"} data.forms.pret_ind_3sg = {"foi"} data.forms.pret_ind_1pl = {"fuemos", "fuimos"} data.forms.pret_ind_2pl = {"fuestis", "fuistis"} data.forms.pret_ind_3pl = {"fueron"} data.forms.plup_ind_1sg = {"fuere", "fuera"} data.forms.plup_ind_2sg = {"fueres", "fueras"} data.forms.plup_ind_3sg = {"fuere", "fuera"} data.forms.plup_ind_1pl = {"fuéremos", "fuéramos"} data.forms.plup_ind_2pl = {"fuereis", "fuerais"} data.forms.plup_ind_3pl = {"fueren", "fueran"} data.forms.futr_ind_1sg = {"seré"} data.forms.futr_ind_2sg = {"serás"} data.forms.futr_ind_3sg = {"será"} data.forms.futr_ind_1pl = {"seremos"} data.forms.futr_ind_2pl = {"seréis"} data.forms.futr_ind_3pl = {"serán"} data.forms.cond_ind_1sg = {"sería"} data.forms.cond_ind_2sg = {"seríes"} data.forms.cond_ind_3sg = {"sería"} data.forms.cond_ind_1pl = {"seríemos", "seríamos"} data.forms.cond_ind_2pl = {"seríeis", "seríais"} data.forms.cond_ind_3pl = {"seríen"} data.forms.pres_sub_1sg = {"seya"} data.forms.pres_sub_2sg = {"seyas"} data.forms.pres_sub_3sg = {"seya"} data.forms.pres_sub_1pl = {"seyamos"} data.forms.pres_sub_2pl = {"seyáis"} data.forms.pres_sub_3pl = {"seyan"} data.forms.impf_sub_1sg = {"fuere", "fuera"} data.forms.impf_sub_2sg = {"fueres", "fueras"} data.forms.impf_sub_3sg = {"fuere", "fuera"} data.forms.impf_sub_1pl = {"fuéremos", "fuéramos"} data.forms.impf_sub_2pl = {"fuereis", "fuerais"} data.forms.impf_sub_3pl = {"fueren", "fueran"} data.forms.impr_2sg = {"sé"} data.forms.impr_2pl = {"sei"} table.insert(data.categories, "คำกริยาไม่ปรกติภาษาอัสตูเรียส") table.insert(data.categories, "คำกริยาเสริมต่างรูปภาษาอัสตูเรียส") -- suppletion = การเสริมต่างรูป end inflections["tar"] = function(args, data) data.forms.infinitive = {"tar"} data.forms.gerund = {"tando"} data.forms.part_all = {"tao"} data.forms.pres_ind_1sg = {"to", "toi"} data.forms.pres_ind_2sg = {"tas"} data.forms.pres_ind_3sg = {"ta"} data.forms.pres_ind_1pl = {"tamos"} data.forms.pres_ind_2pl = {"táis"} data.forms.pres_ind_3pl = {"tán"} data.forms.impf_ind_1sg = {"taba"} data.forms.impf_ind_2sg = {"tabes"} data.forms.impf_ind_3sg = {"taba"} data.forms.impf_ind_1pl = {"tabemos", "tabamos"} data.forms.impf_ind_2pl = {"tabeis", "tabais"} data.forms.impf_ind_3pl = {"taben"} data.forms.pret_ind_1sg = {"tuvi", "tevi"} data.forms.pret_ind_2sg = {"tuvisti", "tuviesti"} data.forms.pret_ind_3sg = {"tuvo", "tevo"} data.forms.pret_ind_1pl = {"tuvimos", "tuviemos"} data.forms.pret_ind_2pl = {"tuvistis", "tuviestis"} data.forms.pret_ind_3pl = {"tuvieron"} data.forms.plup_ind_1sg = {"tuviere", "tuviera"} data.forms.plup_ind_2sg = {"tuvieres", "tuvieras"} data.forms.plup_ind_3sg = {"tuviere", "tuviera"} data.forms.plup_ind_1pl = {"tuviéremos", "tuviéramos"} data.forms.plup_ind_2pl = {"tuviereis", "tuvierais"} data.forms.plup_ind_3pl = {"tuvieren", "tuvieran"} data.forms.futr_ind_1sg = {"taré"} data.forms.futr_ind_2sg = {"tarás"} data.forms.futr_ind_3sg = {"tará"} data.forms.futr_ind_1pl = {"taremos"} data.forms.futr_ind_2pl = {"taréis"} data.forms.futr_ind_3pl = {"tarán"} data.forms.cond_ind_1sg = {"taría"} data.forms.cond_ind_2sg = {"taríes"} data.forms.cond_ind_3sg = {"taría"} data.forms.cond_ind_1pl = {"taríemos", "taríamos"} data.forms.cond_ind_2pl = {"taríeis", "taríais"} data.forms.cond_ind_3pl = {"taríen"} data.forms.pres_sub_1sg = {"tea"} data.forms.pres_sub_2sg = {"teas"} data.forms.pres_sub_3sg = {"tea"} data.forms.pres_sub_1pl = {"teamos"} data.forms.pres_sub_2pl = {"teáis"} data.forms.pres_sub_3pl = {"tean"} data.forms.impf_sub_1sg = {"tuviere", "tuviera"} data.forms.impf_sub_2sg = {"tuvieres", "tuvieras"} data.forms.impf_sub_3sg = {"tuviere", "tuviera"} data.forms.impf_sub_1pl = {"tuviéremos", "tuviéramos"} data.forms.impf_sub_2pl = {"tuviereis", "tuvierais"} data.forms.impf_sub_3pl = {"tuvieren", "tuvieran"} data.forms.impr_2sg = {"ta"} data.forms.impr_2pl = {"tái"} table.insert(data.categories, "คำกริยาไม่ปรกติภาษาอัสตูเรียส") end inflections["tener"] = function(args, data) data.forms.infinitive = {"tener"} data.forms.gerund = {"teniendo"} data.forms.part_m = {"teníu"} data.forms.part_f = {"tenida"} data.forms.part_n = {"tenío"} data.forms["part_m-p"] = {"teníos"} data.forms["part_f-p"] = {"teníes"} data.forms.pres_ind_1sg = {"tengo", "teo", "to"} data.forms.pres_ind_2sg = {"tienes"} data.forms.pres_ind_3sg = {"tien"} data.forms.pres_ind_1pl = {"tenemos"} data.forms.pres_ind_2pl = {"tenéis"} data.forms.pres_ind_3pl = {"tienen"} data.forms.impf_ind_1sg = {"tenía"} data.forms.impf_ind_2sg = {"teníes"} data.forms.impf_ind_3sg = {"tenía"} data.forms.impf_ind_1pl = {"teníemos", "teníamos"} data.forms.impf_ind_2pl = {"teníeis", "teníais"} data.forms.impf_ind_3pl = {"teníen"} data.forms.pret_ind_1sg = {"tuvi", "tevi"} data.forms.pret_ind_2sg = {"tuvisti", "tuviesti"} data.forms.pret_ind_3sg = {"tuvo", "tevo"} data.forms.pret_ind_1pl = {"tuvimos", "tuviemos"} data.forms.pret_ind_2pl = {"tuvistis", "tuviestis"} data.forms.pret_ind_3pl = {"tuvieron"} data.forms.plup_ind_1sg = {"tuviere", "tuviera"} data.forms.plup_ind_2sg = {"tuvieres", "tuvieras"} data.forms.plup_ind_3sg = {"tuviere", "tuviera"} data.forms.plup_ind_1pl = {"tuviéremos", "tuviéramos"} data.forms.plup_ind_2pl = {"tuviereis", "tuvierais"} data.forms.plup_ind_3pl = {"tuvieren", "tuvieran"} data.forms.futr_ind_1sg = {"tendré"} data.forms.futr_ind_2sg = {"tendrás"} data.forms.futr_ind_3sg = {"tendrá"} data.forms.futr_ind_1pl = {"tendremos"} data.forms.futr_ind_2pl = {"tendréis"} data.forms.futr_ind_3pl = {"tendrán"} data.forms.cond_ind_1sg = {"tendría"} data.forms.cond_ind_2sg = {"tendríes"} data.forms.cond_ind_3sg = {"tendría"} data.forms.cond_ind_1pl = {"tendríemos", "tendríamos"} data.forms.cond_ind_2pl = {"tendríeis", "tendríais"} data.forms.cond_ind_3pl = {"tendríen"} data.forms.pres_sub_1sg = {"tenga"} data.forms.pres_sub_2sg = {"tengas"} data.forms.pres_sub_3sg = {"tenga"} data.forms.pres_sub_1pl = {"tengamos"} data.forms.pres_sub_2pl = {"tengáis"} data.forms.pres_sub_3pl = {"tengan"} data.forms.impf_sub_1sg = {"tuviere", "tuviera"} data.forms.impf_sub_2sg = {"tuvieres", "tuvieras"} data.forms.impf_sub_3sg = {"tuviere", "tuviera"} data.forms.impf_sub_1pl = {"tuviéremos", "tuviéramos"} data.forms.impf_sub_2pl = {"tuviereis", "tuvierais"} data.forms.impf_sub_3pl = {"tuvieren", "tuvieran"} data.forms.impr_2sg = {"ten"} data.forms.impr_2pl = {"tenéi"} table.insert(data.categories, "คำกริยาไม่ปรกติภาษาอัสตูเรียส") end inflections["trayer"] = function(args, data) data.forms.infinitive = {"trayer", "traer"} data.forms.gerund = {"trayendo"} data.forms.part_m = {"trayíu", "traíu"} data.forms.part_f = {"trayida", "traída"} data.forms.part_n = {"trayío", "traío"} data.forms["part_m-p"] = {"trayíos", "traíos"} data.forms["part_f-p"] = {"trayíes", "traíes"} data.forms.pres_ind_1sg = {"trayo", "traigo"} data.forms.pres_ind_2sg = {"trayes", "traes"} data.forms.pres_ind_3sg = {"traye", "trai"} data.forms.pres_ind_1pl = {"trayíemos", "trayíamos", "traíemos", "traíamos"} data.forms.pres_ind_2pl = {"trayíeis", "trayíais", "traíeis", "traíais"} data.forms.pres_ind_3pl = {"trayen", "traen"} data.forms.impf_ind_1sg = {"trayía", "traía"} data.forms.impf_ind_2sg = {"trayíes", "traíes"} data.forms.impf_ind_3sg = {"trayía", "traía"} data.forms.impf_ind_1pl = {"trayíemos", "trayíamos", "traíemos", "traíamos"} data.forms.impf_ind_2pl = {"trayíeis", "trayíais", "traíeis", "traíais"} data.forms.impf_ind_3pl = {"trayíen", "traíen"} data.forms.pret_ind_1sg = {"traxí"} data.forms.pret_ind_2sg = {"traxisti", "traxesti"} data.forms.pret_ind_3sg = {"traxo"} data.forms.pret_ind_1pl = {"traximos", "traxemos"} data.forms.pret_ind_2pl = {"traxistis", "traxestis"} data.forms.pret_ind_3pl = {"traxeron"} data.forms.plup_ind_1sg = {"traxere", "traxera"} data.forms.plup_ind_2sg = {"traxeres", "traxeras"} data.forms.plup_ind_3sg = {"traxere", "traxera"} data.forms.plup_ind_1pl = {"traxéremos", "traxéramos"} data.forms.plup_ind_2pl = {"traxereis", "traxerais"} data.forms.plup_ind_3pl = {"traxeren", "traxeran"} data.forms.futr_ind_1sg = {"trayeré", "traeré"} data.forms.futr_ind_2sg = {"trayerás", "traerás"} data.forms.futr_ind_3sg = {"trayerá", "traerá"} data.forms.futr_ind_1pl = {"trayeremos", "traeremos"} data.forms.futr_ind_2pl = {"trayeréis", "traeréis"} data.forms.futr_ind_3pl = {"trayerán", "traerán"} data.forms.cond_ind_1sg = {"trayería", "traería"} data.forms.cond_ind_2sg = {"trayeríes", "traeríes"} data.forms.cond_ind_3sg = {"trayería", "traería"} data.forms.cond_ind_1pl = {"trayeríemos", "trayeríamos", "traeríemos", "traeríamos"} data.forms.cond_ind_2pl = {"trayeríeis", "trayeríais", "traeríeis", "traeríais"} data.forms.cond_ind_3pl = {"trayeríen", "traeríen"} data.forms.pres_sub_1sg = {"traya", "traiga"} data.forms.pres_sub_2sg = {"trayas", "traigas"} data.forms.pres_sub_3sg = {"traya", "traiga"} data.forms.pres_sub_1pl = {"trayamos", "traigamos"} data.forms.pres_sub_2pl = {"trayáis", "traigáis"} data.forms.pres_sub_3pl = {"trayan", "traigan"} data.forms.impf_sub_1sg = {"traxere", "traxera"} data.forms.impf_sub_2sg = {"traxeres", "traxeras"} data.forms.impf_sub_3sg = {"traxere", "traxera"} data.forms.impf_sub_1pl = {"traxéremos", "traxéramos"} data.forms.impf_sub_2pl = {"traxereis", "traxerais"} data.forms.impf_sub_3pl = {"traxeren", "traxeran"} data.forms.impr_2sg = {"trai"} data.forms.impr_2pl = {"trayéi", "traéi"} table.insert(data.categories, "คำกริยาไม่ปรกติภาษาอัสตูเรียส") end return inflections qybc63fk19fsaow51os1p6tqcc5nnnq มอดูล:ast-conj 828 336643 5729213 1902748 2026-07-20T03:49:15Z Octahedron80 267 5729213 Scribunto text/plain local m_gen_num = require("Module:gender and number") local m_links = require("Module:links") local m_utilities = require("Module:utilities") local m_infl = require("Module:ast-conj/data") local lang = require("Module:languages").getByCode("ast") local export = {} -- Shows forms with links, or a dash if empty local function show_form(subforms) if not subforms then return "&mdash;" elseif type(subforms) ~= "table" then error("a non-table value was given in the list of inflected forms.") elseif #subforms == 0 then return "&mdash;" end local ret = {} -- Go over each subform and insert links for key, subform in ipairs(subforms) do table.insert(ret, m_links.full_link({lang = lang, term = subform})) end return table.concat(ret, ", ") end -- Shows the table with the given forms local function make_table(data) local ret = {[=[<div class="NavFrame"> <div class="NavHead" style="text-align: left">การผันรูปของ ]=]} table.insert(ret, m_links.full_link({lang = lang, alt = data.forms.infinitive[1]}, "term") .. "</div>\n") table.insert(ret, [=[<div class="NavContent"> {| style="background:#F0F0F0;width:100%" class="inflection-table" |- ! colspan="2" style="background:#e2e4c0" | รูปกริยากลาง | colspan="6" align="center" | ]=]) table.insert(ret, show_form(data.forms.infinitive) .. "\n") table.insert(ret, [=[|- ! colspan="2" style="background:#e2e4c0" | รูปกริยาเป็นนาม | colspan="6" align="center" | ]=]) table.insert(ret, show_form(data.forms.gerund) .. "\n") table.insert(ret, [=[|- ! colspan="2" style="background:#e2e4c0" | รูปกริยาขยายอดีตกาล | colspan="6" align="center" | ]=]) if not data.forms.part_all then table.insert(ret, m_gen_num.format_list({"m"}) .. " " .. show_form(data.forms.part_m) .. ", ") table.insert(ret, m_gen_num.format_list({"f"}) .. " " .. show_form(data.forms.part_f) .. ", ") table.insert(ret, m_gen_num.format_list({"n"}) .. " " .. show_form(data.forms.part_n) .. ", ") table.insert(ret, m_gen_num.format_list({"m-p"}) .. " " .. show_form(data.forms["part_m-p"]) .. ", ") table.insert(ret, m_gen_num.format_list({"f-p"}) .. " " .. show_form(data.forms["part_f-p"]) .. "\n") else table.insert(ret, show_form(data.forms.part_all) .. "\n") end table.insert(ret, [=[ |- style="background:#C0C0C0" ! colspan="2" | person ! style="width:12.5%" | บุรุษที่หนึ่งเอกพจน์<br/>yo ! style="width:12.5%" | บุรุษที่สองเอกพจน์<br/>tu ! style="width:12.5%" | บุรุษที่สามเอกพจน์<br/>él/elli ! style="width:12.5%" | บุรุษที่หนึ่งพหูพจน์<br/>nosotros/nós ! style="width:12.5%" | บุรุษที่สองพหูพจน์<br/>vosotros/vós ! style="width:12.5%" | บุรุษที่สามพหูพจน์<br/>ellos |- ! style="background:#c0cfe4" rowspan="6" | มาลาบอกเล่า ! style="height:3em;background:#c0cfe4" | ปัจจุบันกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.pres_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0cfe4" | ไม่สมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.impf_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0cfe4" | อดีตกาลสิ้นสุด ]=]) table.insert(ret, "| " .. show_form(data.forms.pret_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0cfe4" | อภิสมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.plup_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0cfe4" | อนาคตกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.futr_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0cfe4" | มาลาเงื่อนไข ]=]) table.insert(ret, "| " .. show_form(data.forms.cond_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="background:#c0e4c0" rowspan="2" | มาลาสมมุติ ! style="height:3em;background:#c0e4c0" | ปัจจุบันกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.pres_sub_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0e4c0" | ไม่สมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.impf_sub_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#e4d4c0" colspan="2" | มาลาสั่ง | — | ]=]) table.insert(ret, show_form(data.forms.impr_2sg) .. "\n") table.insert(ret, [=[ | — | — | ]=]) table.insert(ret, show_form(data.forms.impr_2pl) .. "\n") table.insert(ret, [=[ | — |} </div></div>]=]) return table.concat(ret) end -- Main entry point function export.show(frame) local args = frame:getParent().args -- Create the forms local data = {forms = {}, categories = {}, refl = false} -- Find what type of verb is it (hard-coded in the template). -- m_gen_numerate standard conjugated forms for each type of verb, local infl_type = frame.args["conj"] if not args[1] then args[1] = "{{{1}}}" end --[[ Provisional code to prevent arg 2 from being blank, to avoid the following forms from ending up as blank stems with their inflectional endings in cases where this is invoked with only args 1 and 3: * 1st sg. ind. (would result in "o") * 3rd sg. ind. (would result in "a") * 2nd. sg. imp. (would result in "a") ]]-- if (args[2] == "" or not args[2]) then args[2] = args[1] end if not infl_type then data.forms.infinitive = {args["inf"]}; if data.forms.infinitive[1] == "" then data.forms.infinitive = nil end elseif m_infl[infl_type] then m_infl[infl_type](args, data) else error("Verb type " .. infl_type .. " not supported.") end return make_table(data) .. m_utilities.format_categories(data.categories, lang) end return export k1hy8lzg2ti1heq69qnfave9m8yl6zs 5729215 5729213 2026-07-20T03:50:28Z Octahedron80 267 5729215 Scribunto text/plain local m_gen_num = require("Module:gender and number") local m_links = require("Module:links") local m_utilities = require("Module:utilities") local m_infl = require("Module:ast-conj/data") local lang = require("Module:languages").getByCode("ast") local export = {} -- Shows forms with links, or a dash if empty local function show_form(subforms) if not subforms then return "&mdash;" elseif type(subforms) ~= "table" then error("a non-table value was given in the list of inflected forms.") elseif #subforms == 0 then return "&mdash;" end local ret = {} -- Go over each subform and insert links for key, subform in ipairs(subforms) do table.insert(ret, m_links.full_link({lang = lang, term = subform})) end return table.concat(ret, ", ") end -- Shows the table with the given forms local function make_table(data) local ret = {[=[<div class="NavFrame"> <div class="NavHead" style="text-align: left">การผันรูปของ ]=]} table.insert(ret, m_links.full_link({lang = lang, alt = data.forms.infinitive[1]}, "term") .. "</div>\n") table.insert(ret, [=[<div class="NavContent"> {| style="background:#F0F0F0;width:100%" class="inflection-table" |- ! colspan="2" style="background:#e2e4c0" | รูปกริยากลาง | colspan="6" align="center" | ]=]) table.insert(ret, show_form(data.forms.infinitive) .. "\n") table.insert(ret, [=[|- ! colspan="2" style="background:#e2e4c0" | รูปกริยาเป็นนาม | colspan="6" align="center" | ]=]) table.insert(ret, show_form(data.forms.gerund) .. "\n") table.insert(ret, [=[|- ! colspan="2" style="background:#e2e4c0" | รูปกริยาขยายอดีตกาล | colspan="6" align="center" | ]=]) if not data.forms.part_all then table.insert(ret, m_gen_num.format_list({"m"}) .. " " .. show_form(data.forms.part_m) .. ", ") table.insert(ret, m_gen_num.format_list({"f"}) .. " " .. show_form(data.forms.part_f) .. ", ") table.insert(ret, m_gen_num.format_list({"n"}) .. " " .. show_form(data.forms.part_n) .. ", ") table.insert(ret, m_gen_num.format_list({"m-p"}) .. " " .. show_form(data.forms["part_m-p"]) .. ", ") table.insert(ret, m_gen_num.format_list({"f-p"}) .. " " .. show_form(data.forms["part_f-p"]) .. "\n") else table.insert(ret, show_form(data.forms.part_all) .. "\n") end table.insert(ret, [=[ |- style="background:#C0C0C0" ! colspan="2" | บุรุษ ! style="width:12.5%" | บุรุษที่หนึ่งเอกพจน์<br/>yo ! style="width:12.5%" | บุรุษที่สองเอกพจน์<br/>tu ! style="width:12.5%" | บุรุษที่สามเอกพจน์<br/>él/elli ! style="width:12.5%" | บุรุษที่หนึ่งพหูพจน์<br/>nosotros/nós ! style="width:12.5%" | บุรุษที่สองพหูพจน์<br/>vosotros/vós ! style="width:12.5%" | บุรุษที่สามพหูพจน์<br/>ellos |- ! style="background:#c0cfe4" rowspan="6" | มาลาบอกเล่า ! style="height:3em;background:#c0cfe4" | ปัจจุบันกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.pres_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0cfe4" | ไม่สมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.impf_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0cfe4" | อดีตกาลสิ้นสุด ]=]) table.insert(ret, "| " .. show_form(data.forms.pret_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0cfe4" | อภิสมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.plup_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0cfe4" | อนาคตกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.futr_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0cfe4" | มาลาเงื่อนไข ]=]) table.insert(ret, "| " .. show_form(data.forms.cond_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! style="background:#c0e4c0" rowspan="2" | มาลาสมมุติ ! style="height:3em;background:#c0e4c0" | ปัจจุบันกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.pres_sub_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#c0e4c0" | ไม่สมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.impf_sub_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_3pl) .. "\n") table.insert(ret, [=[ |- ! style="height:3em;background:#e4d4c0" colspan="2" | มาลาสั่ง | — | ]=]) table.insert(ret, show_form(data.forms.impr_2sg) .. "\n") table.insert(ret, [=[ | — | — | ]=]) table.insert(ret, show_form(data.forms.impr_2pl) .. "\n") table.insert(ret, [=[ | — |} </div></div>]=]) return table.concat(ret) end -- Main entry point function export.show(frame) local args = frame:getParent().args -- Create the forms local data = {forms = {}, categories = {}, refl = false} -- Find what type of verb is it (hard-coded in the template). -- m_gen_numerate standard conjugated forms for each type of verb, local infl_type = frame.args["conj"] if not args[1] then args[1] = "{{{1}}}" end --[[ Provisional code to prevent arg 2 from being blank, to avoid the following forms from ending up as blank stems with their inflectional endings in cases where this is invoked with only args 1 and 3: * 1st sg. ind. (would result in "o") * 3rd sg. ind. (would result in "a") * 2nd. sg. imp. (would result in "a") ]]-- if (args[2] == "" or not args[2]) then args[2] = args[1] end if not infl_type then data.forms.infinitive = {args["inf"]}; if data.forms.infinitive[1] == "" then data.forms.infinitive = nil end elseif m_infl[infl_type] then m_infl[infl_type](args, data) else error("Verb type " .. infl_type .. " not supported.") end return make_table(data) .. m_utilities.format_categories(data.categories, lang) end return export tvzl0e6s7pvz7bqw8ngr4o1f7oh5n1f 5729217 5729215 2026-07-20T03:59:26Z Octahedron80 267 5729217 Scribunto text/plain local m_gen_num = require("Module:gender and number") local m_links = require("Module:links") local m_utilities = require("Module:utilities") local m_infl = require("Module:ast-conj/data") local lang = require("Module:languages").getByCode("ast") local export = {} -- Shows forms with links, or a dash if empty local function show_form(subforms) if not subforms then return "&mdash;" elseif type(subforms) ~= "table" then error("a non-table value was given in the list of inflected forms.") elseif #subforms == 0 then return "&mdash;" end local ret = {} -- Go over each subform and insert links for key, subform in ipairs(subforms) do table.insert(ret, m_links.full_link({lang = lang, term = subform})) end return table.concat(ret, ", ") end -- Shows the table with the given forms local function make_table(data) local ret = {[=[<div class="NavFrame"> <div class="NavHead" align="center">การผันรูปของ ]=]} table.insert(ret, m_links.full_link({lang = lang, alt = data.forms.infinitive[1]}, "term") .. "</div>\n") table.insert(ret, [=[<div class="NavContent" align="left"> {| class="roa-inflection-table" data-toggle-category="inflection" |- ! class="roa-nonfinite-header" colspan="2" | รูปกริยากลาง | colspan="6" | ]=]) table.insert(ret, show_form(data.forms.infinitive) .. "\n") table.insert(ret, [=[|- ! class="roa-nonfinite-header" colspan="2" | รูปกริยาเป็นนาม | colspan="6" | ]=]) table.insert(ret, show_form(data.forms.gerund) .. "\n") table.insert(ret, [=[|- ! class="roa-nonfinite-header" colspan="2" | รูปกริยาขยายอดีตกาล | colspan="6" | ]=]) if not data.forms.part_all then table.insert(ret, m_gen_num.format_list({"m"}) .. " " .. show_form(data.forms.part_m) .. ", ") table.insert(ret, m_gen_num.format_list({"f"}) .. " " .. show_form(data.forms.part_f) .. ", ") table.insert(ret, m_gen_num.format_list({"n"}) .. " " .. show_form(data.forms.part_n) .. ", ") table.insert(ret, m_gen_num.format_list({"m-p"}) .. " " .. show_form(data.forms["part_m-p"]) .. ", ") table.insert(ret, m_gen_num.format_list({"f-p"}) .. " " .. show_form(data.forms["part_f-p"]) .. "\n") else table.insert(ret, show_form(data.forms.part_all) .. "\n") end table.insert(ret, [=[ |- class="roa-person-number-header" ! colspan="2" | บุรุษ ! style="width:12.5%" | บุรุษที่หนึ่งเอกพจน์<br/>yo ! style="width:12.5%" | บุรุษที่สองเอกพจน์<br/>tu ! style="width:12.5%" | บุรุษที่สามเอกพจน์<br/>él/elli ! style="width:12.5%" | บุรุษที่หนึ่งพหูพจน์<br/>nosotros/nós ! style="width:12.5%" | บุรุษที่สองพหูพจน์<br/>vosotros/vós ! style="width:12.5%" | บุรุษที่สามพหูพจน์<br/>ellos |- ! class="roa-indicative-left-rail" rowspan="6" | มาลาบอกเล่า ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.pres_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-indicative-left-rail" style="height:3em;" | ไม่สมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.impf_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-indicative-left-rail" style="height:3em;" | อดีตกาลสิ้นสุด ]=]) table.insert(ret, "| " .. show_form(data.forms.pret_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-indicative-left-rail" style="height:3em;" | อภิสมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.plup_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.futr_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไข ]=]) table.insert(ret, "| " .. show_form(data.forms.cond_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-subjunctive-left-rail" rowspan="2" | มาลาสมมุติ ! class="roa-subjunctive-left-rail" style="height:3em;" | ปัจจุบันกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.pres_sub_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ไม่สมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.impf_sub_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | มาลาสั่ง | — | ]=]) table.insert(ret, show_form(data.forms.impr_2sg) .. "\n") table.insert(ret, [=[ | — | — | ]=]) table.insert(ret, show_form(data.forms.impr_2pl) .. "\n") table.insert(ret, [=[ | — |} </div></div>]=]) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. table.concat(ret) end -- Main entry point function export.show(frame) local args = frame:getParent().args -- Create the forms local data = {forms = {}, categories = {}, refl = false} -- Find what type of verb is it (hard-coded in the template). -- m_gen_numerate standard conjugated forms for each type of verb, local infl_type = frame.args["conj"] if not args[1] then args[1] = "{{{1}}}" end --[[ Provisional code to prevent arg 2 from being blank, to avoid the following forms from ending up as blank stems with their inflectional endings in cases where this is invoked with only args 1 and 3: * 1st sg. ind. (would result in "o") * 3rd sg. ind. (would result in "a") * 2nd. sg. imp. (would result in "a") ]]-- if (args[2] == "" or not args[2]) then args[2] = args[1] end if not infl_type then data.forms.infinitive = {args["inf"]}; if data.forms.infinitive[1] == "" then data.forms.infinitive = nil end elseif m_infl[infl_type] then m_infl[infl_type](args, data) else error("Verb type " .. infl_type .. " not supported.") end return make_table(data) .. m_utilities.format_categories(data.categories, lang) end return export bseu0w8a8umozvjwqhe3yap0ex0eva9 5729294 5729217 2026-07-20T05:29:12Z Octahedron80 267 5729294 Scribunto text/plain local m_gen_num = require("Module:gender and number") local m_links = require("Module:links") local m_utilities = require("Module:utilities") local m_infl = require("Module:ast-conj/data") local lang = require("Module:languages").getByCode("ast") local export = {} -- Shows forms with links, or a dash if empty local function show_form(subforms) if not subforms then return "&mdash;" elseif type(subforms) ~= "table" then error("a non-table value was given in the list of inflected forms.") elseif #subforms == 0 then return "&mdash;" end local ret = {} -- Go over each subform and insert links for key, subform in ipairs(subforms) do table.insert(ret, m_links.full_link({lang = lang, term = subform})) end return table.concat(ret, ", ") end -- Shows the table with the given forms local function make_table(data) local ret = {[=[<div class="NavFrame"> <div class="NavHead" align="center">การผันรูปของ ]=]} table.insert(ret, m_links.full_link({lang = lang, alt = data.forms.infinitive[1]}, "term") .. "</div>\n") table.insert(ret, [=[<div class="NavContent" align="left"> {| class="roa-inflection-table" data-toggle-category="inflection" |- ! class="roa-nonfinite-header" colspan="2" | รูปกริยากลาง | colspan="6" | ]=]) table.insert(ret, show_form(data.forms.infinitive) .. "\n") table.insert(ret, [=[|- ! class="roa-nonfinite-header" colspan="2" | รูปกริยาเป็นนาม | colspan="6" | ]=]) table.insert(ret, show_form(data.forms.gerund) .. "\n") table.insert(ret, [=[|- ! class="roa-nonfinite-header" colspan="2" | รูปกริยาขยายอดีตกาล | colspan="6" | ]=]) if not data.forms.part_all then table.insert(ret, m_gen_num.format_list({"m"}) .. " " .. show_form(data.forms.part_m) .. ", ") table.insert(ret, m_gen_num.format_list({"f"}) .. " " .. show_form(data.forms.part_f) .. ", ") table.insert(ret, m_gen_num.format_list({"n"}) .. " " .. show_form(data.forms.part_n) .. ", ") table.insert(ret, m_gen_num.format_list({"m-p"}) .. " " .. show_form(data.forms["part_m-p"]) .. ", ") table.insert(ret, m_gen_num.format_list({"f-p"}) .. " " .. show_form(data.forms["part_f-p"]) .. "\n") else table.insert(ret, show_form(data.forms.part_all) .. "\n") end table.insert(ret, [=[ |- class="roa-person-number-header" ! colspan="2" | บุรุษ ! style="width:12.5%" | บุรุษที่หนึ่งเอกพจน์<br/>yo ! style="width:12.5%" | บุรุษที่สองเอกพจน์<br/>tu ! style="width:12.5%" | บุรุษที่สามเอกพจน์<br/>él/elli ! style="width:12.5%" | บุรุษที่หนึ่งพหูพจน์<br/>nosotros/nós ! style="width:12.5%" | บุรุษที่สองพหูพจน์<br/>vosotros/vós ! style="width:12.5%" | บุรุษที่สามพหูพจน์<br/>ellos |- ! class="roa-indicative-left-rail" rowspan="6" | มาลาบอกเล่า ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.pres_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-indicative-left-rail" style="height:3em;" | ไม่สมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.impf_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-indicative-left-rail" style="height:3em;" | อดีตกาลสิ้นสุด (สมบูรณ์) ]=]) table.insert(ret, "| " .. show_form(data.forms.pret_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pret_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-indicative-left-rail" style="height:3em;" | อภิสมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.plup_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.plup_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.futr_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.futr_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไข ]=]) table.insert(ret, "| " .. show_form(data.forms.cond_ind_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.cond_ind_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-subjunctive-left-rail" rowspan="2" | มาลาสมมุติ ! class="roa-subjunctive-left-rail" style="height:3em;" | ปัจจุบันกาล ]=]) table.insert(ret, "| " .. show_form(data.forms.pres_sub_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.pres_sub_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ไม่สมบูรณ์ ]=]) table.insert(ret, "| " .. show_form(data.forms.impf_sub_1sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_2sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_3sg) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_1pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_2pl) .. "\n") table.insert(ret, "| " .. show_form(data.forms.impf_sub_3pl) .. "\n") table.insert(ret, [=[ |- ! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | มาลาสั่ง | — | ]=]) table.insert(ret, show_form(data.forms.impr_2sg) .. "\n") table.insert(ret, [=[ | — | — | ]=]) table.insert(ret, show_form(data.forms.impr_2pl) .. "\n") table.insert(ret, [=[ | — |} </div></div>]=]) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. table.concat(ret) end -- Main entry point function export.show(frame) local args = frame:getParent().args -- Create the forms local data = {forms = {}, categories = {}, refl = false} -- Find what type of verb is it (hard-coded in the template). -- m_gen_numerate standard conjugated forms for each type of verb, local infl_type = frame.args["conj"] if not args[1] then args[1] = "{{{1}}}" end --[[ Provisional code to prevent arg 2 from being blank, to avoid the following forms from ending up as blank stems with their inflectional endings in cases where this is invoked with only args 1 and 3: * 1st sg. ind. (would result in "o") * 3rd sg. ind. (would result in "a") * 2nd. sg. imp. (would result in "a") ]]-- if (args[2] == "" or not args[2]) then args[2] = args[1] end if not infl_type then data.forms.infinitive = {args["inf"]}; if data.forms.infinitive[1] == "" then data.forms.infinitive = nil end elseif m_infl[infl_type] then m_infl[infl_type](args, data) else error("Verb type " .. infl_type .. " not supported.") end return make_table(data) .. m_utilities.format_categories(data.categories, lang) end return export pzs1hg6wvagedyk1uioy8cn18fmyja9 มอดูล:gl-reinteg-verb 828 339118 5729289 4933751 2026-07-20T05:18:55Z Octahedron80 267 5729289 Scribunto text/plain --[=[ This module implements {{gl-reinteg-conj}} and provides the underlying conjugation functions for {{gl-reinteg-verb}}, as well as for {{gl-verb}} when invoked with |reinteg=1. The actual formatting of both {{gl-reinteg-verb}} and {{gl-verb}} happens in [[Module:gl-headword]]. This module uses the [[Appendix:Reintegrationism|reintegrationst]] norm for Galician spelling. See also [[Module:gl-verb]], which implements the standard norm. Authorship: Ben Wing <benwing2>, MedK <medk1> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Galician form representing the value of a given slot. -- "lemma" = The dictionary form of a given Galician term. For Galician, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("gl") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local com = require("Module:gl-reinteg-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsub = com.rsub local u = mw.ustring.char local function link_term(term) return m_links.full_link({ lang = lang, term = term }, "term") end local V = com.V -- vowel regex class local AV = com.AV -- accented vowel regex class local C = com.C -- consonant regex class local AC = u(0x0301) -- acute = ́ local TEMPC1 = u(0xFFF1) -- temporary character used for consonant substitutions local TEMP_MESOCLITIC_INSERTION_POINT = u(0xFFF2) -- temporary character used to mark the mesoclitic insertion point -- Variant codes and the like. -- NOTE: These codes should be *PREFIXED* onto stems and *SUFFIXED* onto endings. That way they won't interfere in the -- operation of combine_stem_ending(). -- -- GL_TYPE = "Galician-type", PT_TYPE = "Portuguese-type". GL_TYPE stems cannot combine with PT_TYPE endings and -- vice-versa. GL_ONLY_TYPE = "Galician-only type"; GL_ONLY_TYPE stems can only combine with endings specifically -- marked as GL_TYPE. local GL_TYPE = u(0xFFF3) local GL_ONLY_TYPE = u(0xFFF4) local PT_TYPE = u(0xFFF5) -- ALTVAR = Less-recommended variants listed at the bottom of the Estraviz conjugation tables rather than in the main -- table. We list these in the main table but with a footnote indicating they are less-recommended alternatives, and -- italicize them to visually set them apart. local ALTVAR = u(0xFFF6) local GL_ALTVAR = GL_TYPE .. ALTVAR local GL_ONLY_ALTVAR = GL_ONLY_TYPE .. ALTVAR local var_codes_no_altvar = GL_TYPE .. GL_ONLY_TYPE .. PT_TYPE local all_var_codes = var_codes_no_altvar .. ALTVAR local var_code_c = "[" .. all_var_codes .. "]" local var_code_no_altvar_c = "[" .. var_codes_no_altvar .. "]" local not_var_code_c = "[^" .. all_var_codes .. "]" -- Export variant codes for use in [[Module:pt-gl-inflections]]. export.GL_TYPE = GL_TYPE export.GL_ONLY_TYPE = GL_ONLY_TYPE export.PT_TYPE = PT_TYPE export.ALTVAR = ALTVAR local short_pp_footnote = "[usually used with auxiliary verbs " .. link_term("ser") .. " and " .. link_term("estar") .. "]" local long_pp_footnote = "[usually used with auxiliary verbs " .. link_term("haver") .. " and " .. link_term("ter") .. "]" --[=[ Vowel alternations: <i-e>: 'i' in pres1s and the whole present subjunctive; 'e' elsewhere when stressed. Generally 'e' otherwise when unstressed. E.g. [[sentir]], [[conseguir]] (the latter additionally with 'gu-g' alternation). <u-o>: 'u' in pres1s and the whole present subjunctive; 'o' elsewhere when stressed. Either 'o' or 'u' otherwise when unstressed. E.g. [[dormir]], [[subir]]. <i>: 'i' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'e'. E.g. [[progredir]], [[premir]]. <u>: 'u' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'o'. E.g. [[polir]], [[extorquir]] (the latter also <u-o>). <í>: The last 'i' of the stem (excluding stem-final 'i') becomes 'í' when stressed. E.g.: * [[proibir]] ('proíbo, proíbe(s), proíbem, proíba(s), proíbam') * [[faiscar]] ('faísco, faísca(s), faíscam, faísque(s), faísquem' also with 'c-qu' alternation) * [[homogeneizar]] ('homogeneízo', etc.) * [[mobiliar]] ('mobílio', etc.; note here the final -i is ignored when determining which vowel to stress) * [[tuitar]] ('tuíto', etc.) <ú>: The last 'u' of the stem (excluding stem-final 'u') becomes 'ú' when stressed. E.g.: * [[reunir]] ('reúno, reúne(s), reúnem, reúna(s), reúnam') * [[esmiuçar]] ('esmiúço, esmiúça(s), esmiúça, esmiúce(s), esmiúcem' also with 'ç-c' alternation) * [[reusar]] ('reúso, reúsa(s), reúsa, reúse(s), reúsem') * [[saudar]] ('saúdo, saúda(s), saúda, saúde(s), saúdem') ]=] local vowel_alternants = m_table.listToSet({"i-e", "i", "í", "u-o", "u", "ú", "ei", "+"}) local vowel_alternant_to_desc = { ["i-e"] = "''i-e'' alternation in present singular", ["i"] = "''e'' becomes ''i'' when stressed", ["í"] = "''i'' becomes ''í'' when stressed", ["u-o"] = "''u-o'' alternation in present singular", ["u"] = "''o'' becomes ''u'' when stressed", ["ú"] = "''u'' becomes ''ú'' when stressed", ["ei"] = "''i'' becomes ''ei'' when stressed", } local vowel_alternant_to_cat = { ["i-e"] = "i-e alternation in present singular", ["i"] = "e becoming i when stressed", ["í"] = "i becoming í when stressed", ["u-o"] = "u-o alternation in present singular", ["u"] = "o becoming u when stressed", ["ú"] = "u becoming ú when stressed", ["ei"] = "i becoming ei when stressed", } local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} person_number_to_reflexive_pronoun = { ["1s"] = "me", ["2s"] = "te", ["3s"] = "se", ["1p"] = "nos", ["2p"] = "vos", ["3p"] = "se", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "no_pres1_and_sub", "only3s", "only3sp", "only3p", "pp_inv", "irreg", "no_built_in", "e_ei_cat", } -- Remove any variant codes e.g. GL_TYPE, PT_TYPE, ALTVAR. Needs to be called from [[Module:gl-reinteg-headword]] on the -- output of do_generate_forms(). `keep_altvar` leaves ALTVAR; used in the `canonicalize` function of show_forms() -- because we then process and remove it in `generate_forms`. FIXME: Use metadata for this once it's supported in -- [[Module:inflection utilities]]. function export.remove_variant_codes(form, keep_altvar) return rsub(form, keep_altvar and var_code_no_altvar_c or var_code_c, "") end -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"short_pp_ms", "short|m|s|past|part"}, {"short_pp_fs", "short|f|s|past|part"}, {"short_pp_mp", "short|m|p|past|part"}, {"short_pp_fp", "short|f|p|past|part"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{gl-reinteg-verb form of}}. For example, -- for a reflexive-only verb like [[arrepender-se]], we want to be able to use {{gl-reinteg-verb form of}} on -- [[arrependa]] (which should mention that it is a part of 'me arrependa', first-person singular present -- subjunctive, and 'se arrependa', third-person singular present subjunctive) or on [[arrependemos]] (which should -- mention that it is a part of 'arrependemo-nos', first-person plural present indicative or preterite). Similarly, -- we want to use {{gl-reinteg-verb form of}} on [[arrependendo]] (which should mention that it is a part of -- 'se ... arrependendo', syntactic variant of [[arrependendo-se]], which is the gerund of [[arrepender-se]]). To -- do this, we need to be able to map non-reflexive parts like [[arrependa]], [[arrependemos]], [[arrependendo]], -- etc. to their reflexive equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like -- [[arrependendo]], [[arrepender]] and imperatives, to the separated syntactic variant of the verb+clitic -- combination. We do this by creating slots for the non-reflexive part equivalent of each basic reflexive slot, -- and for the separated syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. -- We use slots in this way to deal with multiword lemmas. Note that we run into difficulties mapping between -- reflexive verbs, non-reflexive part equivalents, and separated syntactic variants if a slot contains more than -- one form. To handle this, if there are the same number of forms in two slots we're trying to match up, we assume -- the forms match one-to-one; otherwise we don't match up the two slots (which means {{gl-reinteg-verb form of}} won't -- work in this case, but such a case is extremely rare and not worth worrying about). Alternatives that handle -- this "properly" are significantly more complicated and require non-trivial modifications to -- [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "gl-reinteg-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{gl-reinteg-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "pres|ind", person_number_list) add_basic_personal_slot("impf", "impf|ind", person_number_list) add_basic_personal_slot("pret", "pret|ind", person_number_list) add_basic_personal_slot("plup", "plup|ind", person_number_list) add_basic_personal_slot("fut", "fut|ind", person_number_list) add_basic_personal_slot("cond", "cond", person_number_list) add_basic_personal_slot("pres_sub", "pres|sub", person_number_list) add_basic_personal_slot("impf_sub", "impf|sub", person_number_list) add_basic_personal_slot("fut_sub", "fut|sub", person_number_list) add_basic_personal_slot("imp", "imp", imp_person_number_list) add_basic_personal_slot("pers_inf", "pers|inf", person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'nom' + subjunctive. add_basic_personal_slot("neg_imp", "neg|imp", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values(separated_groups, data) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local retval = {form = separated_group[1], footnotes = footnotes} table.insert(retvals, retval) end return retvals end local function simple_choice(choices) return function(separated_groups, data) if #separated_groups > 1 then data.parse_err("For spec '" .. data.prefix .. ":', only one value currently allowed") end if #separated_groups[1] > 1 then data.parse_err("For spec '" .. data.prefix .. ":', no footnotes currently allowed") end local choice = separated_groups[1][1] if not m_table.contains(choices, choice) then data.parse_err("For spec '" .. data.prefix .. ":', saw value '" .. choice .. "' but expected one of '" .. table.concat(choices, ",") .. "'") end return choice end end for _, overridable_stem in ipairs { "pres_unstressed", "pres_stressed", "pres1_and_sub", -- Don't include pres1; use pres_1s if you need to override just that form "impf", "full_impf", {"pret_conj", simple_choice({"irreg", "ar", "er", "ir"}) }, "pret_base", "pret", "gl_short_pret", "pt_pret_1s", "pt_pret_3s", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", {"sub_conj", simple_choice({"ar", "er"}) }, "plup", "impf_sub", "fut_sub", "pers_inf", "pp", "short_pp", } do if type(overridable_stem) == "string" then overridable_stems[overridable_stem] = allow_multiple_values else local stem, validator = unpack(overridable_stem) overridable_stems[stem] = validator end end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `vowel_alt`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/z, g/gu, gu/gü, g/j) occur automatically as appropriate for the ending. 2. If the stem begins with an acute accent, the accent is moved onto the last vowel of the prefix (for handling verbs in -uar such as [[minguar]], pres_3s 'míngua'). 3. If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. 4. If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem, e.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. 5. If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1_and_sub: Overriding stem for 1s present indicative and the entire subjunctive. Only set by irregular verbs and by the indicators `no_pres_stressed` (e.g. [[precaver]]) and `no_pres1_and_sub` (since verbs of this sort, e.g. [[puir]], are missing the entire subjunctive as well as the 1s present indicative). Used by many irregular verbs, e.g. [[caber]], verbs in '-air', [[dizer]], [[ter]], [[valer]], etc. Some verbs set this and then supply an override for the pres_1sg if it's irregular, e.g. [[saber]], with irregular subjunctive stem "saib-" and special 1s present indicative "sei". -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres1_and_sub if given, else pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to pres1_and_sub if given, else the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- sub_conj: Determines the set of endings used in the subjunctive. Should be one of "ar" or "er". -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- full_impf: The full imperfect stem missing only the endings (-a, -as, -am, etc.). Used for verbs with irregular imperfects such as [[ser]], [[ter]], [[vir]] and [[pôr]]. Needs to include an accent on the stressed vowel, which will automatically be removed when not needed. -- pret_conj: Determines the set of endings used in the preterite. Should be one of "ar", "er", "ir" or "irreg". Defaults to the conjugation as determined from the infinitive. When pret_conj == "irreg", `pret` is used, otherwise `pret_base`. -- pret_base: The preterite stem (not including the -a-/-e-/-i- stem suffix). Defaults to the infinitive stem. Only used when pret_conj ~= "irreg". -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.). Needs to include the accent on the final vowel that occurs in some forms, e.g. 'figé' for [[fazer]], 'fô' for [[ser]]; the accent will automatically be removed when not needed. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[fazer]], [[poder]], [[trazer]], etc. The pret_1s and pret_3s are handled using the gl_short_pret stem instead for "Galician"-ending forms (pret_1s '-em', pret_3s '-o') and using pt_pret_1s and pt_pret_3s for "Portuguese"-ending forms. Defaults to `pret_base` + the accented conjugation vowel. -- gl_short_pret: The short preterite stem, used with "Galician" 1s and 3s endings (pret_1s '-em', pret_3s '-o'). Only used with irregular preterites (pret_conj == "irreg"). Normally derived from gl_pret by deleting the final vowel, and doesn't need to be given explicitly. -- pt_pret_1s: The "Portuguese" pret_1s form. In addition to this, the "Galician" pret_1s form will be included, formed from gl_short_pret by adding '-em'. Does not need to be given if an override for pret_1s is supplied. -- pt_pret_3s: The "Portuguese" pret_3s form. In addition to this, the "Galician" pret_3s form will be included, formed from gl_short_pret by adding '-o' (which may cause the preceding consonant to shift to preserve the sound). Does not need to be given if an override for pret_3s is supplied. -- fut: The future stem. Defaults to the infinitive stem + the unaccented conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Needs to include the accent on the final vowel that occurs in some forms; see `pret` for more information. Defaults to `pret`. -- fut_sub: The future subjunctive stem. Needs to include the accent on the final vowel that occurs in some forms; see `gl_pret` for more information. Defaults to the merger of `gl_pret` and `pt_pret`. -- plup: The pluperfect stem. Needs to include the accent on the final vowel that occurs in some forms; see `pret` for more information. Defaults to `pret`. -- pers_inf: The personal infinitive stem. Defaults to the infinitive stem + the accented conjugation vowel. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- short_pp: The short masculine singular past participle, for verbs with such a form. No default. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- (1) Verbs with short past participles: need to specify the short pp explicitly. -- -- aceitar: use <short_pp:aceite> -- anexar, completar, expressar, expulsar, findar, fritar, ganhar, gastar, limpar, pagar, pasmar, pegar, soltar: -- use <short_pp:anexo> etc. -- assentar: use <short_pp:assente> -- entregar: use <short_pp:entregue> -- enxugar: use <short_pp:enxuto> -- matar: use <short_pp:morto> -- -- (2) Verbs with orthographic consonant alternations: handled automatically. -- -- -car (brincar, buscar, pecar, trancar, etc.): automatically handled in combine_stem_ending() -- -çar (alcançar, começar, laçar): automatically handled in combine_stem_ending() -- -gar (apagar, cegar, esmagar, largar, navegar, resmungar, sugar, etc.): automatically handled in combine_stem_ending() -- -- (3) Verbs with vowel alternations: need to specify the alternation explicitly unless it always happens, in -- which case it's handled automatically through an entry below. -- -- esmiuçar changing to esmiúço: use <ú> -- faiscar changing to faísco: use <í> -- -iar changing to -eio (ansiar, incendiar, mediar, odiar, remediar, etc.): use <ei> -- -izar changing to -ízo (ajuizar, enraizar, homogeneizar, plebeizar, etc.): use <í> -- mobiliar changing to mobílio: use <í> -- reusar changing to reúso: use <ú> -- saudar changing to saúdo: use <ú> -- tuitar/retuitar changing to (re)tuíto: use <í> { -- dar, desdar match = match_against_verbs("dar", {"^", "^des", "^re"}), forms = { pres_1s = "dou", pres_2s = "dás", pres_3s = "dá", -- damos, dades/dais regular pres_3p = {GL_TYPE .. "dam", PT_TYPE .. "dão"}, pret_conj = "irreg", pret = "dé", pret_1s = "dei", pret_3s = "deu", pres_sub_1s = "dê", pres_sub_2s = "dês", pres_sub_3s = "dê", -- demos, dedes/deis regular pres_sub_3p = {GL_TYPE .. "dem", PT_TYPE .. "deem"}, irreg = true, } }, { -- -ear (frear, nomear, semear, etc.) match = "ear", forms = { pres_stressed = {"ei", GL_ALTVAR .. "e"}, e_ei_cat = true, } }, { -- estar match = match_against_verbs("estar", {"^", "sob", "sobr"}), forms = { pres_1s = "estou", pres_2s = "estás", pres_3s = "está", pres_3p = {GL_TYPE .. "estám", PT_TYPE .. "estão"}, pres1_and_sub = "estej", -- only for subjunctive as we override pres_1s sub_conj = "er", pret_conj = "irreg", pret = "estivé", pt_pret_1s = "estive", pt_pret_3s = "esteve", -- [[sobestar]], [[sobrestar]] are transitive so they have fully inflected past participles pp_inv = function(base, prefix) return prefix == "" end, irreg = true, } }, -------------------------------------------------------------------------------------------- -- -er -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- precaver: use <no_pres_stressed> -- -cer (verbs in -ecer, descer, vencer, etc.): automatically handled in combine_stem_ending() -- -ger (proteger, reger, etc.): automatically handled in combine_stem_ending() -- -guer (erguer/reerguer/soerguer): automatically handled in combine_stem_ending() { -- benzer match = "benzer", forms = {short_pp = "bento"} }, { -- caber match = "caber", forms = { pres1_and_sub = "caib", pret_conj = "irreg", pret = "coubé", pt_pret_1s = "coube", pt_pret_3s = "coube", irreg = true, } }, { -- crer, descrer match = "crer", forms = { pres_2s = "crês", pres_3s = "crê", pres_2p = "credes", pres_3p = {GL_TYPE .. "crem", PT_TYPE .. "creem"}, pres1_and_sub = {"crei", GL_ALTVAR .. "cre"}, irreg = true, } }, { -- dizer, bendizer, condizer, contradizer, desdizer, maldizer, predizer, etc. match = "dizer", forms = { -- use 'digu' because we're in a front environment; if we use 'dig', we'll get '#dijo' pres1_and_sub = "digu", pres_2s = {GL_TYPE .. "dis", PT_TYPE .. "dizes"}, pres_3s = {GL_TYPE .. "di", PT_TYPE .. "diz"}, pres_3p = {GL_TYPE .. "dim", PT_TYPE .. "dizem"}, pret_conj = "irreg", pret = {GL_TYPE .. "dixé", PT_TYPE .. "dissé"}, pt_pret_1s = "disse", pt_pret_3s = "disse", pp = "dito", fut = "dir", irreg = true, } }, { -- eleger, reeleger match = "eleger", forms = {short_pp = "eleito"} }, { -- acender, prender; not desprender, etc. match = match_against_verbs("ender", {"^ac", "^pr"}), forms = {short_pp = "eso"} }, { -- fazer, afazer, contrafazer, desfazer, liquefazer, perfazer, putrefazer, rarefazer, refazer, satisfazer, tumefazer match = "fazer", forms = { -- use 'fagu' because we're in a front environment; if we use 'fag', we'll get '#fajo' pres1_and_sub = {GL_TYPE .. "fagu", PT_TYPE .. "faç"}, pres_2s = {GL_TYPE .. "fás", PT_TYPE .. "fazes"}, pres_3s = {GL_TYPE .. "fai", PT_TYPE .. "faz"}, pres_3p = {GL_TYPE .. "fam", PT_TYPE .. "fazem"}, pret_conj = "irreg", pret = {GL_TYPE .. "figé", PT_TYPE .. "fizé", GL_ONLY_ALTVAR .. "fizé"}, pt_pret_1s = "fiz", pt_pret_3s = "fez", pp = "feito", fut = "far", irreg = true, } }, { match = "^haver", forms = { pres_1s = "hei", pres_2s = "hás", pres_3s = {"há", {form = GL_ALTVAR .. "hai", footnotes = {"[also impersonal]"}}}, pres_3p = {GL_TYPE .. "ham", PT_TYPE .. "hão"}, pres1_and_sub = "haj", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "houvé", pt_pret_1s = "houve", pt_pret_3s = "houve", imp_2s = "há", irreg = true, } }, -- reaver below under r- { -- jazer, adjazer match = "jazer", forms = { pres_3s = "jaz", irreg = true, } }, { -- ler, reler, tresler; not excel(l)er, valer, etc. match = match_against_verbs("ler", {"^", "^re", "tres"}), forms = { pres_2s = "lês", pres_3s = "lê", pres_2p = "ledes", pres_3p = {GL_TYPE .. "lem", PT_TYPE .. "leem"}, pres1_and_sub = {"lei", GL_ALTVAR .. "le"}, irreg = true, } }, { -- morrer, desmorrer match = "morrer", forms = {short_pp = "morto"} }, { -- moer, but not remoer match = "^moer", forms = { pres_2s = "móis", pres_3s = "mói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() pres1_and_sub = {"mo", GL_ALTVAR .. "moi"}, short_pp = "mudo", irreg = true, } }, { -- doer, remoer, roer/corroer, soer match = "oer", forms = { pres_2s = "óis", pres_3s = "ói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() pres1_and_sub = {"o", GL_ALTVAR .. "oi"}, irreg = true, } }, { -- perder match = "perder", forms = { -- use 'perqu' because we're in a front environment; if we use 'perc', we'll get '#perço' -- we don't tag these forms GL_TYPE or PT_TYPE because both occur with both endings -ais/-ades pres1_and_sub = {"perd", "perqu"}, irreg = true, } }, { -- poder match = "poder", forms = { pres1_and_sub = {GL_TYPE .. "pod", PT_TYPE .. "poss"}, pret_conj = "irreg", pret = "pudé", pt_pret_1s = "pude", pt_pret_3s = "pôde", irreg = true, } }, { -- prazer, aprazer, comprazer, desprazer -- FIXME: comprazer also has regular preterite match = "prazer", forms = { pres_3s = "praz", pret_conj = "irreg", pret = "prouvé", pt_pret_1s = "prouve", pt_pret_3s = "prouve", only3sp = function(base, prefix) return prefix == "a" end, imp_2s = {GL_TYPE .. "praze", PT_TYPE .. "praz"}, irreg = true, } }, -- prover below, just below ver { -- requerer; must precede querer match = "requerer", forms = { pres_3s = "requer", pres1_and_sub = "requeir", imp_2s = {"requer"}, -- regular preterite, unlike [[querer]] irreg = true, } }, { -- querer, desquerer, malquerer match = "querer", forms = { pres_1s = "quero", pres_3s = "quer", pres1_and_sub = "queir", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = {GL_TYPE .. "quigé", PT_TYPE .. "quisé"}, pt_pret_1s = "quis", pt_pret_3s = "quis", irreg = true, } }, { match = "reaver", forms = { pres_1s = "reei", pres_2s = "reás", pres_3s = "reá", pres_3p = {GL_TYPE .. "ream", PT_TYPE .. "reão"}, pres1_and_sub = "reaj", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "reouvé", pt_pret_1s = "reouve", pt_pret_3s = "reouve", irreg = true, } }, { -- saber, ressaber match = "saber", forms = { pres_1s = "sei", pres1_and_sub = "saib", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "soubé", pt_pret_1s = "soube", pt_pret_3s = "soube", irreg = true, } }, { -- escrever/reescrever, circunscrever, descrever/redescrever, inscrever, prescrever, proscrever, subscrever, -- transcrever, others? match = "screver", forms = { pp = "scrito", irreg = true, } }, { -- suspender match = "suspender", forms = {short_pp = "suspenso"} }, { match = "^ser", forms = { pres_1s = "sou", pres_2s = "és", pres_3s = "é", pres_1p = "somos", pres_2p = {GL_TYPE .. "sodes", PT_TYPE .. "sois"}, pres_3p = {GL_TYPE .. "som", PT_TYPE .. "são"}, pres1_and_sub = "sej", -- only for subjunctive as we override pres_1s full_impf = "ér", pret_conj = "irreg", pret = "fô", pret_1s = {GL_TYPE .. "fum", PT_TYPE .. "fui"}, pret_3s = "foi", imp_2s = "sê", imp_2p = "sede", pp_inv = true, irreg = true, } }, { -- We want to match abster, conter, deter, etc. but not abater, cometer, etc. No way to avoid listing each verb. match = match_against_verbs("ter", {"abs", "^a", "con", "de", "entre", "man", "ob", "^re", "sus", "^"}), forms = { -- FIXME, Estraviz says 'contens', 'detens' etc. but that may be a typo pres_2s = function(base, prefix) return {GL_TYPE .. "tés", PT_TYPE .. (prefix == "" and "tens" or "téns")} end, -- FIXME, Estraviz says 'contem', 'detem' etc. but that may be a typo pres_3s = function(base, prefix) return prefix == "" and "tem" or "tém" end, pres_2p = "tendes", pres_3p = {GL_TYPE .. "tenhem", PT_TYPE .. "têm", GL_ALTVAR .. "tém"}, pres1_and_sub = "tenh", full_impf = "tính", pret_conj = "irreg", pret = "tivé", pt_pret_1s = "tive", pt_pret_3s = "teve", irreg = true, } }, { match = "trazer", forms = { -- use 'tragu' because we're in a front environment; if we use 'trag', we'll get '#trajo' pres1_and_sub = "tragu", pres_3s = "traz", pret_conj = "irreg", pret = "trouxé", pt_pret_1s = "trouxe", pt_pret_3s = "trouxe", fut = "trar", irreg = true, } }, { match = "traguer", forms = { pret_conj = "irreg", pret = "trouxé", pt_pret_1s = "trouxe", pt_pret_3s = "trouxe", irreg = true, } }, { -- valer, desvaler, equivaler match = "valer", forms = { pres1_and_sub = "valh", irreg = true, } }, { -- We want to match antever etc. but not absolver, atrever etc. No way to avoid listing each verb. match = match_against_verbs("ver", {"ante", "entre", "pre", "^re", "^"}), forms = { pres_2s = "vês", pres_3s = "vê", pres_2p = "vedes", pres_3p = function(base, prefix) return {GL_TYPE .. (prefix == "" and "vem" or "vêm"), PT_TYPE .. "veem"} end, pres1_and_sub = "vej", pret_conj = "irreg", pret = "ví", pret_1s = {GL_TYPE .. "vim", PT_TYPE .. "vi"}, pret_3s = "viu", pp = "visto", irreg = true, } }, { -- [[prover]] and [[desprover]] have regular preterite and past participle match = "prover", forms = { pres_2s = "provês", pres_3s = "provê", -- FIXME: Estraviz says 'provem' but that may be a typo pres_2p = "provedes", pres_3p = {GL_TYPE .. "provêm", PT_TYPE .. "proveem"}, pres1_and_sub = "provej", irreg = true, } }, { -- volver, devolver, envolver, revolver, etc. match = "volver", forms = {short_pp = "volto"}, }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- abolir: use <u-o> -- barrir: use <only3sp> -- carpir, colorir, demolir: use <no_pres1_and_sub> -- descolorir: use <no_pres1_and_sub> -- delir, espavorir, falir, florir, remir, renhir: use <no_pres_stressed> -- empedernir: use <i-e> -- transir: regular -- aspergir, despir, flectir/deflectir/genuflectir/genufletir/reflectir/refletir, mentir/desmentir, -- sentir/assentir/consentir/dissentir/pressentir/ressentir, convergir/divergir, aderir/adherir, -- ferir/auferir/conferir/deferir/desferir/diferir/differir/inferir/interferir/preferir/proferir/referir/transferir, -- gerir/digerir/ingerir/sugerir, preterir, competir/repetir, servir, advertir/animadvertir/divertir, -- vestir/investir/revestir/travestir, seguir/conseguir/desconseguir/desseguir/perseguir/prosseguir: use <i-e> -- inerir: use <i-e> -- compelir/expelir/impelir/repelir: use <i-e> -- dormir, engolir, tossir, subir, acudir/sacudir, fugir, sumir/consumir (NOT assumir/presumir/resumir): use <u-o> -- polir/repolir: use <u> -- premir: use <i> -- extorquir/retorquir: <u-o,u> -- agredir/progredir/regredir/transgredir: use <i> -- denegrir, prevenir: use <i> -- eclodir: use <u-o> -- cerzir: use <i-e> -- proibir/coibir: use <í> -- reunir: use <ú> -- parir/malparir: use <no_pres_stressed> -- explodir/implodir: use <u-o> -- -- -cir alternations (aducir, ressarcir): automatically handled in combine_stem_ending() -- -gir alternations (agir, dirigir, exigir): automatically handled in combine_stem_ending() -- -guir alternations (e.g. conseguir): automatically handled in combine_stem_ending() -- -quir alternations (e.g. extorquir): automatically handled in combine_stem_ending() { -- verbs in -air (cair, sair, trair and derivatives: decair/descair/recair, sobres(s)air, -- abstrair/atrair/contrair/distrair/extrair/protrair/retrair/subtrair) match = "air", forms = { pres1_and_sub = "ai", pres_2s = "ais", pres_3s = "ai", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- abrir/desabrir/reabrir match = "abrir", forms = {pp = "aberto"} }, { -- cobrir/descobrir/encobrir/recobrir/redescobrir match = "cobrir", forms = {vowel_alt = "u-o", pp = "coberto"} }, { -- conduzir, produzir, reduzir, traduzir, etc.; luzir, reluzir, tremeluzir match = "uzir", forms = { pres_3s = "uz", -- FIXME, is this correct? imp_2s = "uze", irreg = true, } }, { -- pedir, desimpedir, despedir, espedir, expedir, impedir -- medir -- comedir match = match_against_verbs("edir", {"m", "p"}), forms = { pres1_and_sub = {GL_TYPE .. "id", PT_TYPE .. "eç"}, irreg = true, } }, { -- frigir match = "frigir", forms = {vowel_alt = "i-e", short_pp = "frito"}, }, { -- inserir match = "inserir", forms = {vowel_alt = "i-e"}, }, { -- ir match = "^ir", forms = { pres_1s = "vou", pres_2s = {GL_TYPE .. "vás", PT_TYPE .. "vais"}, pres_3s = "vai", pres_1p = {GL_TYPE .. "imos", PT_TYPE .. "vamos"}, pres_2p = "ides", pres_3p = {GL_TYPE .. "vam", PT_TYPE .. "vão"}, pres_sub_1s = {GL_TYPE .. "vaia", PT_TYPE .. "vá"}, pres_sub_2s = {GL_TYPE .. "vaias", PT_TYPE .. "vás"}, pres_sub_3s = {GL_TYPE .. "vaia", PT_TYPE .. "vá"}, pres_sub_1p = {GL_TYPE .. "vaiamos", PT_TYPE .. "vamos"}, pres_sub_2p = {GL_TYPE .. "vaiades", PT_TYPE .. "vades"}, pres_sub_3p = {GL_TYPE .. "vaiam", PT_TYPE .. "vão"}, pret_conj = "irreg", pret = "fô", pret_1s = {GL_TYPE .. "fum", PT_TYPE .. "fui"}, pret_3s = "foi", irreg = true, } }, { -- emergir, imergir, submergir match = "mergir", forms = {vowel_alt = "i-e", short_pp = "merso"}, }, { match = "ouvir", forms = { pres1_and_sub = {"ouç", ALTVAR .. "oiç"}, irreg = true, } }, { -- exprimir, imprimir, comprimir (but not descomprimir per Priberam), deprimir, oprimir/opprimir (but not reprimir, -- suprimir/supprimir per Priberam) match = match_against_verbs("primir", {"^com", "ex", "im", "de", "^o", "op"}), forms = {short_pp = "presso"} }, { -- rir, sorrir match = match_against_verbs("rir", {"^", "sor"}), forms = { pres_2s = "ris", pres_3s = "ri", pres_2p = "rides", pres_3p = {GL_TYPE .. "rim", PT_TYPE .. "riem"}, pres1_and_sub = "ri", irreg = true, } }, { -- distinguir, extinguir match = "tinguir", forms = { short_pp = "tinto", -- gu/g alternations handled in combine_stem_ending() } }, { -- verbs in -truir (construir, destruir, reconstruir) but not obstruir/desobstruir, instruir, which are handled -- by the default -uir handler below match = match_against_verbs("struir", {"con", "de"}), forms = { pres_2s = {"stróis", ALTVAR .. "struis"}, pres_3s = {"strói", ALTVAR .. "strui"}, pres_3p = {"stroem", ALTVAR .. "struem"}, -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- remaining verbs in -uir (concluir/excluir/incluir/concruir/concruyr, abluir/diluir, afluir/fluir/influir, -- aluir, anuir, atribuir/contribuir/distribuir/redistribuir/retribuir/substituir, coevoluir/evoluir, -- constituir/destituir/instituir/reconstituir/restituir, derruir, diminuir, estatuir, fruir/usufruir, imbuir, -- imiscuir, poluir, possuir, puir, pruir, ruir -- FIXME: old module lists short pp incluso for incluir that can't be verified, ask about this -- FIXME: handle -uyr verbs? match = function(verb) -- Don't match -guir verbs (e.g. [[seguir]], [[conseguir]]) or -quir verbs (e.g. [[extorquir]]) if verb:find("guir$") or verb:find("quir$") then return nil else return match_against_verbs("uir", {""})(verb) end end, forms = { pres_2s = "uis", pres_3s = "ui", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- We want to match advir, convir, devir, etc. but not ouvir, servir, etc. No way to avoid listing each verb. match = match_against_verbs("vir", {"ad", "^a", "con", "contra", "de", "^desa", "inter", "pro", "^re", "sobre", "^"}), forms = { -- FIXME, Estraviz says 'convens', 'devens' etc. but that may be a typo pres_2s = function(base, prefix) return {GL_TYPE .. "vés", PT_TYPE .. (prefix == "" and "vens" or "véns")} end, -- FIXME, Estraviz says 'convem', 'devem' etc. but that may be a typo pres_3s = function(base, prefix) return prefix == "" and "vem" or "vém" end, pres_2p = "vindes", pres_3p = {GL_TYPE .. "venhem", PT_TYPE .. "vêm", GL_ALTVAR .. "vém"}, pres1_and_sub = "venh", full_impf = "vính", pret_conj = "irreg", pret = {GL_TYPE .. "vinhé", PT_TYPE .. "vié"}, pret_1s = "vim", pret_3s = {GL_TYPE .. "véu", PT_TYPE .. "veio"}, pp = "vindo", irreg = true, } }, -------------------------------------------------------------------------------------------- -- misc -- -------------------------------------------------------------------------------------------- { -- pôr, antepor, apor, compor/decompor/descompor, contrapor, depor, dispor, expor, impor, interpor, justapor, -- opor, pospor, propor, repor, sobrepor, supor/pressupor, transpor, decompor, others? match = "p[oô]r", forms = { pres1_and_sub = "ponh", pres_2s = {GL_TYPE .. "pós", PT_TYPE .. "pões", GL_ALTVAR .. "pons"}, pres_3s = {GL_TYPE .. "pom", PT_TYPE .. "põe"}, pres_1p = "pomos", pres_2p = "pondes", pres_3p = {GL_TYPE .. "ponhem", PT_TYPE .. "põem", GL_ALTVAR .. "póm"}, full_impf = "púnh", pret_conj = "irreg", pret = {GL_TYPE .. "pugé", PT_TYPE .. "pusé"}, pt_pret_1s = "pus", pt_pret_3s = "pôs", pers_inf = "po", gerund = "pondo", pp = "posto", irreg = true, } }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end -- Apply vowel alternations to stem. local function apply_vowel_alternations(stem, alternations) local alternation_stems = {} local saw_pres1_and_sub = false local saw_pres_stressed = false -- Process alternations other than +. for _, altobj in ipairs(alternations) do local alt = altobj.form local pres1_and_sub, pres_stressed, err -- Treat final -gu, -qu as a consonant, so the previous vowel can alternate (e.g. conseguir -> consigo). -- This means a verb in -guar can't have a u-ú alternation but I don't think there are any verbs like that. stem = rsub(stem, "([gq])u$", "%1" .. TEMPC1) if alt == "+" then -- do nothing yet elseif alt == "ei" then local before_last_vowel = rmatch(stem, "^(.*)i$") if not before_last_vowel then err = "stem should end in -i" else pres1_and_sub = nil pres_stressed = before_last_vowel .. "ei" end else local before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-[ui])$") if not before_last_vowel then before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-)$") end if alt == "i-e" then if last_vowel == "e" or last_vowel == "i" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel if last_vowel == "i" then pres_stressed = before_last_vowel .. "e" .. after_last_vowel end else err = "should have -e- or -i- as the last vowel" end elseif alt == "i" then if last_vowel == "e" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -e- as the last vowel" end elseif alt == "u-o" then if last_vowel == "o" or last_vowel == "u" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel if last_vowel == "u" then pres_stressed = before_last_vowel .. "o" .. after_last_vowel end else err = "should have -o- or -u- as the last vowel" end elseif alt == "u" then if last_vowel == "o" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -o- as the last vowel" end elseif alt == "í" then if last_vowel == "i" then pres_stressed = before_last_vowel .. "í" .. after_last_vowel else err = "should have -i- as the last vowel" end elseif alt == "ú" then if last_vowel == "u" then pres_stressed = before_last_vowel .. "ú" .. after_last_vowel else err = "should have -u- as the last vowel" end else error("Internal error: Unrecognized vowel alternation '" .. alt .. "'") end end if pres1_and_sub then pres1_and_sub = {form = pres1_and_sub:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres1_and_sub = true end if pres_stressed then pres_stressed = {form = pres_stressed:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres_stressed = true end table.insert(alternation_stems, { altobj = altobj, pres1_and_sub = pres1_and_sub, pres_stressed = pres_stressed, err = err }) end -- Now do +. We check to see which stems are used by other alternations and specify those so any footnotes are -- properly attached. for _, alternation_stem in ipairs(alternation_stems) do if alternation_stem.altobj.form == "+" then local stemobj = {form = stem, footnotes = alternation_stem.altobj.footnotes} alternation_stem.pres1_and_sub = saw_pres1_and_sub and stemobj or nil alternation_stem.pres_stressed = saw_pres_stressed and stemobj or nil end end return alternation_stems end -- Add the `stem` to the `ending` for the given `slot` and apply any phonetic modifications. -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, slot, prefix, stem, ending, dont_include_prefix) -- If the stem begins with an acute accent, this is a signal to move the accent onto the last vowel of the prefix. -- Cf. míngua of minguar. if stem:find("^" .. AC) then stem = rsub(stem, "^" .. AC, "") if dont_include_prefix then error("Internal error: Can't handle acute accent at beginning of stem if dont_include_prefix is given") end prefix = rsub(prefix, "([aeiouyAEIOUY])([^aeiouyAEIOUY]*)$", "%1" .. AC .. "%2") end -- Use the full stem for checking for -gui ending and such, because 'stem' is just 'u' for [[arguir]], -- [[delinquir]]. local full_stem = prefix .. stem -- Include the prefix in the stem unless dont_include_prefix is given (used for the past participle stem). if not dont_include_prefix then stem = full_stem end -- If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter -- of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent -- on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems -- ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. if ending:find("^%*%*") then ending = rsub(ending, "^%*%*", "") if rfind(full_stem, "[gq]uí$") or not rfind(full_stem, V .. "[íú]$") then stem = com.remove_final_accent(stem) end end -- If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem. -- E.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. if ending:find("^%*") then ending = rsub(ending, "^%*", "") stem = com.remove_final_accent(stem) end -- If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent -- the two merging into a diphthong: -- * cair -> -- * pres: caímos, caís; -- * impf: all forms (caí-); -- * pret: caí (but not caim), caíste (but not caiu), caímos, caístes, caíram; -- * plup: all forms (caír-); -- * impf_sub: all forms (caíss-); -- * fut_sub: caíres, caírem (but not cair, cairmos, cairdes) -- * pp: caído (but not gerund caindo) -- * atribuir, other verbs in -uir -> same pattern as for cair etc. -- * roer -> -- * pret: roí (but not roim) -- * impf: all forms (roí-) -- * pp: roído -- Don't let variant codes derail the following checks. Note that variant codes are properly added to the end of -- the ending, so checks against the beginning of the ending work even in their presence, but not checks against -- the full ending. local cleaned_ending = export.remove_variant_codes(ending) if cleaned_ending:find("^i") and full_stem:find("[aeiou]$") and not full_stem:find("[gq]u$") and not cleaned_ending:find("^i[rum]$") and cleaned_ending ~= "indo" and not cleaned_ending:find("^ir[md]") then ending = ending:gsub("^i", "í") end -- Spelling changes in the stem; it depends on whether the stem given is the pre-front-vowel or -- pre-back-vowel variant, as indicated by `frontback`. We want these front-back spelling changes to happen -- between stem and ending, not between prefix and stem; the prefix may not have the same "front/backness" -- as the stem. local is_front = rfind(ending, "^[eiéíê]") if base.frontback == "front" and not is_front then stem = stem:gsub("c$", "ç") -- conhecer -> conheço, vencer -> venço, descer -> desço stem = stem:gsub("g$", "j") -- proteger -> protejo, fugir -> fujo stem = stem:gsub("gu$", "g") -- distinguir -> distingo, conseguir -> consigo stem = stem:gsub("qu$", "c") -- extorquir -> exturco stem = stem:gsub("([gq])ü$", "%1u") -- argüir (superseded) -> arguo, delinqüir (superseded) -> delinquo elseif base.frontback == "back" and is_front then -- The following changes are all superseded so we don't do them: -- averiguar -> averigüei, minguar -> mingüei; antiquar -> antiqüei, apropinquar -> apropinqüei -- stem = stem:gsub("([gq])u$", "%1ü") stem = stem:gsub("g$", "gu") -- cargar -> carguei, apagar -> apaguei stem = stem:gsub("c$", "qu") -- marcar -> marquei stem = stem:gsub("ç$", "c") -- começar -> comecei -- j does not go to g here; desejar -> deseje not #desege end local retval = stem .. ending if retval:find(GL_TYPE) and retval:find(PT_TYPE) or retval:find(GL_ONLY_TYPE) and not retval:find(GL_TYPE) then -- Reject clashes in "Galician"-type and "Portuguese"-type forms, e.g. '#vós dixéreis' or '#vós dissérades'. return nil end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, slot, base.prefix, stem, ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function construct_stems(base, vowel_alt) local stems = {} stems.pres_unstressed = base.stems.pres_unstressed or base.inf_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or base.stems.pres_stressed or vowel_alt.pres_stressed or base.inf_stem stems.pres1_and_sub = -- If no_pres_stressed given, the entire subjunctive is missing. base.no_pres_stressed and {} or -- If no_pres1_and_sub given, pres1 and entire subjunctive are missing. base.no_pres1_and_sub and {} or base.stems.pres1_and_sub or vowel_alt.pres1_and_sub or nil stems.pres1 = base.stems.pres1 or stems.pres1_and_sub or stems.pres_stressed stems.impf = base.stems.impf or base.inf_stem stems.full_impf = base.stems.full_impf stems.pret_base = base.stems.pret_base or base.inf_stem stems.pret_conj = base.stems.pret_conj or base.conj stems.pret = base.stems.pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret_base), function(form) return form .. base.conj_vowel end) stems.gl_short_pret = base.stems.gl_short_pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret), function(form) return rsub(form, com.V .. "$", "") end) stems.pt_pret_1s = base.stems.pt_pret_1s stems.pt_pret_3s = base.stems.pt_pret_3s stems.fut = base.stems.fut or base.inf_stem .. base.conj stems.cond = base.stems.cond or stems.fut stems.pres_sub_stressed = base.stems.pres_sub_stressed or stems.pres1 stems.pres_sub_unstressed = base.stems.pres_sub_unstressed or stems.pres1_and_sub or stems.pres_unstressed stems.sub_conj = base.stems.sub_conj or base.conj stems.plup = base.stems.plup or stems.pret stems.impf_sub = base.stems.impf_sub or stems.pret stems.fut_sub = base.stems.fut_sub or stems.pret stems.pers_inf = base.stems.pers_inf or base.inf_stem .. base.conj_vowel stems.pp = base.stems.pp or base.conj == "ar" and combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ado", "dont include prefix") or -- use combine_stem_ending esp. so we get roído, caído, etc. combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ido", "dont include prefix") stems.pp_ms = stems.pp local function masc_to_fem(form) if rfind(form, "o$") then return rsub(form, "o$", "a") else return form end end stems.pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.pp_ms), masc_to_fem) if base.stems.short_pp then stems.short_pp_ms = base.stems.short_pp stems.short_pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.short_pp_ms), masc_to_fem) end base.this_stems = stems end local function add_present_indic(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end local s2, s3, p1, p2, p3 if base.conj == "ar" then s2, s3, p1, p2, p3 = "as", "a", "amos", {"ades" .. GL_TYPE, "ais" .. PT_TYPE}, "am" elseif base.conj == "er" or base.conj == "or" then -- verbs in -por have the present overridden s2, s3, p1, p2, p3 = "es", "e", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, "em" elseif base.conj == "ir" then s2, s3, p1, p2, p3 = "es", "e", "imos", {"ides" .. GL_TYPE, "is" .. PT_TYPE}, "em" else error("Internal error: Unrecognized conjugation " .. base.conj) end addit("1s", stems.pres1, "o") addit("2s", stems.pres_stressed, s2) addit("3s", stems.pres_stressed, s3) addit("1p", stems.pres_unstressed, p1) addit("2p", stems.pres_unstressed, p2) addit("3p", stems.pres_stressed, p3) end local function add_present_subj(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end local s1, s2, s3, p1, p2, p3 if stems.sub_conj == "ar" then s1, s2, s3, p1, p2, p3 = "e", "es", "e", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, "em" else s1, s2, s3, p1, p2, p3 = "a", "as", "a", "amos", {"ades" .. GL_TYPE, "ais" .. PT_TYPE}, "am" end addit("1s", stems.pres_sub_stressed, s1) addit("2s", stems.pres_sub_stressed, s2) addit("3s", stems.pres_sub_stressed, s3) addit("1p", stems.pres_sub_unstressed, p1) addit("2p", stems.pres_sub_unstressed, p2) addit("3p", stems.pres_sub_stressed, p3) end local function add_finite_non_present(base) local stems = base.this_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect stem. if stems.full_impf then add_tense("impf", stems.full_impf, "*a", "*as", "*a", "amos", {"ades" .. GL_TYPE, "eis" .. PT_TYPE, "ais" .. GL_ALTVAR}, "*am") elseif base.conj == "ar" then add_tense("impf", stems.impf, "ava", "avas", "ava", "ávamos", {"ávades" .. GL_TYPE, "áveis" .. PT_TYPE, "ávais" .. GL_ALTVAR}, "avam") else add_tense("impf", stems.impf, "ia", "ias", "ia", "íamos", {"íades" .. GL_TYPE, "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR}, "iam") end -- * at the beginning of the ending means to remove a final accent from the preterite stem. if stems.pret_conj == "irreg" then add_tense("pret", stems.gl_short_pret, "em" .. GL_TYPE, nil, "o" .. GL_TYPE) add_tense("pret", stems.pret, nil, {"*ste", "*che" .. GL_ALTVAR}, nil, "*mos", "*stes", {"rom" .. GL_TYPE, "*ram" .. PT_TYPE}) add_tense("pret", stems.pt_pret_1s, PT_TYPE) add_tense("pret", stems.pt_pret_3s, nil, nil, PT_TYPE) elseif stems.pret_conj == "ar" then add_tense("pret", stems.pret_base, "ei", {"aste", "ache" .. GL_ALTVAR}, "ou", "amos", "astes", {"árom" .. GL_TYPE, "aram" .. PT_TYPE}) elseif stems.pret_conj == "er" then add_tense("pret", stems.pret_base, {"im" .. GL_TYPE, "i" .. PT_TYPE}, {"este", "eche" .. GL_ALTVAR}, "eu", "emos", "estes", {"êrom" .. GL_TYPE, "eram" .. PT_TYPE}) else add_tense("pret", stems.pret_base, {"im" .. GL_TYPE, "i" .. PT_TYPE}, {"iste", "iche" .. GL_ALTVAR}, "iu", "imos", "istes", {"írom" .. GL_TYPE, "iram" .. PT_TYPE}) end -- * at the beginning of the ending means to remove a final accent from the stem. -- ** is similar but is "conditional" on a consonant preceding the final vowel. add_tense("plup", stems.plup, "**ra", "**ras", "**ra", "ramos", {"rades" .. GL_TYPE, "reis" .. PT_TYPE, "rais" .. GL_ALTVAR}, "**ram") add_tense("impf_sub", stems.impf_sub, "**sse", "**sses", "**sse", "ssemos", {"ssedes" .. GL_TYPE, "sseis" .. PT_TYPE}, "**ssem") add_tense("fut_sub", stems.fut_sub, "*r", "**res", "*r", "*rmos", "*rdes", "**rem") if base.refl then local mark = TEMP_MESOCLITIC_INSERTION_POINT add_tense("fut", stems.fut, {"ei" .. GL_TYPE, mark .. "ei" .. PT_TYPE}, {"ás" .. GL_TYPE, mark .. "ás" .. PT_TYPE}, {"á" .. GL_TYPE, mark .. "á" .. PT_TYPE}, {"emos" .. GL_TYPE, mark .. "emos" .. PT_TYPE}, {"edes" .. GL_TYPE, mark .. "eis" .. PT_TYPE}, {"ám" .. GL_TYPE, mark .. "ão" .. PT_TYPE} ) add_tense("cond", stems.cond, {"ia" .. GL_TYPE, mark .. "ia" .. PT_TYPE}, {"ias" .. GL_TYPE, mark .. "ias" .. PT_TYPE}, {"ia" .. GL_TYPE, mark .. "ia" .. PT_TYPE}, {"íamos" .. GL_TYPE, mark .. "íamos" .. PT_TYPE}, -- FIXME, is GL_ALTVAR correct for the mesoclitic variant of -íais? {"íades" .. GL_TYPE, mark .. "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR, mark .. "íais" .. GL_ALTVAR}, {"iam" .. GL_TYPE, mark .. "iam" .. PT_TYPE}) else -- Don't insert forms with the mesoclitic insertion point to avoid duplication in non-reflexive verbs. add_tense("fut", stems.fut, "ei", "ás", "á", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, {"ám" .. GL_TYPE, "ão" .. PT_TYPE}) add_tense("cond", stems.cond, "ia", "ias", "ia", "íamos", -- FIXME, is GL_ALTVAR correct for the mesoclitic variant of -íais? {"íades" .. GL_TYPE, "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR}, "iam") end -- Different stems for different parts of the personal infinitive to correctly handle forms of [[sair]] and [[pôr]]. add_tense("pers_inf", base.non_prefixed_verb, "", nil, "") add_tense("pers_inf", stems.pers_inf, nil, "**res", nil, "*rmos", "*rdes", "**rem") end local function add_non_finite_forms(base) local stems = base.this_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below for -- "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.verb}) end end -- verbs in -por have the gerund overridden local ger_ending = base.conj == "ar" and "ando" or base.conj == "er" and "endo" or "indo" addit("gerund", stems.pres_unstressed, ger_ending) -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the same -- form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate clitic -- pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic pronouns won't be -- added, and {{gl-reinteg-verb form of}} will wrongly consider all these combinations as possible inflections of the bare -- gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, stems.pres_unstressed, ger_ending) end end -- Skip the long/short past participle footnotes if called from {{gl-reinteg-verb}} so they don't show in the headword. local long_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-reinteg-verb" and {long_pp_footnote} or nil addit("pp_ms", stems.pp_ms, "", long_pp_footnotes) if not base.pp_inv then addit("pp_fs", stems.pp_fs, "", long_pp_footnotes) addit("pp_mp", stems.pp_ms, "s", long_pp_footnotes) addit("pp_fp", stems.pp_fs, "s", long_pp_footnotes) end if stems.short_pp_ms then local short_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-reinteg-verb" and {short_pp_footnote} or nil addit("short_pp_ms", stems.short_pp_ms, "", short_pp_footnotes) if not base.pp_inv then addit("short_pp_fs", stems.short_pp_fs, "", short_pp_footnotes) addit("short_pp_mp", stems.short_pp_ms, "s", short_pp_footnotes) addit("short_pp_fp", stems.short_pp_fs, "s", short_pp_footnotes) end end end local function copy_forms_to_imperatives(base) -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) if not skip_slot(base, "imp_2p") then -- Copy pres2p to imperative 2p minus -s since they are almost always the same. -- But not if there's an override, to avoid possibly throwing an error. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) local form_no_s, var_codes = rmatch(form, "^(.*)s(" .. var_code_c .. "*)$") if not form_no_s then error("Can't derive second-person plural imperative from second-person plural present indicative " .. "because form '" .. form .. "' doesn't end in -s") end return form_no_s .. var_codes end)) end -- Copy subjunctives to imperatives, unless there's an override for the given slot (as with the imp_1p of [[ir]]). for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = "[[" .. clitic .. "]]" .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Add the appropriate clitic pronouns in `clitics` to the forms in `base_slot`. `store_cliticized_form` is a function -- of three arguments (clitic, formobj, cliticized_form) and should store the cliticized form for the specified clitic -- and form object. local function suffix_clitic_to_forms(base, base_slot, clitics, store_cliticized_form) if not base.forms[base_slot] then -- This can happen, e.g. in only3s/only3sp/only3p verbs. return end local autolink = not base.alternant_multiword_spec.args.noautolinkverb for _, formobj in ipairs(base.forms[base_slot]) do for _, clitic in ipairs(clitics) do local cliticized_form if formobj.form:find(TEMP_MESOCLITIC_INSERTION_POINT) then -- mesoclisis in future and conditional local infinitive, suffix = rmatch(formobj.form, "^(.*)" .. TEMP_MESOCLITIC_INSERTION_POINT .. "(.*)$") if not infinitive then error("Internal error: Can't find mesoclitic insertion point in slot '" .. base_slot .. "', form '" .. formobj.form .. "'") end local full_form = infinitive .. suffix if autolink and not infinitive:find("%[%[") then infinitive = "[[" .. infinitive .. "]]" end cliticized_form = autolink and infinitive .. "-[[" .. clitic .. "]]-[[" .. full_form .. "|" .. suffix .. "]]" or infinitive .. "-" .. clitic .. "-" .. suffix else local clitic_suffix = autolink and "-[[" .. clitic .. "]]" or "-" .. clitic local form_needs_link = autolink and not formobj.form:find("%[%[") if base_slot:find("1p$") then -- Final -s disappears: arrependíamos + nos -> arrependíamo-nos, etc. cliticized_form = formobj.form:gsub("s$", "") if form_needs_link then cliticized_form = "[[" .. formobj.form .. "|" .. cliticized_form .. "]]" end else cliticized_form = formobj.form if form_needs_link then cliticized_form = "[[" .. cliticized_form .. "]]" end end cliticized_form = cliticized_form .. clitic_suffix end store_cliticized_form(clitic, formobj, cliticized_form) end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local clitic if not do_reflexive then clitic = base.clitic elseif slot:find("[123]") then local persnum = slot:match("^.*_(.-)$") clitic = person_number_to_reflexive_pronoun[persnum] else clitic = "se" end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = not slot:find("_sub") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{gl-reinteg-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "gl-reinteg-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, clitic, " ... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then suffix_clitic_to_forms(base, slot, {clitic}, function(clitic, formobj, cliticized_form) formobj.form = cliticized_form end ) end elseif not do_joined then -- Add clitic as separate word before all other forms. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, clitic, " ", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{gl-reinteg-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) -- Copy subjunctives to negative imperatives, preceded by "nom". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "nom " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[nom]] " .. form else return "[[nom]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end -- Remove special characters added to future and conditional forms to indicate mesoclitic insertion points. local function remove_mesoclitic_insertion_points(base) for slot, forms in pairs(base.forms) do if slot:find("^fut_") or slot:find("^cond_") then for _, form in ipairs(forms) do form.form = form.form:gsub(TEMP_MESOCLITIC_INSERTION_POINT, "") end end end end -- If called from {{gl-reinteg-verb}}, remove less-recommended variants; otherwise add a footnote indicating they are -- less recommended, and sort them last. local function process_altvar_forms(base) for slot, forms in pairs(base.forms) do -- As an optimization, check if there are any less-recommended forms and don't do anything if not. local saw_altvar = false for _, form in ipairs(forms) do if form.form:find(ALTVAR) then saw_altvar = true break end end if saw_altvar then if base.alternant_multiword_spec.source_template == "gl-reinteg-verb" then base.forms[slot] = iut.flatmap_forms(base.forms[slot], function(form) if form:find(ALTVAR) then return {} else return {form} end end) else local existing_forms = base.forms[slot] base.forms[slot] = {} for _, formobj in ipairs(existing_forms) do if not formobj.form:find(ALTVAR) then iut.insert_form(base.forms, slot, formobj) end end for _, formobj in ipairs(existing_forms) do if formobj.form:find(ALTVAR) then formobj.footnotes = iut.combine_footnotes(formobj.footnotes, {"[less recommended]"}) iut.insert_form(base.forms, slot, formobj) end end end end end end local function conjugate_verb(base) for _, vowel_alt in ipairs(base.vowel_alt_stems) do construct_stems(base, vowel_alt) add_present_indic(base) add_present_subj(base) end add_finite_non_present(base) add_non_finite_forms(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). copy_forms_to_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepende-te]] but [[nom]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end remove_mesoclitic_insertion_points(base) process_altvar_forms(base) end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = iut.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = iut.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif rfind(first_element, ":") then local colon_separated_groups = iut.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) end else local comma_separated_groups = iut.split_alternating_runs(dot_separated_group, "%s*,%s*") for j = 1, #comma_separated_groups do local alt = comma_separated_groups[j][1] if not vowel_alternants[alt] then if #comma_separated_groups == 1 then parse_err("Unrecognized spec or vowel alternant '" .. alt .. "'") else parse_err("Unrecognized vowel alternant '" .. alt .. "'") end end if base.vowel_alt then for _, existing_alt in ipairs(base.vowel_alt) do if existing_alt.form == alt then parse_err("Vowel alternant '" .. alt .. "' specified twice") end end else base.vowel_alt = {} end table.insert(base.vowel_alt, {form = alt, footnotes = fetch_footnotes(comma_separated_groups[j])}) end end end return base end -- Reconstruct the overall verb spec from the output of iut.parse_inflected_text(), so we can use it in -- [[Module:accel/gl]]. function export.reconstruct_verb_spec(alternant_multiword_spec) local parts = {} for _, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do table.insert(parts, alternant_or_word_spec.user_specified_before_text) if alternant_or_word_spec.alternants then table.insert(parts, "((") for i, multiword_spec in ipairs(alternant_or_word_spec.alternants) do if i > 1 then table.insert(parts, ",") end for _, word_spec in ipairs(multiword_spec.word_specs) do table.insert(parts, word_spec.user_specified_before_text) table.insert(parts, word_spec.user_specified_lemma) table.insert(parts, word_spec.angle_bracket_spec) end table.insert(parts, multiword_spec.user_specified_post_text) end table.insert(parts, "))") else table.insert(parts, alternant_or_word_spec.user_specified_lemma) table.insert(parts, alternant_or_word_spec.angle_bracket_spec) end end table.insert(parts, alternant_multiword_spec.user_specified_post_text) -- As a special case, if we see e.g. "amar<>", remove the <>. Don't do this if there are spaces or alternants. local retval = table.concat(parts) if not retval:find(" ") and not retval:find("%(%(") then local retval_no_angle_brackets = retval:match("^(.*)<>$") if retval_no_angle_brackets then return retval_no_angle_brackets end end return retval end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then for _, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do alternant_or_word_spec.user_specified_before_text = alternant_or_word_spec.before_text alternant_or_word_spec.before_text = com.add_links(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 word_spec.user_specified_before_text = word_spec.before_text word_spec.before_text = com.add_links(word_spec.before_text) end multiword_spec.user_specified_post_text = multiword_spec.post_text multiword_spec.post_text = com.add_links(multiword_spec.post_text) end end end alternant_multiword_spec.user_specified_post_text = alternant_multiword_spec.post_text alternant_multiword_spec.post_text = com.add_links(alternant_multiword_spec.post_text) end -- (2) Remove any links from the lemma, but remember the original form -- so we can use it below in the 'lemma_linked' form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb and reflexive pronoun. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve -- links in multiword lemmas and include links in non-lemma forms rather than allowing -- the entire form to be a link. linked_lemma = com.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} if not base.no_built_in then for _, built_in_conj in ipairs(built_in_conjugations) do if type(built_in_conj.match) == "function" then base.prefix, base.non_prefixed_verb = built_in_conj.match(base.verb) elseif built_in_conj.match:find("^%^") and rsub(built_in_conj.match, "^%^", "") == base.verb then -- begins with ^, for exact match, and matches base.prefix, base.non_prefixed_verb = "", base.verb else base.prefix, base.non_prefixed_verb = rmatch(base.verb, "^(.*)(" .. built_in_conj.match .. ")$") end if base.prefix then -- we found a built-in verb for stem, forms in pairs(built_in_conj.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.stems[stem] = forms end end break end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeioô]r)$") if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end base.inf_stem = inf_stem suffix = suffix == "ôr" and "or" or suffix base.conj = suffix base.conj_vowel = suffix == "ar" and "á" or suffix == "ir" and "í" or "ê" base.frontback = suffix == "ar" and "back" or "front" if base.stems.vowel_alt then -- built-in verb with specified vowel alternation if base.vowel_alt then error(base.verb .. " is a recognized built-in verb, and should not have vowel alternations specified with it") end base.vowel_alt = iut.convert_to_general_list_form(base.stems.vowel_alt) end -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.stems[indicator_flag] end -- Convert vowel alternation indicators into stems. local vowel_alt = base.vowel_alt or {{form = "+"}} base.vowel_alt_stems = apply_vowel_alternations(base.inf_stem, vowel_alt) for _, vowel_alt_stems in ipairs(base.vowel_alt_stems) do if vowel_alt_stems.err then error("To use '" .. vowel_alt_stems.altobj.form .. "', present stem '" .. base.prefix .. base.inf_stem .. "' " .. vowel_alt_stems.err) end end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:gl-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) alternant_multiword_spec.vowel_alt = {} iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end -- Vowel alternants. Do these after calling detect_indicator_spec() because the latter sets base.vowel_alt for -- built-in verbs. if base.vowel_alt then for _, altobj in ipairs(base.vowel_alt) do m_table.insertIfNot(alternant_multiword_spec.vowel_alt, altobj.form) end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Galician verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "Galician " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "gl-reinteg-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("verbs with red links in their inflection tables") must_break = true break end end end end if must_break then break end end end if(base.conj == "or") then insert_cat("verbs ending in -er") else insert_cat("verbs ending in -" .. base.conj) end if base.irreg then insert_ann("irreg", "irregular") insert_cat("irregular verbs") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "impersonal") insert_cat("impersonal verbs") elseif base.only3sp then insert_ann("defective", "third-person only") insert_cat("third-person-only verbs") elseif base.only3p then insert_ann("defective", "third-person plural only") insert_cat("third-person-plural-only verbs") elseif base.no_pres_stressed or base.no_pres1_and_sub then insert_ann("defective", "defective") insert_cat("defective verbs") else insert_ann("defective", "regular") end if base.stems.short_pp then insert_ann("short_pp", "irregular short past participle") insert_cat("verbs with irregular short past participle") else insert_ann("short_pp", "regular") end if base.clitic then insert_cat("verbs with lexical clitics") end if base.refl then insert_cat("reflexive verbs") end if base.e_ei_cat then insert_ann("vowel_alt", "''e'' may become ''ei'' when stressed") insert_cat("verbs with e becoming ei when stressed") elseif not base.vowel_alt then insert_ann("vowel_alt", "non-alternating") else for _, alt in ipairs(base.vowel_alt) do if alt.form == "+" then insert_ann("vowel_alt", "non-alternating") else insert_ann("vowel_alt", vowel_alternant_to_desc[alt.form]) insert_cat("verbs with " .. vowel_alternant_to_cat[alt.form]) end end end local cons_alt = base.stems.cons_alt if cons_alt == nil then if base.conj == "ar" then if base.inf_stem:find("ç$") then cons_alt = "c-ç" elseif base.inf_stem:find("c$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-gu" end else if base.no_pres_stressed or base.no_pres1_and_sub then cons_alt = nil -- no e.g. c-ç alternation in this case elseif base.inf_stem:find("c$") then cons_alt = "c-ç" elseif base.inf_stem:find("qu$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-j" elseif base.inf_stem:find("gu$") then cons_alt = "g-gu" end end end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat("verbs with " .. desc) else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.irreg = {} ann.short_pp = {} ann.defective = {} ann.vowel_alt = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local short_pp = table.concat(ann.short_pp, " or ") if short_pp ~= "" and short_pp ~= "regular" then table.insert(ann_parts, short_pp) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local vowel_alt = table.concat(ann.vowel_alt, " or ") if vowel_alt ~= "" and vowel_alt ~= "non-alternating" then table.insert(ann_parts, vowel_alt) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, "; ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() if alternant_multiword_spec.forms.short_pp_ms then alternant_multiword_spec.has_short_pp = true end local reconstructed_verb_spec = export.reconstruct_verb_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then if slot:find("^pp_") then accel_obj.form = slot elseif slot == "gerund" then accel_obj.form = "reinteg-gerund-" .. reconstructed_verb_spec else accel_obj.form = "reinteg-verb-form-" .. reconstructed_verb_spec end end return accel_obj end -- Italicize less-recommended forms. local function generate_link(slot, form, origentry, accel_obj) if origentry:find(ALTVAR) then origentry = rsub(origentry, ALTVAR, "") return m_links.full_link({lang = lang, term = origentry, tr = "-", accel = accel_obj}, "term") end end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, canonicalize = function(form) return export.remove_variant_codes(form, "keep altvar") end, generate_link = generate_link, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div style="width:100%;text-align:left;background:#d9ebff"> <div style="display:inline-block;text-align:left;padding-left:1em;padding-right:1em"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead" align=center>&nbsp; &nbsp; Reintegrated conjugation of {title} (See [[Appendix:Reintegrationism]])</div> <div class="NavContent" align="left"> {\op}| class="inflection-table" style="background:#F6F6F6; text-align: left; border: 1px solid #999999;" cellpadding="3" cellspacing="0" |- ! style="border: 1px solid #999999; background:#B0B0B0" rowspan="2" | ! style="border: 1px solid #999999; background:#D0D0D0" colspan="3" | เอกพจน์ ! style="border: 1px solid #999999; background:#D0D0D0" colspan="3" | พหูพจน์ |- ! style="border: 1px solid #999999; background:#D0D0D0; width:12.5%" | บุรุษที่หนึ่ง<br />(<<eu>>) ! style="border: 1px solid #999999; background:#D0D0D0; width:12.5%" | บุรุษที่สอง<br />(<<ti>> / <<tu>>) ! style="border: 1px solid #999999; background:#D0D0D0; width:12.5%" | บุรุษที่สาม<br />(<<ele>> / <<ela>> / <<você>>) ! style="border: 1px solid #999999; background:#D0D0D0; width:12.5%" | บุรุษที่หนึ่ง<br />(<<nós>>) ! style="border: 1px solid #999999; background:#D0D0D0; width:12.5%" | บุรุษที่สอง<br />(<<vós>>) ! style="border: 1px solid #999999; background:#D0D0D0; width:12.5%" | บุรุษที่สาม<br />(<<eles>> / <<elas>> / <<vocês>>) |- ! style="border: 1px solid #999999; background:#c498ff" colspan="7" | ''<span title="infinitivo">รูปกริยากลาง</span>'' |- ! style="border: 1px solid #999999; background:#a478df" | '''<span title="infinitivo impessoal">คำอบุรุษกริยา</span>''' | style="border: 1px solid #999999; vertical-align: top;" colspan="6" | {infinitive} |- ! style="border: 1px solid #999999; background:#a478df" | '''<span title="infinitivo flexionado">คำบุรุษกริยา</span>''' | style="border: 1px solid #999999; vertical-align: top;" | {pers_inf_1s} | style="border: 1px solid #999999; vertical-align: top;" | {pers_inf_2s} | style="border: 1px solid #999999; vertical-align: top;" | {pers_inf_3s} | style="border: 1px solid #999999; vertical-align: top;" | {pers_inf_1p} | style="border: 1px solid #999999; vertical-align: top;" | {pers_inf_2p} | style="border: 1px solid #999999; vertical-align: top;" | {pers_inf_3p} |- ! style="border: 1px solid #999999; background:#98ffc4" colspan="7" | ''<span title="gerúndio">รูปกริยาเป็นนาม</span>'' |- | style="border: 1px solid #999999; background:#78dfa4" | | style="border: 1px solid #999999; vertical-align: top;" colspan="6" | {gerund} |-{pp_clause} ! style="border: 1px solid #999999; background:#d0dff4" colspan="7" | ''<span title="indicativo">มาลาบอกเล่า</span>'' |- ! style="border: 1px solid #999999; background:#b0bfd4" | <span title="presente">ปัจจุบันกาล</span> | style="border: 1px solid #999999; vertical-align: top;" | {pres_1s} | style="border: 1px solid #999999; vertical-align: top;" | {pres_2s} | style="border: 1px solid #999999; vertical-align: top;" | {pres_3s} | style="border: 1px solid #999999; vertical-align: top;" | {pres_1p} | style="border: 1px solid #999999; vertical-align: top;" | {pres_2p} | style="border: 1px solid #999999; vertical-align: top;" | {pres_3p} |- ! style="border: 1px solid #999999; background:#b0bfd4" | <span title="pretérito imperfeito">ไม่สมบูรณ์</span> | style="border: 1px solid #999999; vertical-align: top;" | {impf_1s} | style="border: 1px solid #999999; vertical-align: top;" | {impf_2s} | style="border: 1px solid #999999; vertical-align: top;" | {impf_3s} | style="border: 1px solid #999999; vertical-align: top;" | {impf_1p} | style="border: 1px solid #999999; vertical-align: top;" | {impf_2p} | style="border: 1px solid #999999; vertical-align: top;" | {impf_3p} |- ! style="border: 1px solid #999999; background:#b0bfd4" | <span title="pretérito perfeito">อดีตกาลสิ้นสุด<br>(สมบูรณ์)</span> | style="border: 1px solid #999999; vertical-align: top;" | {pret_1s} | style="border: 1px solid #999999; vertical-align: top;" | {pret_2s} | style="border: 1px solid #999999; vertical-align: top;" | {pret_3s} | style="border: 1px solid #999999; vertical-align: top;" | {pret_1p} | style="border: 1px solid #999999; vertical-align: top;" | {pret_2p} | style="border: 1px solid #999999; vertical-align: top;" | {pret_3p} |- ! style="border: 1px solid #999999; background:#b0bfd4" | <span title="pretérito mais-que-perfeito simples">อภิสมบูรณ์</span> | style="border: 1px solid #999999; vertical-align: top;" | {plup_1s} | style="border: 1px solid #999999; vertical-align: top;" | {plup_2s} | style="border: 1px solid #999999; vertical-align: top;" | {plup_3s} | style="border: 1px solid #999999; vertical-align: top;" | {plup_1p} | style="border: 1px solid #999999; vertical-align: top;" | {plup_2p} | style="border: 1px solid #999999; vertical-align: top;" | {plup_3p} |- ! style="border: 1px solid #999999; background:#b0bfd4" | <span title="futuro do presente">อนาคตกาล</span> | style="border: 1px solid #999999; vertical-align: top;" | {fut_1s} | style="border: 1px solid #999999; vertical-align: top;" | {fut_2s} | style="border: 1px solid #999999; vertical-align: top;" | {fut_3s} | style="border: 1px solid #999999; vertical-align: top;" | {fut_1p} | style="border: 1px solid #999999; vertical-align: top;" | {fut_2p} | style="border: 1px solid #999999; vertical-align: top;" | {fut_3p} |- ! style="border: 1px solid #999999; background:#b0bfd4" | <span title="condicional">มาลาเงื่อนไข</span> | style="border: 1px solid #999999; vertical-align: top;" | {cond_1s} | style="border: 1px solid #999999; vertical-align: top;" | {cond_2s} | style="border: 1px solid #999999; vertical-align: top;" | {cond_3s} | style="border: 1px solid #999999; vertical-align: top;" | {cond_1p} | style="border: 1px solid #999999; vertical-align: top;" | {cond_2p} | style="border: 1px solid #999999; vertical-align: top;" | {cond_3p} |- ! style="border: 1px solid #999999; background:#d0f4d0" colspan="7" | ''<span title="conjuntivo">มาลาสมมุติ</span>'' |- ! style="border: 1px solid #999999; background:#b0d4b0" | <span title=" presente do conjuntivo">ปัจจุบันกาล</span> | style="border: 1px solid #999999; vertical-align: top;" | {pres_sub_1s} | style="border: 1px solid #999999; vertical-align: top;" | {pres_sub_2s} | style="border: 1px solid #999999; vertical-align: top;" | {pres_sub_3s} | style="border: 1px solid #999999; vertical-align: top;" | {pres_sub_1p} | style="border: 1px solid #999999; vertical-align: top;" | {pres_sub_2p} | style="border: 1px solid #999999; vertical-align: top;" | {pres_sub_3p} |- ! style="border: 1px solid #999999; background:#b0d4b0" | <span title="pretérito imperfeito do conjuntivo">ไม่สมบูรณ์</span> | style="border: 1px solid #999999; vertical-align: top;" | {impf_sub_1s} | style="border: 1px solid #999999; vertical-align: top;" | {impf_sub_2s} | style="border: 1px solid #999999; vertical-align: top;" | {impf_sub_3s} | style="border: 1px solid #999999; vertical-align: top;" | {impf_sub_1p} | style="border: 1px solid #999999; vertical-align: top;" | {impf_sub_2p} | style="border: 1px solid #999999; vertical-align: top;" | {impf_sub_3p} |- ! style="border: 1px solid #999999; background:#b0d4b0" | <span title="futuro do conjuntivo">อนาคตกาล</span> | style="border: 1px solid #999999; vertical-align: top;" | {fut_sub_1s} | style="border: 1px solid #999999; vertical-align: top;" | {fut_sub_2s} | style="border: 1px solid #999999; vertical-align: top;" | {fut_sub_3s} | style="border: 1px solid #999999; vertical-align: top;" | {fut_sub_1p} | style="border: 1px solid #999999; vertical-align: top;" | {fut_sub_2p} | style="border: 1px solid #999999; vertical-align: top;" | {fut_sub_3p} |- ! style="border: 1px solid #999999; background:#f4e4d0" colspan="7" | ''<span title="imperativo">มาลาสั่ง</span>'' |- ! style="border: 1px solid #999999; background:#d4c4b0" | <span title="imperativo afirmativo">เชิงยืนยัน</span> | style="border: 1px solid #999999; vertical-align: top;" rowspan="2" | | style="border: 1px solid #999999; vertical-align: top;" | {imp_2s} | style="border: 1px solid #999999; vertical-align: top;" | {imp_3s} | style="border: 1px solid #999999; vertical-align: top;" | {imp_1p} | style="border: 1px solid #999999; vertical-align: top;" | {imp_2p} | style="border: 1px solid #999999; vertical-align: top;" | {imp_3p} |- ! style="border: 1px solid #999999; background:#d4c4b0" | <span title="imperativo negativo">เชิงปฏิเสธ</span> (<<nom>>) | style="border: 1px solid #999999; vertical-align: top;" | {neg_imp_2s} | style="border: 1px solid #999999; vertical-align: top;" | {neg_imp_3s} | style="border: 1px solid #999999; vertical-align: top;" | {neg_imp_1p} | style="border: 1px solid #999999; vertical-align: top;" | {neg_imp_2p} | style="border: 1px solid #999999; vertical-align: top;" | {neg_imp_3p} |{\cl}{notes_clause}</div></div> ]=] local double_pp_template = [=[ ! style="border: 1px solid #999999; background:#ffc498" colspan="7" | ''<span title="particípio irregular">Short past participle</span>'' |- ! style="border: 1px solid #999999; background:#dfa478" | Masculine | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {short_pp_ms} | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {short_pp_mp} |- ! style="border: 1px solid #999999; background:#dfa478" | Feminine | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {short_pp_fs} | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {short_pp_fp} |- ! style="border: 1px solid #999999; background:#ffc498" colspan="7" | ''<span title="particípio regular">Long past participle</span>'' |- ! style="border: 1px solid #999999; background:#dfa478" | Masculine | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {pp_ms} | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {pp_mp} |- ! style="border: 1px solid #999999; background:#dfa478" | Feminine | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {pp_fs} | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {pp_fp} |-]=] local single_pp_template = [=[ ! style="border: 1px solid #999999; background:#ffc498" colspan="7" | ''<span title="particípio passado">Past participle</span>'' |- ! style="border: 1px solid #999999; background:#dfa478" | Masculine | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {pp_ms} | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {pp_mp} |- ! style="border: 1px solid #999999; background:#dfa478" | Feminine | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {pp_fs} | style="border: 1px solid #999999; vertical-align: top;" colspan="3" | {pp_fp} |-]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form) if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" -- has_short_pp is computed in show_forms(). local pp_template = alternant_multiword_spec.has_short_pp and double_pp_template or single_pp_template forms.pp_clause = m_string_utilities.format(pp_template, forms) local table_with_pronouns = rsub(basic_table, "<<(.-)>>", link_term) return m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.title.getCurrentTitle().text local function in_template_space() return mw.title.getCurrentTitle().nsText == "แม่แบบ" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{gl-reinteg-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "gl-reinteg-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "gl-reinteg-conj" or pagename == "gl-reinteg-verb") and in_template_space() then arg1 = "traguer" elseif pagename == "gl-reinteg-verb form of" and in_template_space() then arg1 = "amar" else arg1 = "<>" end end -- When called from {{gl-reinteg-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "gl-reinteg-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "gl-reinteg-verb form of" and in_template_space() then verb_form_of_form = "ame" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return iut.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, get_variants = function(form) return rsub(form, not_var_code_c, "") end, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = com.strip_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "gl-reinteg-conj" then return export.remove_variant_codes(require("Module:JSON").toJSON(alternant_multiword_spec.forms)) end return alternant_multiword_spec end -- Entry point for {{gl-reinteg-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(parent_args, "gl-reinteg-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export gih1fc15nbjxw3gq8amujc21qbu398r 5729291 5729289 2026-07-20T05:26:31Z Octahedron80 267 5729291 Scribunto text/plain --[=[ This module implements {{gl-reinteg-conj}} and provides the underlying conjugation functions for {{gl-reinteg-verb}}, as well as for {{gl-verb}} when invoked with |reinteg=1. The actual formatting of both {{gl-reinteg-verb}} and {{gl-verb}} happens in [[Module:gl-headword]]. This module uses the [[Appendix:Reintegrationism|reintegrationist]] norm for Galician spelling. See also [[Module:gl-verb]], which implements the standard norm. Authorship: Ben Wing <benwing2>, MedK <medk1> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Galician form representing the value of a given slot. -- "lemma" = The dictionary form of a given Galician term. For Galician, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("gl") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:gl-reinteg-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility local function link_term(term) return m_links.full_link({ lang = lang, term = term }, "term") end local V = com.V -- vowel regex class local AV = com.AV -- accented vowel regex class local C = com.C -- consonant regex class local AC = u(0x0301) -- acute = ́ local TEMPC1 = u(0xFFF1) -- temporary character used for consonant substitutions local TEMP_MESOCLITIC_INSERTION_POINT = u(0xFFF2) -- temporary character used to mark the mesoclitic insertion point -- Variant codes and the like. -- NOTE: These codes should be *PREFIXED* onto stems and *SUFFIXED* onto endings. That way they won't interfere in the -- operation of combine_stem_ending(). -- -- GL_TYPE = "Galician-type", PT_TYPE = "Portuguese-type". GL_TYPE stems cannot combine with PT_TYPE endings and -- vice-versa. GL_ONLY_TYPE = "Galician-only type"; GL_ONLY_TYPE stems can only combine with endings specifically -- marked as GL_TYPE. local GL_TYPE = u(0xFFF3) local GL_ONLY_TYPE = u(0xFFF4) local PT_TYPE = u(0xFFF5) -- ALTVAR = Less-recommended variants listed at the bottom of the Estraviz conjugation tables rather than in the main -- table. We list these in the main table but with a footnote indicating they are less-recommended alternatives, and -- italicize them to visually set them apart. local ALTVAR = u(0xFFF6) local GL_ALTVAR = GL_TYPE .. ALTVAR local GL_ONLY_ALTVAR = GL_ONLY_TYPE .. ALTVAR local var_codes_no_altvar = GL_TYPE .. GL_ONLY_TYPE .. PT_TYPE local all_var_codes = var_codes_no_altvar .. ALTVAR local var_code_c = "[" .. all_var_codes .. "]" local var_code_no_altvar_c = "[" .. var_codes_no_altvar .. "]" local not_var_code_c = "[^" .. all_var_codes .. "]" -- Export variant codes for use in [[Module:pt-gl-inflections]]. export.GL_TYPE = GL_TYPE export.GL_ONLY_TYPE = GL_ONLY_TYPE export.PT_TYPE = PT_TYPE export.ALTVAR = ALTVAR local short_pp_footnote = "[usually used with auxiliary verbs " .. link_term("ser") .. " and " .. link_term("estar") .. "]" local long_pp_footnote = "[usually used with auxiliary verbs " .. link_term("haver") .. " and " .. link_term("ter") .. "]" --[=[ Vowel alternations: <i-e>: 'i' in pres1s and the whole present subjunctive; 'e' elsewhere when stressed. Generally 'e' otherwise when unstressed. E.g. [[sentir]], [[conseguir]] (the latter additionally with 'gu-g' alternation). <u-o>: 'u' in pres1s and the whole present subjunctive; 'o' elsewhere when stressed. Either 'o' or 'u' otherwise when unstressed. E.g. [[dormir]], [[subir]]. <i>: 'i' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'e'. E.g. [[progredir]], [[premir]]. <u>: 'u' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'o'. E.g. [[polir]], [[extorquir]] (the latter also <u-o>). <í>: The last 'i' of the stem (excluding stem-final 'i') becomes 'í' when stressed. E.g.: * [[proibir]] ('proíbo, proíbe(s), proíbem, proíba(s), proíbam') * [[faiscar]] ('faísco, faísca(s), faíscam, faísque(s), faísquem' also with 'c-qu' alternation) * [[homogeneizar]] ('homogeneízo', etc.) * [[mobiliar]] ('mobílio', etc.; note here the final -i is ignored when determining which vowel to stress) * [[tuitar]] ('tuíto', etc.) <ú>: The last 'u' of the stem (excluding stem-final 'u') becomes 'ú' when stressed. E.g.: * [[reunir]] ('reúno, reúne(s), reúnem, reúna(s), reúnam') * [[esmiuçar]] ('esmiúço, esmiúça(s), esmiúça, esmiúce(s), esmiúcem' also with 'ç-c' alternation) * [[reusar]] ('reúso, reúsa(s), reúsa, reúse(s), reúsem') * [[saudar]] ('saúdo, saúda(s), saúda, saúde(s), saúdem') ]=] local vowel_alternants = m_table.listToSet({"i-e", "i", "í", "u-o", "u", "ú", "ei", "+"}) local vowel_alternant_to_desc = { ["i-e"] = "''i-e'' alternation in present singular", ["i"] = "''e'' becomes ''i'' when stressed", ["í"] = "''i'' becomes ''í'' when stressed", ["u-o"] = "''u-o'' alternation in present singular", ["u"] = "''o'' becomes ''u'' when stressed", ["ú"] = "''u'' becomes ''ú'' when stressed", ["ei"] = "''i'' becomes ''ei'' when stressed", } local vowel_alternant_to_cat = { ["i-e"] = "i-e alternation in present singular", ["i"] = "e becoming i when stressed", ["í"] = "i becoming í when stressed", ["u-o"] = "u-o alternation in present singular", ["u"] = "o becoming u when stressed", ["ú"] = "u becoming ú when stressed", ["ei"] = "i becoming ei when stressed", } local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} person_number_to_reflexive_pronoun = { ["1s"] = "me", ["2s"] = "te", ["3s"] = "se", ["1p"] = "nos", ["2p"] = "vos", ["3p"] = "se", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "no_pres1_and_sub", "only3s", "only3sp", "only3p", "pp_inv", "irreg", "no_built_in", "e_ei_cat", } -- Remove any variant codes e.g. GL_TYPE, PT_TYPE, ALTVAR. Needs to be called from [[Module:gl-reinteg-headword]] on the -- output of do_generate_forms(). `keep_altvar` leaves ALTVAR; used in the `canonicalize` function of show_forms() -- because we then process and remove it in `generate_forms`. FIXME: Use metadata for this once it's supported in -- [[Module:inflection utilities]]. function export.remove_variant_codes(form, keep_altvar) return rsub(form, keep_altvar and var_code_no_altvar_c or var_code_c, "") end -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"short_pp_ms", "short|m|s|past|part"}, {"short_pp_fs", "short|f|s|past|part"}, {"short_pp_mp", "short|m|p|past|part"}, {"short_pp_fp", "short|f|p|past|part"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{gl-reinteg-verb form of}}. For example, -- for a reflexive-only verb like [[arrepender-se]], we want to be able to use {{gl-reinteg-verb form of}} on -- [[arrependa]] (which should mention that it is a part of 'me arrependa', first-person singular present -- subjunctive, and 'se arrependa', third-person singular present subjunctive) or on [[arrependemos]] (which should -- mention that it is a part of 'arrependemo-nos', first-person plural present indicative or preterite). Similarly, -- we want to use {{gl-reinteg-verb form of}} on [[arrependendo]] (which should mention that it is a part of -- 'se ... arrependendo', syntactic variant of [[arrependendo-se]], which is the gerund of [[arrepender-se]]). To -- do this, we need to be able to map non-reflexive parts like [[arrependa]], [[arrependemos]], [[arrependendo]], -- etc. to their reflexive equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like -- [[arrependendo]], [[arrepender]] and imperatives, to the separated syntactic variant of the verb+clitic -- combination. We do this by creating slots for the non-reflexive part equivalent of each basic reflexive slot, -- and for the separated syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. -- We use slots in this way to deal with multiword lemmas. Note that we run into difficulties mapping between -- reflexive verbs, non-reflexive part equivalents, and separated syntactic variants if a slot contains more than -- one form. To handle this, if there are the same number of forms in two slots we're trying to match up, we assume -- the forms match one-to-one; otherwise we don't match up the two slots (which means {{gl-reinteg-verb form of}} won't -- work in this case, but such a case is extremely rare and not worth worrying about). Alternatives that handle -- this "properly" are significantly more complicated and require non-trivial modifications to -- [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "gl-reinteg-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{gl-reinteg-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "pres|ind", person_number_list) add_basic_personal_slot("impf", "impf|ind", person_number_list) add_basic_personal_slot("pret", "pret|ind", person_number_list) add_basic_personal_slot("plup", "plup|ind", person_number_list) add_basic_personal_slot("fut", "fut|ind", person_number_list) add_basic_personal_slot("cond", "cond", person_number_list) add_basic_personal_slot("pres_sub", "pres|sub", person_number_list) add_basic_personal_slot("impf_sub", "impf|sub", person_number_list) add_basic_personal_slot("fut_sub", "fut|sub", person_number_list) add_basic_personal_slot("imp", "imp", imp_person_number_list) add_basic_personal_slot("pers_inf", "pers|inf", person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'nom' + subjunctive. add_basic_personal_slot("neg_imp", "neg|imp", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values(separated_groups, data) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local retval = {form = separated_group[1], footnotes = footnotes} table.insert(retvals, retval) end return retvals end local function simple_choice(choices) return function(separated_groups, data) if #separated_groups > 1 then data.parse_err("For spec '" .. data.prefix .. ":', only one value currently allowed") end if #separated_groups[1] > 1 then data.parse_err("For spec '" .. data.prefix .. ":', no footnotes currently allowed") end local choice = separated_groups[1][1] if not m_table.contains(choices, choice) then data.parse_err("For spec '" .. data.prefix .. ":', saw value '" .. choice .. "' but expected one of '" .. table.concat(choices, ",") .. "'") end return choice end end for _, overridable_stem in ipairs { "pres_unstressed", "pres_stressed", "pres1_and_sub", -- Don't include pres1; use pres_1s if you need to override just that form "impf", "full_impf", {"pret_conj", simple_choice({"irreg", "ar", "er", "ir"}) }, "pret_base", "pret", "gl_short_pret", "pt_pret_1s", "pt_pret_3s", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", {"sub_conj", simple_choice({"ar", "er"}) }, "plup", "impf_sub", "fut_sub", "pers_inf", "pp", "short_pp", } do if type(overridable_stem) == "string" then overridable_stems[overridable_stem] = allow_multiple_values else local stem, validator = unpack(overridable_stem) overridable_stems[stem] = validator end end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `vowel_alt`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/z, g/gu, gu/gü, g/j) occur automatically as appropriate for the ending. 2. If the stem begins with an acute accent, the accent is moved onto the last vowel of the prefix (for handling verbs in -uar such as [[minguar]], pres_3s 'míngua'). 3. If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. 4. If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem, e.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. 5. If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1_and_sub: Overriding stem for 1s present indicative and the entire subjunctive. Only set by irregular verbs and by the indicators `no_pres_stressed` (e.g. [[precaver]]) and `no_pres1_and_sub` (since verbs of this sort, e.g. [[puir]], are missing the entire subjunctive as well as the 1s present indicative). Used by many irregular verbs, e.g. [[caber]], verbs in '-air', [[dizer]], [[ter]], [[valer]], etc. Some verbs set this and then supply an override for the pres_1sg if it's irregular, e.g. [[saber]], with irregular subjunctive stem "saib-" and special 1s present indicative "sei". -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres1_and_sub if given, else pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to pres1_and_sub if given, else the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- sub_conj: Determines the set of endings used in the subjunctive. Should be one of "ar" or "er". -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- full_impf: The full imperfect stem missing only the endings (-a, -as, -am, etc.). Used for verbs with irregular imperfects such as [[ser]], [[ter]], [[vir]] and [[pôr]]. Needs to include an accent on the stressed vowel, which will automatically be removed when not needed. -- pret_conj: Determines the set of endings used in the preterite. Should be one of "ar", "er", "ir" or "irreg". Defaults to the conjugation as determined from the infinitive. When pret_conj == "irreg", `pret` is used, otherwise `pret_base`. -- pret_base: The preterite stem (not including the -a-/-e-/-i- stem suffix). Defaults to the infinitive stem. Only used when pret_conj ~= "irreg". -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.). Needs to include the accent on the final vowel that occurs in some forms, e.g. 'figé' for [[fazer]], 'fô' for [[ser]]; the accent will automatically be removed when not needed. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[fazer]], [[poder]], [[trazer]], etc. The pret_1s and pret_3s are handled using the gl_short_pret stem instead for "Galician"-ending forms (pret_1s '-em', pret_3s '-o') and using pt_pret_1s and pt_pret_3s for "Portuguese"-ending forms. Defaults to `pret_base` + the accented conjugation vowel. -- gl_short_pret: The short preterite stem, used with "Galician" 1s and 3s endings (pret_1s '-em', pret_3s '-o'). Only used with irregular preterites (pret_conj == "irreg"). Normally derived from gl_pret by deleting the final vowel, and doesn't need to be given explicitly. -- pt_pret_1s: The "Portuguese" pret_1s form. In addition to this, the "Galician" pret_1s form will be included, formed from gl_short_pret by adding '-em'. Does not need to be given if an override for pret_1s is supplied. -- pt_pret_3s: The "Portuguese" pret_3s form. In addition to this, the "Galician" pret_3s form will be included, formed from gl_short_pret by adding '-o' (which may cause the preceding consonant to shift to preserve the sound). Does not need to be given if an override for pret_3s is supplied. -- fut: The future stem. Defaults to the infinitive stem + the unaccented conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Needs to include the accent on the final vowel that occurs in some forms; see `pret` for more information. Defaults to `pret`. -- fut_sub: The future subjunctive stem. Needs to include the accent on the final vowel that occurs in some forms; see `gl_pret` for more information. Defaults to the merger of `gl_pret` and `pt_pret`. -- plup: The pluperfect stem. Needs to include the accent on the final vowel that occurs in some forms; see `pret` for more information. Defaults to `pret`. -- pers_inf: The personal infinitive stem. Defaults to the infinitive stem + the accented conjugation vowel. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- short_pp: The short masculine singular past participle, for verbs with such a form. No default. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- (1) Verbs with short past participles: need to specify the short pp explicitly. -- -- aceitar: use <short_pp:aceite> -- anexar, completar, expressar, expulsar, findar, fritar, ganhar, gastar, limpar, pagar, pasmar, pegar, soltar: -- use <short_pp:anexo> etc. -- assentar: use <short_pp:assente> -- entregar: use <short_pp:entregue> -- enxugar: use <short_pp:enxuto> -- matar: use <short_pp:morto> -- -- (2) Verbs with orthographic consonant alternations: handled automatically. -- -- -car (brincar, buscar, pecar, trancar, etc.): automatically handled in combine_stem_ending() -- -çar (alcançar, começar, laçar): automatically handled in combine_stem_ending() -- -gar (apagar, cegar, esmagar, largar, navegar, resmungar, sugar, etc.): automatically handled in combine_stem_ending() -- -- (3) Verbs with vowel alternations: need to specify the alternation explicitly unless it always happens, in -- which case it's handled automatically through an entry below. -- -- esmiuçar changing to esmiúço: use <ú> -- faiscar changing to faísco: use <í> -- -iar changing to -eio (ansiar, incendiar, mediar, odiar, remediar, etc.): use <ei> -- -izar changing to -ízo (ajuizar, enraizar, homogeneizar, plebeizar, etc.): use <í> -- mobiliar changing to mobílio: use <í> -- reusar changing to reúso: use <ú> -- saudar changing to saúdo: use <ú> -- tuitar/retuitar changing to (re)tuíto: use <í> { -- dar, desdar match = match_against_verbs("dar", {"^", "^des", "^re"}), forms = { pres_1s = "dou", pres_2s = "dás", pres_3s = "dá", -- damos, dades/dais regular pres_3p = {GL_TYPE .. "dam", PT_TYPE .. "dão"}, pret_conj = "irreg", pret = "dé", pret_1s = "dei", pret_3s = "deu", pres_sub_1s = "dê", pres_sub_2s = "dês", pres_sub_3s = "dê", -- demos, dedes/deis regular pres_sub_3p = {GL_TYPE .. "dem", PT_TYPE .. "deem"}, irreg = true, } }, { -- -ear (frear, nomear, semear, etc.) match = "ear", forms = { pres_stressed = {"ei", GL_ALTVAR .. "e"}, e_ei_cat = true, } }, { -- estar match = match_against_verbs("estar", {"^", "sob", "sobr"}), forms = { pres_1s = "estou", pres_2s = "estás", pres_3s = "está", pres_3p = {GL_TYPE .. "estám", PT_TYPE .. "estão"}, pres1_and_sub = "estej", -- only for subjunctive as we override pres_1s sub_conj = "er", pret_conj = "irreg", pret = "estivé", pt_pret_1s = "estive", pt_pret_3s = "esteve", -- [[sobestar]], [[sobrestar]] are transitive so they have fully inflected past participles pp_inv = function(base, prefix) return prefix == "" end, irreg = true, } }, -------------------------------------------------------------------------------------------- -- -er -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- precaver: use <no_pres_stressed> -- -cer (verbs in -ecer, descer, vencer, etc.): automatically handled in combine_stem_ending() -- -ger (proteger, reger, etc.): automatically handled in combine_stem_ending() -- -guer (erguer/reerguer/soerguer): automatically handled in combine_stem_ending() { -- benzer match = "benzer", forms = {short_pp = "bento"} }, { -- caber match = "caber", forms = { pres1_and_sub = "caib", pret_conj = "irreg", pret = "coubé", pt_pret_1s = "coube", pt_pret_3s = "coube", irreg = true, } }, { -- crer, descrer match = "crer", forms = { pres_2s = "crês", pres_3s = "crê", pres_2p = "credes", pres_3p = {GL_TYPE .. "crem", PT_TYPE .. "creem"}, pres1_and_sub = {"crei", GL_ALTVAR .. "cre"}, irreg = true, } }, { -- dizer, bendizer, condizer, contradizer, desdizer, maldizer, predizer, etc. match = "dizer", forms = { -- use 'digu' because we're in a front environment; if we use 'dig', we'll get '#dijo' pres1_and_sub = "digu", pres_2s = {GL_TYPE .. "dis", PT_TYPE .. "dizes"}, pres_3s = {GL_TYPE .. "di", PT_TYPE .. "diz"}, pres_3p = {GL_TYPE .. "dim", PT_TYPE .. "dizem"}, pret_conj = "irreg", pret = {GL_TYPE .. "dixé", PT_TYPE .. "dissé"}, pt_pret_1s = "disse", pt_pret_3s = "disse", pp = "dito", fut = "dir", irreg = true, } }, { -- eleger, reeleger match = "eleger", forms = {short_pp = "eleito"} }, { -- acender, prender; not desprender, etc. match = match_against_verbs("ender", {"^ac", "^pr"}), forms = {short_pp = "eso"} }, { -- fazer, afazer, contrafazer, desfazer, liquefazer, perfazer, putrefazer, rarefazer, refazer, satisfazer, tumefazer match = "fazer", forms = { -- use 'fagu' because we're in a front environment; if we use 'fag', we'll get '#fajo' pres1_and_sub = {GL_TYPE .. "fagu", PT_TYPE .. "faç"}, pres_2s = {GL_TYPE .. "fás", PT_TYPE .. "fazes"}, pres_3s = {GL_TYPE .. "fai", PT_TYPE .. "faz"}, pres_3p = {GL_TYPE .. "fam", PT_TYPE .. "fazem"}, pret_conj = "irreg", pret = {GL_TYPE .. "figé", PT_TYPE .. "fizé", GL_ONLY_ALTVAR .. "fizé"}, pt_pret_1s = "fiz", pt_pret_3s = "fez", pp = "feito", fut = "far", irreg = true, } }, { match = "^haver", forms = { pres_1s = "hei", pres_2s = "hás", pres_3s = {"há", {form = GL_ALTVAR .. "hai", footnotes = {"[also impersonal]"}}}, pres_3p = {GL_TYPE .. "ham", PT_TYPE .. "hão"}, pres1_and_sub = "haj", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "houvé", pt_pret_1s = "houve", pt_pret_3s = "houve", imp_2s = "há", irreg = true, } }, -- reaver below under r- { -- jazer, adjazer match = "jazer", forms = { pres_3s = "jaz", irreg = true, } }, { -- ler, reler, tresler; not excel(l)er, valer, etc. match = match_against_verbs("ler", {"^", "^re", "tres"}), forms = { pres_2s = "lês", pres_3s = "lê", pres_2p = "ledes", pres_3p = {GL_TYPE .. "lem", PT_TYPE .. "leem"}, pres1_and_sub = {"lei", GL_ALTVAR .. "le"}, irreg = true, } }, { -- morrer, desmorrer match = "morrer", forms = {short_pp = "morto"} }, { -- moer, but not remoer match = "^moer", forms = { pres_2s = "móis", pres_3s = "mói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() pres1_and_sub = {"mo", GL_ALTVAR .. "moi"}, short_pp = "mudo", irreg = true, } }, { -- doer, remoer, roer/corroer, soer match = "oer", forms = { pres_2s = "óis", pres_3s = "ói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() pres1_and_sub = {"o", GL_ALTVAR .. "oi"}, irreg = true, } }, { -- perder match = "perder", forms = { -- use 'perqu' because we're in a front environment; if we use 'perc', we'll get '#perço' -- we don't tag these forms GL_TYPE or PT_TYPE because both occur with both endings -ais/-ades pres1_and_sub = {"perd", "perqu"}, irreg = true, } }, { -- poder match = "poder", forms = { pres1_and_sub = {GL_TYPE .. "pod", PT_TYPE .. "poss"}, pret_conj = "irreg", pret = "pudé", pt_pret_1s = "pude", pt_pret_3s = "pôde", irreg = true, } }, { -- prazer, aprazer, comprazer, desprazer -- FIXME: comprazer also has regular preterite match = "prazer", forms = { pres_3s = "praz", pret_conj = "irreg", pret = "prouvé", pt_pret_1s = "prouve", pt_pret_3s = "prouve", only3sp = function(base, prefix) return prefix == "a" end, imp_2s = {GL_TYPE .. "praze", PT_TYPE .. "praz"}, irreg = true, } }, -- prover below, just below ver { -- requerer; must precede querer match = "requerer", forms = { pres_3s = "requer", pres1_and_sub = "requeir", imp_2s = {"requer"}, -- regular preterite, unlike [[querer]] irreg = true, } }, { -- querer, desquerer, malquerer match = "querer", forms = { pres_1s = "quero", pres_3s = "quer", pres1_and_sub = "queir", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = {GL_TYPE .. "quigé", PT_TYPE .. "quisé"}, pt_pret_1s = "quis", pt_pret_3s = "quis", irreg = true, } }, { match = "reaver", forms = { pres_1s = "reei", pres_2s = "reás", pres_3s = "reá", pres_3p = {GL_TYPE .. "ream", PT_TYPE .. "reão"}, pres1_and_sub = "reaj", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "reouvé", pt_pret_1s = "reouve", pt_pret_3s = "reouve", irreg = true, } }, { -- saber, ressaber match = "saber", forms = { pres_1s = "sei", pres1_and_sub = "saib", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "soubé", pt_pret_1s = "soube", pt_pret_3s = "soube", irreg = true, } }, { -- escrever/reescrever, circunscrever, descrever/redescrever, inscrever, prescrever, proscrever, subscrever, -- transcrever, others? match = "screver", forms = { pp = "scrito", irreg = true, } }, { -- suspender match = "suspender", forms = {short_pp = "suspenso"} }, { match = "^ser", forms = { pres_1s = "sou", pres_2s = "és", pres_3s = "é", pres_1p = "somos", pres_2p = {GL_TYPE .. "sodes", PT_TYPE .. "sois"}, pres_3p = {GL_TYPE .. "som", PT_TYPE .. "são"}, pres1_and_sub = "sej", -- only for subjunctive as we override pres_1s full_impf = "ér", pret_conj = "irreg", pret = "fô", pret_1s = {GL_TYPE .. "fum", PT_TYPE .. "fui"}, pret_3s = "foi", imp_2s = "sê", imp_2p = "sede", pp_inv = true, irreg = true, } }, { -- We want to match abster, conter, deter, etc. but not abater, cometer, etc. No way to avoid listing each verb. match = match_against_verbs("ter", {"abs", "^a", "con", "de", "entre", "man", "ob", "^re", "sus", "^"}), forms = { -- FIXME, Estraviz says 'contens', 'detens' etc. but that may be a typo pres_2s = function(base, prefix) return {GL_TYPE .. "tés", PT_TYPE .. (prefix == "" and "tens" or "téns")} end, -- FIXME, Estraviz says 'contem', 'detem' etc. but that may be a typo pres_3s = function(base, prefix) return prefix == "" and "tem" or "tém" end, pres_2p = "tendes", pres_3p = {GL_TYPE .. "tenhem", PT_TYPE .. "têm", GL_ALTVAR .. "tém"}, pres1_and_sub = "tenh", full_impf = "tính", pret_conj = "irreg", pret = "tivé", pt_pret_1s = "tive", pt_pret_3s = "teve", irreg = true, } }, { match = "trazer", forms = { -- use 'tragu' because we're in a front environment; if we use 'trag', we'll get '#trajo' pres1_and_sub = "tragu", pres_3s = "traz", pret_conj = "irreg", pret = "trouxé", pt_pret_1s = "trouxe", pt_pret_3s = "trouxe", fut = "trar", irreg = true, } }, { match = "traguer", forms = { pret_conj = "irreg", pret = "trouxé", pt_pret_1s = "trouxe", pt_pret_3s = "trouxe", irreg = true, } }, { -- valer, desvaler, equivaler match = "valer", forms = { pres1_and_sub = "valh", irreg = true, } }, { -- We want to match antever etc. but not absolver, atrever etc. No way to avoid listing each verb. match = match_against_verbs("ver", {"ante", "entre", "pre", "^re", "^"}), forms = { pres_2s = "vês", pres_3s = "vê", pres_2p = "vedes", pres_3p = function(base, prefix) return {GL_TYPE .. (prefix == "" and "vem" or "vêm"), PT_TYPE .. "veem"} end, pres1_and_sub = "vej", pret_conj = "irreg", pret = "ví", pret_1s = {GL_TYPE .. "vim", PT_TYPE .. "vi"}, pret_3s = "viu", pp = "visto", irreg = true, } }, { -- [[prover]] and [[desprover]] have regular preterite and past participle match = "prover", forms = { pres_2s = "provês", pres_3s = "provê", -- FIXME: Estraviz says 'provem' but that may be a typo pres_2p = "provedes", pres_3p = {GL_TYPE .. "provêm", PT_TYPE .. "proveem"}, pres1_and_sub = "provej", irreg = true, } }, { -- volver, devolver, envolver, revolver, etc. match = "volver", forms = {short_pp = "volto"}, }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- abolir: use <u-o> -- barrir: use <only3sp> -- carpir, colorir, demolir: use <no_pres1_and_sub> -- descolorir: use <no_pres1_and_sub> -- delir, espavorir, falir, florir, remir, renhir: use <no_pres_stressed> -- empedernir: use <i-e> -- transir: regular -- aspergir, despir, flectir/deflectir/genuflectir/genufletir/reflectir/refletir, mentir/desmentir, -- sentir/assentir/consentir/dissentir/pressentir/ressentir, convergir/divergir, aderir/adherir, -- ferir/auferir/conferir/deferir/desferir/diferir/differir/inferir/interferir/preferir/proferir/referir/transferir, -- gerir/digerir/ingerir/sugerir, preterir, competir/repetir, servir, advertir/animadvertir/divertir, -- vestir/investir/revestir/travestir, seguir/conseguir/desconseguir/desseguir/perseguir/prosseguir: use <i-e> -- inerir: use <i-e> -- compelir/expelir/impelir/repelir: use <i-e> -- dormir, engolir, tossir, subir, acudir/sacudir, fugir, sumir/consumir (NOT assumir/presumir/resumir): use <u-o> -- polir/repolir: use <u> -- premir: use <i> -- extorquir/retorquir: <u-o,u> -- agredir/progredir/regredir/transgredir: use <i> -- denegrir, prevenir: use <i> -- eclodir: use <u-o> -- cerzir: use <i-e> -- proibir/coibir: use <í> -- reunir: use <ú> -- parir/malparir: use <no_pres_stressed> -- explodir/implodir: use <u-o> -- -- -cir alternations (aducir, ressarcir): automatically handled in combine_stem_ending() -- -gir alternations (agir, dirigir, exigir): automatically handled in combine_stem_ending() -- -guir alternations (e.g. conseguir): automatically handled in combine_stem_ending() -- -quir alternations (e.g. extorquir): automatically handled in combine_stem_ending() { -- verbs in -air (cair, sair, trair and derivatives: decair/descair/recair, sobres(s)air, -- abstrair/atrair/contrair/distrair/extrair/protrair/retrair/subtrair) match = "air", forms = { pres1_and_sub = "ai", pres_2s = "ais", pres_3s = "ai", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- abrir/desabrir/reabrir match = "abrir", forms = {pp = "aberto"} }, { -- cobrir/descobrir/encobrir/recobrir/redescobrir match = "cobrir", forms = {vowel_alt = "u-o", pp = "coberto"} }, { -- conduzir, produzir, reduzir, traduzir, etc.; luzir, reluzir, tremeluzir match = "uzir", forms = { pres_3s = "uz", -- FIXME, is this correct? imp_2s = "uze", irreg = true, } }, { -- pedir, desimpedir, despedir, espedir, expedir, impedir -- medir -- comedir match = match_against_verbs("edir", {"m", "p"}), forms = { pres1_and_sub = {GL_TYPE .. "id", PT_TYPE .. "eç"}, irreg = true, } }, { -- frigir match = "frigir", forms = {vowel_alt = "i-e", short_pp = "frito"}, }, { -- inserir match = "inserir", forms = {vowel_alt = "i-e"}, }, { -- ir match = "^ir", forms = { pres_1s = "vou", pres_2s = {GL_TYPE .. "vás", PT_TYPE .. "vais"}, pres_3s = "vai", pres_1p = {GL_TYPE .. "imos", PT_TYPE .. "vamos"}, pres_2p = "ides", pres_3p = {GL_TYPE .. "vam", PT_TYPE .. "vão"}, pres_sub_1s = {GL_TYPE .. "vaia", PT_TYPE .. "vá"}, pres_sub_2s = {GL_TYPE .. "vaias", PT_TYPE .. "vás"}, pres_sub_3s = {GL_TYPE .. "vaia", PT_TYPE .. "vá"}, pres_sub_1p = {GL_TYPE .. "vaiamos", PT_TYPE .. "vamos"}, pres_sub_2p = {GL_TYPE .. "vaiades", PT_TYPE .. "vades"}, pres_sub_3p = {GL_TYPE .. "vaiam", PT_TYPE .. "vão"}, pret_conj = "irreg", pret = "fô", pret_1s = {GL_TYPE .. "fum", PT_TYPE .. "fui"}, pret_3s = "foi", irreg = true, } }, { -- emergir, imergir, submergir match = "mergir", forms = {vowel_alt = "i-e", short_pp = "merso"}, }, { match = "ouvir", forms = { pres1_and_sub = {"ouç", ALTVAR .. "oiç"}, irreg = true, } }, { -- exprimir, imprimir, comprimir (but not descomprimir per Priberam), deprimir, oprimir/opprimir (but not reprimir, -- suprimir/supprimir per Priberam) match = match_against_verbs("primir", {"^com", "ex", "im", "de", "^o", "op"}), forms = {short_pp = "presso"} }, { -- rir, sorrir match = match_against_verbs("rir", {"^", "sor"}), forms = { pres_2s = "ris", pres_3s = "ri", pres_2p = "rides", pres_3p = {GL_TYPE .. "rim", PT_TYPE .. "riem"}, pres1_and_sub = "ri", irreg = true, } }, { -- distinguir, extinguir match = "tinguir", forms = { short_pp = "tinto", -- gu/g alternations handled in combine_stem_ending() } }, { -- verbs in -truir (construir, destruir, reconstruir) but not obstruir/desobstruir, instruir, which are handled -- by the default -uir handler below match = match_against_verbs("struir", {"con", "de"}), forms = { pres_2s = {"stróis", ALTVAR .. "struis"}, pres_3s = {"strói", ALTVAR .. "strui"}, pres_3p = {"stroem", ALTVAR .. "struem"}, -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- remaining verbs in -uir (concluir/excluir/incluir/concruir/concruyr, abluir/diluir, afluir/fluir/influir, -- aluir, anuir, atribuir/contribuir/distribuir/redistribuir/retribuir/substituir, coevoluir/evoluir, -- constituir/destituir/instituir/reconstituir/restituir, derruir, diminuir, estatuir, fruir/usufruir, imbuir, -- imiscuir, poluir, possuir, puir, pruir, ruir -- FIXME: old module lists short pp incluso for incluir that can't be verified, ask about this -- FIXME: handle -uyr verbs? match = function(verb) -- Don't match -guir verbs (e.g. [[seguir]], [[conseguir]]) or -quir verbs (e.g. [[extorquir]]) if verb:find("guir$") or verb:find("quir$") then return nil else return match_against_verbs("uir", {""})(verb) end end, forms = { pres_2s = "uis", pres_3s = "ui", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- We want to match advir, convir, devir, etc. but not ouvir, servir, etc. No way to avoid listing each verb. match = match_against_verbs("vir", {"ad", "^a", "con", "contra", "de", "^desa", "inter", "pro", "^re", "sobre", "^"}), forms = { -- FIXME, Estraviz says 'convens', 'devens' etc. but that may be a typo pres_2s = function(base, prefix) return {GL_TYPE .. "vés", PT_TYPE .. (prefix == "" and "vens" or "véns")} end, -- FIXME, Estraviz says 'convem', 'devem' etc. but that may be a typo pres_3s = function(base, prefix) return prefix == "" and "vem" or "vém" end, pres_2p = "vindes", pres_3p = {GL_TYPE .. "venhem", PT_TYPE .. "vêm", GL_ALTVAR .. "vém"}, pres1_and_sub = "venh", full_impf = "vính", pret_conj = "irreg", pret = {GL_TYPE .. "vinhé", PT_TYPE .. "vié"}, pret_1s = "vim", pret_3s = {GL_TYPE .. "véu", PT_TYPE .. "veio"}, pp = "vindo", irreg = true, } }, -------------------------------------------------------------------------------------------- -- misc -- -------------------------------------------------------------------------------------------- { -- pôr, antepor, apor, compor/decompor/descompor, contrapor, depor, dispor, expor, impor, interpor, justapor, -- opor, pospor, propor, repor, sobrepor, supor/pressupor, transpor, decompor, others? match = "p[oô]r", forms = { pres1_and_sub = "ponh", pres_2s = {GL_TYPE .. "pós", PT_TYPE .. "pões", GL_ALTVAR .. "pons"}, pres_3s = {GL_TYPE .. "pom", PT_TYPE .. "põe"}, pres_1p = "pomos", pres_2p = "pondes", pres_3p = {GL_TYPE .. "ponhem", PT_TYPE .. "põem", GL_ALTVAR .. "póm"}, full_impf = "púnh", pret_conj = "irreg", pret = {GL_TYPE .. "pugé", PT_TYPE .. "pusé"}, pt_pret_1s = "pus", pt_pret_3s = "pôs", pers_inf = "po", gerund = "pondo", pp = "posto", irreg = true, } }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end -- Apply vowel alternations to stem. local function apply_vowel_alternations(stem, alternations) local alternation_stems = {} local saw_pres1_and_sub = false local saw_pres_stressed = false -- Process alternations other than +. for _, altobj in ipairs(alternations) do local alt = altobj.form local pres1_and_sub, pres_stressed, err -- Treat final -gu, -qu as a consonant, so the previous vowel can alternate (e.g. conseguir -> consigo). -- This means a verb in -guar can't have a u-ú alternation but I don't think there are any verbs like that. stem = rsub(stem, "([gq])u$", "%1" .. TEMPC1) if alt == "+" then -- do nothing yet elseif alt == "ei" then local before_last_vowel = rmatch(stem, "^(.*)i$") if not before_last_vowel then err = "stem should end in -i" else pres1_and_sub = nil pres_stressed = before_last_vowel .. "ei" end else local before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-[ui])$") if not before_last_vowel then before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-)$") end if alt == "i-e" then if last_vowel == "e" or last_vowel == "i" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel if last_vowel == "i" then pres_stressed = before_last_vowel .. "e" .. after_last_vowel end else err = "should have -e- or -i- as the last vowel" end elseif alt == "i" then if last_vowel == "e" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -e- as the last vowel" end elseif alt == "u-o" then if last_vowel == "o" or last_vowel == "u" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel if last_vowel == "u" then pres_stressed = before_last_vowel .. "o" .. after_last_vowel end else err = "should have -o- or -u- as the last vowel" end elseif alt == "u" then if last_vowel == "o" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -o- as the last vowel" end elseif alt == "í" then if last_vowel == "i" then pres_stressed = before_last_vowel .. "í" .. after_last_vowel else err = "should have -i- as the last vowel" end elseif alt == "ú" then if last_vowel == "u" then pres_stressed = before_last_vowel .. "ú" .. after_last_vowel else err = "should have -u- as the last vowel" end else error("Internal error: Unrecognized vowel alternation '" .. alt .. "'") end end if pres1_and_sub then pres1_and_sub = {form = pres1_and_sub:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres1_and_sub = true end if pres_stressed then pres_stressed = {form = pres_stressed:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres_stressed = true end table.insert(alternation_stems, { altobj = altobj, pres1_and_sub = pres1_and_sub, pres_stressed = pres_stressed, err = err }) end -- Now do +. We check to see which stems are used by other alternations and specify those so any footnotes are -- properly attached. for _, alternation_stem in ipairs(alternation_stems) do if alternation_stem.altobj.form == "+" then local stemobj = {form = stem, footnotes = alternation_stem.altobj.footnotes} alternation_stem.pres1_and_sub = saw_pres1_and_sub and stemobj or nil alternation_stem.pres_stressed = saw_pres_stressed and stemobj or nil end end return alternation_stems end -- Add the `stem` to the `ending` for the given `slot` and apply any phonetic modifications. -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, slot, prefix, stem, ending, dont_include_prefix) -- If the stem begins with an acute accent, this is a signal to move the accent onto the last vowel of the prefix. -- Cf. míngua of minguar. if stem:find("^" .. AC) then stem = rsub(stem, "^" .. AC, "") if dont_include_prefix then error("Internal error: Can't handle acute accent at beginning of stem if dont_include_prefix is given") end prefix = rsub(prefix, "([aeiouyAEIOUY])([^aeiouyAEIOUY]*)$", "%1" .. AC .. "%2") end -- Use the full stem for checking for -gui ending and such, because 'stem' is just 'u' for [[arguir]], -- [[delinquir]]. local full_stem = prefix .. stem -- Include the prefix in the stem unless dont_include_prefix is given (used for the past participle stem). if not dont_include_prefix then stem = full_stem end -- If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter -- of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent -- on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems -- ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. if ending:find("^%*%*") then ending = rsub(ending, "^%*%*", "") if rfind(full_stem, "[gq]uí$") or not rfind(full_stem, V .. "[íú]$") then stem = com.remove_final_accent(stem) end end -- If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem. -- E.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. if ending:find("^%*") then ending = rsub(ending, "^%*", "") stem = com.remove_final_accent(stem) end -- If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent -- the two merging into a diphthong: -- * cair -> -- * pres: caímos, caís; -- * impf: all forms (caí-); -- * pret: caí (but not caim), caíste (but not caiu), caímos, caístes, caíram; -- * plup: all forms (caír-); -- * impf_sub: all forms (caíss-); -- * fut_sub: caíres, caírem (but not cair, cairmos, cairdes) -- * pp: caído (but not gerund caindo) -- * atribuir, other verbs in -uir -> same pattern as for cair etc. -- * roer -> -- * pret: roí (but not roim) -- * impf: all forms (roí-) -- * pp: roído -- Don't let variant codes derail the following checks. Note that variant codes are properly added to the end of -- the ending, so checks against the beginning of the ending work even in their presence, but not checks against -- the full ending. local cleaned_ending = export.remove_variant_codes(ending) if cleaned_ending:find("^i") and full_stem:find("[aeiou]$") and not full_stem:find("[gq]u$") and not cleaned_ending:find("^i[rum]$") and cleaned_ending ~= "indo" and not cleaned_ending:find("^ir[md]") then ending = ending:gsub("^i", "í") end -- Spelling changes in the stem; it depends on whether the stem given is the pre-front-vowel or -- pre-back-vowel variant, as indicated by `frontback`. We want these front-back spelling changes to happen -- between stem and ending, not between prefix and stem; the prefix may not have the same "front/backness" -- as the stem. local is_front = rfind(ending, "^[eiéíê]") if base.frontback == "front" and not is_front then stem = stem:gsub("c$", "ç") -- conhecer -> conheço, vencer -> venço, descer -> desço stem = stem:gsub("g$", "j") -- proteger -> protejo, fugir -> fujo stem = stem:gsub("gu$", "g") -- distinguir -> distingo, conseguir -> consigo stem = stem:gsub("qu$", "c") -- extorquir -> exturco stem = stem:gsub("([gq])ü$", "%1u") -- argüir (superseded) -> arguo, delinqüir (superseded) -> delinquo elseif base.frontback == "back" and is_front then -- The following changes are all superseded so we don't do them: -- averiguar -> averigüei, minguar -> mingüei; antiquar -> antiqüei, apropinquar -> apropinqüei -- stem = stem:gsub("([gq])u$", "%1ü") stem = stem:gsub("g$", "gu") -- cargar -> carguei, apagar -> apaguei stem = stem:gsub("c$", "qu") -- marcar -> marquei stem = stem:gsub("ç$", "c") -- começar -> comecei -- j does not go to g here; desejar -> deseje not #desege end local retval = stem .. ending if retval:find(GL_TYPE) and retval:find(PT_TYPE) or retval:find(GL_ONLY_TYPE) and not retval:find(GL_TYPE) then -- Reject clashes in "Galician"-type and "Portuguese"-type forms, e.g. '#vós dixéreis' or '#vós dissérades'. return nil end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, slot, base.prefix, stem, ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function construct_stems(base, vowel_alt) local stems = {} stems.pres_unstressed = base.stems.pres_unstressed or base.inf_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or base.stems.pres_stressed or vowel_alt.pres_stressed or base.inf_stem stems.pres1_and_sub = -- If no_pres_stressed given, the entire subjunctive is missing. base.no_pres_stressed and {} or -- If no_pres1_and_sub given, pres1 and entire subjunctive are missing. base.no_pres1_and_sub and {} or base.stems.pres1_and_sub or vowel_alt.pres1_and_sub or nil stems.pres1 = base.stems.pres1 or stems.pres1_and_sub or stems.pres_stressed stems.impf = base.stems.impf or base.inf_stem stems.full_impf = base.stems.full_impf stems.pret_base = base.stems.pret_base or base.inf_stem stems.pret_conj = base.stems.pret_conj or base.conj stems.pret = base.stems.pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret_base), function(form) return form .. base.conj_vowel end) stems.gl_short_pret = base.stems.gl_short_pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret), function(form) return rsub(form, com.V .. "$", "") end) stems.pt_pret_1s = base.stems.pt_pret_1s stems.pt_pret_3s = base.stems.pt_pret_3s stems.fut = base.stems.fut or base.inf_stem .. base.conj stems.cond = base.stems.cond or stems.fut stems.pres_sub_stressed = base.stems.pres_sub_stressed or stems.pres1 stems.pres_sub_unstressed = base.stems.pres_sub_unstressed or stems.pres1_and_sub or stems.pres_unstressed stems.sub_conj = base.stems.sub_conj or base.conj stems.plup = base.stems.plup or stems.pret stems.impf_sub = base.stems.impf_sub or stems.pret stems.fut_sub = base.stems.fut_sub or stems.pret stems.pers_inf = base.stems.pers_inf or base.inf_stem .. base.conj_vowel stems.pp = base.stems.pp or base.conj == "ar" and combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ado", "dont include prefix") or -- use combine_stem_ending esp. so we get roído, caído, etc. combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ido", "dont include prefix") stems.pp_ms = stems.pp local function masc_to_fem(form) if rfind(form, "o$") then return rsub(form, "o$", "a") else return form end end stems.pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.pp_ms), masc_to_fem) if base.stems.short_pp then stems.short_pp_ms = base.stems.short_pp stems.short_pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.short_pp_ms), masc_to_fem) end base.this_stems = stems end local function add_present_indic(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end local s2, s3, p1, p2, p3 if base.conj == "ar" then s2, s3, p1, p2, p3 = "as", "a", "amos", {"ades" .. GL_TYPE, "ais" .. PT_TYPE}, "am" elseif base.conj == "er" or base.conj == "or" then -- verbs in -por have the present overridden s2, s3, p1, p2, p3 = "es", "e", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, "em" elseif base.conj == "ir" then s2, s3, p1, p2, p3 = "es", "e", "imos", {"ides" .. GL_TYPE, "is" .. PT_TYPE}, "em" else error("Internal error: Unrecognized conjugation " .. base.conj) end addit("1s", stems.pres1, "o") addit("2s", stems.pres_stressed, s2) addit("3s", stems.pres_stressed, s3) addit("1p", stems.pres_unstressed, p1) addit("2p", stems.pres_unstressed, p2) addit("3p", stems.pres_stressed, p3) end local function add_present_subj(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end local s1, s2, s3, p1, p2, p3 if stems.sub_conj == "ar" then s1, s2, s3, p1, p2, p3 = "e", "es", "e", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, "em" else s1, s2, s3, p1, p2, p3 = "a", "as", "a", "amos", {"ades" .. GL_TYPE, "ais" .. PT_TYPE}, "am" end addit("1s", stems.pres_sub_stressed, s1) addit("2s", stems.pres_sub_stressed, s2) addit("3s", stems.pres_sub_stressed, s3) addit("1p", stems.pres_sub_unstressed, p1) addit("2p", stems.pres_sub_unstressed, p2) addit("3p", stems.pres_sub_stressed, p3) end local function add_finite_non_present(base) local stems = base.this_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect stem. if stems.full_impf then add_tense("impf", stems.full_impf, "*a", "*as", "*a", "amos", {"ades" .. GL_TYPE, "eis" .. PT_TYPE, "ais" .. GL_ALTVAR}, "*am") elseif base.conj == "ar" then add_tense("impf", stems.impf, "ava", "avas", "ava", "ávamos", {"ávades" .. GL_TYPE, "áveis" .. PT_TYPE, "ávais" .. GL_ALTVAR}, "avam") else add_tense("impf", stems.impf, "ia", "ias", "ia", "íamos", {"íades" .. GL_TYPE, "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR}, "iam") end -- * at the beginning of the ending means to remove a final accent from the preterite stem. if stems.pret_conj == "irreg" then add_tense("pret", stems.gl_short_pret, "em" .. GL_TYPE, nil, "o" .. GL_TYPE) add_tense("pret", stems.pret, nil, {"*ste", "*che" .. GL_ALTVAR}, nil, "*mos", "*stes", {"rom" .. GL_TYPE, "*ram" .. PT_TYPE}) add_tense("pret", stems.pt_pret_1s, PT_TYPE) add_tense("pret", stems.pt_pret_3s, nil, nil, PT_TYPE) elseif stems.pret_conj == "ar" then add_tense("pret", stems.pret_base, "ei", {"aste", "ache" .. GL_ALTVAR}, "ou", "amos", "astes", {"árom" .. GL_TYPE, "aram" .. PT_TYPE}) elseif stems.pret_conj == "er" then add_tense("pret", stems.pret_base, {"im" .. GL_TYPE, "i" .. PT_TYPE}, {"este", "eche" .. GL_ALTVAR}, "eu", "emos", "estes", {"êrom" .. GL_TYPE, "eram" .. PT_TYPE}) else add_tense("pret", stems.pret_base, {"im" .. GL_TYPE, "i" .. PT_TYPE}, {"iste", "iche" .. GL_ALTVAR}, "iu", "imos", "istes", {"írom" .. GL_TYPE, "iram" .. PT_TYPE}) end -- * at the beginning of the ending means to remove a final accent from the stem. -- ** is similar but is "conditional" on a consonant preceding the final vowel. add_tense("plup", stems.plup, "**ra", "**ras", "**ra", "ramos", {"rades" .. GL_TYPE, "reis" .. PT_TYPE, "rais" .. GL_ALTVAR}, "**ram") add_tense("impf_sub", stems.impf_sub, "**sse", "**sses", "**sse", "ssemos", {"ssedes" .. GL_TYPE, "sseis" .. PT_TYPE}, "**ssem") add_tense("fut_sub", stems.fut_sub, "*r", "**res", "*r", "*rmos", "*rdes", "**rem") if base.refl then local mark = TEMP_MESOCLITIC_INSERTION_POINT add_tense("fut", stems.fut, {"ei" .. GL_TYPE, mark .. "ei" .. PT_TYPE}, {"ás" .. GL_TYPE, mark .. "ás" .. PT_TYPE}, {"á" .. GL_TYPE, mark .. "á" .. PT_TYPE}, {"emos" .. GL_TYPE, mark .. "emos" .. PT_TYPE}, {"edes" .. GL_TYPE, mark .. "eis" .. PT_TYPE}, {"ám" .. GL_TYPE, mark .. "ão" .. PT_TYPE} ) add_tense("cond", stems.cond, {"ia" .. GL_TYPE, mark .. "ia" .. PT_TYPE}, {"ias" .. GL_TYPE, mark .. "ias" .. PT_TYPE}, {"ia" .. GL_TYPE, mark .. "ia" .. PT_TYPE}, {"íamos" .. GL_TYPE, mark .. "íamos" .. PT_TYPE}, -- FIXME, is GL_ALTVAR correct for the mesoclitic variant of -íais? {"íades" .. GL_TYPE, mark .. "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR, mark .. "íais" .. GL_ALTVAR}, {"iam" .. GL_TYPE, mark .. "iam" .. PT_TYPE}) else -- Don't insert forms with the mesoclitic insertion point to avoid duplication in non-reflexive verbs. add_tense("fut", stems.fut, "ei", "ás", "á", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, {"ám" .. GL_TYPE, "ão" .. PT_TYPE}) add_tense("cond", stems.cond, "ia", "ias", "ia", "íamos", -- FIXME, is GL_ALTVAR correct for the mesoclitic variant of -íais? {"íades" .. GL_TYPE, "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR}, "iam") end -- Different stems for different parts of the personal infinitive to correctly handle forms of [[sair]] and [[pôr]]. add_tense("pers_inf", base.non_prefixed_verb, "", nil, "") add_tense("pers_inf", stems.pers_inf, nil, "**res", nil, "*rmos", "*rdes", "**rem") end local function add_non_finite_forms(base) local stems = base.this_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below for -- "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.verb}) end end -- verbs in -por have the gerund overridden local ger_ending = base.conj == "ar" and "ando" or base.conj == "er" and "endo" or "indo" addit("gerund", stems.pres_unstressed, ger_ending) -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the same -- form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate clitic -- pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic pronouns won't be -- added, and {{gl-reinteg-verb form of}} will wrongly consider all these combinations as possible inflections of the bare -- gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, stems.pres_unstressed, ger_ending) end end -- Skip the long/short past participle footnotes if called from {{gl-reinteg-verb}} so they don't show in the headword. local long_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-reinteg-verb" and {long_pp_footnote} or nil addit("pp_ms", stems.pp_ms, "", long_pp_footnotes) if not base.pp_inv then addit("pp_fs", stems.pp_fs, "", long_pp_footnotes) addit("pp_mp", stems.pp_ms, "s", long_pp_footnotes) addit("pp_fp", stems.pp_fs, "s", long_pp_footnotes) end if stems.short_pp_ms then local short_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-reinteg-verb" and {short_pp_footnote} or nil addit("short_pp_ms", stems.short_pp_ms, "", short_pp_footnotes) if not base.pp_inv then addit("short_pp_fs", stems.short_pp_fs, "", short_pp_footnotes) addit("short_pp_mp", stems.short_pp_ms, "s", short_pp_footnotes) addit("short_pp_fp", stems.short_pp_fs, "s", short_pp_footnotes) end end end local function copy_forms_to_imperatives(base) -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) if not skip_slot(base, "imp_2p") then -- Copy pres2p to imperative 2p minus -s since they are almost always the same. -- But not if there's an override, to avoid possibly throwing an error. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) local form_no_s, var_codes = rmatch(form, "^(.*)s(" .. var_code_c .. "*)$") if not form_no_s then error("Can't derive second-person plural imperative from second-person plural present indicative " .. "because form '" .. form .. "' doesn't end in -s") end return form_no_s .. var_codes end)) end -- Copy subjunctives to imperatives, unless there's an override for the given slot (as with the imp_1p of [[ir]]). for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = "[[" .. clitic .. "]]" .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Add the appropriate clitic pronouns in `clitics` to the forms in `base_slot`. `store_cliticized_form` is a function -- of three arguments (clitic, formobj, cliticized_form) and should store the cliticized form for the specified clitic -- and form object. local function suffix_clitic_to_forms(base, base_slot, clitics, store_cliticized_form) if not base.forms[base_slot] then -- This can happen, e.g. in only3s/only3sp/only3p verbs. return end local autolink = not base.alternant_multiword_spec.args.noautolinkverb for _, formobj in ipairs(base.forms[base_slot]) do for _, clitic in ipairs(clitics) do local cliticized_form if formobj.form:find(TEMP_MESOCLITIC_INSERTION_POINT) then -- mesoclisis in future and conditional local infinitive, suffix = rmatch(formobj.form, "^(.*)" .. TEMP_MESOCLITIC_INSERTION_POINT .. "(.*)$") if not infinitive then error("Internal error: Can't find mesoclitic insertion point in slot '" .. base_slot .. "', form '" .. formobj.form .. "'") end local full_form = infinitive .. suffix if autolink and not infinitive:find("%[%[") then infinitive = "[[" .. infinitive .. "]]" end cliticized_form = autolink and infinitive .. "-[[" .. clitic .. "]]-[[" .. full_form .. "|" .. suffix .. "]]" or infinitive .. "-" .. clitic .. "-" .. suffix else local clitic_suffix = autolink and "-[[" .. clitic .. "]]" or "-" .. clitic local form_needs_link = autolink and not formobj.form:find("%[%[") if base_slot:find("1p$") then -- Final -s disappears: arrependíamos + nos -> arrependíamo-nos, etc. cliticized_form = formobj.form:gsub("s$", "") if form_needs_link then cliticized_form = "[[" .. formobj.form .. "|" .. cliticized_form .. "]]" end else cliticized_form = formobj.form if form_needs_link then cliticized_form = "[[" .. cliticized_form .. "]]" end end cliticized_form = cliticized_form .. clitic_suffix end store_cliticized_form(clitic, formobj, cliticized_form) end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local clitic if not do_reflexive then clitic = base.clitic elseif slot:find("[123]") then local persnum = slot:match("^.*_(.-)$") clitic = person_number_to_reflexive_pronoun[persnum] else clitic = "se" end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = not slot:find("_sub") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{gl-reinteg-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "gl-reinteg-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, clitic, " ... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then suffix_clitic_to_forms(base, slot, {clitic}, function(clitic, formobj, cliticized_form) formobj.form = cliticized_form end ) end elseif not do_joined then -- Add clitic as separate word before all other forms. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, clitic, " ", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{gl-reinteg-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) -- Copy subjunctives to negative imperatives, preceded by "nom". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "nom " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[nom]] " .. form else return "[[nom]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end -- Remove special characters added to future and conditional forms to indicate mesoclitic insertion points. local function remove_mesoclitic_insertion_points(base) for slot, forms in pairs(base.forms) do if slot:find("^fut_") or slot:find("^cond_") then for _, form in ipairs(forms) do form.form = form.form:gsub(TEMP_MESOCLITIC_INSERTION_POINT, "") end end end end -- If called from {{gl-reinteg-verb}}, remove less-recommended variants; otherwise add a footnote indicating they are -- less recommended, and sort them last. local function process_altvar_forms(base) for slot, forms in pairs(base.forms) do -- As an optimization, check if there are any less-recommended forms and don't do anything if not. local saw_altvar = false for _, form in ipairs(forms) do if form.form:find(ALTVAR) then saw_altvar = true break end end if saw_altvar then if base.alternant_multiword_spec.source_template == "gl-reinteg-verb" then base.forms[slot] = iut.flatmap_forms(base.forms[slot], function(form) if form:find(ALTVAR) then return {} else return {form} end end) else local existing_forms = base.forms[slot] base.forms[slot] = {} for _, formobj in ipairs(existing_forms) do if not formobj.form:find(ALTVAR) then iut.insert_form(base.forms, slot, formobj) end end for _, formobj in ipairs(existing_forms) do if formobj.form:find(ALTVAR) then formobj.footnotes = iut.combine_footnotes(formobj.footnotes, {"[less recommended]"}) iut.insert_form(base.forms, slot, formobj) end end end end end end local function conjugate_verb(base) for _, vowel_alt in ipairs(base.vowel_alt_stems) do construct_stems(base, vowel_alt) add_present_indic(base) add_present_subj(base) end add_finite_non_present(base) add_non_finite_forms(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). copy_forms_to_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepende-te]] but [[nom]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end remove_mesoclitic_insertion_points(base) process_altvar_forms(base) end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif rfind(first_element, ":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) end else local comma_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*,%s*") for j = 1, #comma_separated_groups do local alt = comma_separated_groups[j][1] if not vowel_alternants[alt] then if #comma_separated_groups == 1 then parse_err("Unrecognized spec or vowel alternant '" .. alt .. "'") else parse_err("Unrecognized vowel alternant '" .. alt .. "'") end end if base.vowel_alt then for _, existing_alt in ipairs(base.vowel_alt) do if existing_alt.form == alt then parse_err("Vowel alternant '" .. alt .. "' specified twice") end end else base.vowel_alt = {} end table.insert(base.vowel_alt, {form = alt, footnotes = fetch_footnotes(comma_separated_groups[j])}) end end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form -- so we can use it below in the 'lemma_linked' form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb and reflexive pronoun. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve -- links in multiword lemmas and include links in non-lemma forms rather than allowing -- the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} if not base.no_built_in then for _, built_in_conj in ipairs(built_in_conjugations) do if type(built_in_conj.match) == "function" then base.prefix, base.non_prefixed_verb = built_in_conj.match(base.verb) elseif built_in_conj.match:find("^%^") and rsub(built_in_conj.match, "^%^", "") == base.verb then -- begins with ^, for exact match, and matches base.prefix, base.non_prefixed_verb = "", base.verb else base.prefix, base.non_prefixed_verb = rmatch(base.verb, "^(.*)(" .. built_in_conj.match .. ")$") end if base.prefix then -- we found a built-in verb for stem, forms in pairs(built_in_conj.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.stems[stem] = forms end end break end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeioô]r)$") if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end base.inf_stem = inf_stem suffix = suffix == "ôr" and "or" or suffix base.conj = suffix base.conj_vowel = suffix == "ar" and "á" or suffix == "ir" and "í" or "ê" base.frontback = suffix == "ar" and "back" or "front" if base.stems.vowel_alt then -- built-in verb with specified vowel alternation if base.vowel_alt then error(base.verb .. " is a recognized built-in verb, and should not have vowel alternations specified with it") end base.vowel_alt = iut.convert_to_general_list_form(base.stems.vowel_alt) end -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.stems[indicator_flag] end -- Convert vowel alternation indicators into stems. local vowel_alt = base.vowel_alt or {{form = "+"}} base.vowel_alt_stems = apply_vowel_alternations(base.inf_stem, vowel_alt) for _, vowel_alt_stems in ipairs(base.vowel_alt_stems) do if vowel_alt_stems.err then error("To use '" .. vowel_alt_stems.altobj.form .. "', present stem '" .. base.prefix .. base.inf_stem .. "' " .. vowel_alt_stems.err) end end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:gl-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) alternant_multiword_spec.vowel_alt = {} iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end -- Vowel alternants. Do these after calling detect_indicator_spec() because the latter sets base.vowel_alt for -- built-in verbs. if base.vowel_alt then for _, altobj in ipairs(base.vowel_alt) do m_table.insertIfNot(alternant_multiword_spec.vowel_alt, altobj.form) end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Galician verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "Galician " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "gl-reinteg-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("verbs with red links in their inflection tables") must_break = true break end end end end if must_break then break end end end if(base.conj == "or") then insert_cat("verbs ending in -er") else insert_cat("verbs ending in -" .. base.conj) end if base.irreg then insert_ann("irreg", "irregular") insert_cat("irregular verbs") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "impersonal") insert_cat("impersonal verbs") elseif base.only3sp then insert_ann("defective", "third-person only") insert_cat("third-person-only verbs") elseif base.only3p then insert_ann("defective", "third-person plural only") insert_cat("third-person-plural-only verbs") elseif base.no_pres_stressed or base.no_pres1_and_sub then insert_ann("defective", "defective") insert_cat("defective verbs") else insert_ann("defective", "regular") end if base.stems.short_pp then insert_ann("short_pp", "irregular short past participle") insert_cat("verbs with irregular short past participle") else insert_ann("short_pp", "regular") end if base.clitic then insert_cat("verbs with lexical clitics") end if base.refl then insert_cat("reflexive verbs") end if base.e_ei_cat then insert_ann("vowel_alt", "''e'' may become ''ei'' when stressed") insert_cat("verbs with e becoming ei when stressed") elseif not base.vowel_alt then insert_ann("vowel_alt", "non-alternating") else for _, alt in ipairs(base.vowel_alt) do if alt.form == "+" then insert_ann("vowel_alt", "non-alternating") else insert_ann("vowel_alt", vowel_alternant_to_desc[alt.form]) insert_cat("verbs with " .. vowel_alternant_to_cat[alt.form]) end end end local cons_alt = base.stems.cons_alt if cons_alt == nil then if base.conj == "ar" then if base.inf_stem:find("ç$") then cons_alt = "c-ç" elseif base.inf_stem:find("c$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-gu" end else if base.no_pres_stressed or base.no_pres1_and_sub then cons_alt = nil -- no e.g. c-ç alternation in this case elseif base.inf_stem:find("c$") then cons_alt = "c-ç" elseif base.inf_stem:find("qu$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-j" elseif base.inf_stem:find("gu$") then cons_alt = "g-gu" end end end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat("verbs with " .. desc) else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.irreg = {} ann.short_pp = {} ann.defective = {} ann.vowel_alt = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local short_pp = table.concat(ann.short_pp, " or ") if short_pp ~= "" and short_pp ~= "regular" then table.insert(ann_parts, short_pp) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local vowel_alt = table.concat(ann.vowel_alt, " or ") if vowel_alt ~= "" and vowel_alt ~= "non-alternating" then table.insert(ann_parts, vowel_alt) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, "; ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() if alternant_multiword_spec.forms.short_pp_ms then alternant_multiword_spec.has_short_pp = true end local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then if slot:find("^pp_") then accel_obj.form = slot elseif slot == "gerund" then accel_obj.form = "reinteg-gerund-" .. reconstructed_verb_spec else accel_obj.form = "reinteg-verb-form-" .. reconstructed_verb_spec end end return accel_obj end -- Italicize less-recommended forms. local function generate_link(data) local formval_for_link = data.form.formval_for_link if formval_for_link:find(ALTVAR) then formval_for_link = formval_for_link:gsub(ALTVAR, "") return m_links.full_link({lang = lang, term = formval_for_link, tr = "-", accel = data.form.accel_obj}, "term") .. iut.get_footnote_text(data.form.footnotes, data.footnote_obj) end end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, canonicalize = function(form) return export.remove_variant_codes(form, "keep altvar") end, generate_link = generate_link, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead" align=center>&nbsp; &nbsp; Reintegrated conjugation of {title} (See [[Appendix:Reintegrationism]])</div> <div class="NavContent" align="left"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! class="roa-person-number-header" rowspan="2" | ! class="roa-person-number-header" colspan="3" | เอกพจน์ ! class="roa-person-number-header" colspan="3" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<eu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<ti>> / <<tu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<ele>> / <<ela>> / <<você>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<nós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<vós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<eles>> / <<elas>> / <<vocês>>) |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="infinitivo">รูปกริยากลาง</span>'' |- ! class="roa-nonfinite-header" | '''<span title="infinitivo impessoal">คำอบุรุษกริยา</span>''' | colspan="6" | {infinitive} |- ! class="roa-nonfinite-header" | '''<span title="infinitivo flexionado">คำบุรุษกริยา</span>''' | {pers_inf_1s} | {pers_inf_2s} | {pers_inf_3s} | {pers_inf_1p} | {pers_inf_2p} | {pers_inf_3p} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="gerúndio">รูปกริยาเป็นนาม</span>'' |- | class="roa-nonfinite-header" | | colspan="6" | {gerund} |-{pp_clause} ! style="border: 1px solid #999999; background:#d0dff4" colspan="7" | ''<span title="indicativo">มาลาบอกเล่า</span>'' |- ! class="roa-indicative-left-rail" | <span title="presente">ปัจจุบันกาล</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito imperfeito">ไม่สมบูรณ์</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito perfeito">อดีตกาลสิ้นสุด<br>(สมบูรณ์)</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito mais-que-perfeito simples">อภิสมบูรณ์</span> | {plup_1s} | {plup_2s} | {plup_3s} | {plup_1p} | {plup_2p} | {plup_3p} |- ! class="roa-indicative-left-rail" | <span title="futuro do presente">อนาคตกาล</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" | <span title="condicional">มาลาเงื่อนไข</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" colspan="7" | ''<span title="conjuntivo">มาลาสมมุติ</span>'' |- ! class="roa-subjunctive-left-rail" | <span title=" presente do conjuntivo">ปัจจุบันกาล</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="pretérito imperfeito do conjuntivo">ไม่สมบูรณ์</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="futuro do conjuntivo">อนาคตกาล</span> | {fut_sub_1s} | {fut_sub_2s} | {fut_sub_3s} | {fut_sub_1p} | {fut_sub_2p} | {fut_sub_3p} |- ! class="roa-imperative-left-rail" colspan="7" | ''<span title="imperativo">มาลาสั่ง</span>'' |- ! class="roa-imperative-left-rail" | <span title="imperativo afirmativo">เชิงยืนยัน</span> | rowspan="2" | | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" | <span title="imperativo negativo">เชิงปฏิเสธ</span> (<<nom>>) | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div> ]=] local double_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio irregular">รูปกริยาขยายอดีตกาลสั้น</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {short_pp_ms} | colspan="3" | {short_pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {short_pp_fs} | colspan="3" | {short_pp_fp} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio regular">รูปกริยาขยายอดีตกาลยาว</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local single_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio passado">รูปกริยาขยายอดีตกาล</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form) if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" -- has_short_pp is computed in show_forms(). local pp_template = alternant_multiword_spec.has_short_pp and double_pp_template or single_pp_template forms.pp_clause = m_string_utilities.format(pp_template, forms) local table_with_pronouns = rsub(basic_table, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "แม่แบบ" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{gl-reinteg-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "gl-reinteg-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "gl-reinteg-conj" or pagename == "gl-reinteg-verb") and in_template_space() then arg1 = "traguer" elseif pagename == "gl-reinteg-verb form of" and in_template_space() then arg1 = "amar" else arg1 = "<>" end end -- When called from {{gl-reinteg-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "gl-reinteg-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "gl-reinteg-verb form of" and in_template_space() then verb_form_of_form = "ame" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, get_variants = function(form) return rsub(form, not_var_code_c, "") end, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "gl-reinteg-conj" then -- Remove variant codes to avoid causing problems with bots. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = export.remove_variant_codes(form.form) end end return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{gl-reinteg-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(parent_args, "gl-reinteg-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export gxeutmsepgynyr6i7ffn4bxywb2bgdm 5729292 5729291 2026-07-20T05:27:52Z Octahedron80 267 5729292 Scribunto text/plain --[=[ This module implements {{gl-reinteg-conj}} and provides the underlying conjugation functions for {{gl-reinteg-verb}}, as well as for {{gl-verb}} when invoked with |reinteg=1. The actual formatting of both {{gl-reinteg-verb}} and {{gl-verb}} happens in [[Module:gl-headword]]. This module uses the [[Appendix:Reintegrationism|reintegrationist]] norm for Galician spelling. See also [[Module:gl-verb]], which implements the standard norm. Authorship: Ben Wing <benwing2>, MedK <medk1> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Galician form representing the value of a given slot. -- "lemma" = The dictionary form of a given Galician term. For Galician, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("gl") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:gl-reinteg-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility local function link_term(term) return m_links.full_link({ lang = lang, term = term }, "term") end local V = com.V -- vowel regex class local AV = com.AV -- accented vowel regex class local C = com.C -- consonant regex class local AC = u(0x0301) -- acute = ́ local TEMPC1 = u(0xFFF1) -- temporary character used for consonant substitutions local TEMP_MESOCLITIC_INSERTION_POINT = u(0xFFF2) -- temporary character used to mark the mesoclitic insertion point -- Variant codes and the like. -- NOTE: These codes should be *PREFIXED* onto stems and *SUFFIXED* onto endings. That way they won't interfere in the -- operation of combine_stem_ending(). -- -- GL_TYPE = "Galician-type", PT_TYPE = "Portuguese-type". GL_TYPE stems cannot combine with PT_TYPE endings and -- vice-versa. GL_ONLY_TYPE = "Galician-only type"; GL_ONLY_TYPE stems can only combine with endings specifically -- marked as GL_TYPE. local GL_TYPE = u(0xFFF3) local GL_ONLY_TYPE = u(0xFFF4) local PT_TYPE = u(0xFFF5) -- ALTVAR = Less-recommended variants listed at the bottom of the Estraviz conjugation tables rather than in the main -- table. We list these in the main table but with a footnote indicating they are less-recommended alternatives, and -- italicize them to visually set them apart. local ALTVAR = u(0xFFF6) local GL_ALTVAR = GL_TYPE .. ALTVAR local GL_ONLY_ALTVAR = GL_ONLY_TYPE .. ALTVAR local var_codes_no_altvar = GL_TYPE .. GL_ONLY_TYPE .. PT_TYPE local all_var_codes = var_codes_no_altvar .. ALTVAR local var_code_c = "[" .. all_var_codes .. "]" local var_code_no_altvar_c = "[" .. var_codes_no_altvar .. "]" local not_var_code_c = "[^" .. all_var_codes .. "]" -- Export variant codes for use in [[Module:pt-gl-inflections]]. export.GL_TYPE = GL_TYPE export.GL_ONLY_TYPE = GL_ONLY_TYPE export.PT_TYPE = PT_TYPE export.ALTVAR = ALTVAR local short_pp_footnote = "[usually used with auxiliary verbs " .. link_term("ser") .. " and " .. link_term("estar") .. "]" local long_pp_footnote = "[usually used with auxiliary verbs " .. link_term("haver") .. " and " .. link_term("ter") .. "]" --[=[ Vowel alternations: <i-e>: 'i' in pres1s and the whole present subjunctive; 'e' elsewhere when stressed. Generally 'e' otherwise when unstressed. E.g. [[sentir]], [[conseguir]] (the latter additionally with 'gu-g' alternation). <u-o>: 'u' in pres1s and the whole present subjunctive; 'o' elsewhere when stressed. Either 'o' or 'u' otherwise when unstressed. E.g. [[dormir]], [[subir]]. <i>: 'i' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'e'. E.g. [[progredir]], [[premir]]. <u>: 'u' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'o'. E.g. [[polir]], [[extorquir]] (the latter also <u-o>). <í>: The last 'i' of the stem (excluding stem-final 'i') becomes 'í' when stressed. E.g.: * [[proibir]] ('proíbo, proíbe(s), proíbem, proíba(s), proíbam') * [[faiscar]] ('faísco, faísca(s), faíscam, faísque(s), faísquem' also with 'c-qu' alternation) * [[homogeneizar]] ('homogeneízo', etc.) * [[mobiliar]] ('mobílio', etc.; note here the final -i is ignored when determining which vowel to stress) * [[tuitar]] ('tuíto', etc.) <ú>: The last 'u' of the stem (excluding stem-final 'u') becomes 'ú' when stressed. E.g.: * [[reunir]] ('reúno, reúne(s), reúnem, reúna(s), reúnam') * [[esmiuçar]] ('esmiúço, esmiúça(s), esmiúça, esmiúce(s), esmiúcem' also with 'ç-c' alternation) * [[reusar]] ('reúso, reúsa(s), reúsa, reúse(s), reúsem') * [[saudar]] ('saúdo, saúda(s), saúda, saúde(s), saúdem') ]=] local vowel_alternants = m_table.listToSet({"i-e", "i", "í", "u-o", "u", "ú", "ei", "+"}) local vowel_alternant_to_desc = { ["i-e"] = "''i-e'' alternation in present singular", ["i"] = "''e'' becomes ''i'' when stressed", ["í"] = "''i'' becomes ''í'' when stressed", ["u-o"] = "''u-o'' alternation in present singular", ["u"] = "''o'' becomes ''u'' when stressed", ["ú"] = "''u'' becomes ''ú'' when stressed", ["ei"] = "''i'' becomes ''ei'' when stressed", } local vowel_alternant_to_cat = { ["i-e"] = "i-e alternation in present singular", ["i"] = "e becoming i when stressed", ["í"] = "i becoming í when stressed", ["u-o"] = "u-o alternation in present singular", ["u"] = "o becoming u when stressed", ["ú"] = "u becoming ú when stressed", ["ei"] = "i becoming ei when stressed", } local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} person_number_to_reflexive_pronoun = { ["1s"] = "me", ["2s"] = "te", ["3s"] = "se", ["1p"] = "nos", ["2p"] = "vos", ["3p"] = "se", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "no_pres1_and_sub", "only3s", "only3sp", "only3p", "pp_inv", "irreg", "no_built_in", "e_ei_cat", } -- Remove any variant codes e.g. GL_TYPE, PT_TYPE, ALTVAR. Needs to be called from [[Module:gl-reinteg-headword]] on the -- output of do_generate_forms(). `keep_altvar` leaves ALTVAR; used in the `canonicalize` function of show_forms() -- because we then process and remove it in `generate_forms`. FIXME: Use metadata for this once it's supported in -- [[Module:inflection utilities]]. function export.remove_variant_codes(form, keep_altvar) return rsub(form, keep_altvar and var_code_no_altvar_c or var_code_c, "") end -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"short_pp_ms", "short|m|s|past|part"}, {"short_pp_fs", "short|f|s|past|part"}, {"short_pp_mp", "short|m|p|past|part"}, {"short_pp_fp", "short|f|p|past|part"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{gl-reinteg-verb form of}}. For example, -- for a reflexive-only verb like [[arrepender-se]], we want to be able to use {{gl-reinteg-verb form of}} on -- [[arrependa]] (which should mention that it is a part of 'me arrependa', first-person singular present -- subjunctive, and 'se arrependa', third-person singular present subjunctive) or on [[arrependemos]] (which should -- mention that it is a part of 'arrependemo-nos', first-person plural present indicative or preterite). Similarly, -- we want to use {{gl-reinteg-verb form of}} on [[arrependendo]] (which should mention that it is a part of -- 'se ... arrependendo', syntactic variant of [[arrependendo-se]], which is the gerund of [[arrepender-se]]). To -- do this, we need to be able to map non-reflexive parts like [[arrependa]], [[arrependemos]], [[arrependendo]], -- etc. to their reflexive equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like -- [[arrependendo]], [[arrepender]] and imperatives, to the separated syntactic variant of the verb+clitic -- combination. We do this by creating slots for the non-reflexive part equivalent of each basic reflexive slot, -- and for the separated syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. -- We use slots in this way to deal with multiword lemmas. Note that we run into difficulties mapping between -- reflexive verbs, non-reflexive part equivalents, and separated syntactic variants if a slot contains more than -- one form. To handle this, if there are the same number of forms in two slots we're trying to match up, we assume -- the forms match one-to-one; otherwise we don't match up the two slots (which means {{gl-reinteg-verb form of}} won't -- work in this case, but such a case is extremely rare and not worth worrying about). Alternatives that handle -- this "properly" are significantly more complicated and require non-trivial modifications to -- [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "gl-reinteg-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{gl-reinteg-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "pres|ind", person_number_list) add_basic_personal_slot("impf", "impf|ind", person_number_list) add_basic_personal_slot("pret", "pret|ind", person_number_list) add_basic_personal_slot("plup", "plup|ind", person_number_list) add_basic_personal_slot("fut", "fut|ind", person_number_list) add_basic_personal_slot("cond", "cond", person_number_list) add_basic_personal_slot("pres_sub", "pres|sub", person_number_list) add_basic_personal_slot("impf_sub", "impf|sub", person_number_list) add_basic_personal_slot("fut_sub", "fut|sub", person_number_list) add_basic_personal_slot("imp", "imp", imp_person_number_list) add_basic_personal_slot("pers_inf", "pers|inf", person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'nom' + subjunctive. add_basic_personal_slot("neg_imp", "neg|imp", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values(separated_groups, data) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local retval = {form = separated_group[1], footnotes = footnotes} table.insert(retvals, retval) end return retvals end local function simple_choice(choices) return function(separated_groups, data) if #separated_groups > 1 then data.parse_err("For spec '" .. data.prefix .. ":', only one value currently allowed") end if #separated_groups[1] > 1 then data.parse_err("For spec '" .. data.prefix .. ":', no footnotes currently allowed") end local choice = separated_groups[1][1] if not m_table.contains(choices, choice) then data.parse_err("For spec '" .. data.prefix .. ":', saw value '" .. choice .. "' but expected one of '" .. table.concat(choices, ",") .. "'") end return choice end end for _, overridable_stem in ipairs { "pres_unstressed", "pres_stressed", "pres1_and_sub", -- Don't include pres1; use pres_1s if you need to override just that form "impf", "full_impf", {"pret_conj", simple_choice({"irreg", "ar", "er", "ir"}) }, "pret_base", "pret", "gl_short_pret", "pt_pret_1s", "pt_pret_3s", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", {"sub_conj", simple_choice({"ar", "er"}) }, "plup", "impf_sub", "fut_sub", "pers_inf", "pp", "short_pp", } do if type(overridable_stem) == "string" then overridable_stems[overridable_stem] = allow_multiple_values else local stem, validator = unpack(overridable_stem) overridable_stems[stem] = validator end end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `vowel_alt`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/z, g/gu, gu/gü, g/j) occur automatically as appropriate for the ending. 2. If the stem begins with an acute accent, the accent is moved onto the last vowel of the prefix (for handling verbs in -uar such as [[minguar]], pres_3s 'míngua'). 3. If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. 4. If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem, e.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. 5. If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1_and_sub: Overriding stem for 1s present indicative and the entire subjunctive. Only set by irregular verbs and by the indicators `no_pres_stressed` (e.g. [[precaver]]) and `no_pres1_and_sub` (since verbs of this sort, e.g. [[puir]], are missing the entire subjunctive as well as the 1s present indicative). Used by many irregular verbs, e.g. [[caber]], verbs in '-air', [[dizer]], [[ter]], [[valer]], etc. Some verbs set this and then supply an override for the pres_1sg if it's irregular, e.g. [[saber]], with irregular subjunctive stem "saib-" and special 1s present indicative "sei". -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres1_and_sub if given, else pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to pres1_and_sub if given, else the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- sub_conj: Determines the set of endings used in the subjunctive. Should be one of "ar" or "er". -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- full_impf: The full imperfect stem missing only the endings (-a, -as, -am, etc.). Used for verbs with irregular imperfects such as [[ser]], [[ter]], [[vir]] and [[pôr]]. Needs to include an accent on the stressed vowel, which will automatically be removed when not needed. -- pret_conj: Determines the set of endings used in the preterite. Should be one of "ar", "er", "ir" or "irreg". Defaults to the conjugation as determined from the infinitive. When pret_conj == "irreg", `pret` is used, otherwise `pret_base`. -- pret_base: The preterite stem (not including the -a-/-e-/-i- stem suffix). Defaults to the infinitive stem. Only used when pret_conj ~= "irreg". -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.). Needs to include the accent on the final vowel that occurs in some forms, e.g. 'figé' for [[fazer]], 'fô' for [[ser]]; the accent will automatically be removed when not needed. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[fazer]], [[poder]], [[trazer]], etc. The pret_1s and pret_3s are handled using the gl_short_pret stem instead for "Galician"-ending forms (pret_1s '-em', pret_3s '-o') and using pt_pret_1s and pt_pret_3s for "Portuguese"-ending forms. Defaults to `pret_base` + the accented conjugation vowel. -- gl_short_pret: The short preterite stem, used with "Galician" 1s and 3s endings (pret_1s '-em', pret_3s '-o'). Only used with irregular preterites (pret_conj == "irreg"). Normally derived from gl_pret by deleting the final vowel, and doesn't need to be given explicitly. -- pt_pret_1s: The "Portuguese" pret_1s form. In addition to this, the "Galician" pret_1s form will be included, formed from gl_short_pret by adding '-em'. Does not need to be given if an override for pret_1s is supplied. -- pt_pret_3s: The "Portuguese" pret_3s form. In addition to this, the "Galician" pret_3s form will be included, formed from gl_short_pret by adding '-o' (which may cause the preceding consonant to shift to preserve the sound). Does not need to be given if an override for pret_3s is supplied. -- fut: The future stem. Defaults to the infinitive stem + the unaccented conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Needs to include the accent on the final vowel that occurs in some forms; see `pret` for more information. Defaults to `pret`. -- fut_sub: The future subjunctive stem. Needs to include the accent on the final vowel that occurs in some forms; see `gl_pret` for more information. Defaults to the merger of `gl_pret` and `pt_pret`. -- plup: The pluperfect stem. Needs to include the accent on the final vowel that occurs in some forms; see `pret` for more information. Defaults to `pret`. -- pers_inf: The personal infinitive stem. Defaults to the infinitive stem + the accented conjugation vowel. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- short_pp: The short masculine singular past participle, for verbs with such a form. No default. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- (1) Verbs with short past participles: need to specify the short pp explicitly. -- -- aceitar: use <short_pp:aceite> -- anexar, completar, expressar, expulsar, findar, fritar, ganhar, gastar, limpar, pagar, pasmar, pegar, soltar: -- use <short_pp:anexo> etc. -- assentar: use <short_pp:assente> -- entregar: use <short_pp:entregue> -- enxugar: use <short_pp:enxuto> -- matar: use <short_pp:morto> -- -- (2) Verbs with orthographic consonant alternations: handled automatically. -- -- -car (brincar, buscar, pecar, trancar, etc.): automatically handled in combine_stem_ending() -- -çar (alcançar, começar, laçar): automatically handled in combine_stem_ending() -- -gar (apagar, cegar, esmagar, largar, navegar, resmungar, sugar, etc.): automatically handled in combine_stem_ending() -- -- (3) Verbs with vowel alternations: need to specify the alternation explicitly unless it always happens, in -- which case it's handled automatically through an entry below. -- -- esmiuçar changing to esmiúço: use <ú> -- faiscar changing to faísco: use <í> -- -iar changing to -eio (ansiar, incendiar, mediar, odiar, remediar, etc.): use <ei> -- -izar changing to -ízo (ajuizar, enraizar, homogeneizar, plebeizar, etc.): use <í> -- mobiliar changing to mobílio: use <í> -- reusar changing to reúso: use <ú> -- saudar changing to saúdo: use <ú> -- tuitar/retuitar changing to (re)tuíto: use <í> { -- dar, desdar match = match_against_verbs("dar", {"^", "^des", "^re"}), forms = { pres_1s = "dou", pres_2s = "dás", pres_3s = "dá", -- damos, dades/dais regular pres_3p = {GL_TYPE .. "dam", PT_TYPE .. "dão"}, pret_conj = "irreg", pret = "dé", pret_1s = "dei", pret_3s = "deu", pres_sub_1s = "dê", pres_sub_2s = "dês", pres_sub_3s = "dê", -- demos, dedes/deis regular pres_sub_3p = {GL_TYPE .. "dem", PT_TYPE .. "deem"}, irreg = true, } }, { -- -ear (frear, nomear, semear, etc.) match = "ear", forms = { pres_stressed = {"ei", GL_ALTVAR .. "e"}, e_ei_cat = true, } }, { -- estar match = match_against_verbs("estar", {"^", "sob", "sobr"}), forms = { pres_1s = "estou", pres_2s = "estás", pres_3s = "está", pres_3p = {GL_TYPE .. "estám", PT_TYPE .. "estão"}, pres1_and_sub = "estej", -- only for subjunctive as we override pres_1s sub_conj = "er", pret_conj = "irreg", pret = "estivé", pt_pret_1s = "estive", pt_pret_3s = "esteve", -- [[sobestar]], [[sobrestar]] are transitive so they have fully inflected past participles pp_inv = function(base, prefix) return prefix == "" end, irreg = true, } }, -------------------------------------------------------------------------------------------- -- -er -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- precaver: use <no_pres_stressed> -- -cer (verbs in -ecer, descer, vencer, etc.): automatically handled in combine_stem_ending() -- -ger (proteger, reger, etc.): automatically handled in combine_stem_ending() -- -guer (erguer/reerguer/soerguer): automatically handled in combine_stem_ending() { -- benzer match = "benzer", forms = {short_pp = "bento"} }, { -- caber match = "caber", forms = { pres1_and_sub = "caib", pret_conj = "irreg", pret = "coubé", pt_pret_1s = "coube", pt_pret_3s = "coube", irreg = true, } }, { -- crer, descrer match = "crer", forms = { pres_2s = "crês", pres_3s = "crê", pres_2p = "credes", pres_3p = {GL_TYPE .. "crem", PT_TYPE .. "creem"}, pres1_and_sub = {"crei", GL_ALTVAR .. "cre"}, irreg = true, } }, { -- dizer, bendizer, condizer, contradizer, desdizer, maldizer, predizer, etc. match = "dizer", forms = { -- use 'digu' because we're in a front environment; if we use 'dig', we'll get '#dijo' pres1_and_sub = "digu", pres_2s = {GL_TYPE .. "dis", PT_TYPE .. "dizes"}, pres_3s = {GL_TYPE .. "di", PT_TYPE .. "diz"}, pres_3p = {GL_TYPE .. "dim", PT_TYPE .. "dizem"}, pret_conj = "irreg", pret = {GL_TYPE .. "dixé", PT_TYPE .. "dissé"}, pt_pret_1s = "disse", pt_pret_3s = "disse", pp = "dito", fut = "dir", irreg = true, } }, { -- eleger, reeleger match = "eleger", forms = {short_pp = "eleito"} }, { -- acender, prender; not desprender, etc. match = match_against_verbs("ender", {"^ac", "^pr"}), forms = {short_pp = "eso"} }, { -- fazer, afazer, contrafazer, desfazer, liquefazer, perfazer, putrefazer, rarefazer, refazer, satisfazer, tumefazer match = "fazer", forms = { -- use 'fagu' because we're in a front environment; if we use 'fag', we'll get '#fajo' pres1_and_sub = {GL_TYPE .. "fagu", PT_TYPE .. "faç"}, pres_2s = {GL_TYPE .. "fás", PT_TYPE .. "fazes"}, pres_3s = {GL_TYPE .. "fai", PT_TYPE .. "faz"}, pres_3p = {GL_TYPE .. "fam", PT_TYPE .. "fazem"}, pret_conj = "irreg", pret = {GL_TYPE .. "figé", PT_TYPE .. "fizé", GL_ONLY_ALTVAR .. "fizé"}, pt_pret_1s = "fiz", pt_pret_3s = "fez", pp = "feito", fut = "far", irreg = true, } }, { match = "^haver", forms = { pres_1s = "hei", pres_2s = "hás", pres_3s = {"há", {form = GL_ALTVAR .. "hai", footnotes = {"[also impersonal]"}}}, pres_3p = {GL_TYPE .. "ham", PT_TYPE .. "hão"}, pres1_and_sub = "haj", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "houvé", pt_pret_1s = "houve", pt_pret_3s = "houve", imp_2s = "há", irreg = true, } }, -- reaver below under r- { -- jazer, adjazer match = "jazer", forms = { pres_3s = "jaz", irreg = true, } }, { -- ler, reler, tresler; not excel(l)er, valer, etc. match = match_against_verbs("ler", {"^", "^re", "tres"}), forms = { pres_2s = "lês", pres_3s = "lê", pres_2p = "ledes", pres_3p = {GL_TYPE .. "lem", PT_TYPE .. "leem"}, pres1_and_sub = {"lei", GL_ALTVAR .. "le"}, irreg = true, } }, { -- morrer, desmorrer match = "morrer", forms = {short_pp = "morto"} }, { -- moer, but not remoer match = "^moer", forms = { pres_2s = "móis", pres_3s = "mói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() pres1_and_sub = {"mo", GL_ALTVAR .. "moi"}, short_pp = "mudo", irreg = true, } }, { -- doer, remoer, roer/corroer, soer match = "oer", forms = { pres_2s = "óis", pres_3s = "ói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() pres1_and_sub = {"o", GL_ALTVAR .. "oi"}, irreg = true, } }, { -- perder match = "perder", forms = { -- use 'perqu' because we're in a front environment; if we use 'perc', we'll get '#perço' -- we don't tag these forms GL_TYPE or PT_TYPE because both occur with both endings -ais/-ades pres1_and_sub = {"perd", "perqu"}, irreg = true, } }, { -- poder match = "poder", forms = { pres1_and_sub = {GL_TYPE .. "pod", PT_TYPE .. "poss"}, pret_conj = "irreg", pret = "pudé", pt_pret_1s = "pude", pt_pret_3s = "pôde", irreg = true, } }, { -- prazer, aprazer, comprazer, desprazer -- FIXME: comprazer also has regular preterite match = "prazer", forms = { pres_3s = "praz", pret_conj = "irreg", pret = "prouvé", pt_pret_1s = "prouve", pt_pret_3s = "prouve", only3sp = function(base, prefix) return prefix == "a" end, imp_2s = {GL_TYPE .. "praze", PT_TYPE .. "praz"}, irreg = true, } }, -- prover below, just below ver { -- requerer; must precede querer match = "requerer", forms = { pres_3s = "requer", pres1_and_sub = "requeir", imp_2s = {"requer"}, -- regular preterite, unlike [[querer]] irreg = true, } }, { -- querer, desquerer, malquerer match = "querer", forms = { pres_1s = "quero", pres_3s = "quer", pres1_and_sub = "queir", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = {GL_TYPE .. "quigé", PT_TYPE .. "quisé"}, pt_pret_1s = "quis", pt_pret_3s = "quis", irreg = true, } }, { match = "reaver", forms = { pres_1s = "reei", pres_2s = "reás", pres_3s = "reá", pres_3p = {GL_TYPE .. "ream", PT_TYPE .. "reão"}, pres1_and_sub = "reaj", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "reouvé", pt_pret_1s = "reouve", pt_pret_3s = "reouve", irreg = true, } }, { -- saber, ressaber match = "saber", forms = { pres_1s = "sei", pres1_and_sub = "saib", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "soubé", pt_pret_1s = "soube", pt_pret_3s = "soube", irreg = true, } }, { -- escrever/reescrever, circunscrever, descrever/redescrever, inscrever, prescrever, proscrever, subscrever, -- transcrever, others? match = "screver", forms = { pp = "scrito", irreg = true, } }, { -- suspender match = "suspender", forms = {short_pp = "suspenso"} }, { match = "^ser", forms = { pres_1s = "sou", pres_2s = "és", pres_3s = "é", pres_1p = "somos", pres_2p = {GL_TYPE .. "sodes", PT_TYPE .. "sois"}, pres_3p = {GL_TYPE .. "som", PT_TYPE .. "são"}, pres1_and_sub = "sej", -- only for subjunctive as we override pres_1s full_impf = "ér", pret_conj = "irreg", pret = "fô", pret_1s = {GL_TYPE .. "fum", PT_TYPE .. "fui"}, pret_3s = "foi", imp_2s = "sê", imp_2p = "sede", pp_inv = true, irreg = true, } }, { -- We want to match abster, conter, deter, etc. but not abater, cometer, etc. No way to avoid listing each verb. match = match_against_verbs("ter", {"abs", "^a", "con", "de", "entre", "man", "ob", "^re", "sus", "^"}), forms = { -- FIXME, Estraviz says 'contens', 'detens' etc. but that may be a typo pres_2s = function(base, prefix) return {GL_TYPE .. "tés", PT_TYPE .. (prefix == "" and "tens" or "téns")} end, -- FIXME, Estraviz says 'contem', 'detem' etc. but that may be a typo pres_3s = function(base, prefix) return prefix == "" and "tem" or "tém" end, pres_2p = "tendes", pres_3p = {GL_TYPE .. "tenhem", PT_TYPE .. "têm", GL_ALTVAR .. "tém"}, pres1_and_sub = "tenh", full_impf = "tính", pret_conj = "irreg", pret = "tivé", pt_pret_1s = "tive", pt_pret_3s = "teve", irreg = true, } }, { match = "trazer", forms = { -- use 'tragu' because we're in a front environment; if we use 'trag', we'll get '#trajo' pres1_and_sub = "tragu", pres_3s = "traz", pret_conj = "irreg", pret = "trouxé", pt_pret_1s = "trouxe", pt_pret_3s = "trouxe", fut = "trar", irreg = true, } }, { match = "traguer", forms = { pret_conj = "irreg", pret = "trouxé", pt_pret_1s = "trouxe", pt_pret_3s = "trouxe", irreg = true, } }, { -- valer, desvaler, equivaler match = "valer", forms = { pres1_and_sub = "valh", irreg = true, } }, { -- We want to match antever etc. but not absolver, atrever etc. No way to avoid listing each verb. match = match_against_verbs("ver", {"ante", "entre", "pre", "^re", "^"}), forms = { pres_2s = "vês", pres_3s = "vê", pres_2p = "vedes", pres_3p = function(base, prefix) return {GL_TYPE .. (prefix == "" and "vem" or "vêm"), PT_TYPE .. "veem"} end, pres1_and_sub = "vej", pret_conj = "irreg", pret = "ví", pret_1s = {GL_TYPE .. "vim", PT_TYPE .. "vi"}, pret_3s = "viu", pp = "visto", irreg = true, } }, { -- [[prover]] and [[desprover]] have regular preterite and past participle match = "prover", forms = { pres_2s = "provês", pres_3s = "provê", -- FIXME: Estraviz says 'provem' but that may be a typo pres_2p = "provedes", pres_3p = {GL_TYPE .. "provêm", PT_TYPE .. "proveem"}, pres1_and_sub = "provej", irreg = true, } }, { -- volver, devolver, envolver, revolver, etc. match = "volver", forms = {short_pp = "volto"}, }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- abolir: use <u-o> -- barrir: use <only3sp> -- carpir, colorir, demolir: use <no_pres1_and_sub> -- descolorir: use <no_pres1_and_sub> -- delir, espavorir, falir, florir, remir, renhir: use <no_pres_stressed> -- empedernir: use <i-e> -- transir: regular -- aspergir, despir, flectir/deflectir/genuflectir/genufletir/reflectir/refletir, mentir/desmentir, -- sentir/assentir/consentir/dissentir/pressentir/ressentir, convergir/divergir, aderir/adherir, -- ferir/auferir/conferir/deferir/desferir/diferir/differir/inferir/interferir/preferir/proferir/referir/transferir, -- gerir/digerir/ingerir/sugerir, preterir, competir/repetir, servir, advertir/animadvertir/divertir, -- vestir/investir/revestir/travestir, seguir/conseguir/desconseguir/desseguir/perseguir/prosseguir: use <i-e> -- inerir: use <i-e> -- compelir/expelir/impelir/repelir: use <i-e> -- dormir, engolir, tossir, subir, acudir/sacudir, fugir, sumir/consumir (NOT assumir/presumir/resumir): use <u-o> -- polir/repolir: use <u> -- premir: use <i> -- extorquir/retorquir: <u-o,u> -- agredir/progredir/regredir/transgredir: use <i> -- denegrir, prevenir: use <i> -- eclodir: use <u-o> -- cerzir: use <i-e> -- proibir/coibir: use <í> -- reunir: use <ú> -- parir/malparir: use <no_pres_stressed> -- explodir/implodir: use <u-o> -- -- -cir alternations (aducir, ressarcir): automatically handled in combine_stem_ending() -- -gir alternations (agir, dirigir, exigir): automatically handled in combine_stem_ending() -- -guir alternations (e.g. conseguir): automatically handled in combine_stem_ending() -- -quir alternations (e.g. extorquir): automatically handled in combine_stem_ending() { -- verbs in -air (cair, sair, trair and derivatives: decair/descair/recair, sobres(s)air, -- abstrair/atrair/contrair/distrair/extrair/protrair/retrair/subtrair) match = "air", forms = { pres1_and_sub = "ai", pres_2s = "ais", pres_3s = "ai", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- abrir/desabrir/reabrir match = "abrir", forms = {pp = "aberto"} }, { -- cobrir/descobrir/encobrir/recobrir/redescobrir match = "cobrir", forms = {vowel_alt = "u-o", pp = "coberto"} }, { -- conduzir, produzir, reduzir, traduzir, etc.; luzir, reluzir, tremeluzir match = "uzir", forms = { pres_3s = "uz", -- FIXME, is this correct? imp_2s = "uze", irreg = true, } }, { -- pedir, desimpedir, despedir, espedir, expedir, impedir -- medir -- comedir match = match_against_verbs("edir", {"m", "p"}), forms = { pres1_and_sub = {GL_TYPE .. "id", PT_TYPE .. "eç"}, irreg = true, } }, { -- frigir match = "frigir", forms = {vowel_alt = "i-e", short_pp = "frito"}, }, { -- inserir match = "inserir", forms = {vowel_alt = "i-e"}, }, { -- ir match = "^ir", forms = { pres_1s = "vou", pres_2s = {GL_TYPE .. "vás", PT_TYPE .. "vais"}, pres_3s = "vai", pres_1p = {GL_TYPE .. "imos", PT_TYPE .. "vamos"}, pres_2p = "ides", pres_3p = {GL_TYPE .. "vam", PT_TYPE .. "vão"}, pres_sub_1s = {GL_TYPE .. "vaia", PT_TYPE .. "vá"}, pres_sub_2s = {GL_TYPE .. "vaias", PT_TYPE .. "vás"}, pres_sub_3s = {GL_TYPE .. "vaia", PT_TYPE .. "vá"}, pres_sub_1p = {GL_TYPE .. "vaiamos", PT_TYPE .. "vamos"}, pres_sub_2p = {GL_TYPE .. "vaiades", PT_TYPE .. "vades"}, pres_sub_3p = {GL_TYPE .. "vaiam", PT_TYPE .. "vão"}, pret_conj = "irreg", pret = "fô", pret_1s = {GL_TYPE .. "fum", PT_TYPE .. "fui"}, pret_3s = "foi", irreg = true, } }, { -- emergir, imergir, submergir match = "mergir", forms = {vowel_alt = "i-e", short_pp = "merso"}, }, { match = "ouvir", forms = { pres1_and_sub = {"ouç", ALTVAR .. "oiç"}, irreg = true, } }, { -- exprimir, imprimir, comprimir (but not descomprimir per Priberam), deprimir, oprimir/opprimir (but not reprimir, -- suprimir/supprimir per Priberam) match = match_against_verbs("primir", {"^com", "ex", "im", "de", "^o", "op"}), forms = {short_pp = "presso"} }, { -- rir, sorrir match = match_against_verbs("rir", {"^", "sor"}), forms = { pres_2s = "ris", pres_3s = "ri", pres_2p = "rides", pres_3p = {GL_TYPE .. "rim", PT_TYPE .. "riem"}, pres1_and_sub = "ri", irreg = true, } }, { -- distinguir, extinguir match = "tinguir", forms = { short_pp = "tinto", -- gu/g alternations handled in combine_stem_ending() } }, { -- verbs in -truir (construir, destruir, reconstruir) but not obstruir/desobstruir, instruir, which are handled -- by the default -uir handler below match = match_against_verbs("struir", {"con", "de"}), forms = { pres_2s = {"stróis", ALTVAR .. "struis"}, pres_3s = {"strói", ALTVAR .. "strui"}, pres_3p = {"stroem", ALTVAR .. "struem"}, -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- remaining verbs in -uir (concluir/excluir/incluir/concruir/concruyr, abluir/diluir, afluir/fluir/influir, -- aluir, anuir, atribuir/contribuir/distribuir/redistribuir/retribuir/substituir, coevoluir/evoluir, -- constituir/destituir/instituir/reconstituir/restituir, derruir, diminuir, estatuir, fruir/usufruir, imbuir, -- imiscuir, poluir, possuir, puir, pruir, ruir -- FIXME: old module lists short pp incluso for incluir that can't be verified, ask about this -- FIXME: handle -uyr verbs? match = function(verb) -- Don't match -guir verbs (e.g. [[seguir]], [[conseguir]]) or -quir verbs (e.g. [[extorquir]]) if verb:find("guir$") or verb:find("quir$") then return nil else return match_against_verbs("uir", {""})(verb) end end, forms = { pres_2s = "uis", pres_3s = "ui", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- We want to match advir, convir, devir, etc. but not ouvir, servir, etc. No way to avoid listing each verb. match = match_against_verbs("vir", {"ad", "^a", "con", "contra", "de", "^desa", "inter", "pro", "^re", "sobre", "^"}), forms = { -- FIXME, Estraviz says 'convens', 'devens' etc. but that may be a typo pres_2s = function(base, prefix) return {GL_TYPE .. "vés", PT_TYPE .. (prefix == "" and "vens" or "véns")} end, -- FIXME, Estraviz says 'convem', 'devem' etc. but that may be a typo pres_3s = function(base, prefix) return prefix == "" and "vem" or "vém" end, pres_2p = "vindes", pres_3p = {GL_TYPE .. "venhem", PT_TYPE .. "vêm", GL_ALTVAR .. "vém"}, pres1_and_sub = "venh", full_impf = "vính", pret_conj = "irreg", pret = {GL_TYPE .. "vinhé", PT_TYPE .. "vié"}, pret_1s = "vim", pret_3s = {GL_TYPE .. "véu", PT_TYPE .. "veio"}, pp = "vindo", irreg = true, } }, -------------------------------------------------------------------------------------------- -- misc -- -------------------------------------------------------------------------------------------- { -- pôr, antepor, apor, compor/decompor/descompor, contrapor, depor, dispor, expor, impor, interpor, justapor, -- opor, pospor, propor, repor, sobrepor, supor/pressupor, transpor, decompor, others? match = "p[oô]r", forms = { pres1_and_sub = "ponh", pres_2s = {GL_TYPE .. "pós", PT_TYPE .. "pões", GL_ALTVAR .. "pons"}, pres_3s = {GL_TYPE .. "pom", PT_TYPE .. "põe"}, pres_1p = "pomos", pres_2p = "pondes", pres_3p = {GL_TYPE .. "ponhem", PT_TYPE .. "põem", GL_ALTVAR .. "póm"}, full_impf = "púnh", pret_conj = "irreg", pret = {GL_TYPE .. "pugé", PT_TYPE .. "pusé"}, pt_pret_1s = "pus", pt_pret_3s = "pôs", pers_inf = "po", gerund = "pondo", pp = "posto", irreg = true, } }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end -- Apply vowel alternations to stem. local function apply_vowel_alternations(stem, alternations) local alternation_stems = {} local saw_pres1_and_sub = false local saw_pres_stressed = false -- Process alternations other than +. for _, altobj in ipairs(alternations) do local alt = altobj.form local pres1_and_sub, pres_stressed, err -- Treat final -gu, -qu as a consonant, so the previous vowel can alternate (e.g. conseguir -> consigo). -- This means a verb in -guar can't have a u-ú alternation but I don't think there are any verbs like that. stem = rsub(stem, "([gq])u$", "%1" .. TEMPC1) if alt == "+" then -- do nothing yet elseif alt == "ei" then local before_last_vowel = rmatch(stem, "^(.*)i$") if not before_last_vowel then err = "stem should end in -i" else pres1_and_sub = nil pres_stressed = before_last_vowel .. "ei" end else local before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-[ui])$") if not before_last_vowel then before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-)$") end if alt == "i-e" then if last_vowel == "e" or last_vowel == "i" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel if last_vowel == "i" then pres_stressed = before_last_vowel .. "e" .. after_last_vowel end else err = "should have -e- or -i- as the last vowel" end elseif alt == "i" then if last_vowel == "e" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -e- as the last vowel" end elseif alt == "u-o" then if last_vowel == "o" or last_vowel == "u" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel if last_vowel == "u" then pres_stressed = before_last_vowel .. "o" .. after_last_vowel end else err = "should have -o- or -u- as the last vowel" end elseif alt == "u" then if last_vowel == "o" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -o- as the last vowel" end elseif alt == "í" then if last_vowel == "i" then pres_stressed = before_last_vowel .. "í" .. after_last_vowel else err = "should have -i- as the last vowel" end elseif alt == "ú" then if last_vowel == "u" then pres_stressed = before_last_vowel .. "ú" .. after_last_vowel else err = "should have -u- as the last vowel" end else error("Internal error: Unrecognized vowel alternation '" .. alt .. "'") end end if pres1_and_sub then pres1_and_sub = {form = pres1_and_sub:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres1_and_sub = true end if pres_stressed then pres_stressed = {form = pres_stressed:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres_stressed = true end table.insert(alternation_stems, { altobj = altobj, pres1_and_sub = pres1_and_sub, pres_stressed = pres_stressed, err = err }) end -- Now do +. We check to see which stems are used by other alternations and specify those so any footnotes are -- properly attached. for _, alternation_stem in ipairs(alternation_stems) do if alternation_stem.altobj.form == "+" then local stemobj = {form = stem, footnotes = alternation_stem.altobj.footnotes} alternation_stem.pres1_and_sub = saw_pres1_and_sub and stemobj or nil alternation_stem.pres_stressed = saw_pres_stressed and stemobj or nil end end return alternation_stems end -- Add the `stem` to the `ending` for the given `slot` and apply any phonetic modifications. -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, slot, prefix, stem, ending, dont_include_prefix) -- If the stem begins with an acute accent, this is a signal to move the accent onto the last vowel of the prefix. -- Cf. míngua of minguar. if stem:find("^" .. AC) then stem = rsub(stem, "^" .. AC, "") if dont_include_prefix then error("Internal error: Can't handle acute accent at beginning of stem if dont_include_prefix is given") end prefix = rsub(prefix, "([aeiouyAEIOUY])([^aeiouyAEIOUY]*)$", "%1" .. AC .. "%2") end -- Use the full stem for checking for -gui ending and such, because 'stem' is just 'u' for [[arguir]], -- [[delinquir]]. local full_stem = prefix .. stem -- Include the prefix in the stem unless dont_include_prefix is given (used for the past participle stem). if not dont_include_prefix then stem = full_stem end -- If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter -- of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent -- on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems -- ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. if ending:find("^%*%*") then ending = rsub(ending, "^%*%*", "") if rfind(full_stem, "[gq]uí$") or not rfind(full_stem, V .. "[íú]$") then stem = com.remove_final_accent(stem) end end -- If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem. -- E.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. if ending:find("^%*") then ending = rsub(ending, "^%*", "") stem = com.remove_final_accent(stem) end -- If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent -- the two merging into a diphthong: -- * cair -> -- * pres: caímos, caís; -- * impf: all forms (caí-); -- * pret: caí (but not caim), caíste (but not caiu), caímos, caístes, caíram; -- * plup: all forms (caír-); -- * impf_sub: all forms (caíss-); -- * fut_sub: caíres, caírem (but not cair, cairmos, cairdes) -- * pp: caído (but not gerund caindo) -- * atribuir, other verbs in -uir -> same pattern as for cair etc. -- * roer -> -- * pret: roí (but not roim) -- * impf: all forms (roí-) -- * pp: roído -- Don't let variant codes derail the following checks. Note that variant codes are properly added to the end of -- the ending, so checks against the beginning of the ending work even in their presence, but not checks against -- the full ending. local cleaned_ending = export.remove_variant_codes(ending) if cleaned_ending:find("^i") and full_stem:find("[aeiou]$") and not full_stem:find("[gq]u$") and not cleaned_ending:find("^i[rum]$") and cleaned_ending ~= "indo" and not cleaned_ending:find("^ir[md]") then ending = ending:gsub("^i", "í") end -- Spelling changes in the stem; it depends on whether the stem given is the pre-front-vowel or -- pre-back-vowel variant, as indicated by `frontback`. We want these front-back spelling changes to happen -- between stem and ending, not between prefix and stem; the prefix may not have the same "front/backness" -- as the stem. local is_front = rfind(ending, "^[eiéíê]") if base.frontback == "front" and not is_front then stem = stem:gsub("c$", "ç") -- conhecer -> conheço, vencer -> venço, descer -> desço stem = stem:gsub("g$", "j") -- proteger -> protejo, fugir -> fujo stem = stem:gsub("gu$", "g") -- distinguir -> distingo, conseguir -> consigo stem = stem:gsub("qu$", "c") -- extorquir -> exturco stem = stem:gsub("([gq])ü$", "%1u") -- argüir (superseded) -> arguo, delinqüir (superseded) -> delinquo elseif base.frontback == "back" and is_front then -- The following changes are all superseded so we don't do them: -- averiguar -> averigüei, minguar -> mingüei; antiquar -> antiqüei, apropinquar -> apropinqüei -- stem = stem:gsub("([gq])u$", "%1ü") stem = stem:gsub("g$", "gu") -- cargar -> carguei, apagar -> apaguei stem = stem:gsub("c$", "qu") -- marcar -> marquei stem = stem:gsub("ç$", "c") -- começar -> comecei -- j does not go to g here; desejar -> deseje not #desege end local retval = stem .. ending if retval:find(GL_TYPE) and retval:find(PT_TYPE) or retval:find(GL_ONLY_TYPE) and not retval:find(GL_TYPE) then -- Reject clashes in "Galician"-type and "Portuguese"-type forms, e.g. '#vós dixéreis' or '#vós dissérades'. return nil end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, slot, base.prefix, stem, ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function construct_stems(base, vowel_alt) local stems = {} stems.pres_unstressed = base.stems.pres_unstressed or base.inf_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or base.stems.pres_stressed or vowel_alt.pres_stressed or base.inf_stem stems.pres1_and_sub = -- If no_pres_stressed given, the entire subjunctive is missing. base.no_pres_stressed and {} or -- If no_pres1_and_sub given, pres1 and entire subjunctive are missing. base.no_pres1_and_sub and {} or base.stems.pres1_and_sub or vowel_alt.pres1_and_sub or nil stems.pres1 = base.stems.pres1 or stems.pres1_and_sub or stems.pres_stressed stems.impf = base.stems.impf or base.inf_stem stems.full_impf = base.stems.full_impf stems.pret_base = base.stems.pret_base or base.inf_stem stems.pret_conj = base.stems.pret_conj or base.conj stems.pret = base.stems.pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret_base), function(form) return form .. base.conj_vowel end) stems.gl_short_pret = base.stems.gl_short_pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret), function(form) return rsub(form, com.V .. "$", "") end) stems.pt_pret_1s = base.stems.pt_pret_1s stems.pt_pret_3s = base.stems.pt_pret_3s stems.fut = base.stems.fut or base.inf_stem .. base.conj stems.cond = base.stems.cond or stems.fut stems.pres_sub_stressed = base.stems.pres_sub_stressed or stems.pres1 stems.pres_sub_unstressed = base.stems.pres_sub_unstressed or stems.pres1_and_sub or stems.pres_unstressed stems.sub_conj = base.stems.sub_conj or base.conj stems.plup = base.stems.plup or stems.pret stems.impf_sub = base.stems.impf_sub or stems.pret stems.fut_sub = base.stems.fut_sub or stems.pret stems.pers_inf = base.stems.pers_inf or base.inf_stem .. base.conj_vowel stems.pp = base.stems.pp or base.conj == "ar" and combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ado", "dont include prefix") or -- use combine_stem_ending esp. so we get roído, caído, etc. combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ido", "dont include prefix") stems.pp_ms = stems.pp local function masc_to_fem(form) if rfind(form, "o$") then return rsub(form, "o$", "a") else return form end end stems.pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.pp_ms), masc_to_fem) if base.stems.short_pp then stems.short_pp_ms = base.stems.short_pp stems.short_pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.short_pp_ms), masc_to_fem) end base.this_stems = stems end local function add_present_indic(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end local s2, s3, p1, p2, p3 if base.conj == "ar" then s2, s3, p1, p2, p3 = "as", "a", "amos", {"ades" .. GL_TYPE, "ais" .. PT_TYPE}, "am" elseif base.conj == "er" or base.conj == "or" then -- verbs in -por have the present overridden s2, s3, p1, p2, p3 = "es", "e", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, "em" elseif base.conj == "ir" then s2, s3, p1, p2, p3 = "es", "e", "imos", {"ides" .. GL_TYPE, "is" .. PT_TYPE}, "em" else error("Internal error: Unrecognized conjugation " .. base.conj) end addit("1s", stems.pres1, "o") addit("2s", stems.pres_stressed, s2) addit("3s", stems.pres_stressed, s3) addit("1p", stems.pres_unstressed, p1) addit("2p", stems.pres_unstressed, p2) addit("3p", stems.pres_stressed, p3) end local function add_present_subj(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end local s1, s2, s3, p1, p2, p3 if stems.sub_conj == "ar" then s1, s2, s3, p1, p2, p3 = "e", "es", "e", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, "em" else s1, s2, s3, p1, p2, p3 = "a", "as", "a", "amos", {"ades" .. GL_TYPE, "ais" .. PT_TYPE}, "am" end addit("1s", stems.pres_sub_stressed, s1) addit("2s", stems.pres_sub_stressed, s2) addit("3s", stems.pres_sub_stressed, s3) addit("1p", stems.pres_sub_unstressed, p1) addit("2p", stems.pres_sub_unstressed, p2) addit("3p", stems.pres_sub_stressed, p3) end local function add_finite_non_present(base) local stems = base.this_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect stem. if stems.full_impf then add_tense("impf", stems.full_impf, "*a", "*as", "*a", "amos", {"ades" .. GL_TYPE, "eis" .. PT_TYPE, "ais" .. GL_ALTVAR}, "*am") elseif base.conj == "ar" then add_tense("impf", stems.impf, "ava", "avas", "ava", "ávamos", {"ávades" .. GL_TYPE, "áveis" .. PT_TYPE, "ávais" .. GL_ALTVAR}, "avam") else add_tense("impf", stems.impf, "ia", "ias", "ia", "íamos", {"íades" .. GL_TYPE, "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR}, "iam") end -- * at the beginning of the ending means to remove a final accent from the preterite stem. if stems.pret_conj == "irreg" then add_tense("pret", stems.gl_short_pret, "em" .. GL_TYPE, nil, "o" .. GL_TYPE) add_tense("pret", stems.pret, nil, {"*ste", "*che" .. GL_ALTVAR}, nil, "*mos", "*stes", {"rom" .. GL_TYPE, "*ram" .. PT_TYPE}) add_tense("pret", stems.pt_pret_1s, PT_TYPE) add_tense("pret", stems.pt_pret_3s, nil, nil, PT_TYPE) elseif stems.pret_conj == "ar" then add_tense("pret", stems.pret_base, "ei", {"aste", "ache" .. GL_ALTVAR}, "ou", "amos", "astes", {"árom" .. GL_TYPE, "aram" .. PT_TYPE}) elseif stems.pret_conj == "er" then add_tense("pret", stems.pret_base, {"im" .. GL_TYPE, "i" .. PT_TYPE}, {"este", "eche" .. GL_ALTVAR}, "eu", "emos", "estes", {"êrom" .. GL_TYPE, "eram" .. PT_TYPE}) else add_tense("pret", stems.pret_base, {"im" .. GL_TYPE, "i" .. PT_TYPE}, {"iste", "iche" .. GL_ALTVAR}, "iu", "imos", "istes", {"írom" .. GL_TYPE, "iram" .. PT_TYPE}) end -- * at the beginning of the ending means to remove a final accent from the stem. -- ** is similar but is "conditional" on a consonant preceding the final vowel. add_tense("plup", stems.plup, "**ra", "**ras", "**ra", "ramos", {"rades" .. GL_TYPE, "reis" .. PT_TYPE, "rais" .. GL_ALTVAR}, "**ram") add_tense("impf_sub", stems.impf_sub, "**sse", "**sses", "**sse", "ssemos", {"ssedes" .. GL_TYPE, "sseis" .. PT_TYPE}, "**ssem") add_tense("fut_sub", stems.fut_sub, "*r", "**res", "*r", "*rmos", "*rdes", "**rem") if base.refl then local mark = TEMP_MESOCLITIC_INSERTION_POINT add_tense("fut", stems.fut, {"ei" .. GL_TYPE, mark .. "ei" .. PT_TYPE}, {"ás" .. GL_TYPE, mark .. "ás" .. PT_TYPE}, {"á" .. GL_TYPE, mark .. "á" .. PT_TYPE}, {"emos" .. GL_TYPE, mark .. "emos" .. PT_TYPE}, {"edes" .. GL_TYPE, mark .. "eis" .. PT_TYPE}, {"ám" .. GL_TYPE, mark .. "ão" .. PT_TYPE} ) add_tense("cond", stems.cond, {"ia" .. GL_TYPE, mark .. "ia" .. PT_TYPE}, {"ias" .. GL_TYPE, mark .. "ias" .. PT_TYPE}, {"ia" .. GL_TYPE, mark .. "ia" .. PT_TYPE}, {"íamos" .. GL_TYPE, mark .. "íamos" .. PT_TYPE}, -- FIXME, is GL_ALTVAR correct for the mesoclitic variant of -íais? {"íades" .. GL_TYPE, mark .. "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR, mark .. "íais" .. GL_ALTVAR}, {"iam" .. GL_TYPE, mark .. "iam" .. PT_TYPE}) else -- Don't insert forms with the mesoclitic insertion point to avoid duplication in non-reflexive verbs. add_tense("fut", stems.fut, "ei", "ás", "á", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, {"ám" .. GL_TYPE, "ão" .. PT_TYPE}) add_tense("cond", stems.cond, "ia", "ias", "ia", "íamos", -- FIXME, is GL_ALTVAR correct for the mesoclitic variant of -íais? {"íades" .. GL_TYPE, "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR}, "iam") end -- Different stems for different parts of the personal infinitive to correctly handle forms of [[sair]] and [[pôr]]. add_tense("pers_inf", base.non_prefixed_verb, "", nil, "") add_tense("pers_inf", stems.pers_inf, nil, "**res", nil, "*rmos", "*rdes", "**rem") end local function add_non_finite_forms(base) local stems = base.this_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below for -- "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.verb}) end end -- verbs in -por have the gerund overridden local ger_ending = base.conj == "ar" and "ando" or base.conj == "er" and "endo" or "indo" addit("gerund", stems.pres_unstressed, ger_ending) -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the same -- form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate clitic -- pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic pronouns won't be -- added, and {{gl-reinteg-verb form of}} will wrongly consider all these combinations as possible inflections of the bare -- gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, stems.pres_unstressed, ger_ending) end end -- Skip the long/short past participle footnotes if called from {{gl-reinteg-verb}} so they don't show in the headword. local long_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-reinteg-verb" and {long_pp_footnote} or nil addit("pp_ms", stems.pp_ms, "", long_pp_footnotes) if not base.pp_inv then addit("pp_fs", stems.pp_fs, "", long_pp_footnotes) addit("pp_mp", stems.pp_ms, "s", long_pp_footnotes) addit("pp_fp", stems.pp_fs, "s", long_pp_footnotes) end if stems.short_pp_ms then local short_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-reinteg-verb" and {short_pp_footnote} or nil addit("short_pp_ms", stems.short_pp_ms, "", short_pp_footnotes) if not base.pp_inv then addit("short_pp_fs", stems.short_pp_fs, "", short_pp_footnotes) addit("short_pp_mp", stems.short_pp_ms, "s", short_pp_footnotes) addit("short_pp_fp", stems.short_pp_fs, "s", short_pp_footnotes) end end end local function copy_forms_to_imperatives(base) -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) if not skip_slot(base, "imp_2p") then -- Copy pres2p to imperative 2p minus -s since they are almost always the same. -- But not if there's an override, to avoid possibly throwing an error. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) local form_no_s, var_codes = rmatch(form, "^(.*)s(" .. var_code_c .. "*)$") if not form_no_s then error("Can't derive second-person plural imperative from second-person plural present indicative " .. "because form '" .. form .. "' doesn't end in -s") end return form_no_s .. var_codes end)) end -- Copy subjunctives to imperatives, unless there's an override for the given slot (as with the imp_1p of [[ir]]). for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = "[[" .. clitic .. "]]" .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Add the appropriate clitic pronouns in `clitics` to the forms in `base_slot`. `store_cliticized_form` is a function -- of three arguments (clitic, formobj, cliticized_form) and should store the cliticized form for the specified clitic -- and form object. local function suffix_clitic_to_forms(base, base_slot, clitics, store_cliticized_form) if not base.forms[base_slot] then -- This can happen, e.g. in only3s/only3sp/only3p verbs. return end local autolink = not base.alternant_multiword_spec.args.noautolinkverb for _, formobj in ipairs(base.forms[base_slot]) do for _, clitic in ipairs(clitics) do local cliticized_form if formobj.form:find(TEMP_MESOCLITIC_INSERTION_POINT) then -- mesoclisis in future and conditional local infinitive, suffix = rmatch(formobj.form, "^(.*)" .. TEMP_MESOCLITIC_INSERTION_POINT .. "(.*)$") if not infinitive then error("Internal error: Can't find mesoclitic insertion point in slot '" .. base_slot .. "', form '" .. formobj.form .. "'") end local full_form = infinitive .. suffix if autolink and not infinitive:find("%[%[") then infinitive = "[[" .. infinitive .. "]]" end cliticized_form = autolink and infinitive .. "-[[" .. clitic .. "]]-[[" .. full_form .. "|" .. suffix .. "]]" or infinitive .. "-" .. clitic .. "-" .. suffix else local clitic_suffix = autolink and "-[[" .. clitic .. "]]" or "-" .. clitic local form_needs_link = autolink and not formobj.form:find("%[%[") if base_slot:find("1p$") then -- Final -s disappears: arrependíamos + nos -> arrependíamo-nos, etc. cliticized_form = formobj.form:gsub("s$", "") if form_needs_link then cliticized_form = "[[" .. formobj.form .. "|" .. cliticized_form .. "]]" end else cliticized_form = formobj.form if form_needs_link then cliticized_form = "[[" .. cliticized_form .. "]]" end end cliticized_form = cliticized_form .. clitic_suffix end store_cliticized_form(clitic, formobj, cliticized_form) end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local clitic if not do_reflexive then clitic = base.clitic elseif slot:find("[123]") then local persnum = slot:match("^.*_(.-)$") clitic = person_number_to_reflexive_pronoun[persnum] else clitic = "se" end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = not slot:find("_sub") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{gl-reinteg-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "gl-reinteg-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, clitic, " ... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then suffix_clitic_to_forms(base, slot, {clitic}, function(clitic, formobj, cliticized_form) formobj.form = cliticized_form end ) end elseif not do_joined then -- Add clitic as separate word before all other forms. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, clitic, " ", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{gl-reinteg-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) -- Copy subjunctives to negative imperatives, preceded by "nom". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "nom " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[nom]] " .. form else return "[[nom]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end -- Remove special characters added to future and conditional forms to indicate mesoclitic insertion points. local function remove_mesoclitic_insertion_points(base) for slot, forms in pairs(base.forms) do if slot:find("^fut_") or slot:find("^cond_") then for _, form in ipairs(forms) do form.form = form.form:gsub(TEMP_MESOCLITIC_INSERTION_POINT, "") end end end end -- If called from {{gl-reinteg-verb}}, remove less-recommended variants; otherwise add a footnote indicating they are -- less recommended, and sort them last. local function process_altvar_forms(base) for slot, forms in pairs(base.forms) do -- As an optimization, check if there are any less-recommended forms and don't do anything if not. local saw_altvar = false for _, form in ipairs(forms) do if form.form:find(ALTVAR) then saw_altvar = true break end end if saw_altvar then if base.alternant_multiword_spec.source_template == "gl-reinteg-verb" then base.forms[slot] = iut.flatmap_forms(base.forms[slot], function(form) if form:find(ALTVAR) then return {} else return {form} end end) else local existing_forms = base.forms[slot] base.forms[slot] = {} for _, formobj in ipairs(existing_forms) do if not formobj.form:find(ALTVAR) then iut.insert_form(base.forms, slot, formobj) end end for _, formobj in ipairs(existing_forms) do if formobj.form:find(ALTVAR) then formobj.footnotes = iut.combine_footnotes(formobj.footnotes, {"[less recommended]"}) iut.insert_form(base.forms, slot, formobj) end end end end end end local function conjugate_verb(base) for _, vowel_alt in ipairs(base.vowel_alt_stems) do construct_stems(base, vowel_alt) add_present_indic(base) add_present_subj(base) end add_finite_non_present(base) add_non_finite_forms(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). copy_forms_to_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepende-te]] but [[nom]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end remove_mesoclitic_insertion_points(base) process_altvar_forms(base) end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif rfind(first_element, ":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) end else local comma_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*,%s*") for j = 1, #comma_separated_groups do local alt = comma_separated_groups[j][1] if not vowel_alternants[alt] then if #comma_separated_groups == 1 then parse_err("Unrecognized spec or vowel alternant '" .. alt .. "'") else parse_err("Unrecognized vowel alternant '" .. alt .. "'") end end if base.vowel_alt then for _, existing_alt in ipairs(base.vowel_alt) do if existing_alt.form == alt then parse_err("Vowel alternant '" .. alt .. "' specified twice") end end else base.vowel_alt = {} end table.insert(base.vowel_alt, {form = alt, footnotes = fetch_footnotes(comma_separated_groups[j])}) end end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form -- so we can use it below in the 'lemma_linked' form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb and reflexive pronoun. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve -- links in multiword lemmas and include links in non-lemma forms rather than allowing -- the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} if not base.no_built_in then for _, built_in_conj in ipairs(built_in_conjugations) do if type(built_in_conj.match) == "function" then base.prefix, base.non_prefixed_verb = built_in_conj.match(base.verb) elseif built_in_conj.match:find("^%^") and rsub(built_in_conj.match, "^%^", "") == base.verb then -- begins with ^, for exact match, and matches base.prefix, base.non_prefixed_verb = "", base.verb else base.prefix, base.non_prefixed_verb = rmatch(base.verb, "^(.*)(" .. built_in_conj.match .. ")$") end if base.prefix then -- we found a built-in verb for stem, forms in pairs(built_in_conj.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.stems[stem] = forms end end break end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeioô]r)$") if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end base.inf_stem = inf_stem suffix = suffix == "ôr" and "or" or suffix base.conj = suffix base.conj_vowel = suffix == "ar" and "á" or suffix == "ir" and "í" or "ê" base.frontback = suffix == "ar" and "back" or "front" if base.stems.vowel_alt then -- built-in verb with specified vowel alternation if base.vowel_alt then error(base.verb .. " is a recognized built-in verb, and should not have vowel alternations specified with it") end base.vowel_alt = iut.convert_to_general_list_form(base.stems.vowel_alt) end -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.stems[indicator_flag] end -- Convert vowel alternation indicators into stems. local vowel_alt = base.vowel_alt or {{form = "+"}} base.vowel_alt_stems = apply_vowel_alternations(base.inf_stem, vowel_alt) for _, vowel_alt_stems in ipairs(base.vowel_alt_stems) do if vowel_alt_stems.err then error("To use '" .. vowel_alt_stems.altobj.form .. "', present stem '" .. base.prefix .. base.inf_stem .. "' " .. vowel_alt_stems.err) end end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:gl-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) alternant_multiword_spec.vowel_alt = {} iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end -- Vowel alternants. Do these after calling detect_indicator_spec() because the latter sets base.vowel_alt for -- built-in verbs. if base.vowel_alt then for _, altobj in ipairs(base.vowel_alt) do m_table.insertIfNot(alternant_multiword_spec.vowel_alt, altobj.form) end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Galician verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "Galician " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "gl-reinteg-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("verbs with red links in their inflection tables") must_break = true break end end end end if must_break then break end end end if(base.conj == "or") then insert_cat("verbs ending in -er") else insert_cat("verbs ending in -" .. base.conj) end if base.irreg then insert_ann("irreg", "irregular") insert_cat("irregular verbs") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "impersonal") insert_cat("impersonal verbs") elseif base.only3sp then insert_ann("defective", "third-person only") insert_cat("third-person-only verbs") elseif base.only3p then insert_ann("defective", "third-person plural only") insert_cat("third-person-plural-only verbs") elseif base.no_pres_stressed or base.no_pres1_and_sub then insert_ann("defective", "defective") insert_cat("defective verbs") else insert_ann("defective", "regular") end if base.stems.short_pp then insert_ann("short_pp", "irregular short past participle") insert_cat("verbs with irregular short past participle") else insert_ann("short_pp", "regular") end if base.clitic then insert_cat("verbs with lexical clitics") end if base.refl then insert_cat("reflexive verbs") end if base.e_ei_cat then insert_ann("vowel_alt", "''e'' may become ''ei'' when stressed") insert_cat("verbs with e becoming ei when stressed") elseif not base.vowel_alt then insert_ann("vowel_alt", "non-alternating") else for _, alt in ipairs(base.vowel_alt) do if alt.form == "+" then insert_ann("vowel_alt", "non-alternating") else insert_ann("vowel_alt", vowel_alternant_to_desc[alt.form]) insert_cat("verbs with " .. vowel_alternant_to_cat[alt.form]) end end end local cons_alt = base.stems.cons_alt if cons_alt == nil then if base.conj == "ar" then if base.inf_stem:find("ç$") then cons_alt = "c-ç" elseif base.inf_stem:find("c$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-gu" end else if base.no_pres_stressed or base.no_pres1_and_sub then cons_alt = nil -- no e.g. c-ç alternation in this case elseif base.inf_stem:find("c$") then cons_alt = "c-ç" elseif base.inf_stem:find("qu$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-j" elseif base.inf_stem:find("gu$") then cons_alt = "g-gu" end end end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat("verbs with " .. desc) else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.irreg = {} ann.short_pp = {} ann.defective = {} ann.vowel_alt = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local short_pp = table.concat(ann.short_pp, " or ") if short_pp ~= "" and short_pp ~= "regular" then table.insert(ann_parts, short_pp) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local vowel_alt = table.concat(ann.vowel_alt, " or ") if vowel_alt ~= "" and vowel_alt ~= "non-alternating" then table.insert(ann_parts, vowel_alt) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, "; ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() if alternant_multiword_spec.forms.short_pp_ms then alternant_multiword_spec.has_short_pp = true end local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then if slot:find("^pp_") then accel_obj.form = slot elseif slot == "gerund" then accel_obj.form = "reinteg-gerund-" .. reconstructed_verb_spec else accel_obj.form = "reinteg-verb-form-" .. reconstructed_verb_spec end end return accel_obj end -- Italicize less-recommended forms. local function generate_link(data) local formval_for_link = data.form.formval_for_link if formval_for_link:find(ALTVAR) then formval_for_link = formval_for_link:gsub(ALTVAR, "") return m_links.full_link({lang = lang, term = formval_for_link, tr = "-", accel = data.form.accel_obj}, "term") .. iut.get_footnote_text(data.form.footnotes, data.footnote_obj) end end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, canonicalize = function(form) return export.remove_variant_codes(form, "keep altvar") end, generate_link = generate_link, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead" align=center>&nbsp; &nbsp; Reintegrated conjugation of {title} (See [[Appendix:Reintegrationism]])</div> <div class="NavContent" align="left"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! class="roa-person-number-header" rowspan="2" | ! class="roa-person-number-header" colspan="3" | เอกพจน์ ! class="roa-person-number-header" colspan="3" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<eu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<ti>> / <<tu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<ele>> / <<ela>> / <<você>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<nós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<vós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<eles>> / <<elas>> / <<vocês>>) |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="infinitivo">รูปกริยากลาง</span>'' |- ! class="roa-nonfinite-header" | '''<span title="infinitivo impessoal">คำอบุรุษกริยา</span>''' | colspan="6" | {infinitive} |- ! class="roa-nonfinite-header" | '''<span title="infinitivo flexionado">คำบุรุษกริยา</span>''' | {pers_inf_1s} | {pers_inf_2s} | {pers_inf_3s} | {pers_inf_1p} | {pers_inf_2p} | {pers_inf_3p} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="gerúndio">รูปกริยาเป็นนาม</span>'' |- | class="roa-nonfinite-header" | | colspan="6" | {gerund} |-{pp_clause} ! style="border: 1px solid #999999; background:#d0dff4" colspan="7" | ''<span title="indicativo">มาลาบอกเล่า</span>'' |- ! class="roa-indicative-left-rail" | <span title="presente">ปัจจุบันกาล</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito imperfeito">ไม่สมบูรณ์</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito perfeito">อดีตกาลสิ้นสุด (สมบูรณ์)</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito mais-que-perfeito simples">อภิสมบูรณ์</span> | {plup_1s} | {plup_2s} | {plup_3s} | {plup_1p} | {plup_2p} | {plup_3p} |- ! class="roa-indicative-left-rail" | <span title="futuro do presente">อนาคตกาล</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" | <span title="condicional">มาลาเงื่อนไข</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" colspan="7" | ''<span title="conjuntivo">มาลาสมมุติ</span>'' |- ! class="roa-subjunctive-left-rail" | <span title=" presente do conjuntivo">ปัจจุบันกาล</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="pretérito imperfeito do conjuntivo">ไม่สมบูรณ์</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="futuro do conjuntivo">อนาคตกาล</span> | {fut_sub_1s} | {fut_sub_2s} | {fut_sub_3s} | {fut_sub_1p} | {fut_sub_2p} | {fut_sub_3p} |- ! class="roa-imperative-left-rail" colspan="7" | ''<span title="imperativo">มาลาสั่ง</span>'' |- ! class="roa-imperative-left-rail" | <span title="imperativo afirmativo">เชิงยืนยัน</span> | rowspan="2" | | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" | <span title="imperativo negativo">เชิงปฏิเสธ</span> (<<nom>>) | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div> ]=] local double_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio irregular">รูปกริยาขยายอดีตกาลสั้น</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {short_pp_ms} | colspan="3" | {short_pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {short_pp_fs} | colspan="3" | {short_pp_fp} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio regular">รูปกริยาขยายอดีตกาลยาว</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local single_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio passado">รูปกริยาขยายอดีตกาล</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form) if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" -- has_short_pp is computed in show_forms(). local pp_template = alternant_multiword_spec.has_short_pp and double_pp_template or single_pp_template forms.pp_clause = m_string_utilities.format(pp_template, forms) local table_with_pronouns = rsub(basic_table, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "แม่แบบ" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{gl-reinteg-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "gl-reinteg-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "gl-reinteg-conj" or pagename == "gl-reinteg-verb") and in_template_space() then arg1 = "traguer" elseif pagename == "gl-reinteg-verb form of" and in_template_space() then arg1 = "amar" else arg1 = "<>" end end -- When called from {{gl-reinteg-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "gl-reinteg-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "gl-reinteg-verb form of" and in_template_space() then verb_form_of_form = "ame" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, get_variants = function(form) return rsub(form, not_var_code_c, "") end, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "gl-reinteg-conj" then -- Remove variant codes to avoid causing problems with bots. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = export.remove_variant_codes(form.form) end end return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{gl-reinteg-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(parent_args, "gl-reinteg-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export jb4vg0fjj4csk03wt35dodg3wjzkooi 5729315 5729292 2026-07-20T05:41:01Z Octahedron80 267 5729315 Scribunto text/plain --[=[ This module implements {{gl-reinteg-conj}} and provides the underlying conjugation functions for {{gl-reinteg-verb}}, as well as for {{gl-verb}} when invoked with |reinteg=1. The actual formatting of both {{gl-reinteg-verb}} and {{gl-verb}} happens in [[Module:gl-headword]]. This module uses the [[Appendix:Reintegrationism|reintegrationist]] norm for Galician spelling. See also [[Module:gl-verb]], which implements the standard norm. Authorship: Ben Wing <benwing2>, MedK <medk1> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Galician form representing the value of a given slot. -- "lemma" = The dictionary form of a given Galician term. For Galician, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("gl") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:gl-reinteg-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility local function link_term(term) return m_links.full_link({ lang = lang, term = term }, "term") end local V = com.V -- vowel regex class local AV = com.AV -- accented vowel regex class local C = com.C -- consonant regex class local AC = u(0x0301) -- acute = ́ local TEMPC1 = u(0xFFF1) -- temporary character used for consonant substitutions local TEMP_MESOCLITIC_INSERTION_POINT = u(0xFFF2) -- temporary character used to mark the mesoclitic insertion point -- Variant codes and the like. -- NOTE: These codes should be *PREFIXED* onto stems and *SUFFIXED* onto endings. That way they won't interfere in the -- operation of combine_stem_ending(). -- -- GL_TYPE = "Galician-type", PT_TYPE = "Portuguese-type". GL_TYPE stems cannot combine with PT_TYPE endings and -- vice-versa. GL_ONLY_TYPE = "Galician-only type"; GL_ONLY_TYPE stems can only combine with endings specifically -- marked as GL_TYPE. local GL_TYPE = u(0xFFF3) local GL_ONLY_TYPE = u(0xFFF4) local PT_TYPE = u(0xFFF5) -- ALTVAR = Less-recommended variants listed at the bottom of the Estraviz conjugation tables rather than in the main -- table. We list these in the main table but with a footnote indicating they are less-recommended alternatives, and -- italicize them to visually set them apart. local ALTVAR = u(0xFFF6) local GL_ALTVAR = GL_TYPE .. ALTVAR local GL_ONLY_ALTVAR = GL_ONLY_TYPE .. ALTVAR local var_codes_no_altvar = GL_TYPE .. GL_ONLY_TYPE .. PT_TYPE local all_var_codes = var_codes_no_altvar .. ALTVAR local var_code_c = "[" .. all_var_codes .. "]" local var_code_no_altvar_c = "[" .. var_codes_no_altvar .. "]" local not_var_code_c = "[^" .. all_var_codes .. "]" -- Export variant codes for use in [[Module:pt-gl-inflections]]. export.GL_TYPE = GL_TYPE export.GL_ONLY_TYPE = GL_ONLY_TYPE export.PT_TYPE = PT_TYPE export.ALTVAR = ALTVAR local short_pp_footnote = "[usually used with auxiliary verbs " .. link_term("ser") .. " and " .. link_term("estar") .. "]" local long_pp_footnote = "[usually used with auxiliary verbs " .. link_term("haver") .. " and " .. link_term("ter") .. "]" --[=[ Vowel alternations: <i-e>: 'i' in pres1s and the whole present subjunctive; 'e' elsewhere when stressed. Generally 'e' otherwise when unstressed. E.g. [[sentir]], [[conseguir]] (the latter additionally with 'gu-g' alternation). <u-o>: 'u' in pres1s and the whole present subjunctive; 'o' elsewhere when stressed. Either 'o' or 'u' otherwise when unstressed. E.g. [[dormir]], [[subir]]. <i>: 'i' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'e'. E.g. [[progredir]], [[premir]]. <u>: 'u' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'o'. E.g. [[polir]], [[extorquir]] (the latter also <u-o>). <í>: The last 'i' of the stem (excluding stem-final 'i') becomes 'í' when stressed. E.g.: * [[proibir]] ('proíbo, proíbe(s), proíbem, proíba(s), proíbam') * [[faiscar]] ('faísco, faísca(s), faíscam, faísque(s), faísquem' also with 'c-qu' alternation) * [[homogeneizar]] ('homogeneízo', etc.) * [[mobiliar]] ('mobílio', etc.; note here the final -i is ignored when determining which vowel to stress) * [[tuitar]] ('tuíto', etc.) <ú>: The last 'u' of the stem (excluding stem-final 'u') becomes 'ú' when stressed. E.g.: * [[reunir]] ('reúno, reúne(s), reúnem, reúna(s), reúnam') * [[esmiuçar]] ('esmiúço, esmiúça(s), esmiúça, esmiúce(s), esmiúcem' also with 'ç-c' alternation) * [[reusar]] ('reúso, reúsa(s), reúsa, reúse(s), reúsem') * [[saudar]] ('saúdo, saúda(s), saúda, saúde(s), saúdem') ]=] local vowel_alternants = m_table.listToSet({"i-e", "i", "í", "u-o", "u", "ú", "ei", "+"}) local vowel_alternant_to_desc = { ["i-e"] = "''i-e'' alternation in present singular", ["i"] = "''e'' becomes ''i'' when stressed", ["í"] = "''i'' becomes ''í'' when stressed", ["u-o"] = "''u-o'' alternation in present singular", ["u"] = "''o'' becomes ''u'' when stressed", ["ú"] = "''u'' becomes ''ú'' when stressed", ["ei"] = "''i'' becomes ''ei'' when stressed", } local vowel_alternant_to_cat = { ["i-e"] = "i-e alternation in present singular", ["i"] = "e becoming i when stressed", ["í"] = "i becoming í when stressed", ["u-o"] = "u-o alternation in present singular", ["u"] = "o becoming u when stressed", ["ú"] = "u becoming ú when stressed", ["ei"] = "i becoming ei when stressed", } local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} person_number_to_reflexive_pronoun = { ["1s"] = "me", ["2s"] = "te", ["3s"] = "se", ["1p"] = "nos", ["2p"] = "vos", ["3p"] = "se", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "no_pres1_and_sub", "only3s", "only3sp", "only3p", "pp_inv", "irreg", "no_built_in", "e_ei_cat", } -- Remove any variant codes e.g. GL_TYPE, PT_TYPE, ALTVAR. Needs to be called from [[Module:gl-reinteg-headword]] on the -- output of do_generate_forms(). `keep_altvar` leaves ALTVAR; used in the `canonicalize` function of show_forms() -- because we then process and remove it in `generate_forms`. FIXME: Use metadata for this once it's supported in -- [[Module:inflection utilities]]. function export.remove_variant_codes(form, keep_altvar) return rsub(form, keep_altvar and var_code_no_altvar_c or var_code_c, "") end -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"short_pp_ms", "short|m|s|past|part"}, {"short_pp_fs", "short|f|s|past|part"}, {"short_pp_mp", "short|m|p|past|part"}, {"short_pp_fp", "short|f|p|past|part"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{gl-reinteg-verb form of}}. For example, -- for a reflexive-only verb like [[arrepender-se]], we want to be able to use {{gl-reinteg-verb form of}} on -- [[arrependa]] (which should mention that it is a part of 'me arrependa', first-person singular present -- subjunctive, and 'se arrependa', third-person singular present subjunctive) or on [[arrependemos]] (which should -- mention that it is a part of 'arrependemo-nos', first-person plural present indicative or preterite). Similarly, -- we want to use {{gl-reinteg-verb form of}} on [[arrependendo]] (which should mention that it is a part of -- 'se ... arrependendo', syntactic variant of [[arrependendo-se]], which is the gerund of [[arrepender-se]]). To -- do this, we need to be able to map non-reflexive parts like [[arrependa]], [[arrependemos]], [[arrependendo]], -- etc. to their reflexive equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like -- [[arrependendo]], [[arrepender]] and imperatives, to the separated syntactic variant of the verb+clitic -- combination. We do this by creating slots for the non-reflexive part equivalent of each basic reflexive slot, -- and for the separated syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. -- We use slots in this way to deal with multiword lemmas. Note that we run into difficulties mapping between -- reflexive verbs, non-reflexive part equivalents, and separated syntactic variants if a slot contains more than -- one form. To handle this, if there are the same number of forms in two slots we're trying to match up, we assume -- the forms match one-to-one; otherwise we don't match up the two slots (which means {{gl-reinteg-verb form of}} won't -- work in this case, but such a case is extremely rare and not worth worrying about). Alternatives that handle -- this "properly" are significantly more complicated and require non-trivial modifications to -- [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "gl-reinteg-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{gl-reinteg-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "pres|ind", person_number_list) add_basic_personal_slot("impf", "impf|ind", person_number_list) add_basic_personal_slot("pret", "pret|ind", person_number_list) add_basic_personal_slot("plup", "plup|ind", person_number_list) add_basic_personal_slot("fut", "fut|ind", person_number_list) add_basic_personal_slot("cond", "cond", person_number_list) add_basic_personal_slot("pres_sub", "pres|sub", person_number_list) add_basic_personal_slot("impf_sub", "impf|sub", person_number_list) add_basic_personal_slot("fut_sub", "fut|sub", person_number_list) add_basic_personal_slot("imp", "imp", imp_person_number_list) add_basic_personal_slot("pers_inf", "pers|inf", person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'nom' + subjunctive. add_basic_personal_slot("neg_imp", "neg|imp", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values(separated_groups, data) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local retval = {form = separated_group[1], footnotes = footnotes} table.insert(retvals, retval) end return retvals end local function simple_choice(choices) return function(separated_groups, data) if #separated_groups > 1 then data.parse_err("For spec '" .. data.prefix .. ":', only one value currently allowed") end if #separated_groups[1] > 1 then data.parse_err("For spec '" .. data.prefix .. ":', no footnotes currently allowed") end local choice = separated_groups[1][1] if not m_table.contains(choices, choice) then data.parse_err("For spec '" .. data.prefix .. ":', saw value '" .. choice .. "' but expected one of '" .. table.concat(choices, ",") .. "'") end return choice end end for _, overridable_stem in ipairs { "pres_unstressed", "pres_stressed", "pres1_and_sub", -- Don't include pres1; use pres_1s if you need to override just that form "impf", "full_impf", {"pret_conj", simple_choice({"irreg", "ar", "er", "ir"}) }, "pret_base", "pret", "gl_short_pret", "pt_pret_1s", "pt_pret_3s", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", {"sub_conj", simple_choice({"ar", "er"}) }, "plup", "impf_sub", "fut_sub", "pers_inf", "pp", "short_pp", } do if type(overridable_stem) == "string" then overridable_stems[overridable_stem] = allow_multiple_values else local stem, validator = unpack(overridable_stem) overridable_stems[stem] = validator end end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `vowel_alt`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/z, g/gu, gu/gü, g/j) occur automatically as appropriate for the ending. 2. If the stem begins with an acute accent, the accent is moved onto the last vowel of the prefix (for handling verbs in -uar such as [[minguar]], pres_3s 'míngua'). 3. If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. 4. If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem, e.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. 5. If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1_and_sub: Overriding stem for 1s present indicative and the entire subjunctive. Only set by irregular verbs and by the indicators `no_pres_stressed` (e.g. [[precaver]]) and `no_pres1_and_sub` (since verbs of this sort, e.g. [[puir]], are missing the entire subjunctive as well as the 1s present indicative). Used by many irregular verbs, e.g. [[caber]], verbs in '-air', [[dizer]], [[ter]], [[valer]], etc. Some verbs set this and then supply an override for the pres_1sg if it's irregular, e.g. [[saber]], with irregular subjunctive stem "saib-" and special 1s present indicative "sei". -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres1_and_sub if given, else pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to pres1_and_sub if given, else the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- sub_conj: Determines the set of endings used in the subjunctive. Should be one of "ar" or "er". -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- full_impf: The full imperfect stem missing only the endings (-a, -as, -am, etc.). Used for verbs with irregular imperfects such as [[ser]], [[ter]], [[vir]] and [[pôr]]. Needs to include an accent on the stressed vowel, which will automatically be removed when not needed. -- pret_conj: Determines the set of endings used in the preterite. Should be one of "ar", "er", "ir" or "irreg". Defaults to the conjugation as determined from the infinitive. When pret_conj == "irreg", `pret` is used, otherwise `pret_base`. -- pret_base: The preterite stem (not including the -a-/-e-/-i- stem suffix). Defaults to the infinitive stem. Only used when pret_conj ~= "irreg". -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.). Needs to include the accent on the final vowel that occurs in some forms, e.g. 'figé' for [[fazer]], 'fô' for [[ser]]; the accent will automatically be removed when not needed. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[fazer]], [[poder]], [[trazer]], etc. The pret_1s and pret_3s are handled using the gl_short_pret stem instead for "Galician"-ending forms (pret_1s '-em', pret_3s '-o') and using pt_pret_1s and pt_pret_3s for "Portuguese"-ending forms. Defaults to `pret_base` + the accented conjugation vowel. -- gl_short_pret: The short preterite stem, used with "Galician" 1s and 3s endings (pret_1s '-em', pret_3s '-o'). Only used with irregular preterites (pret_conj == "irreg"). Normally derived from gl_pret by deleting the final vowel, and doesn't need to be given explicitly. -- pt_pret_1s: The "Portuguese" pret_1s form. In addition to this, the "Galician" pret_1s form will be included, formed from gl_short_pret by adding '-em'. Does not need to be given if an override for pret_1s is supplied. -- pt_pret_3s: The "Portuguese" pret_3s form. In addition to this, the "Galician" pret_3s form will be included, formed from gl_short_pret by adding '-o' (which may cause the preceding consonant to shift to preserve the sound). Does not need to be given if an override for pret_3s is supplied. -- fut: The future stem. Defaults to the infinitive stem + the unaccented conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Needs to include the accent on the final vowel that occurs in some forms; see `pret` for more information. Defaults to `pret`. -- fut_sub: The future subjunctive stem. Needs to include the accent on the final vowel that occurs in some forms; see `gl_pret` for more information. Defaults to the merger of `gl_pret` and `pt_pret`. -- plup: The pluperfect stem. Needs to include the accent on the final vowel that occurs in some forms; see `pret` for more information. Defaults to `pret`. -- pers_inf: The personal infinitive stem. Defaults to the infinitive stem + the accented conjugation vowel. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- short_pp: The short masculine singular past participle, for verbs with such a form. No default. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- (1) Verbs with short past participles: need to specify the short pp explicitly. -- -- aceitar: use <short_pp:aceite> -- anexar, completar, expressar, expulsar, findar, fritar, ganhar, gastar, limpar, pagar, pasmar, pegar, soltar: -- use <short_pp:anexo> etc. -- assentar: use <short_pp:assente> -- entregar: use <short_pp:entregue> -- enxugar: use <short_pp:enxuto> -- matar: use <short_pp:morto> -- -- (2) Verbs with orthographic consonant alternations: handled automatically. -- -- -car (brincar, buscar, pecar, trancar, etc.): automatically handled in combine_stem_ending() -- -çar (alcançar, começar, laçar): automatically handled in combine_stem_ending() -- -gar (apagar, cegar, esmagar, largar, navegar, resmungar, sugar, etc.): automatically handled in combine_stem_ending() -- -- (3) Verbs with vowel alternations: need to specify the alternation explicitly unless it always happens, in -- which case it's handled automatically through an entry below. -- -- esmiuçar changing to esmiúço: use <ú> -- faiscar changing to faísco: use <í> -- -iar changing to -eio (ansiar, incendiar, mediar, odiar, remediar, etc.): use <ei> -- -izar changing to -ízo (ajuizar, enraizar, homogeneizar, plebeizar, etc.): use <í> -- mobiliar changing to mobílio: use <í> -- reusar changing to reúso: use <ú> -- saudar changing to saúdo: use <ú> -- tuitar/retuitar changing to (re)tuíto: use <í> { -- dar, desdar match = match_against_verbs("dar", {"^", "^des", "^re"}), forms = { pres_1s = "dou", pres_2s = "dás", pres_3s = "dá", -- damos, dades/dais regular pres_3p = {GL_TYPE .. "dam", PT_TYPE .. "dão"}, pret_conj = "irreg", pret = "dé", pret_1s = "dei", pret_3s = "deu", pres_sub_1s = "dê", pres_sub_2s = "dês", pres_sub_3s = "dê", -- demos, dedes/deis regular pres_sub_3p = {GL_TYPE .. "dem", PT_TYPE .. "deem"}, irreg = true, } }, { -- -ear (frear, nomear, semear, etc.) match = "ear", forms = { pres_stressed = {"ei", GL_ALTVAR .. "e"}, e_ei_cat = true, } }, { -- estar match = match_against_verbs("estar", {"^", "sob", "sobr"}), forms = { pres_1s = "estou", pres_2s = "estás", pres_3s = "está", pres_3p = {GL_TYPE .. "estám", PT_TYPE .. "estão"}, pres1_and_sub = "estej", -- only for subjunctive as we override pres_1s sub_conj = "er", pret_conj = "irreg", pret = "estivé", pt_pret_1s = "estive", pt_pret_3s = "esteve", -- [[sobestar]], [[sobrestar]] are transitive so they have fully inflected past participles pp_inv = function(base, prefix) return prefix == "" end, irreg = true, } }, -------------------------------------------------------------------------------------------- -- -er -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- precaver: use <no_pres_stressed> -- -cer (verbs in -ecer, descer, vencer, etc.): automatically handled in combine_stem_ending() -- -ger (proteger, reger, etc.): automatically handled in combine_stem_ending() -- -guer (erguer/reerguer/soerguer): automatically handled in combine_stem_ending() { -- benzer match = "benzer", forms = {short_pp = "bento"} }, { -- caber match = "caber", forms = { pres1_and_sub = "caib", pret_conj = "irreg", pret = "coubé", pt_pret_1s = "coube", pt_pret_3s = "coube", irreg = true, } }, { -- crer, descrer match = "crer", forms = { pres_2s = "crês", pres_3s = "crê", pres_2p = "credes", pres_3p = {GL_TYPE .. "crem", PT_TYPE .. "creem"}, pres1_and_sub = {"crei", GL_ALTVAR .. "cre"}, irreg = true, } }, { -- dizer, bendizer, condizer, contradizer, desdizer, maldizer, predizer, etc. match = "dizer", forms = { -- use 'digu' because we're in a front environment; if we use 'dig', we'll get '#dijo' pres1_and_sub = "digu", pres_2s = {GL_TYPE .. "dis", PT_TYPE .. "dizes"}, pres_3s = {GL_TYPE .. "di", PT_TYPE .. "diz"}, pres_3p = {GL_TYPE .. "dim", PT_TYPE .. "dizem"}, pret_conj = "irreg", pret = {GL_TYPE .. "dixé", PT_TYPE .. "dissé"}, pt_pret_1s = "disse", pt_pret_3s = "disse", pp = "dito", fut = "dir", irreg = true, } }, { -- eleger, reeleger match = "eleger", forms = {short_pp = "eleito"} }, { -- acender, prender; not desprender, etc. match = match_against_verbs("ender", {"^ac", "^pr"}), forms = {short_pp = "eso"} }, { -- fazer, afazer, contrafazer, desfazer, liquefazer, perfazer, putrefazer, rarefazer, refazer, satisfazer, tumefazer match = "fazer", forms = { -- use 'fagu' because we're in a front environment; if we use 'fag', we'll get '#fajo' pres1_and_sub = {GL_TYPE .. "fagu", PT_TYPE .. "faç"}, pres_2s = {GL_TYPE .. "fás", PT_TYPE .. "fazes"}, pres_3s = {GL_TYPE .. "fai", PT_TYPE .. "faz"}, pres_3p = {GL_TYPE .. "fam", PT_TYPE .. "fazem"}, pret_conj = "irreg", pret = {GL_TYPE .. "figé", PT_TYPE .. "fizé", GL_ONLY_ALTVAR .. "fizé"}, pt_pret_1s = "fiz", pt_pret_3s = "fez", pp = "feito", fut = "far", irreg = true, } }, { match = "^haver", forms = { pres_1s = "hei", pres_2s = "hás", pres_3s = {"há", {form = GL_ALTVAR .. "hai", footnotes = {"[also impersonal]"}}}, pres_3p = {GL_TYPE .. "ham", PT_TYPE .. "hão"}, pres1_and_sub = "haj", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "houvé", pt_pret_1s = "houve", pt_pret_3s = "houve", imp_2s = "há", irreg = true, } }, -- reaver below under r- { -- jazer, adjazer match = "jazer", forms = { pres_3s = "jaz", irreg = true, } }, { -- ler, reler, tresler; not excel(l)er, valer, etc. match = match_against_verbs("ler", {"^", "^re", "tres"}), forms = { pres_2s = "lês", pres_3s = "lê", pres_2p = "ledes", pres_3p = {GL_TYPE .. "lem", PT_TYPE .. "leem"}, pres1_and_sub = {"lei", GL_ALTVAR .. "le"}, irreg = true, } }, { -- morrer, desmorrer match = "morrer", forms = {short_pp = "morto"} }, { -- moer, but not remoer match = "^moer", forms = { pres_2s = "móis", pres_3s = "mói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() pres1_and_sub = {"mo", GL_ALTVAR .. "moi"}, short_pp = "mudo", irreg = true, } }, { -- doer, remoer, roer/corroer, soer match = "oer", forms = { pres_2s = "óis", pres_3s = "ói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() pres1_and_sub = {"o", GL_ALTVAR .. "oi"}, irreg = true, } }, { -- perder match = "perder", forms = { -- use 'perqu' because we're in a front environment; if we use 'perc', we'll get '#perço' -- we don't tag these forms GL_TYPE or PT_TYPE because both occur with both endings -ais/-ades pres1_and_sub = {"perd", "perqu"}, irreg = true, } }, { -- poder match = "poder", forms = { pres1_and_sub = {GL_TYPE .. "pod", PT_TYPE .. "poss"}, pret_conj = "irreg", pret = "pudé", pt_pret_1s = "pude", pt_pret_3s = "pôde", irreg = true, } }, { -- prazer, aprazer, comprazer, desprazer -- FIXME: comprazer also has regular preterite match = "prazer", forms = { pres_3s = "praz", pret_conj = "irreg", pret = "prouvé", pt_pret_1s = "prouve", pt_pret_3s = "prouve", only3sp = function(base, prefix) return prefix == "a" end, imp_2s = {GL_TYPE .. "praze", PT_TYPE .. "praz"}, irreg = true, } }, -- prover below, just below ver { -- requerer; must precede querer match = "requerer", forms = { pres_3s = "requer", pres1_and_sub = "requeir", imp_2s = {"requer"}, -- regular preterite, unlike [[querer]] irreg = true, } }, { -- querer, desquerer, malquerer match = "querer", forms = { pres_1s = "quero", pres_3s = "quer", pres1_and_sub = "queir", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = {GL_TYPE .. "quigé", PT_TYPE .. "quisé"}, pt_pret_1s = "quis", pt_pret_3s = "quis", irreg = true, } }, { match = "reaver", forms = { pres_1s = "reei", pres_2s = "reás", pres_3s = "reá", pres_3p = {GL_TYPE .. "ream", PT_TYPE .. "reão"}, pres1_and_sub = "reaj", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "reouvé", pt_pret_1s = "reouve", pt_pret_3s = "reouve", irreg = true, } }, { -- saber, ressaber match = "saber", forms = { pres_1s = "sei", pres1_and_sub = "saib", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "soubé", pt_pret_1s = "soube", pt_pret_3s = "soube", irreg = true, } }, { -- escrever/reescrever, circunscrever, descrever/redescrever, inscrever, prescrever, proscrever, subscrever, -- transcrever, others? match = "screver", forms = { pp = "scrito", irreg = true, } }, { -- suspender match = "suspender", forms = {short_pp = "suspenso"} }, { match = "^ser", forms = { pres_1s = "sou", pres_2s = "és", pres_3s = "é", pres_1p = "somos", pres_2p = {GL_TYPE .. "sodes", PT_TYPE .. "sois"}, pres_3p = {GL_TYPE .. "som", PT_TYPE .. "são"}, pres1_and_sub = "sej", -- only for subjunctive as we override pres_1s full_impf = "ér", pret_conj = "irreg", pret = "fô", pret_1s = {GL_TYPE .. "fum", PT_TYPE .. "fui"}, pret_3s = "foi", imp_2s = "sê", imp_2p = "sede", pp_inv = true, irreg = true, } }, { -- We want to match abster, conter, deter, etc. but not abater, cometer, etc. No way to avoid listing each verb. match = match_against_verbs("ter", {"abs", "^a", "con", "de", "entre", "man", "ob", "^re", "sus", "^"}), forms = { -- FIXME, Estraviz says 'contens', 'detens' etc. but that may be a typo pres_2s = function(base, prefix) return {GL_TYPE .. "tés", PT_TYPE .. (prefix == "" and "tens" or "téns")} end, -- FIXME, Estraviz says 'contem', 'detem' etc. but that may be a typo pres_3s = function(base, prefix) return prefix == "" and "tem" or "tém" end, pres_2p = "tendes", pres_3p = {GL_TYPE .. "tenhem", PT_TYPE .. "têm", GL_ALTVAR .. "tém"}, pres1_and_sub = "tenh", full_impf = "tính", pret_conj = "irreg", pret = "tivé", pt_pret_1s = "tive", pt_pret_3s = "teve", irreg = true, } }, { match = "trazer", forms = { -- use 'tragu' because we're in a front environment; if we use 'trag', we'll get '#trajo' pres1_and_sub = "tragu", pres_3s = "traz", pret_conj = "irreg", pret = "trouxé", pt_pret_1s = "trouxe", pt_pret_3s = "trouxe", fut = "trar", irreg = true, } }, { match = "traguer", forms = { pret_conj = "irreg", pret = "trouxé", pt_pret_1s = "trouxe", pt_pret_3s = "trouxe", irreg = true, } }, { -- valer, desvaler, equivaler match = "valer", forms = { pres1_and_sub = "valh", irreg = true, } }, { -- We want to match antever etc. but not absolver, atrever etc. No way to avoid listing each verb. match = match_against_verbs("ver", {"ante", "entre", "pre", "^re", "^"}), forms = { pres_2s = "vês", pres_3s = "vê", pres_2p = "vedes", pres_3p = function(base, prefix) return {GL_TYPE .. (prefix == "" and "vem" or "vêm"), PT_TYPE .. "veem"} end, pres1_and_sub = "vej", pret_conj = "irreg", pret = "ví", pret_1s = {GL_TYPE .. "vim", PT_TYPE .. "vi"}, pret_3s = "viu", pp = "visto", irreg = true, } }, { -- [[prover]] and [[desprover]] have regular preterite and past participle match = "prover", forms = { pres_2s = "provês", pres_3s = "provê", -- FIXME: Estraviz says 'provem' but that may be a typo pres_2p = "provedes", pres_3p = {GL_TYPE .. "provêm", PT_TYPE .. "proveem"}, pres1_and_sub = "provej", irreg = true, } }, { -- volver, devolver, envolver, revolver, etc. match = "volver", forms = {short_pp = "volto"}, }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- abolir: use <u-o> -- barrir: use <only3sp> -- carpir, colorir, demolir: use <no_pres1_and_sub> -- descolorir: use <no_pres1_and_sub> -- delir, espavorir, falir, florir, remir, renhir: use <no_pres_stressed> -- empedernir: use <i-e> -- transir: regular -- aspergir, despir, flectir/deflectir/genuflectir/genufletir/reflectir/refletir, mentir/desmentir, -- sentir/assentir/consentir/dissentir/pressentir/ressentir, convergir/divergir, aderir/adherir, -- ferir/auferir/conferir/deferir/desferir/diferir/differir/inferir/interferir/preferir/proferir/referir/transferir, -- gerir/digerir/ingerir/sugerir, preterir, competir/repetir, servir, advertir/animadvertir/divertir, -- vestir/investir/revestir/travestir, seguir/conseguir/desconseguir/desseguir/perseguir/prosseguir: use <i-e> -- inerir: use <i-e> -- compelir/expelir/impelir/repelir: use <i-e> -- dormir, engolir, tossir, subir, acudir/sacudir, fugir, sumir/consumir (NOT assumir/presumir/resumir): use <u-o> -- polir/repolir: use <u> -- premir: use <i> -- extorquir/retorquir: <u-o,u> -- agredir/progredir/regredir/transgredir: use <i> -- denegrir, prevenir: use <i> -- eclodir: use <u-o> -- cerzir: use <i-e> -- proibir/coibir: use <í> -- reunir: use <ú> -- parir/malparir: use <no_pres_stressed> -- explodir/implodir: use <u-o> -- -- -cir alternations (aducir, ressarcir): automatically handled in combine_stem_ending() -- -gir alternations (agir, dirigir, exigir): automatically handled in combine_stem_ending() -- -guir alternations (e.g. conseguir): automatically handled in combine_stem_ending() -- -quir alternations (e.g. extorquir): automatically handled in combine_stem_ending() { -- verbs in -air (cair, sair, trair and derivatives: decair/descair/recair, sobres(s)air, -- abstrair/atrair/contrair/distrair/extrair/protrair/retrair/subtrair) match = "air", forms = { pres1_and_sub = "ai", pres_2s = "ais", pres_3s = "ai", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- abrir/desabrir/reabrir match = "abrir", forms = {pp = "aberto"} }, { -- cobrir/descobrir/encobrir/recobrir/redescobrir match = "cobrir", forms = {vowel_alt = "u-o", pp = "coberto"} }, { -- conduzir, produzir, reduzir, traduzir, etc.; luzir, reluzir, tremeluzir match = "uzir", forms = { pres_3s = "uz", -- FIXME, is this correct? imp_2s = "uze", irreg = true, } }, { -- pedir, desimpedir, despedir, espedir, expedir, impedir -- medir -- comedir match = match_against_verbs("edir", {"m", "p"}), forms = { pres1_and_sub = {GL_TYPE .. "id", PT_TYPE .. "eç"}, irreg = true, } }, { -- frigir match = "frigir", forms = {vowel_alt = "i-e", short_pp = "frito"}, }, { -- inserir match = "inserir", forms = {vowel_alt = "i-e"}, }, { -- ir match = "^ir", forms = { pres_1s = "vou", pres_2s = {GL_TYPE .. "vás", PT_TYPE .. "vais"}, pres_3s = "vai", pres_1p = {GL_TYPE .. "imos", PT_TYPE .. "vamos"}, pres_2p = "ides", pres_3p = {GL_TYPE .. "vam", PT_TYPE .. "vão"}, pres_sub_1s = {GL_TYPE .. "vaia", PT_TYPE .. "vá"}, pres_sub_2s = {GL_TYPE .. "vaias", PT_TYPE .. "vás"}, pres_sub_3s = {GL_TYPE .. "vaia", PT_TYPE .. "vá"}, pres_sub_1p = {GL_TYPE .. "vaiamos", PT_TYPE .. "vamos"}, pres_sub_2p = {GL_TYPE .. "vaiades", PT_TYPE .. "vades"}, pres_sub_3p = {GL_TYPE .. "vaiam", PT_TYPE .. "vão"}, pret_conj = "irreg", pret = "fô", pret_1s = {GL_TYPE .. "fum", PT_TYPE .. "fui"}, pret_3s = "foi", irreg = true, } }, { -- emergir, imergir, submergir match = "mergir", forms = {vowel_alt = "i-e", short_pp = "merso"}, }, { match = "ouvir", forms = { pres1_and_sub = {"ouç", ALTVAR .. "oiç"}, irreg = true, } }, { -- exprimir, imprimir, comprimir (but not descomprimir per Priberam), deprimir, oprimir/opprimir (but not reprimir, -- suprimir/supprimir per Priberam) match = match_against_verbs("primir", {"^com", "ex", "im", "de", "^o", "op"}), forms = {short_pp = "presso"} }, { -- rir, sorrir match = match_against_verbs("rir", {"^", "sor"}), forms = { pres_2s = "ris", pres_3s = "ri", pres_2p = "rides", pres_3p = {GL_TYPE .. "rim", PT_TYPE .. "riem"}, pres1_and_sub = "ri", irreg = true, } }, { -- distinguir, extinguir match = "tinguir", forms = { short_pp = "tinto", -- gu/g alternations handled in combine_stem_ending() } }, { -- verbs in -truir (construir, destruir, reconstruir) but not obstruir/desobstruir, instruir, which are handled -- by the default -uir handler below match = match_against_verbs("struir", {"con", "de"}), forms = { pres_2s = {"stróis", ALTVAR .. "struis"}, pres_3s = {"strói", ALTVAR .. "strui"}, pres_3p = {"stroem", ALTVAR .. "struem"}, -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- remaining verbs in -uir (concluir/excluir/incluir/concruir/concruyr, abluir/diluir, afluir/fluir/influir, -- aluir, anuir, atribuir/contribuir/distribuir/redistribuir/retribuir/substituir, coevoluir/evoluir, -- constituir/destituir/instituir/reconstituir/restituir, derruir, diminuir, estatuir, fruir/usufruir, imbuir, -- imiscuir, poluir, possuir, puir, pruir, ruir -- FIXME: old module lists short pp incluso for incluir that can't be verified, ask about this -- FIXME: handle -uyr verbs? match = function(verb) -- Don't match -guir verbs (e.g. [[seguir]], [[conseguir]]) or -quir verbs (e.g. [[extorquir]]) if verb:find("guir$") or verb:find("quir$") then return nil else return match_against_verbs("uir", {""})(verb) end end, forms = { pres_2s = "uis", pres_3s = "ui", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- We want to match advir, convir, devir, etc. but not ouvir, servir, etc. No way to avoid listing each verb. match = match_against_verbs("vir", {"ad", "^a", "con", "contra", "de", "^desa", "inter", "pro", "^re", "sobre", "^"}), forms = { -- FIXME, Estraviz says 'convens', 'devens' etc. but that may be a typo pres_2s = function(base, prefix) return {GL_TYPE .. "vés", PT_TYPE .. (prefix == "" and "vens" or "véns")} end, -- FIXME, Estraviz says 'convem', 'devem' etc. but that may be a typo pres_3s = function(base, prefix) return prefix == "" and "vem" or "vém" end, pres_2p = "vindes", pres_3p = {GL_TYPE .. "venhem", PT_TYPE .. "vêm", GL_ALTVAR .. "vém"}, pres1_and_sub = "venh", full_impf = "vính", pret_conj = "irreg", pret = {GL_TYPE .. "vinhé", PT_TYPE .. "vié"}, pret_1s = "vim", pret_3s = {GL_TYPE .. "véu", PT_TYPE .. "veio"}, pp = "vindo", irreg = true, } }, -------------------------------------------------------------------------------------------- -- misc -- -------------------------------------------------------------------------------------------- { -- pôr, antepor, apor, compor/decompor/descompor, contrapor, depor, dispor, expor, impor, interpor, justapor, -- opor, pospor, propor, repor, sobrepor, supor/pressupor, transpor, decompor, others? match = "p[oô]r", forms = { pres1_and_sub = "ponh", pres_2s = {GL_TYPE .. "pós", PT_TYPE .. "pões", GL_ALTVAR .. "pons"}, pres_3s = {GL_TYPE .. "pom", PT_TYPE .. "põe"}, pres_1p = "pomos", pres_2p = "pondes", pres_3p = {GL_TYPE .. "ponhem", PT_TYPE .. "põem", GL_ALTVAR .. "póm"}, full_impf = "púnh", pret_conj = "irreg", pret = {GL_TYPE .. "pugé", PT_TYPE .. "pusé"}, pt_pret_1s = "pus", pt_pret_3s = "pôs", pers_inf = "po", gerund = "pondo", pp = "posto", irreg = true, } }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end -- Apply vowel alternations to stem. local function apply_vowel_alternations(stem, alternations) local alternation_stems = {} local saw_pres1_and_sub = false local saw_pres_stressed = false -- Process alternations other than +. for _, altobj in ipairs(alternations) do local alt = altobj.form local pres1_and_sub, pres_stressed, err -- Treat final -gu, -qu as a consonant, so the previous vowel can alternate (e.g. conseguir -> consigo). -- This means a verb in -guar can't have a u-ú alternation but I don't think there are any verbs like that. stem = rsub(stem, "([gq])u$", "%1" .. TEMPC1) if alt == "+" then -- do nothing yet elseif alt == "ei" then local before_last_vowel = rmatch(stem, "^(.*)i$") if not before_last_vowel then err = "stem should end in -i" else pres1_and_sub = nil pres_stressed = before_last_vowel .. "ei" end else local before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-[ui])$") if not before_last_vowel then before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-)$") end if alt == "i-e" then if last_vowel == "e" or last_vowel == "i" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel if last_vowel == "i" then pres_stressed = before_last_vowel .. "e" .. after_last_vowel end else err = "should have -e- or -i- as the last vowel" end elseif alt == "i" then if last_vowel == "e" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -e- as the last vowel" end elseif alt == "u-o" then if last_vowel == "o" or last_vowel == "u" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel if last_vowel == "u" then pres_stressed = before_last_vowel .. "o" .. after_last_vowel end else err = "should have -o- or -u- as the last vowel" end elseif alt == "u" then if last_vowel == "o" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -o- as the last vowel" end elseif alt == "í" then if last_vowel == "i" then pres_stressed = before_last_vowel .. "í" .. after_last_vowel else err = "should have -i- as the last vowel" end elseif alt == "ú" then if last_vowel == "u" then pres_stressed = before_last_vowel .. "ú" .. after_last_vowel else err = "should have -u- as the last vowel" end else error("Internal error: Unrecognized vowel alternation '" .. alt .. "'") end end if pres1_and_sub then pres1_and_sub = {form = pres1_and_sub:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres1_and_sub = true end if pres_stressed then pres_stressed = {form = pres_stressed:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres_stressed = true end table.insert(alternation_stems, { altobj = altobj, pres1_and_sub = pres1_and_sub, pres_stressed = pres_stressed, err = err }) end -- Now do +. We check to see which stems are used by other alternations and specify those so any footnotes are -- properly attached. for _, alternation_stem in ipairs(alternation_stems) do if alternation_stem.altobj.form == "+" then local stemobj = {form = stem, footnotes = alternation_stem.altobj.footnotes} alternation_stem.pres1_and_sub = saw_pres1_and_sub and stemobj or nil alternation_stem.pres_stressed = saw_pres_stressed and stemobj or nil end end return alternation_stems end -- Add the `stem` to the `ending` for the given `slot` and apply any phonetic modifications. -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, slot, prefix, stem, ending, dont_include_prefix) -- If the stem begins with an acute accent, this is a signal to move the accent onto the last vowel of the prefix. -- Cf. míngua of minguar. if stem:find("^" .. AC) then stem = rsub(stem, "^" .. AC, "") if dont_include_prefix then error("Internal error: Can't handle acute accent at beginning of stem if dont_include_prefix is given") end prefix = rsub(prefix, "([aeiouyAEIOUY])([^aeiouyAEIOUY]*)$", "%1" .. AC .. "%2") end -- Use the full stem for checking for -gui ending and such, because 'stem' is just 'u' for [[arguir]], -- [[delinquir]]. local full_stem = prefix .. stem -- Include the prefix in the stem unless dont_include_prefix is given (used for the past participle stem). if not dont_include_prefix then stem = full_stem end -- If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter -- of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent -- on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems -- ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. if ending:find("^%*%*") then ending = rsub(ending, "^%*%*", "") if rfind(full_stem, "[gq]uí$") or not rfind(full_stem, V .. "[íú]$") then stem = com.remove_final_accent(stem) end end -- If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem. -- E.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. if ending:find("^%*") then ending = rsub(ending, "^%*", "") stem = com.remove_final_accent(stem) end -- If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent -- the two merging into a diphthong: -- * cair -> -- * pres: caímos, caís; -- * impf: all forms (caí-); -- * pret: caí (but not caim), caíste (but not caiu), caímos, caístes, caíram; -- * plup: all forms (caír-); -- * impf_sub: all forms (caíss-); -- * fut_sub: caíres, caírem (but not cair, cairmos, cairdes) -- * pp: caído (but not gerund caindo) -- * atribuir, other verbs in -uir -> same pattern as for cair etc. -- * roer -> -- * pret: roí (but not roim) -- * impf: all forms (roí-) -- * pp: roído -- Don't let variant codes derail the following checks. Note that variant codes are properly added to the end of -- the ending, so checks against the beginning of the ending work even in their presence, but not checks against -- the full ending. local cleaned_ending = export.remove_variant_codes(ending) if cleaned_ending:find("^i") and full_stem:find("[aeiou]$") and not full_stem:find("[gq]u$") and not cleaned_ending:find("^i[rum]$") and cleaned_ending ~= "indo" and not cleaned_ending:find("^ir[md]") then ending = ending:gsub("^i", "í") end -- Spelling changes in the stem; it depends on whether the stem given is the pre-front-vowel or -- pre-back-vowel variant, as indicated by `frontback`. We want these front-back spelling changes to happen -- between stem and ending, not between prefix and stem; the prefix may not have the same "front/backness" -- as the stem. local is_front = rfind(ending, "^[eiéíê]") if base.frontback == "front" and not is_front then stem = stem:gsub("c$", "ç") -- conhecer -> conheço, vencer -> venço, descer -> desço stem = stem:gsub("g$", "j") -- proteger -> protejo, fugir -> fujo stem = stem:gsub("gu$", "g") -- distinguir -> distingo, conseguir -> consigo stem = stem:gsub("qu$", "c") -- extorquir -> exturco stem = stem:gsub("([gq])ü$", "%1u") -- argüir (superseded) -> arguo, delinqüir (superseded) -> delinquo elseif base.frontback == "back" and is_front then -- The following changes are all superseded so we don't do them: -- averiguar -> averigüei, minguar -> mingüei; antiquar -> antiqüei, apropinquar -> apropinqüei -- stem = stem:gsub("([gq])u$", "%1ü") stem = stem:gsub("g$", "gu") -- cargar -> carguei, apagar -> apaguei stem = stem:gsub("c$", "qu") -- marcar -> marquei stem = stem:gsub("ç$", "c") -- começar -> comecei -- j does not go to g here; desejar -> deseje not #desege end local retval = stem .. ending if retval:find(GL_TYPE) and retval:find(PT_TYPE) or retval:find(GL_ONLY_TYPE) and not retval:find(GL_TYPE) then -- Reject clashes in "Galician"-type and "Portuguese"-type forms, e.g. '#vós dixéreis' or '#vós dissérades'. return nil end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, slot, base.prefix, stem, ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function construct_stems(base, vowel_alt) local stems = {} stems.pres_unstressed = base.stems.pres_unstressed or base.inf_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or base.stems.pres_stressed or vowel_alt.pres_stressed or base.inf_stem stems.pres1_and_sub = -- If no_pres_stressed given, the entire subjunctive is missing. base.no_pres_stressed and {} or -- If no_pres1_and_sub given, pres1 and entire subjunctive are missing. base.no_pres1_and_sub and {} or base.stems.pres1_and_sub or vowel_alt.pres1_and_sub or nil stems.pres1 = base.stems.pres1 or stems.pres1_and_sub or stems.pres_stressed stems.impf = base.stems.impf or base.inf_stem stems.full_impf = base.stems.full_impf stems.pret_base = base.stems.pret_base or base.inf_stem stems.pret_conj = base.stems.pret_conj or base.conj stems.pret = base.stems.pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret_base), function(form) return form .. base.conj_vowel end) stems.gl_short_pret = base.stems.gl_short_pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret), function(form) return rsub(form, com.V .. "$", "") end) stems.pt_pret_1s = base.stems.pt_pret_1s stems.pt_pret_3s = base.stems.pt_pret_3s stems.fut = base.stems.fut or base.inf_stem .. base.conj stems.cond = base.stems.cond or stems.fut stems.pres_sub_stressed = base.stems.pres_sub_stressed or stems.pres1 stems.pres_sub_unstressed = base.stems.pres_sub_unstressed or stems.pres1_and_sub or stems.pres_unstressed stems.sub_conj = base.stems.sub_conj or base.conj stems.plup = base.stems.plup or stems.pret stems.impf_sub = base.stems.impf_sub or stems.pret stems.fut_sub = base.stems.fut_sub or stems.pret stems.pers_inf = base.stems.pers_inf or base.inf_stem .. base.conj_vowel stems.pp = base.stems.pp or base.conj == "ar" and combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ado", "dont include prefix") or -- use combine_stem_ending esp. so we get roído, caído, etc. combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ido", "dont include prefix") stems.pp_ms = stems.pp local function masc_to_fem(form) if rfind(form, "o$") then return rsub(form, "o$", "a") else return form end end stems.pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.pp_ms), masc_to_fem) if base.stems.short_pp then stems.short_pp_ms = base.stems.short_pp stems.short_pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.short_pp_ms), masc_to_fem) end base.this_stems = stems end local function add_present_indic(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end local s2, s3, p1, p2, p3 if base.conj == "ar" then s2, s3, p1, p2, p3 = "as", "a", "amos", {"ades" .. GL_TYPE, "ais" .. PT_TYPE}, "am" elseif base.conj == "er" or base.conj == "or" then -- verbs in -por have the present overridden s2, s3, p1, p2, p3 = "es", "e", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, "em" elseif base.conj == "ir" then s2, s3, p1, p2, p3 = "es", "e", "imos", {"ides" .. GL_TYPE, "is" .. PT_TYPE}, "em" else error("Internal error: Unrecognized conjugation " .. base.conj) end addit("1s", stems.pres1, "o") addit("2s", stems.pres_stressed, s2) addit("3s", stems.pres_stressed, s3) addit("1p", stems.pres_unstressed, p1) addit("2p", stems.pres_unstressed, p2) addit("3p", stems.pres_stressed, p3) end local function add_present_subj(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end local s1, s2, s3, p1, p2, p3 if stems.sub_conj == "ar" then s1, s2, s3, p1, p2, p3 = "e", "es", "e", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, "em" else s1, s2, s3, p1, p2, p3 = "a", "as", "a", "amos", {"ades" .. GL_TYPE, "ais" .. PT_TYPE}, "am" end addit("1s", stems.pres_sub_stressed, s1) addit("2s", stems.pres_sub_stressed, s2) addit("3s", stems.pres_sub_stressed, s3) addit("1p", stems.pres_sub_unstressed, p1) addit("2p", stems.pres_sub_unstressed, p2) addit("3p", stems.pres_sub_stressed, p3) end local function add_finite_non_present(base) local stems = base.this_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect stem. if stems.full_impf then add_tense("impf", stems.full_impf, "*a", "*as", "*a", "amos", {"ades" .. GL_TYPE, "eis" .. PT_TYPE, "ais" .. GL_ALTVAR}, "*am") elseif base.conj == "ar" then add_tense("impf", stems.impf, "ava", "avas", "ava", "ávamos", {"ávades" .. GL_TYPE, "áveis" .. PT_TYPE, "ávais" .. GL_ALTVAR}, "avam") else add_tense("impf", stems.impf, "ia", "ias", "ia", "íamos", {"íades" .. GL_TYPE, "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR}, "iam") end -- * at the beginning of the ending means to remove a final accent from the preterite stem. if stems.pret_conj == "irreg" then add_tense("pret", stems.gl_short_pret, "em" .. GL_TYPE, nil, "o" .. GL_TYPE) add_tense("pret", stems.pret, nil, {"*ste", "*che" .. GL_ALTVAR}, nil, "*mos", "*stes", {"rom" .. GL_TYPE, "*ram" .. PT_TYPE}) add_tense("pret", stems.pt_pret_1s, PT_TYPE) add_tense("pret", stems.pt_pret_3s, nil, nil, PT_TYPE) elseif stems.pret_conj == "ar" then add_tense("pret", stems.pret_base, "ei", {"aste", "ache" .. GL_ALTVAR}, "ou", "amos", "astes", {"árom" .. GL_TYPE, "aram" .. PT_TYPE}) elseif stems.pret_conj == "er" then add_tense("pret", stems.pret_base, {"im" .. GL_TYPE, "i" .. PT_TYPE}, {"este", "eche" .. GL_ALTVAR}, "eu", "emos", "estes", {"êrom" .. GL_TYPE, "eram" .. PT_TYPE}) else add_tense("pret", stems.pret_base, {"im" .. GL_TYPE, "i" .. PT_TYPE}, {"iste", "iche" .. GL_ALTVAR}, "iu", "imos", "istes", {"írom" .. GL_TYPE, "iram" .. PT_TYPE}) end -- * at the beginning of the ending means to remove a final accent from the stem. -- ** is similar but is "conditional" on a consonant preceding the final vowel. add_tense("plup", stems.plup, "**ra", "**ras", "**ra", "ramos", {"rades" .. GL_TYPE, "reis" .. PT_TYPE, "rais" .. GL_ALTVAR}, "**ram") add_tense("impf_sub", stems.impf_sub, "**sse", "**sses", "**sse", "ssemos", {"ssedes" .. GL_TYPE, "sseis" .. PT_TYPE}, "**ssem") add_tense("fut_sub", stems.fut_sub, "*r", "**res", "*r", "*rmos", "*rdes", "**rem") if base.refl then local mark = TEMP_MESOCLITIC_INSERTION_POINT add_tense("fut", stems.fut, {"ei" .. GL_TYPE, mark .. "ei" .. PT_TYPE}, {"ás" .. GL_TYPE, mark .. "ás" .. PT_TYPE}, {"á" .. GL_TYPE, mark .. "á" .. PT_TYPE}, {"emos" .. GL_TYPE, mark .. "emos" .. PT_TYPE}, {"edes" .. GL_TYPE, mark .. "eis" .. PT_TYPE}, {"ám" .. GL_TYPE, mark .. "ão" .. PT_TYPE} ) add_tense("cond", stems.cond, {"ia" .. GL_TYPE, mark .. "ia" .. PT_TYPE}, {"ias" .. GL_TYPE, mark .. "ias" .. PT_TYPE}, {"ia" .. GL_TYPE, mark .. "ia" .. PT_TYPE}, {"íamos" .. GL_TYPE, mark .. "íamos" .. PT_TYPE}, -- FIXME, is GL_ALTVAR correct for the mesoclitic variant of -íais? {"íades" .. GL_TYPE, mark .. "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR, mark .. "íais" .. GL_ALTVAR}, {"iam" .. GL_TYPE, mark .. "iam" .. PT_TYPE}) else -- Don't insert forms with the mesoclitic insertion point to avoid duplication in non-reflexive verbs. add_tense("fut", stems.fut, "ei", "ás", "á", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, {"ám" .. GL_TYPE, "ão" .. PT_TYPE}) add_tense("cond", stems.cond, "ia", "ias", "ia", "íamos", -- FIXME, is GL_ALTVAR correct for the mesoclitic variant of -íais? {"íades" .. GL_TYPE, "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR}, "iam") end -- Different stems for different parts of the personal infinitive to correctly handle forms of [[sair]] and [[pôr]]. add_tense("pers_inf", base.non_prefixed_verb, "", nil, "") add_tense("pers_inf", stems.pers_inf, nil, "**res", nil, "*rmos", "*rdes", "**rem") end local function add_non_finite_forms(base) local stems = base.this_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below for -- "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.verb}) end end -- verbs in -por have the gerund overridden local ger_ending = base.conj == "ar" and "ando" or base.conj == "er" and "endo" or "indo" addit("gerund", stems.pres_unstressed, ger_ending) -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the same -- form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate clitic -- pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic pronouns won't be -- added, and {{gl-reinteg-verb form of}} will wrongly consider all these combinations as possible inflections of the bare -- gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, stems.pres_unstressed, ger_ending) end end -- Skip the long/short past participle footnotes if called from {{gl-reinteg-verb}} so they don't show in the headword. local long_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-reinteg-verb" and {long_pp_footnote} or nil addit("pp_ms", stems.pp_ms, "", long_pp_footnotes) if not base.pp_inv then addit("pp_fs", stems.pp_fs, "", long_pp_footnotes) addit("pp_mp", stems.pp_ms, "s", long_pp_footnotes) addit("pp_fp", stems.pp_fs, "s", long_pp_footnotes) end if stems.short_pp_ms then local short_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-reinteg-verb" and {short_pp_footnote} or nil addit("short_pp_ms", stems.short_pp_ms, "", short_pp_footnotes) if not base.pp_inv then addit("short_pp_fs", stems.short_pp_fs, "", short_pp_footnotes) addit("short_pp_mp", stems.short_pp_ms, "s", short_pp_footnotes) addit("short_pp_fp", stems.short_pp_fs, "s", short_pp_footnotes) end end end local function copy_forms_to_imperatives(base) -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) if not skip_slot(base, "imp_2p") then -- Copy pres2p to imperative 2p minus -s since they are almost always the same. -- But not if there's an override, to avoid possibly throwing an error. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) local form_no_s, var_codes = rmatch(form, "^(.*)s(" .. var_code_c .. "*)$") if not form_no_s then error("Can't derive second-person plural imperative from second-person plural present indicative " .. "because form '" .. form .. "' doesn't end in -s") end return form_no_s .. var_codes end)) end -- Copy subjunctives to imperatives, unless there's an override for the given slot (as with the imp_1p of [[ir]]). for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = "[[" .. clitic .. "]]" .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Add the appropriate clitic pronouns in `clitics` to the forms in `base_slot`. `store_cliticized_form` is a function -- of three arguments (clitic, formobj, cliticized_form) and should store the cliticized form for the specified clitic -- and form object. local function suffix_clitic_to_forms(base, base_slot, clitics, store_cliticized_form) if not base.forms[base_slot] then -- This can happen, e.g. in only3s/only3sp/only3p verbs. return end local autolink = not base.alternant_multiword_spec.args.noautolinkverb for _, formobj in ipairs(base.forms[base_slot]) do for _, clitic in ipairs(clitics) do local cliticized_form if formobj.form:find(TEMP_MESOCLITIC_INSERTION_POINT) then -- mesoclisis in future and conditional local infinitive, suffix = rmatch(formobj.form, "^(.*)" .. TEMP_MESOCLITIC_INSERTION_POINT .. "(.*)$") if not infinitive then error("Internal error: Can't find mesoclitic insertion point in slot '" .. base_slot .. "', form '" .. formobj.form .. "'") end local full_form = infinitive .. suffix if autolink and not infinitive:find("%[%[") then infinitive = "[[" .. infinitive .. "]]" end cliticized_form = autolink and infinitive .. "-[[" .. clitic .. "]]-[[" .. full_form .. "|" .. suffix .. "]]" or infinitive .. "-" .. clitic .. "-" .. suffix else local clitic_suffix = autolink and "-[[" .. clitic .. "]]" or "-" .. clitic local form_needs_link = autolink and not formobj.form:find("%[%[") if base_slot:find("1p$") then -- Final -s disappears: arrependíamos + nos -> arrependíamo-nos, etc. cliticized_form = formobj.form:gsub("s$", "") if form_needs_link then cliticized_form = "[[" .. formobj.form .. "|" .. cliticized_form .. "]]" end else cliticized_form = formobj.form if form_needs_link then cliticized_form = "[[" .. cliticized_form .. "]]" end end cliticized_form = cliticized_form .. clitic_suffix end store_cliticized_form(clitic, formobj, cliticized_form) end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local clitic if not do_reflexive then clitic = base.clitic elseif slot:find("[123]") then local persnum = slot:match("^.*_(.-)$") clitic = person_number_to_reflexive_pronoun[persnum] else clitic = "se" end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = not slot:find("_sub") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{gl-reinteg-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "gl-reinteg-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, clitic, " ... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then suffix_clitic_to_forms(base, slot, {clitic}, function(clitic, formobj, cliticized_form) formobj.form = cliticized_form end ) end elseif not do_joined then -- Add clitic as separate word before all other forms. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, clitic, " ", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{gl-reinteg-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) -- Copy subjunctives to negative imperatives, preceded by "nom". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "nom " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[nom]] " .. form else return "[[nom]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end -- Remove special characters added to future and conditional forms to indicate mesoclitic insertion points. local function remove_mesoclitic_insertion_points(base) for slot, forms in pairs(base.forms) do if slot:find("^fut_") or slot:find("^cond_") then for _, form in ipairs(forms) do form.form = form.form:gsub(TEMP_MESOCLITIC_INSERTION_POINT, "") end end end end -- If called from {{gl-reinteg-verb}}, remove less-recommended variants; otherwise add a footnote indicating they are -- less recommended, and sort them last. local function process_altvar_forms(base) for slot, forms in pairs(base.forms) do -- As an optimization, check if there are any less-recommended forms and don't do anything if not. local saw_altvar = false for _, form in ipairs(forms) do if form.form:find(ALTVAR) then saw_altvar = true break end end if saw_altvar then if base.alternant_multiword_spec.source_template == "gl-reinteg-verb" then base.forms[slot] = iut.flatmap_forms(base.forms[slot], function(form) if form:find(ALTVAR) then return {} else return {form} end end) else local existing_forms = base.forms[slot] base.forms[slot] = {} for _, formobj in ipairs(existing_forms) do if not formobj.form:find(ALTVAR) then iut.insert_form(base.forms, slot, formobj) end end for _, formobj in ipairs(existing_forms) do if formobj.form:find(ALTVAR) then formobj.footnotes = iut.combine_footnotes(formobj.footnotes, {"[less recommended]"}) iut.insert_form(base.forms, slot, formobj) end end end end end end local function conjugate_verb(base) for _, vowel_alt in ipairs(base.vowel_alt_stems) do construct_stems(base, vowel_alt) add_present_indic(base) add_present_subj(base) end add_finite_non_present(base) add_non_finite_forms(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). copy_forms_to_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepende-te]] but [[nom]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end remove_mesoclitic_insertion_points(base) process_altvar_forms(base) end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif rfind(first_element, ":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) end else local comma_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*,%s*") for j = 1, #comma_separated_groups do local alt = comma_separated_groups[j][1] if not vowel_alternants[alt] then if #comma_separated_groups == 1 then parse_err("Unrecognized spec or vowel alternant '" .. alt .. "'") else parse_err("Unrecognized vowel alternant '" .. alt .. "'") end end if base.vowel_alt then for _, existing_alt in ipairs(base.vowel_alt) do if existing_alt.form == alt then parse_err("Vowel alternant '" .. alt .. "' specified twice") end end else base.vowel_alt = {} end table.insert(base.vowel_alt, {form = alt, footnotes = fetch_footnotes(comma_separated_groups[j])}) end end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form -- so we can use it below in the 'lemma_linked' form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb and reflexive pronoun. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve -- links in multiword lemmas and include links in non-lemma forms rather than allowing -- the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} if not base.no_built_in then for _, built_in_conj in ipairs(built_in_conjugations) do if type(built_in_conj.match) == "function" then base.prefix, base.non_prefixed_verb = built_in_conj.match(base.verb) elseif built_in_conj.match:find("^%^") and rsub(built_in_conj.match, "^%^", "") == base.verb then -- begins with ^, for exact match, and matches base.prefix, base.non_prefixed_verb = "", base.verb else base.prefix, base.non_prefixed_verb = rmatch(base.verb, "^(.*)(" .. built_in_conj.match .. ")$") end if base.prefix then -- we found a built-in verb for stem, forms in pairs(built_in_conj.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.stems[stem] = forms end end break end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeioô]r)$") if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end base.inf_stem = inf_stem suffix = suffix == "ôr" and "or" or suffix base.conj = suffix base.conj_vowel = suffix == "ar" and "á" or suffix == "ir" and "í" or "ê" base.frontback = suffix == "ar" and "back" or "front" if base.stems.vowel_alt then -- built-in verb with specified vowel alternation if base.vowel_alt then error(base.verb .. " is a recognized built-in verb, and should not have vowel alternations specified with it") end base.vowel_alt = iut.convert_to_general_list_form(base.stems.vowel_alt) end -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.stems[indicator_flag] end -- Convert vowel alternation indicators into stems. local vowel_alt = base.vowel_alt or {{form = "+"}} base.vowel_alt_stems = apply_vowel_alternations(base.inf_stem, vowel_alt) for _, vowel_alt_stems in ipairs(base.vowel_alt_stems) do if vowel_alt_stems.err then error("To use '" .. vowel_alt_stems.altobj.form .. "', present stem '" .. base.prefix .. base.inf_stem .. "' " .. vowel_alt_stems.err) end end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:gl-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) alternant_multiword_spec.vowel_alt = {} iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end -- Vowel alternants. Do these after calling detect_indicator_spec() because the latter sets base.vowel_alt for -- built-in verbs. if base.vowel_alt then for _, altobj in ipairs(base.vowel_alt) do m_table.insertIfNot(alternant_multiword_spec.vowel_alt, altobj.form) end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Galician verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "Galician " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "gl-reinteg-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("verbs with red links in their inflection tables") must_break = true break end end end end if must_break then break end end end if(base.conj == "or") then insert_cat("verbs ending in -er") else insert_cat("verbs ending in -" .. base.conj) end if base.irreg then insert_ann("irreg", "irregular") insert_cat("irregular verbs") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "impersonal") insert_cat("impersonal verbs") elseif base.only3sp then insert_ann("defective", "third-person only") insert_cat("third-person-only verbs") elseif base.only3p then insert_ann("defective", "third-person plural only") insert_cat("third-person-plural-only verbs") elseif base.no_pres_stressed or base.no_pres1_and_sub then insert_ann("defective", "defective") insert_cat("defective verbs") else insert_ann("defective", "regular") end if base.stems.short_pp then insert_ann("short_pp", "irregular short past participle") insert_cat("verbs with irregular short past participle") else insert_ann("short_pp", "regular") end if base.clitic then insert_cat("verbs with lexical clitics") end if base.refl then insert_cat("reflexive verbs") end if base.e_ei_cat then insert_ann("vowel_alt", "''e'' may become ''ei'' when stressed") insert_cat("verbs with e becoming ei when stressed") elseif not base.vowel_alt then insert_ann("vowel_alt", "non-alternating") else for _, alt in ipairs(base.vowel_alt) do if alt.form == "+" then insert_ann("vowel_alt", "non-alternating") else insert_ann("vowel_alt", vowel_alternant_to_desc[alt.form]) insert_cat("verbs with " .. vowel_alternant_to_cat[alt.form]) end end end local cons_alt = base.stems.cons_alt if cons_alt == nil then if base.conj == "ar" then if base.inf_stem:find("ç$") then cons_alt = "c-ç" elseif base.inf_stem:find("c$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-gu" end else if base.no_pres_stressed or base.no_pres1_and_sub then cons_alt = nil -- no e.g. c-ç alternation in this case elseif base.inf_stem:find("c$") then cons_alt = "c-ç" elseif base.inf_stem:find("qu$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-j" elseif base.inf_stem:find("gu$") then cons_alt = "g-gu" end end end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat("verbs with " .. desc) else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.irreg = {} ann.short_pp = {} ann.defective = {} ann.vowel_alt = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local short_pp = table.concat(ann.short_pp, " or ") if short_pp ~= "" and short_pp ~= "regular" then table.insert(ann_parts, short_pp) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local vowel_alt = table.concat(ann.vowel_alt, " or ") if vowel_alt ~= "" and vowel_alt ~= "non-alternating" then table.insert(ann_parts, vowel_alt) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, "; ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() if alternant_multiword_spec.forms.short_pp_ms then alternant_multiword_spec.has_short_pp = true end local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then if slot:find("^pp_") then accel_obj.form = slot elseif slot == "gerund" then accel_obj.form = "reinteg-gerund-" .. reconstructed_verb_spec else accel_obj.form = "reinteg-verb-form-" .. reconstructed_verb_spec end end return accel_obj end -- Italicize less-recommended forms. local function generate_link(data) local formval_for_link = data.form.formval_for_link if formval_for_link:find(ALTVAR) then formval_for_link = formval_for_link:gsub(ALTVAR, "") return m_links.full_link({lang = lang, term = formval_for_link, tr = "-", accel = data.form.accel_obj}, "term") .. iut.get_footnote_text(data.form.footnotes, data.footnote_obj) end end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, canonicalize = function(form) return export.remove_variant_codes(form, "keep altvar") end, generate_link = generate_link, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead" align=center>&nbsp; &nbsp; การผันรูปบูรณาการใหม่ของ {title} (See [[Appendix:Reintegrationism]])</div> <div class="NavContent" align="left"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! class="roa-person-number-header" rowspan="2" | ! class="roa-person-number-header" colspan="3" | เอกพจน์ ! class="roa-person-number-header" colspan="3" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<eu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<ti>> / <<tu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<ele>> / <<ela>> / <<você>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<nós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<vós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<eles>> / <<elas>> / <<vocês>>) |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="infinitivo">รูปกริยากลาง</span>'' |- ! class="roa-nonfinite-header" | '''<span title="infinitivo impessoal">คำอบุรุษกริยา</span>''' | colspan="6" | {infinitive} |- ! class="roa-nonfinite-header" | '''<span title="infinitivo flexionado">คำบุรุษกริยา</span>''' | {pers_inf_1s} | {pers_inf_2s} | {pers_inf_3s} | {pers_inf_1p} | {pers_inf_2p} | {pers_inf_3p} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="gerúndio">รูปกริยาเป็นนาม</span>'' |- | class="roa-nonfinite-header" | | colspan="6" | {gerund} |-{pp_clause} ! style="border: 1px solid #999999; background:#d0dff4" colspan="7" | ''<span title="indicativo">มาลาบอกเล่า</span>'' |- ! class="roa-indicative-left-rail" | <span title="presente">ปัจจุบันกาล</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito imperfeito">ไม่สมบูรณ์</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito perfeito">อดีตกาลสิ้นสุด (สมบูรณ์)</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito mais-que-perfeito simples">อภิสมบูรณ์</span> | {plup_1s} | {plup_2s} | {plup_3s} | {plup_1p} | {plup_2p} | {plup_3p} |- ! class="roa-indicative-left-rail" | <span title="futuro do presente">อนาคตกาล</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" | <span title="condicional">มาลาเงื่อนไข</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" colspan="7" | ''<span title="conjuntivo">มาลาสมมุติ</span>'' |- ! class="roa-subjunctive-left-rail" | <span title=" presente do conjuntivo">ปัจจุบันกาล</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="pretérito imperfeito do conjuntivo">ไม่สมบูรณ์</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="futuro do conjuntivo">อนาคตกาล</span> | {fut_sub_1s} | {fut_sub_2s} | {fut_sub_3s} | {fut_sub_1p} | {fut_sub_2p} | {fut_sub_3p} |- ! class="roa-imperative-left-rail" colspan="7" | ''<span title="imperativo">มาลาสั่ง</span>'' |- ! class="roa-imperative-left-rail" | <span title="imperativo afirmativo">เชิงยืนยัน</span> | rowspan="2" | | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" | <span title="imperativo negativo">เชิงปฏิเสธ</span> (<<nom>>) | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div> ]=] local double_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio irregular">รูปกริยาขยายอดีตกาลสั้น</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {short_pp_ms} | colspan="3" | {short_pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {short_pp_fs} | colspan="3" | {short_pp_fp} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio regular">รูปกริยาขยายอดีตกาลยาว</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local single_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio passado">รูปกริยาขยายอดีตกาล</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form) if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" -- has_short_pp is computed in show_forms(). local pp_template = alternant_multiword_spec.has_short_pp and double_pp_template or single_pp_template forms.pp_clause = m_string_utilities.format(pp_template, forms) local table_with_pronouns = rsub(basic_table, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "แม่แบบ" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{gl-reinteg-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "gl-reinteg-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "gl-reinteg-conj" or pagename == "gl-reinteg-verb") and in_template_space() then arg1 = "traguer" elseif pagename == "gl-reinteg-verb form of" and in_template_space() then arg1 = "amar" else arg1 = "<>" end end -- When called from {{gl-reinteg-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "gl-reinteg-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "gl-reinteg-verb form of" and in_template_space() then verb_form_of_form = "ame" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, get_variants = function(form) return rsub(form, not_var_code_c, "") end, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "gl-reinteg-conj" then -- Remove variant codes to avoid causing problems with bots. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = export.remove_variant_codes(form.form) end end return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{gl-reinteg-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(parent_args, "gl-reinteg-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export 9114rd8iwk3ewqxvfo62wac09stl5eq 5729419 5729315 2026-07-20T09:16:20Z Octahedron80 267 5729419 Scribunto text/plain --[=[ This module implements {{gl-reinteg-conj}} and provides the underlying conjugation functions for {{gl-reinteg-verb}}, as well as for {{gl-verb}} when invoked with |reinteg=1. The actual formatting of both {{gl-reinteg-verb}} and {{gl-verb}} happens in [[Module:gl-headword]]. This module uses the [[Appendix:Reintegrationism|reintegrationist]] norm for Galician spelling. See also [[Module:gl-verb]], which implements the standard norm. Authorship: Ben Wing <benwing2>, MedK <medk1> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Galician form representing the value of a given slot. -- "lemma" = The dictionary form of a given Galician term. For Galician, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("gl") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:gl-reinteg-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility local function link_term(term) return m_links.full_link({ lang = lang, term = term }, "term") end local V = com.V -- vowel regex class local AV = com.AV -- accented vowel regex class local C = com.C -- consonant regex class local AC = u(0x0301) -- acute = ́ local TEMPC1 = u(0xFFF1) -- temporary character used for consonant substitutions local TEMP_MESOCLITIC_INSERTION_POINT = u(0xFFF2) -- temporary character used to mark the mesoclitic insertion point -- Variant codes and the like. -- NOTE: These codes should be *PREFIXED* onto stems and *SUFFIXED* onto endings. That way they won't interfere in the -- operation of combine_stem_ending(). -- -- GL_TYPE = "Galician-type", PT_TYPE = "Portuguese-type". GL_TYPE stems cannot combine with PT_TYPE endings and -- vice-versa. GL_ONLY_TYPE = "Galician-only type"; GL_ONLY_TYPE stems can only combine with endings specifically -- marked as GL_TYPE. local GL_TYPE = u(0xFFF3) local GL_ONLY_TYPE = u(0xFFF4) local PT_TYPE = u(0xFFF5) -- ALTVAR = Less-recommended variants listed at the bottom of the Estraviz conjugation tables rather than in the main -- table. We list these in the main table but with a footnote indicating they are less-recommended alternatives, and -- italicize them to visually set them apart. local ALTVAR = u(0xFFF6) local GL_ALTVAR = GL_TYPE .. ALTVAR local GL_ONLY_ALTVAR = GL_ONLY_TYPE .. ALTVAR local var_codes_no_altvar = GL_TYPE .. GL_ONLY_TYPE .. PT_TYPE local all_var_codes = var_codes_no_altvar .. ALTVAR local var_code_c = "[" .. all_var_codes .. "]" local var_code_no_altvar_c = "[" .. var_codes_no_altvar .. "]" local not_var_code_c = "[^" .. all_var_codes .. "]" -- Export variant codes for use in [[Module:pt-gl-inflections]]. export.GL_TYPE = GL_TYPE export.GL_ONLY_TYPE = GL_ONLY_TYPE export.PT_TYPE = PT_TYPE export.ALTVAR = ALTVAR local short_pp_footnote = "[usually used with auxiliary verbs " .. link_term("ser") .. " and " .. link_term("estar") .. "]" local long_pp_footnote = "[usually used with auxiliary verbs " .. link_term("haver") .. " and " .. link_term("ter") .. "]" --[=[ Vowel alternations: <i-e>: 'i' in pres1s and the whole present subjunctive; 'e' elsewhere when stressed. Generally 'e' otherwise when unstressed. E.g. [[sentir]], [[conseguir]] (the latter additionally with 'gu-g' alternation). <u-o>: 'u' in pres1s and the whole present subjunctive; 'o' elsewhere when stressed. Either 'o' or 'u' otherwise when unstressed. E.g. [[dormir]], [[subir]]. <i>: 'i' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'e'. E.g. [[progredir]], [[premir]]. <u>: 'u' whenever stressed (in the present singular and third plural) and throughout the whole present subjunctive. Otherwise 'o'. E.g. [[polir]], [[extorquir]] (the latter also <u-o>). <í>: The last 'i' of the stem (excluding stem-final 'i') becomes 'í' when stressed. E.g.: * [[proibir]] ('proíbo, proíbe(s), proíbem, proíba(s), proíbam') * [[faiscar]] ('faísco, faísca(s), faíscam, faísque(s), faísquem' also with 'c-qu' alternation) * [[homogeneizar]] ('homogeneízo', etc.) * [[mobiliar]] ('mobílio', etc.; note here the final -i is ignored when determining which vowel to stress) * [[tuitar]] ('tuíto', etc.) <ú>: The last 'u' of the stem (excluding stem-final 'u') becomes 'ú' when stressed. E.g.: * [[reunir]] ('reúno, reúne(s), reúnem, reúna(s), reúnam') * [[esmiuçar]] ('esmiúço, esmiúça(s), esmiúça, esmiúce(s), esmiúcem' also with 'ç-c' alternation) * [[reusar]] ('reúso, reúsa(s), reúsa, reúse(s), reúsem') * [[saudar]] ('saúdo, saúda(s), saúda, saúde(s), saúdem') ]=] local vowel_alternants = m_table.listToSet({"i-e", "i", "í", "u-o", "u", "ú", "ei", "+"}) local vowel_alternant_to_desc = { ["i-e"] = "''i-e'' alternation in present singular", ["i"] = "''e'' becomes ''i'' when stressed", ["í"] = "''i'' becomes ''í'' when stressed", ["u-o"] = "''u-o'' alternation in present singular", ["u"] = "''o'' becomes ''u'' when stressed", ["ú"] = "''u'' becomes ''ú'' when stressed", ["ei"] = "''i'' becomes ''ei'' when stressed", } local vowel_alternant_to_cat = { ["i-e"] = "i-e alternation in present singular", ["i"] = "e becoming i when stressed", ["í"] = "i becoming í when stressed", ["u-o"] = "u-o alternation in present singular", ["u"] = "o becoming u when stressed", ["ú"] = "u becoming ú when stressed", ["ei"] = "i becoming ei when stressed", } local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} person_number_to_reflexive_pronoun = { ["1s"] = "me", ["2s"] = "te", ["3s"] = "se", ["1p"] = "nos", ["2p"] = "vos", ["3p"] = "se", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "no_pres1_and_sub", "only3s", "only3sp", "only3p", "pp_inv", "irreg", "no_built_in", "e_ei_cat", } -- Remove any variant codes e.g. GL_TYPE, PT_TYPE, ALTVAR. Needs to be called from [[Module:gl-reinteg-headword]] on the -- output of do_generate_forms(). `keep_altvar` leaves ALTVAR; used in the `canonicalize` function of show_forms() -- because we then process and remove it in `generate_forms`. FIXME: Use metadata for this once it's supported in -- [[Module:inflection utilities]]. function export.remove_variant_codes(form, keep_altvar) return rsub(form, keep_altvar and var_code_no_altvar_c or var_code_c, "") end -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"short_pp_ms", "short|m|s|past|part"}, {"short_pp_fs", "short|f|s|past|part"}, {"short_pp_mp", "short|m|p|past|part"}, {"short_pp_fp", "short|f|p|past|part"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{gl-reinteg-verb form of}}. For example, -- for a reflexive-only verb like [[arrepender-se]], we want to be able to use {{gl-reinteg-verb form of}} on -- [[arrependa]] (which should mention that it is a part of 'me arrependa', first-person singular present -- subjunctive, and 'se arrependa', third-person singular present subjunctive) or on [[arrependemos]] (which should -- mention that it is a part of 'arrependemo-nos', first-person plural present indicative or preterite). Similarly, -- we want to use {{gl-reinteg-verb form of}} on [[arrependendo]] (which should mention that it is a part of -- 'se ... arrependendo', syntactic variant of [[arrependendo-se]], which is the gerund of [[arrepender-se]]). To -- do this, we need to be able to map non-reflexive parts like [[arrependa]], [[arrependemos]], [[arrependendo]], -- etc. to their reflexive equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like -- [[arrependendo]], [[arrepender]] and imperatives, to the separated syntactic variant of the verb+clitic -- combination. We do this by creating slots for the non-reflexive part equivalent of each basic reflexive slot, -- and for the separated syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. -- We use slots in this way to deal with multiword lemmas. Note that we run into difficulties mapping between -- reflexive verbs, non-reflexive part equivalents, and separated syntactic variants if a slot contains more than -- one form. To handle this, if there are the same number of forms in two slots we're trying to match up, we assume -- the forms match one-to-one; otherwise we don't match up the two slots (which means {{gl-reinteg-verb form of}} won't -- work in this case, but such a case is extremely rare and not worth worrying about). Alternatives that handle -- this "properly" are significantly more complicated and require non-trivial modifications to -- [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "gl-reinteg-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{gl-reinteg-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = persnum_tag .. "|" .. tag_suffix table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "pres|ind", person_number_list) add_basic_personal_slot("impf", "impf|ind", person_number_list) add_basic_personal_slot("pret", "pret|ind", person_number_list) add_basic_personal_slot("plup", "plup|ind", person_number_list) add_basic_personal_slot("fut", "fut|ind", person_number_list) add_basic_personal_slot("cond", "cond", person_number_list) add_basic_personal_slot("pres_sub", "pres|sub", person_number_list) add_basic_personal_slot("impf_sub", "impf|sub", person_number_list) add_basic_personal_slot("fut_sub", "fut|sub", person_number_list) add_basic_personal_slot("imp", "imp", imp_person_number_list) add_basic_personal_slot("pers_inf", "pers|inf", person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'nom' + subjunctive. add_basic_personal_slot("neg_imp", "neg|imp", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values(separated_groups, data) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local retval = {form = separated_group[1], footnotes = footnotes} table.insert(retvals, retval) end return retvals end local function simple_choice(choices) return function(separated_groups, data) if #separated_groups > 1 then data.parse_err("For spec '" .. data.prefix .. ":', only one value currently allowed") end if #separated_groups[1] > 1 then data.parse_err("For spec '" .. data.prefix .. ":', no footnotes currently allowed") end local choice = separated_groups[1][1] if not m_table.contains(choices, choice) then data.parse_err("For spec '" .. data.prefix .. ":', saw value '" .. choice .. "' but expected one of '" .. table.concat(choices, ",") .. "'") end return choice end end for _, overridable_stem in ipairs { "pres_unstressed", "pres_stressed", "pres1_and_sub", -- Don't include pres1; use pres_1s if you need to override just that form "impf", "full_impf", {"pret_conj", simple_choice({"irreg", "ar", "er", "ir"}) }, "pret_base", "pret", "gl_short_pret", "pt_pret_1s", "pt_pret_3s", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", {"sub_conj", simple_choice({"ar", "er"}) }, "plup", "impf_sub", "fut_sub", "pers_inf", "pp", "short_pp", } do if type(overridable_stem) == "string" then overridable_stems[overridable_stem] = allow_multiple_values else local stem, validator = unpack(overridable_stem) overridable_stems[stem] = validator end end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `vowel_alt`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/z, g/gu, gu/gü, g/j) occur automatically as appropriate for the ending. 2. If the stem begins with an acute accent, the accent is moved onto the last vowel of the prefix (for handling verbs in -uar such as [[minguar]], pres_3s 'míngua'). 3. If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. 4. If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem, e.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. 5. If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1_and_sub: Overriding stem for 1s present indicative and the entire subjunctive. Only set by irregular verbs and by the indicators `no_pres_stressed` (e.g. [[precaver]]) and `no_pres1_and_sub` (since verbs of this sort, e.g. [[puir]], are missing the entire subjunctive as well as the 1s present indicative). Used by many irregular verbs, e.g. [[caber]], verbs in '-air', [[dizer]], [[ter]], [[valer]], etc. Some verbs set this and then supply an override for the pres_1sg if it's irregular, e.g. [[saber]], with irregular subjunctive stem "saib-" and special 1s present indicative "sei". -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres1_and_sub if given, else pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to pres1_and_sub if given, else the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- sub_conj: Determines the set of endings used in the subjunctive. Should be one of "ar" or "er". -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- full_impf: The full imperfect stem missing only the endings (-a, -as, -am, etc.). Used for verbs with irregular imperfects such as [[ser]], [[ter]], [[vir]] and [[pôr]]. Needs to include an accent on the stressed vowel, which will automatically be removed when not needed. -- pret_conj: Determines the set of endings used in the preterite. Should be one of "ar", "er", "ir" or "irreg". Defaults to the conjugation as determined from the infinitive. When pret_conj == "irreg", `pret` is used, otherwise `pret_base`. -- pret_base: The preterite stem (not including the -a-/-e-/-i- stem suffix). Defaults to the infinitive stem. Only used when pret_conj ~= "irreg". -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.). Needs to include the accent on the final vowel that occurs in some forms, e.g. 'figé' for [[fazer]], 'fô' for [[ser]]; the accent will automatically be removed when not needed. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[fazer]], [[poder]], [[trazer]], etc. The pret_1s and pret_3s are handled using the gl_short_pret stem instead for "Galician"-ending forms (pret_1s '-em', pret_3s '-o') and using pt_pret_1s and pt_pret_3s for "Portuguese"-ending forms. Defaults to `pret_base` + the accented conjugation vowel. -- gl_short_pret: The short preterite stem, used with "Galician" 1s and 3s endings (pret_1s '-em', pret_3s '-o'). Only used with irregular preterites (pret_conj == "irreg"). Normally derived from gl_pret by deleting the final vowel, and doesn't need to be given explicitly. -- pt_pret_1s: The "Portuguese" pret_1s form. In addition to this, the "Galician" pret_1s form will be included, formed from gl_short_pret by adding '-em'. Does not need to be given if an override for pret_1s is supplied. -- pt_pret_3s: The "Portuguese" pret_3s form. In addition to this, the "Galician" pret_3s form will be included, formed from gl_short_pret by adding '-o' (which may cause the preceding consonant to shift to preserve the sound). Does not need to be given if an override for pret_3s is supplied. -- fut: The future stem. Defaults to the infinitive stem + the unaccented conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Needs to include the accent on the final vowel that occurs in some forms; see `pret` for more information. Defaults to `pret`. -- fut_sub: The future subjunctive stem. Needs to include the accent on the final vowel that occurs in some forms; see `gl_pret` for more information. Defaults to the merger of `gl_pret` and `pt_pret`. -- plup: The pluperfect stem. Needs to include the accent on the final vowel that occurs in some forms; see `pret` for more information. Defaults to `pret`. -- pers_inf: The personal infinitive stem. Defaults to the infinitive stem + the accented conjugation vowel. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- short_pp: The short masculine singular past participle, for verbs with such a form. No default. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- (1) Verbs with short past participles: need to specify the short pp explicitly. -- -- aceitar: use <short_pp:aceite> -- anexar, completar, expressar, expulsar, findar, fritar, ganhar, gastar, limpar, pagar, pasmar, pegar, soltar: -- use <short_pp:anexo> etc. -- assentar: use <short_pp:assente> -- entregar: use <short_pp:entregue> -- enxugar: use <short_pp:enxuto> -- matar: use <short_pp:morto> -- -- (2) Verbs with orthographic consonant alternations: handled automatically. -- -- -car (brincar, buscar, pecar, trancar, etc.): automatically handled in combine_stem_ending() -- -çar (alcançar, começar, laçar): automatically handled in combine_stem_ending() -- -gar (apagar, cegar, esmagar, largar, navegar, resmungar, sugar, etc.): automatically handled in combine_stem_ending() -- -- (3) Verbs with vowel alternations: need to specify the alternation explicitly unless it always happens, in -- which case it's handled automatically through an entry below. -- -- esmiuçar changing to esmiúço: use <ú> -- faiscar changing to faísco: use <í> -- -iar changing to -eio (ansiar, incendiar, mediar, odiar, remediar, etc.): use <ei> -- -izar changing to -ízo (ajuizar, enraizar, homogeneizar, plebeizar, etc.): use <í> -- mobiliar changing to mobílio: use <í> -- reusar changing to reúso: use <ú> -- saudar changing to saúdo: use <ú> -- tuitar/retuitar changing to (re)tuíto: use <í> { -- dar, desdar match = match_against_verbs("dar", {"^", "^des", "^re"}), forms = { pres_1s = "dou", pres_2s = "dás", pres_3s = "dá", -- damos, dades/dais regular pres_3p = {GL_TYPE .. "dam", PT_TYPE .. "dão"}, pret_conj = "irreg", pret = "dé", pret_1s = "dei", pret_3s = "deu", pres_sub_1s = "dê", pres_sub_2s = "dês", pres_sub_3s = "dê", -- demos, dedes/deis regular pres_sub_3p = {GL_TYPE .. "dem", PT_TYPE .. "deem"}, irreg = true, } }, { -- -ear (frear, nomear, semear, etc.) match = "ear", forms = { pres_stressed = {"ei", GL_ALTVAR .. "e"}, e_ei_cat = true, } }, { -- estar match = match_against_verbs("estar", {"^", "sob", "sobr"}), forms = { pres_1s = "estou", pres_2s = "estás", pres_3s = "está", pres_3p = {GL_TYPE .. "estám", PT_TYPE .. "estão"}, pres1_and_sub = "estej", -- only for subjunctive as we override pres_1s sub_conj = "er", pret_conj = "irreg", pret = "estivé", pt_pret_1s = "estive", pt_pret_3s = "esteve", -- [[sobestar]], [[sobrestar]] are transitive so they have fully inflected past participles pp_inv = function(base, prefix) return prefix == "" end, irreg = true, } }, -------------------------------------------------------------------------------------------- -- -er -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- precaver: use <no_pres_stressed> -- -cer (verbs in -ecer, descer, vencer, etc.): automatically handled in combine_stem_ending() -- -ger (proteger, reger, etc.): automatically handled in combine_stem_ending() -- -guer (erguer/reerguer/soerguer): automatically handled in combine_stem_ending() { -- benzer match = "benzer", forms = {short_pp = "bento"} }, { -- caber match = "caber", forms = { pres1_and_sub = "caib", pret_conj = "irreg", pret = "coubé", pt_pret_1s = "coube", pt_pret_3s = "coube", irreg = true, } }, { -- crer, descrer match = "crer", forms = { pres_2s = "crês", pres_3s = "crê", pres_2p = "credes", pres_3p = {GL_TYPE .. "crem", PT_TYPE .. "creem"}, pres1_and_sub = {"crei", GL_ALTVAR .. "cre"}, irreg = true, } }, { -- dizer, bendizer, condizer, contradizer, desdizer, maldizer, predizer, etc. match = "dizer", forms = { -- use 'digu' because we're in a front environment; if we use 'dig', we'll get '#dijo' pres1_and_sub = "digu", pres_2s = {GL_TYPE .. "dis", PT_TYPE .. "dizes"}, pres_3s = {GL_TYPE .. "di", PT_TYPE .. "diz"}, pres_3p = {GL_TYPE .. "dim", PT_TYPE .. "dizem"}, pret_conj = "irreg", pret = {GL_TYPE .. "dixé", PT_TYPE .. "dissé"}, pt_pret_1s = "disse", pt_pret_3s = "disse", pp = "dito", fut = "dir", irreg = true, } }, { -- eleger, reeleger match = "eleger", forms = {short_pp = "eleito"} }, { -- acender, prender; not desprender, etc. match = match_against_verbs("ender", {"^ac", "^pr"}), forms = {short_pp = "eso"} }, { -- fazer, afazer, contrafazer, desfazer, liquefazer, perfazer, putrefazer, rarefazer, refazer, satisfazer, tumefazer match = "fazer", forms = { -- use 'fagu' because we're in a front environment; if we use 'fag', we'll get '#fajo' pres1_and_sub = {GL_TYPE .. "fagu", PT_TYPE .. "faç"}, pres_2s = {GL_TYPE .. "fás", PT_TYPE .. "fazes"}, pres_3s = {GL_TYPE .. "fai", PT_TYPE .. "faz"}, pres_3p = {GL_TYPE .. "fam", PT_TYPE .. "fazem"}, pret_conj = "irreg", pret = {GL_TYPE .. "figé", PT_TYPE .. "fizé", GL_ONLY_ALTVAR .. "fizé"}, pt_pret_1s = "fiz", pt_pret_3s = "fez", pp = "feito", fut = "far", irreg = true, } }, { match = "^haver", forms = { pres_1s = "hei", pres_2s = "hás", pres_3s = {"há", {form = GL_ALTVAR .. "hai", footnotes = {"[also impersonal]"}}}, pres_3p = {GL_TYPE .. "ham", PT_TYPE .. "hão"}, pres1_and_sub = "haj", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "houvé", pt_pret_1s = "houve", pt_pret_3s = "houve", imp_2s = "há", irreg = true, } }, -- reaver below under r- { -- jazer, adjazer match = "jazer", forms = { pres_3s = "jaz", irreg = true, } }, { -- ler, reler, tresler; not excel(l)er, valer, etc. match = match_against_verbs("ler", {"^", "^re", "tres"}), forms = { pres_2s = "lês", pres_3s = "lê", pres_2p = "ledes", pres_3p = {GL_TYPE .. "lem", PT_TYPE .. "leem"}, pres1_and_sub = {"lei", GL_ALTVAR .. "le"}, irreg = true, } }, { -- morrer, desmorrer match = "morrer", forms = {short_pp = "morto"} }, { -- moer, but not remoer match = "^moer", forms = { pres_2s = "móis", pres_3s = "mói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() pres1_and_sub = {"mo", GL_ALTVAR .. "moi"}, short_pp = "mudo", irreg = true, } }, { -- doer, remoer, roer/corroer, soer match = "oer", forms = { pres_2s = "óis", pres_3s = "ói", -- impf -ía etc., pret_1s -oí and pp -oído handled automatically in combine_stem_ending() pres1_and_sub = {"o", GL_ALTVAR .. "oi"}, irreg = true, } }, { -- perder match = "perder", forms = { -- use 'perqu' because we're in a front environment; if we use 'perc', we'll get '#perço' -- we don't tag these forms GL_TYPE or PT_TYPE because both occur with both endings -ais/-ades pres1_and_sub = {"perd", "perqu"}, irreg = true, } }, { -- poder match = "poder", forms = { pres1_and_sub = {GL_TYPE .. "pod", PT_TYPE .. "poss"}, pret_conj = "irreg", pret = "pudé", pt_pret_1s = "pude", pt_pret_3s = "pôde", irreg = true, } }, { -- prazer, aprazer, comprazer, desprazer -- FIXME: comprazer also has regular preterite match = "prazer", forms = { pres_3s = "praz", pret_conj = "irreg", pret = "prouvé", pt_pret_1s = "prouve", pt_pret_3s = "prouve", only3sp = function(base, prefix) return prefix == "a" end, imp_2s = {GL_TYPE .. "praze", PT_TYPE .. "praz"}, irreg = true, } }, -- prover below, just below ver { -- requerer; must precede querer match = "requerer", forms = { pres_3s = "requer", pres1_and_sub = "requeir", imp_2s = {"requer"}, -- regular preterite, unlike [[querer]] irreg = true, } }, { -- querer, desquerer, malquerer match = "querer", forms = { pres_1s = "quero", pres_3s = "quer", pres1_and_sub = "queir", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = {GL_TYPE .. "quigé", PT_TYPE .. "quisé"}, pt_pret_1s = "quis", pt_pret_3s = "quis", irreg = true, } }, { match = "reaver", forms = { pres_1s = "reei", pres_2s = "reás", pres_3s = "reá", pres_3p = {GL_TYPE .. "ream", PT_TYPE .. "reão"}, pres1_and_sub = "reaj", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "reouvé", pt_pret_1s = "reouve", pt_pret_3s = "reouve", irreg = true, } }, { -- saber, ressaber match = "saber", forms = { pres_1s = "sei", pres1_and_sub = "saib", -- only for subjunctive as we override pres_1s pret_conj = "irreg", pret = "soubé", pt_pret_1s = "soube", pt_pret_3s = "soube", irreg = true, } }, { -- escrever/reescrever, circunscrever, descrever/redescrever, inscrever, prescrever, proscrever, subscrever, -- transcrever, others? match = "screver", forms = { pp = "scrito", irreg = true, } }, { -- suspender match = "suspender", forms = {short_pp = "suspenso"} }, { match = "^ser", forms = { pres_1s = "sou", pres_2s = "és", pres_3s = "é", pres_1p = "somos", pres_2p = {GL_TYPE .. "sodes", PT_TYPE .. "sois"}, pres_3p = {GL_TYPE .. "som", PT_TYPE .. "são"}, pres1_and_sub = "sej", -- only for subjunctive as we override pres_1s full_impf = "ér", pret_conj = "irreg", pret = "fô", pret_1s = {GL_TYPE .. "fum", PT_TYPE .. "fui"}, pret_3s = "foi", imp_2s = "sê", imp_2p = "sede", pp_inv = true, irreg = true, } }, { -- We want to match abster, conter, deter, etc. but not abater, cometer, etc. No way to avoid listing each verb. match = match_against_verbs("ter", {"abs", "^a", "con", "de", "entre", "man", "ob", "^re", "sus", "^"}), forms = { -- FIXME, Estraviz says 'contens', 'detens' etc. but that may be a typo pres_2s = function(base, prefix) return {GL_TYPE .. "tés", PT_TYPE .. (prefix == "" and "tens" or "téns")} end, -- FIXME, Estraviz says 'contem', 'detem' etc. but that may be a typo pres_3s = function(base, prefix) return prefix == "" and "tem" or "tém" end, pres_2p = "tendes", pres_3p = {GL_TYPE .. "tenhem", PT_TYPE .. "têm", GL_ALTVAR .. "tém"}, pres1_and_sub = "tenh", full_impf = "tính", pret_conj = "irreg", pret = "tivé", pt_pret_1s = "tive", pt_pret_3s = "teve", irreg = true, } }, { match = "trazer", forms = { -- use 'tragu' because we're in a front environment; if we use 'trag', we'll get '#trajo' pres1_and_sub = "tragu", pres_3s = "traz", pret_conj = "irreg", pret = "trouxé", pt_pret_1s = "trouxe", pt_pret_3s = "trouxe", fut = "trar", irreg = true, } }, { match = "traguer", forms = { pret_conj = "irreg", pret = "trouxé", pt_pret_1s = "trouxe", pt_pret_3s = "trouxe", irreg = true, } }, { -- valer, desvaler, equivaler match = "valer", forms = { pres1_and_sub = "valh", irreg = true, } }, { -- We want to match antever etc. but not absolver, atrever etc. No way to avoid listing each verb. match = match_against_verbs("ver", {"ante", "entre", "pre", "^re", "^"}), forms = { pres_2s = "vês", pres_3s = "vê", pres_2p = "vedes", pres_3p = function(base, prefix) return {GL_TYPE .. (prefix == "" and "vem" or "vêm"), PT_TYPE .. "veem"} end, pres1_and_sub = "vej", pret_conj = "irreg", pret = "ví", pret_1s = {GL_TYPE .. "vim", PT_TYPE .. "vi"}, pret_3s = "viu", pp = "visto", irreg = true, } }, { -- [[prover]] and [[desprover]] have regular preterite and past participle match = "prover", forms = { pres_2s = "provês", pres_3s = "provê", -- FIXME: Estraviz says 'provem' but that may be a typo pres_2p = "provedes", pres_3p = {GL_TYPE .. "provêm", PT_TYPE .. "proveem"}, pres1_and_sub = "provej", irreg = true, } }, { -- volver, devolver, envolver, revolver, etc. match = "volver", forms = {short_pp = "volto"}, }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- -- Verbs not needing entries here: -- -- abolir: use <u-o> -- barrir: use <only3sp> -- carpir, colorir, demolir: use <no_pres1_and_sub> -- descolorir: use <no_pres1_and_sub> -- delir, espavorir, falir, florir, remir, renhir: use <no_pres_stressed> -- empedernir: use <i-e> -- transir: regular -- aspergir, despir, flectir/deflectir/genuflectir/genufletir/reflectir/refletir, mentir/desmentir, -- sentir/assentir/consentir/dissentir/pressentir/ressentir, convergir/divergir, aderir/adherir, -- ferir/auferir/conferir/deferir/desferir/diferir/differir/inferir/interferir/preferir/proferir/referir/transferir, -- gerir/digerir/ingerir/sugerir, preterir, competir/repetir, servir, advertir/animadvertir/divertir, -- vestir/investir/revestir/travestir, seguir/conseguir/desconseguir/desseguir/perseguir/prosseguir: use <i-e> -- inerir: use <i-e> -- compelir/expelir/impelir/repelir: use <i-e> -- dormir, engolir, tossir, subir, acudir/sacudir, fugir, sumir/consumir (NOT assumir/presumir/resumir): use <u-o> -- polir/repolir: use <u> -- premir: use <i> -- extorquir/retorquir: <u-o,u> -- agredir/progredir/regredir/transgredir: use <i> -- denegrir, prevenir: use <i> -- eclodir: use <u-o> -- cerzir: use <i-e> -- proibir/coibir: use <í> -- reunir: use <ú> -- parir/malparir: use <no_pres_stressed> -- explodir/implodir: use <u-o> -- -- -cir alternations (aducir, ressarcir): automatically handled in combine_stem_ending() -- -gir alternations (agir, dirigir, exigir): automatically handled in combine_stem_ending() -- -guir alternations (e.g. conseguir): automatically handled in combine_stem_ending() -- -quir alternations (e.g. extorquir): automatically handled in combine_stem_ending() { -- verbs in -air (cair, sair, trair and derivatives: decair/descair/recair, sobres(s)air, -- abstrair/atrair/contrair/distrair/extrair/protrair/retrair/subtrair) match = "air", forms = { pres1_and_sub = "ai", pres_2s = "ais", pres_3s = "ai", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- abrir/desabrir/reabrir match = "abrir", forms = {pp = "aberto"} }, { -- cobrir/descobrir/encobrir/recobrir/redescobrir match = "cobrir", forms = {vowel_alt = "u-o", pp = "coberto"} }, { -- conduzir, produzir, reduzir, traduzir, etc.; luzir, reluzir, tremeluzir match = "uzir", forms = { pres_3s = "uz", -- FIXME, is this correct? imp_2s = "uze", irreg = true, } }, { -- pedir, desimpedir, despedir, espedir, expedir, impedir -- medir -- comedir match = match_against_verbs("edir", {"m", "p"}), forms = { pres1_and_sub = {GL_TYPE .. "id", PT_TYPE .. "eç"}, irreg = true, } }, { -- frigir match = "frigir", forms = {vowel_alt = "i-e", short_pp = "frito"}, }, { -- inserir match = "inserir", forms = {vowel_alt = "i-e"}, }, { -- ir match = "^ir", forms = { pres_1s = "vou", pres_2s = {GL_TYPE .. "vás", PT_TYPE .. "vais"}, pres_3s = "vai", pres_1p = {GL_TYPE .. "imos", PT_TYPE .. "vamos"}, pres_2p = "ides", pres_3p = {GL_TYPE .. "vam", PT_TYPE .. "vão"}, pres_sub_1s = {GL_TYPE .. "vaia", PT_TYPE .. "vá"}, pres_sub_2s = {GL_TYPE .. "vaias", PT_TYPE .. "vás"}, pres_sub_3s = {GL_TYPE .. "vaia", PT_TYPE .. "vá"}, pres_sub_1p = {GL_TYPE .. "vaiamos", PT_TYPE .. "vamos"}, pres_sub_2p = {GL_TYPE .. "vaiades", PT_TYPE .. "vades"}, pres_sub_3p = {GL_TYPE .. "vaiam", PT_TYPE .. "vão"}, pret_conj = "irreg", pret = "fô", pret_1s = {GL_TYPE .. "fum", PT_TYPE .. "fui"}, pret_3s = "foi", irreg = true, } }, { -- emergir, imergir, submergir match = "mergir", forms = {vowel_alt = "i-e", short_pp = "merso"}, }, { match = "ouvir", forms = { pres1_and_sub = {"ouç", ALTVAR .. "oiç"}, irreg = true, } }, { -- exprimir, imprimir, comprimir (but not descomprimir per Priberam), deprimir, oprimir/opprimir (but not reprimir, -- suprimir/supprimir per Priberam) match = match_against_verbs("primir", {"^com", "ex", "im", "de", "^o", "op"}), forms = {short_pp = "presso"} }, { -- rir, sorrir match = match_against_verbs("rir", {"^", "sor"}), forms = { pres_2s = "ris", pres_3s = "ri", pres_2p = "rides", pres_3p = {GL_TYPE .. "rim", PT_TYPE .. "riem"}, pres1_and_sub = "ri", irreg = true, } }, { -- distinguir, extinguir match = "tinguir", forms = { short_pp = "tinto", -- gu/g alternations handled in combine_stem_ending() } }, { -- verbs in -truir (construir, destruir, reconstruir) but not obstruir/desobstruir, instruir, which are handled -- by the default -uir handler below match = match_against_verbs("struir", {"con", "de"}), forms = { pres_2s = {"stróis", ALTVAR .. "struis"}, pres_3s = {"strói", ALTVAR .. "strui"}, pres_3p = {"stroem", ALTVAR .. "struem"}, -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- remaining verbs in -uir (concluir/excluir/incluir/concruir/concruyr, abluir/diluir, afluir/fluir/influir, -- aluir, anuir, atribuir/contribuir/distribuir/redistribuir/retribuir/substituir, coevoluir/evoluir, -- constituir/destituir/instituir/reconstituir/restituir, derruir, diminuir, estatuir, fruir/usufruir, imbuir, -- imiscuir, poluir, possuir, puir, pruir, ruir -- FIXME: old module lists short pp incluso for incluir that can't be verified, ask about this -- FIXME: handle -uyr verbs? match = function(verb) -- Don't match -guir verbs (e.g. [[seguir]], [[conseguir]]) or -quir verbs (e.g. [[extorquir]]) if verb:find("guir$") or verb:find("quir$") then return nil else return match_against_verbs("uir", {""})(verb) end end, forms = { pres_2s = "uis", pres_3s = "ui", -- all occurrences of accented í in endings handled in combine_stem_ending() irreg = true, } }, { -- We want to match advir, convir, devir, etc. but not ouvir, servir, etc. No way to avoid listing each verb. match = match_against_verbs("vir", {"ad", "^a", "con", "contra", "de", "^desa", "inter", "pro", "^re", "sobre", "^"}), forms = { -- FIXME, Estraviz says 'convens', 'devens' etc. but that may be a typo pres_2s = function(base, prefix) return {GL_TYPE .. "vés", PT_TYPE .. (prefix == "" and "vens" or "véns")} end, -- FIXME, Estraviz says 'convem', 'devem' etc. but that may be a typo pres_3s = function(base, prefix) return prefix == "" and "vem" or "vém" end, pres_2p = "vindes", pres_3p = {GL_TYPE .. "venhem", PT_TYPE .. "vêm", GL_ALTVAR .. "vém"}, pres1_and_sub = "venh", full_impf = "vính", pret_conj = "irreg", pret = {GL_TYPE .. "vinhé", PT_TYPE .. "vié"}, pret_1s = "vim", pret_3s = {GL_TYPE .. "véu", PT_TYPE .. "veio"}, pp = "vindo", irreg = true, } }, -------------------------------------------------------------------------------------------- -- misc -- -------------------------------------------------------------------------------------------- { -- pôr, antepor, apor, compor/decompor/descompor, contrapor, depor, dispor, expor, impor, interpor, justapor, -- opor, pospor, propor, repor, sobrepor, supor/pressupor, transpor, decompor, others? match = "p[oô]r", forms = { pres1_and_sub = "ponh", pres_2s = {GL_TYPE .. "pós", PT_TYPE .. "pões", GL_ALTVAR .. "pons"}, pres_3s = {GL_TYPE .. "pom", PT_TYPE .. "põe"}, pres_1p = "pomos", pres_2p = "pondes", pres_3p = {GL_TYPE .. "ponhem", PT_TYPE .. "põem", GL_ALTVAR .. "póm"}, full_impf = "púnh", pret_conj = "irreg", pret = {GL_TYPE .. "pugé", PT_TYPE .. "pusé"}, pt_pret_1s = "pus", pt_pret_3s = "pôs", pers_inf = "po", gerund = "pondo", pp = "posto", irreg = true, } }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end -- Apply vowel alternations to stem. local function apply_vowel_alternations(stem, alternations) local alternation_stems = {} local saw_pres1_and_sub = false local saw_pres_stressed = false -- Process alternations other than +. for _, altobj in ipairs(alternations) do local alt = altobj.form local pres1_and_sub, pres_stressed, err -- Treat final -gu, -qu as a consonant, so the previous vowel can alternate (e.g. conseguir -> consigo). -- This means a verb in -guar can't have a u-ú alternation but I don't think there are any verbs like that. stem = rsub(stem, "([gq])u$", "%1" .. TEMPC1) if alt == "+" then -- do nothing yet elseif alt == "ei" then local before_last_vowel = rmatch(stem, "^(.*)i$") if not before_last_vowel then err = "stem should end in -i" else pres1_and_sub = nil pres_stressed = before_last_vowel .. "ei" end else local before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-[ui])$") if not before_last_vowel then before_last_vowel, last_vowel, after_last_vowel = rmatch(stem, "^(.*)(" .. V .. ")(.-)$") end if alt == "i-e" then if last_vowel == "e" or last_vowel == "i" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel if last_vowel == "i" then pres_stressed = before_last_vowel .. "e" .. after_last_vowel end else err = "should have -e- or -i- as the last vowel" end elseif alt == "i" then if last_vowel == "e" then pres1_and_sub = before_last_vowel .. "i" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -e- as the last vowel" end elseif alt == "u-o" then if last_vowel == "o" or last_vowel == "u" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel if last_vowel == "u" then pres_stressed = before_last_vowel .. "o" .. after_last_vowel end else err = "should have -o- or -u- as the last vowel" end elseif alt == "u" then if last_vowel == "o" then pres1_and_sub = before_last_vowel .. "u" .. after_last_vowel pres_stressed = pres1_and_sub else err = "should have -o- as the last vowel" end elseif alt == "í" then if last_vowel == "i" then pres_stressed = before_last_vowel .. "í" .. after_last_vowel else err = "should have -i- as the last vowel" end elseif alt == "ú" then if last_vowel == "u" then pres_stressed = before_last_vowel .. "ú" .. after_last_vowel else err = "should have -u- as the last vowel" end else error("Internal error: Unrecognized vowel alternation '" .. alt .. "'") end end if pres1_and_sub then pres1_and_sub = {form = pres1_and_sub:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres1_and_sub = true end if pres_stressed then pres_stressed = {form = pres_stressed:gsub(TEMPC1, "u"), footnotes = altobj.footnotes} saw_pres_stressed = true end table.insert(alternation_stems, { altobj = altobj, pres1_and_sub = pres1_and_sub, pres_stressed = pres_stressed, err = err }) end -- Now do +. We check to see which stems are used by other alternations and specify those so any footnotes are -- properly attached. for _, alternation_stem in ipairs(alternation_stems) do if alternation_stem.altobj.form == "+" then local stemobj = {form = stem, footnotes = alternation_stem.altobj.footnotes} alternation_stem.pres1_and_sub = saw_pres1_and_sub and stemobj or nil alternation_stem.pres_stressed = saw_pres_stressed and stemobj or nil end end return alternation_stems end -- Add the `stem` to the `ending` for the given `slot` and apply any phonetic modifications. -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, slot, prefix, stem, ending, dont_include_prefix) -- If the stem begins with an acute accent, this is a signal to move the accent onto the last vowel of the prefix. -- Cf. míngua of minguar. if stem:find("^" .. AC) then stem = rsub(stem, "^" .. AC, "") if dont_include_prefix then error("Internal error: Can't handle acute accent at beginning of stem if dont_include_prefix is given") end prefix = rsub(prefix, "([aeiouyAEIOUY])([^aeiouyAEIOUY]*)$", "%1" .. AC .. "%2") end -- Use the full stem for checking for -gui ending and such, because 'stem' is just 'u' for [[arguir]], -- [[delinquir]]. local full_stem = prefix .. stem -- Include the prefix in the stem unless dont_include_prefix is given (used for the past participle stem). if not dont_include_prefix then stem = full_stem end -- If the ending begins with a double asterisk, this is a signal to conditionally delete the accent on the last letter -- of the stem. "Conditionally" means we don't do it if the last two letters would form a diphthong without the accent -- on the second one (e.g. in [[sair]], with stem 'saí'); but as an exception, we do delete the accent in stems -- ending in -guí, -quí (e.g. in [[conseguir]]) because in this case the ui isn't a diphthong. if ending:find("^%*%*") then ending = rsub(ending, "^%*%*", "") if rfind(full_stem, "[gq]uí$") or not rfind(full_stem, V .. "[íú]$") then stem = com.remove_final_accent(stem) end end -- If the ending begins with an asterisk, this is a signal to delete the accent on the last letter of the stem. -- E.g. fizé -> fizermos. Unlike for **, this removal is unconditional, so we get e.g. 'sairmos' not #'saírmos'. if ending:find("^%*") then ending = rsub(ending, "^%*", "") stem = com.remove_final_accent(stem) end -- If ending begins with i, it must get an accent after an unstressed vowel (in some but not all cases) to prevent -- the two merging into a diphthong: -- * cair -> -- * pres: caímos, caís; -- * impf: all forms (caí-); -- * pret: caí (but not caim), caíste (but not caiu), caímos, caístes, caíram; -- * plup: all forms (caír-); -- * impf_sub: all forms (caíss-); -- * fut_sub: caíres, caírem (but not cair, cairmos, cairdes) -- * pp: caído (but not gerund caindo) -- * atribuir, other verbs in -uir -> same pattern as for cair etc. -- * roer -> -- * pret: roí (but not roim) -- * impf: all forms (roí-) -- * pp: roído -- Don't let variant codes derail the following checks. Note that variant codes are properly added to the end of -- the ending, so checks against the beginning of the ending work even in their presence, but not checks against -- the full ending. local cleaned_ending = export.remove_variant_codes(ending) if cleaned_ending:find("^i") and full_stem:find("[aeiou]$") and not full_stem:find("[gq]u$") and not cleaned_ending:find("^i[rum]$") and cleaned_ending ~= "indo" and not cleaned_ending:find("^ir[md]") then ending = ending:gsub("^i", "í") end -- Spelling changes in the stem; it depends on whether the stem given is the pre-front-vowel or -- pre-back-vowel variant, as indicated by `frontback`. We want these front-back spelling changes to happen -- between stem and ending, not between prefix and stem; the prefix may not have the same "front/backness" -- as the stem. local is_front = rfind(ending, "^[eiéíê]") if base.frontback == "front" and not is_front then stem = stem:gsub("c$", "ç") -- conhecer -> conheço, vencer -> venço, descer -> desço stem = stem:gsub("g$", "j") -- proteger -> protejo, fugir -> fujo stem = stem:gsub("gu$", "g") -- distinguir -> distingo, conseguir -> consigo stem = stem:gsub("qu$", "c") -- extorquir -> exturco stem = stem:gsub("([gq])ü$", "%1u") -- argüir (superseded) -> arguo, delinqüir (superseded) -> delinquo elseif base.frontback == "back" and is_front then -- The following changes are all superseded so we don't do them: -- averiguar -> averigüei, minguar -> mingüei; antiquar -> antiqüei, apropinquar -> apropinqüei -- stem = stem:gsub("([gq])u$", "%1ü") stem = stem:gsub("g$", "gu") -- cargar -> carguei, apagar -> apaguei stem = stem:gsub("c$", "qu") -- marcar -> marquei stem = stem:gsub("ç$", "c") -- começar -> comecei -- j does not go to g here; desejar -> deseje not #desege end local retval = stem .. ending if retval:find(GL_TYPE) and retval:find(PT_TYPE) or retval:find(GL_ONLY_TYPE) and not retval:find(GL_TYPE) then -- Reject clashes in "Galician"-type and "Portuguese"-type forms, e.g. '#vós dixéreis' or '#vós dissérades'. return nil end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, slot, base.prefix, stem, ending) end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function construct_stems(base, vowel_alt) local stems = {} stems.pres_unstressed = base.stems.pres_unstressed or base.inf_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or base.stems.pres_stressed or vowel_alt.pres_stressed or base.inf_stem stems.pres1_and_sub = -- If no_pres_stressed given, the entire subjunctive is missing. base.no_pres_stressed and {} or -- If no_pres1_and_sub given, pres1 and entire subjunctive are missing. base.no_pres1_and_sub and {} or base.stems.pres1_and_sub or vowel_alt.pres1_and_sub or nil stems.pres1 = base.stems.pres1 or stems.pres1_and_sub or stems.pres_stressed stems.impf = base.stems.impf or base.inf_stem stems.full_impf = base.stems.full_impf stems.pret_base = base.stems.pret_base or base.inf_stem stems.pret_conj = base.stems.pret_conj or base.conj stems.pret = base.stems.pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret_base), function(form) return form .. base.conj_vowel end) stems.gl_short_pret = base.stems.gl_short_pret or iut.map_forms(iut.convert_to_general_list_form(stems.pret), function(form) return rsub(form, com.V .. "$", "") end) stems.pt_pret_1s = base.stems.pt_pret_1s stems.pt_pret_3s = base.stems.pt_pret_3s stems.fut = base.stems.fut or base.inf_stem .. base.conj stems.cond = base.stems.cond or stems.fut stems.pres_sub_stressed = base.stems.pres_sub_stressed or stems.pres1 stems.pres_sub_unstressed = base.stems.pres_sub_unstressed or stems.pres1_and_sub or stems.pres_unstressed stems.sub_conj = base.stems.sub_conj or base.conj stems.plup = base.stems.plup or stems.pret stems.impf_sub = base.stems.impf_sub or stems.pret stems.fut_sub = base.stems.fut_sub or stems.pret stems.pers_inf = base.stems.pers_inf or base.inf_stem .. base.conj_vowel stems.pp = base.stems.pp or base.conj == "ar" and combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ado", "dont include prefix") or -- use combine_stem_ending esp. so we get roído, caído, etc. combine_stem_ending(base, "pp_ms", base.prefix, base.inf_stem, "ido", "dont include prefix") stems.pp_ms = stems.pp local function masc_to_fem(form) if rfind(form, "o$") then return rsub(form, "o$", "a") else return form end end stems.pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.pp_ms), masc_to_fem) if base.stems.short_pp then stems.short_pp_ms = base.stems.short_pp stems.short_pp_fs = iut.map_forms(iut.convert_to_general_list_form(stems.short_pp_ms), masc_to_fem) end base.this_stems = stems end local function add_present_indic(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end local s2, s3, p1, p2, p3 if base.conj == "ar" then s2, s3, p1, p2, p3 = "as", "a", "amos", {"ades" .. GL_TYPE, "ais" .. PT_TYPE}, "am" elseif base.conj == "er" or base.conj == "or" then -- verbs in -por have the present overridden s2, s3, p1, p2, p3 = "es", "e", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, "em" elseif base.conj == "ir" then s2, s3, p1, p2, p3 = "es", "e", "imos", {"ides" .. GL_TYPE, "is" .. PT_TYPE}, "em" else error("Internal error: Unrecognized conjugation " .. base.conj) end addit("1s", stems.pres1, "o") addit("2s", stems.pres_stressed, s2) addit("3s", stems.pres_stressed, s3) addit("1p", stems.pres_unstressed, p1) addit("2p", stems.pres_unstressed, p2) addit("3p", stems.pres_stressed, p3) end local function add_present_subj(base) local stems = base.this_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end local s1, s2, s3, p1, p2, p3 if stems.sub_conj == "ar" then s1, s2, s3, p1, p2, p3 = "e", "es", "e", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, "em" else s1, s2, s3, p1, p2, p3 = "a", "as", "a", "amos", {"ades" .. GL_TYPE, "ais" .. PT_TYPE}, "am" end addit("1s", stems.pres_sub_stressed, s1) addit("2s", stems.pres_sub_stressed, s2) addit("3s", stems.pres_sub_stressed, s3) addit("1p", stems.pres_sub_unstressed, p1) addit("2p", stems.pres_sub_unstressed, p2) addit("3p", stems.pres_sub_stressed, p3) end local function add_finite_non_present(base) local stems = base.this_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect stem. if stems.full_impf then add_tense("impf", stems.full_impf, "*a", "*as", "*a", "amos", {"ades" .. GL_TYPE, "eis" .. PT_TYPE, "ais" .. GL_ALTVAR}, "*am") elseif base.conj == "ar" then add_tense("impf", stems.impf, "ava", "avas", "ava", "ávamos", {"ávades" .. GL_TYPE, "áveis" .. PT_TYPE, "ávais" .. GL_ALTVAR}, "avam") else add_tense("impf", stems.impf, "ia", "ias", "ia", "íamos", {"íades" .. GL_TYPE, "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR}, "iam") end -- * at the beginning of the ending means to remove a final accent from the preterite stem. if stems.pret_conj == "irreg" then add_tense("pret", stems.gl_short_pret, "em" .. GL_TYPE, nil, "o" .. GL_TYPE) add_tense("pret", stems.pret, nil, {"*ste", "*che" .. GL_ALTVAR}, nil, "*mos", "*stes", {"rom" .. GL_TYPE, "*ram" .. PT_TYPE}) add_tense("pret", stems.pt_pret_1s, PT_TYPE) add_tense("pret", stems.pt_pret_3s, nil, nil, PT_TYPE) elseif stems.pret_conj == "ar" then add_tense("pret", stems.pret_base, "ei", {"aste", "ache" .. GL_ALTVAR}, "ou", "amos", "astes", {"árom" .. GL_TYPE, "aram" .. PT_TYPE}) elseif stems.pret_conj == "er" then add_tense("pret", stems.pret_base, {"im" .. GL_TYPE, "i" .. PT_TYPE}, {"este", "eche" .. GL_ALTVAR}, "eu", "emos", "estes", {"êrom" .. GL_TYPE, "eram" .. PT_TYPE}) else add_tense("pret", stems.pret_base, {"im" .. GL_TYPE, "i" .. PT_TYPE}, {"iste", "iche" .. GL_ALTVAR}, "iu", "imos", "istes", {"írom" .. GL_TYPE, "iram" .. PT_TYPE}) end -- * at the beginning of the ending means to remove a final accent from the stem. -- ** is similar but is "conditional" on a consonant preceding the final vowel. add_tense("plup", stems.plup, "**ra", "**ras", "**ra", "ramos", {"rades" .. GL_TYPE, "reis" .. PT_TYPE, "rais" .. GL_ALTVAR}, "**ram") add_tense("impf_sub", stems.impf_sub, "**sse", "**sses", "**sse", "ssemos", {"ssedes" .. GL_TYPE, "sseis" .. PT_TYPE}, "**ssem") add_tense("fut_sub", stems.fut_sub, "*r", "**res", "*r", "*rmos", "*rdes", "**rem") if base.refl then local mark = TEMP_MESOCLITIC_INSERTION_POINT add_tense("fut", stems.fut, {"ei" .. GL_TYPE, mark .. "ei" .. PT_TYPE}, {"ás" .. GL_TYPE, mark .. "ás" .. PT_TYPE}, {"á" .. GL_TYPE, mark .. "á" .. PT_TYPE}, {"emos" .. GL_TYPE, mark .. "emos" .. PT_TYPE}, {"edes" .. GL_TYPE, mark .. "eis" .. PT_TYPE}, {"ám" .. GL_TYPE, mark .. "ão" .. PT_TYPE} ) add_tense("cond", stems.cond, {"ia" .. GL_TYPE, mark .. "ia" .. PT_TYPE}, {"ias" .. GL_TYPE, mark .. "ias" .. PT_TYPE}, {"ia" .. GL_TYPE, mark .. "ia" .. PT_TYPE}, {"íamos" .. GL_TYPE, mark .. "íamos" .. PT_TYPE}, -- FIXME, is GL_ALTVAR correct for the mesoclitic variant of -íais? {"íades" .. GL_TYPE, mark .. "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR, mark .. "íais" .. GL_ALTVAR}, {"iam" .. GL_TYPE, mark .. "iam" .. PT_TYPE}) else -- Don't insert forms with the mesoclitic insertion point to avoid duplication in non-reflexive verbs. add_tense("fut", stems.fut, "ei", "ás", "á", "emos", {"edes" .. GL_TYPE, "eis" .. PT_TYPE}, {"ám" .. GL_TYPE, "ão" .. PT_TYPE}) add_tense("cond", stems.cond, "ia", "ias", "ia", "íamos", -- FIXME, is GL_ALTVAR correct for the mesoclitic variant of -íais? {"íades" .. GL_TYPE, "íeis" .. PT_TYPE, "íais" .. GL_ALTVAR}, "iam") end -- Different stems for different parts of the personal infinitive to correctly handle forms of [[sair]] and [[pôr]]. add_tense("pers_inf", base.non_prefixed_verb, "", nil, "") add_tense("pers_inf", stems.pers_inf, nil, "**res", nil, "*rmos", "*rdes", "**rem") end local function add_non_finite_forms(base) local stems = base.this_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below for -- "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.verb}) end end -- verbs in -por have the gerund overridden local ger_ending = base.conj == "ar" and "ando" or base.conj == "er" and "endo" or "indo" addit("gerund", stems.pres_unstressed, ger_ending) -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the same -- form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate clitic -- pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic pronouns won't be -- added, and {{gl-reinteg-verb form of}} will wrongly consider all these combinations as possible inflections of the bare -- gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, stems.pres_unstressed, ger_ending) end end -- Skip the long/short past participle footnotes if called from {{gl-reinteg-verb}} so they don't show in the headword. local long_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-reinteg-verb" and {long_pp_footnote} or nil addit("pp_ms", stems.pp_ms, "", long_pp_footnotes) if not base.pp_inv then addit("pp_fs", stems.pp_fs, "", long_pp_footnotes) addit("pp_mp", stems.pp_ms, "s", long_pp_footnotes) addit("pp_fp", stems.pp_fs, "s", long_pp_footnotes) end if stems.short_pp_ms then local short_pp_footnotes = stems.short_pp_ms and base.alternant_multiword_spec.source_template ~= "gl-reinteg-verb" and {short_pp_footnote} or nil addit("short_pp_ms", stems.short_pp_ms, "", short_pp_footnotes) if not base.pp_inv then addit("short_pp_fs", stems.short_pp_fs, "", short_pp_footnotes) addit("short_pp_mp", stems.short_pp_ms, "s", short_pp_footnotes) addit("short_pp_fp", stems.short_pp_fs, "s", short_pp_footnotes) end end end local function copy_forms_to_imperatives(base) -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) if not skip_slot(base, "imp_2p") then -- Copy pres2p to imperative 2p minus -s since they are almost always the same. -- But not if there's an override, to avoid possibly throwing an error. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) local form_no_s, var_codes = rmatch(form, "^(.*)s(" .. var_code_c .. "*)$") if not form_no_s then error("Can't derive second-person plural imperative from second-person plural present indicative " .. "because form '" .. form .. "' doesn't end in -s") end return form_no_s .. var_codes end)) end -- Copy subjunctives to imperatives, unless there's an override for the given slot (as with the imp_1p of [[ir]]). for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = "[[" .. clitic .. "]]" .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Add the appropriate clitic pronouns in `clitics` to the forms in `base_slot`. `store_cliticized_form` is a function -- of three arguments (clitic, formobj, cliticized_form) and should store the cliticized form for the specified clitic -- and form object. local function suffix_clitic_to_forms(base, base_slot, clitics, store_cliticized_form) if not base.forms[base_slot] then -- This can happen, e.g. in only3s/only3sp/only3p verbs. return end local autolink = not base.alternant_multiword_spec.args.noautolinkverb for _, formobj in ipairs(base.forms[base_slot]) do for _, clitic in ipairs(clitics) do local cliticized_form if formobj.form:find(TEMP_MESOCLITIC_INSERTION_POINT) then -- mesoclisis in future and conditional local infinitive, suffix = rmatch(formobj.form, "^(.*)" .. TEMP_MESOCLITIC_INSERTION_POINT .. "(.*)$") if not infinitive then error("Internal error: Can't find mesoclitic insertion point in slot '" .. base_slot .. "', form '" .. formobj.form .. "'") end local full_form = infinitive .. suffix if autolink and not infinitive:find("%[%[") then infinitive = "[[" .. infinitive .. "]]" end cliticized_form = autolink and infinitive .. "-[[" .. clitic .. "]]-[[" .. full_form .. "|" .. suffix .. "]]" or infinitive .. "-" .. clitic .. "-" .. suffix else local clitic_suffix = autolink and "-[[" .. clitic .. "]]" or "-" .. clitic local form_needs_link = autolink and not formobj.form:find("%[%[") if base_slot:find("1p$") then -- Final -s disappears: arrependíamos + nos -> arrependíamo-nos, etc. cliticized_form = formobj.form:gsub("s$", "") if form_needs_link then cliticized_form = "[[" .. formobj.form .. "|" .. cliticized_form .. "]]" end else cliticized_form = formobj.form if form_needs_link then cliticized_form = "[[" .. cliticized_form .. "]]" end end cliticized_form = cliticized_form .. clitic_suffix end store_cliticized_form(clitic, formobj, cliticized_form) end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local clitic if not do_reflexive then clitic = base.clitic elseif slot:find("[123]") then local persnum = slot:match("^.*_(.-)$") clitic = person_number_to_reflexive_pronoun[persnum] else clitic = "se" end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = not slot:find("_sub") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{gl-reinteg-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "gl-reinteg-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, clitic, " ... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then suffix_clitic_to_forms(base, slot, {clitic}, function(clitic, formobj, cliticized_form) formobj.form = cliticized_form end ) end elseif not do_joined then -- Add clitic as separate word before all other forms. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, clitic, " ", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{gl-reinteg-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) -- Copy subjunctives to negative imperatives, preceded by "nom". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "nom " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[nom]] " .. form else return "[[nom]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end -- Remove special characters added to future and conditional forms to indicate mesoclitic insertion points. local function remove_mesoclitic_insertion_points(base) for slot, forms in pairs(base.forms) do if slot:find("^fut_") or slot:find("^cond_") then for _, form in ipairs(forms) do form.form = form.form:gsub(TEMP_MESOCLITIC_INSERTION_POINT, "") end end end end -- If called from {{gl-reinteg-verb}}, remove less-recommended variants; otherwise add a footnote indicating they are -- less recommended, and sort them last. local function process_altvar_forms(base) for slot, forms in pairs(base.forms) do -- As an optimization, check if there are any less-recommended forms and don't do anything if not. local saw_altvar = false for _, form in ipairs(forms) do if form.form:find(ALTVAR) then saw_altvar = true break end end if saw_altvar then if base.alternant_multiword_spec.source_template == "gl-reinteg-verb" then base.forms[slot] = iut.flatmap_forms(base.forms[slot], function(form) if form:find(ALTVAR) then return {} else return {form} end end) else local existing_forms = base.forms[slot] base.forms[slot] = {} for _, formobj in ipairs(existing_forms) do if not formobj.form:find(ALTVAR) then iut.insert_form(base.forms, slot, formobj) end end for _, formobj in ipairs(existing_forms) do if formobj.form:find(ALTVAR) then formobj.footnotes = iut.combine_footnotes(formobj.footnotes, {"[less recommended]"}) iut.insert_form(base.forms, slot, formobj) end end end end end end local function conjugate_verb(base) for _, vowel_alt in ipairs(base.vowel_alt_stems) do construct_stems(base, vowel_alt) add_present_indic(base) add_present_subj(base) end add_finite_non_present(base) add_non_finite_forms(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). copy_forms_to_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepende-te]] but [[nom]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end remove_mesoclitic_insertion_points(base) process_altvar_forms(base) end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. 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 parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif rfind(first_element, ":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) end else local comma_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*,%s*") for j = 1, #comma_separated_groups do local alt = comma_separated_groups[j][1] if not vowel_alternants[alt] then if #comma_separated_groups == 1 then parse_err("Unrecognized spec or vowel alternant '" .. alt .. "'") else parse_err("Unrecognized vowel alternant '" .. alt .. "'") end end if base.vowel_alt then for _, existing_alt in ipairs(base.vowel_alt) do if existing_alt.form == alt then parse_err("Vowel alternant '" .. alt .. "' specified twice") end end else base.vowel_alt = {} end table.insert(base.vowel_alt, {form = alt, footnotes = fetch_footnotes(comma_separated_groups[j])}) end end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form -- so we can use it below in the 'lemma_linked' form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb and reflexive pronoun. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve -- links in multiword lemmas and include links in non-lemma forms rather than allowing -- the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} if not base.no_built_in then for _, built_in_conj in ipairs(built_in_conjugations) do if type(built_in_conj.match) == "function" then base.prefix, base.non_prefixed_verb = built_in_conj.match(base.verb) elseif built_in_conj.match:find("^%^") and rsub(built_in_conj.match, "^%^", "") == base.verb then -- begins with ^, for exact match, and matches base.prefix, base.non_prefixed_verb = "", base.verb else base.prefix, base.non_prefixed_verb = rmatch(base.verb, "^(.*)(" .. built_in_conj.match .. ")$") end if base.prefix then -- we found a built-in verb for stem, forms in pairs(built_in_conj.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.stems[stem] = forms end end break end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeioô]r)$") if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end base.inf_stem = inf_stem suffix = suffix == "ôr" and "or" or suffix base.conj = suffix base.conj_vowel = suffix == "ar" and "á" or suffix == "ir" and "í" or "ê" base.frontback = suffix == "ar" and "back" or "front" if base.stems.vowel_alt then -- built-in verb with specified vowel alternation if base.vowel_alt then error(base.verb .. " is a recognized built-in verb, and should not have vowel alternations specified with it") end base.vowel_alt = iut.convert_to_general_list_form(base.stems.vowel_alt) end -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.stems[indicator_flag] end -- Convert vowel alternation indicators into stems. local vowel_alt = base.vowel_alt or {{form = "+"}} base.vowel_alt_stems = apply_vowel_alternations(base.inf_stem, vowel_alt) for _, vowel_alt_stems in ipairs(base.vowel_alt_stems) do if vowel_alt_stems.err then error("To use '" .. vowel_alt_stems.altobj.form .. "', present stem '" .. base.prefix .. base.inf_stem .. "' " .. vowel_alt_stems.err) end end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:gl-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) alternant_multiword_spec.vowel_alt = {} iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end -- Vowel alternants. Do these after calling detect_indicator_spec() because the latter sets base.vowel_alt for -- built-in verbs. if base.vowel_alt then for _, altobj in ipairs(base.vowel_alt) do m_table.insertIfNot(alternant_multiword_spec.vowel_alt, altobj.form) end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Galician verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "Galician " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "gl-reinteg-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("verbs with red links in their inflection tables") must_break = true break end end end end if must_break then break end end end if(base.conj == "or") then insert_cat("verbs ending in -er") else insert_cat("verbs ending in -" .. base.conj) end if base.irreg then insert_ann("irreg", "irregular") insert_cat("irregular verbs") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "impersonal") insert_cat("impersonal verbs") elseif base.only3sp then insert_ann("defective", "third-person only") insert_cat("third-person-only verbs") elseif base.only3p then insert_ann("defective", "third-person plural only") insert_cat("third-person-plural-only verbs") elseif base.no_pres_stressed or base.no_pres1_and_sub then insert_ann("defective", "defective") insert_cat("defective verbs") else insert_ann("defective", "regular") end if base.stems.short_pp then insert_ann("short_pp", "irregular short past participle") insert_cat("verbs with irregular short past participle") else insert_ann("short_pp", "regular") end if base.clitic then insert_cat("verbs with lexical clitics") end if base.refl then insert_cat("reflexive verbs") end if base.e_ei_cat then insert_ann("vowel_alt", "''e'' may become ''ei'' when stressed") insert_cat("verbs with e becoming ei when stressed") elseif not base.vowel_alt then insert_ann("vowel_alt", "non-alternating") else for _, alt in ipairs(base.vowel_alt) do if alt.form == "+" then insert_ann("vowel_alt", "non-alternating") else insert_ann("vowel_alt", vowel_alternant_to_desc[alt.form]) insert_cat("verbs with " .. vowel_alternant_to_cat[alt.form]) end end end local cons_alt = base.stems.cons_alt if cons_alt == nil then if base.conj == "ar" then if base.inf_stem:find("ç$") then cons_alt = "c-ç" elseif base.inf_stem:find("c$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-gu" end else if base.no_pres_stressed or base.no_pres1_and_sub then cons_alt = nil -- no e.g. c-ç alternation in this case elseif base.inf_stem:find("c$") then cons_alt = "c-ç" elseif base.inf_stem:find("qu$") then cons_alt = "c-qu" elseif base.inf_stem:find("g$") then cons_alt = "g-j" elseif base.inf_stem:find("gu$") then cons_alt = "g-gu" end end end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat("verbs with " .. desc) else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.irreg = {} ann.short_pp = {} ann.defective = {} ann.vowel_alt = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local short_pp = table.concat(ann.short_pp, " or ") if short_pp ~= "" and short_pp ~= "regular" then table.insert(ann_parts, short_pp) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local vowel_alt = table.concat(ann.vowel_alt, " or ") if vowel_alt ~= "" and vowel_alt ~= "non-alternating" then table.insert(ann_parts, vowel_alt) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, "; ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() if alternant_multiword_spec.forms.short_pp_ms then alternant_multiword_spec.has_short_pp = true end local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then if slot:find("^pp_") then accel_obj.form = slot elseif slot == "gerund" then accel_obj.form = "reinteg-gerund-" .. reconstructed_verb_spec else accel_obj.form = "reinteg-verb-form-" .. reconstructed_verb_spec end end return accel_obj end -- Italicize less-recommended forms. local function generate_link(data) local formval_for_link = data.form.formval_for_link if formval_for_link:find(ALTVAR) then formval_for_link = formval_for_link:gsub(ALTVAR, "") return m_links.full_link({lang = lang, term = formval_for_link, tr = "-", accel = data.form.accel_obj}, "term") .. iut.get_footnote_text(data.form.footnotes, data.footnote_obj) end end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, canonicalize = function(form) return export.remove_variant_codes(form, "keep altvar") end, generate_link = generate_link, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead" align=center>&nbsp; &nbsp; การผันรูปบูรณาการใหม่ของ {title} (See [[Appendix:Reintegrationism]])</div> <div class="NavContent" align="left"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! class="roa-person-number-header" rowspan="2" | ! class="roa-person-number-header" colspan="3" | เอกพจน์ ! class="roa-person-number-header" colspan="3" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<eu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<ti>> / <<tu>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<ele>> / <<ela>> / <<você>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่หนึ่ง<br />(<<nós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สอง<br />(<<vós>>) ! class="roa-person-number-header" style="width:12.5%" | บุรุษที่สาม<br />(<<eles>> / <<elas>> / <<vocês>>) |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="infinitivo">รูปกริยากลาง</span>'' |- ! class="roa-nonfinite-header" | '''<span title="infinitivo impessoal">คำอบุรุษกริยา</span>''' | colspan="6" | {infinitive} |- ! class="roa-nonfinite-header" | '''<span title="infinitivo flexionado">คำบุรุษกริยา</span>''' | {pers_inf_1s} | {pers_inf_2s} | {pers_inf_3s} | {pers_inf_1p} | {pers_inf_2p} | {pers_inf_3p} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="gerúndio">รูปกริยาเป็นนาม</span>'' |- | class="roa-nonfinite-header" | | colspan="6" | {gerund} |-{pp_clause} ! class="roa-indicative-left-rail" colspan="7" | ''<span title="indicativo">มาลาบอกเล่า</span>'' |- ! class="roa-indicative-left-rail" | <span title="presente">ปัจจุบันกาล</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito imperfeito">ไม่สมบูรณ์</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito perfeito">อดีตกาลสิ้นสุด (สมบูรณ์)</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" | <span title="pretérito mais-que-perfeito simples">อภิสมบูรณ์</span> | {plup_1s} | {plup_2s} | {plup_3s} | {plup_1p} | {plup_2p} | {plup_3p} |- ! class="roa-indicative-left-rail" | <span title="futuro do presente">อนาคตกาล</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" | <span title="condicional">มาลาเงื่อนไข</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" colspan="7" | ''<span title="conjuntivo">มาลาสมมุติ</span>'' |- ! class="roa-subjunctive-left-rail" | <span title=" presente do conjuntivo">ปัจจุบันกาล</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="pretérito imperfeito do conjuntivo">ไม่สมบูรณ์</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! class="roa-subjunctive-left-rail" | <span title="futuro do conjuntivo">อนาคตกาล</span> | {fut_sub_1s} | {fut_sub_2s} | {fut_sub_3s} | {fut_sub_1p} | {fut_sub_2p} | {fut_sub_3p} |- ! class="roa-imperative-left-rail" colspan="7" | ''<span title="imperativo">มาลาสั่ง</span>'' |- ! class="roa-imperative-left-rail" | <span title="imperativo afirmativo">เชิงยืนยัน</span> | rowspan="2" | | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" | <span title="imperativo negativo">เชิงปฏิเสธ</span> (<<nom>>) | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div> ]=] local double_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio irregular">รูปกริยาขยายอดีตกาลสั้น</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {short_pp_ms} | colspan="3" | {short_pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {short_pp_fs} | colspan="3" | {short_pp_fp} |- ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio regular">รูปกริยาขยายอดีตกาลยาว</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local single_pp_template = [=[ ! class="roa-nonfinite-header" colspan="7" | ''<span title="particípio passado">รูปกริยาขยายอดีตกาล</span>'' |- ! class="roa-nonfinite-header" | เพศชาย | colspan="3" | {pp_ms} | colspan="3" | {pp_mp} |- ! class="roa-nonfinite-header" | เพศหญิง | colspan="3" | {pp_fs} | colspan="3" | {pp_fp} |-]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form) if alternant_multiword_spec.annotation ~= "" then forms.title = forms.title .. " (" .. alternant_multiword_spec.annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" -- has_short_pp is computed in show_forms(). local pp_template = alternant_multiword_spec.has_short_pp and double_pp_template or single_pp_template forms.pp_clause = m_string_utilities.format(pp_template, forms) local table_with_pronouns = rsub(basic_table, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "แม่แบบ" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{gl-reinteg-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "gl-reinteg-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "gl-reinteg-conj" or pagename == "gl-reinteg-verb") and in_template_space() then arg1 = "traguer" elseif pagename == "gl-reinteg-verb form of" and in_template_space() then arg1 = "amar" else arg1 = "<>" end end -- When called from {{gl-reinteg-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "gl-reinteg-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "gl-reinteg-verb form of" and in_template_space() then verb_form_of_form = "ame" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, get_variants = function(form) return rsub(form, not_var_code_c, "") end, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "gl-reinteg-conj" then -- Remove variant codes to avoid causing problems with bots. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = export.remove_variant_codes(form.form) end end return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{gl-reinteg-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(parent_args, "gl-reinteg-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export go8phokshii8o1lehha2syo45r82lgj มอดูล:etymon/categories 828 2297439 5729433 5684447 2026-07-20T09:31:15Z Octahedron80 267 5729433 Scribunto text/plain local export = {} local loader = require("Module:module loader") local M = loader.init({ require = { etymology = "Module:etymology", affix = "Module:affix", etymology_specialized = "Module:etymology/specialized", }, loadData = { data = "Module:etymon/data", }, }) -- Evaluate whether a keyword is transitive for a given term local function is_transitive(transitive_mode, page_lang, term_lang) if transitive_mode == M.data.TRANSITIVE.ALWAYS then return true elseif transitive_mode == M.data.TRANSITIVE.NEVER then return false elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG then return page_lang:getCode() ~= term_lang:getCode() elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then return page_lang:getCode() ~= term_lang:getCode() end error("Unknown transitive mode: " .. tostring(transitive_mode)) end -- Get keyword config with language-specific overrides local function get_keyword_config(keyword, lang_exc) local base_config = M.data.keywords[keyword] if not base_config then return nil -- Invalid keyword end local overrides = lang_exc and lang_exc.keyword_overrides and lang_exc.keyword_overrides[keyword] if not overrides then return base_config end -- Merge overrides into base config local merged = {} for k, v in pairs(base_config) do merged[k] = v end for k, v in pairs(overrides) do merged[k] = v end return merged end function export.get_cat_name(source) local _, cat_name = M.etymology.get_display_and_cat_name(source, true) return cat_name end -- Normalize affix type aliases local aftype_aliases = { ["pre"] = "อุปสรรค", ["suf"] = "ปัจจัย", ["in"] = "อาคม", ["inter"] = "หน่วยคำเติมเชื่อม", ["circum"] = "หน่วยคำเติมคร่อม", ["naf"] = "ไม่ใช่หน่วยคำเติม", ["root"] = "ไม่ใช่หน่วยคำเติม", ["prefix"] = "อุปสรรค", ["suffix"] = "ปัจจัย", ["infix"] = "อาคม", ["interfix"] = "หน่วยคำเติมเชื่อม", ["circumfix"] = "หน่วยคำเติมคร่อม", ["non-affix"] = "ไม่ใช่หน่วยคำเติม", ["ราก"] = "ไม่ใช่หน่วยคำเติม", } -- Collect affix categories from top-level group containers local function collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) local parts = {} local part_index = 1 for _, container in ipairs(node.children or {}) do local config = container.keyword_info if config and config.affix_categories then for _, term in ipairs(container.terms or {}) do if not term.unknown_term then local part_data = { term = term.title, tr = term.tr, ts = term.ts, alt = term.alt, itemno = part_index, orig_index = part_index } -- Determine affix type: explicit aftype > pos=root > auto-detect local aftype = term.aftype if aftype then aftype = aftype_aliases[aftype] or aftype part_data.type = aftype elseif term.args and term.args.pos and (term.args.pos == "root" or term.args.pos == "ราก") then part_data.type = "ไม่ใช่หน่วยคำเติม" end if term.lang:getCode() ~= page_lang:getCode() then part_data.lang = term.lang end local target_ids = available_etymon_ids[term.target_key] local has_multiple_ids = target_ids and #target_ids > 1 local id_exists_in_disambiguation = false local matched_id = nil -- Count available senseids for the target page local senseid_count = 0 local target_prefix = term.target_key .. ":" if senseid_parent_etymon then for key, _ in pairs(senseid_parent_etymon) do if key:sub(1, #target_prefix) == target_prefix then senseid_count = senseid_count + 1 end end end local has_multiple_senseids = senseid_count > 1 if term.id then -- Check if user provided a valid senseid local senseid_key = term.target_key .. ":" .. term.id if senseid_parent_etymon and senseid_parent_etymon[senseid_key] then if has_multiple_senseids then -- Ambiguous senseid: use senseid matched_id = term.id id_exists_in_disambiguation = true elseif has_multiple_ids then -- Unique senseid but ambiguous etymon: use etymon ID matched_id = term.etymon_id or term.id id_exists_in_disambiguation = true end else -- Check if user provided a valid etymon ID if has_multiple_ids and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.id then -- Ambiguous etymon: use etymon ID id_exists_in_disambiguation = true matched_id = term.id break end end end -- Fallback: check resolved etymon_id (e.g. from previous steps) if not id_exists_in_disambiguation and has_multiple_ids and term.etymon_id and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.etymon_id then id_exists_in_disambiguation = true matched_id = term.etymon_id break end end end end end -- Use the matched ID if found if term.override or id_exists_in_disambiguation then part_data.id = matched_id or term.id end table.insert(parts, part_data) part_index = part_index + 1 end end end end if #parts == 0 then return {} end local affix_data = { lang = page_lang, parts = parts, pos = "ศัพท์", sort_key = nil } local affix_categories = M.affix.get_affix_categories_only(affix_data) local result = {} for _, cat in ipairs(affix_categories) do if type(cat) == "table" then table.insert(result, cat.cat) else table.insert(result, cat) end end return result end -- Add borrowing-related categories (top-level only) local function collect_borrowing_categories(categories, page_lang, term, config) if config.borrowing_type == "borrowed" then local temp_categories = {} M.etymology.insert_borrowed_cat(temp_categories, page_lang, term.lang) for _, cat in ipairs(temp_categories) do categories[cat] = true end end if config.specialized_borrowing then local result = M.etymology_specialized.specialized_borrowing { bortype = config.specialized_borrowing, lang = page_lang, sources = { term.lang }, terms = { { lang = term.lang, term = "-" } }, notext = true, nocat = false, } for cat_name in result:gmatch("%[%[Category:([^%]]+)%]%]") do categories[cat_name] = true end end end -- Add source-based derivation categories (top-level only) local function collect_source_derivation_categories(categories, page_lang, term, config) if not config.source_category_type then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, borrowing_type = config.source_category_type, nocat = false, } for _, cat in ipairs(temp_categories) do categories[cat] = true end end -- Add source language categories local function collect_source_categories(categories, page_lang, term, chain, get_norm_lang_func) if page_lang:getCode() == get_norm_lang_func(term.lang):getCode() then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = get_norm_lang_func(term.lang), categories = temp_categories, nocat = false, } for _, cat in ipairs(temp_categories) do categories[cat] = true end if chain.inherited then temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = get_norm_lang_func(term.lang), categories = temp_categories, borrowing_type = "สืบทอด", nocat = false, } for _, cat in ipairs(temp_categories) do categories[cat] = true end end end -- Add root/word categories local function collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, chain, get_norm_lang_func, lang_exc, keyword) local pos_types = { root = "ราก", word = "คำ" } -- Determine pos: from term's postype, keyword's pos_override, or args.pos local pos local config = get_keyword_config(keyword, lang_exc) if term.postype then -- Term-level postype modifier takes highest priority pos = term.postype elseif config and config.pos_override then pos = config.pos_override elseif type(term.args) == "table" and term.args.pos then pos = term.args.pos end local pos_type = pos_types[pos] if not pos_type or term.unknown_term then return end -- Skip root/word categories for descendants of affix groups -- if pos_type then -- return -- end local same_language = get_norm_lang_func(page_lang):getFullCode() == get_norm_lang_func(term.lang):getFullCode() -- Skip self-references if same_language and root_title == term.title then return end -- Use makeEntryName to strip diacritics for category names local entry_name = term.lang:makeEntryName(term.title) local lang_name = page_lang:getCanonicalName() local cat_name if chain.passed_through then local etymon_lang_name = export.get_cat_name(term.lang) cat_name = lang_name .. " terms derived from the " .. etymon_lang_name .. " " .. pos_type .. " " .. entry_name else cat_name = lang_name .. " terms belonging to the " .. pos_type .. " " .. entry_name end -- Add ID disambiguation if needed (for roots/words: use etymon_id if resolved via senseid, otherwise use id) local target_ids = available_etymon_ids[term.target_key] local effective_id = term.etymon_id or term.id -- etymon_id if senseid, otherwise id is already an etymon id if target_ids and effective_id then local same_pos_count = 0 for _, id_data in ipairs(target_ids) do if type(id_data) == "table" and id_data.pos == pos then same_pos_count = same_pos_count + 1 end end if same_pos_count > 1 then cat_name = cat_name .. " (" .. effective_id .. ")" end end categories[cat_name] = true end -- Compute chain state for a term based on parent chain and keyword config -- Hyphen patterns for affix detection (regular hyphen + script-specific) local AFFIX_HYPHEN_PATTERN = "[%-%־ـ᠊]" -- regular hyphen, Hebrew maqqef, Arabic tatweel, Mongolian hyphen -- Check if a term is an actual affix (not a non-affix member of an affix group) local function is_actual_affix(term) -- Check explicit aftype modifier if term.aftype then local normalized = aftype_aliases[term.aftype] or term.aftype return normalized ~= "ไม่ใช่หน่วยคำเติม" end -- Check if pos=root (treated as non-affix) if term.args and term.args.pos and (term.args.pos == "root" or term.args.pos == "ราก") then return false end -- Auto-detect by hyphen: prefix ends with -, suffix starts with -, etc. if term.title then local title = term.title -- Strip leading * for reconstructed terms before checking hyphens title = title:gsub("^%*", "") -- Check for hyphens at start or end (handles script-specific hyphens too) if title:match("^" .. AFFIX_HYPHEN_PATTERN) or title:match(AFFIX_HYPHEN_PATTERN .. "$") then return true end end -- Default: not an affix return false end local function compute_category_chain(parent_chain, config, page_lang, term_lang, get_norm_lang_func, parent_term_lang, term) -- Track if we're inside an actual affix (for suppressing root categories on descendants) -- Only set if the term is an actual affix (prefix, suffix, etc.), not a non-affix member local inside_affix = parent_chain.inside_affix if config.affix_categories and term and is_actual_affix(term) then inside_affix = true end -- If no_child_categories is set, disable everything if config.no_child_categories then return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = false, source = false, pos = false, recurse = false, inside_affix = inside_affix, } end local term_is_transitive = is_transitive(config.transitive, page_lang, term_lang) local new_source = parent_chain.source and term_is_transitive -- For CROSS_LANG_NO_INTERNAL_SOURCE: track internal derivation language context -- Check if this term is internal relative to parent term's language (if parent_term_lang provided) -- or relative to page language (if no parent_term_lang) local internal_lang = parent_chain.internal_lang local is_internal_in_context = false if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then local check_lang = parent_term_lang or page_lang local term_lang_code = get_norm_lang_func(term_lang):getCode() local check_lang_code = get_norm_lang_func(check_lang):getCode() if internal_lang then -- Already in an internal derivation context: check if this term is also internal is_internal_in_context = term_lang_code == internal_lang else -- Check if this term is internal relative to parent term (or page if no parent) is_internal_in_context = term_lang_code == check_lang_code end end -- Source chain behavior for CROSS_LANG_NO_INTERNAL_SOURCE if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then if is_internal_in_context then -- Internal derivation new_source = false internal_lang = get_norm_lang_func(term_lang):getCode() else -- Cross-language new_source = parent_chain.source and term_is_transitive internal_lang = nil end end local new_pos = parent_chain.pos return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = parent_chain.inherited and config.inherited_chain, source = new_source, pos = new_pos, internal_lang = internal_lang, recurse = new_source or new_pos, inside_affix = inside_affix, } end function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local page_lang = opts.page_lang local available_etymon_ids = opts.available_etymon_ids local senseid_parent_etymon = opts.senseid_parent_etymon local get_norm_lang_func = opts.get_norm_lang_func local lang_exc = opts.lang_exc local categories = {} local seen = {} local lang_name = page_lang:getCanonicalName() local root_title = data_tree.title -- Collect the tree recursively local function collect(node, parent_chain, is_toplevel) -- Avoid processing same node twice if not node.unknown_term and node.title then local key = node.lang:getFullCode() .. ":" .. (node.title or "") .. ":" .. (node.id or "") if seen[key] then return end seen[key] = true end -- Collect affix categories at top level only if is_toplevel then local affix_cats = collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) for _, cat in ipairs(affix_cats) do categories[lang_name .. " " .. cat] = true end end -- Process each container for _, container in ipairs(node.children or {}) do local keyword = container.keyword local config = get_keyword_config(keyword, lang_exc) -- Skip invalid keywords if config then -- Process each term in the container for _, term in ipairs(container.terms or {}) do local term_chain = compute_category_chain(parent_chain, config, page_lang, term.lang, get_norm_lang_func, node.lang, term) local no_child_categories = config.no_child_categories == true local term_is_transitive = is_transitive(config.transitive, page_lang, term.lang) -- Top-level only processing if is_toplevel then -- Missing/ambiguous etymon tracking if not term.unknown_term and (term.status == M.data.STATUS.MISSING or term.status == M.data.STATUS.REDLINK) then categories[lang_name .. " entries referencing missing etymons"] = true end if not term.unknown_term and term.status == M.data.STATUS.AMBIGUOUS then categories[lang_name .. " entries referencing ambiguous etymons"] = true end -- Top-level category (e.g., "undefined derivations") if config.toplevel_category then categories[lang_name .. " " .. config.toplevel_category] = true end -- Borrowing categories (bor, lbor, slbor, ubor, obor) if config.borrowing_type or config.specialized_borrowing then collect_borrowing_categories(categories, page_lang, term, config) end -- Borrowing categories from <bor>, <lbor>, or <slbor> modifiers on :af terms if keyword == "af" then if term.bor then local bor_config = { borrowing_type = "borrowed" } collect_borrowing_categories(categories, page_lang, term, bor_config) elseif term.lbor then local bor_config = { specialized_borrowing = "learned" } collect_borrowing_categories(categories, page_lang, term, bor_config) elseif term.slbor then local bor_config = { specialized_borrowing = "semi-learned" } collect_borrowing_categories(categories, page_lang, term, bor_config) end end -- Source-based derivation categories (sl, calque, pcal) if config.source_category_type then collect_source_derivation_categories(categories, page_lang, term, config) end -- Skip all child categorisation if no_child_categories is set if not no_child_categories then -- Source categories only if transitive if term_is_transitive then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end -- Pos categories always (unless no_child_categories) collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end else -- Below top level, respect the parent chain if parent_chain.source then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end if parent_chain.pos then collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end end -- Recurse into term's children if needed and status allows if term_chain.recurse and (term.status == M.data.STATUS.OK or term.status == M.data.STATUS.INLINE) then collect(term, term_chain, false) end end end end end -- Initial chain state local initial_chain = { passed_through = false, inherited = true, source = true, pos = true, internal_lang = nil, recurse = true, inside_affix = false, } collect(data_tree, initial_chain, true) local cat_list = {} for cat in pairs(categories) do table.insert(cat_list, cat) end return cat_list end return export t4cjrvne2trml96osi7twmn9k16ts00 5729434 5729433 2026-07-20T09:33:30Z Octahedron80 267 5729434 Scribunto text/plain local export = {} local loader = require("Module:module loader") local M = loader.init({ require = { etymology = "Module:etymology", affix = "Module:affix", etymology_specialized = "Module:etymology/specialized", }, loadData = { data = "Module:etymon/data", }, }) -- Evaluate whether a keyword is transitive for a given term local function is_transitive(transitive_mode, page_lang, term_lang) if transitive_mode == M.data.TRANSITIVE.ALWAYS then return true elseif transitive_mode == M.data.TRANSITIVE.NEVER then return false elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG then return page_lang:getCode() ~= term_lang:getCode() elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then return page_lang:getCode() ~= term_lang:getCode() end error("Unknown transitive mode: " .. tostring(transitive_mode)) end -- Get keyword config with language-specific overrides local function get_keyword_config(keyword, lang_exc) local base_config = M.data.keywords[keyword] if not base_config then return nil -- Invalid keyword end local overrides = lang_exc and lang_exc.keyword_overrides and lang_exc.keyword_overrides[keyword] if not overrides then return base_config end -- Merge overrides into base config local merged = {} for k, v in pairs(base_config) do merged[k] = v end for k, v in pairs(overrides) do merged[k] = v end return merged end function export.get_cat_name(source) local _, cat_name = M.etymology.get_display_and_cat_name(source, true) return cat_name end -- Normalize affix type aliases local aftype_aliases = { ["pre"] = "อุปสรรค", ["suf"] = "ปัจจัย", ["in"] = "อาคม", ["inter"] = "หน่วยคำเติมเชื่อม", ["circum"] = "หน่วยคำเติมคร่อม", ["naf"] = "ไม่ใช่หน่วยคำเติม", ["root"] = "ไม่ใช่หน่วยคำเติม", ["prefix"] = "อุปสรรค", ["suffix"] = "ปัจจัย", ["infix"] = "อาคม", ["interfix"] = "หน่วยคำเติมเชื่อม", ["circumfix"] = "หน่วยคำเติมคร่อม", ["non-affix"] = "ไม่ใช่หน่วยคำเติม", ["ราก"] = "ไม่ใช่หน่วยคำเติม", } -- Collect affix categories from top-level group containers local function collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) local parts = {} local part_index = 1 for _, container in ipairs(node.children or {}) do local config = container.keyword_info if config and config.affix_categories then for _, term in ipairs(container.terms or {}) do if not term.unknown_term then local part_data = { term = term.title, tr = term.tr, ts = term.ts, alt = term.alt, itemno = part_index, orig_index = part_index } -- Determine affix type: explicit aftype > pos=root > auto-detect local aftype = term.aftype if aftype then aftype = aftype_aliases[aftype] or aftype part_data.type = aftype elseif term.args and term.args.pos and (term.args.pos == "root" or term.args.pos == "ราก") then part_data.type = "ไม่ใช่หน่วยคำเติม" end if term.lang:getCode() ~= page_lang:getCode() then part_data.lang = term.lang end local target_ids = available_etymon_ids[term.target_key] local has_multiple_ids = target_ids and #target_ids > 1 local id_exists_in_disambiguation = false local matched_id = nil -- Count available senseids for the target page local senseid_count = 0 local target_prefix = term.target_key .. ":" if senseid_parent_etymon then for key, _ in pairs(senseid_parent_etymon) do if key:sub(1, #target_prefix) == target_prefix then senseid_count = senseid_count + 1 end end end local has_multiple_senseids = senseid_count > 1 if term.id then -- Check if user provided a valid senseid local senseid_key = term.target_key .. ":" .. term.id if senseid_parent_etymon and senseid_parent_etymon[senseid_key] then if has_multiple_senseids then -- Ambiguous senseid: use senseid matched_id = term.id id_exists_in_disambiguation = true elseif has_multiple_ids then -- Unique senseid but ambiguous etymon: use etymon ID matched_id = term.etymon_id or term.id id_exists_in_disambiguation = true end else -- Check if user provided a valid etymon ID if has_multiple_ids and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.id then -- Ambiguous etymon: use etymon ID id_exists_in_disambiguation = true matched_id = term.id break end end end -- Fallback: check resolved etymon_id (e.g. from previous steps) if not id_exists_in_disambiguation and has_multiple_ids and term.etymon_id and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.etymon_id then id_exists_in_disambiguation = true matched_id = term.etymon_id break end end end end end -- Use the matched ID if found if term.override or id_exists_in_disambiguation then part_data.id = matched_id or term.id end table.insert(parts, part_data) part_index = part_index + 1 end end end end if #parts == 0 then return {} end local affix_data = { lang = page_lang, parts = parts, pos = "ศัพท์", sort_key = nil } local affix_categories = M.affix.get_affix_categories_only(affix_data) local result = {} for _, cat in ipairs(affix_categories) do if type(cat) == "table" then table.insert(result, cat.cat) else table.insert(result, cat) end end return result end -- Add borrowing-related categories (top-level only) local function collect_borrowing_categories(categories, page_lang, term, config) if config.borrowing_type == "ยืมมา" then local temp_categories = {} M.etymology.insert_borrowed_cat(temp_categories, page_lang, term.lang) for _, cat in ipairs(temp_categories) do categories[cat] = true end end if config.specialized_borrowing then local result = M.etymology_specialized.specialized_borrowing { bortype = config.specialized_borrowing, lang = page_lang, sources = { term.lang }, terms = { { lang = term.lang, term = "-" } }, notext = true, nocat = false, } for cat_name in result:gmatch("%[%[Category:([^%]]+)%]%]") do categories[cat_name] = true end end end -- Add source-based derivation categories (top-level only) local function collect_source_derivation_categories(categories, page_lang, term, config) if not config.source_category_type then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, borrowing_type = config.source_category_type, nocat = false, } for _, cat in ipairs(temp_categories) do categories[cat] = true end end -- Add source language categories local function collect_source_categories(categories, page_lang, term, chain, get_norm_lang_func) if page_lang:getCode() == get_norm_lang_func(term.lang):getCode() then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = get_norm_lang_func(term.lang), categories = temp_categories, nocat = false, } for _, cat in ipairs(temp_categories) do categories[cat] = true end if chain.inherited then temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = get_norm_lang_func(term.lang), categories = temp_categories, borrowing_type = "สืบทอด", nocat = false, } for _, cat in ipairs(temp_categories) do categories[cat] = true end end end -- Add root/word categories local function collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, chain, get_norm_lang_func, lang_exc, keyword) local pos_types = { root = "ราก", word = "คำ" } -- Determine pos: from term's postype, keyword's pos_override, or args.pos local pos local config = get_keyword_config(keyword, lang_exc) if term.postype then -- Term-level postype modifier takes highest priority pos = term.postype elseif config and config.pos_override then pos = config.pos_override elseif type(term.args) == "table" and term.args.pos then pos = term.args.pos end local pos_type = pos_types[pos] if not pos_type or term.unknown_term then return end -- Skip root/word categories for descendants of affix groups -- if pos_type then -- return -- end local same_language = get_norm_lang_func(page_lang):getFullCode() == get_norm_lang_func(term.lang):getFullCode() -- Skip self-references if same_language and root_title == term.title then return end -- Use makeEntryName to strip diacritics for category names local entry_name = term.lang:makeEntryName(term.title) local lang_name = page_lang:getCanonicalName() local cat_name if chain.passed_through then local etymon_lang_name = export.get_cat_name(term.lang) cat_name = lang_name .. " terms derived from the " .. etymon_lang_name .. " " .. pos_type .. " " .. entry_name else cat_name = lang_name .. " terms belonging to the " .. pos_type .. " " .. entry_name end -- Add ID disambiguation if needed (for roots/words: use etymon_id if resolved via senseid, otherwise use id) local target_ids = available_etymon_ids[term.target_key] local effective_id = term.etymon_id or term.id -- etymon_id if senseid, otherwise id is already an etymon id if target_ids and effective_id then local same_pos_count = 0 for _, id_data in ipairs(target_ids) do if type(id_data) == "table" and id_data.pos == pos then same_pos_count = same_pos_count + 1 end end if same_pos_count > 1 then cat_name = cat_name .. " (" .. effective_id .. ")" end end categories[cat_name] = true end -- Compute chain state for a term based on parent chain and keyword config -- Hyphen patterns for affix detection (regular hyphen + script-specific) local AFFIX_HYPHEN_PATTERN = "[%-%־ـ᠊]" -- regular hyphen, Hebrew maqqef, Arabic tatweel, Mongolian hyphen -- Check if a term is an actual affix (not a non-affix member of an affix group) local function is_actual_affix(term) -- Check explicit aftype modifier if term.aftype then local normalized = aftype_aliases[term.aftype] or term.aftype return normalized ~= "ไม่ใช่หน่วยคำเติม" end -- Check if pos=root (treated as non-affix) if term.args and term.args.pos and (term.args.pos == "root" or term.args.pos == "ราก") then return false end -- Auto-detect by hyphen: prefix ends with -, suffix starts with -, etc. if term.title then local title = term.title -- Strip leading * for reconstructed terms before checking hyphens title = title:gsub("^%*", "") -- Check for hyphens at start or end (handles script-specific hyphens too) if title:match("^" .. AFFIX_HYPHEN_PATTERN) or title:match(AFFIX_HYPHEN_PATTERN .. "$") then return true end end -- Default: not an affix return false end local function compute_category_chain(parent_chain, config, page_lang, term_lang, get_norm_lang_func, parent_term_lang, term) -- Track if we're inside an actual affix (for suppressing root categories on descendants) -- Only set if the term is an actual affix (prefix, suffix, etc.), not a non-affix member local inside_affix = parent_chain.inside_affix if config.affix_categories and term and is_actual_affix(term) then inside_affix = true end -- If no_child_categories is set, disable everything if config.no_child_categories then return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = false, source = false, pos = false, recurse = false, inside_affix = inside_affix, } end local term_is_transitive = is_transitive(config.transitive, page_lang, term_lang) local new_source = parent_chain.source and term_is_transitive -- For CROSS_LANG_NO_INTERNAL_SOURCE: track internal derivation language context -- Check if this term is internal relative to parent term's language (if parent_term_lang provided) -- or relative to page language (if no parent_term_lang) local internal_lang = parent_chain.internal_lang local is_internal_in_context = false if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then local check_lang = parent_term_lang or page_lang local term_lang_code = get_norm_lang_func(term_lang):getCode() local check_lang_code = get_norm_lang_func(check_lang):getCode() if internal_lang then -- Already in an internal derivation context: check if this term is also internal is_internal_in_context = term_lang_code == internal_lang else -- Check if this term is internal relative to parent term (or page if no parent) is_internal_in_context = term_lang_code == check_lang_code end end -- Source chain behavior for CROSS_LANG_NO_INTERNAL_SOURCE if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then if is_internal_in_context then -- Internal derivation new_source = false internal_lang = get_norm_lang_func(term_lang):getCode() else -- Cross-language new_source = parent_chain.source and term_is_transitive internal_lang = nil end end local new_pos = parent_chain.pos return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = parent_chain.inherited and config.inherited_chain, source = new_source, pos = new_pos, internal_lang = internal_lang, recurse = new_source or new_pos, inside_affix = inside_affix, } end function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local page_lang = opts.page_lang local available_etymon_ids = opts.available_etymon_ids local senseid_parent_etymon = opts.senseid_parent_etymon local get_norm_lang_func = opts.get_norm_lang_func local lang_exc = opts.lang_exc local categories = {} local seen = {} local lang_name = page_lang:getCanonicalName() local root_title = data_tree.title -- Collect the tree recursively local function collect(node, parent_chain, is_toplevel) -- Avoid processing same node twice if not node.unknown_term and node.title then local key = node.lang:getFullCode() .. ":" .. (node.title or "") .. ":" .. (node.id or "") if seen[key] then return end seen[key] = true end -- Collect affix categories at top level only if is_toplevel then local affix_cats = collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) for _, cat in ipairs(affix_cats) do categories[lang_name .. " " .. cat] = true end end -- Process each container for _, container in ipairs(node.children or {}) do local keyword = container.keyword local config = get_keyword_config(keyword, lang_exc) -- Skip invalid keywords if config then -- Process each term in the container for _, term in ipairs(container.terms or {}) do local term_chain = compute_category_chain(parent_chain, config, page_lang, term.lang, get_norm_lang_func, node.lang, term) local no_child_categories = config.no_child_categories == true local term_is_transitive = is_transitive(config.transitive, page_lang, term.lang) -- Top-level only processing if is_toplevel then -- Missing/ambiguous etymon tracking if not term.unknown_term and (term.status == M.data.STATUS.MISSING or term.status == M.data.STATUS.REDLINK) then categories[lang_name .. " entries referencing missing etymons"] = true end if not term.unknown_term and term.status == M.data.STATUS.AMBIGUOUS then categories[lang_name .. " entries referencing ambiguous etymons"] = true end -- Top-level category (e.g., "undefined derivations") if config.toplevel_category then categories[lang_name .. " " .. config.toplevel_category] = true end -- Borrowing categories (bor, lbor, slbor, ubor, obor) if config.borrowing_type or config.specialized_borrowing then collect_borrowing_categories(categories, page_lang, term, config) end -- Borrowing categories from <bor>, <lbor>, or <slbor> modifiers on :af terms if keyword == "af" then if term.bor then local bor_config = { borrowing_type = "ยืมมา" } collect_borrowing_categories(categories, page_lang, term, bor_config) elseif term.lbor then local bor_config = { specialized_borrowing = "learned" } collect_borrowing_categories(categories, page_lang, term, bor_config) elseif term.slbor then local bor_config = { specialized_borrowing = "semi-learned" } collect_borrowing_categories(categories, page_lang, term, bor_config) end end -- Source-based derivation categories (sl, calque, pcal) if config.source_category_type then collect_source_derivation_categories(categories, page_lang, term, config) end -- Skip all child categorisation if no_child_categories is set if not no_child_categories then -- Source categories only if transitive if term_is_transitive then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end -- Pos categories always (unless no_child_categories) collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end else -- Below top level, respect the parent chain if parent_chain.source then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end if parent_chain.pos then collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end end -- Recurse into term's children if needed and status allows if term_chain.recurse and (term.status == M.data.STATUS.OK or term.status == M.data.STATUS.INLINE) then collect(term, term_chain, false) end end end end end -- Initial chain state local initial_chain = { passed_through = false, inherited = true, source = true, pos = true, internal_lang = nil, recurse = true, inside_affix = false, } collect(data_tree, initial_chain, true) local cat_list = {} for cat in pairs(categories) do table.insert(cat_list, cat) end return cat_list end return export htszofud5lrq6qfn20awv12aucvth4u มอดูล:category tree/fam/gem 828 2300663 5729206 5688509 2026-07-20T03:42:42Z Octahedron80 267 5729206 Scribunto text/plain local labels = {} ------- GERMANIC VERB CLASSES ------- labels["คำกริยาแข็ง"] = { description = "{{{langname}}} verbs that do not use a dental suffix to mark the past tense and past participle, instead using vowel change ([[ablaut]]) and often a suffix ''-(e)n'' in the past participle.", breadcrumb = "แข็ง", parents = {"คำกริยา★แบ่งตามชนิดการผันรูป"}, } labels["strong verbs"] = labels["คำกริยาแข็ง"] labels["คำกริยาอ่อน"] = { description = "{{{langname}}} verbs that display dental suffixes in their past tense conjugated forms.", breadcrumb = "อ่อน", parents = {"คำกริยา★แบ่งตามชนิดการผันรูป"}, } labels["weak verbs"] = labels["คำกริยาอ่อน"] labels["คำกริยาอดีตกาลสิ้นสุด-ปัจจุบันกาล"] = { description = "{{{langname}}} verbs that inflect in the present tense like the past tense of strong verbs.", breadcrumb = "อดีตกาลสิ้นสุด-ปัจจุบันกาล", parents = {"คำกริยา★แบ่งตามชนิดการผันรูป"}, } labels["preterite-present verbs"] = labels["คำกริยาอดีตกาลสิ้นสุด-ปัจจุบันกาล"] labels["คำกริยาแข็งกลุ่ม 1"] = { description = "Verbs where the [[ablaut]] vowel was followed by ''-y-'' in Proto-Indo-European.", breadcrumb = "กลุ่ม 1", parents = {{name = "คำกริยาแข็ง", sort = "1"}}, } labels["class 1 strong verbs"] = labels["คำกริยาแข็งกลุ่ม 1"] labels["คำกริยาอ่อนกลุ่ม 1"] = { description = "Weak verbs of the first class.", breadcrumb = "กลุ่ม 1", parents = {{name = "คำกริยาอ่อน", sort = "1"}}, } labels["class 1 weak verbs"] = labels["คำกริยาอ่อนกลุ่ม 1"] labels["คำกริยาแข็งกลุ่ม 2"] = { description = "Verbs where the [[ablaut]] vowel was followed by ''-w-'' in Proto-Indo-European.", breadcrumb = "กลุ่ม 2", parents = {{name = "คำกริยาแข็ง", sort = "2"}}, } labels["class 2 strong verbs"] = labels["คำกริยาแข็งกลุ่ม 2"] labels["คำกริยาแข็งกลุ่ม 2a"] = { description = "Verbs where the [[ablaut]] vowel was *eu in Proto-Germanic.", breadcrumb = "กลุ่ม 2a", parents = {{name = "คำกริยาแข็งกลุ่ม 2", sort = "1"}}, } labels["class 2a strong verbs"] = labels["คำกริยาแข็งกลุ่ม 2a"] labels["คำกริยาแข็งกลุ่ม 2b"] = { description = "Verbs where the [[ablaut]] vowel was *ū in Proto-Germanic.", breadcrumb = "กลุ่ม 2b", parents = {{name = "คำกริยาแข็งกลุ่ม 2", sort = "2"}}, } labels["class 2b strong verbs"] = labels["คำกริยาแข็งกลุ่ม 2b"] labels["คำกริยาอ่อนกลุ่ม 2"] = { description = "Weak verbs of the second class.", breadcrumb = "กลุ่ม 2", parents = {{name = "คำกริยาอ่อน", sort = "2"}}, } labels["class 2 weak verbs"] = labels["คำกริยาอ่อนกลุ่ม 2"] labels["คำกริยาอ่อนกลุ่ม 3"] = { description = "Weak verbs of the third class.", breadcrumb = "กลุ่ม 3", parents = {{name = "คำกริยาอ่อน", sort = "3"}}, } labels["class 3 weak verbs"] = labels["คำกริยาอ่อนกลุ่ม 3"] labels["คำกริยาแข็งกลุ่ม 3"] = { description = "Verbs where the [[ablaut]] vowel was followed by a [[consonant cluster]] in Proto-Indo-European.", breadcrumb = "กลุ่ม 3", parents = {{name = "คำกริยาแข็ง", sort = "3"}}, } labels["class 3 strong verbs"] = labels["คำกริยาแข็งกลุ่ม 3"] labels["คำกริยาแข็งกลุ่ม 3a"] = { description = "Verbs where the [[consonant cluster]] begins with a nasal consonant.", breadcrumb = "กลุ่ม 3a", parents = {{name = "คำกริยาแข็งกลุ่ม 3", sort = "1"}}, } labels["class 3a strong verbs"] = labels["คำกริยาแข็งกลุ่ม 3a"] labels["คำกริยาแข็งกลุ่ม 3b"] = { description = "Verbs where the [[consonant cluster]] begins with a lateral consonant or velar fricative.", breadcrumb = "กลุ่ม 3b", parents = {{name = "คำกริยาแข็งกลุ่ม 3", sort = "2"}}, } labels["class 3b strong verbs"] = labels["คำกริยาแข็งกลุ่ม 3b"] labels["คำกริยาแข็งกลุ่ม 3c"] = { description = "Verbs where the [[consonant cluster]] begins with a rhotic consonant.", breadcrumb = "กลุ่ม 3c", parents = {{name = "คำกริยาแข็งกลุ่ม 3", sort = "3"}}, } labels["class 3c strong verbs"] = labels["คำกริยาแข็งกลุ่ม 3c"] labels["คำกริยาแข็งกลุ่ม 4"] = { description = "Verbs where the [[ablaut]] vowel was followed by a [[sonorant]] (''m'', ''n'', ''l'', ''r'') but no other consonant in Proto-Indo-European.", breadcrumb = "กลุ่ม 4", parents = {{name = "คำกริยาแข็ง", sort = "4"}}, } labels["class 4 strong verbs"] = labels["คำกริยาแข็งกลุ่ม 4"] labels["คำกริยาอ่อนกลุ่ม 4"] = { description = "Weak verbs of the fourth class.", breadcrumb = "กลุ่ม 4", parents = {{name = "คำกริยาอ่อน", sort = "4"}}, } labels["class 4 weak verbs"] = labels["คำกริยาอ่อนกลุ่ม 4"] labels["คำกริยาแข็งกลุ่ม 5"] = { description = "Verbs where the [[ablaut]] vowel was followed by [[consonant]] other than a [[sonorant]] in Proto-Indo-European.", breadcrumb = "กลุ่ม 5", parents = {{name = "คำกริยาแข็ง", sort = "5"}}, } labels["class 5 strong verbs"] = labels["คำกริยาแข็งกลุ่ม 5"] labels["คำกริยาแข็งกลุ่ม 6"] = { description = "The Proto-Indo-European origin of this class is not securely known. It contains verbs with the stem vowel ''-a-'', except those where it is followed by a sonorant and another consonant (this combination was considered a diphthong in PIE and therefore belonged to class 7).", breadcrumb = "กลุ่ม 6", parents = {{name = "คำกริยาแข็ง", sort = "6"}}, } labels["class 6 strong verbs"] = labels["คำกริยาแข็งกลุ่ม 6"] labels["คำกริยาแข็งกลุ่ม 7"] = { description = "Verbs that retained their reduplication in the past tense in Proto-Germanic.", breadcrumb = "กลุ่ม 7", parents = {{name = "คำกริยาแข็ง", sort = "7"}}, } labels["class 7 strong verbs"] = labels["คำกริยาแข็งกลุ่ม 7"] labels["คำกริยาแข็งกลุ่ม 7a"] = { description = "Class 7 strong verbs where the root vowel was ''*ai'' in Proto-Germanic, analogous to class 1.", breadcrumb = "กลุ่ม 7a", parents = {{name = "คำกริยาแข็งกลุ่ม 7", sort = "a"}}, } labels["class 7a strong verbs"] = labels["คำกริยาแข็งกลุ่ม 7a"] labels["คำกริยาแข็งกลุ่ม 7b"] = { description = "Class 7 strong verbs where the root vowel was ''*au'' in Proto-Germanic, analogous to class 2.", breadcrumb = "กลุ่ม 7b", parents = {{name = "คำกริยาแข็งกลุ่ม 7", sort = "b"}}, } labels["class 7b strong verbs"] = labels["คำกริยาแข็งกลุ่ม 7b"] labels["คำกริยาแข็งกลุ่ม 7c"] = { description = "Class 7 strong verbs where the root vowel was ''*a'' followed by a [[consonant cluster]] in Proto-Germanic, analogous to class 3.", breadcrumb = "กลุ่ม 7c", parents = {{name = "คำกริยาแข็งกลุ่ม 7", sort = "c"}}, } labels["class 7c strong verbs"] = labels["คำกริยาแข็งกลุ่ม 7c"] labels["คำกริยาแข็งกลุ่ม 7d"] = { description = "Class 7 strong verbs where the root vowel was ''*ē'' in Proto-Germanic.", breadcrumb = "กลุ่ม 7d", parents = {{name = "คำกริยาแข็งกลุ่ม 7", sort = "d"}}, } labels["class 7d strong verbs"] = labels["คำกริยาแข็งกลุ่ม 7d"] labels["คำกริยาแข็งกลุ่ม 7e"] = { description = "Class 7 strong verbs where the root vowel was ''*ō'' in Proto-Germanic.", breadcrumb = "กลุ่ม 7e", parents = {{name = "คำกริยาแข็งกลุ่ม 7", sort = "e"}}, } labels["class 7e strong verbs"] = labels["คำกริยาแข็งกลุ่ม 7e"] -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "หมวดหมู่ย่อยของศัพท์แบ่งตามประเภทไวยากรณ์แบ่งตามภาษา" end end return {LABELS = labels} 9ywg1y1wivxxlyjnxitpdyxxhpbkhs4 มอดูล:ber-headword 828 2324036 5729205 5684531 2026-07-20T03:41:05Z Octahedron80 267 5729205 Scribunto text/plain -- Based on [[Module:ar-headword]] by Benwing2 -- Adapted by Fenakhay local lang local export = {} local pos_functions = {} local force_cat = false local function otherscript(inflections, args, script) local pagename = mw.loadData("Module:headword/data").pagename local sc = lang:findBestScript(pagename) if sc:getCode() == "Latn" then if script == "Tfng" then local Tfng_sc = require("Module:scripts").getByCode("Tfng") local inflection = { label = "รูปสะกดอักษร" .. Tfng_sc:getCanonicalName() } if not tifinagh_spelling then tifinagh_spelling = require("Module:Latn-Tfng-translit").tr( require("Module:links").remove_links(pagename), lang:getCode(), sc:getCode()) end table.insert(inflection, { term = tifinagh_spelling, sc = Tfng_sc }) table.insert(inflections, inflection) end if script == "Arab" then local Arab_sc = require("Module:scripts").getByCode("Arab") local inflection = { label = "รูปสะกดอักษร" .. Arab_sc:getCanonicalName() } if not arabic_spelling then arabic_spelling = require("Module:shi-Latn-Arab-translit").tr( require("Module:links").remove_links(pagename), lang:getCode(), sc:getCode()) end table.insert(inflection, { term = arabic_spelling, sc = Arab_sc }) table.insert(inflections, inflection) end end end -- The main entry point. function export.show(frame) 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 parargs = frame:getParent().args local params = { ["head"] = { list = true, disallow_holes = true }, ["tr"] = { list = true, allow_holes = true }, ["id"] = {}, ["notfng"] = { type = "boolean" }, ["noarab"] = { type = "boolean" }, ["nolinkhead"] = { type = "boolean" }, ["json"] = { type = "boolean" }, ["pagename"] = {}, -- for testing } if frame.args["lang"] then lang = require("Module:languages").getByCode(frame.args["lang"]) else error("Please specify a language code.") end if pos_functions[poscat_th] then for key, val in pairs(pos_functions[poscat_th].params) do params[key] = val end end local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local enable_auto_translit = false if (lang:findBestScript(pagename):getCode() == "Tfng") then enable_auto_translit = true end local mainform = { ["tzm"] = "Tfng", ["zgh"] = "Tfng" } local data = { lang = lang, pos_category = poscat_th, categories = {}, heads = {}, genders = {}, inflections = { enable_auto_translit = enable_auto_translit }, pagename = pagename, id = args.id, sort_key = args.sort, force_cat_output = force_cat, altform = lang:findBestScript(pagename):getCode() ~= (mainform[lang:getCode()] or "Latn") } local heads = args.head for i = 1, #heads do table.insert(data.heads, { term = heads[i], tr = args.tr[i], }) end if pos_functions[poscat_th] then pos_functions[poscat_th].func(args, data) end local auto_generate_tifinagh = { ["rif"] = true, ["shi"] = true, ["sjs"] = true } local auto_generate_arabic = { ["shi"] = true } if args.notfng ~= true and auto_generate_tifinagh[lang:getCode()] then otherscript(data.inflections, args, "Tfng") end if args.noarab ~= true and auto_generate_arabic[lang:getCode()] then otherscript(data.inflections, args, "Arab") end if args.json then return require("Module:JSON").toJSON(data) end return require("Module:headword").full_headword(data) end local function getargs(args, argpref) local forms = {} for i, form in ipairs(args[argpref]) do local translit = args[argpref .. "tr"][i] local gender = args[argpref .. "g"][i] local gender2 = args[argpref .. "g2"][i] local genderlist = (gender or gender2) and { gender, gender2 } or nil table.insert(forms, { term = form, tr = translit, genders = genderlist }) end return forms end local function add_infl_params(params, argpref, defgender) params[argpref] = { list = true, disallow_holes = true } params[argpref .. "\1tr"] = { list = true, allow_holes = true } params[argpref .. "\1g"] = { list = true, default = defgender } params[argpref .. "\1g2"] = { list = true } end local function handle_infl(args, data, argpref, label, generate_default) local newinfls = getargs(args, argpref) if #newinfls == 0 and generate_default then newinfls = { { term = "+" } } end if generate_default then local saw_plus = false for _, newinfl in ipairs(newinfls) do if newinfl.term == "+" then saw_plus = true break end end if saw_plus then local newnewinfls = {} for _, newinfl in ipairs(newinfls) do if newinfl.term == "+" then local definfls = generate_default(args, data) for _, definfl in ipairs(definfls) do table.insert(newnewinfls, definfl) end else table.insert(newnewinfls, newinfl) end end newinfls = newnewinfls end end if #newinfls > 0 then newinfls.label = label table.insert(data.inflections, newinfls) end end local function add_all_infl_params(params, argpref) if argpref ~= "" then add_infl_params(params, argpref) end add_infl_params(params, argpref .. "cons") end local function handle_all_infl(args, data, argpref, label, generate_default) if argpref ~= "" then handle_infl(args, data, argpref, label, generate_default) end local labelsp = label == "" and "" or label .. " " handle_infl(args, data, argpref .. "cons", labelsp .. "construct state") end local function handle_noun_plural(args, data) if args.pl[1] == "-" then table.insert(data.inflections, { label = "โดยปกติ[[ภาคผนวก:อภิธานศัพท์#นับไม่ได้|นับไม่ได้]]" }) table.insert(data.categories, "คำนามนับไม่ได้" .. lang:getCategoryName()) else handle_all_infl(args, data, "pl", "พหูพจน์") end end local valid_bare_genders = { false, "m", "f", "mf" } local valid_bare_numbers = { false, "p", "s" } local valid_genders = {} for _, gender in ipairs(valid_bare_genders) do for _, number in ipairs(valid_bare_numbers) do local parts = {} local function ins_part(part) if part then table.insert(parts, part) end end ins_part(gender) ins_part(number) local full_gender = table.concat(parts, "-") valid_genders[full_gender == "" and "?" or full_gender] = true end end local function add_gender_params(params, default) params[1] = { list = "g", default = default or "?" } end local function handle_gender(args, data, nonlemma) for _, g in ipairs(args[1]) do if valid_genders[g] then table.insert(data.genders, g) else error("Unrecognized gender: " .. g) end end if nonlemma then return end end local adj_inflections = { { pref = "", label = "" }, { pref = "f", label = "เพศหญิง" }, { pref = "pl", label = "เพศชายพหูพจน์" }, { pref = "fpl", label = "เพศหญิงพหูพจน์" }, { pref = "cpl", label = "เพศรวมพหูพจน์" }, { pref = "dim", label = "ตัวบอกความเล็ก" }, } local function create_infl_list_params(infl_list) local params = {} for _, infl in ipairs(infl_list) do if infl.basic then add_infl_params(params, infl.pref) else add_all_infl_params(params, infl.pref) end end return params end local function handle_infl_list_args(args, data, infl_list) for _, infl in ipairs(infl_list) do if infl.handle then infl.handle(args, data) elseif infl.basic then handle_infl(args, data, infl.pref, infl.label, infl.generate_default) else handle_all_infl(args, data, infl.pref, infl.label, infl.generate_default) end end end pos_functions["คำคุณศัพท์"] = { params = (function() local params = create_infl_list_params(adj_inflections) return params end)(), func = function(args, data) handle_infl_list_args(args, data, adj_inflections) end } local sing_coll_noun_inflections = { { pref = "", label = "" }, { pref = "pl", label = "พหูพจน์", handle = handle_noun_plural }, { pref = "dim", label = "ตัวบอกความเล็ก" }, } local function handle_sing_coll_noun_infls(args, data, otherinfl, otherlabel) handle_gender(args, data) handle_infl(args, data, otherinfl, otherlabel) handle_infl_list_args(args, data, sing_coll_noun_inflections) end local function get_sing_coll_noun_params(defgender, otherinfl, othergender) local params = create_infl_list_params(sing_coll_noun_inflections) add_gender_params(params, defgender) add_infl_params(params, otherinfl, othergender) return params end pos_functions["คำสมุหนาม"] = { params = get_sing_coll_noun_params("m", "sing", "f"), func = function(args, data) data.pos_category = "คำนาม" table.insert(data.categories, "คำสมุหนาม" .. lang:getCategoryName()) table.insert(data.inflections, { label = "คำสมุหนาม" }) handle_sing_coll_noun_infls(args, data, "sing", "คำเอกนาม") end } pos_functions["คำเอกนาม"] = { params = get_sing_coll_noun_params("f", "coll", "m"), func = function(args, data) data.pos_category = "คำนาม" table.insert(data.categories, "คำเอกนาม" .. lang:getCategoryName()) table.insert(data.inflections, { label = "คำเอกนาม" }) handle_sing_coll_noun_infls(args, data, "coll", "คำสมุหนาม") end } local noun_inflections = { { pref = "", label = "" }, { pref = "d", label = "ทวิพจน์" }, { pref = "pl", label = "พหูพจน์", handle = handle_noun_plural }, { pref = "dim", label = "ตัวบอกความเล็ก" }, { pref = "f", label = "เพศหญิงเทียบเท่า" }, { pref = "m", label = "เพศชายเทียบเท่า" }, } local function get_noun_params() local params = create_infl_list_params(noun_inflections) add_gender_params(params) return params end local function handle_noun_infls(args, data) handle_gender(args, data) handle_infl_list_args(args, data, noun_inflections) end pos_functions["คำนาม"] = { params = get_noun_params(), func = handle_noun_infls, } local numeral_inflections = { { pref = "", label = "" }, { pref = "f", label = "เพศหญิง" }, } local function get_numeral_params() local params = create_infl_list_params(numeral_inflections) add_gender_params(params) return params end pos_functions["เลข"] = { params = get_numeral_params(), func = function(args, data) table.insert(data.categories, "เลขเชิงการนับ" .. lang:getCategoryName()) handle_gender(args, data) handle_infl_list_args(args, data, numeral_inflections) end } local particle_inflections = { { pref = "", label = "" }, { pref = "f", label = "เพศหญิง" }, } local function get_particle_params() local params = create_infl_list_params(particle_inflections) add_gender_params(params) return params end pos_functions["คำอนุภาค"] = { params = get_particle_params(), func = function(args, data) table.insert(data.categories, "คำอนุภาค" .. lang:getCategoryName()) handle_gender(args, data) handle_infl_list_args(args, data, particle_inflections) end } pos_functions["คำวิสามานยนาม"] = { params = get_noun_params(), func = handle_noun_infls, } local pronoun_inflections = { { pref = "", label = "" }, { pref = "pl", label = "พหูพจน์", handle = handle_noun_plural }, { pref = "f", label = "เพศหญิง" }, } local function get_pronoun_params() local params = create_infl_list_params(pronoun_inflections) add_gender_params(params) return params end pos_functions["คำสรรพนาม"] = { params = get_pronoun_params(), func = function(args, data) handle_gender(args, data) handle_infl_list_args(args, data, pronoun_inflections) end } local verb_inflections = { { pref = "cont", label = "intensive aorist" }, { pref = "aorist", label = "aorist" }, { pref = "pret", label = "อดีตกาลสิ้นสุด" }, { pref = "negpret", label = "อดีตกาลสิ้นสุดปฏิเสธ" }, { pref = "vn", label = "คำกริยานาม" }, } local function get_verb_params() local params = create_infl_list_params(verb_inflections) return params end local function handle_verb_infls(args, data) handle_infl_list_args(args, data, verb_inflections) end pos_functions["คำกริยา"] = { params = get_verb_params(), func = handle_verb_infls, } return export cmtdkes5tj7428bzbuq0p3cqhzvwfwq sollen 0 2333488 5729103 5728619 2026-07-20T02:08:42Z Ponpan 693 /* คำกริยา */ 5729103 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA|ó}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|sollar}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|sollar}} == ภาษาดัตช์ == === รากศัพท์ === จาก{{inh|nl|dum|sollen}}, จาก{{der|nl|frm|soller|t=เล่นเกมลูกบอล}}, จาก{{der|nl|fro|soule|t=ลูกบอลไม้หรือหนัง}}, ต้นกำเนิดแรกสุดไม่แน่ชาติ แต่เป็นไปได้ว่ายืมจาก{{der|nl|gem|-}}, จาก{{der|nl|gem-pro|*kūlǭ|t=ชน}};<ref>Per FEW, TLF.</ref> เทียบ{{cog|de|Keule|t=ไม้ตี}} และ{{cog|nl|kogel|t=วัตถุทรงกลม}} === การออกเสียง === * {{IPA|nl|/ˈsɔlə(n)/}} * {{audio|nl|Nl-sollen.ogg}} === คำกริยา === {{nl-verb}} # [[ขว้าง]] (ลูกบอล) ไป ๆ มา ๆ # [[เล่น]], [[ทำ]][[ยุ่ง]] #: {{usex|nl|We laten niet met ons '''sollen'''!|We won't let anyone '''mess''' with us!}} ==== การผันรูป ==== {{nl-conj-wk|sol|solle}} === อ้างอิง === <references/> == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|inh=1}} จาก{{inh|de|gmh|scholn}}, {{m|gmh|schuln}} จาก{{inh|de|goh|sculan}}, {{m|goh|skulan}}, {{m|goh|scolan}} จาก{{inh|de|gmw-pro|*skulan}} ร่วมเชื้อสายกับ{{cog|en|shall}} และ {{m|en|should}}, {{cog|nl|zullen}}, {{cog|da|skulle}}, {{cog|sv|skall|}} และ {{m|sv|skulle}}, {{cog|yi|זאָลן}} === การออกเสียง === * {{IPA|de|/ˈzɔlən/|[zɔln̩]|aa=Germany}} ** {{audio|de|De-sollen.ogg|aa=Germany}} * {{IPA|de|/ˈzɔlɛn/|[zɔln̩]|aa=Austria,South German,Switzerland}} ** {{audio|de|De-at-sollen.ogg|aa=Austria}} * {{audio|de|De-sollen2.ogg|a=<<Germany>> (<<Berlin>>)}} * {{hyph|de|sol|len}} === คำกริยา === {{de-verb|sollen<pretpres.soll#sollte,gesollt>}} # {{lb|de|auxiliary}} [[ควร]], [[ควร]][[จะ]], [[ต้อง]] {{gloss|มีหน้าที่หรือข้อผูกมัดที่จะต้องทำ}} #: {{uxi|de|Ich '''soll''' das machen.|t=ฉัน'''ควรจะ'''ทำสิ่งนั้น}} #: {{uxi|de|Ich '''sollte''' das nicht tun.|t=ฉันไม่'''ควร'''ทำสิ่งนั้น}} # {{lb|de|auxiliary}} ได้รับ[[คำแนะนำ]]หรือได้รับ[[คำขอร้อง]]ให้ทำบางสิ่ง # {{lb|de|auxiliary}} มี[[กำหนด]]หรือ[[ตั้งใจ]]ที่จะทำบางสิ่ง # {{lb|de|auxiliary}} ว่ากันว่า, มี[[ข่าวลือ]]ว่า, ได้รับ[[รายงาน]]ว่า #: {{uxi|de|Es '''soll''' da viele Leute geben.|t=ว่ากันว่าที่นั่นมีคนอยู่เยอะมาก}} # {{lb|de|auxiliary|in a subordinate clause in the simple past tense}} [[จะ]], [[ก็]] {{n-g|ใช้แสดงเหตุการณ์ในอดีตที่จะเกิดขึ้นหลังจากเวลาในประโยคหลัก}} # {{lb|de|auxiliary|in a subordinate clause in the subjunctive}} [[หาก]], [[ถ้า]][[หาก]] {{n-g|ใช้ในประโยคเงื่อนไขเพื่อแสดงสถานการณ์สมมติที่มีโอกาสเกิดขึ้นได้ยาก}} ==== หมายเหตุการใช้ ==== * ''sollen'' และ {{m|de|müssen}} ถึงแม้ทั้งสองสามารถแสดงหน้าที่ที่สั่งโดยผู้อื่น แต่มีความแตกต่างกันคล้ายกับการใช้คำว่า "ควร" และ "ต้อง" ในภาษาไทย: ** ''sollen'' ใช้แสดงหน้าที่ทางศีลธรรม ข้อแนะนำ หรือคำสั่งของผู้อื่นที่ไม่มีแรงบังคับโดยตรง ** ''müssen'' (ต้อง/จำเป็นต้อง) ใช้แสดงความจำเป็นที่หลีกเลี่ยงไม่ได้ หรือคำสั่งที่มีอำนาจบังคับเด็ดขาดและมีผลกระทบชัดเจนหากไม่ปฏิบัติตาม * รูปกริยากลางที่ตามมาสามารถละไว้ได้หากความหมายมีความชัดเจนอยู่แล้วตามสถานการณ์ โดยเฉพาะอย่างยิ่งกับคำว่า ''tun'' (ทำ) ** {{uxi|de|Was soll ich heute?|t=วันนี้ฉันควรทำอะไรดี?}} ==== การผันรูป ==== {{de-conj|sollen<pretpres.soll#sollte,gesollt>}} === อ่านเพิ่ม === * {{R:de:DWDS}} * {{R:de:UniLeipzig}} * {{R:de:Duden}} * {{R:de:OpenThesaurus}} == ภาษาลักเซมเบิร์ก == === รากศัพท์ === {{dercat|lb|gem-pro|inh=1}} จาก{{inh|lb|gmw-cfr|solle}}, จาก{{inh|lb|gmh|scholen}}, จาก{{inh|lb|goh|skulan}}, จาก{{inh|lb|gmw-pro|*skulan}} === การออกเสียง === * {{IPA|lb|/ˈzolən/}} === คำกริยา === {{lb-verb|soll|sollen}} # [[ควร]], [[น่า]], [[จะ]] ==== การผันรูป ==== {{rfinfl|lb|verb}} {{cln|lb|คำกริยาแสดงมาลา}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|sollar}} 9g4j03z7vwi9ucap98d18nkawuud1yt ผู้ใช้:ZilentFyld/Germanic word lists 2 2333691 5729014 2026-07-19T15:41:12Z ZilentFyld 6541 สร้างหน้าด้วย "Note: copied from [[:en:Appendix:Germanic word lists]] The following '''word lists of {{w|Germanic languages}}''' are based on data from the [http://www.northeuralex.org/ NorthEuraLex] database (version 0.9).<ref>Dellert, J., Daneyko, T., Münch, A. et al. NorthEuraLex: a wide-coverage lexical database of Northern Eurasia. ''Lang Resources & Evaluation'' '''54''', 273–301 (2020). https://doi.org/10.1007/s10579-019-09480-6</ref> ==Lists== {| clas..." 5729014 wikitext text/x-wiki Note: copied from [[:en:Appendix:Germanic word lists]] The following '''word lists of {{w|Germanic languages}}''' are based on data from the [http://www.northeuralex.org/ NorthEuraLex] database (version 0.9).<ref>Dellert, J., Daneyko, T., Münch, A. et al. NorthEuraLex: a wide-coverage lexical database of Northern Eurasia. ''Lang Resources & Evaluation'' '''54''', 273–301 (2020). https://doi.org/10.1007/s10579-019-09480-6</ref> ==Lists== {| class="wikitable sortable" ! No. ! [[English]] ! [[German]] ! [[Dutch]] ! [[Swedish]] ! [[Danish]] ! [[Norwegian]] ([[Bokmål]]) ! [[Icelandic]] |- | 1 | [[eye]] | [[Auge]] | [[oog]] | [[öga]] | [[øje]] | [[øye]] | [[auga]] |- | 2 | [[ear]] | [[Ohr]] | [[oor]] | [[öra]] | [[øre]] | [[øre]] | [[eyra]] |- | 3 | [[nose]] | [[Nase]] | [[neus]] | [[näsa]] | [[næse]] | [[nese]] | [[nef]] |- | 4 | [[mouth]] | [[Mund]] | [[mond]] | [[mun]] | [[mund]] | [[munn]] | [[munnur]] |- | 5 | [[tooth]] | [[Zahn]] | [[tand]] | [[tand]] | [[tand]] | [[tann]] | [[tönn]] |- | 6 | [[tongue]] | [[Zunge]] | [[tong]] | [[tunga]] | [[tunge]] | [[tunge]] | [[tunga]] |- | 7 | [[lip]] | [[Lippe]] | [[lip]] | [[läpp]] | [[læbe]] | [[leppe]] | [[vör]] |- | 8 | [[cheek]] | [[Wange]] | [[wang]] | [[kind]] | [[kind]] | [[kinn]] | [[kinn]]; [[vangi]] |- | 9 | [[face]] | [[Gesicht]] | [[gelaat]]; [[gezicht]] | [[syn]]; [[ansikte]] | [[ansigt]] | [[fjes]]; [[ansikt]] | [[andlit]] |- | 10 | [[forehead]] | [[Stirn]] | [[voorhoofd]] | [[panna]] | [[pande]] | [[panne]] | [[enni]] |- | 11 | [[hair]] | [[Haar]] | [[haar]] | [[hår]] | [[hår]] | [[hår]] | [[hár]] |- | 12 | [[moustache]] | [[Schnurrbart]] | [[snor]] | [[mustasch]] | [[overskæg]] | [[bart]] | [[yfirskegg]] |- | 13 | [[beard]] | [[Bart]] | [[baard]] | [[skägg]] | [[skæg]] | [[skjegg]] | [[skegg]] |- | 14 | [[chin]] | [[Kinn]] | [[kin]] | [[haka]] | [[hage]] | [[hake]] | [[haka]] |- | 15 | [[jaw]] | [[Kiefer]] ([[Anatomie]]) | [[kaak]] | [[käke]] | [[kæbe]] | [[kjeve]] | [[kjálki]]; [[skoltur]] |- | 16 | [[throat]] | [[Kehle]] | [[keel]]; [[strot]] | [[strupe]] | [[strube]] | [[strupe]] | [[kverk]] |- | 17 | [[neck]] | [[Hals]] | [[hals]] | [[hals]] | [[hals]] | [[hals]] | [[háls]] |- | 18 | [[nape]] | [[Genick]] | [[nek]] | [[nacke]] | [[nakke]] | [[nakke]] | [[hnakki]] |- | 19 | [[head]] | [[Kopf]] | [[hoofd]] | [[huvud]] | [[hoved]] | [[hode]] | [[höfuð]] |- | 20 | [[back]] | [[Rücken]] | [[rug]] | [[rygg]] | [[ryg]] | [[rygg]] | [[hryggur]] |- | 21 | [[belly]] | [[Bauch]] | [[buik]] | [[buk]]; [[mage]] | [[mave]] | [[buk]]; [[mage]] | [[kviður]] |- | 22 | [[navel]] | [[Nabel]] | [[navel]] | [[navel]] | [[navle]] | [[navle]] | [[nafli]] |- | 23 | [[bosom]] | [[Busen]] | [[boezem]] | [[barm]] | [[barm]] | [[barm]] | [[barmur]] |- | 24 | [[breast]] | [[Brust]] | [[borst]] | [[bröst]] | [[bryst]] | [[bryst]] | [[brjóst]] |- | 25 | [[shoulder]] | [[Schulter]] | [[schouder]] | [[skuldra]] | [[skulder]] | [[skulder]] | [[öxl]] |- | 26 | [[arm]] | [[Arm]] | [[arm]] | [[arm]] | [[arm]] | [[arm]] | [[armur]] |- | 27 | [[elbow]] | [[Ellenbogen]] | [[elleboog]] | [[armbåge]] | [[albue]] | [[albue]] | [[olnbogi]] |- | 28 | [[hand]] | [[Hand]] | [[hand]] | [[hand]] | [[hånd]] | [[hånd]] | [[hönd]] |- | 29 | [[palm]] | [[Handfläche]] | [[handpalm]] | [[handflata]] | [[håndflade]] | [[håndflate]] | [[lófi]] |- | 30 | [[finger]] | [[Finger]] | [[vinger]] | [[finger]] | [[finger]] | [[finger]] | [[fingur]] |- | 31 | [[fingernail]] | [[Fingernagel]] | [[nagel]] | [[fingernagel]] | [[fingernegl]] | [[fingernegl]] | [[fingurnögl]] |- | 32 | [[nail]] | [[Nagel]] ([[Anatomie]]) | [[nagel]] | [[nagel]] | [[negl]] | [[negl]] | [[nögl]] |- | 33 | [[toe]] | [[Zeh]] | [[teen]] | [[tå]] | [[tå]] | [[tå]] | [[tá]] |- | 34 | [[foot]] | [[Fuß]] | [[voet]] | [[fot]] | [[fod]] | [[fot]] | [[fótur]] |- | 35 | [[heel]] | [[Ferse]] | [[hak]]; [[hiel]] | [[häl]] | [[hæl]] | [[hæl]] | [[hæll]] |- | 36 | [[knee]] | [[Knie]] | [[knie]] | [[knä]] | [[knæ]] | [[kne]] | [[kné]] |- | 37 | [[thigh]] | [[Oberschenkel]] | [[dij]] | [[lår]] | [[lår]] | [[lår]] | [[læri]] |- | 38 | [[leg]] | [[Bein]] | [[been]] | [[ben]] | [[ben]] | [[bein]] | [[fótleggur]] |- | 39 | [[body]] | [[Körper]] | [[lichaam]] | [[kropp]] | [[krop]]; [[legeme]] | [[kropp]]; [[legeme]] | [[búkur]]; [[líkami]] |- | 40 | [[skin]] | [[Haut]] | [[huid]] | [[hud]]; [[skinn]] | [[hud]] | [[hud]]; [[skinn]] | [[húð]]; [[skinn]] |- | 41 | [[blood]] | [[Blut]] | [[bloed]] | [[blod]] | [[blod]] | [[blod]] | [[blóð]] |- | 42 | [[vein]] | [[Ader]] | [[ader]] | [[åder]] | [[åre]] | [[åre]] | [[æð]] |- | 43 | [[sinew]] | [[Sehne]] | [[pees]] | [[sena]] | [[sene]] | [[sene]] | [[sin]] |- | 44 | [[bone]] | [[Knochen]] | [[bot]]; [[been]]; [[knook]] | [[ben]] | [[ben]] | [[bein]]; [[knokkel]] | [[bein]] |- | 45 | [[brain]] | [[Gehirn]] | [[hersenen]] | [[hjärna]] | [[hjerne]] | [[hjerne]] | [[heili]] |- | 46 | [[heart]] | [[Herz]] | [[hart]] | [[hjärta]] | [[hjerte]] | [[hjerte]] | [[hjarta]] |- | 47 | [[stomach]] | [[Magen]] | [[maag]] | [[mage]] | [[mave]] | [[mage]] | [[magi]] |- | 48 | [[liver]] | [[Leber]] | [[lever]] | [[lever]] | [[lever]] | [[lever]] | [[lifur]] |- | 49 | [[breath]] | [[Atem]] | [[adem]] | [[anda]]; [[andedräkt]] | [[ånde]] | [[pust]] | [[andi]]; [[andardráttur]] |- | 50 | [[hunger]] | [[Hunger]] | [[honger]] | [[svält]]; [[hunger]] | [[sult]] | [[sult]] | [[hungur]] |- | 51 | [[tear]] | [[Träne]] | [[traan]] | [[tår]] | [[tåre]] | [[tåre]] | [[tár]] |- | 52 | [[flavour]] | [[Geschmack]] | [[smaak]] | [[smak]] | [[smag]] | [[smak]] | [[smekkur]] |- | 53 | [[odour]] | [[Geruch]] | [[geur]] | [[lukt]] | [[lugt]] | [[lukt]] | [[lykt]] |- | 54 | [[sleep]] | [[Schlaf]] | [[slaap]] | [[sömn]] | [[søvn]] | [[søvn]] | [[svefn]] |- | 55 | [[dream]] | [[Traum]] | [[droom]] | [[dröm]] | [[drøm]] | [[drøm]] | [[draumur]] |- | 56 | [[sky]] | [[Himmel]] | [[hemel]] | [[himmel]] | [[himmel]] | [[himmel]] | [[himinn]] |- | 57 | [[sun]] | [[Sonne]] | [[zon]] | [[sol]] | [[sol]] | [[sol]] | [[sól]] |- | 58 | [[moon]] | [[Mond]] | [[maan]] | [[måne]] | [[måne]] | [[måne]] | [[tungl]] |- | 59 | [[star]] | [[Stern]] | [[ster]] | [[stjärna]] | [[stjerne]] | [[stjerne]] | [[stjarna]] |- | 60 | [[air]] | [[Luft]] | [[lucht]] | [[luft]] | [[luft]] | [[luft]] | [[loft]] |- | 61 | [[wind]] | [[Wind]] | [[wind]] | [[vind]] | [[vind]] | [[vind]] | [[vindur]] |- | 62 | [[wave]] | [[Welle]] | [[golf]] | [[våg]]; [[bölja]] | [[bølge]] | [[bølge]] | [[alda]]; [[bylgja]] |- | 63 | [[water]] | [[Wasser]] | [[water]] | [[vatten]] | [[vand]] | [[vann]] | [[vatn]] |- | 64 | [[stone]] | [[Stein]] | [[steen]] | [[sten]] | [[sten]] | [[stein]] | [[steinn]] |- | 65 | [[ground]] | [[Boden]] | [[grond]] | [[mark]] | [[jord]] | [[bakke]] | [[botn]] |- | 66 | [[earth]] | [[Erde]] | [[aarde]] | [[jord]] | [[jord]] | [[jord]] | [[jörð]] |- | 67 | [[dust]] | [[Staub]] | [[stof]] | [[damm]] | [[støv]] | [[støv]] | [[ryk]]; [[duft]] |- | 68 | [[smoke]] | [[Rauch]] | [[rook]] | [[rök]] | [[røg]] | [[røyk]] | [[reykur]] |- | 69 | [[spark]] | [[Funke]] | [[vonk]] | [[gnista]] | [[gnist]] | [[gnist]] | [[neisti]] |- | 70 | [[fire]] | [[Feuer]] | [[vuur]] | [[eld]] | [[ild]] | [[ild]] | [[eldur]] |- | 71 | [[light]] | [[Licht]] | [[licht]] | [[ljus]] | [[lys]] | [[lys]] | [[ljós]] |- | 72 | [[shadow]] | [[Schatten]] | [[schaduw]] | [[skugga]] | [[skygge]] | [[skygge]] | [[skuggi]] |- | 73 | [[weather]] | [[Wetter]] | [[weer]] | [[väder]] | [[vejr]] | [[vær]] | [[veður]] |- | 74 | [[fog]] | [[Nebel]] | [[mist]]; [[nevel]] | [[dimma]]; [[töcken]] | [[tåge]] | [[tåke]] | [[þoka]] |- | 75 | [[cloud]] | [[Wolke]] | [[wolk]] | [[sky]]; [[moln]] | [[sky]] | [[sky]] | [[ský]] |- | 76 | [[rain]] | [[Regen]] | [[regen]] | [[regn]] | [[regn]] | [[regn]] | [[regn]] |- | 77 | [[snow]] | [[Schnee]] | [[sneeuw]] | [[snö]] | [[sne]] | [[snø]] | [[snjór]] |- | 78 | [[ice]] | [[Eis]] | [[ijs]] | [[is]] | [[is]] | [[is]] | [[ís]] |- | 79 | [[frost]] | [[Frost]] | [[vorst]] | [[frost]] | [[frost]] | [[frost]] | [[frost]] |- | 80 | [[chill]] | [[Kälte]] | [[kou]]; [[koude]] | [[köld]] | [[kulde]] | [[kulde]] | [[kuldi]] |- | 81 | [[heat]] | [[Hitze]] | [[hitte]] | [[hetta]] | [[hede]] | [[hete]] | [[hiti]] |- | 82 | [[hoarfrost]] | [[Raureif]] | [[rijp]] | [[rimfrost]] | [[rimfrost]] | [[rimfrost]] | [[hrím]] |- | 83 | [[rainbow]] | [[Regenbogen]] | [[regenboog]] | [[regnbåge]] | [[regnbue]] | [[regnbue]] | [[regnbogi]] |- | 84 | [[thunder]] | [[Donner]] | [[donder]] | [[åska]]; [[dunder]] | [[torden]] | [[torden]] | [[þruma]] |- | 85 | [[current]] | [[Strömung]] | [[stroming]] | [[strömning]] | [[strømning]] | [[strømning]] | [[straumur]] |- | 86 | [[drop]] | [[Tropfen]] | [[druppel]] | [[dropper]] | [[dråbe]] | [[dråpe]] | [[dropi]] |- | 87 | [[foam]] | [[Schaum]] | [[schuim]] | [[skum]] | [[skum]] | [[skum]] | [[froða]] |- | 88 | [[dirt]] | [[Schmutz]] | [[vuil]] | [[lort]]; [[smuts]] | [[snavs]] | [[søl]]; [[skitt]] | [[óhreinindi]] |- | 89 | [[lake]] | [[See]] | [[meer]] | [[sjö]] | [[sø]] | [[sjø]] | [[stöðuvatn]] |- | 90 | [[swamp]] | [[Sumpf]] | [[moeras]] | [[träsk]] | [[sump]] | [[sump]]; [[myrlende]] | [[fen]] |- | 91 | [[moor]] | [[Moor]] | [[veen]] | [[myr]]; [[mosse]] | [[mose]] | [[myr]]; [[myrhei]] | [[mýri]] |- | 92 | [[meadow]] | [[Wiese]] | [[wei]]; [[weide]] | [[äng]] | [[eng]] | [[eng]] | [[engi]] |- | 93 | [[forest]] | [[Wald]] | [[bos]] | [[skog]] | [[skov]] | [[skog]] | [[skógur]] |- | 94 | [[hill]] | [[Hügel]] | [[heuvel]] | [[höjd]]; [[kulle]] | [[høj]]; [[bakke]] | [[haug]]; [[bakke]] | [[hæð]]; [[hóll]] |- | 95 | [[elevation]] | [[Anhöhe]] | [[hoogte]] | [[höjd]]; [[backe]] | [[høj]]; [[bakke]] | [[haug]]; [[bakke]] | [[hæð]]; [[hóll]] |- | 96 | [[mountain]] | [[Berg]] | [[berg]] | [[berg]]; [[fjäll]] | [[bjerg]] | [[berg]]; [[fjell]] | [[fell]]; [[fjall]] |- | 97 | [[summit]] | [[Gipfel]] | [[top]] | [[topp]] | [[top]] | [[topp]] | [[tindur]] |- | 98 | [[cave]] | [[Höhle]] | [[hol]] | [[håla]]; [[grotta]] | [[hule]] | [[hule]] | [[hellir]] |- | 99 | [[slope]] | [[Abhang]] | [[helling]] | [[slänt]]; [[sluttning]] | [[skrænt]]; [[skråning]] | [[li]]; [[skråning]] | [[hlíð]]; [[brekka]] |- | 100 | [[source]] | [[Quelle]] | [[bron]] | [[källa]] | [[kilde]] | [[kilde]] | [[lind]]; [[uppspretta]] |- | 101 | [[brook]] | [[Bach]] | [[beek]] | [[bäck]] | [[bæk]] | [[bekk]] | [[lækur]] |- | 102 | [[river]] | [[Fluss]] | [[stroom]] | [[älv]]; [[flod]] | [[flod]] | [[elv]] | [[á]]; [[fljót]] |- | 103 | [[shore]] | [[Ufer]] | [[wal]]; [[oever]] | [[strand]] | [[bred]] | [[bredd]] | [[árbakki]]; [[sjávarbakki]] |- | 104 | [[coast]] | [[Küste]] | [[kust]] | [[kust]] | [[kyst]] | [[kyst]] | [[strönd]] |- | 105 | [[land]] | [[Festland]] | [[vasteland]] | [[fastland]] | [[fastland]] | [[fastland]] | [[meginland]] |- | 106 | [[sea]] | [[Meer]] | [[zee]] | [[hav]] | [[hav]] | [[hav]] | [[haf]]; [[sjór]] |- | 107 | [[cove]], [[bay]] | [[Bucht]] | [[baai]]; [[inham]] | [[vik]]; [[bukt]] | [[bugt]] | [[bukt]] | [[vík]] |- | 108 | [[island]] | [[Insel]] | [[eiland]] | [[ö]] | [[ø]] | [[øy]] | [[eyja]] |- | 109 | [[flower]] | [[Blume]] | [[bloem]] | [[blomma]]; [[blomster]] | [[blomst]] | [[blomst]] | [[blóm]] |- | 110 | [[grass]] | [[Gras]] | [[gras]] | [[gräs]] | [[græs]] | [[gress]] | [[gras]] |- | 111 | [[root]] | [[Wurzel]] | [[wortel]] | [[rot]] | [[rod]] | [[rot]] | [[rót]] |- | 112 | [[tree]] | [[Baum]] | [[boom]] | [[träd]] | [[træ]] | [[tre]] | [[tré]] |- | 113 | [[trunk]] | [[Stamm]] | [[stam]] | [[stam]] | [[stamme]] | [[stamme]] | [[stofn]] |- | 114 | [[bark]] | [[Rinde]] | [[schors]] | [[bark]] | [[bark]] | [[bark]] | [[börkur]] |- | 115 | [[limb]] | [[Ast]] | [[tak]] | [[gren]] | [[gren]] | [[gren]] | [[grein]] |- | 116 | [[twig]] | [[Zweig]] | [[twijg]] | [[kvist]] | [[kvist]] | [[kvist]] | [[angi]]; [[kvistur]] |- | 117 | [[leaf]] | [[Blatt]] | [[blad]] | [[löv]]; [[blad]] | [[blad]] | [[blad]] | [[blað]] |- | 118 | [[birch]] | [[Birke]] | [[berk]] | [[björk]] | [[birk]] | [[bjørk]] | [[birki]] |- | 119 | [[pine]] | [[Kiefer]] ([[Baum]]) | [[den]] | [[tall]] | [[fyrretræ]] | [[furu]] | [[fura]] |- | 120 | [[willow]] | [[Weide]] ([[Baum]]) | [[wilg]] | [[pil]]; [[vide]] | [[piletræ]] | [[selje]]; [[piletre]] | [[víðir]] |- | 121 | [[fir]] | [[Tanne]] | [[spar]] | [[gran]] | [[gran]] | [[gran]] | [[greni]] |- | 122 | [[horn]] | [[Horn]] | [[hoorn]] | [[horn]] | [[horn]] | [[horn]] | [[horn]] |- | 123 | [[feather]] | [[Feder]] | [[veer]]; [[pluim]] | [[fjäder]] | [[fjer]] | [[fjær]] | [[fjöður]] |- | 124 | [[fur]] | [[Fell]] | [[vel]] | [[fäll]]; [[skinn]] | [[skind]] | [[skinn]] | [[skinn]] |- | 125 | [[wing]] | [[Flügel]] | [[vleugel]] | [[vinge]] | [[vinge]] | [[vinge]] | [[vængur]] |- | 126 | [[claw]] | [[Klaue]] | [[klauw]] | [[klöv]] | [[klov]] | [[klauv]] | [[kló]] |- | 127 | [[paw]] | [[Kralle]] | [[klauw]] | [[klo]] | [[klo]] | [[klo]] | [[kló]] |- | 128 | [[tail]] | [[Schwanz]] | [[staart]] | [[svans]]; [[stjärt]] | [[hale]] | [[hale]] | [[rófa]]; [[skott]] |- | 129 | [[egg]] | [[Ei]] | [[ei]] | [[ägg]] | [[æg]] | [[egg]] | [[egg]] |- | 130 | [[nest]] | [[Nest]] | [[nest]] | [[rede]]; [[näste]] | [[rede]] | [[rede]] | [[hreiður]] |- | 131 | [[lair]] | [[Bau]] | [[hol]] | [[bo]] | [[bo]] | [[hi]] | [[greni]]; [[bæli]] |- | 132 | [[animal]] | [[Tier]] | [[dier]] | [[djur]] | [[dyr]] | [[dyr]] | [[dýr]] |- | 133 | [[flock]] | [[Herde]] | [[kudde]] | [[flock]] | [[flok]] | [[flokk]] | [[hjörð]] |- | 134 | [[cow]] | [[Kuh]] | [[koe]] | [[ko]] | [[ko]] | [[ku]] | [[kýr]] |- | 135 | [[bull]] | [[Bulle]] | [[stier]] | [[tjur]] | [[tyr]] | [[tyr]] | [[boli]] |- | 136 | [[horse]] | [[Pferd]] | [[paard]] | [[häst]] | [[hest]] | [[hest]] | [[hestur]] |- | 137 | [[sheep]] | [[Schaf]] | [[schaap]] | [[får]] | [[får]] | [[får]] | [[kind]] |- | 138 | [[pig]] | [[Schwein]] | [[varken]] | [[svin]] | [[gris]] | [[gris]] | [[svín]] |- | 139 | [[dog]] | [[Hund]] | [[hond]] | [[hund]] | [[hund]] | [[hund]] | [[hundur]] |- | 140 | [[cat]] | [[Katze]] | [[kat]] | [[katt]] | [[kat]] | [[katt]] | [[köttur]] |- | 141 | [[bear]] | [[Bär]] | [[beer]] | [[björn]] | [[bjørn]] | [[bjørn]] | [[björn]] |- | 142 | [[squirrel]] | [[Eichhörnchen]] | [[eekhoorntje]] | [[ekorre]] | [[egern]] | [[ekorn]] | [[íkorni]] |- | 143 | [[elk]] | [[Elch]] | [[eland]] | [[älg]] | [[elg]] | [[elg]] | [[elgur]] |- | 144 | [[fox]] | [[Fuchs]] | [[vos]] | [[räv]] | [[ræv]] | [[rev]] | [[refur]] |- | 145 | [[hare]] | [[Hase]] | [[haas]] | [[hare]] | [[hare]] | [[hare]] | [[héri]] |- | 146 | [[mouse]] | [[Maus]] | [[muis]] | [[mus]] | [[mus]] | [[mus]] | [[mús]] |- | 147 | [[wolf]] | [[Wolf]] | [[wolf]] | [[varg]] | [[ulv]] | [[ulv]]; [[varg]] | [[úlfur]] |- | 148 | [[bird]] | [[Vogel]] | [[vogel]] | [[fågel]] | [[fugl]] | [[fugl]] | [[fugl]] |- | 149 | [[swarm]] | [[Schwarm]] | [[zwerm]] | [[svärm]] | [[sværm]] | [[sverm]] | [[sægur]] |- | 150 | [[chicken]] | [[Huhn]] | [[kip]]; [[hoen]] | [[höns]] | [[høne]] | [[høne]] | [[hæna]] |- | 151 | [[cock]] | [[Hahn]] | [[haan]] | [[tupp]] | [[hane]] | [[hane]] | [[hani]] |- | 152 | [[goose]] | [[Gans]] | [[gans]] | [[gås]] | [[gås]] | [[gås]] | [[gæs]] |- | 153 | [[eagle]] | [[Adler]] | [[arend]] | [[örn]] | [[ørn]] | [[ørn]] | [[örn]] |- | 154 | [[duck]] | [[Ente]] | [[eend]] | [[anka]] | [[and]] | [[and]] | [[önd]] |- | 155 | [[owl]] | [[Eule]] | [[uil]] | [[uggla]] | [[ugle]] | [[ugle]] | [[uggla]] |- | 156 | [[crane]] | [[Kranich]] | [[kraanvogel]] | [[trana]] | [[trane]] | [[trane]] | [[trana]] |- | 157 | [[crow]] | [[Krähe]] | [[kraai]] | [[kråka]] | [[krage]] | [[kråke]] | [[kráka]] |- | 158 | [[cuckoo]] | [[Kuckuck]] | [[koekoek]] | [[gök]] | [[gøg]] | [[gjøk]] | [[gaukur]] |- | 159 | [[swan]] | [[Schwan]] | [[zwaan]] | [[svan]] | [[svane]] | [[svane]] | [[svanur]] |- | 160 | [[fish]] | [[Fisch]] | [[vis]] | [[fisk]] | [[fisk]] | [[fisk]] | [[fiskur]] |- | 161 | [[perch]] | [[Barsch]] | [[baars]] | [[abborre]] | [[aborre]] | [[abbor]] | [[aborri]] |- | 162 | [[pike]] | [[Hecht]] | [[snoek]] | [[gädda]] | [[gedde]] | [[gjedde]] | [[gedda]] |- | 163 | [[snake]] | [[Schlange]] ([[Tier]]) | [[slang]] | [[orm]] | [[slange]] | [[orm]]; [[slange]] | [[naðra]] |- | 164 | [[worm]] | [[Wurm]] | [[worm]] | [[mask]] | [[orm]] | [[orm]]; [[mark]] | [[ormur]] |- | 165 | [[spider]] | [[Spinne]] | [[spin]] | [[spindel]] | [[edderkop]] | [[edderkopp]] | [[kónguló]] |- | 166 | [[ant]] | [[Ameise]] | [[mier]] | [[myra]] | [[myre]] | [[maur]] | [[maur]] |- | 167 | [[louse]] | [[Laus]] | [[luis]] | [[lus]] | [[lus]] | [[lus]] | [[lús]] |- | 168 | [[gnat]] | [[Mücke]] | [[mug]] | [[mygga]] | [[myg]] | [[mygg]] | [[mý]]; [[mýfluga]] |- | 169 | [[fly]] | [[Fliege]] | [[vlieg]] | [[fluga]] | [[flue]] | [[flue]] | [[fluga]] |- | 170 | [[butterfly]] | [[Schmetterling]] | [[vlinder]] | [[fjäril]] | [[sommerfugl]] | [[sommerfugl]] | [[fiðrildi]] |- | 171 | [[berry]] | [[Beere]] | [[bes]] | [[bär]] | [[bær]] | [[bær]] | [[ber]] |- | 172 | [[apple]] | [[Apfel]] | [[appel]] | [[äpple]] | [[æble]] | [[eple]] | [[epli]] |- | 173 | [[mushroom]] | [[Pilz]] | [[paddestoel]] | [[svamp]] | [[svamp]] | [[sopp]] | [[sveppur]] |- | 174 | [[onion]] | [[Zwiebel]] | [[ui]] | [[lök]] | [[løg]] | [[løk]] | [[laukur]] |- | 175 | [[seed]] | [[Saat]] | [[zaad]] | [[sådd]] | [[sæd]] | [[sæd]] | [[fræ]]; [[útsæði]] |- | 176 | [[grain]] | [[Korn]] | [[graan]]; [[korrel]] | [[korn]] | [[korn]] | [[korn]] | [[korn]] |- | 177 | [[hay]] | [[Heu]] | [[hooi]] | [[hö]] | [[hø]] | [[høy]] | [[hey]] |- | 178 | [[peel]], [[husk]] | [[Schale]] | [[schil]] | [[skal]] | [[skræl]] | [[skall]] | [[hýði]] |- | 179 | [[pit]] | [[Grube]] | [[kuil]] | [[grop]] | [[grav]] | [[grop]] | [[gryfja]] |- | 180 | [[trap]] | [[Falle]] | [[val]] | [[fälla]] | [[fælde]] | [[felle]] | [[gildra]] |- | 181 | [[noose]] | [[Schlinge]] | [[strop]] | [[snara]] | [[snare]] | [[snare]] | [[snara]] |- | 182 | [[track]] | [[Spur]] | [[spoor]] | [[spår]] | [[spor]] | [[spor]] | [[spor]] |- | 183 | [[ash]] | [[Asche]] | [[as]] | [[aska]] | [[aske]] | [[aske]] | [[aska]] |- | 184 | [[filth]] | [[Dreck]] | [[drek]] | [[lort]] | [[snavs]] | [[møkk]]; [[skitt]] | [[óþverri]] |- | 185 | [[iron]] | [[Eisen]] | [[ijzer]] | [[järn]] | [[jern]] | [[jern]] | [[járn]] |- | 186 | [[gold]] | [[Gold]] | [[goud]] | [[guld]] | [[guld]] | [[gull]] | [[gull]] |- | 187 | [[silver]] | [[Silber]] | [[zilver]] | [[silver]] | [[sølv]] | [[sølv]] | [[silfur]] |- | 188 | [[coal]] | [[Kohle]] | [[kool]] | [[kol]] | [[kul]] | [[kol]]; [[kull]] | [[kol]] |- | 189 | [[glass]] | [[Glas]] | [[glas]] | [[glas]] | [[glas]] | [[glass]] | [[gler]] |- | 190 | [[clay]] | [[Lehm]] | [[klei]] | [[lera]] | [[ler]] | [[leire]] | [[leir]] |- | 191 | [[sand]] | [[Sand]] | [[zand]] | [[sand]] | [[sand]] | [[sand]] | [[sandur]] |- | 192 | [[human]] | [[Mensch]] | [[mens]] | [[människa]] | [[mennesge]] | [[menneske]] | [[maður]]; [[manneskja]] |- | 193 | [[man]] | [[Mann]] | [[man]] | [[man]] | [[mand]] | [[mann]] | [[maður]]; [[karlmaður]] |- | 194 | [[woman]] | [[Frau]] | [[vrouw]] | [[kvinna]] | [[kvinde]] | [[kvinne]] | [[kona]] |- | 195 | [[child]] | [[Kind]] | [[kind]] | [[barn]] | [[barn]] | [[barn]] | [[barn]]; [[krakki]] |- | 196 | [[boy]] | [[Junge]] | [[jongen]] | [[pojke]] | [[dreng]] | [[gutt]] | [[drengur]] |- | 197 | [[girl]] | [[Mädchen]] | [[meisje]] | [[flicka]] | [[pige]] | [[pike]]; [[jente]] | [[stelpa]] |- | 198 | [[family]] | [[Familie]] | [[gezin]]; [[familie]] | [[familj]] | [[familie]] | [[familie]] | [[fjölskylda]] |- | 199 | [[grandfather]] | [[Großvater]] | [[grootvader]] | [[morfar]] | [[bedstefar]] | [[bestefar]] | [[afi]] |- | 200 | [[grandmother]] | [[Großmutter]] | [[grootmoeder]] | [[farmor]] | [[bedstemor]] | [[bestemor]] | [[amma]] |- | 201 | [[parents]] | [[Eltern]] | [[ouders]] | [[föräldrar]] | [[forældre]] | [[foreldre]] | [[foreldrar]] |- | 202 | [[father]] | [[Vater]] | [[vader]] | [[far]] | [[far]] | [[far]] | [[faðir]] |- | 203 | [[mother]] | [[Mutter]] | [[moeder]] | [[mor]] | [[mor]] | [[mor]] | [[móðir]] |- | 204 | [[son]] | [[Sohn]] | [[zoon]] | [[son]] | [[søn]] | [[sønn]] | [[sonur]] |- | 205 | [[daughter]] | [[Tochter]] | [[dochter]] | [[dotter]] | [[datter]] | [[datter]] | [[dóttir]] |- | 206 | [[brother]] | [[Bruder]] | [[broer]]; [[broeder]] | [[bror]] | [[bror]] | [[bror]] | [[bróðir]] |- | 207 | [[sister]] | [[Schwester]] | [[zus]]; [[zuster]] | [[syster]] | [[søster]] | [[søster]] | [[systir]] |- | 208 | [[uncle]] | [[Onkel]] | [[oom]] | [[morbror]] | [[onkel]] | [[onkel]] | [[föðurbróðir]] |- | 209 | [[aunt]] | [[Tante]] | [[tante]] | [[tant]] | [[tante]] | [[tante]] | [[frænka]]; [[móðursystir]] |- | 210 | [[husband]] | [[Ehemann]] | [[echtgenoot]] | [[äkta]] [[man]] | [[ægtemand]] | [[ektemann]] | [[eiginmaður]] |- | 211 | [[wife]] | [[Ehefrau]] | [[echtgenote]] | [[hustru]] | [[hustru]] | [[hustru]] | [[eiginkona]] |- | 212 | [[joy]] | [[Freude]] | [[vreugde]] | [[fröjd]]; [[glädje]] | [[glæde]] | [[glede]] | [[gleði]] |- | 213 | [[laughter]] | [[Gelächter]] | [[gelach]] | [[åtlöje]] | [[latter]] | [[latter]] | [[hlátur]] |- | 214 | [[happiness]] | [[Glück]] | [[geluk]] | [[lycka]] | [[lykke]] | [[lykke]] | [[gæfa]] |- | 215 | [[grief]] | [[Kummer]] | [[verdriet]] | [[sorg]] | [[sorg]] | [[sorg]] | [[sorg]] |- | 216 | [[wish]] | [[Wunsch]] | [[wens]]; [[verlangen]] | [[önskan]] | [[ønske]] | [[ønske]] | [[ósk]] |- | 217 | [[desire]] | [[Lust]] | [[zin]]; [[lust]] | [[lust]] | [[lyst]] | [[lyst]] | [[fýsn]]; [[löngun]] |- | 218 | [[spirit]] | [[Geist]] | [[geest]] | [[ande]] | [[ånd]] | [[ånd]] | [[andi]] |- | 219 | [[thought]] | [[Gedanke]] | [[gedachte]] | [[tanke]] | [[tanke]] | [[tanke]] | [[hugsun]] |- | 220 | [[memory]] | [[Gedächtnis]] | [[geheugen]] | [[minne]] | [[hukommelse]] | [[minne]]; [[hukommelse]] | [[minni]] |- | 221 | [[mind]] | [[Verstand]] | [[verstand]] | [[förstånd]] | [[forstand]] | [[forstand]] | [[vit]] |- | 222 | [[meaning]] | [[Sinn]] | [[betekenis]] | [[mening]]; [[betydelse]] | [[mening]]; [[betydning]] | [[mening]]; [[betydning]] | [[merking]] |- | 223 | [[reason]] | [[Grund]] | [[reden]] | [[skäl]]; [[grund]] | [[grund]] | [[grunn]] | [[ástæða]] |- | 224 | [[truth]] | [[Wahrheit]] | [[waarheid]] | [[sanning]] | [[sandhed]] | [[sannhet]] | [[sannleikur]] |- | 225 | [[talk]] | [[Gespräch]] | [[gesprek]] | [[samtal]] | [[samtale]] | [[samtale]] | [[samtal]] |- | 226 | [[fairy]] [[tale]] | [[Märchen]] | [[sprookje]] | [[saga]] | [[eventyr]] | [[eventyr]] | [[ævintýri]] |- | 227 | [[story]] | [[Erzählung]] | [[verhaal]] | [[berättelse]] | [[fortælling]] | [[fortelling]] | [[saga]] |- | 228 | [[message]] | [[Nachricht]] | [[tijding]] | [[meddelande]] | [[efterretning]] | [[melding]] | [[frétt]] |- | 229 | [[news]] | [[Neuigkeit]] | [[nieuws]]; [[nieuwtje]] | [[nyhet]] | [[nyhed]] | [[nyhet]] | [[frétt]] |- | 230 | [[name]] | [[Name]] | [[naam]] | [[namn]] | [[navn]] | [[navn]] | [[nafn]] |- | 231 | [[puzzle]] | [[Rätsel]] | [[raadsel]] | [[gåta]] | [[gåde]] | [[gåte]] | [[gáta]] |- | 232 | [[speech]] | [[Rede]] | [[rede]] | [[tal]] | [[tale]] | [[tale]] | [[ræða]] |- | 233 | [[language]] | [[Sprache]] | [[taal]] | [[språk]] | [[sprog]] | [[språk]] | [[mál]]; [[tungumál]] |- | 234 | [[voice]] | [[Stimme]] | [[stem]] | [[stämma]] | [[stemme]] | [[stemme]] | [[rödd]] |- | 235 | [[word]] | [[Wort]] | [[woord]] | [[ord]] | [[ord]] | [[ord]] | [[orð]] |- | 236 | [[sign]] | [[Zeichen]] | [[teken]] | [[tecken]] | [[tegn]] | [[tegn]] | [[tákn]]; [[merki]] |- | 237 | [[call]] | [[Ruf]] | [[roep]] | [[rop]] | [[råb]] | [[rop]] | [[kall]] |- | 238 | [[noise]] | [[Lärm]] | [[lawaai]] | [[bråk]]; [[oväsen]] | [[larm]] | [[bråk]] | [[hávaði]] |- | 239 | [[sound]] | [[Laut]] | [[klank]]; [[geluid]] | [[ljud]] | [[lyd]] | [[lyd]] | [[hljóð]] |- | 240 | [[tone]] | [[Ton]] | [[toon]]; [[klank]] | [[ton]] | [[tone]] | [[tone]] | [[tónn]] |- | 241 | [[song]] | [[Lied]] | [[lied]] | [[sång]] | [[sang]] | [[vise]] | [[ljóð]]; [[söngur]] |- | 242 | [[calm]] | [[Ruhe]] | [[rust]]; [[stilte]] | [[ro]]; [[lugn]] | [[ro]]; [[hvile]] | [[ro]] | [[ró]]; [[kyrrð]] |- | 243 | [[people]] | [[Leute]] | [[lui]]; [[mensen]] | [[folk]] | [[folk]]; [[mennesker]] | [[folk]] | [[fólk]] |- | 244 | [[nation]] | [[Volk]] | [[volk]] | [[folk]] | [[folk]] | [[folk]] | [[þjóð]] |- | 245 | [[work]] | [[Arbeit]] | [[werk]]; [[arbeid]] | [[arbete]] | [[arbejde]] | [[arbeid]] | [[vinna]] |- | 246 | [[guest]] | [[Gast]] | [[gast]] | [[gäst]] | [[gæst]] | [[gjest]] | [[gestur]] |- | 247 | [[gift]] | [[Geschenk]] | [[cadeau]]; [[geschenk]] | [[gåva]]; [[present]] | [[gave]] | [[gave]] | [[gjöf]] |- | 248 | [[game]] | [[Spiel]] | [[spel]] | [[lek]]; [[spel]] | [[leg]] | [[lek]]; [[spill]] | [[leikur]] |- | 249 | [[company]] | [[Gesellschaft]] | [[gezelschap]] | [[sällskap]] | [[selskab]] | [[selskap]] | [[selskapur]] |- | 250 | [[help]] | [[Hilfe]] | [[hulp]] | [[hjälp]] | [[hjælp]] | [[hjelp]] | [[hjálp]] |- | 251 | [[friend]] | [[Freund]] | [[vriend]] | [[vän]] | [[ven]] | [[venn]] | [[vinur]] |- | 252 | [[companion]] | [[Kamerad]] | [[maat]]; [[metgezel]] | [[kamrat]] | [[kammerat]] | [[kamerat]] | [[félagi]] |- | 253 | [[matter]] | [[Angelegenheit]] | [[zaak]]; [[aangelegenheid]] | [[ärende]]; [[angelägenhet]] | [[sag]]; [[anliggende]] | [[sak]]; [[anliggende]] | [[mál]]; [[málefni]] |- | 254 | [[count]] | [[Anzahl]] | [[tal]]; [[aantal]] | [[antal]] | [[antal]] | [[antall]] | [[tala]]; [[fjöldi]] |- | 255 | [[sort]] | [[Art]] | [[slag]]; [[soort]] | [[art]]; [[slag]] | [[art]] | [[art]]; [[slag]] | [[tegund]] |- | 256 | [[piece]] | [[Stück]] | [[stuk]] | [[stycke]] | [[stykke]] | [[stykke]] | [[biti]]; [[stykki]] |- | 257 | [[part]] | [[Teil]] | [[deel]] | [[del]] | [[del]] | [[del]] | [[hluti]]; [[partur]] |- | 258 | [[half]] | [[Hälfte]] | [[helft]] | [[halva]] | [[halvdel]] | [[halvdel]] | [[helmingur]] |- | 259 | [[circle]] | [[Kreis]] | [[kring]]; [[cirkel]] | [[krets]]; [[cirkel]] | [[cirkel]] | [[ring]]; [[sirkel]] | [[hringur]] |- | 260 | [[cross]] | [[Kreuz]] | [[kruis]] | [[kors]]; [[kryss]] | [[kors]]; [[kryds]] | [[kors]]; [[kryss]] | [[kross]]; [[krossmark]] |- | 261 | [[line]] | [[Linie]] | [[lijn]] | [[linje]] | [[linie]] | [[linje]] | [[lína]] |- | 262 | [[stroke]] | [[Strich]] | [[haal]]; [[streep]] | [[streck]] | [[streg]] | [[strek]] | [[strik]] |- | 263 | [[gap]] | [[Abstand]] | [[afstand]] | [[avstånd]] | [[afstand]] | [[avstand]] | [[millibil]] |- | 264 | [[distance]] | [[Entfernung]] | [[afstand]] | [[avstånd]] | [[afstand]] | [[avstand]] | [[fjarlægð]] |- | 265 | [[area]] | [[Gegend]] | [[streek]] | [[trakt]] | [[egn]] | [[strøk]] | [[hérað]] |- | 266 | [[space]] | [[Platz]] | [[ruimte]] | [[plats]] | [[plads]] | [[plass]] | [[pláss]] |- | 267 | [[place]] | [[Ort]] | [[oord]]; [[plaats]] | [[plats]]; [[ställe]] | [[sted]] | [[sted]] | [[staður]] |- | 268 | [[side]] | [[Seite]] | [[zij]]; [[kant]]; [[zijde]] | [[sida]] | [[side]] | [[side]] | [[hlið]] |- | 269 | [[middle]] | [[Mitte]] | [[midden]] | [[mitt]] | [[midte]] | [[midte]] | [[miðja]] |- | 270 | [[item]] | [[Gegenstand]] | [[voorwerp]] | [[föremål]] | [[genstand]] | [[gjenstand]] | [[hlutur]] |- | 271 | [[thing]] | [[Sache]] | [[zaak]] | [[sak]] | [[sag]] | [[sak]] | [[mál]] |- | 272 | [[fringe]] | [[Rand]] | [[rand]]; [[boord]] | [[rand]] | [[rand]] | [[rand]] | [[brún]] |- | 273 | [[edge]] | [[Kante]] | [[kant]] | [[kant]] | [[kant]] | [[kant]] | [[rönd]] |- | 274 | [[corner]] | [[Ecke]] | [[hoek]] | [[vrå]]; [[hörn]] | [[hjørne]] | [[hjørne]] | [[horn]] |- | 275 | [[tip]] | [[Spitze]] | [[punt]]; [[spits]] | [[spets]] | [[spids]] | [[spiss]] | [[oddur]] |- | 276 | [[end]] | [[Ende]] | [[einde]]; [[uiteinde]] | [[ända]] | [[ende]] | [[ende]] | [[endi]] |- | 277 | [[hole]] | [[Loch]] | [[gat]] | [[hål]] | [[hul]] | [[hull]] | [[gat]]; [[hola]] |- | 278 | [[angle]] | [[Winkel]] | [[hoek]] | [[vinkel]] | [[vinkel]] | [[vinkel]] | [[skot]]; [[krókur]] |- | 279 | [[pattern]] | [[Muster]] | [[dessin]]; [[patroon]] | [[mönster]] | [[mønster]] | [[mønster]] | [[munstur]] |- | 280 | [[size]] | [[Größe]] | [[grootte]] | [[storlek]] | [[størrelse]] | [[størrelse]] | [[stærð]] |- | 281 | [[length]] | [[Länge]] | [[lengte]] | [[längd]] | [[længde]] | [[lengde]] | [[lengd]] |- | 282 | [[height]] | [[Höhe]] | [[hoogte]] | [[höjd]] | [[højde]] | [[høyde]] | [[hæð]] |- | 283 | [[weight]] | [[Gewicht]] | [[gewicht]] | [[tyngd]] | [[vægt]] | [[vekt]] | [[vigt]]; [[þyngd]] |- | 284 | [[amount]] | [[Menge]] | [[hoeveelheid]] | [[mängd]] | [[mængde]] | [[mengde]] | [[magn]] |- | 285 | [[heap]] | [[Haufen]] | [[hoop]] | [[hög]] | [[bunke]] | [[haug]]; [[bunke]] | [[hrúga]]; [[haugur]] |- | 286 | [[row]] | [[Reihe]] | [[rij]]; [[reeks]] | [[rad]] | [[række]] | [[rekke]] | [[röð]] |- | 287 | [[boat]] | [[Boot]] | [[boot]] | [[båt]] | [[båd]] | [[båt]] | [[bátur]] |- | 288 | [[oar]] | [[Ruder]] | [[roeiriem]] | [[åra]] | [[åre]] | [[åre]] | [[ár]] |- | 289 | [[sleigh]] | [[Schlitten]] | [[slee]]; [[slede]] | [[släde]] | [[kælk]]; [[slæde]] | [[slede]]; [[kjelke]] | [[sleði]] |- | 290 | [[ski]] | [[Ski]] | [[ski]] | [[skida]] | [[ski]] | [[ski]] | [[skíði]] |- | 291 | [[campfire]] | [[Lagerfeuer]] | [[kampvuur]] | [[lägereld]] | [[lejrbål]] | [[leirbål]] | [[varðeldur]] |- | 292 | [[load]] | [[Last]] | [[last]]; [[vracht]] | [[last]]; [[börda]] | [[last]]; [[byrde]] | [[bør]]; [[last]] | [[byrði]]; [[farmur]] |- | 293 | [[walk]] | [[Gang]] | [[wandeling]] | [[gång]] | [[gang]] | [[gang]] | [[ganga]] |- | 294 | [[step]] | [[Schritt]] | [[stap]]; [[schrede]] | [[steg]] | [[skridt]] | [[steg]]; [[skritt]] | [[skref]] |- | 295 | [[north]] | [[Norden]] | [[noorden]] | [[norr]] | [[nord]] | [[nord]] | [[norður]] |- | 296 | [[south]] | [[Süden]] | [[zuiden]] | [[söder]] | [[syd]] | [[sør]] | [[suður]] |- | 297 | [[west]] | [[Westen]] | [[westen]] | [[väster]] | [[vest]] | [[vest]] | [[vestur]] |- | 298 | [[east]] | [[Osten]] | [[oosten]] | [[öster]] | [[øst]] | [[øst]] | [[austur]] |- | 299 | [[wood]] | [[Holz]] | [[hout]] | [[trä]] | [[træ]] | [[tre]] | [[viður]] |- | 300 | [[board]] | [[Brett]] | [[plank]] | [[bräda]] | [[bræt]] | [[fjøl]]; [[brett]] | [[fjöl]] |- | 301 | [[slab]] | [[Platte]] | [[plaat]] | [[platta]] | [[plade]] | [[plate]] | [[flötur]] |- | 302 | [[support]], [[rest]] | [[Stütze]] | [[stut]]; [[steun]] | [[stöd]]; [[stötta]] | [[støtte]] | [[støtte]] | [[stoð]] |- | 303 | [[pole]] | [[Stange]] | [[stang]] | [[stång]] | [[stang]] | [[stang]] | [[stöng]] |- | 304 | [[stick]] | [[Stock]] | [[stok]] | [[käpp]]; [[pinne]] | [[stok]] | [[pinne]] | [[prik]]; [[stafur]] |- | 305 | [[staff]] | [[Stab]] | [[staf]] | [[stav]] | [[stav]] | [[stav]]; [[kjepp]] | [[prik]]; [[stafur]] |- | 306 | [[pipe]] | [[Rohr]] | [[pijp]] | [[rör]] | [[rør]] | [[rør]] | [[rör]]; [[pípa]] |- | 307 | [[house]] | [[Haus]] | [[huis]] | [[hus]] | [[hus]] | [[hus]] | [[hús]] |- | 308 | [[home]] | [[Heim]] | [[tehuis]] | [[hem]] | [[hjem]] | [[hjem]] | [[heimili]] |- | 309 | [[stove]] | [[Ofen]] | [[kachel]] | [[ugn]] | [[ovn]] | [[ovn]] | [[ofn]] |- | 310 | [[floor]] | [[Fußboden]] | [[vloer]] | [[golv]] | [[gulv]] | [[gulv]] | [[gólf]] |- | 311 | [[table]] | [[Tisch]] | [[tafel]] | [[bord]] | [[bord]] | [[bord]] | [[borð]] |- | 312 | [[chair]] | [[Stuhl]] | [[stoel]] | [[stol]] | [[stol]] | [[stol]] | [[stóll]] |- | 313 | [[cradle]] | [[Wiege]] | [[wieg]] | [[vagga]] | [[vugge]] | [[vogge]] | [[vagga]] |- | 314 | [[bed]] | [[Bett]] | [[bed]] | [[säng]] | [[seng]] | [[seng]] | [[rúm]]; [[hvíla]] |- | 315 | [[shelf]] | [[Regal]] | [[rek]] | [[hylla]] | [[reol]] | [[reol]]; [[hylle]] | [[hilla]] |- | 316 | [[box]] | [[Kiste]] | [[kist]] | [[låda]] | [[kasse]] | [[kasse]] | [[kassi]] |- | 317 | [[window]] | [[Fenster]] | [[raam]]; [[venster]] | [[fönster]] | [[vindue]] | [[vindu]] | [[gluggi]] |- | 318 | [[door]] | [[Tür]] | [[deur]] | [[dörr]] | [[dør]] | [[dør]] | [[dyr]]; [[hurð]] |- | 319 | [[gate]] | [[Tor]] | [[poort]] | [[port]] | [[port]] | [[port]] | [[hlið]] |- | 320 | [[fence]] | [[Zaun]] | [[omheining]] | [[staket]]; [[stängsel]] | [[stakit]] | [[gjerde]] | [[girðing]]; [[limgarður]] |- | 321 | [[roof]] | [[Dach]] | [[dak]] | [[tak]] | [[tag]] | [[tak]] | [[þak]] |- | 322 | [[ladder]] | [[Leiter]] | [[ladder]] | [[stege]] | [[stige]] | [[stige]] | [[stigi]] |- | 323 | [[broom]] | [[Besen]] | [[bezem]] | [[kvast]] | [[kost]] | [[kost]] | [[sópur]] |- | 324 | [[spade]] | [[Spaten]] | [[schop]] | [[spade]] | [[spade]] | [[spade]] | [[spaði]] |- | 325 | [[shovel]] | [[Schaufel]] | [[schep]] | [[skovel]]; [[skyffel]] | [[skovl]] | [[skuffe]] | [[skófla]] |- | 326 | [[fork]] | [[Gabel]] | [[vork]] | [[gaffel]] | [[gaffel]] | [[gaffel]] | [[gaffall]] |- | 327 | [[spoon]] | [[Löffel]] | [[lepel]] | [[sked]] | [[ske]] | [[skje]] | [[skeið]] |- | 328 | [[knife]] | [[Messer]] | [[mes]] | [[kniv]] | [[kniv]] | [[kniv]] | [[hnífur]] |- | 329 | [[nail]] | [[Nagel]] | [[spijker]] | [[spik]] | [[søm]] | [[spiker]] | [[nögl]] |- | 330 | [[net]] | [[Netz]] | [[net]] | [[nät]] | [[net]] | [[nett]] | [[net]] |- | 331 | [[hook]] | [[Haken]] | [[haak]] | [[krok]] | [[krog]] | [[krok]] | [[krókur]] |- | 332 | [[handle]] | [[Griff]] | [[handvat]] | [[tag]]; [[handtag]] | [[tag]]; [[håndtag]] | [[tak]]; [[håndtak]] | [[tak]] |- | 333 | [[lock]] | [[Schloss]] | [[slot]] | [[las]] | [[lås]] | [[lås]] | [[lás]] |- | 334 | [[picture]] | [[Bild]] | [[beeld]] | [[bild]] | [[billede]] | [[bilde]] | [[mynd]] |- | 335 | [[figure]] | [[Figur]] | [[figuur]] | [[figur]] | [[figur]] | [[figur]] | [[stytta]] |- | 336 | [[doll]] | [[Puppe]] | [[pop]] | [[docka]] | [[dukke]] | [[dukke]] | [[brúða]] |- | 337 | [[pouch]] | [[Beutel]] | [[zak]]; [[buidel]] | [[påse]] | [[pose]] | [[pose]] | [[poki]]; [[baggi]] |- | 338 | [[bundle]] | [[Bündel]] | [[pak]]; [[bundel]] | [[bunt]]; [[knippa]] | [[bylt]]; [[bundt]] | [[bylt]] | [[böggull]] |- | 339 | [[bag]] | [[Tasche]] | [[tas]] | [[väska]] | [[taske]] | [[veske]] | [[veski]] |- | 340 | [[bucket]] | [[Eimer]] | [[emmer]] | [[hink]]; [[ämbar]] | [[spand]] | [[bøtte]] | [[fata]] |- | 341 | [[cover]], [[lid]] | [[Deckel]] | [[deksel]] | [[lock]] | [[låg]] | [[lokk]] | [[lok]] |- | 342 | [[dishes]] | [[Geschirr]] | [[vaatwerk]] | [[servis]]; [[porslin]] | [[husgeråd]] | [[kjøkkentøy]] | [[leirtau]] |- | 343 | [[sack]] | [[Sack]] | [[zak]] | [[säck]] | [[sæk]] | [[sekk]] | [[sekkur]] |- | 344 | [[cup]] | [[Tasse]] | [[kop]] | [[kopp]] | [[kop]] | [[kopp]] | [[bolli]] |- | 345 | [[pot]] | [[Topf]] | [[pan]] | [[gryta]]; [[kastrull]] | [[gryde]] | [[gryte]] | [[pottur]] |- | 346 | [[kettle]] | [[Kessel]] | [[ketel]] | [[kittel]] | [[kedel]] | [[kjele]] | [[ketill]] |- | 347 | [[meal]] | [[Essen]] | [[eten]] | [[mål]] | [[måltid]] | [[mål]] | [[matur]] |- | 348 | [[food]] | [[Nahrung]] | [[voedsel]] | [[näring]] | [[mad]]; [[næring]] | [[mat]]; [[næring]] | [[fæða]] |- | 349 | [[dish]] | [[Speise]] | [[spijs]] | [[maträtt]] | [[ret]] | [[matrett]] | [[réttur]]; [[matarréttur]] |- | 350 | [[meat]] | [[Fleisch]] | [[vlees]] | [[kött]] | [[kød]] | [[kjøtt]] | [[kjöt]] |- | 351 | [[corn]] | [[Getreide]] | [[graan]] | [[säd]]; [[spannmål]] | [[korn]] | [[korn]] | [[korn]] |- | 352 | [[mush]] | [[Brei]] | [[pap]]; [[brij]] | [[gröt]] | [[grød]] | [[grøt]] | [[grautur]] |- | 353 | [[bread]] | [[Brot]] | [[brood]] | [[bröd]] | [[brød]] | [[brød]] | [[brauð]] |- | 354 | [[slice]] | [[Scheibe]] | [[plak]]; [[snede]] | [[skiva]] | [[skive]] | [[skive]] | [[sneið]] |- | 355 | [[fat]] | [[Fett]] | [[vet]] | [[fett]] | [[fedt]] | [[fett]] | [[fita]] |- | 356 | [[butter]] | [[Butter]] | [[boter]] | [[smör]] | [[smør]] | [[smør]] | [[smjör]] |- | 357 | [[oil]] | [[Öl]] | [[olie]] | [[olja]] | [[olie]] | [[olje]] | [[olía]] |- | 358 | [[salt]] | [[Salz]] | [[zout]] | [[salt]] | [[salt]] | [[salt]] | [[salt]] |- | 359 | [[soup]] | [[Suppe]] | [[soep]] | [[soppa]] | [[suppe]] | [[suppe]] | [[súpa]] |- | 360 | [[honey]] | [[Honig]] | [[honing]] | [[honung]] | [[honning]] | [[honning]] | [[hunang]] |- | 361 | [[milk]] | [[Milch]] | [[melk]] | [[mjölk]] | [[mælk]] | [[melk]] | [[mjólk]] |- | 362 | [[tea]] | [[Tee]] | [[thee]] | [[te]] | [[te]] | [[te]] | [[te]] |- | 363 | [[leather]] | [[Leder]] | [[leer]]; [[leder]] | [[läder]] | [[skind]] | [[lær]]; [[skinn]] | [[skinn]] |- | 364 | [[wool]] | [[Wolle]] | [[wol]] | [[ull]]; [[ylle]] | [[uld]] | [[ull]] | [[ull]] |- | 365 | [[cloth]] | [[Stoff]] | [[stof]] | [[tyg]]; [[stoff]] | [[stof]] | [[tøy]]; [[stoff]] | [[dúkur]] |- | 366 | [[needle]] | [[Nadel]] | [[naald]] | [[nål]] | [[nål]] | [[nål]] | [[nál]] |- | 367 | [[thread]] | [[Faden]] | [[draad]] | [[tråd]] | [[tråd]] | [[tråd]] | [[þráður]] |- | 368 | [[button]] | [[Knopf]] | [[knoop]] | [[knapp]] | [[knap]] | [[knapp]] | [[tala]]; [[hnappur]] |- | 369 | [[knot]] | [[Knoten]] | [[knoop]] | [[knut]] | [[knude]] | [[knute]] | [[hnútur]] |- | 370 | [[paint]] | [[Farbe]] | [[verf]] | [[färg]] | [[farve]] | [[farge]] | [[málning]] |- | 371 | [[clothes]] | [[Kleidung]] | [[kledij]]; [[kleding]] | [[klädsel]] | [[påklædning]] | [[påkledning]] | [[búningur]]; [[klæðnaður]] |- | 372 | [[shirt]] | [[Hemd]] | [[hemd]] | [[skjorta]] | [[skjorte]] | [[skjorte]] | [[skyrta]] |- | 373 | [[collar]] | [[Kragen]] | [[kraag]] | [[krage]] | [[krave]] | [[krage]] | [[kragi]]; [[flibbi]] |- | 374 | [[sleeve]] | [[Ärmel]] | [[mouw]] | [[ärm]] | [[ærme]] | [[erme]] | [[ermi]] |- | 375 | [[trousers]] | [[Hose]] | [[broek]]; [[pantalon]] | [[byxor]] | [[bukser]] | [[bukse]] | [[buxur]] |- | 376 | [[belt]] | [[Gürtel]] | [[riem]]; [[gordel]] | [[bälte]] | [[bælte]] | [[belte]] | [[belti]] |- | 377 | [[cap]] | [[Mütze]] | [[muts]] | [[mössa]] | [[hue]] | [[lue]] | [[húfa]] |- | 378 | [[shoe]] | [[Schuh]] | [[schoen]] | [[sko]] | [[sko]] | [[sko]] | [[skór]] |- | 379 | [[boot]] | [[Stiefel]] | [[laars]] | [[stövel]] | [[støvle]] | [[støvel]] | [[stígvél]] |- | 380 | [[ring]] | [[Ring]] | [[ring]] | [[ring]] | [[ring]] | [[ring]] | [[hringur]] |- | 381 | [[ribbon]] | [[Band]] | [[lint]] | [[band]] | [[bånd]] | [[band]] | [[band]] |- | 382 | [[comb]] | [[Kamm]] | [[kam]] | [[kam]] | [[kam]] | [[kam]] | [[greiða]] |- | 383 | [[mirror]] | [[Spiegel]] | [[spiegel]] | [[spegel]] | [[spejl]] | [[speil]] | [[spegill]] |- | 384 | [[strap]] | [[Riemen]] | [[riem]] | [[rem]] | [[rem]] | [[rem]] | [[ól]]; [[reim]] |- | 385 | [[string]] | [[Schnur]] | [[koord]] | [[snöre]] | [[snor]] | [[snor]] | [[snúra]] |- | 386 | [[leash]] | [[Leine]] | [[lijn]] | [[lina]] | [[snor]] | [[line]] | [[band]] |- | 387 | [[blanket]] | [[Decke]] | [[deken]] | [[täcke]] | [[tæppe]] | [[teppe]] | [[teppi]] |- | 388 | [[pillow]] | [[Kissen]] | [[kussen]] | [[dyna]]; [[kudde]] | [[pude]] | [[pute]] | [[koddi]] |- | 389 | [[scarf]] | [[Tuch]] | [[doek]] | [[sjal]] | [[sjaltørklæde]] | [[tøy]] | [[klútur]] |- | 390 | [[towel]] | [[Handtuch]] | [[handdoek]] | [[handduk]] | [[håndklæde]] | [[håndkle]] | [[þurrka]]; [[handklæði]] |- | 391 | [[force]] | [[Kraft]] | [[kracht]] | [[kraft]] | [[kraft]] | [[kraft]] | [[afl]]; [[kraftur]] |- | 392 | [[strength]] | [[Stärke]] | [[sterkte]] | [[styrka]] | [[styrke]] | [[styrke]] | [[styrkur]] |- | 393 | [[health]] | [[Gesundheit]] | [[gezondheid]] | [[hälsa]] | [[sundhed]] | [[helse]]; [[sunnhet]] | [[heilsa]]; [[heilbrigði]] |- | 394 | [[illness]] | [[Krankheit]] | [[ziekte]] | [[sjukdom]] | [[sygdom]] | [[syke]]; [[sykdom]] | [[sjúkdómur]] |- | 395 | [[pain]] | [[Schmerz]] | [[pijn]] | [[smärta]] | [[smerte]] | [[smerte]] | [[sársauki]] |- | 396 | [[wound]] | [[Wunde]] | [[wond]] | [[sår]] | [[sår]] | [[sår]] | [[sár]] |- | 397 | [[fever]] | [[Fieber]] | [[koorts]] | [[feber]] | [[feber]] | [[feber]] | [[hitasótt]] |- | 398 | [[medicine]] | [[Arznei]] | [[medicament]]; [[geneesmiddel]] | [[medicin]]; [[läkemedel]] | [[medicin]]; [[lægemiddel]] | [[medisin]]; [[legemiddel]] | [[lyf]] |- | 399 | [[bridge]] | [[Brücke]] | [[brug]] | [[bro]] | [[bro]] | [[bro]] | [[brú]] |- | 400 | [[well]] | [[Brunnen]] | [[put]]; [[bron]] | [[brunn]] | [[brønd]] | [[brønn]] | [[brunnur]] |- | 401 | [[pasture]] | [[Weide]] | [[wei]]; [[weide]] | [[bete]] | [[græsgang]] | [[beite]] | [[hagi]] |- | 402 | [[path]] | [[Pfad]] | [[pad]] | [[stig]] | [[sti]] | [[sti]] | [[stígur]] |- | 403 | [[way]] | [[Weg]] | [[weg]] | [[väg]] | [[vej]] | [[vei]] | [[vegur]] |- | 404 | [[road]] | [[Straße]] | [[baan]]; [[straat]] | [[gata]] | [[gade]] | [[gate]] | [[gata]]; [[stræti]] |- | 405 | [[village]] | [[Dorf]] | [[dorp]] | [[by]] | [[landsby]] | [[landsby]] | [[þorp]] |- | 406 | [[town]] | [[Stadt]] | [[stad]] | [[stad]] | [[by]] | [[by]] | [[borg]] |- | 407 | [[letter]] | [[Brief]] | [[brief]] | [[brev]] | [[brev]] | [[brev]] | [[bréf]] |- | 408 | [[book]] | [[Buch]] | [[boek]] | [[bok]] | [[bog]] | [[bok]] | [[bók]] |- | 409 | [[character]] | [[Buchstabe]] | [[letter]] | [[bokstav]] | [[bogstav]] | [[bokstav]] | [[bókstafur]] |- | 410 | [[newspaper]] | [[Zeitung]] | [[krant]]; [[dagblad]] | [[tidning]] | [[avis]] | [[avis]] | [[dagblað]] |- | 411 | [[life]] | [[Leben]] | [[leven]] | [[liv]] | [[liv]] | [[liv]] | [[líf]] |- | 412 | [[death]] | [[Tod]] | [[dood]] | [[död]] | [[død]] | [[død]] | [[dauði]] |- | 413 | [[grave]] | [[Grab]] | [[graf]] | [[grav]] | [[grav]] | [[grav]] | [[gröf]] |- | 414 | [[church]] | [[Kirche]] | [[kerk]] | [[kyrka]] | [[kirke]] | [[kirke]] | [[kirkja]] |- | 415 | [[sin]] | [[Sünde]] | [[zonde]] | [[synd]] | [[synd]] | [[synd]] | [[synd]] |- | 416 | [[god]] | [[Gott]] | [[god]] | [[gud]] | [[gud]] | [[gud]] | [[guð]] |- | 417 | [[worker]] | [[Arbeiter]] | [[arbeider]] | [[arbetare]] | [[arbejder]] | [[arbeider]] | [[verkamaður]] |- | 418 | [[boss]] | [[Chef]] | [[chef]] | [[chef]] | [[chef]] | [[sjef]] | [[yfirmaður]] |- | 419 | [[master]] | [[Meister]] | [[meester]] | [[mästare]] | [[mester]] | [[mester]] | [[meistari]] |- | 420 | [[doctor]] | [[Arzt]] | [[arts]]; [[dokter]] | [[läkare]] | [[læge]] | [[lege]] | [[læknir]] |- | 421 | [[teacher]] | [[Lehrer]] | [[leraar]]; [[onderwijzer]] | [[lärare]] | [[lærer]] | [[lærer]] | [[kennari]] |- | 422 | [[money]] | [[Geld]] | [[geld]] | [[pengar]] | [[penge]] | [[penger]] | [[peningar]] |- | 423 | [[business]] | [[Geschäft]] | [[zaak]] | [[rörelse]] | [[forretning]] | [[forretning]] | [[viðskipti]] |- | 424 | [[shop]] | [[Laden]] | [[winkel]] | [[affär]] | [[butik]]; [[forretning]] | [[butikk]] | [[búð]]; [[verslun]] |- | 425 | [[price]] | [[Preis]] | [[prijs]] | [[pris]] | [[pris]] | [[pris]] | [[verð]] |- | 426 | [[ware]] | [[Ware]] | [[waar]] | [[vara]] | [[vare]] | [[vare]] | [[vara]] |- | 427 | [[benefit]] | [[Nutzen]] | [[nut]]; [[voordeel]] | [[gagn]]; [[nytta]] | [[nytte]] | [[nytte]] | [[gagn]] |- | 428 | [[wealth]] | [[Reichtum]] | [[rijkdom]] | [[rikedom]] | [[rigdom]] | [[rikdom]] | [[auður]] |- | 429 | [[world]] | [[Welt]] | [[wereld]] | [[värld]] | [[verden]] | [[verden]] | [[veröld]] |- | 430 | [[country]] | [[Land]] | [[land]] | [[land]] | [[land]] | [[land]] | [[land]] |- | 431 | [[state]] | [[Staat]] | [[staat]] | [[stat]] | [[stat]] | [[stat]] | [[ríki]] |- | 432 | [[king]] | [[König]] | [[koning]] | [[kung]]; [[konung]] | [[konge]] | [[konge]] | [[konungur]] |- | 433 | [[power]] | [[Macht]] | [[macht]] | [[makt]] | [[magt]] | [[makt]] | [[vald]] |- | 434 | [[border]] | [[Grenze]] | [[grens]] | [[gräns]] | [[grænse]] | [[grense]] | [[landamæri]] |- | 435 | [[war]] | [[Krieg]] | [[oorlog]] | [[krig]] | [[krig]] | [[krig]] | [[stríð]] |- | 436 | [[enemy]] | [[Feind]] | [[vijand]] | [[fiende]] | [[fjende]] | [[fiende]] | [[fjandmaður]] |- | 437 | [[violence]] | [[Gewalt]] | [[geweld]] | [[våld]] | [[vold]] | [[vold]] | [[ofbeldi]] |- | 438 | [[fight]] | [[Kampf]] | [[strijd]]; [[gevecht]] | [[kamp]]; [[strid]] | [[kamp]] | [[kamp]] | [[bardagi]] |- | 439 | [[bow]] | [[Bogen]] ([[Waffe]]) | [[boog]] | [[båge]] | [[bue]] | [[bue]] | [[bogi]] |- | 440 | [[arrow]] | [[Pfeil]] | [[pijl]] | [[pil]] | [[pil]] | [[pil]] | [[ör]] |- | 441 | [[gun]] | [[Gewehr]] | [[geweer]] | [[gevär]] | [[gevær]] | [[gevær]] | [[byssa]] |- | 442 | [[mistake]] | [[Fehler]] | [[fout]] | [[fel]] | [[fejl]] | [[feil]] | [[villa]] |- | 443 | [[lie]] | [[Lüge]] | [[leugen]] | [[lögn]] | [[løgn]] | [[løgn]] | [[lygi]] |- | 444 | [[damage]] | [[Schaden]] | [[schade]] | [[skada]] | [[skade]] | [[skade]] | [[skemmd]] |- | 445 | [[misfortune]] | [[Unglück]] | [[tegenspoed]] | [[otur]]; [[olycka]] | [[uheld]]; [[ulykke]] | [[uhell]] | [[óhamingja]] |- | 446 | [[fault]] | [[Schuld]] | [[schuld]] | [[skuld]] | [[skyld]] | [[skyld]] | [[sök]] |- | 447 | [[age]] | [[Alter]] | [[leeftijd]] | [[ålder]] | [[alder]] | [[alder]] | [[aldur]] |- | 448 | [[end]] | [[Schluss]] | [[slot]] | [[slut]] | [[slut]]; [[slutning]] | [[slutt]] | [[lok]]; [[endir]] |- | 449 | [[time]] | [[Zeit]] | [[tijd]] | [[tid]] | [[tid]] | [[tid]] | [[tími]] |- | 450 | [[day]] | [[Tag]] | [[dag]] | [[dag]] | [[dag]] | [[dag]] | [[dagur]] |- | 451 | [[morning]] | [[Morgen]] | [[morgen]]; [[ochtend]] | [[morgon]] | [[morgen]] | [[morgen]] | [[morgunn]] |- | 452 | [[noon]] | [[Mittag]] | [[middag]] | [[middag]] | [[middag]] | [[middag]] | [[hádegi]] |- | 453 | [[evening]] | [[Abend]] | [[avond]] | [[kväll]] | [[aften]] | [[aften]] | [[kvöld]] |- | 454 | [[night]] | [[Nacht]] | [[nacht]] | [[natt]] | [[nat]] | [[natt]] | [[nótt]] |- | 455 | [[week]] | [[Woche]] | [[week]] | [[vecka]] | [[uge]] | [[uke]] | [[vika]] |- | 456 | [[month]] | [[Monat]] | [[maand]] | [[månad]] | [[måned]] | [[måned]] | [[mánuður]] |- | 457 | [[year]] | [[Jahr]] | [[jaar]] | [[år]] | [[år]] | [[år]] | [[ár]] |- | 458 | [[spring]] | [[Frühling]] | [[lente]]; [[voorjaar]] | [[vår]] | [[forår]] | [[vår]] | [[vor]] |- | 459 | [[summer]] | [[Sommer]] | [[zomer]] | [[sommar]] | [[sommer]] | [[sommer]] | [[sumar]] |- | 460 | [[autumn]] | [[Herbst]] | [[herfst]] | [[höst]] | [[efterår]] | [[høst]] | [[haust]] |- | 461 | [[winter]] | [[Winter]] | [[winter]] | [[vinter]] | [[vinter]] | [[vinter]] | [[vetur]] |- | 462 | [[January]] | [[Januar]] | [[januari]] | [[januari]] | [[januar]] | [[januar]] | [[janúar]] |- | 463 | [[February]] | [[Februar]] | [[februari]] | [[februari]] | [[februar]] | [[februar]] | [[február]] |- | 464 | [[March]] | [[März]] | [[maart]] | [[mars]] | [[marts]] | [[mars]] | [[mars]] |- | 465 | [[April]] | [[April]] | [[april]] | [[april]] | [[april]] | [[april]] | [[apríl]] |- | 466 | [[May]] | [[Mai]] | [[mei]] | [[maj]] | [[maj]] | [[mai]] | [[maí]] |- | 467 | [[June]] | [[Juni]] | [[juni]] | [[juni]] | [[juni]] | [[juni]] | [[júní]] |- | 468 | [[July]] | [[Juli]] | [[juli]] | [[juli]] | [[juli]] | [[juli]] | [[júlí]] |- | 469 | [[August]] | [[August]] | [[augustus]] | [[augusti]] | [[august]] | [[august]] | [[ágúst]] |- | 470 | [[September]] | [[September]] | [[september]] | [[september]] | [[september]] | [[september]] | [[september]] |- | 471 | [[October]] | [[Oktober]] | [[oktober]] | [[oktober]] | [[oktober]] | [[oktober]] | [[október]] |- | 472 | [[November]] | [[November]] | [[november]] | [[november]] | [[november]] | [[november]] | [[nóvember]] |- | 473 | [[December]] | [[Dezember]] | [[december]] | [[december]] | [[december]] | [[desember]] | [[desember]] |- | 474 | [[Monday]] | [[Montag]] | [[maandag]] | [[måndag]] | [[mandag]] | [[mandag]] | [[mánudagur]] |- | 475 | [[Tuesday]] | [[Dienstag]] | [[dinsdag]] | [[tisdag]] | [[tirsdag]] | [[tirsdag]] | [[þriðjudagur]] |- | 476 | [[Wednesday]] | [[Mittwoch]] | [[woensdag]] | [[onsdag]] | [[onsdag]] | [[onsdag]] | [[miðvikudagur]] |- | 477 | [[Thursday]] | [[Donnerstag]] | [[donderdag]] | [[torsdag]] | [[torsdag]] | [[torsdag]] | [[fimmtudagur]] |- | 478 | [[Friday]] | [[Freitag]] | [[vrijdag]] | [[fredag]] | [[fredag]] | [[fredag]] | [[föstudagur]] |- | 479 | [[Saturday]] | [[Samstag]] | [[zaterdag]] | [[lördag]] | [[lørdag]] | [[lørdag]] | [[laugardagur]] |- | 480 | [[Sunday]] | [[Sonntag]] | [[zondag]] | [[söndag]] | [[søndag]] | [[søndag]] | [[sunnudagur]] |- | 481 | [[big]] | [[groß]] | [[groot]] | [[stor]] | [[stor]] | [[stor]] | [[stór]] |- | 482 | [[little]] | [[klein]] | [[klein]] | [[liten]] | [[lille]] | [[liten]] | [[lítill]] |- | 483 | [[long]] | [[lang]] | [[lang]] | [[lång]] | [[lang]] | [[lang]] | [[langur]] |- | 484 | [[short]] | [[kurz]] | [[kort]] | [[kort]] | [[kort]] | [[kort]] | [[stuttur]] |- | 485 | [[wide]] | [[breit]] | [[breed]] | [[bred]] | [[bred]] | [[bred]] | [[breiður]] |- | 486 | [[narrow]] | [[schmal]] | [[smal]] | [[smal]] | [[smal]] | [[smal]] | [[mjór]] |- | 487 | [[dense]] | [[dicht]] | [[dicht]] | [[tät]] | [[tæt]] | [[tett]] | [[þéttur]] |- | 488 | [[thick]] | [[dick]] ([[Gegenstand]]) | [[dik]] | [[tjock]] | [[tyk]] | [[tykk]] | [[þykkur]] |- | 489 | [[thin]] | [[dünn]] | [[dun]] | [[tunn]] | [[tynd]] | [[tynn]] | [[þunnur]] |- | 490 | [[delicate]], [[fine]] | [[fein]] | [[fijn]] | [[fin]] | [[fin]] | [[fin]] | [[fíngerður]] |- | 491 | [[firm]], [[solid]] | [[fest]] | [[vast]] | [[fast]] | [[fast]] | [[fast]] | [[fastur]] |- | 492 | [[flat]] | [[flach]] | [[plat]] | [[platt]] | [[flad]] | [[flat]] | [[flatur]] |- | 493 | [[smooth]] | [[glatt]] | [[glad]] | [[glatt]] | [[glat]] | [[glatt]] | [[háll]]; [[sléttur]] |- | 494 | [[hard]] | [[hart]] | [[hard]] | [[hård]] | [[hård]] | [[hard]] | [[harður]] |- | 495 | [[soft]] | [[weich]] | [[week]] | [[mjuk]] | [[blød]] | [[myk]]; [[bløt]] | [[mjúkur]] |- | 496 | [[round]] | [[rund]] | [[rond]] | [[rund]] | [[rund]] | [[rund]] | [[kringlóttur]] |- | 497 | [[pointed]] | [[spitz]] | [[spits]]; [[puntig]] | [[toppig]]; [[spetsig]] | [[spids]] | [[spiss]] | [[oddhvass]] |- | 498 | [[sharp]] | [[scharf]] | [[scherp]] | [[vass]]; [[skarp]] | [[skarp]] | [[kvass]] | [[beittur]] |- | 499 | [[blunt]] | [[stumpf]] | [[stomp]] | [[slö]] | [[sløv]]; [[stump]] | [[stubb]] | [[bitlaus]] |- | 500 | [[heavy]] | [[schwer]] | [[zwaar]] | [[tung]] | [[tung]] | [[tung]] | [[þungur]] |- | 501 | [[beautiful]] | [[schön]] | [[mooi]]; [[fraai]] | [[skön]]; [[vacker]] | [[skøn]] | [[pen]]; [[vakker]] | [[fagur]]; [[fallegur]] |- | 502 | [[hot]] | [[heiß]] | [[heet]] | [[het]] | [[hed]] | [[het]] | [[heitur]] |- | 503 | [[warm]] | [[warm]] | [[warm]] | [[varm]] | [[varm]] | [[varm]] | [[hlýr]]; [[heitur]] |- | 504 | [[cold]] | [[kalt]] | [[koud]] | [[kall]] | [[kold]] | [[kald]] | [[kaldur]] |- | 505 | [[cool]] | [[kühl]] | [[koel]] | [[sval]]; [[kylig]] | [[kølig]] | [[kjølig]] | [[svalur]] |- | 506 | [[fresh]] | [[frisch]] | [[fris]] | [[färsk]] | [[frisk]] | [[fersk]] | [[frískur]] |- | 507 | [[damp]] | [[feucht]] | [[vochtig]] | [[fuktig]] | [[fugtig]] | [[fuktig]] | [[rakur]]; [[þvalur]] |- | 508 | [[wet]] | [[nass]] | [[nat]] | [[våt]] | [[våd]] | [[våt]] | [[votur]]; [[blautur]] |- | 509 | [[dry]] | [[trocken]] | [[droog]] | [[torr]] | [[tør]] | [[tørr]] | [[þurr]] |- | 510 | [[full]] | [[voll]] | [[vol]] | [[full]] | [[fuld]] | [[full]] | [[fullur]] |- | 511 | [[empty]] | [[leer]] | [[leeg]] | [[tom]] | [[tom]] | [[tom]] | [[tómur]] |- | 512 | [[open]] | [[offen]] | [[open]] | [[öppen]] | [[åben]] | [[åpen]] | [[opinn]] |- | 513 | [[closed]] | [[geschlossen]] | [[gesloten]] | [[stängd]] | [[lukket]] | [[lukket]] | [[lokaður]] |- | 514 | [[clean]] | [[sauber]] | [[net]]; [[schoon]] | [[ren]] | [[ren]] | [[ren]] | [[þrifinn]] |- | 515 | [[dirty]] | [[schmutzig]] | [[vuil]] | [[snuskig]] | [[snavset]] | [[skitten]] | [[óhreinn]]; [[sóðalegur]] |- | 516 | [[raw]] | [[roh]] | [[rauw]] | [[rå]] | [[rå]] | [[rå]] | [[hrár]] |- | 517 | [[ripe]] | [[reif]] | [[rijp]] | [[mogen]] | [[moden]] | [[moden]] | [[þroskaður]] |- | 518 | [[delicious]] | [[lecker]] | [[lekker]] | [[läcker]] | [[lækker]] | [[lekker]] | [[ljúffengur]] |- | 519 | [[sweet]] | [[süß]] | [[zoet]] | [[söt]] | [[sød]] | [[søt]] | [[sætur]] |- | 520 | [[bitter]] | [[bitter]] | [[bitter]] | [[besk]]; [[bitter]] | [[bitter]] | [[besk]]; [[bitter]] | [[beiskur]] |- | 521 | [[sour]] | [[sauer]] | [[zuur]] | [[sur]] | [[sur]] | [[sur]] | [[súr]] |- | 522 | [[bright]] | [[hell]] | [[licht]]; [[helder]] | [[ljus]] | [[lys]] | [[lys]] | [[bjartur]] |- | 523 | [[dark]] | [[dunkel]] | [[donker]] | [[mörk]] | [[mørk]] | [[mørk]] | [[dimmur]] |- | 524 | [[black]] | [[schwarz]] | [[zwart]] | [[svart]] | [[sort]] | [[svart]] | [[svartur]] |- | 525 | [[white]] | [[weiß]] | [[wit]] | [[vit]] | [[hvid]] | [[hvit]] | [[hvítur]] |- | 526 | [[red]] | [[rot]] | [[rood]] | [[röd]] | [[rød]] | [[rød]] | [[rauður]] |- | 527 | [[yellow]] | [[gelb]] | [[geel]] | [[gul]] | [[gul]] | [[gul]] | [[gulur]] |- | 528 | [[blue]] | [[blau]] | [[blauw]] | [[blå]] | [[blå]] | [[blå]] | [[blár]] |- | 529 | [[green]] | [[grün]] | [[groen]] | [[grön]] | [[grøn]] | [[grønn]] | [[grænn]] |- | 530 | [[grey]] | [[grau]] | [[grijs]] | [[grå]] | [[grå]] | [[grå]] | [[grár]] |- | 531 | [[colourful]] | [[bunt]] | [[bont]] | [[brokig]] | [[broget]] | [[broket]] | [[marglitur]] |- | 532 | [[cheap]] | [[billig]] | [[goedkoop]] | [[billig]] | [[billig]] | [[billig]] | [[ódýr]] |- | 533 | [[expensive]] | [[teuer]] | [[duur]] | [[dyr]] | [[dyr]] | [[dyr]] | [[dýr]] |- | 534 | [[precious]] | [[wertvoll]] | [[kostbaar]]; [[waardevol]] | [[värdefull]] | [[værdifuld]] | [[verdifull]] | [[verðmætur]] |- | 535 | [[blind]] | [[blind]] | [[blind]] | [[blind]] | [[blind]] | [[blind]] | [[blindur]] |- | 536 | [[deaf]] | [[taub]] | [[doof]] | [[döv]] | [[døv]] | [[døv]] | [[heyrnarlaus]] |- | 537 | [[powerful]] | [[kräftig]] | [[krachtig]] | [[kraftig]] | [[kraftig]] | [[kraftig]] | [[öflugur]] |- | 538 | [[strong]] | [[stark]] | [[sterk]] | [[stark]] | [[stærk]] | [[sterk]] | [[sterkur]] |- | 539 | [[weak]] | [[schwach]] | [[zwak]] | [[svag]] | [[svag]] | [[svak]] | [[veill]] |- | 540 | [[fat]] | [[fett]] | [[vet]] | [[fet]] | [[fed]] | [[fet]] | [[feitur]] |- | 541 | [[slim]] | [[schlank]] | [[slank]] | [[slank]] | [[slank]] | [[slank]] | [[grannur]]; [[spengilegur]] |- | 542 | [[pretty]] | [[hübsch]] | [[leuk]] | [[snygg]]; [[vacker]] | [[køn]] | [[pen]] | [[snotur]]; [[laglegur]] |- | 543 | [[evil]] | [[böse]] | [[kwaad]] | [[ond]]; [[elak]] | [[ond]]; [[slem]] | [[slem]] | [[illur]]; [[vondur]] |- | 544 | [[stupid]] | [[dumm]] | [[dom]] | [[dum]] | [[dum]] | [[dum]] | [[heimskur]] |- | 545 | [[lazy]] | [[faul]] | [[lui]] | [[lat]] | [[doven]] | [[lat]]; [[doven]] | [[latur]] |- | 546 | [[diligent]] | [[fleißig]] | [[vlijtig]] | [[flitig]] | [[flittig]] | [[flittig]] | [[iðinn]] |- | 547 | [[stingy]] | [[geizig]] | [[gierig]] | [[snål]]; [[girig]] | [[gerrig]] | [[gjerrig]] | [[nískur]] |- | 548 | [[clever]] | [[klug]] | [[slim]]; [[schrander]]; [[verstandig]] | [[klok]] | [[klog]] | [[klok]] | [[hygginn]] |- | 549 | [[skilful]] | [[geschickt]] | [[handig]]; [[vaardig]] | [[händig]]; [[skicklig]] | [[dygtig]]; [[behændig]] | [[hendig]]; [[skikket]] | [[fimur]]; [[laginn]] |- | 550 | [[dear]] | [[lieb]] | [[lief]] | [[kär]]; [[snäll]] | [[rar]] | [[kjær]]; [[snill]] | [[kær]]; [[ljúfur]] |- | 551 | [[merry]] | [[lustig]] | [[vrolijk]] | [[rolig]]; [[lustig]] | [[lystig]] | [[morsom]] | [[kátur]] |- | 552 | [[gentle]] | [[sanft]] | [[zacht]] | [[mild]] | [[blid]] | [[blid]] | [[blíður]] |- | 553 | [[hungry]] | [[hungrig]] | [[hongerig]] | [[hungrig]] | [[sulten]] | [[sulten]] | [[soltinn]]; [[hungraður]] |- | 554 | [[sick]], [[ill]] | [[krank]] | [[ziek]] | [[sjuk]] | [[syg]] | [[syk]] | [[sjúkur]] |- | 555 | [[naked]] | [[nackt]] | [[naakt]] | [[naken]] | [[nøgen]] | [[naken]] | [[nakinn]] |- | 556 | [[sad]] | [[traurig]] | [[treurig]]; [[bedroefd]] | [[ledsen]]; [[sorgsen]] | [[bedrøvet]] | [[sørgmodig]] | [[dapur]]; [[hryggur]] |- | 557 | [[living]] | [[lebendig]] | [[levend]] | [[levande]] | [[levende]] | [[levende]] | [[lifandi]] |- | 558 | [[good]] | [[gut]] | [[goed]] | [[bra]] | [[god]] | [[god]] | [[góður]] |- | 559 | [[bad]] | [[schlecht]] | [[slecht]] | [[dålig]] | [[dårlig]] | [[dårlig]] | [[slæmur]]; [[lélegur]] |- | 560 | [[correct]] | [[richtig]] | [[juist]] | [[riktig]] | [[rigtig]] | [[riktig]] | [[réttur]] |- | 561 | [[nasty]], [[dire]] | [[schlimm]] | [[erg]]; [[kwaad]] | [[illa]] | [[slem]] | [[slem]] | [[slæmur]] |- | 562 | [[true]] | [[wahr]] | [[waar]] | [[sann]] | [[sand]] | [[sann]] | [[sannur]] |- | 563 | [[old]] | [[alt]] | [[oud]] | [[gammal]] | [[gammel]] | [[gammel]] | [[gamall]] |- | 564 | [[new]] | [[neu]] | [[nieuw]] | [[ny]] | [[ny]] | [[ny]] | [[nýr]] |- | 565 | [[former]] | [[ehemalig]] | [[voormalig]] | [[forn]]; [[tidigare]] | [[forhenværende]] | [[forhenværende]] | [[fyrrverandi]] |- | 566 | [[aged]], [[old]] | [[alt]] ([[Lebewesen]]) | [[oud]] | [[gammal]] | [[gammel]] | [[gammel]] | [[gamall]] |- | 567 | [[young]] | [[jung]] | [[jong]] | [[ung]] | [[ung]] | [[ung]] | [[ungur]] |- | 568 | [[poor]] | [[arm]] | [[arm]] | [[fattig]] | [[fattig]] | [[fattig]] | [[vesall]]; [[fátækur]] |- | 569 | [[rich]] | [[reich]] | [[rijk]] | [[rik]] | [[rig]] | [[rik]] | [[ríkur]]; [[auðugur]] |- | 570 | [[familiar]] | [[bekannt]] | [[bekend]] | [[känd]] | [[kendt]] | [[kjent]] | [[kunnugur]] |- | 571 | [[famous]] | [[berühmt]] | [[beroemd]] | [[berömd]] | [[berømt]] | [[berømt]] | [[frægur]] |- | 572 | [[foreign]] | [[fremd]] | [[vreemd]] | [[främmande]] | [[fremmed]] | [[fremmed]] | [[framandi]]; [[ókunnugur]] |- | 573 | [[different]] | [[verschieden]] | [[verscheiden]]; [[verschillend]] | [[åtskillig]] | [[forskellig]] | [[forskjellig]] | [[ýmis]] |- | 574 | [[near]] | [[nah]] | [[nabij]]; [[nabijgelegen]] | [[nära]] | [[nær]] | [[nær]] | [[nálægur]] |- | 575 | [[far]] | [[fern]] | [[ver]] | [[fjärran]] | [[fjern]] | [[fjern]] | [[fjarri]]; [[fjarlægur]] |- | 576 | [[left]] | [[linker]] | [[linker]] | [[vänster]] | [[venstre]] | [[venstre]] | [[vinstri]] |- | 577 | [[right]] | [[rechter]] | [[rechter]] | [[höger]] | [[højre]] | [[høyre]] | [[hægri]] |- | 578 | [[other]] | [[anderer]] | [[andere]] | [[annan]] | [[anden]] | [[annen]] | [[annar]] |- | 579 | [[first]] | [[erster]] | [[eerste]] | [[första]] | [[første]] | [[første]] | [[fyrsti]] |- | 580 | [[second]] | [[zweiter]] | [[tweede]] | [[andra]] | [[anden]] | [[annen]] | [[annar]] |- | 581 | [[third]] | [[dritter]] | [[derde]] | [[tredje]] | [[tredje]] | [[tredje]] | [[þriðji]] |- | 582 | [[last]] | [[letzter]] | [[laatste]] | [[sist]] | [[sidste]] | [[sist]] | [[síðasti]] |- | 583 | [[alone]] | [[allein]] | [[alleen]] | [[allena]] | [[alene]] | [[alene]] | [[einn]]; [[aleinn]] |- | 584 | [[at]] [[once]] | [[auf]] [[einmal]] | [[ineens]]; [[tegelijk]] | [[på]] [[en]] [[gång]] | [[på]] [[én]] [[gang]] | [[med]] [[ett]] | [[allt]] [[í]] [[einu]] |- | 585 | [[together]] | [[zusammen]] | [[samen]]; [[bijeen]] | [[tillsammans]] | [[sammen]] | [[sammen]] | [[saman]] |- | 586 | [[long]] | [[lange]] | [[lang]] | [[länge]] | [[længe]] | [[lenge]] | [[lengi]] |- | 587 | [[suddenly]] | [[plötzlich]] | [[eensklaps]]; [[plotsklaps]] | [[plötsligt]] | [[pludselig]] | [[plutselig]] | [[skyndilega]] |- | 588 | [[instantly]] | [[sofort]] | [[terstond]]; [[aanstonds]]; [[onmiddelijk]] | [[strax]]; [[genast]] | [[straks]] | [[straks]] | [[strax]]; [[þegar]] [[í]] [[stað]] |- | 589 | [[later]] | [[später]] | [[later]] | [[senare]] | [[senere]] | [[senere]] | [[seinna]] |- | 590 | [[now]] | [[jetzt]] | [[nu]]; [[nou]]; [[thans]] | [[nu]] | [[nu]] | [[nå]] | [[nú]]; [[núna]] |- | 591 | [[today]] | [[heute]] | [[heden]]; [[vandaag]] | [[i]] [[dag]] | [[i]] [[dag]] | [[i]] [[dag]] | [[í]] [[dag]] |- | 592 | [[tomorrow]] | [[morgen]] | [[morgen]] | [[i]] [[morgon]] | [[i]] [[morgen]] | [[i]] [[morgen]] | [[á]] [[morgun]] |- | 593 | [[soon]] | [[bald]] | [[gauw]]; [[weldra]] | [[snart]] | [[snart]] | [[snart]] | [[brátt]]; [[bráðum]] |- | 594 | [[then]] | [[dann]] | [[dan]]; [[toen]] | [[då]] | [[så]] | [[så]] | [[svo]]; [[síðan]] |- | 595 | [[yesterday]] | [[gestern]] | [[gisteren]] | [[i]] [[går]] | [[i]] [[går]] | [[i]] [[går]] | [[í]] [[gær]] |- | 596 | [[once]] | [[einst]] | [[eens]] | [[en]] [[gång]] | [[engang]] | [[engang]] | [[forðum]] |- | 597 | [[at]] [[that]] [[time]] | [[damals]] | [[toen]]; [[destijds]] | [[då]]; [[den]] [[gången]] | [[dengang]] | [[den]] [[gang]] | [[þá]]; [[á]] [[þeim]] [[tímum]] |- | 598 | [[afterwards]] | [[danach]] | [[daarna]] | [[därefter]] | [[derefter]] | [[deretter]] | [[á]] [[eftir]] [[því]] |- | 599 | [[before]] | [[vorher]] | [[vooraf]]; [[van]] [[tevoren]] | [[före]]; [[förut]] | [[før]]; [[forud]] | [[før]]; [[i]] [[forveien]] | [[áður]] |- | 600 | [[at]] [[first]] | [[zuerst]] | [[eerst]]; [[het]] [[eerst]] | [[först]] | [[først]] | [[først]] | [[fyrst]] |- | 601 | [[once]] | [[einmal]] | [[eens]]; [[eenmaal]] | [[en]] [[gång]] | [[en]] [[gang]] | [[en]] [[gang]] | [[einu]] [[sinni]] |- | 602 | [[sometimes]] | [[manchmal]] | [[soms]] | [[ibland]] | [[sommetider]] | [[somme]] [[tider]] | [[stundum]] |- | 603 | [[often]] | [[oft]] | [[vaak]]; [[dikwijls]] | [[ofta]] | [[ofte]] | [[ofte]] | [[oft]] |- | 604 | [[always]] | [[immer]] | [[altijd]] | [[alltid]] | [[altid]] | [[alltid]] | [[alltaf]]; [[sífellt]] |- | 605 | [[never]] | [[niemals]] | [[nooit]] | [[aldrig]] | [[aldrig]] | [[aldri]] | [[aldrei]] |- | 606 | [[here]] | [[hier]] | [[hier]] | [[här]] | [[her]] | [[her]] | [[hér]] |- | 607 | [[hither]] | [[hierhin]] | [[hierheen]] | [[hit]] | [[hid]]; [[herhen]] | [[hit]] | [[hingað]] |- | 608 | [[hence]] | [[von]] [[hier]] | [[van]] [[hier]]; [[hiervandaan]] | [[härifrån]] | [[herfra]] | [[herfra]] | [[héðan]] |- | 609 | [[there]] | [[dort]] | [[daar]]; [[ginds]] | [[där]] | [[der]] | [[der]] | [[þar]]; [[þarna]] |- | 610 | [[thither]] | [[dorthin]] | [[daarheen]] | [[dit]] | [[derhen]] | [[dit]] | [[þangað]] |- | 611 | [[ahead]] | [[geradeaus]] | [[rechtuit]]; [[rechtdoor]] | [[rätt]] [[fram]] | [[lige]] [[ud]] | [[rett]] [[fram]] | [[beint]] [[áfram]] |- | 612 | [[forward]] | [[vorwärts]] | [[vooruit]]; [[voorwaarts]] | [[fram]]; [[framåt]] | [[fremad]] | [[fram]]; [[framover]] | [[áfram]] |- | 613 | [[backward]] | [[rückwärts]] | [[achteruit]]; [[achterwaarts]] | [[baklänges]] | [[baglæns]] | [[baklengs]] | [[aftur]] [[á]] [[bak]] |- | 614 | [[back]] | [[zurück]] | [[terug]] | [[tillbaka]] | [[tilbage]] | [[tilbake]] | [[aftur]]; [[til]] [[baka]] |- | 615 | [[below]] | [[unten]] | [[beneden]]; [[onderaan]] | [[nere]]; [[nedanför]] | [[nede]]; [[forneden]] | [[nede]] | [[niðri]]; [[fyrir]] [[neðan]] |- | 616 | [[down]] | [[hinab]] | [[omlaag]]; [[naar]] [[beneden]] | [[ned]]; [[nedåt]] | [[ned]]; [[nedad]] | [[ned]]; [[nedover]] | [[niður]]; [[niður]] [[eftir]] |- | 617 | [[above]] | [[oben]] | [[boven]] | [[ovan]]; [[ovanpå]] | [[oppe]]; [[ovenpå]] | [[oppe]]; [[ovenpå]] | [[uppi]] |- | 618 | [[up]] | [[hinauf]] | [[omhoog]]; [[naar]] [[boven]] | [[upp]]; [[uppåt]] | [[op]]; [[opad]] | [[opp]]; [[oppover]] | [[upp]]; [[upp]] [[eftir]] |- | 619 | [[everywhere]] | [[überall]] | [[alom]]; [[overal]] | [[överallt]] | [[overalt]] | [[overalt]] | [[alls]] [[staðar]] |- | 620 | [[not]] | [[nicht]] | [[niet]] | [[ej]]; [[inte]] | [[ikke]] | [[ikke]] | [[ekki]] |- | 621 | [[a]] [[little]] | [[ein]] [[wenig]] | [[wat]] | [[litet]] | [[lidt]] | [[litt]] | [[dálítið]] |- | 622 | [[hardly]] | [[kaum]] | [[amper]]; [[nauwelijks]] | [[knappt]]; [[knappast]] | [[knap]]; [[næppe]] | [[neppe]] | [[varla]]; [[tæplega]] |- | 623 | [[very]] | [[sehr]] | [[erg]]; [[zeer]] | [[mycket]] | [[meget]] | [[svært]] | [[mjög]] |- | 624 | [[so]] | [[so]] | [[zo]] | [[så]] | [[så]] | [[så]] | [[svo]]; [[þannig]] |- | 625 | [[still]] | [[noch]] | [[nog]] | [[än]]; [[ännu]] | [[endnu]] | [[enda]] | [[enn]]; [[ennþá]] |- | 626 | [[only]] | [[nur]] | [[maar]]; [[alleen]] | [[bara]]; [[endast]] | [[kun]]; [[bare]] | [[bare]] | [[bara]]; [[aðeins]] |- | 627 | [[already]] | [[schon]] | [[al]]; [[reeds]] | [[redan]] | [[alt]]; [[allerede]] | [[alt]]; [[allerede]] | [[nú]] [[þegar]] |- | 628 | [[again]] | [[wieder]] | [[weer]]; [[terug]] | [[åter]] | [[igen]] | [[igjen]] | [[aftur]]; [[að]] [[nýju]] |- | 629 | [[in]] [[vain]] | [[vergebens]] | [[vergeefs]]; [[tevergeefs]] | [[förgäves]] | [[forgæves]] | [[forgjeves]] | [[árangurslaust]] |- | 630 | [[in]] [[front]] [[of]] | [[vor]] | [[voor]] | [[utanför]] | [[foran]]; [[uden]] [[for]] | [[foran]]; [[utenfor]] | [[fyrir]] |- | 631 | [[behind]] | [[hinter]] | [[achter]] | [[bakom]] | [[bag]]; [[bagved]] | [[bak]]; [[bakom]] | [[bak]] [[við]]; [[aftur]] [[fyrir]] |- | 632 | [[under]] | [[unter]] | [[onder]]; [[beneden]] | [[under]] | [[under]] | [[under]] | [[undir]] |- | 633 | [[through]] | [[durch]] | [[door]] | [[genom]]; [[igenom]] | [[gennem]]; [[igennem]] | [[gjennom]]; [[igjennom]] | [[gegnum]] |- | 634 | [[next]] [[to]] | [[neben]] | [[naast]] | [[bredvid]]; [[vid]] [[sidan]] [[av]] | [[ved]] [[siden]] [[af]] | [[ved]] [[siden]] [[av]] | [[hjá]]; [[við]] [[hliðina]] [[á]] |- | 635 | [[between]] | [[zwischen]] | [[tussen]] | [[mellan]] | [[mellem]] | [[mellom]] | [[milli]]; [[á]] [[milli]] |- | 636 | [[because]] [[of]] | [[wegen]] | [[wegens]]; [[vanwege]] | [[på]] [[grund]] [[av]] | [[på]] [[grund]] [[af]] | [[på]] [[grunn]] [[av]] | [[vegna]] |- | 637 | [[this]] | [[dies]] | [[dit]] | [[detta]] | [[dette]] | [[dette]] | [[þetta]] |- | 638 | [[that]] | [[das]] | [[dat]] | [[det]] | [[det]] | [[det]] | [[það]] |- | 639 | [[everything]] | [[alles]] | [[alles]] | [[allt]] | [[alt]] | [[alt]] | [[allt]] |- | 640 | [[I]] | [[ich]] | [[ik]] | [[jag]] | [[jeg]] | [[jeg]] | [[ég]] |- | 641 | [[thou]] | [[du]] | [[je]]; [[jij]] | [[du]] | [[du]] | [[du]] | [[þú]] |- | 642 | [[he]] | [[er]] | [[hij]] | [[han]] | [[han]] | [[han]] | [[hann]] |- | 643 | [[we]] | [[wir]] | [[we]]; [[wij]] | [[vi]] | [[vi]] | [[vi]] | [[við]] |- | 644 | [[you]] | [[ihr]] | [[jullie]] | [[ni]] | [[I]] | [[dere]] | [[þið]] |- | 645 | [[they]] | [[sie]] | [[ze]]; [[zij]] | [[de]] | [[de]] | [[de]] | [[þær]]; [[þeir]] |- | 646 | [[what]] | [[was]] | [[wat]] | [[vad]] | [[hvad]] | [[hva]] | [[hvað]] |- | 647 | [[who]] | [[wer]] | [[wie]] | [[vem]] | [[hvem]] | [[hvem]] | [[hver]] |- | 648 | [[where]] | [[wo]] | [[waar]] | [[var]] | [[hvor]] | [[hvor]] | [[hvar]] |- | 649 | [[where]] [[to]] | [[wohin]] | [[waarheen]] | [[vart]] | [[hvorhen]] | [[hvor]] ... [[hen]] | [[hvert]] |- | 650 | [[how]] | [[wie]] | [[hoe]] | [[hur]] | [[hvordan]] | [[hvordan]] | [[hvernig]] |- | 651 | [[why]] | [[warum]] | [[waarom]] | [[varför]] | [[hvorfor]] | [[hvorfor]] | [[hvers]] [[vegna]] |- | 652 | [[how]] [[much]] | [[wieviel]] | [[hoeveel]] | [[hur]] [[mycket]] | [[hvor]] [[meget]] | [[hvor]] [[mye]] | [[hve]] [[mikill]] |- | 653 | [[one]] | [[eins]] | [[één]] | [[en]]; [[ett]] | [[én]] | [[en]]; [[ett]] | [[einn]] |- | 654 | [[two]] | [[zwei]] | [[twee]] | [[två]] | [[to]] | [[to]] | [[tveir]] |- | 655 | [[three]] | [[drei]] | [[drie]] | [[tre]] | [[tre]] | [[tre]] | [[þrír]] |- | 656 | [[four]] | [[vier]] | [[vier]] | [[fyra]] | [[fire]] | [[fire]] | [[fjórir]] |- | 657 | [[five]] | [[fünf]] | [[vijf]] | [[fem]] | [[fem]] | [[fem]] | [[fimm]] |- | 658 | [[six]] | [[sechs]] | [[zes]] | [[sex]] | [[seks]] | [[seks]] | [[sex]] |- | 659 | [[seven]] | [[sieben]] | [[zeven]] | [[sju]] | [[syv]] | [[sju]] | [[sjö]] |- | 660 | [[eight]] | [[acht]] | [[acht]] | [[åtta]] | [[otte]] | [[åtte]] | [[átta]] |- | 661 | [[nine]] | [[neun]] | [[negen]] | [[nio]] | [[ni]] | [[ni]] | [[níu]] |- | 662 | [[ten]] | [[zehn]] | [[tien]] | [[tio]] | [[ti]] | [[ti]] | [[tíu]] |- | 663 | [[eleven]] | [[elf]] | [[elf]] | [[elva]] | [[elleve]] | [[elleve]] | [[ellefu]] |- | 664 | [[twelve]] | [[zwölf]] | [[twaalf]] | [[tolv]] | [[tolv]] | [[tolv]] | [[tólf]] |- | 665 | [[twenty]] | [[zwanzig]] | [[twintig]] | [[tjugo]] | [[tyve]] | [[tjue]] | [[tuttugu]] |- | 666 | [[thirty]] | [[dreißig]] | [[dertig]] | [[trettio]] | [[tredive]] | [[tretti]] | [[þrjátíu]] |- | 667 | [[forty]] | [[vierzig]] | [[veertig]] | [[fyrtio]] | [[fyrre]]; [[fyrretyve]] | [[førti]] | [[fjörutíu]] |- | 668 | [[fifty]] | [[fünfzig]] | [[vijftig]] | [[femtio]] | [[halvtreds]] | [[femti]] | [[fimmtíu]] |- | 669 | [[sixty]] | [[sechzig]] | [[zestig]] | [[sextio]] | [[tres]] | [[seksti]] | [[sextíu]] |- | 670 | [[seventy]] | [[siebzig]] | [[zeventig]] | [[sjuttio]] | [[halvfjerds]] | [[sytti]] | [[sjötíu]] |- | 671 | [[eighty]] | [[achtzig]] | [[tachtig]] | [[åttio]] | [[firs]] | [[åtti]] | [[áttatíu]] |- | 672 | [[ninety]] | [[neunzig]] | [[negentig]] | [[nittio]] | [[halvfems]] | [[nitti]] | [[níutíu]] |- | 673 | [[a]] [[hundred]] | [[hundert]] | [[honderd]] | [[hundra]] | [[hundrede]] | [[hundre]] | [[hundrað]] |- | 674 | [[a]] [[thousand]] | [[tausend]] | [[duizend]] | [[tusen]] | [[tusind]] | [[tusen]] | [[þúsund]] |- | 675 | [[and]] | [[und]] | [[en]] | [[och]] | [[og]] | [[og]] | [[og]] |- | 676 | [[or]] | [[oder]] | [[of]] | [[eller]] | [[eller]] | [[eller]] | [[eða]] |- | 677 | [[stand]] | [[stehen]] | [[staan]] | [[stå]] | [[stå]] | [[stå]] | [[standa]] |- | 678 | [[sit]] | [[sitzen]] | [[zitten]] | [[sitta]] | [[sidde]] | [[sitte]] | [[sitja]] |- | 679 | [[lie]] | [[liegen]] | [[liggen]] | [[ligga]] | [[ligge]] | [[ligge]] | [[liggja]] |- | 680 | [[hang]] | [[hängen]] | [[hangen]] | [[hänga]] | [[hænge]] | [[henge]] | [[hanga]] |- | 681 | [[become]] | [[werden]] | [[worden]] | [[bli]] | [[blive]] | [[bli]] | [[verða]] |- | 682 | [[happen]] | [[passieren]] | [[gebeuren]] | [[ske]]; [[hända]] | [[ske]]; [[hænde]] | [[skje]]; [[hende]] | [[gerast]] |- | 683 | [[begin]] | [[beginnen]] | [[beginnen]] | [[börja]] | [[begynde]] | [[begynne]] | [[byrja]] |- | 684 | [[end]] | [[enden]] | [[eindigen]] | [[ända]] | [[ende]] | [[ende]]; [[slutte]] | [[enda]]; [[lykta]] |- | 685 | [[change]] | [[wechseln]] | [[wijzigen]]; [[veranderen]] | [[växla]] | [[veksle]] | [[veksle]] | [[skipta]] |- | 686 | [[rise]] | [[aufgehen]] ([[Sonne]]) | [[opgaan]] | [[gå]] [[upp]] | [[gå]] [[op]]; [[stå]] [[op]] | [[stå]] [[opp]] | [[koma]] [[upp]] |- | 687 | [[set]] | [[untergehen]] ([[Sonne]]) | [[ondergaan]] | [[gå]] [[ned]] | [[gå]] [[ned]] | [[gå]] [[ned]] | [[ganga]] [[til]] [[viðar]] |- | 688 | [[shine]] | [[scheinen]] ([[Sonne]]) | [[schijnen]] | [[skina]] | [[skinne]] | [[skinne]] | [[skína]] |- | 689 | [[thunder]] | [[donnern]] | [[donderen]] | [[dundra]] | [[tordne]] | [[tordne]] | [[þruma]] |- | 690 | [[blow]] | [[wehen]] | [[waaien]] | [[blåsa]] | [[blæse]] | [[blåse]] | [[blása]] |- | 691 | [[stream]] | [[strömen]] | [[stromen]] | [[forsa]]; [[strömma]] | [[strømme]] | [[strømme]] | [[streyma]] |- | 692 | [[flow]] | [[fließen]] | [[vloeien]] | [[flyta]] | [[flyde]] | [[flyte]] | [[fljóta]] |- | 693 | [[revolve]] | [[sich]] [[drehen]] | [[draaien]]; [[zich]] [[draaien]] | [[snurra]] | [[dreje]] [[sig]] | [[dreie]] [[seg]] | [[snúast]] |- | 694 | [[sway]] | [[schwanken]] | [[wankelen]] | [[vackla]] | [[vakle]] | [[svaie]] | [[riða]]; [[rugga]] |- | 695 | [[swing]] | [[schwingen]] | [[zwieren]] | [[svinga]] | [[svinge]] | [[svinge]] | [[sveiflast]] |- | 696 | [[fall]] | [[fallen]] | [[vallen]] | [[falla]] | [[falde]] | [[falle]] | [[falla]] |- | 697 | [[burn]] | [[brennen]] | [[branden]] | [[brinna]] | [[brænde]] | [[brenne]] | [[brenna]] |- | 698 | [[smoke]] | [[rauchen]] | [[roken]] | [[ryka]] | [[ryge]] | [[ryke]] | [[reykja]] |- | 699 | [[rain]] | [[regnen]] | [[regenen]] | [[regna]] | [[regne]] | [[regne]] | [[rigna]] |- | 700 | [[freeze]] | [[gefrieren]] | [[bevriezen]] | [[frysa]] | [[fryse]] | [[fryse]] | [[frjósa]] |- | 701 | [[thaw]] | [[tauen]] | [[dooien]] | [[töa]] | [[tø]] | [[tine]] | [[þiðna]] |- | 702 | [[melt]] | [[schmelzen]] | [[smelten]] | [[smälta]] | [[smelte]] | [[smelte]] | [[bráðna]] |- | 703 | [[dry]] | [[trocknen]] | [[drogen]] | [[torka]] | [[tørre]] | [[tørre]] | [[þorna]] |- | 704 | [[boil]] | [[sieden]] | [[koken]]; [[zieden]] | [[koka]]; [[sjuda]] | [[koge]] | [[koke]] | [[sjóða]] |- | 705 | [[rot]] | [[faulen]] | [[rotten]] | [[ruttna]] | [[rådne]] | [[råtne]] | [[rotna]] |- | 706 | [[decay]] | [[verfaulen]] | [[verrotten]] | [[ruttna]] | [[rådne]] | [[råtne]] | [[rotna]] |- | 707 | [[snap]] | [[reißen]] | [[scheuren]] | [[brista]] | [[briste]] | [[briste]] | [[rifna]] |- | 708 | [[sink]] | [[versinken]] | [[verzinken]] | [[sjunka]] | [[synke]]; [[synke]] [[ned]] | [[synke]]; [[synke]] [[ned]] | [[sökkva]] |- | 709 | [[pass]] | [[vergehen]] | [[vergaan]] | [[förgå]] | [[forløbe]] | [[forløpe]] | [[líða]] |- | 710 | [[appear]] | [[erscheinen]] | [[opdagen]]; [[verschijnen]] | [[synas]]; [[visa]] [[sig]] | [[vise]] [[sig]] | [[synes]] | [[birtast]] |- | 711 | [[disappear]] | [[verschwinden]] | [[verdwijnen]] | [[försvinna]] | [[forsvinde]] | [[forsvinne]] | [[hverfa]] |- | 712 | [[drop]], [[descend]] | [[sinken]] | [[zinken]] | [[sjunka]] | [[synke]] | [[synke]] | [[síga]] |- | 713 | [[decrease]] | [[abnehmen]] | [[afnemen]]; [[verminderen]] | [[avta]]; [[minskas]] | [[aftage]] | [[avta]]; [[minske]] | [[lækka]]; [[minnka]] |- | 714 | [[increase]] | [[zunehmen]] | [[toenemen]] | [[tilltaga]] | [[tiltage]] | [[tilta]] | [[aukast]] |- | 715 | [[rise]] | [[steigen]] | [[stijgen]]; [[omhooggaan]] | [[stiga]] | [[stige]] | [[stige]] | [[stíga]] |- | 716 | [[grow]] | [[wachsen]] | [[groeien]] | [[växa]] | [[gro]]; [[vokse]] | [[gro]]; [[vokse]] | [[vaxa]] |- | 717 | [[shine]] | [[glänzen]] | [[glanzen]]; [[schitteren]] | [[glimma]] | [[glinse]] | [[skinne]] | [[glóa]]; [[glampa]] |- | 718 | [[sparkle]], [[twinkle]] | [[funkeln]] | [[fonkelen]] | [[tindra]]; [[gnistra]] | [[tindre]] | [[tindre]] | [[leiftra]] |- | 719 | [[be]] [[noisy]] | [[lärmen]] | [[lawaai]] [[maken]] | [[bråka]]; [[väsnas]] | [[larme]] | [[bråke]] | [[hafa]] [[hátt]] |- | 720 | [[chime]] | [[läuten]] | [[luiden]] | [[ringa]] | [[ringe]] | [[ringe]] | [[hringja]] |- | 721 | [[ring]] | [[klingeln]] | [[bellen]] | [[ringa]] | [[ringe]] | [[ringe]] | [[hringja]] |- | 722 | [[tinkle]] | [[klirren]] | [[rinkelen]] | [[klirra]] | [[klirre]] | [[klirre]] | [[glamra]]; [[skrölta]] |- | 723 | [[roar]] | [[brausen]] | [[bruisen]] | [[brusa]] | [[bruse]] | [[bruse]] | [[ólga]] |- | 724 | [[rustle]] | [[rauschen]] | [[ruisen]] | [[susa]] | [[suse]] | [[suse]] | [[suða]] |- | 725 | [[sound]] | [[klingen]] | [[klinken]] | [[låta]]; [[klinga]] | [[lyde]]; [[klinge]] | [[lyde]]; [[klinge]] | [[hljóma]] |- | 726 | [[bark]] | [[bellen]] | [[blaffen]] | [[skälla]] | [[gø]] | [[gjø]]; [[bjeffe]] | [[gelta]] |- | 727 | [[howl]] | [[heulen]] | [[huilen]] | [[yla]]; [[tjuta]] | [[hyle]] | [[ule]] | [[væla]]; [[ýlfra]] |- | 728 | [[blow]] | [[blasen]] | [[blazen]] | [[blåsa]] | [[blæse]] | [[blåse]] | [[blása]] |- | 729 | [[whistle]] | [[pfeifen]] | [[fluiten]] | [[vissla]] | [[fløjte]] | [[plystre]] | [[blístra]] |- | 730 | [[shout]] | [[schreien]] | [[gillen]]; [[schreeuwen]] | [[skrika]] | [[skrige]] | [[skrike]] | [[æpa]] |- | 731 | [[groan]] | [[stöhnen]] | [[steunen]] | [[stöna]] | [[stønne]] | [[stønne]] | [[stynja]] |- | 732 | [[tremble]] | [[zittern]] | [[beven]]; [[sidderen]] | [[darra]]; [[skälva]] | [[dirre]]; [[skælve]] | [[dirre]]; [[skjelve]] | [[titra]]; [[skjálfa]] |- | 733 | [[live]] | [[leben]] | [[leven]] | [[leva]] | [[leve]] | [[leve]] | [[lifa]] |- | 734 | [[be]] [[born]] | [[geboren]] [[werden]] | [[geboren]] [[worden]] | [[födas]] | [[fødes]] | [[fødes]] | [[fæðast]] |- | 735 | [[breathe]] | [[atmen]] | [[ademen]] | [[andas]] | [[ånde]] | [[ånde]]; [[puste]] | [[anda]]; [[draga]] [[andann]] |- | 736 | [[drink]] | [[trinken]] | [[drinken]] | [[dricka]] | [[drikke]] | [[drikke]] | [[drekka]] |- | 737 | [[eat]] | [[essen]] | [[eten]] | [[äta]] | [[spise]] | [[spise]] | [[borða]] |- | 738 | [[swallow]] | [[schlucken]] | [[slikken]] | [[svälja]] | [[synke]] | [[svelge]] | [[kingja]] |- | 739 | [[get]] [[tired]] | [[müde]] [[werden]] | [[moe]] [[worden]] | [[tröttna]] | [[blive]] [[træt]] | [[bli]] [[trett]] | [[þreytast]] |- | 740 | [[fall]] [[asleep]] | [[einschlafen]] | [[inslapen]] | [[somna]] | [[falde]] [[i]] [[søvn]] | [[sovne]] | [[sofna]] |- | 741 | [[sleep]] | [[schlafen]] | [[slapen]] | [[sova]] | [[sove]] | [[sove]] | [[sofa]] |- | 742 | [[wake]] [[up]] | [[aufwachen]] | [[ontwaken]]; [[wakker]] [[worden]] | [[vakna]] | [[vågne]] | [[våkne]] | [[vakna]] |- | 743 | [[get]] [[up]] | [[aufstehen]] | [[opstaan]] | [[stiga]] [[upp]] | [[stå]] [[op]] | [[stå]] [[opp]] | [[fara]] [[á]] [[fætur]] |- | 744 | [[relax]] | [[sich]] [[erholen]] | [[zich]] [[ontspannen]] | [[repa]] [[sig]]; [[hämta]] [[sig]] | [[komme]] [[sig]] | [[bli]] [[bra]]; [[komme]] [[seg]] | [[hvíla]] [[sig]] |- | 745 | [[fall]] [[ill]] | [[krank]] [[werden]] | [[ziek]] [[worden]] | [[insjukna]] | [[blive]] [[syg]] | [[bli]] [[syk]] | [[veikjast]]; [[verða]] [[veikur]] |- | 746 | [[be]] [[ill]] | [[krank]] [[sein]] | [[ziek]] [[zijn]] | [[vara]] [[sjuk]] | [[være]] [[syg]] | [[være]] [[syk]] | [[vera]] [[veikur]] |- | 747 | [[ache]] | [[schmerzen]] | [[pijn]] [[doen]] | [[smärta]]; [[göra]] [[ont]] | [[smerte]] | [[gjøre]] [[vondt]] | [[kenna]] [[til]] |- | 748 | [[cough]] | [[husten]] | [[hoesten]] | [[hosta]] | [[hoste]] | [[hoste]] | [[hósta]] |- | 749 | [[recover]] | [[genesen]] | [[genezen]] | [[tillfriskna]] | [[komme]] [[sig]] | [[komme]] [[seg]] | [[batna]]; [[frískast]] |- | 750 | [[die]] | [[sterben]] | [[sterven]]; [[overlijden]] | [[dö]] | [[dø]] | [[dø]] | [[deyja]] |- | 751 | [[perish]] | [[umkommen]] | [[omkomen]] | [[omkomma]] | [[omkomme]] | [[omkomme]] | [[farast]] |- | 752 | [[move]] | [[sich]] [[bewegen]] | [[zich]] [[bewegen]] | [[röra]] [[sig]] | [[bevæge]] [[sig]] | [[bevege]] [[seg]] | [[bifast]] |- | 753 | [[budge]] | [[sich]] [[rühren]] | [[zich]] [[verroeren]] | [[röra]] [[på]] [[sig]] | [[røre]] [[på]] [[sig]] | [[røre]] [[på]] [[seg]] | [[hreyfast]] |- | 754 | [[stand]] [[up]] | [[sich]] [[erheben]] | [[oprijzen]]; [[verrijzen]] | [[resa]] [[sig]] | [[rejse]] [[sig]] | [[reise]] [[seg]] | [[standa]] [[upp]] |- | 755 | [[sit]] [[down]] | [[sich]] [[setzen]] | [[gaan]] [[zitten]] | [[sätta]] [[sig]] | [[sætte]] [[sig]] | [[sette]] [[sig]] | [[setjast]] |- | 756 | [[tumble]] | [[hinfallen]] | [[vallen]]; [[neervallen]] | [[falla]] [[omkull]] | | [[falle]] [[over]] [[ende]] | [[detta]] |- | 757 | [[walk]] | [[laufen]] | [[lopen]] | [[löpa]] | [[løbe]] | [[løpe]] | [[labba]] |- | 758 | [[step]] | [[schreiten]] | [[stappen]]; [[schrijden]] | [[skrida]] | [[skride]] | [[skride]] | [[ganga]] |- | 759 | [[take]] [[a]] [[walk]] | [[spazierengehen]] | [[gaan]] [[wandelen]] | [[promenera]] | [[gå]] [[en]] [[tur]] | [[spasere]]; [[gå]] [[en]] [[tur]] | [[ganga]] [[sér]] [[til]] [[skemmtunar]] |- | 760 | [[rush]] | [[eilen]] | [[ijlen]]; [[haasten]] | [[ila]] | [[ile]] | [[ile]] | [[fara]] [[hratt]] |- | 761 | [[hurry]] | [[sich]] [[beeilen]] | [[zich]] [[haasten]] | [[skynda]] [[sig]] | [[skynde]] [[sig]] | [[skynde]] [[seg]] | [[flýta]] [[sér]] |- | 762 | [[dash]] | [[sausen]] | [[stuiven]] | [[susa]] | [[suse]] | [[suse]] | [[þjóta]] |- | 763 | [[run]] | [[rennen]] | [[rennen]] | [[löpa]]; [[springa]] | [[løbe]]; [[rende]] | [[løpe]] | [[hlaupa]] |- | 764 | [[jump]] | [[springen]] | [[springen]] | [[hoppa]] | [[hoppe]]; [[springe]] | [[hoppe]]; [[springe]] | [[stökkva]] |- | 765 | [[climb]] | [[klettern]] | [[klimmen]]; [[klauteren]] | [[klättra]] | [[klatre]] | [[klatre]] | [[klifra]] |- | 766 | [[seesaw]] | [[schaukeln]] | [[schommelen]] | [[gunga]] | [[gynge]] | [[huske]] | [[róla]]; [[rugga]] |- | 767 | [[creep]] | [[kriechen]] | [[kruipen]] | [[kräla]] | [[krybe]] | [[krype]] | [[skríða]] |- | 768 | [[swim]] | [[schwimmen]] | [[zwemmen]] | [[simma]] | [[svømme]] | [[svømme]] | [[synda]] |- | 769 | [[dive]] | [[tauchen]] | [[duiken]] | [[dyka]] | [[dykke]] | [[dykke]] | [[kafa]] |- | 770 | [[row]] | [[rudern]] | [[roeien]] | [[ro]] | [[ro]] | [[ro]] | [[róa]] |- | 771 | [[drive]] | [[fahren]] | [[rijden]] | [[köra]] | [[køre]] | [[kjøre]] | [[aka]]; [[fara]] |- | 772 | [[fly]] | [[fliegen]] | [[vliegen]] | [[flyga]] | [[flyve]] | [[fly]] | [[fljúga]] |- | 773 | [[go]] | [[gehen]] | [[gaan]] | [[gå]] | [[gå]] | [[gå]] | [[fara]]; [[ganga]] |- | 774 | [[go]] [[away]] | [[weggehen]] | [[weggaan]] | [[gå]] [[bort]] | [[gå]] [[bort]] | [[gå]] [[bort]] | [[fara]] [[burt]]; [[ganga]] [[burt]] |- | 775 | [[depart]] | [[abfahren]] | [[vertrekken]] | [[resa]]; [[avresa]] | [[køre]] [[bort]] | [[reise]] | [[aka]] [[burt]] |- | 776 | [[stop]] | [[anhalten]] | [[stoppen]]; [[stilhouden]] | [[stanna]] | [[standse]] | [[stanse]] | [[stöðva]] |- | 777 | [[go]] [[in]] | [[hineingehen]] | [[ingaan]]; [[binnengaan]] | [[gå]] [[in]] | [[gå]] [[ind]] | [[gå]] [[inn]] | [[ganga]] [[inn]] |- | 778 | [[enter]] | [[eintreten]] | [[binnenkomen]] | [[träda]] [[in]] | [[træde]] [[ind]] | [[tre]] [[inn]] | [[koma]] [[inn]]; [[ganga]] [[inn]] |- | 779 | [[come]] | [[kommen]] | [[komen]] | [[komma]] | [[komme]] | [[komme]] | [[koma]] |- | 780 | [[arrive]] | [[ankommen]] | [[aankomen]] | [[ankomma]] | [[ankomme]] | [[ankomme]]; [[komme]] [[til]] | [[koma]] [[til]] |- | 781 | [[come]] [[back]] | [[zurückkommen]] | [[terugkomen]] | [[återkomma]] | [[komme]] [[tilbage]] | [[komme]] [[tilbake]] | [[koma]] [[til]] [[baka]] |- | 782 | [[stay]] | [[bleiben]] | [[blijven]] | [[bli]]; [[förbli]] | [[blive]]; [[forblive]] | [[bli]]; [[forbli]] | [[haldast]]; [[vera]] [[kyrr]] |- | 783 | [[wait]] | [[warten]] | [[wachten]] | [[vänta]] | [[vente]] | [[vente]] | [[bíða]] |- | 784 | [[await]] | [[erwarten]] | [[verwachten]] | [[vänta]] | [[vente]]; [[afvente]] | [[vente]] | [[búast]] [[við]]; [[eiga]] [[von]] [[á]] |- | 785 | [[look]] [[for]] | [[suchen]] | [[zoeken]] | [[leta]] | [[søge]] | [[søke]] | [[leita]] |- | 786 | [[find]] | [[finden]] | [[vinden]] | [[finna]] | [[finde]] | [[finne]] | [[finna]] |- | 787 | [[try]] | [[versuchen]] | [[proberen]]; [[beproeven]] | [[försöka]] | [[forsøge]] | [[prøve]]; [[forsøke]] | [[reyna]] |- | 788 | [[prepare]] | [[vorbereiten]] | [[voorbereiden]] | [[förbereda]] | [[forberede]] | [[forberede]] | [[undirbúa]] |- | 789 | [[love]] | [[lieben]] | [[houden]] [[van]] | [[älska]] | [[elske]] | [[elske]] | [[elska]] |- | 790 | [[like]] | [[mögen]] | [[lusten]]; [[houden]] [[van]] | [[tycka]] [[om]] | [[holde]] [[af]]; [[kunne]] [[lide]] | [[like]] | [[þykja]] [[gott]]; [[falla]] [[í]] [[geð]] |- | 791 | [[laugh]] | [[lachen]] | [[lachen]] | [[skratta]] | [[le]] | [[le]] | [[hlæja]] |- | 792 | [[move]] | [[rühren]] | [[roeren]] | [[röra]] | [[røre]] | [[røre]] | [[snerta]] |- | 793 | [[weep]], [[cry]] | [[weinen]] | [[huilen]]; [[schreien]] | [[gråta]] | [[græde]] | [[gråte]] | [[gráta]] |- | 794 | [[grumble]] | [[schimpfen]] | [[kijven]]; [[schelden]] | [[skälla]] | [[skænde]] | [[skjelle]] | [[skammast]] |- | 795 | [[be]] [[annoyed]] | [[sich]] [[ärgern]] | [[zich]] [[ergeren]] | [[förargas]] | [[ærgre]] [[sig]] | [[ergre]] [[seg]] | [[sárna]]; [[gremjast]] |- | 796 | [[be]] [[afraid]] | [[sich]] [[fürchten]] | [[bang]] [[zijn]] | [[vara]] [[rädd]] | [[være]] [[bange]] | [[være]] [[redd]] | [[óttast]] |- | 797 | [[be]] [[afraid]] [[of]] | [[fürchten]] | [[vrezen]] | [[frukta]] | [[være]] [[bange]] [[for]] | [[være]] [[redd]] [[for]] | [[óttast]] |- | 798 | [[flee]] | [[fliehen]] | [[vluchten]] | [[fly]]; [[rymma]] | [[flygte]] | [[rømme]]; [[flykte]] | [[flýja]] |- | 799 | [[escape]] | [[flüchten]] | [[ontsnappen]]; [[ontkomen]] | [[fly]] | [[flygte]] | [[flykte]] | [[strjúka]] |- | 800 | [[see]] | [[sehen]] | [[zien]] | [[se]] | [[se]] | [[se]] | [[sjá]] |- | 801 | [[look]] [[at]] | [[anschauen]] | [[aankijken]] | [[se]] [[på]]; [[betrakta]] | [[se]] [[på]]; [[betragte]] | [[se]] [[på]]; [[betrakte]] | [[horfa]] [[á]] |- | 802 | [[watch]] | [[ansehen]] | [[aanzien]]; [[bekijken]] | [[åse]] | [[anse]] | [[anse]] | [[líta]] [[á]] |- | 803 | [[hear]] | [[hören]] | [[horen]] | [[höra]] | [[høre]] | [[høre]] | [[heyra]] |- | 804 | [[listen]] | [[zuhören]] | [[luisteren]] | [[höra]] [[på]]; [[lyssna]] [[till]] | [[høre]] [[til]] | [[tilhøre]] | [[hlusta]] |- | 805 | [[taste]] | [[probieren]] | [[proeven]] | [[smaka]]; [[smaka]] [[på]] | [[smage]]; [[smage]] [[på]] | [[smake]]; [[smake]] [[på]] | [[smakka]] |- | 806 | [[smell]] | [[riechen]] | [[ruiken]] | [[lukta]] | [[lugte]] | [[lukte]] | [[þefa]] |- | 807 | [[feel]] | [[fühlen]] | [[voelen]] | [[känna]] | [[føle]] | [[føle]] | [[finna]] [[til]] |- | 808 | [[seem]] | [[scheinen]] | [[lijken]] | [[verka]]; [[tyckas]] | [[synes]] | [[se]] [[ut]] | [[virðast]] |- | 809 | [[show]] | [[zu]] [[sehen]] [[sein]] | [[te]] [[zien]] [[zijn]] | [[synas]]; [[kunna]] [[ses]] | [[synes]] | [[synes]] | [[vera]] [[að]] [[sjá]] |- | 810 | [[hear]] | [[vernehmen]] | [[vernemen]] | [[få]] [[veta]]; [[förnimma]] | [[erfare]] | [[få]] [[vite]] | [[heyra]]; [[greina]] |- | 811 | [[be]] [[cold]] | [[frieren]] | [[het]] [[koud]] [[hebben]] | [[frysa]] | [[fryse]] | [[fryse]] | [[frjósa]] |- | 812 | [[do]] | [[tun]] | [[doen]] | [[göra]] | [[gøre]] | [[gjøre]] | [[gera]] |- | 813 | [[can]] | [[können]] | [[kunnen]] | [[kunna]] | [[kunne]] | [[kunne]] | [[geta]] |- | 814 | [[want]] | [[wollen]] | [[willen]] | [[vilja]] | [[ville]] | [[ville]] | [[ætla]]; [[vilja]] |- | 815 | [[start]] | [[anfangen]] | [[beginnen]]; [[aanvangen]] | [[börja]] | [[begynde]] | [[begynne]] | [[hefja]] |- | 816 | [[finish]] | [[beenden]] | [[beëindigen]] | [[avsluta]] | [[afslutte]] | [[avslutte]] | [[enda]]; [[ljúka]] |- | 817 | [[stop]] | [[aufhören]] | [[ophouden]] | [[sluta]]; [[upphöra]] | [[ophøre]]; [[holde]] [[op]] | [[slutte]]; [[holde]] [[opp]] | [[lykta]] |- | 818 | [[succeed]] | [[gelingen]] | [[lukken]]; [[gelukken]] | [[lyckas]] | [[lykkes]] | [[lykkes]] | [[heppnast]] |- | 819 | [[turn]] [[out]] | [[geraten]] | [[uitvallen]] | [[bli]] | [[blive]] | [[bli]] | [[lukkast]] |- | 820 | [[open]] | [[öffnen]] | [[openen]]; [[opendoen]] | [[öppna]] | [[åbne]] | [[åpne]] | [[opna]] |- | 821 | [[close]] | [[schließen]] | [[sluiten]]; [[dichtdoen]] | [[låsa]]; [[stänga]] | [[lukke]] | [[lukke]]; [[stenge]] | [[loka]] |- | 822 | [[put]] | [[stellen]] | [[stellen]]; [[plaatsen]] | [[ställa]] | [[stille]] | [[stille]] | [[láta]]; [[setja]] |- | 823 | [[place]] | [[setzen]] | [[zetten]]; [[plaatsen]] | [[sätta]] | [[sætte]] | [[sette]] | [[láta]]; [[setja]] |- | 824 | [[lay]] | [[legen]] | [[leggen]] | [[lägga]] | [[lægge]] | [[legge]] | [[láta]]; [[leggja]] |- | 825 | [[touch]] | [[berühren]] | [[aanraken]] | [[beröra]] | [[berøre]] | [[berøre]] | [[koma]] [[við]] |- | 826 | [[connect]] | [[verbinden]] | [[verbinden]] | [[förbinda]] | [[forbinde]] | [[forbinde]] | [[sameina]] |- | 827 | [[cover]] | [[bedecken]] | [[bedekken]] | [[täcka]]; [[betäcka]] | [[dække]]; [[bedække]] | [[dekke]] | [[hylja]] |- | 828 | [[hang]] [[up]] | [[aufhängen]] | [[ophangen]] | [[hänga]]; [[hänga]] [[upp]] | [[hænge]]; [[hænge]] [[op]] | [[henge]]; [[henge]] [[opp]] | [[hengja]]; [[hengja]] [[upp]] |- | 829 | [[light]] | [[anzünden]] | [[aansteken]] | [[tända]]; [[antända]]; [[tända]] [[på]] | [[tænde]]; [[antænde]] | [[tenne]]; [[antenne]]; [[tenne]] [[på]] | [[kveikja]] [[í]] |- | 830 | [[pick]] [[up]] | [[aufheben]] | [[oprapen]] | [[lyfta]] | [[løfte]]; [[tage]] [[op]] | [[løfte]]; [[ta]] [[opp]] | [[taka]] [[upp]]; [[lyfta]] [[upp]] |- | 831 | [[leave]] | [[zurücklassen]] | [[achterlaten]] | [[lämna]]; [[efterlämna]] | [[lade]] [[tilbage]] | [[slippe]] [[tilbake]] | [[skilja]] [[eftir]] |- | 832 | [[lose]] | [[verlieren]] | [[verliezen]] | [[mista]]; [[förlora]] | [[miste]] | [[miste]] | [[týna]]; [[glata]] |- | 833 | [[drop]] | [[fallen]] [[lassen]] | [[laten]] [[vallen]] | [[tappa]]; [[släppa]] | [[tabe]]; [[droppe]] | [[droppe]]; [[la]] [[falle]] | [[missa]] |- | 834 | [[make]] | [[machen]] | [[maken]] | [[göra]] | [[gøre]] | [[lage]]; [[gjøre]] | [[búa]] [[til]] |- | 835 | [[produce]] | [[herstellen]] | [[produceren]]; [[voortbrengen]] | [[tillverka]]; [[framställa]] | [[fremstille]] | [[fremstille]] | [[framleiða]] |- | 836 | [[build]] | [[bauen]] | [[bouwen]] | [[bygga]] | [[bygge]] | [[bygge]] | [[smíða]]; [[byggja]] |- | 837 | [[repair]], [[mend]] | [[reparieren]] | [[repareren]]; [[herstellen]] | [[reparera]] | [[reparere]] | [[reparere]] | [[gera]] [[við]] |- | 838 | [[improve]] | [[verbessern]] | [[verbeteren]] | [[rätta]]; [[förbättra]] | [[rette]]; [[forbedre]] | [[rette]]; [[forbedre]] | [[bæta]] |- | 839 | [[alter]] | [[ändern]] | [[wijzigen]]; [[veranderen]] | [[ändra]]; [[förändra]] | [[ændre]] | [[forandre]] | [[breyta]] |- | 840 | [[dig]] | [[graben]] | [[graven]] | [[gräva]] | [[grave]] | [[grave]] | [[grafa]] |- | 841 | [[bow]] | [[beugen]] | [[buigen]] | [[böja]] | [[bøje]] | [[bøye]] | [[beygja]] |- | 842 | [[bend]] | [[biegen]] | [[buigen]] | [[böja]]; [[kröka]] | [[bøje]] | [[bøye]] | [[sveigja]] |- | 843 | [[spin]] | [[drehen]] | [[draaien]] | [[vrida]] | [[dreje]] | [[dreie]] | [[snúa]] |- | 844 | [[turn]] [[over]] | [[wenden]] | [[keren]]; [[wenden]] | [[vända]] | [[vende]] | [[vende]] | [[snúa]]; [[venda]] |- | 845 | [[turn]], [[turn]] [[around]] | [[umdrehen]] | [[omdraaien]] | [[vrida]] [[om]] | [[dreje]] [[om]] | [[snu]] | [[venda]]; [[snúa]] [[við]] |- | 846 | [[raise]] | [[heben]] | [[heffen]]; [[optillen]] | [[häva]] | [[hæve]] | [[heve]] | [[hefja]] |- | 847 | [[lift]] | [[hochheben]] | [[tillen]] | [[lyfta]] | [[løfte]] | [[løfte]] | [[lyfta]] [[upp]] |- | 848 | [[seize]] | [[ergreifen]] | [[pakken]]; [[grijpen]] | [[gripa]] | [[gribe]] [[fat]] [[i]] | [[gripe]]; [[få]] [[tak]] [[i]] | [[grípa]] |- | 849 | [[hold]] | [[halten]] | [[houden]] | [[hålla]] | [[holde]] | [[holde]] | [[rúma]]; [[halda]] |- | 850 | [[press]] | [[drücken]] | [[drukken]] | [[trycka]] | [[trykke]] | [[trykke]] | [[þjá]]; [[þrýsta]] |- | 851 | [[push]] | [[schieben]] | [[duwen]]; [[schuiven]] | [[skjuta]] | [[skyde]]; [[skubbe]] | [[skyve]] | [[ýta]] |- | 852 | [[scrape]] | [[kratzen]] | [[krassen]] | [[riva]]; [[skrapa]] | [[klø]]; [[kradse]] | [[klø]]; [[klore]] | [[klóra]] |- | 853 | [[lick]] | [[lecken]] | [[likken]] | [[slicka]] | [[slikke]] | [[slikke]] | [[sleikja]] |- | 854 | [[bite]] | [[beißen]] | [[bijten]] | [[bita]] | [[bide]] | [[bite]] | [[bíta]] |- | 855 | [[tear]] [[off]] | [[abreißen]] | [[afrukken]]; [[afscheuren]] | [[slita_av]]; [[riva_av]] | [[rive]] [[af]] | [[rive]] [[av]] | [[rífa]] [[af]]; [[rífa]] [[frá]] |- | 856 | [[cut]] [[off]] | [[abschneiden]] | [[afsnijden]] | [[skära]] [[av]] | [[skære]] [[af]] | [[skjære]] [[av]] | [[skera]] [[af]]; [[klippa]] [[af]] |- | 857 | [[tie]] | [[binden]] | [[binden]] | [[binda]] | [[binde]] | [[binde]] | [[binda]] |- | 858 | [[stick]] | [[stecken]] | [[steken]] | [[sticka]] | [[stikke]] | [[stikke]] | [[stinga]] |- | 859 | [[break]] | [[brechen]] | [[breken]] | [[bryta]]; [[brista]] | [[brække]] | [[bryte]]; [[briste]] | [[brjóta]] |- | 860 | [[knock]] | [[klopfen]] | [[kloppen]] | [[banka]]; [[klappa]] | [[banke]] | [[banke]] | [[berja]]; [[klappa]] |- | 861 | [[hit]] | [[hauen]] | [[houwen]] | [[hugga]] | [[hugge]] | [[hogge]] | [[berja]]; [[höggva]] |- | 862 | [[glue]] | [[kleben]] | [[plakken]] | [[klistra]] | [[klistre]] | [[klistre]] | [[líma]] |- | 863 | [[rub]] | [[reiben]] | [[wrijven]] | [[gnida]] | [[gnide]] | [[gni]] | [[núa]] |- | 864 | [[spread]] | [[streichen]] | [[smeren]] | [[smörja]] | [[smøre]] | [[stryke]] | [[smyrja]] |- | 865 | [[sharpen]] | [[schleifen]] | [[slijpen]] | [[slipa]] | [[slibe]] | [[slipe]] | [[slípa]] |- | 866 | [[cut]] | [[schneiden]] | [[snijden]] | [[skära]]; [[klippa]] | [[skære]]; [[klippe]] | [[klippe]] | [[skera]]; [[klippa]] |- | 867 | [[jog]] | [[rütteln]] | [[schudden]] | [[skaka]] | [[ruske]] | [[ruske]] | [[skaka]] |- | 868 | [[shake]] | [[schütteln]] | [[schudden]] | [[rista]] | [[ryste]] | [[riste]] | [[hrista]] |- | 869 | [[swing]] | [[schwenken]] | [[wuiven]]; [[zwaaien]] | [[svänga]] | [[svinge]] | [[svinge]] | [[sveifla]] |- | 870 | [[pour]] | [[schütten]] | [[gieten]]; [[storten]] | [[hälla]] | [[hælde]] | [[helle]] | [[hella]] |- | 871 | [[fill]] | [[füllen]] | [[vullen]] | [[fylla]] | [[fylde]] | [[fylle]] | [[fylla]] |- | 872 | [[wrap]] | [[einwickeln]] | [[inwikkelen]] | [[slå]] [[in]]; [[veckla]] [[in]] | [[pakke]] [[ind]] | [[vikle]] [[inn]] | [[vefja]] [[inn]] [[í]] |- | 873 | [[carry]] | [[tragen]] | [[dragen]] | [[bära]] | [[bære]] | [[bære]] | [[bera]] |- | 874 | [[drag]] | [[schleppen]] | [[slepen]] | [[släpa]] | [[slæbe]] | [[slepe]] | [[draga]] |- | 875 | [[pull]] | [[ziehen]] | [[trekken]] | [[dra]] | [[trække]] | [[dra]]; [[trekke]] | [[toga]]; [[draga]] |- | 876 | [[keep]] | [[aufbewahren]] | [[bewaren]] | [[förvara]]; [[ta]] [[vara]] [[på]] | [[opbevare]] | [[oppbevare]]; [[ta]] [[vare]] [[på]] | [[geyma]] |- | 877 | [[throw]] | [[werfen]] | [[gooien]] | [[kasta]] | [[kaste]] | [[kaste]] | [[kasta]] |- | 878 | [[catch]] | [[fangen]] | [[vangen]] | [[fånga]] | [[fange]] | [[fange]] | [[grípa]] |- | 879 | [[grab]] | [[packen]] | [[pakken]]; [[vastpakken]] | [[gripa]]; [[gripa]] [[tag]] | [[gribe]] | [[gripe]]; [[gripe]] [[tak]] [[i]] | [[þrífa]] [[í]] |- | 880 | [[hide]] | [[verstecken]] | [[verstoppen]] | [[gömma]] | [[gemme]] | [[gjemme]] | [[fela]] |- | 881 | [[divide]] | [[teilen]] | [[delen]] | [[dela]] | [[dele]] | [[dele]] | [[deila]] |- | 882 | [[send]] | [[schicken]] | [[sturen]] | [[skicka]] | [[sende]] | [[sende]] | [[senda]] |- | 883 | [[bring]] | [[bringen]] | [[brengen]] | [[bringa]] | [[bringe]] | [[bringe]] | [[færa]]; [[flytja]] |- | 884 | [[add]] | [[hinzufügen]] | [[toevoegen]] | [[tillägga]] | [[tilføje]] | [[tilføye]] | [[bæta]] [[við]] |- | 885 | [[get]] | [[bekommen]] | [[verkrijgen]] | [[få]]; [[erhålla]] | [[få]] | [[få]] | [[hljóta]]; [[ná]] |- | 886 | [[receive]] | [[erhalten]] | [[krijgen]] | [[få]]; [[erhålla]] | [[få]] | [[få]] | [[fá]] |- | 887 | [[take]] | [[nehmen]] | [[nemen]] | [[ta]]; [[taga]] | [[tage]] | [[ta]] | [[taka]] |- | 888 | [[choose]] | [[wählen]] | [[kiezen]]; [[verkiezen]] | [[välja]] | [[vælge]] | [[velge]] | [[velja]] |- | 889 | [[select]] | [[auswählen]] | [[uitkiezen]] | [[utvälja]] | [[udvælge]] | [[velge]] [[ut]] | [[velja]] [[úr]] |- | 890 | [[preserve]] | [[bewahren]] | [[bewaren]] | [[bevara]] | [[bevare]] | [[bevare]] | [[gæta]]; [[vernda]] |- | 891 | [[hinder]] | [[behindern]] | [[hinderen]] | [[hindra]]; [[förhindra]] | [[hindre]]; [[forhindre]] | [[hindre]]; [[forhindre]] | [[varna]] |- | 892 | [[spoil]] | [[verderben]] | [[bederven]] | [[förstöra]] | [[ødelægge]] | [[ødelegge]] | [[spilla]] |- | 893 | [[damage]] | [[beschädigen]] | [[beschadigen]] | [[skada]] | [[beskadige]] | [[skade]] | [[skemma]] |- | 894 | [[break]] | [[zerbrechen]] | [[breken]]; [[stukbreken]] | [[bryta]] [[isär]]; [[bryta]] [[sönder]] | [[brække]] [[itu]] | [[brekke]] [[i]] [[stykker]] | [[brjóta]] |- | 895 | [[tear]] | [[zerreißen]] | [[scheuren]]; [[verscheuren]] | [[riva]] [[sönder]]; [[slita]] [[sönder]] | [[rive]] [[itu]] | [[rive]] [[i]] [[stykker]] | [[rífa]]; [[rífa]] [[sundur]] |- | 896 | [[destroy]] | [[zerstören]] | [[vernielen]] | [[förstöra]] | [[ødelægge]] | [[ødelegge]] | [[rífa]] [[niður]] |- | 897 | [[burn]] | [[verbrennen]] | [[branden]]; [[verbranden]] | [[bränna]]; [[bränna]] [[upp]] | [[brænde]] | [[brenne]]; [[brenne]] [[opp]] | [[brenna]] |- | 898 | [[give]] | [[geben]] | [[geven]] | [[ge]] | [[give]] | [[gi]] | [[gefa]] |- | 899 | [[hand]] | [[reichen]] | [[reiken]]; [[aanreiken]] | [[räcka]] | [[række]] | [[rekke]] | [[rétta]] |- | 900 | [[give]] | [[schenken]] | [[schenken]] | [[skänka]] | [[forære]] | [[forære]]; [[skjenke]] | [[gefa]] |- | 901 | [[promise]] | [[versprechen]] | [[beloven]] | [[lova]] | [[love]] | [[love]] | [[lofa]]; [[heita]] |- | 902 | [[wish]] | [[wünschen]] | [[wensen]] | [[önska]] | [[ønske]] | [[ønske]] | [[óska]] |- | 903 | [[praise]] | [[loben]] | [[loven]]; [[prijzen]] | [[lova]]; [[beröma]] | [[rose]] | [[rose]] | [[lofa]]; [[hrósa]] |- | 904 | [[kiss]] | [[küssen]] | [[kussen]] | [[pussa]] | [[kysse]] | [[kysse]] | [[kyssa]] |- | 905 | [[rock]] | [[wiegen]] | [[wiegen]] | [[vagga]] | [[vugge]] | [[vogge]] | [[rugga]] |- | 906 | [[cover]] | [[zudecken]] | [[toedekken]] | [[täcka]] | [[dække]] [[til]] | [[dekke]] [[til]] | [[þekja]]; [[breiða]] [[yfir]] |- | 907 | [[wake]] | [[wecken]] | [[wekken]] | [[väcka]] | [[vække]] | [[vekke]] | [[vekja]] |- | 908 | [[show]] | [[zeigen]] | [[tonen]]; [[wijzen]] | [[visa]] | [[vise]] | [[vise]] | [[sýna]] |- | 909 | [[guide]] | [[führen]] | [[voeren]] | [[föra]] | [[føre]] | [[føre]] | [[leiða]] |- | 910 | [[teach]] | [[lehren]] | [[leren]] | [[lära]] | [[lære]] | [[lære]] | [[kenna]] |- | 911 | [[instruct]] | [[unterrichten]] | [[onderwijzen]] | [[undervisa]] | [[undervise]] | [[undervise]] | [[fræða]] |- | 912 | [[bring]] [[up]] | [[aufziehen]] | [[grootbrengen]] | [[uppfostra]] | [[opdrage]] | [[oppdra]] | [[ala]] [[upp]] |- | 913 | [[lead]] | [[leiten]] | [[leiden]] | [[leda]] | [[lede]] | [[lede]] | [[stjórna]] |- | 914 | [[urge]] | [[antreiben]] | [[aandrijven]] | [[driva]] [[på]] | [[skynde]] [[på]] | [[drive]] [[på]] | [[hvetja]] |- | 915 | [[let]] | [[lassen]] | [[laten]] | [[få]] [[att]] | [[få]] [[til]] [[at]] | [[få]] [[til]] [[å]] | [[láta]] |- | 916 | [[invite]] | [[einladen]] | [[uitnodigen]] | [[bjuda]]; [[inbjuda]] | [[indbyde]]; [[invitere]] | [[be]]; [[invitere]] | [[bjóða]] [[heim]] |- | 917 | [[unite]] | [[vereinigen]] | [[verenigen]] | [[förena]] | [[forene]] | [[forene]] | [[sameina]] |- | 918 | [[visit]] | [[besuchen]] | [[bezoeken]] | [[besöka]] | [[besøge]] | [[besøke]] | [[heimsækja]] |- | 919 | [[meet]] | [[treffen]] | [[treffen]]; [[ontmoeten]] | [[möta]]; [[träffa]] | [[møde]] | [[møte]]; [[treffe]] | [[hitta]] |- | 920 | [[assemble]] | [[sich]] [[versammeln]] | [[zich]] [[verzamelen]] | [[församla]] [[sig]] | [[forsamles]] | [[forsamles]] | [[safnast]] [[saman]] |- | 921 | [[play]] | [[spielen]] | [[spelen]] | [[leka]]; [[spela]] | [[lege]]; [[spille]] | [[leke]]; [[spille]] | [[leika]] [[sér]] |- | 922 | [[sing]] | [[singen]] | [[zingen]] | [[sjunga]] | [[synge]] | [[synge]] | [[syngja]] |- | 923 | [[dance]] | [[tanzen]] | [[dansen]] | [[dansa]] | [[danse]] | [[danse]] | [[dansa]] |- | 924 | [[separate]] | [[sich]] [[trennen]] | [[van]] [[elkaar]] [[gaan]] | [[skiljas]] | [[skilles]] | [[skilles]] | [[skiljast]] |- | 925 | [[leave]] | [[verlassen]] | [[verlaten]] | [[lämna]]; [[överge]] | [[forlade]] | [[forlate]] | [[yfirgefa]] |- | 926 | [[rescue]] | [[retten]] | [[redden]] | [[rädda]] | [[redde]] | [[redde]] | [[bjarga]] |- | 927 | [[guard]] | [[bewachen]] | [[bewaken]] | [[bevaka]] | [[bevogte]] | [[bevokte]] | [[gæta]]; [[hafa]] [[vörð]] [[á]] |- | 928 | [[protect]] | [[schützen]] | [[beschermen]] | [[skydda]]; [[beskydda]] | [[skærme]]; [[beskytte]] | [[verne]]; [[beskytte]] | [[vernda]] |- | 929 | [[defend]] | [[verteidigen]] | [[verdedigen]] | [[försvara]] | [[forsvare]] | [[forsvare]] | [[verja]] |- | 930 | [[brawl]] | [[sich]] [[schlagen]] | [[knokken]] | [[slåss]] | [[slås]] | [[slåss]] | [[slást]]; [[berjast]] |- | 931 | [[shoot]] | [[schießen]] | [[schieten]] | [[skjuta]] | [[skyde]] | [[skyte]] | [[skjóta]] |- | 932 | [[win]] | [[siegen]] | [[overwinnen]] | [[segra]] | [[sejre]] | [[seire]] | [[sigra]] |- | 933 | [[annoy]] | [[ärgern]] | [[ergeren]] | [[förarga]] | [[ærgre]] | [[ergre]] | [[ergja]]; [[skaprauna]] |- | 934 | [[beat]] | [[schlagen]] | [[slaan]] | [[slå]] | [[slå]] | | [[slá]]; [[lemja]] |- | 935 | [[kick]] | [[treten]] | [[trappen]]; [[schoppen]] | [[sparka]] | [[sparke]] | [[sparke]] | [[sparka]] |- | 936 | [[sting]] | [[stechen]] | [[steken]]; [[prikken]] | [[sticka]] | [[stikke]] | [[stikke]] | [[stinga]] |- | 937 | [[shove]] | [[stoßen]] | [[stoten]] | [[stöta]] | [[støde]] | [[støte]] | [[hrinda]] |- | 938 | [[steal]] | [[stehlen]] | [[stelen]] | [[stjäla]] | [[stjæle]] | [[stjele]] | [[stela]] |- | 939 | [[disturb]] | [[stören]] | [[storen]]; [[verstoren]] | [[störa]] | [[forstyrre]] | [[forstyrre]] | [[trufla]] |- | 940 | [[bother]] | [[belästigen]] | [[lastig]] [[vallen]] | [[genera]]; [[besvära]] | [[genere]]; [[ulejlige]] | [[plage]]; [[sjenere]] | [[ónáða]] |- | 941 | [[conceal]] | [[verbergen]] | [[verbergen]] | [[dölja]] | [[skjule]] | [[gjemme]] | [[leyna]] |- | 942 | [[deceive]] | [[täuschen]] | [[misleiden]] | [[vilseleda]] | [[villede]] | [[villede]] | [[gabba]]; [[blekkja]] |- | 943 | [[cheat]] | [[betrügen]] | [[bedriegen]] | [[bedra]] | [[bedrage]] | [[bedra]] | [[svíkja]]; [[blekkja]] |- | 944 | [[kill]] | [[töten]] | [[doden]] | [[döda]] | [[dræbe]] | [[drepe]] | [[drepa]] |- | 945 | [[dwell]] | [[wohnen]] | [[wonen]] | [[bo]] | [[bo]] | [[bo]] | [[búa]] |- | 946 | [[work]] | [[arbeiten]] | [[werken]] | [[arbeta]] | [[arbejde]] | [[arbeide]] | [[vinna]] |- | 947 | [[gather]] | [[sammeln]] | [[inzamelen]]; [[verzamelen]] | [[samla]] | [[samle]] | [[samle]] | [[safna]] |- | 948 | [[pick]] | [[pflücken]] | [[plukken]] | [[plocka]] | [[plukke]] | [[plukke]] | [[tína]]; [[reyta]] |- | 949 | [[hunt]] | [[jagen]] | [[jagen]] | [[jaga]] | [[jage]] | [[jage]] | [[veiða]] |- | 950 | [[fish]] | [[fischen]] | [[vissen]] | [[fiska]] | [[fiske]] | [[fiske]] | [[fiska]] |- | 951 | [[catch]] | [[fassen]] | [[vangen]] | [[fånga]] | [[fange]] | [[fange]] | [[veiða]] |- | 952 | [[herd]] | [[hüten]] | [[hoeden]] | [[vakta]] | [[vogte]] | [[vokte]] | [[gæta]]; [[vakta]] |- | 953 | [[drive]] | [[treiben]] | [[drijven]] | [[driva]] | [[drive]] | [[drive]] | [[reka]] |- | 954 | [[tie]] [[up]] | [[anbinden]] | [[vastbinden]] | [[binda]] [[fast]] | [[binde]] [[fast]] | [[feste]] | [[binda]] [[við]]; [[binda]] [[fast]] |- | 955 | [[feed]] | [[füttern]] | [[voeren]] | [[fodra]] | [[fodre]] | [[fore]] | [[fóðra]] |- | 956 | [[milk]] | [[melken]] | [[melken]] | [[mjölka]] | [[malke]] | [[melke]] | [[mjólka]] |- | 957 | [[chop]] | [[hacken]] | [[hakken]] | [[hacka]] | [[hakke]] | [[hakke]] | [[höggva]] |- | 958 | [[water]] | [[gießen]] | [[gieten]] | [[hälla]]; [[vattna]] | [[hælde]] | [[helle]] | [[hella]] |- | 959 | [[ripen]] | [[reifen]] | [[rijpen]] | [[mogna]] | [[modne]] | [[modne]] | [[þroskast]] |- | 960 | [[cook]] | [[zubereiten]] | [[klaarmaken]]; [[toebereiden]] | [[tillaga]]; [[tillreda]] | [[tilberede]] | [[lage]]; [[tilberede]] | [[elda]]; [[tilbúa]] |- | 961 | [[boil]] | [[kochen]] | [[koken]] | [[koka]] | [[koge]] | [[koke]] | [[sjóða]] |- | 962 | [[bake]] | [[backen]] | [[bakken]] | [[baka]] | [[bage]] | [[bake]] | [[baka]] |- | 963 | [[fry]] | [[braten]] | [[braden]] | [[steka]] | [[stege]] | [[steke]] | [[steikja]] |- | 964 | [[stir]] | [[umrühren]] | [[omroeren]] | [[röra]] [[om]] | [[røre]] [[om]] | [[røre]] [[om]] | [[hræra]] [[í]] |- | 965 | [[knit]] | [[stricken]] | [[breien]] | [[sticka]] | [[strikke]] | [[strikke]] | [[prjóna]] |- | 966 | [[sew]] | [[nähen]] | [[naaien]] | [[sy]] | [[sy]] | [[sy]] | [[sauma]] |- | 967 | [[dye]] | [[färben]] | [[verven]]; [[kleuren]] | [[färga]] | [[farve]] | [[farge]] | [[lita]] |- | 968 | [[clean]] | [[reinigen]] | [[reinigen]] | [[rensa]]; [[rengöra]] | [[rense]]; [[gøre]] [[ren]] | [[rense]]; [[gjøre]] [[ren]] | [[hreinsa]] |- | 969 | [[wash]] | [[waschen]] | [[wassen]] | [[tvätta]] | [[vaske]] | [[vaske]] | [[þvo]] |- | 970 | [[wipe]] | [[abwischen]] | [[afvegen]] | [[torka]] [[av]] | [[tørre]] [[af]] | [[tørke]] [[av]] | [[þerra]] |- | 971 | [[rinse]] | [[spülen]] | [[spoelen]]; [[afwassen]] | [[spola]]; [[skölja]] | [[skylle]] | [[spyle]]; [[skylle]] | [[skola]]; [[þvo]] [[upp]] |- | 972 | [[sweep]] | [[fegen]] | [[vegen]] | [[feja]] | [[feje]] | [[feie]] | [[sópa]]; [[hreinsa]] |- | 973 | [[sweep]] | [[kehren]] | [[vegen]] | [[sopa]] | [[feje]] | [[koste]] | [[sópa]] |- | 974 | [[bath]] | [[baden]] | [[baden]] | [[bada]] | [[bade]] | [[bade]] | [[baða]] [[sig]] |- | 975 | [[wash]] | [[sich]] [[waschen]] | [[zich]] [[wassen]] | [[tvätta]] [[sig]] | [[vaske]] [[sig]] | [[vaske]] [[seg]] | [[þvo]] [[sér]] |- | 976 | [[take]] [[off]] | [[ausziehen]] | [[uittrekken]] | [[ta]] [[av]] | [[tage]] [[af]] | [[ta]] [[av]] | [[fara]] [[úr]] |- | 977 | [[put]] [[on]] | [[anziehen]] | [[aantrekken]] | [[ta]] [[på]] | [[tage]] [[på]] | [[ta]] [[på]] | [[fara]] [[í]] |- | 978 | [[get]] [[dressed]] | [[sich]] [[anziehen]] | [[zich]] [[aankleden]] | [[klä]] [[på]] [[sig]] | [[klæde]] [[sig]] [[på]] | [[kle]] [[på]] [[seg]] | [[klæðast]] |- | 979 | [[comb]] | [[kämmen]] | [[kammen]] | [[kamma]] | [[rede]]; [[frisere]] | [[gre]]; [[kjemme]] | [[greiða]] |- | 980 | [[decorate]] | [[schmücken]] | [[tooien]] | [[pynta]]; [[smycka]] | [[pynte]]; [[smykke]] | [[pynte]]; [[smykke]] | [[prýða]]; [[skreyta]] |- | 981 | [[say]] | [[sagen]] | [[zeggen]] | [[säga]] | [[sige]] | [[si]] | [[segja]] |- | 982 | [[speak]] | [[sprechen]] | [[spreken]] | [[tala]] | [[snakke]] | [[snakke]] | [[tala]] |- | 983 | [[talk]] | [[reden]] | [[praten]] | [[tala]]; [[prata]] | [[tale]]; [[snakke]] | [[tale]]; [[snakke]] | [[ræða]] |- | 984 | [[chat]] | [[sich]] [[unterhalten]] | [[zich]] [[onderhouden]] | [[prata]] | [[snakke]] [[sammen]] | [[samtale]] | [[spjalla]]; [[ræðast]] [[við]] |- | 985 | [[ask]] | [[fragen]] | [[vragen]] | [[fråga]]; [[spörja]] | [[spørge]] | [[spørre]] | [[spyrja]] |- | 986 | [[request]] | [[bitten]] | [[vragen]]; [[verzoeken]] | [[be]] | [[bede]] | [[be]] | [[biðja]] |- | 987 | [[tell]] | [[erzählen]] | [[vertellen]] | [[berätta]] | [[berette]]; [[fortælle]] | [[fortelle]] | [[segja]] [[frá]] |- | 988 | [[convey]] | [[mitteilen]] | [[meedelen]] | [[meddela]] | [[meddele]] | [[meddele]] | [[tilkynna]] |- | 989 | [[name]] | [[nennen]] | [[noemen]] | [[kalla]] | [[nævne]] | [[kalle]] | [[nefna]] |- | 990 | [[call]] | [[rufen]] | [[roepen]] | [[ropa]] | [[råbe]] | [[rope]] | [[kalla]] |- | 991 | [[brag]] | [[prahlen]] | [[pralen]] | [[pråla]]; [[skryta]] | [[prale]] | [[skryte]] | [[gorta]] |- | 992 | [[translate]] | [[übersetzen]] | [[vertalen]] | [[tolka]]; [[översätta]] | [[oversætte]] | [[oversette]] | [[þýða]] |- | 993 | [[think]] | [[denken]] | [[denken]] | [[tänka]] | [[tænke]] | [[tenke]] | [[hugsa]] |- | 994 | [[believe]] | [[glauben]] | [[geloven]] | [[tro]] | [[tro]] | [[tro]] | [[trúa]] |- | 995 | [[notice]] | [[bemerken]] | [[bemerken]] | [[uppmärksamma]]; [[lägga]] [[märke]] [[till]] | [[bemærke]]; [[lægge]] [[mærke]] [[til]] | [[bemerke]]; [[legge]] [[merke]] [[til]] | [[taka]] [[eftir]] |- | 996 | [[recognize]] | [[erkennen]] | [[herkennen]] | [[känna]] [[igen]] | [[genkende]] | [[gjenkjenne]] | [[þekkja]] |- | 997 | [[grasp]] | [[begreifen]] | [[begrijpen]] | [[begripa]] | [[begribe]] | [[begripe]] | [[skilja]] |- | 998 | [[understand]] | [[verstehen]] | [[verstaan]] | [[förstå]] | [[forstå]] | [[forstå]]; [[skjønne]] | [[skilja]] |- | 999 | [[learn]] | [[lernen]] | [[leren]] | [[lära]] [[sig]] | [[lære]] | [[lære]] | [[læra]] |- | 1000 | [[know]] | [[wissen]] | [[weten]] | [[veta]] | [[vide]] | [[vite]] | [[vita]] |- | 1001 | [[remember]] | [[sich]] [[erinnern]] [[an]] | [[zich]] [[herinneren]] [[aan]] | [[minnas]]; [[komma]] [[ihåg]] | [[mindes]]; [[huske]] [[på]] | [[huske]] [[på]] | [[minnast]] |- | 1002 | [[forget]] | [[vergessen]] | [[vergeten]] | [[glömma]] | [[glemme]] | [[glemme]] | [[gleyma]] |- | 1003 | [[measure]] | [[messen]] | [[meten]] | [[mäta]] | [[måle]] | [[måle]] | [[mæla]] |- | 1004 | [[count]] | [[zählen]] | [[tellen]] | [[räkna]] | [[tælle]] | [[telle]] | [[telja]] |- | 1005 | [[calculate]] | [[rechnen]] | [[rekenen]] | [[räkna]] | [[regne]] | [[regne]] | [[reikna]] |- | 1006 | [[read]] | [[lesen]] | [[lezen]] | [[läsa]] | [[læse]] | [[lese]] | [[lesa]] |- | 1007 | [[paint]] | [[malen]] | [[schilderen]] | [[måla]] | [[male]] | [[male]] | [[mála]] |- | 1008 | [[draw]] | [[zeichnen]] | [[tekenen]] | [[teckna]] | [[tegne]] | [[tegne]] | [[teikna]] |- | 1009 | [[write]] | [[schreiben]] | [[schrijven]] | [[skriva]] | [[skrive]] | [[skrive]] | [[skrifa]] |- | 1010 | [[own]] | [[besitzen]] | [[bezitten]] | [[äga]]; [[besitta]] | [[eje]]; [[besidde]] | [[eie]]; [[inneha]] | [[hafa]] |- | 1011 | [[buy]] | [[kaufen]] | [[kopen]] | [[köpa]] | [[købe]] | [[kjøpe]] | [[kaupa]] |- | 1012 | [[sell]] | [[verkaufen]] | [[verkopen]] | [[sälja]] | [[sælge]] | [[selge]] | [[selja]] |- | 1013 | [[pay]] [[for]] | [[bezahlen]] | [[betalen]] | [[betala]] | [[betale]] | [[betale]] | [[borga]] |- | 1014 | [[pay]] | [[zahlen]] | [[betalen]] | [[betala]] | [[betale]] | [[betale]] | [[borga]] |- | 1015 | [[rule]] | [[beherrschen]] | [[beheersen]] | [[behärska]] | [[beherske]] | [[beherske]] | [[hafa]] [[á]] [[valdi]] [[sínu]] |- | 1016 | [[endure]] | [[ertragen]] | [[verdragen]] | [[tåla]]; [[uthärda]] | [[tåle]]; [[udholde]] | [[orke]] | [[þola]] |} ==References== <references/> *The NorthEuraLex database is edited by Johannes Dellert and Gerhard Jäger, and is licensed under the [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0 International License]. ==External links== *[http://www.northeuralex.org/ NorthEuraLex] {{North Eurasian lists}} j8gfnkr63b2acut84zrifh222nsalcp atmen 0 2333692 5729015 2026-07-19T15:57:35Z ZilentFyld 6541 สร้างหน้าด้วย "== ภาษาเยอรมัน == === Alternative forms === * {{alter|de|athmen||obsolete}} === รากศัพท์ === จาก{{inh|de|gmh|ātemen}}, จาก{{inh|de|goh|ātamōn}}, ซึ่งมาจาก{{der|de|gem-pro|*ēþmaz}}. {{surface analysis|de|Atem|-en}}. ร่วมเชื้อสายกับ{{cog|nl|ademen}} === การออกเสียง === * {{IPA|de|/ˈaːtmən/|[ˈʔaːt.mən]|[ˈʔaːtʰ-]|aa=..." 5729015 wikitext text/x-wiki == ภาษาเยอรมัน == === Alternative forms === * {{alter|de|athmen||obsolete}} === รากศัพท์ === จาก{{inh|de|gmh|ātemen}}, จาก{{inh|de|goh|ātamōn}}, ซึ่งมาจาก{{der|de|gem-pro|*ēþmaz}}. {{surface analysis|de|Atem|-en}}. ร่วมเชื้อสายกับ{{cog|nl|ademen}} === การออกเสียง === * {{IPA|de|/ˈaːtmən/|[ˈʔaːt.mən]|[ˈʔaːtʰ-]|aa=Germany}} * {{IPA|de|/ˈaːpmən/|aa=casual speech}} <!-- cf. the audio at "Kurzatmigkeit", where he says [p] or at least [t͡p] (and this obviously in enunciation) --> ** {{audio|de|De-atmen.ogg|aa=Germany (Berlin)}} * {{IPA|de|/ˈaːtmɛn/|[ˈʔaːtʰ-]|[ˈʔaːd̥-]|aa=Austria,South German}} ** {{audio|de|De-at-atmen.ogg|aa=Austria}} * {{hyphenation|de|at|men}} === คำกริยา === {{de-verb}} # {{lb|de|intransitive}} [[หายใจ]] ==== การผันรูป ==== {{de-conj}} ==== ลูกคำ ==== {{col4|de |abatmen |anatmen |Atmen |Atmer |Atmung |aufatmen |ausatmen |beatmen |durchatmen |einatmen |hineinatmen |reinatmen |veratmen |weiteratmen }} ==== คำที่เกี่ยวข้อง ==== * {{l|de|Atem}} * {{l|de|Atemzug}} * {{l|de|Atempause}} * {{l|de|atmungsaktiv}} === อ่านเพิ่ม === * {{R:de:DWDS}} * {{R:de:UniLeipzig}} * {{R:de:Duden}} * {{R:de:Grimm}} * {{R:de:OpenThesaurus}} 5zouh385c6uok6lme3yt9zz9vg62d4a 5729177 5729015 2026-07-20T03:11:10Z Octahedron80 267 /* Alternative forms */ เก็บกวาด 5729177 wikitext text/x-wiki == ภาษาเยอรมัน == === รูปแบบอื่น === * {{alter|de|athmen||obsolete}} === รากศัพท์ === จาก{{inh|de|gmh|ātemen}}, จาก{{inh|de|goh|ātamōn}}, ซึ่งมาจาก{{der|de|gem-pro|*ēþmaz}}. {{surface analysis|de|Atem|-en}}. ร่วมเชื้อสายกับ{{cog|nl|ademen}} === การออกเสียง === * {{IPA|de|/ˈaːtmən/|[ˈʔaːt.mən]|[ˈʔaːtʰ-]|aa=Germany}} * {{IPA|de|/ˈaːpmən/|aa=casual speech}} <!-- cf. the audio at "Kurzatmigkeit", where he says [p] or at least [t͡p] (and this obviously in enunciation) --> ** {{audio|de|De-atmen.ogg|aa=Germany (Berlin)}} * {{IPA|de|/ˈaːtmɛn/|[ˈʔaːtʰ-]|[ˈʔaːd̥-]|aa=Austria,South German}} ** {{audio|de|De-at-atmen.ogg|aa=Austria}} * {{hyphenation|de|at|men}} === คำกริยา === {{de-verb}} # {{lb|de|intransitive}} [[หายใจ]] ==== การผันรูป ==== {{de-conj}} ==== ลูกคำ ==== {{col4|de |abatmen |anatmen |Atmen |Atmer |Atmung |aufatmen |ausatmen |beatmen |durchatmen |einatmen |hineinatmen |reinatmen |veratmen |weiteratmen }} ==== คำที่เกี่ยวข้อง ==== * {{l|de|Atem}} * {{l|de|Atemzug}} * {{l|de|Atempause}} * {{l|de|atmungsaktiv}} === อ่านเพิ่ม === * {{R:de:DWDS}} * {{R:de:UniLeipzig}} * {{R:de:Duden}} * {{R:de:Grimm}} * {{R:de:OpenThesaurus}} jiimw708m121pbdb2x3pb94y6h2d2j8 5729178 5729177 2026-07-20T03:11:23Z Octahedron80 267 /* คำที่เกี่ยวข้อง */ 5729178 wikitext text/x-wiki == ภาษาเยอรมัน == === รูปแบบอื่น === * {{alter|de|athmen||obsolete}} === รากศัพท์ === จาก{{inh|de|gmh|ātemen}}, จาก{{inh|de|goh|ātamōn}}, ซึ่งมาจาก{{der|de|gem-pro|*ēþmaz}}. {{surface analysis|de|Atem|-en}}. ร่วมเชื้อสายกับ{{cog|nl|ademen}} === การออกเสียง === * {{IPA|de|/ˈaːtmən/|[ˈʔaːt.mən]|[ˈʔaːtʰ-]|aa=Germany}} * {{IPA|de|/ˈaːpmən/|aa=casual speech}} <!-- cf. the audio at "Kurzatmigkeit", where he says [p] or at least [t͡p] (and this obviously in enunciation) --> ** {{audio|de|De-atmen.ogg|aa=Germany (Berlin)}} * {{IPA|de|/ˈaːtmɛn/|[ˈʔaːtʰ-]|[ˈʔaːd̥-]|aa=Austria,South German}} ** {{audio|de|De-at-atmen.ogg|aa=Austria}} * {{hyphenation|de|at|men}} === คำกริยา === {{de-verb}} # {{lb|de|intransitive}} [[หายใจ]] ==== การผันรูป ==== {{de-conj}} ==== ลูกคำ ==== {{col4|de |abatmen |anatmen |Atmen |Atmer |Atmung |aufatmen |ausatmen |beatmen |durchatmen |einatmen |hineinatmen |reinatmen |veratmen |weiteratmen }} ==== คำเกี่ยวข้อง ==== * {{l|de|Atem}} * {{l|de|Atemzug}} * {{l|de|Atempause}} * {{l|de|atmungsaktiv}} === อ่านเพิ่ม === * {{R:de:DWDS}} * {{R:de:UniLeipzig}} * {{R:de:Duden}} * {{R:de:Grimm}} * {{R:de:OpenThesaurus}} dkhqboj1sfxzeqixt84jqci58i4nv32 5729179 5729178 2026-07-20T03:11:57Z Octahedron80 267 /* การออกเสียง */ 5729179 wikitext text/x-wiki == ภาษาเยอรมัน == === รูปแบบอื่น === * {{alter|de|athmen||obsolete}} === รากศัพท์ === จาก{{inh|de|gmh|ātemen}}, จาก{{inh|de|goh|ātamōn}}, ซึ่งมาจาก{{der|de|gem-pro|*ēþmaz}}. {{surface analysis|de|Atem|-en}}. ร่วมเชื้อสายกับ{{cog|nl|ademen}} === การออกเสียง === * {{IPA|de|/ˈaːtmən/|[ˈʔaːt.mən]|[ˈʔaːtʰ-]|aa=Germany}} * {{IPA|de|/ˈaːpmən/|aa=casual speech}} <!-- cf. the audio at "Kurzatmigkeit", where he says [p] or at least [t͡p] (and this obviously in enunciation) --> ** {{audio|de|De-atmen.ogg|aa=<<Germany>> (<<Berlin>>)}} * {{IPA|de|/ˈaːtmɛn/|[ˈʔaːtʰ-]|[ˈʔaːd̥-]|aa=Austria,South German}} ** {{audio|de|De-at-atmen.ogg|aa=Austria}} * {{hyphenation|de|at|men}} === คำกริยา === {{de-verb}} # {{lb|de|intransitive}} [[หายใจ]] ==== การผันรูป ==== {{de-conj}} ==== ลูกคำ ==== {{col4|de |abatmen |anatmen |Atmen |Atmer |Atmung |aufatmen |ausatmen |beatmen |durchatmen |einatmen |hineinatmen |reinatmen |veratmen |weiteratmen }} ==== คำเกี่ยวข้อง ==== * {{l|de|Atem}} * {{l|de|Atemzug}} * {{l|de|Atempause}} * {{l|de|atmungsaktiv}} === อ่านเพิ่ม === * {{R:de:DWDS}} * {{R:de:UniLeipzig}} * {{R:de:Duden}} * {{R:de:Grimm}} * {{R:de:OpenThesaurus}} lel016js5nakx0dcfea6151xpi05a2g recht 0 2333693 5729017 2026-07-19T16:12:39Z ZilentFyld 6541 สร้างหน้าด้วย "== ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}}. ==== คำคุณศัพท์ ==== {{nl-adj}} # ต..." 5729017 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}}. ==== คำคุณศัพท์ ==== {{nl-adj}} # [[ตรง]] #: {{ant|nl|krom}} #: {{uxa|nl|in een '''rechte''' lijn|ในเส้นตรง}} # {{obsolete form of|nl|[[rechts]], [[rechter]]|t=ขวา}} ===== การผันรูป ===== {{nl-decl-adj}} ===== ลูกคำ ===== {{col|nl |kaarsrecht |lijnrecht |loodrecht |oprecht |recht door zee |rechte klimming |rechter |rechthoek |rechtlijnig |rechtlopen |rechtop |rechts |rechtschapen |rechttegenover |rechttrekken |recht voor zijn raap |rechtzetten |recht zo die gaat |regelrecht }} ===== คำสืบทอด ===== * {{desc|brc|rekti}} * {{desc|gmw-jdt|rääxt}} * {{desc|dcr|recht|rek|ret|tret|regt}} ** {{desc|vic|tret|bor=1}} {{q|dated}} * {{desc|pap|rècht|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 2 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*rehta}}, จาก{{inh|nl|gem-pro|*rehtą}} ซึ่งเป็นการสร้างคำนามจากคำคุณศัพท์ ==== คำนาม ==== {{nl-noun|n|-en|+}} # [[สิทธิ]], [[อำนาจ]], อำนาจหน้าที่, [[เอกสิทธิ์]] #: {{uxi|nl|Je hebt het '''recht''' niet om dat te doen!|คุณไม่มี'''สิทธิ'''ทำเช่นนั้น!}} # [[ความ]][[ยุติธรรม]] #: {{uxi|nl|Noemt u dit '''recht'''? Ik noem dit onrecht.|คุณเรียกสิ่งนี้ว่า'''ความยุติธรรม'''หรือ? ฉันเรียกสิ่งนี้ว่าความอยุติธรรม}} # [[นิติศาสตร์]], [[กฎหมาย]] #: {{uxi|nl|Het '''recht''' heeft beslist.|กฎหมายได้ตัดสินแล้ว}} # [[ค่าธรรมเนียม]], [[อากร]], ค่าภาระที่ต้องชำระ ===== ลูกคำ ===== {{col|nl|title=ทั่วไป |berechten |rechtbank <g:f> |rechtelijk |rechtenstudent <g:m> |rechtenstudie <g:f> |rechter <g:m> |rechtigen |rechtmatig |rechtsgeding <g:f> |rechtsgeleerde <g:m,f> |rechtsgeleerdheid <g:f> |rechtsgeschiedkunde <g:f> |rechtsgeschiedkundige <g:m> |rechtsmacht <g:f> |rechtsorde <g:f> |rechtspersoon <g:m> |rechtspsychologie <g:f> |rechtstheorie <g:f> |rechtspleging <g:f> |rechtspraak <g:f> |rechtsprocedure <g:f> |rechtspsychologie <g:f> |rechtsstaat <g:m> |rechtssysteem <g:n> |rechtswetenschap <g:f> |rechtszaal <g:f,m> |rechtszaak <g:f> |rechtszekerheid <g:f> |rechtvaardig |terecht |van rechtswege |voorrecht <g:n> |wederrechtelijk }} {{col|nl|title=สิทธิเฉพาะหรือประเภทของกฎหมาย |aasdomsrecht <g:n> |adviesrecht <g:n> |alleenrecht <g:n> |auteursrecht <g:n> |beklemrecht <g:n> |bestaansrecht |burgerrecht <g:n> |cijnsrecht <g:n> |collatierecht <g:n> |contractrecht |dierenrechten <g:n-p> |dijkrecht <g:n> |eerstgeboorterecht <g:n> |erfrecht <g:n> |geboorterecht <g:n> |gewoonterecht <g:n> |grondrecht <g:n> |gruitrecht <g:n> |havenrecht <g:n> |hoederecht <g:n> |kiesrecht <g:n> |leenrecht <g:n> |mensenrecht <g:n> |milieurecht <g:n> |natuurrecht <g:n> |ontslagrecht <g:n> |oorlogsrecht <g:n> |privaatrecht <g:n> |publiekrecht <g:n> |rolrecht <g:n> |stadsrecht <g:n> |stapelrecht <g:n> |stemrecht <g:n> |strafprocesrecht <g:n> |spreekrecht <g:n> |vetorecht <g:n> |volkenrecht <g:n> |zelfbeschikkingsrecht <g:n> }} ===== คำที่เกี่ยวข้อง ===== {{col|nl |gerecht }} ===== คำสืบทอด ===== * {{desc|af|reg}} * {{desc|dcr|recht|regt}} * {{desc|jvn|rèh|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 3 === {{nonlemma}} ==== คำกริยา ==== {{head|nl|verb form}} # {{infl of|nl|rechten||bare-ten-verb}} == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|ine-pro|inh=1}} จาก{{inh|de|gmh|rëht}}, จาก{{inh|de|goh|rëht}}, จาก{{inh|de|gmw-pro|*reht||ขวา, ตรง}}. {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|yi|רעכט}}, {{cog|is|réttur}}, {{cog|nl|recht}}, {{cog|en|right}}, {{cog|da|ret}}. {{col-bottom}} === การออกเสียง === * {{IPA|de|/ʁɛçt/|[ʁɛçtʰ]|a=Germany}} * {{IPA|de|/rɛçt/|[rɛçtʰ]|a=Austria, Switzerland}} * {{rhymes|de|ɛçt|s=1}} * {{audio|de|De-recht.ogg}} * {{audio|de|De-recht2.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st[very rare]}} # [[ขวา]] {{qual|ทิศทาง}} #: {{ant|de|link}} #: {{coi|de|die '''rechte''' Hand|[[มือ]][[ขวา]]}} #: {{ux|de|Auf der '''rechten''' Straßenseite liegt ein [[Supermarkt]].|[[ซูเปอร์มาร์เก็ต]]อยู่ด้าน'''ขวา'''ของถนน}} # [[ถูกต้อง]], [[เหมาะสม]] #: {{ant|de|falsch}} #: {{coi|de|im '''rechten''' Augenblick|ในจังหวะที่เหมาะสม}} #: {{coi|de|auf der ''' rechten''' Spur|อยู่บนเส้นทางที่ถูกต้อง}} # [[จริง]], [[แท้จริง]] # [[ยุติธรรม]], [[ชอบ]][[ด้วย]][[กฎหมาย]] # {{lb|de|geometry}} [[เป็น]][[มุม]] 90 [[องศา]] #: {{syn|de|rechtwinklig}} #: {{coi|de|'''rechter''' Winkel|[[มุม]][[ฉาก]]}} ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st[very rare]}} ==== ลูกคำ ==== * {{l|de|rechte Hand|g=f||มือขวา; มือขวา, ผู้ช่วยคนสำคัญ}} * {{l|de|rechter Winkel}} === คำกริยาวิเศษณ์ === {{de-adv}} # [[ค่อน]][[ข้าง]], [[พอ]][[สมควร]] #: {{uxi|de|Es ist '''recht''' warm heute Abend.|เย็นนี้'''ค่อนข้าง'''อบอุ่น}} #: {{uxi|de|'''recht''' klein|'''ค่อนข้าง'''เล็ก}} # อย่าง[[ถูกต้อง]] #: {{uxi|de|ganz '''recht'''|ถูกต้องเลย}} # อย่าง[[แม่นยำ]] ==== คำที่เกี่ยวข้อง ==== * {{l|de|Recht|g=n||สิทธิ; เอกสิทธิ์; สิทธิเรียกร้อง; กฎหมาย}} * {{l|de|recht haben}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} 7iits5g04ezmlzaa23fvio1syzhdbzn 5729079 5729017 2026-07-20T02:01:15Z Octahedron80 267 5729079 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}} ==== คำคุณศัพท์ ==== {{nl-adj}} # [[ตรง]] #: {{ant|nl|krom}} #: {{uxa|nl|in een '''rechte''' lijn|ในเส้นตรง}} # {{obsolete form of|nl|[[rechts]], [[rechter]]|t=ขวา}} ===== การผันรูป ===== {{nl-decl-adj}} ===== ลูกคำ ===== {{col|nl |kaarsrecht |lijnrecht |loodrecht |oprecht |recht door zee |rechte klimming |rechter |rechthoek |rechtlijnig |rechtlopen |rechtop |rechts |rechtschapen |rechttegenover |rechttrekken |recht voor zijn raap |rechtzetten |recht zo die gaat |regelrecht }} ===== คำสืบทอด ===== * {{desc|brc|rekti}} * {{desc|gmw-jdt|rääxt}} * {{desc|dcr|recht|rek|ret|tret|regt}} ** {{desc|vic|tret|bor=1}} {{q|dated}} * {{desc|pap|rècht|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 2 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*rehta}}, จาก{{inh|nl|gem-pro|*rehtą}} ซึ่งเป็นการสร้างคำนามจากคำคุณศัพท์ ==== คำนาม ==== {{nl-noun|n|-en|+}} # [[สิทธิ]], [[อำนาจ]], อำนาจหน้าที่, [[เอกสิทธิ์]] #: {{uxi|nl|Je hebt het '''recht''' niet om dat te doen!|คุณไม่มี'''สิทธิ'''ทำเช่นนั้น!}} # [[ความ]][[ยุติธรรม]] #: {{uxi|nl|Noemt u dit '''recht'''? Ik noem dit onrecht.|คุณเรียกสิ่งนี้ว่า'''ความยุติธรรม'''หรือ? ฉันเรียกสิ่งนี้ว่าความอยุติธรรม}} # [[นิติศาสตร์]], [[กฎหมาย]] #: {{uxi|nl|Het '''recht''' heeft beslist.|กฎหมายได้ตัดสินแล้ว}} # [[ค่าธรรมเนียม]], [[อากร]], ค่าภาระที่ต้องชำระ ===== ลูกคำ ===== {{col|nl|title=ทั่วไป |berechten |rechtbank <g:f> |rechtelijk |rechtenstudent <g:m> |rechtenstudie <g:f> |rechter <g:m> |rechtigen |rechtmatig |rechtsgeding <g:f> |rechtsgeleerde <g:m,f> |rechtsgeleerdheid <g:f> |rechtsgeschiedkunde <g:f> |rechtsgeschiedkundige <g:m> |rechtsmacht <g:f> |rechtsorde <g:f> |rechtspersoon <g:m> |rechtspsychologie <g:f> |rechtstheorie <g:f> |rechtspleging <g:f> |rechtspraak <g:f> |rechtsprocedure <g:f> |rechtspsychologie <g:f> |rechtsstaat <g:m> |rechtssysteem <g:n> |rechtswetenschap <g:f> |rechtszaal <g:f,m> |rechtszaak <g:f> |rechtszekerheid <g:f> |rechtvaardig |terecht |van rechtswege |voorrecht <g:n> |wederrechtelijk }} {{col|nl|title=สิทธิเฉพาะหรือประเภทของกฎหมาย |aasdomsrecht <g:n> |adviesrecht <g:n> |alleenrecht <g:n> |auteursrecht <g:n> |beklemrecht <g:n> |bestaansrecht |burgerrecht <g:n> |cijnsrecht <g:n> |collatierecht <g:n> |contractrecht |dierenrechten <g:n-p> |dijkrecht <g:n> |eerstgeboorterecht <g:n> |erfrecht <g:n> |geboorterecht <g:n> |gewoonterecht <g:n> |grondrecht <g:n> |gruitrecht <g:n> |havenrecht <g:n> |hoederecht <g:n> |kiesrecht <g:n> |leenrecht <g:n> |mensenrecht <g:n> |milieurecht <g:n> |natuurrecht <g:n> |ontslagrecht <g:n> |oorlogsrecht <g:n> |privaatrecht <g:n> |publiekrecht <g:n> |rolrecht <g:n> |stadsrecht <g:n> |stapelrecht <g:n> |stemrecht <g:n> |strafprocesrecht <g:n> |spreekrecht <g:n> |vetorecht <g:n> |volkenrecht <g:n> |zelfbeschikkingsrecht <g:n> }} ===== คำที่เกี่ยวข้อง ===== {{col|nl |gerecht }} ===== คำสืบทอด ===== * {{desc|af|reg}} * {{desc|dcr|recht|regt}} * {{desc|jvn|rèh|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 3 === {{nonlemma}} ==== คำกริยา ==== {{head|nl|รูปกริยา}} # {{infl of|nl|rechten||bare-ten-verb}} == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|ine-pro|inh=1}} จาก{{inh|de|gmh|rëht}}, จาก{{inh|de|goh|rëht}}, จาก{{inh|de|gmw-pro|*reht||ขวา, ตรง}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|yi|רעכט}}, {{cog|is|réttur}}, {{cog|nl|recht}}, {{cog|en|right}}, {{cog|da|ret}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ʁɛçt/|[ʁɛçtʰ]|a=Germany}} * {{IPA|de|/rɛçt/|[rɛçtʰ]|a=Austria, Switzerland}} * {{rhymes|de|ɛçt|s=1}} * {{audio|de|De-recht.ogg}} * {{audio|de|De-recht2.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st[very rare]}} # [[ขวา]] #: {{ant|de|link}} #: {{coi|de|die '''rechte''' Hand|[[มือ]][[ขวา]]}} #: {{ux|de|Auf der '''rechten''' Straßenseite liegt ein [[Supermarkt]].|[[ซูเปอร์มาร์เก็ต]]อยู่ด้าน'''ขวา'''ของถนน}} # [[ถูกต้อง]], [[เหมาะสม]] #: {{ant|de|falsch}} #: {{coi|de|im '''rechten''' Augenblick|ในจังหวะที่เหมาะสม}} #: {{coi|de|auf der ''' rechten''' Spur|อยู่บนเส้นทางที่ถูกต้อง}} # [[จริง]], [[แท้จริง]] # [[ยุติธรรม]], [[ชอบ]][[ด้วย]][[กฎหมาย]] # {{lb|de|geometry}} [[เป็น]][[มุม]] 90 [[องศา]] #: {{syn|de|rechtwinklig}} #: {{coi|de|'''rechter''' Winkel|[[มุม]][[ฉาก]]}} ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st[พบได้ยากมาก]}} ==== ลูกคำ ==== * {{l|de|rechte Hand|g=f||มือขวา; มือขวา, ผู้ช่วยคนสำคัญ}} * {{l|de|rechter Winkel}} === คำกริยาวิเศษณ์ === {{de-adv}} # [[ค่อน]][[ข้าง]], [[พอ]][[สมควร]] #: {{uxi|de|Es ist '''recht''' warm heute Abend.|เย็นนี้'''ค่อนข้าง'''อบอุ่น}} #: {{uxi|de|'''recht''' klein|'''ค่อนข้าง'''เล็ก}} # อย่าง[[ถูกต้อง]] #: {{uxi|de|ganz '''recht'''|ถูกต้องเลย}} # อย่าง[[แม่นยำ]] ==== คำที่เกี่ยวข้อง ==== * {{l|de|Recht|g=n||สิทธิ; เอกสิทธิ์; สิทธิเรียกร้อง; กฎหมาย}} * {{l|de|recht haben}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} r3wcdu31jzz8wr8hzohfb6z74uy15z8 5729081 5729079 2026-07-20T02:02:03Z Octahedron80 267 /* คำคุณศัพท์ */ 5729081 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}} ==== คำคุณศัพท์ ==== {{nl-adj}} # [[ตรง]] #: {{ant|nl|krom}} #: {{uxa|nl|in een '''rechte''' lijn|ในเส้นตรง}} # {{obsolete form of|nl|[[rechts]], [[rechter]]|t=ขวา}} ===== การผันรูป ===== {{nl-decl-adj}} ===== ลูกคำ ===== {{col|nl |kaarsrecht |lijnrecht |loodrecht |oprecht |recht door zee |rechte klimming |rechter |rechthoek |rechtlijnig |rechtlopen |rechtop |rechts |rechtschapen |rechttegenover |rechttrekken |recht voor zijn raap |rechtzetten |recht zo die gaat |regelrecht }} ===== คำสืบทอด ===== * {{desc|brc|rekti}} * {{desc|gmw-jdt|rääxt}} * {{desc|dcr|recht|rek|ret|tret|regt}} ** {{desc|vic|tret|bor=1}} {{q|dated}} * {{desc|pap|rècht|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 2 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*rehta}}, จาก{{inh|nl|gem-pro|*rehtą}} ซึ่งเป็นการสร้างคำนามจากคำคุณศัพท์ ==== คำนาม ==== {{nl-noun|n|-en|+}} # [[สิทธิ]], [[อำนาจ]], อำนาจหน้าที่, [[เอกสิทธิ์]] #: {{uxi|nl|Je hebt het '''recht''' niet om dat te doen!|คุณไม่มี'''สิทธิ'''ทำเช่นนั้น!}} # [[ความ]][[ยุติธรรม]] #: {{uxi|nl|Noemt u dit '''recht'''? Ik noem dit onrecht.|คุณเรียกสิ่งนี้ว่า'''ความยุติธรรม'''หรือ? ฉันเรียกสิ่งนี้ว่าความอยุติธรรม}} # [[นิติศาสตร์]], [[กฎหมาย]] #: {{uxi|nl|Het '''recht''' heeft beslist.|กฎหมายได้ตัดสินแล้ว}} # [[ค่าธรรมเนียม]], [[อากร]], ค่าภาระที่ต้องชำระ ===== ลูกคำ ===== {{col|nl|title=ทั่วไป |berechten |rechtbank <g:f> |rechtelijk |rechtenstudent <g:m> |rechtenstudie <g:f> |rechter <g:m> |rechtigen |rechtmatig |rechtsgeding <g:f> |rechtsgeleerde <g:m,f> |rechtsgeleerdheid <g:f> |rechtsgeschiedkunde <g:f> |rechtsgeschiedkundige <g:m> |rechtsmacht <g:f> |rechtsorde <g:f> |rechtspersoon <g:m> |rechtspsychologie <g:f> |rechtstheorie <g:f> |rechtspleging <g:f> |rechtspraak <g:f> |rechtsprocedure <g:f> |rechtspsychologie <g:f> |rechtsstaat <g:m> |rechtssysteem <g:n> |rechtswetenschap <g:f> |rechtszaal <g:f,m> |rechtszaak <g:f> |rechtszekerheid <g:f> |rechtvaardig |terecht |van rechtswege |voorrecht <g:n> |wederrechtelijk }} {{col|nl|title=สิทธิเฉพาะหรือประเภทของกฎหมาย |aasdomsrecht <g:n> |adviesrecht <g:n> |alleenrecht <g:n> |auteursrecht <g:n> |beklemrecht <g:n> |bestaansrecht |burgerrecht <g:n> |cijnsrecht <g:n> |collatierecht <g:n> |contractrecht |dierenrechten <g:n-p> |dijkrecht <g:n> |eerstgeboorterecht <g:n> |erfrecht <g:n> |geboorterecht <g:n> |gewoonterecht <g:n> |grondrecht <g:n> |gruitrecht <g:n> |havenrecht <g:n> |hoederecht <g:n> |kiesrecht <g:n> |leenrecht <g:n> |mensenrecht <g:n> |milieurecht <g:n> |natuurrecht <g:n> |ontslagrecht <g:n> |oorlogsrecht <g:n> |privaatrecht <g:n> |publiekrecht <g:n> |rolrecht <g:n> |stadsrecht <g:n> |stapelrecht <g:n> |stemrecht <g:n> |strafprocesrecht <g:n> |spreekrecht <g:n> |vetorecht <g:n> |volkenrecht <g:n> |zelfbeschikkingsrecht <g:n> }} ===== คำที่เกี่ยวข้อง ===== {{col|nl |gerecht }} ===== คำสืบทอด ===== * {{desc|af|reg}} * {{desc|dcr|recht|regt}} * {{desc|jvn|rèh|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 3 === {{nonlemma}} ==== คำกริยา ==== {{head|nl|รูปกริยา}} # {{infl of|nl|rechten||bare-ten-verb}} == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|ine-pro|inh=1}} จาก{{inh|de|gmh|rëht}}, จาก{{inh|de|goh|rëht}}, จาก{{inh|de|gmw-pro|*reht||ขวา, ตรง}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|yi|רעכט}}, {{cog|is|réttur}}, {{cog|nl|recht}}, {{cog|en|right}}, {{cog|da|ret}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ʁɛçt/|[ʁɛçtʰ]|a=Germany}} * {{IPA|de|/rɛçt/|[rɛçtʰ]|a=Austria, Switzerland}} * {{rhymes|de|ɛçt|s=1}} * {{audio|de|De-recht.ogg}} * {{audio|de|De-recht2.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st[พบได้ยากมาก]}} # [[ขวา]] #: {{ant|de|link}} #: {{coi|de|die '''rechte''' Hand|[[มือ]][[ขวา]]}} #: {{ux|de|Auf der '''rechten''' Straßenseite liegt ein [[Supermarkt]].|[[ซูเปอร์มาร์เก็ต]]อยู่ด้าน'''ขวา'''ของถนน}} # [[ถูกต้อง]], [[เหมาะสม]] #: {{ant|de|falsch}} #: {{coi|de|im '''rechten''' Augenblick|ในจังหวะที่เหมาะสม}} #: {{coi|de|auf der ''' rechten''' Spur|อยู่บนเส้นทางที่ถูกต้อง}} # [[จริง]], [[แท้จริง]] # [[ยุติธรรม]], [[ชอบ]][[ด้วย]][[กฎหมาย]] # {{lb|de|geometry}} [[เป็น]][[มุม]] 90 [[องศา]] #: {{syn|de|rechtwinklig}} #: {{coi|de|'''rechter''' Winkel|[[มุม]][[ฉาก]]}} ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st[พบได้ยากมาก]}} ==== ลูกคำ ==== * {{l|de|rechte Hand|g=f||มือขวา; มือขวา, ผู้ช่วยคนสำคัญ}} * {{l|de|rechter Winkel}} === คำกริยาวิเศษณ์ === {{de-adv}} # [[ค่อน]][[ข้าง]], [[พอ]][[สมควร]] #: {{uxi|de|Es ist '''recht''' warm heute Abend.|เย็นนี้'''ค่อนข้าง'''อบอุ่น}} #: {{uxi|de|'''recht''' klein|'''ค่อนข้าง'''เล็ก}} # อย่าง[[ถูกต้อง]] #: {{uxi|de|ganz '''recht'''|ถูกต้องเลย}} # อย่าง[[แม่นยำ]] ==== คำที่เกี่ยวข้อง ==== * {{l|de|Recht|g=n||สิทธิ; เอกสิทธิ์; สิทธิเรียกร้อง; กฎหมาย}} * {{l|de|recht haben}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} 6n6knhihd1v7zdk4wry68dize7o5hxo 5729082 5729081 2026-07-20T02:02:48Z Octahedron80 267 /* คำคุณศัพท์ */ 5729082 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}} ==== คำคุณศัพท์ ==== {{nl-adj}} # [[ตรง]] #: {{ant|nl|krom}} #: {{uxa|nl|in een '''rechte''' lijn|ในเส้นตรง}} # {{obsolete form of|nl|[[rechts]], [[rechter]]|t=ขวา}} ===== การผันรูป ===== {{nl-decl-adj}} ===== ลูกคำ ===== {{col|nl |kaarsrecht |lijnrecht |loodrecht |oprecht |recht door zee |rechte klimming |rechter |rechthoek |rechtlijnig |rechtlopen |rechtop |rechts |rechtschapen |rechttegenover |rechttrekken |recht voor zijn raap |rechtzetten |recht zo die gaat |regelrecht }} ===== คำสืบทอด ===== * {{desc|brc|rekti}} * {{desc|gmw-jdt|rääxt}} * {{desc|dcr|recht|rek|ret|tret|regt}} ** {{desc|vic|tret|bor=1}} {{q|dated}} * {{desc|pap|rècht|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 2 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*rehta}}, จาก{{inh|nl|gem-pro|*rehtą}} ซึ่งเป็นการสร้างคำนามจากคำคุณศัพท์ ==== คำนาม ==== {{nl-noun|n|-en|+}} # [[สิทธิ]], [[อำนาจ]], อำนาจหน้าที่, [[เอกสิทธิ์]] #: {{uxi|nl|Je hebt het '''recht''' niet om dat te doen!|คุณไม่มี'''สิทธิ'''ทำเช่นนั้น!}} # [[ความ]][[ยุติธรรม]] #: {{uxi|nl|Noemt u dit '''recht'''? Ik noem dit onrecht.|คุณเรียกสิ่งนี้ว่า'''ความยุติธรรม'''หรือ? ฉันเรียกสิ่งนี้ว่าความอยุติธรรม}} # [[นิติศาสตร์]], [[กฎหมาย]] #: {{uxi|nl|Het '''recht''' heeft beslist.|กฎหมายได้ตัดสินแล้ว}} # [[ค่าธรรมเนียม]], [[อากร]], ค่าภาระที่ต้องชำระ ===== ลูกคำ ===== {{col|nl|title=ทั่วไป |berechten |rechtbank <g:f> |rechtelijk |rechtenstudent <g:m> |rechtenstudie <g:f> |rechter <g:m> |rechtigen |rechtmatig |rechtsgeding <g:f> |rechtsgeleerde <g:m,f> |rechtsgeleerdheid <g:f> |rechtsgeschiedkunde <g:f> |rechtsgeschiedkundige <g:m> |rechtsmacht <g:f> |rechtsorde <g:f> |rechtspersoon <g:m> |rechtspsychologie <g:f> |rechtstheorie <g:f> |rechtspleging <g:f> |rechtspraak <g:f> |rechtsprocedure <g:f> |rechtspsychologie <g:f> |rechtsstaat <g:m> |rechtssysteem <g:n> |rechtswetenschap <g:f> |rechtszaal <g:f,m> |rechtszaak <g:f> |rechtszekerheid <g:f> |rechtvaardig |terecht |van rechtswege |voorrecht <g:n> |wederrechtelijk }} {{col|nl|title=สิทธิเฉพาะหรือประเภทของกฎหมาย |aasdomsrecht <g:n> |adviesrecht <g:n> |alleenrecht <g:n> |auteursrecht <g:n> |beklemrecht <g:n> |bestaansrecht |burgerrecht <g:n> |cijnsrecht <g:n> |collatierecht <g:n> |contractrecht |dierenrechten <g:n-p> |dijkrecht <g:n> |eerstgeboorterecht <g:n> |erfrecht <g:n> |geboorterecht <g:n> |gewoonterecht <g:n> |grondrecht <g:n> |gruitrecht <g:n> |havenrecht <g:n> |hoederecht <g:n> |kiesrecht <g:n> |leenrecht <g:n> |mensenrecht <g:n> |milieurecht <g:n> |natuurrecht <g:n> |ontslagrecht <g:n> |oorlogsrecht <g:n> |privaatrecht <g:n> |publiekrecht <g:n> |rolrecht <g:n> |stadsrecht <g:n> |stapelrecht <g:n> |stemrecht <g:n> |strafprocesrecht <g:n> |spreekrecht <g:n> |vetorecht <g:n> |volkenrecht <g:n> |zelfbeschikkingsrecht <g:n> }} ===== คำที่เกี่ยวข้อง ===== {{col|nl |gerecht }} ===== คำสืบทอด ===== * {{desc|af|reg}} * {{desc|dcr|recht|regt}} * {{desc|jvn|rèh|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 3 === {{nonlemma}} ==== คำกริยา ==== {{head|nl|รูปกริยา}} # {{infl of|nl|rechten||bare-ten-verb}} == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|ine-pro|inh=1}} จาก{{inh|de|gmh|rëht}}, จาก{{inh|de|goh|rëht}}, จาก{{inh|de|gmw-pro|*reht||ขวา, ตรง}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|yi|רעכט}}, {{cog|is|réttur}}, {{cog|nl|recht}}, {{cog|en|right}}, {{cog|da|ret}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ʁɛçt/|[ʁɛçtʰ]|a=Germany}} * {{IPA|de|/rɛçt/|[rɛçtʰ]|a=Austria, Switzerland}} * {{rhymes|de|ɛçt|s=1}} * {{audio|de|De-recht.ogg}} * {{audio|de|De-recht2.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st[พบได้ยากมาก]}} # [[ขวา]] #: {{ant|de|link}} #: {{coi|de|die '''rechte''' Hand|[[มือ]][[ขวา]]}} #: {{ux|de|Auf der '''rechten''' Straßenseite liegt ein [[Supermarkt]].|[[ซูเปอร์มาร์เก็ต]]อยู่ด้าน'''ขวา'''ของถนน}} # [[ถูกต้อง]], [[เหมาะสม]] #: {{ant|de|falsch}} #: {{coi|de|im '''rechten''' Augenblick|ในจังหวะที่เหมาะสม}} #: {{coi|de|auf der ''' rechten''' Spur|อยู่บนเส้นทางที่ถูกต้อง}} # [[จริง]], [[แท้จริง]] # [[ยุติธรรม]], [[ชอบ]][[ด้วย]][[กฎหมาย]] # {{lb|de|geometry}} [[ตั้ง]][[ฉาก]], [[เป็น]][[มุม]] 90 [[องศา]] #: {{syn|de|rechtwinklig}} #: {{coi|de|'''rechter''' Winkel|[[มุม]][[ฉาก]]}} ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st[พบได้ยากมาก]}} ==== ลูกคำ ==== * {{l|de|rechte Hand|g=f||มือขวา; มือขวา, ผู้ช่วยคนสำคัญ}} * {{l|de|rechter Winkel}} === คำกริยาวิเศษณ์ === {{de-adv}} # [[ค่อน]][[ข้าง]], [[พอ]][[สมควร]] #: {{uxi|de|Es ist '''recht''' warm heute Abend.|เย็นนี้'''ค่อนข้าง'''อบอุ่น}} #: {{uxi|de|'''recht''' klein|'''ค่อนข้าง'''เล็ก}} # อย่าง[[ถูกต้อง]] #: {{uxi|de|ganz '''recht'''|ถูกต้องเลย}} # อย่าง[[แม่นยำ]] ==== คำที่เกี่ยวข้อง ==== * {{l|de|Recht|g=n||สิทธิ; เอกสิทธิ์; สิทธิเรียกร้อง; กฎหมาย}} * {{l|de|recht haben}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} 25blp9p4uzl6cy27adds3gcdol5mf72 5729099 5729082 2026-07-20T02:06:10Z Octahedron80 267 /* ลูกคำ */ 5729099 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}} ==== คำคุณศัพท์ ==== {{nl-adj}} # [[ตรง]] #: {{ant|nl|krom}} #: {{uxa|nl|in een '''rechte''' lijn|ในเส้นตรง}} # {{obsolete form of|nl|[[rechts]], [[rechter]]|t=ขวา}} ===== การผันรูป ===== {{nl-decl-adj}} ===== ลูกคำ ===== {{col|nl |kaarsrecht |lijnrecht |loodrecht |oprecht |recht door zee |rechte klimming |rechter |rechthoek |rechtlijnig |rechtlopen |rechtop |rechts |rechtschapen |rechttegenover |rechttrekken |recht voor zijn raap |rechtzetten |recht zo die gaat |regelrecht }} ===== คำสืบทอด ===== * {{desc|brc|rekti}} * {{desc|gmw-jdt|rääxt}} * {{desc|dcr|recht|rek|ret|tret|regt}} ** {{desc|vic|tret|bor=1}} {{q|dated}} * {{desc|pap|rècht|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 2 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*rehta}}, จาก{{inh|nl|gem-pro|*rehtą}} ซึ่งเป็นการสร้างคำนามจากคำคุณศัพท์ ==== คำนาม ==== {{nl-noun|n|-en|+}} # [[สิทธิ]], [[อำนาจ]], อำนาจหน้าที่, [[เอกสิทธิ์]] #: {{uxi|nl|Je hebt het '''recht''' niet om dat te doen!|คุณไม่มี'''สิทธิ'''ทำเช่นนั้น!}} # [[ความ]][[ยุติธรรม]] #: {{uxi|nl|Noemt u dit '''recht'''? Ik noem dit onrecht.|คุณเรียกสิ่งนี้ว่า'''ความยุติธรรม'''หรือ? ฉันเรียกสิ่งนี้ว่าความอยุติธรรม}} # [[นิติศาสตร์]], [[กฎหมาย]] #: {{uxi|nl|Het '''recht''' heeft beslist.|กฎหมายได้ตัดสินแล้ว}} # [[ค่าธรรมเนียม]], [[อากร]], ค่าภาระที่ต้องชำระ ===== ลูกคำ ===== {{col|nl|title=ทั่วไป |berechten |rechtbank <g:f> |rechtelijk |rechtenstudent <g:m> |rechtenstudie <g:f> |rechter <g:m> |rechtigen |rechtmatig |rechtsgeding <g:f> |rechtsgeleerde <g:m,f> |rechtsgeleerdheid <g:f> |rechtsgeschiedkunde <g:f> |rechtsgeschiedkundige <g:m> |rechtsmacht <g:f> |rechtsorde <g:f> |rechtspersoon <g:m> |rechtspsychologie <g:f> |rechtstheorie <g:f> |rechtspleging <g:f> |rechtspraak <g:f> |rechtsprocedure <g:f> |rechtspsychologie <g:f> |rechtsstaat <g:m> |rechtssysteem <g:n> |rechtswetenschap <g:f> |rechtszaal <g:f,m> |rechtszaak <g:f> |rechtszekerheid <g:f> |rechtvaardig |terecht |van rechtswege |voorrecht <g:n> |wederrechtelijk }} {{col|nl|title=สิทธิเฉพาะหรือประเภทของกฎหมาย |aasdomsrecht <g:n> |adviesrecht <g:n> |alleenrecht <g:n> |auteursrecht <g:n> |beklemrecht <g:n> |bestaansrecht |burgerrecht <g:n> |cijnsrecht <g:n> |collatierecht <g:n> |contractrecht |dierenrechten <g:n-p> |dijkrecht <g:n> |eerstgeboorterecht <g:n> |erfrecht <g:n> |geboorterecht <g:n> |gewoonterecht <g:n> |grondrecht <g:n> |gruitrecht <g:n> |havenrecht <g:n> |hoederecht <g:n> |kiesrecht <g:n> |leenrecht <g:n> |mensenrecht <g:n> |milieurecht <g:n> |natuurrecht <g:n> |ontslagrecht <g:n> |oorlogsrecht <g:n> |privaatrecht <g:n> |publiekrecht <g:n> |rolrecht <g:n> |stadsrecht <g:n> |stapelrecht <g:n> |stemrecht <g:n> |strafprocesrecht <g:n> |spreekrecht <g:n> |vetorecht <g:n> |volkenrecht <g:n> |zelfbeschikkingsrecht <g:n> }} ===== คำที่เกี่ยวข้อง ===== {{col|nl |gerecht }} ===== คำสืบทอด ===== * {{desc|af|reg}} * {{desc|dcr|recht|regt}} * {{desc|jvn|rèh|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 3 === {{nonlemma}} ==== คำกริยา ==== {{head|nl|รูปกริยา}} # {{infl of|nl|rechten||bare-ten-verb}} == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|ine-pro|inh=1}} จาก{{inh|de|gmh|rëht}}, จาก{{inh|de|goh|rëht}}, จาก{{inh|de|gmw-pro|*reht||ขวา, ตรง}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|yi|רעכט}}, {{cog|is|réttur}}, {{cog|nl|recht}}, {{cog|en|right}}, {{cog|da|ret}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ʁɛçt/|[ʁɛçtʰ]|a=Germany}} * {{IPA|de|/rɛçt/|[rɛçtʰ]|a=Austria, Switzerland}} * {{rhymes|de|ɛçt|s=1}} * {{audio|de|De-recht.ogg}} * {{audio|de|De-recht2.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st[พบได้ยากมาก]}} # [[ขวา]] #: {{ant|de|link}} #: {{coi|de|die '''rechte''' Hand|[[มือ]][[ขวา]]}} #: {{ux|de|Auf der '''rechten''' Straßenseite liegt ein [[Supermarkt]].|[[ซูเปอร์มาร์เก็ต]]อยู่ด้าน'''ขวา'''ของถนน}} # [[ถูกต้อง]], [[เหมาะสม]] #: {{ant|de|falsch}} #: {{coi|de|im '''rechten''' Augenblick|ในจังหวะที่เหมาะสม}} #: {{coi|de|auf der ''' rechten''' Spur|อยู่บนเส้นทางที่ถูกต้อง}} # [[จริง]], [[แท้จริง]] # [[ยุติธรรม]], [[ชอบ]][[ด้วย]][[กฎหมาย]] # {{lb|de|geometry}} [[ตั้ง]][[ฉาก]], [[เป็น]][[มุม]] 90 [[องศา]] #: {{syn|de|rechtwinklig}} #: {{coi|de|'''rechter''' Winkel|[[มุม]][[ฉาก]]}} ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st[พบได้ยากมาก]}} ==== ลูกคำ ==== * {{l|de|rechte Hand|g=f||มือข้างขวา; มือขวา, ผู้ช่วยคนสำคัญ}} * {{l|de|rechter Winkel}} === คำกริยาวิเศษณ์ === {{de-adv}} # [[ค่อน]][[ข้าง]], [[พอ]][[สมควร]] #: {{uxi|de|Es ist '''recht''' warm heute Abend.|เย็นนี้'''ค่อนข้าง'''อบอุ่น}} #: {{uxi|de|'''recht''' klein|'''ค่อนข้าง'''เล็ก}} # อย่าง[[ถูกต้อง]] #: {{uxi|de|ganz '''recht'''|ถูกต้องเลย}} # อย่าง[[แม่นยำ]] ==== คำที่เกี่ยวข้อง ==== * {{l|de|Recht|g=n||สิทธิ; เอกสิทธิ์; สิทธิเรียกร้อง; กฎหมาย}} * {{l|de|recht haben}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} smhc3g2l3bhsfbpicb4wuenks6htis3 5729110 5729099 2026-07-20T02:17:05Z Octahedron80 267 /* */ เก็บกวาด 5729110 wikitext text/x-wiki == ภาษาเช็ก == === รากศัพท์ === {{ety|cs|:bor|de:recht|text=+|tree=1}} === การออกเสียง === * {{cs-IPA}} === คำกริยาวิเศษณ์ === {{cs-adv}} # {{lb|cs|colloquial}} [[ถูกต้อง]], [[เหมาะสม]] #: {{uxi|cs|Tobě taky nic není '''recht'''.|Nothing '''suits''' you. (You are hard to '''please'''.)}} ==== ลูกคำ ==== {{col|cs|mít recht|dát recht}} === อ่านเพิ่ม === * {{R:cs:PSJC}} * {{R:cs:SSJC}} == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}} ==== คำคุณศัพท์ ==== {{nl-adj}} # [[ตรง]] #: {{ant|nl|krom}} #: {{uxa|nl|in een '''rechte''' lijn|ในเส้นตรง}} # {{obsolete form of|nl|[[rechts]], [[rechter]]|t=ขวา}} ===== การผันรูป ===== {{nl-decl-adj}} ===== ลูกคำ ===== {{col|nl |kaarsrecht |lijnrecht |loodrecht |oprecht |recht door zee |rechte klimming |rechter |rechthoek |rechtlijnig |rechtlopen |rechtop |rechts |rechtschapen |rechttegenover |rechttrekken |recht voor zijn raap |rechtzetten |recht zo die gaat |regelrecht }} ===== คำสืบทอด ===== * {{desc|brc|rekti}} * {{desc|gmw-jdt|rääxt}} * {{desc|dcr|recht|rek|ret|tret|regt}} ** {{desc|vic|tret|bor=1}} {{q|dated}} * {{desc|pap|rècht|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 2 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*rehta}}, จาก{{inh|nl|gem-pro|*rehtą}} ซึ่งเป็นการสร้างคำนามจากคำคุณศัพท์ ==== คำนาม ==== {{nl-noun|n|-en|+}} # [[สิทธิ]], [[อำนาจ]], อำนาจหน้าที่, [[เอกสิทธิ์]] #: {{uxi|nl|Je hebt het '''recht''' niet om dat te doen!|คุณไม่มี'''สิทธิ'''ทำเช่นนั้น!}} # [[ความ]][[ยุติธรรม]] #: {{uxi|nl|Noemt u dit '''recht'''? Ik noem dit onrecht.|คุณเรียกสิ่งนี้ว่า'''ความยุติธรรม'''หรือ? ฉันเรียกสิ่งนี้ว่าความอยุติธรรม}} # [[นิติศาสตร์]], [[กฎหมาย]] #: {{uxi|nl|Het '''recht''' heeft beslist.|กฎหมายได้ตัดสินแล้ว}} # [[ค่าธรรมเนียม]], [[อากร]], ค่าภาระที่ต้องชำระ ===== ลูกคำ ===== {{col|nl|title=ทั่วไป |berechten |rechtbank <g:f> |rechtelijk |rechtenstudent <g:m> |rechtenstudie <g:f> |rechter <g:m> |rechtigen |rechtmatig |rechtsgeding <g:f> |rechtsgeleerde <g:m,f> |rechtsgeleerdheid <g:f> |rechtsgeschiedkunde <g:f> |rechtsgeschiedkundige <g:m> |rechtsmacht <g:f> |rechtsorde <g:f> |rechtspersoon <g:m> |rechtspsychologie <g:f> |rechtstheorie <g:f> |rechtspleging <g:f> |rechtspraak <g:f> |rechtsprocedure <g:f> |rechtspsychologie <g:f> |rechtsstaat <g:m> |rechtssysteem <g:n> |rechtswetenschap <g:f> |rechtszaal <g:f,m> |rechtszaak <g:f> |rechtszekerheid <g:f> |rechtvaardig |terecht |van rechtswege |voorrecht <g:n> |wederrechtelijk }} {{col|nl|title=สิทธิเฉพาะหรือประเภทของกฎหมาย |aasdomsrecht <g:n> |adviesrecht <g:n> |alleenrecht <g:n> |auteursrecht <g:n> |beklemrecht <g:n> |bestaansrecht |burgerrecht <g:n> |cijnsrecht <g:n> |collatierecht <g:n> |contractrecht |dierenrechten <g:n-p> |dijkrecht <g:n> |eerstgeboorterecht <g:n> |erfrecht <g:n> |geboorterecht <g:n> |gewoonterecht <g:n> |grondrecht <g:n> |gruitrecht <g:n> |havenrecht <g:n> |hoederecht <g:n> |kiesrecht <g:n> |leenrecht <g:n> |mensenrecht <g:n> |milieurecht <g:n> |natuurrecht <g:n> |ontslagrecht <g:n> |oorlogsrecht <g:n> |privaatrecht <g:n> |publiekrecht <g:n> |rolrecht <g:n> |stadsrecht <g:n> |stapelrecht <g:n> |stemrecht <g:n> |strafprocesrecht <g:n> |spreekrecht <g:n> |vetorecht <g:n> |volkenrecht <g:n> |zelfbeschikkingsrecht <g:n> }} ===== คำที่เกี่ยวข้อง ===== {{col|nl |gerecht }} ===== คำสืบทอด ===== * {{desc|af|reg}} * {{desc|dcr|recht|regt}} * {{desc|jvn|rèh|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 3 === {{nonlemma}} ==== คำกริยา ==== {{head|nl|รูปกริยา}} # {{infl of|nl|rechten||bare-ten-verb}} == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|ine-pro|inh=1}} จาก{{inh|de|gmh|rëht}}, จาก{{inh|de|goh|rëht}}, จาก{{inh|de|gmw-pro|*reht||ขวา, ตรง}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|yi|רעכט}}, {{cog|is|réttur}}, {{cog|nl|recht}}, {{cog|en|right}}, {{cog|da|ret}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ʁɛçt/|[ʁɛçtʰ]|a=Germany}} * {{IPA|de|/rɛçt/|[rɛçtʰ]|a=Austria, Switzerland}} * {{rhymes|de|ɛçt|s=1}} * {{audio|de|De-recht.ogg}} * {{audio|de|De-recht2.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st[พบได้ยากมาก]}} # [[ขวา]] #: {{ant|de|link}} #: {{coi|de|die '''rechte''' Hand|[[มือ]][[ขวา]]}} #: {{ux|de|Auf der '''rechten''' Straßenseite liegt ein [[Supermarkt]].|[[ซูเปอร์มาร์เก็ต]]อยู่ด้าน'''ขวา'''ของถนน}} # [[ถูกต้อง]], [[เหมาะสม]] #: {{ant|de|falsch}} #: {{coi|de|im '''rechten''' Augenblick|ในจังหวะที่เหมาะสม}} #: {{coi|de|auf der ''' rechten''' Spur|อยู่บนเส้นทางที่ถูกต้อง}} # [[จริง]], [[แท้จริง]] # [[ยุติธรรม]], [[ชอบ]][[ด้วย]][[กฎหมาย]] # {{lb|de|geometry}} [[ตั้ง]][[ฉาก]], [[เป็น]][[มุม]] 90 [[องศา]] #: {{syn|de|rechtwinklig}} #: {{coi|de|'''rechter''' Winkel|[[มุม]][[ฉาก]]}} ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st[พบได้ยากมาก]}} ==== ลูกคำ ==== * {{l|de|rechte Hand|g=f||มือข้างขวา; มือขวา, ผู้ช่วยคนสำคัญ}} * {{l|de|rechter Winkel}} === คำกริยาวิเศษณ์ === {{de-adv}} # [[ค่อน]][[ข้าง]], [[พอ]][[สมควร]] #: {{uxi|de|Es ist '''recht''' warm heute Abend.|เย็นนี้'''ค่อนข้าง'''อบอุ่น}} #: {{uxi|de|'''recht''' klein|'''ค่อนข้าง'''เล็ก}} # อย่าง[[ถูกต้อง]] #: {{uxi|de|ganz '''recht'''|ถูกต้องเลย}} # อย่าง[[แม่นยำ]] ==== คำที่เกี่ยวข้อง ==== * {{l|de|Recht|g=n||สิทธิ; เอกสิทธิ์; สิทธิเรียกร้อง; กฎหมาย}} * {{l|de|recht haben}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} 5bf1b7zql1jhiawx5uxmia5p1s1m1ki 5729113 5729110 2026-07-20T02:19:09Z Octahedron80 267 5729113 wikitext text/x-wiki == ภาษาเช็ก == === รากศัพท์ === {{ety|cs|:bor|de:recht|text=+|tree=1}} === การออกเสียง === * {{cs-IPA}} === คำกริยาวิเศษณ์ === {{cs-adv}} # {{lb|cs|colloquial}} [[ถูกต้อง]], [[เหมาะสม]] #: {{uxi|cs|Tobě taky nic není '''recht'''.|Nothing '''suits''' you. (You are hard to '''please'''.)}} ==== ลูกคำ ==== {{col|cs|mít recht|dát recht}} === อ่านเพิ่ม === * {{R:cs:PSJC}} * {{R:cs:SSJC}} == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}} ==== คำคุณศัพท์ ==== {{nl-adj}} # [[ตรง]] #: {{ant|nl|krom}} #: {{uxa|nl|in een '''rechte''' lijn|ในเส้นตรง}} # {{obsolete form of|nl|[[rechts]], [[rechter]]|t=ขวา}} ===== การผันรูป ===== {{nl-decl-adj}} ===== ลูกคำ ===== {{col|nl |kaarsrecht |lijnrecht |loodrecht |oprecht |recht door zee |rechte klimming |rechter |rechthoek |rechtlijnig |rechtlopen |rechtop |rechts |rechtschapen |rechttegenover |rechttrekken |recht voor zijn raap |rechtzetten |recht zo die gaat |regelrecht }} ===== คำสืบทอด ===== * {{desc|brc|rekti}} * {{desc|gmw-jdt|rääxt}} * {{desc|dcr|recht|rek|ret|tret|regt}} ** {{desc|vic|tret|bor=1}} {{q|dated}} * {{desc|pap|rècht|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 2 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*rehta}}, จาก{{inh|nl|gem-pro|*rehtą}} ซึ่งเป็นการสร้างคำนามจากคำคุณศัพท์ ==== คำนาม ==== {{nl-noun|n|-en|+}} # [[สิทธิ]], [[อำนาจ]], อำนาจหน้าที่, [[เอกสิทธิ์]] #: {{uxi|nl|Je hebt het '''recht''' niet om dat te doen!|คุณไม่มี'''สิทธิ'''ทำเช่นนั้น!}} # [[ความ]][[ยุติธรรม]] #: {{uxi|nl|Noemt u dit '''recht'''? Ik noem dit onrecht.|คุณเรียกสิ่งนี้ว่า'''ความยุติธรรม'''หรือ? ฉันเรียกสิ่งนี้ว่าความอยุติธรรม}} # [[นิติศาสตร์]], [[กฎหมาย]] #: {{uxi|nl|Het '''recht''' heeft beslist.|กฎหมายได้ตัดสินแล้ว}} # [[ค่าธรรมเนียม]], [[อากร]], ค่าภาระที่ต้องชำระ ===== ลูกคำ ===== {{col|nl|title=ทั่วไป |berechten |rechtbank <g:f> |rechtelijk |rechtenstudent <g:m> |rechtenstudie <g:f> |rechter <g:m> |rechtigen |rechtmatig |rechtsgeding <g:f> |rechtsgeleerde <g:m,f> |rechtsgeleerdheid <g:f> |rechtsgeschiedkunde <g:f> |rechtsgeschiedkundige <g:m> |rechtsmacht <g:f> |rechtsorde <g:f> |rechtspersoon <g:m> |rechtspsychologie <g:f> |rechtstheorie <g:f> |rechtspleging <g:f> |rechtspraak <g:f> |rechtsprocedure <g:f> |rechtspsychologie <g:f> |rechtsstaat <g:m> |rechtssysteem <g:n> |rechtswetenschap <g:f> |rechtszaal <g:f,m> |rechtszaak <g:f> |rechtszekerheid <g:f> |rechtvaardig |terecht |van rechtswege |voorrecht <g:n> |wederrechtelijk }} {{col|nl|title=สิทธิเฉพาะหรือประเภทของกฎหมาย |aasdomsrecht <g:n> |adviesrecht <g:n> |alleenrecht <g:n> |auteursrecht <g:n> |beklemrecht <g:n> |bestaansrecht |burgerrecht <g:n> |cijnsrecht <g:n> |collatierecht <g:n> |contractrecht |dierenrechten <g:n-p> |dijkrecht <g:n> |eerstgeboorterecht <g:n> |erfrecht <g:n> |geboorterecht <g:n> |gewoonterecht <g:n> |grondrecht <g:n> |gruitrecht <g:n> |havenrecht <g:n> |hoederecht <g:n> |kiesrecht <g:n> |leenrecht <g:n> |mensenrecht <g:n> |milieurecht <g:n> |natuurrecht <g:n> |ontslagrecht <g:n> |oorlogsrecht <g:n> |privaatrecht <g:n> |publiekrecht <g:n> |rolrecht <g:n> |stadsrecht <g:n> |stapelrecht <g:n> |stemrecht <g:n> |strafprocesrecht <g:n> |spreekrecht <g:n> |vetorecht <g:n> |volkenrecht <g:n> |zelfbeschikkingsrecht <g:n> }} ===== คำที่เกี่ยวข้อง ===== {{col|nl |gerecht }} ===== คำสืบทอด ===== * {{desc|af|reg}} * {{desc|dcr|recht|regt}} * {{desc|jvn|rèh|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 3 === {{nonlemma}} ==== คำกริยา ==== {{head|nl|รูปกริยา}} # {{infl of|nl|rechten||bare-ten-verb}} == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|ine-pro|inh=1}} จาก{{inh|de|gmh|rëht}}, จาก{{inh|de|goh|rëht}}, จาก{{inh|de|gmw-pro|*reht||ขวา, ตรง}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|yi|רעכט}}, {{cog|is|réttur}}, {{cog|nl|recht}}, {{cog|en|right}}, {{cog|da|ret}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ʁɛçt/|[ʁɛçtʰ]|a=Germany}} * {{IPA|de|/rɛçt/|[rɛçtʰ]|a=Austria, Switzerland}} * {{rhymes|de|ɛçt|s=1}} * {{audio|de|De-recht.ogg}} * {{audio|de|De-recht2.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st[พบได้ยากมาก]}} # [[ขวา]] #: {{ant|de|link}} #: {{coi|de|die '''rechte''' Hand|[[มือ]][[ขวา]]}} #: {{ux|de|Auf der '''rechten''' Straßenseite liegt ein [[Supermarkt]].|[[ซูเปอร์มาร์เก็ต]]อยู่ด้าน'''ขวา'''ของถนน}} # [[ถูกต้อง]], [[เหมาะสม]] #: {{ant|de|falsch}} #: {{coi|de|im '''rechten''' Augenblick|ในจังหวะที่เหมาะสม}} #: {{coi|de|auf der ''' rechten''' Spur|อยู่บนเส้นทางที่ถูกต้อง}} # [[จริง]], [[แท้จริง]] # [[ยุติธรรม]], [[ชอบ]][[ด้วย]][[กฎหมาย]] # {{lb|de|geometry}} [[ตั้ง]][[ฉาก]], [[เป็น]][[มุม]] 90 [[องศา]] #: {{syn|de|rechtwinklig}} #: {{coi|de|'''rechter''' Winkel|[[มุม]][[ฉาก]]}} ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st[พบได้ยากมาก]}} ==== ลูกคำ ==== * {{l|de|rechte Hand|g=f||มือข้างขวา; มือขวา, ผู้ช่วยคนสำคัญ}} * {{l|de|rechter Winkel}} === คำกริยาวิเศษณ์ === {{de-adv}} # [[ค่อน]][[ข้าง]], [[พอ]][[สมควร]] #: {{uxi|de|Es ist '''recht''' warm heute Abend.|เย็นนี้'''ค่อนข้าง'''อบอุ่น}} #: {{uxi|de|'''recht''' klein|'''ค่อนข้าง'''เล็ก}} # อย่าง[[ถูกต้อง]] #: {{uxi|de|ganz '''recht'''|ถูกต้องเลย}} # อย่าง[[แม่นยำ]] ==== คำที่เกี่ยวข้อง ==== * {{l|de|Recht|g=n||สิทธิ; เอกสิทธิ์; สิทธิเรียกร้อง; กฎหมาย}} * {{l|de|recht haben}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} == ภาษาฮุนสริก == === รากศัพท์ === จาก{{inh|hrx|gmh|rëht}}, จาก{{inh|hrx|goh|reht}}; เทียบ{{cog|de|recht}}, {{cog|nl|recht}} === การออกเสียง === {{hrx-pr|hmp=Recht}} === คำคุณศัพท์ === {{head|hrx|คำคุณศัพท์|comparative|rechter|superlative|rechtest}} # [[ขวา]] === อ่านเพิ่ม === * {{R:hrx:Boll}} == ภาษาเยอรมันต่ำ == === คำนาม === {{nds-noun|n|rechten}} # {{lb|nds|DLS}} {{alternative form of|nds|Recht}} == ภาษาเยอรมันแบบเพนซิลเวเนีย == === รากศัพท์ === จาก{{inh|pdc|gmh|rëht}}, จาก{{inh|pdc|goh|reht}}; เทียบ{{cog|de|recht}}, {{cog|nl|recht}} === คำคุณศัพท์ === {{head|pdc|คำคุณศัพท์}} # [[ขวา]] 9625epbn2dzkahqow57uf1j756e8nfn 5729114 5729113 2026-07-20T02:19:28Z Octahedron80 267 /* คำคุณศัพท์ */ 5729114 wikitext text/x-wiki == ภาษาเช็ก == === รากศัพท์ === {{ety|cs|:bor|de:recht|text=+|tree=1}} === การออกเสียง === * {{cs-IPA}} === คำกริยาวิเศษณ์ === {{cs-adv}} # {{lb|cs|colloquial}} [[ถูกต้อง]], [[เหมาะสม]] #: {{uxi|cs|Tobě taky nic není '''recht'''.|Nothing '''suits''' you. (You are hard to '''please'''.)}} ==== ลูกคำ ==== {{col|cs|mít recht|dát recht}} === อ่านเพิ่ม === * {{R:cs:PSJC}} * {{R:cs:SSJC}} == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}} ==== คำคุณศัพท์ ==== {{nl-adj}} # [[ตรง]] #: {{ant|nl|krom}} #: {{uxa|nl|in een '''rechte''' lijn|ในเส้นตรง}} # {{obsolete form of|nl|[[rechts]], [[rechter]]|t=ขวา}} ===== การผันรูป ===== {{nl-decl-adj}} ===== ลูกคำ ===== {{col|nl |kaarsrecht |lijnrecht |loodrecht |oprecht |recht door zee |rechte klimming |rechter |rechthoek |rechtlijnig |rechtlopen |rechtop |rechts |rechtschapen |rechttegenover |rechttrekken |recht voor zijn raap |rechtzetten |recht zo die gaat |regelrecht }} ===== คำสืบทอด ===== * {{desc|brc|rekti}} * {{desc|gmw-jdt|rääxt}} * {{desc|dcr|recht|rek|ret|tret|regt}} ** {{desc|vic|tret|bor=1}} {{q|dated}} * {{desc|pap|rècht|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 2 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*rehta}}, จาก{{inh|nl|gem-pro|*rehtą}} ซึ่งเป็นการสร้างคำนามจากคำคุณศัพท์ ==== คำนาม ==== {{nl-noun|n|-en|+}} # [[สิทธิ]], [[อำนาจ]], อำนาจหน้าที่, [[เอกสิทธิ์]] #: {{uxi|nl|Je hebt het '''recht''' niet om dat te doen!|คุณไม่มี'''สิทธิ'''ทำเช่นนั้น!}} # [[ความ]][[ยุติธรรม]] #: {{uxi|nl|Noemt u dit '''recht'''? Ik noem dit onrecht.|คุณเรียกสิ่งนี้ว่า'''ความยุติธรรม'''หรือ? ฉันเรียกสิ่งนี้ว่าความอยุติธรรม}} # [[นิติศาสตร์]], [[กฎหมาย]] #: {{uxi|nl|Het '''recht''' heeft beslist.|กฎหมายได้ตัดสินแล้ว}} # [[ค่าธรรมเนียม]], [[อากร]], ค่าภาระที่ต้องชำระ ===== ลูกคำ ===== {{col|nl|title=ทั่วไป |berechten |rechtbank <g:f> |rechtelijk |rechtenstudent <g:m> |rechtenstudie <g:f> |rechter <g:m> |rechtigen |rechtmatig |rechtsgeding <g:f> |rechtsgeleerde <g:m,f> |rechtsgeleerdheid <g:f> |rechtsgeschiedkunde <g:f> |rechtsgeschiedkundige <g:m> |rechtsmacht <g:f> |rechtsorde <g:f> |rechtspersoon <g:m> |rechtspsychologie <g:f> |rechtstheorie <g:f> |rechtspleging <g:f> |rechtspraak <g:f> |rechtsprocedure <g:f> |rechtspsychologie <g:f> |rechtsstaat <g:m> |rechtssysteem <g:n> |rechtswetenschap <g:f> |rechtszaal <g:f,m> |rechtszaak <g:f> |rechtszekerheid <g:f> |rechtvaardig |terecht |van rechtswege |voorrecht <g:n> |wederrechtelijk }} {{col|nl|title=สิทธิเฉพาะหรือประเภทของกฎหมาย |aasdomsrecht <g:n> |adviesrecht <g:n> |alleenrecht <g:n> |auteursrecht <g:n> |beklemrecht <g:n> |bestaansrecht |burgerrecht <g:n> |cijnsrecht <g:n> |collatierecht <g:n> |contractrecht |dierenrechten <g:n-p> |dijkrecht <g:n> |eerstgeboorterecht <g:n> |erfrecht <g:n> |geboorterecht <g:n> |gewoonterecht <g:n> |grondrecht <g:n> |gruitrecht <g:n> |havenrecht <g:n> |hoederecht <g:n> |kiesrecht <g:n> |leenrecht <g:n> |mensenrecht <g:n> |milieurecht <g:n> |natuurrecht <g:n> |ontslagrecht <g:n> |oorlogsrecht <g:n> |privaatrecht <g:n> |publiekrecht <g:n> |rolrecht <g:n> |stadsrecht <g:n> |stapelrecht <g:n> |stemrecht <g:n> |strafprocesrecht <g:n> |spreekrecht <g:n> |vetorecht <g:n> |volkenrecht <g:n> |zelfbeschikkingsrecht <g:n> }} ===== คำที่เกี่ยวข้อง ===== {{col|nl |gerecht }} ===== คำสืบทอด ===== * {{desc|af|reg}} * {{desc|dcr|recht|regt}} * {{desc|jvn|rèh|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 3 === {{nonlemma}} ==== คำกริยา ==== {{head|nl|รูปกริยา}} # {{infl of|nl|rechten||bare-ten-verb}} == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|ine-pro|inh=1}} จาก{{inh|de|gmh|rëht}}, จาก{{inh|de|goh|rëht}}, จาก{{inh|de|gmw-pro|*reht||ขวา, ตรง}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|yi|רעכט}}, {{cog|is|réttur}}, {{cog|nl|recht}}, {{cog|en|right}}, {{cog|da|ret}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ʁɛçt/|[ʁɛçtʰ]|a=Germany}} * {{IPA|de|/rɛçt/|[rɛçtʰ]|a=Austria, Switzerland}} * {{rhymes|de|ɛçt|s=1}} * {{audio|de|De-recht.ogg}} * {{audio|de|De-recht2.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st[พบได้ยากมาก]}} # [[ขวา]] #: {{ant|de|link}} #: {{coi|de|die '''rechte''' Hand|[[มือ]][[ขวา]]}} #: {{ux|de|Auf der '''rechten''' Straßenseite liegt ein [[Supermarkt]].|[[ซูเปอร์มาร์เก็ต]]อยู่ด้าน'''ขวา'''ของถนน}} # [[ถูกต้อง]], [[เหมาะสม]] #: {{ant|de|falsch}} #: {{coi|de|im '''rechten''' Augenblick|ในจังหวะที่เหมาะสม}} #: {{coi|de|auf der ''' rechten''' Spur|อยู่บนเส้นทางที่ถูกต้อง}} # [[จริง]], [[แท้จริง]] # [[ยุติธรรม]], [[ชอบ]][[ด้วย]][[กฎหมาย]] # {{lb|de|geometry}} [[ตั้ง]][[ฉาก]], [[เป็น]][[มุม]] 90 [[องศา]] #: {{syn|de|rechtwinklig}} #: {{coi|de|'''rechter''' Winkel|[[มุม]][[ฉาก]]}} ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st[พบได้ยากมาก]}} ==== ลูกคำ ==== * {{l|de|rechte Hand|g=f||มือข้างขวา; มือขวา, ผู้ช่วยคนสำคัญ}} * {{l|de|rechter Winkel}} === คำกริยาวิเศษณ์ === {{de-adv}} # [[ค่อน]][[ข้าง]], [[พอ]][[สมควร]] #: {{uxi|de|Es ist '''recht''' warm heute Abend.|เย็นนี้'''ค่อนข้าง'''อบอุ่น}} #: {{uxi|de|'''recht''' klein|'''ค่อนข้าง'''เล็ก}} # อย่าง[[ถูกต้อง]] #: {{uxi|de|ganz '''recht'''|ถูกต้องเลย}} # อย่าง[[แม่นยำ]] ==== คำที่เกี่ยวข้อง ==== * {{l|de|Recht|g=n||สิทธิ; เอกสิทธิ์; สิทธิเรียกร้อง; กฎหมาย}} * {{l|de|recht haben}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} == ภาษาฮุนสริก == === รากศัพท์ === จาก{{inh|hrx|gmh|rëht}}, จาก{{inh|hrx|goh|reht}}; เทียบ{{cog|de|recht}}, {{cog|nl|recht}} === การออกเสียง === {{hrx-pr|hmp=Recht}} === คำคุณศัพท์ === {{head|hrx|คำคุณศัพท์|ขั้นกว่า|rechter|ขั้นสุด|rechtest}} # [[ขวา]] === อ่านเพิ่ม === * {{R:hrx:Boll}} == ภาษาเยอรมันต่ำ == === คำนาม === {{nds-noun|n|rechten}} # {{lb|nds|DLS}} {{alternative form of|nds|Recht}} == ภาษาเยอรมันแบบเพนซิลเวเนีย == === รากศัพท์ === จาก{{inh|pdc|gmh|rëht}}, จาก{{inh|pdc|goh|reht}}; เทียบ{{cog|de|recht}}, {{cog|nl|recht}} === คำคุณศัพท์ === {{head|pdc|คำคุณศัพท์}} # [[ขวา]] 3xhnpcw2i3842arxpbu3aqaw7dgucc5 5729115 5729114 2026-07-20T02:20:08Z Octahedron80 267 เรียงลำดับหัวเรื่องภาษา 5729115 wikitext text/x-wiki == ภาษาเช็ก == === รากศัพท์ === {{ety|cs|:bor|de:recht|text=+|tree=1}} === การออกเสียง === * {{cs-IPA}} === คำกริยาวิเศษณ์ === {{cs-adv}} # {{lb|cs|colloquial}} [[ถูกต้อง]], [[เหมาะสม]] #: {{uxi|cs|Tobě taky nic není '''recht'''.|Nothing '''suits''' you. (You are hard to '''please'''.)}} ==== ลูกคำ ==== {{col|cs|mít recht|dát recht}} === อ่านเพิ่ม === * {{R:cs:PSJC}} * {{R:cs:SSJC}} == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}} ==== คำคุณศัพท์ ==== {{nl-adj}} # [[ตรง]] #: {{ant|nl|krom}} #: {{uxa|nl|in een '''rechte''' lijn|ในเส้นตรง}} # {{obsolete form of|nl|[[rechts]], [[rechter]]|t=ขวา}} ===== การผันรูป ===== {{nl-decl-adj}} ===== ลูกคำ ===== {{col|nl |kaarsrecht |lijnrecht |loodrecht |oprecht |recht door zee |rechte klimming |rechter |rechthoek |rechtlijnig |rechtlopen |rechtop |rechts |rechtschapen |rechttegenover |rechttrekken |recht voor zijn raap |rechtzetten |recht zo die gaat |regelrecht }} ===== คำสืบทอด ===== * {{desc|brc|rekti}} * {{desc|gmw-jdt|rääxt}} * {{desc|dcr|recht|rek|ret|tret|regt}} ** {{desc|vic|tret|bor=1}} {{q|dated}} * {{desc|pap|rècht|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 2 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*rehta}}, จาก{{inh|nl|gem-pro|*rehtą}} ซึ่งเป็นการสร้างคำนามจากคำคุณศัพท์ ==== คำนาม ==== {{nl-noun|n|-en|+}} # [[สิทธิ]], [[อำนาจ]], อำนาจหน้าที่, [[เอกสิทธิ์]] #: {{uxi|nl|Je hebt het '''recht''' niet om dat te doen!|คุณไม่มี'''สิทธิ'''ทำเช่นนั้น!}} # [[ความ]][[ยุติธรรม]] #: {{uxi|nl|Noemt u dit '''recht'''? Ik noem dit onrecht.|คุณเรียกสิ่งนี้ว่า'''ความยุติธรรม'''หรือ? ฉันเรียกสิ่งนี้ว่าความอยุติธรรม}} # [[นิติศาสตร์]], [[กฎหมาย]] #: {{uxi|nl|Het '''recht''' heeft beslist.|กฎหมายได้ตัดสินแล้ว}} # [[ค่าธรรมเนียม]], [[อากร]], ค่าภาระที่ต้องชำระ ===== ลูกคำ ===== {{col|nl|title=ทั่วไป |berechten |rechtbank <g:f> |rechtelijk |rechtenstudent <g:m> |rechtenstudie <g:f> |rechter <g:m> |rechtigen |rechtmatig |rechtsgeding <g:f> |rechtsgeleerde <g:m,f> |rechtsgeleerdheid <g:f> |rechtsgeschiedkunde <g:f> |rechtsgeschiedkundige <g:m> |rechtsmacht <g:f> |rechtsorde <g:f> |rechtspersoon <g:m> |rechtspsychologie <g:f> |rechtstheorie <g:f> |rechtspleging <g:f> |rechtspraak <g:f> |rechtsprocedure <g:f> |rechtspsychologie <g:f> |rechtsstaat <g:m> |rechtssysteem <g:n> |rechtswetenschap <g:f> |rechtszaal <g:f,m> |rechtszaak <g:f> |rechtszekerheid <g:f> |rechtvaardig |terecht |van rechtswege |voorrecht <g:n> |wederrechtelijk }} {{col|nl|title=สิทธิเฉพาะหรือประเภทของกฎหมาย |aasdomsrecht <g:n> |adviesrecht <g:n> |alleenrecht <g:n> |auteursrecht <g:n> |beklemrecht <g:n> |bestaansrecht |burgerrecht <g:n> |cijnsrecht <g:n> |collatierecht <g:n> |contractrecht |dierenrechten <g:n-p> |dijkrecht <g:n> |eerstgeboorterecht <g:n> |erfrecht <g:n> |geboorterecht <g:n> |gewoonterecht <g:n> |grondrecht <g:n> |gruitrecht <g:n> |havenrecht <g:n> |hoederecht <g:n> |kiesrecht <g:n> |leenrecht <g:n> |mensenrecht <g:n> |milieurecht <g:n> |natuurrecht <g:n> |ontslagrecht <g:n> |oorlogsrecht <g:n> |privaatrecht <g:n> |publiekrecht <g:n> |rolrecht <g:n> |stadsrecht <g:n> |stapelrecht <g:n> |stemrecht <g:n> |strafprocesrecht <g:n> |spreekrecht <g:n> |vetorecht <g:n> |volkenrecht <g:n> |zelfbeschikkingsrecht <g:n> }} ===== คำที่เกี่ยวข้อง ===== {{col|nl |gerecht }} ===== คำสืบทอด ===== * {{desc|af|reg}} * {{desc|dcr|recht|regt}} * {{desc|jvn|rèh|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 3 === {{nonlemma}} ==== คำกริยา ==== {{head|nl|รูปกริยา}} # {{infl of|nl|rechten||bare-ten-verb}} == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|ine-pro|inh=1}} จาก{{inh|de|gmh|rëht}}, จาก{{inh|de|goh|rëht}}, จาก{{inh|de|gmw-pro|*reht||ขวา, ตรง}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|yi|רעכט}}, {{cog|is|réttur}}, {{cog|nl|recht}}, {{cog|en|right}}, {{cog|da|ret}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ʁɛçt/|[ʁɛçtʰ]|a=Germany}} * {{IPA|de|/rɛçt/|[rɛçtʰ]|a=Austria, Switzerland}} * {{rhymes|de|ɛçt|s=1}} * {{audio|de|De-recht.ogg}} * {{audio|de|De-recht2.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st[พบได้ยากมาก]}} # [[ขวา]] #: {{ant|de|link}} #: {{coi|de|die '''rechte''' Hand|[[มือ]][[ขวา]]}} #: {{ux|de|Auf der '''rechten''' Straßenseite liegt ein [[Supermarkt]].|[[ซูเปอร์มาร์เก็ต]]อยู่ด้าน'''ขวา'''ของถนน}} # [[ถูกต้อง]], [[เหมาะสม]] #: {{ant|de|falsch}} #: {{coi|de|im '''rechten''' Augenblick|ในจังหวะที่เหมาะสม}} #: {{coi|de|auf der ''' rechten''' Spur|อยู่บนเส้นทางที่ถูกต้อง}} # [[จริง]], [[แท้จริง]] # [[ยุติธรรม]], [[ชอบ]][[ด้วย]][[กฎหมาย]] # {{lb|de|geometry}} [[ตั้ง]][[ฉาก]], [[เป็น]][[มุม]] 90 [[องศา]] #: {{syn|de|rechtwinklig}} #: {{coi|de|'''rechter''' Winkel|[[มุม]][[ฉาก]]}} ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st[พบได้ยากมาก]}} ==== ลูกคำ ==== * {{l|de|rechte Hand|g=f||มือข้างขวา; มือขวา, ผู้ช่วยคนสำคัญ}} * {{l|de|rechter Winkel}} === คำกริยาวิเศษณ์ === {{de-adv}} # [[ค่อน]][[ข้าง]], [[พอ]][[สมควร]] #: {{uxi|de|Es ist '''recht''' warm heute Abend.|เย็นนี้'''ค่อนข้าง'''อบอุ่น}} #: {{uxi|de|'''recht''' klein|'''ค่อนข้าง'''เล็ก}} # อย่าง[[ถูกต้อง]] #: {{uxi|de|ganz '''recht'''|ถูกต้องเลย}} # อย่าง[[แม่นยำ]] ==== คำที่เกี่ยวข้อง ==== * {{l|de|Recht|g=n||สิทธิ; เอกสิทธิ์; สิทธิเรียกร้อง; กฎหมาย}} * {{l|de|recht haben}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} == ภาษาเยอรมันต่ำ == === คำนาม === {{nds-noun|n|rechten}} # {{lb|nds|DLS}} {{alternative form of|nds|Recht}} == ภาษาเยอรมันแบบเพนซิลเวเนีย == === รากศัพท์ === จาก{{inh|pdc|gmh|rëht}}, จาก{{inh|pdc|goh|reht}}; เทียบ{{cog|de|recht}}, {{cog|nl|recht}} === คำคุณศัพท์ === {{head|pdc|คำคุณศัพท์}} # [[ขวา]] == ภาษาฮุนสริก == === รากศัพท์ === จาก{{inh|hrx|gmh|rëht}}, จาก{{inh|hrx|goh|reht}}; เทียบ{{cog|de|recht}}, {{cog|nl|recht}} === การออกเสียง === {{hrx-pr|hmp=Recht}} === คำคุณศัพท์ === {{head|hrx|คำคุณศัพท์|ขั้นกว่า|rechter|ขั้นสุด|rechtest}} # [[ขวา]] === อ่านเพิ่ม === * {{R:hrx:Boll}} 0nkwyy31zj3stg7dhz4o0x6zf1lqboq 5729123 5729115 2026-07-20T02:25:30Z Octahedron80 267 /* คำสืบทอด */ 5729123 wikitext text/x-wiki == ภาษาเช็ก == === รากศัพท์ === {{ety|cs|:bor|de:recht|text=+|tree=1}} === การออกเสียง === * {{cs-IPA}} === คำกริยาวิเศษณ์ === {{cs-adv}} # {{lb|cs|colloquial}} [[ถูกต้อง]], [[เหมาะสม]] #: {{uxi|cs|Tobě taky nic není '''recht'''.|Nothing '''suits''' you. (You are hard to '''please'''.)}} ==== ลูกคำ ==== {{col|cs|mít recht|dát recht}} === อ่านเพิ่ม === * {{R:cs:PSJC}} * {{R:cs:SSJC}} == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/rɛxt/}} * {{audio|nl|Nl-recht.ogg}} * {{hyphenation|nl|recht}} * {{rhymes|nl|ɛxt|s=1}} === รากศัพท์ 1 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*reht}}, จาก{{inh|nl|gem-pro|*rehtaz}}, จาก{{inh|nl|ine-pro|*h₃reǵtós}} ==== คำคุณศัพท์ ==== {{nl-adj}} # [[ตรง]] #: {{ant|nl|krom}} #: {{uxa|nl|in een '''rechte''' lijn|ในเส้นตรง}} # {{obsolete form of|nl|[[rechts]], [[rechter]]|t=ขวา}} ===== การผันรูป ===== {{nl-decl-adj}} ===== ลูกคำ ===== {{col|nl |kaarsrecht |lijnrecht |loodrecht |oprecht |recht door zee |rechte klimming |rechter |rechthoek |rechtlijnig |rechtlopen |rechtop |rechts |rechtschapen |rechttegenover |rechttrekken |recht voor zijn raap |rechtzetten |recht zo die gaat |regelrecht }} ===== คำสืบทอด ===== * {{desc|brc|rekti}} * {{desc|gmw-jdt|rääxt}} * {{desc|dcr|recht|rek|ret|tret|regt}} ** {{desc|vic|tret|bor=1}} {{q|ล้าสม้ย}} * {{desc|pap|rècht|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 2 === จาก{{inh|nl|dum|recht}}, จาก{{inh|nl|odt|reht}}, จาก{{inh|nl|gmw-pro|*rehta}}, จาก{{inh|nl|gem-pro|*rehtą}} ซึ่งเป็นการสร้างคำนามจากคำคุณศัพท์ ==== คำนาม ==== {{nl-noun|n|-en|+}} # [[สิทธิ]], [[อำนาจ]], อำนาจหน้าที่, [[เอกสิทธิ์]] #: {{uxi|nl|Je hebt het '''recht''' niet om dat te doen!|คุณไม่มี'''สิทธิ'''ทำเช่นนั้น!}} # [[ความ]][[ยุติธรรม]] #: {{uxi|nl|Noemt u dit '''recht'''? Ik noem dit onrecht.|คุณเรียกสิ่งนี้ว่า'''ความยุติธรรม'''หรือ? ฉันเรียกสิ่งนี้ว่าความอยุติธรรม}} # [[นิติศาสตร์]], [[กฎหมาย]] #: {{uxi|nl|Het '''recht''' heeft beslist.|กฎหมายได้ตัดสินแล้ว}} # [[ค่าธรรมเนียม]], [[อากร]], ค่าภาระที่ต้องชำระ ===== ลูกคำ ===== {{col|nl|title=ทั่วไป |berechten |rechtbank <g:f> |rechtelijk |rechtenstudent <g:m> |rechtenstudie <g:f> |rechter <g:m> |rechtigen |rechtmatig |rechtsgeding <g:f> |rechtsgeleerde <g:m,f> |rechtsgeleerdheid <g:f> |rechtsgeschiedkunde <g:f> |rechtsgeschiedkundige <g:m> |rechtsmacht <g:f> |rechtsorde <g:f> |rechtspersoon <g:m> |rechtspsychologie <g:f> |rechtstheorie <g:f> |rechtspleging <g:f> |rechtspraak <g:f> |rechtsprocedure <g:f> |rechtspsychologie <g:f> |rechtsstaat <g:m> |rechtssysteem <g:n> |rechtswetenschap <g:f> |rechtszaal <g:f,m> |rechtszaak <g:f> |rechtszekerheid <g:f> |rechtvaardig |terecht |van rechtswege |voorrecht <g:n> |wederrechtelijk }} {{col|nl|title=สิทธิเฉพาะหรือประเภทของกฎหมาย |aasdomsrecht <g:n> |adviesrecht <g:n> |alleenrecht <g:n> |auteursrecht <g:n> |beklemrecht <g:n> |bestaansrecht |burgerrecht <g:n> |cijnsrecht <g:n> |collatierecht <g:n> |contractrecht |dierenrechten <g:n-p> |dijkrecht <g:n> |eerstgeboorterecht <g:n> |erfrecht <g:n> |geboorterecht <g:n> |gewoonterecht <g:n> |grondrecht <g:n> |gruitrecht <g:n> |havenrecht <g:n> |hoederecht <g:n> |kiesrecht <g:n> |leenrecht <g:n> |mensenrecht <g:n> |milieurecht <g:n> |natuurrecht <g:n> |ontslagrecht <g:n> |oorlogsrecht <g:n> |privaatrecht <g:n> |publiekrecht <g:n> |rolrecht <g:n> |stadsrecht <g:n> |stapelrecht <g:n> |stemrecht <g:n> |strafprocesrecht <g:n> |spreekrecht <g:n> |vetorecht <g:n> |volkenrecht <g:n> |zelfbeschikkingsrecht <g:n> }} ===== คำที่เกี่ยวข้อง ===== {{col|nl |gerecht }} ===== คำสืบทอด ===== * {{desc|af|reg}} * {{desc|dcr|recht|regt}} * {{desc|jvn|rèh|bor=1}} * {{desc|srm|leti|bor=1}} === รากศัพท์ 3 === {{nonlemma}} ==== คำกริยา ==== {{head|nl|รูปกริยา}} # {{infl of|nl|rechten||bare-ten-verb}} == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|ine-pro|inh=1}} จาก{{inh|de|gmh|rëht}}, จาก{{inh|de|goh|rëht}}, จาก{{inh|de|gmw-pro|*reht||ขวา, ตรง}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|yi|רעכט}}, {{cog|is|réttur}}, {{cog|nl|recht}}, {{cog|en|right}}, {{cog|da|ret}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ʁɛçt/|[ʁɛçtʰ]|a=Germany}} * {{IPA|de|/rɛçt/|[rɛçtʰ]|a=Austria, Switzerland}} * {{rhymes|de|ɛçt|s=1}} * {{audio|de|De-recht.ogg}} * {{audio|de|De-recht2.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{de-adj|comp.sup:+est:+st[พบได้ยากมาก]}} # [[ขวา]] #: {{ant|de|link}} #: {{coi|de|die '''rechte''' Hand|[[มือ]][[ขวา]]}} #: {{ux|de|Auf der '''rechten''' Straßenseite liegt ein [[Supermarkt]].|[[ซูเปอร์มาร์เก็ต]]อยู่ด้าน'''ขวา'''ของถนน}} # [[ถูกต้อง]], [[เหมาะสม]] #: {{ant|de|falsch}} #: {{coi|de|im '''rechten''' Augenblick|ในจังหวะที่เหมาะสม}} #: {{coi|de|auf der ''' rechten''' Spur|อยู่บนเส้นทางที่ถูกต้อง}} # [[จริง]], [[แท้จริง]] # [[ยุติธรรม]], [[ชอบ]][[ด้วย]][[กฎหมาย]] # {{lb|de|geometry}} [[ตั้ง]][[ฉาก]], [[เป็น]][[มุม]] 90 [[องศา]] #: {{syn|de|rechtwinklig}} #: {{coi|de|'''rechter''' Winkel|[[มุม]][[ฉาก]]}} ==== การผันรูป ==== {{de-adecl|comp.sup:+est:+st[พบได้ยากมาก]}} ==== ลูกคำ ==== * {{l|de|rechte Hand|g=f||มือข้างขวา; มือขวา, ผู้ช่วยคนสำคัญ}} * {{l|de|rechter Winkel}} === คำกริยาวิเศษณ์ === {{de-adv}} # [[ค่อน]][[ข้าง]], [[พอ]][[สมควร]] #: {{uxi|de|Es ist '''recht''' warm heute Abend.|เย็นนี้'''ค่อนข้าง'''อบอุ่น}} #: {{uxi|de|'''recht''' klein|'''ค่อนข้าง'''เล็ก}} # อย่าง[[ถูกต้อง]] #: {{uxi|de|ganz '''recht'''|ถูกต้องเลย}} # อย่าง[[แม่นยำ]] ==== คำที่เกี่ยวข้อง ==== * {{l|de|Recht|g=n||สิทธิ; เอกสิทธิ์; สิทธิเรียกร้อง; กฎหมาย}} * {{l|de|recht haben}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} == ภาษาเยอรมันต่ำ == === คำนาม === {{nds-noun|n|rechten}} # {{lb|nds|DLS}} {{alternative form of|nds|Recht}} == ภาษาเยอรมันแบบเพนซิลเวเนีย == === รากศัพท์ === จาก{{inh|pdc|gmh|rëht}}, จาก{{inh|pdc|goh|reht}}; เทียบ{{cog|de|recht}}, {{cog|nl|recht}} === คำคุณศัพท์ === {{head|pdc|คำคุณศัพท์}} # [[ขวา]] == ภาษาฮุนสริก == === รากศัพท์ === จาก{{inh|hrx|gmh|rëht}}, จาก{{inh|hrx|goh|reht}}; เทียบ{{cog|de|recht}}, {{cog|nl|recht}} === การออกเสียง === {{hrx-pr|hmp=Recht}} === คำคุณศัพท์ === {{head|hrx|คำคุณศัพท์|ขั้นกว่า|rechter|ขั้นสุด|rechtest}} # [[ขวา]] === อ่านเพิ่ม === * {{R:hrx:Boll}} jth8vjn85cha3m8056iwxrojs0f7j74 คุยกับผู้ใช้:กัสกะแทก เย็ดแตกคาหี 3 2333694 5729021 2026-07-19T18:12:54Z New user message 2698 เพิ่ม[[Template:Welcome|สารต้อนรับ]]ในหน้าคุยของผู้ใช้ใหม่ 5729021 wikitext text/x-wiki {{Template:Welcome|realName=|name=กัสกะแทก เย็ดแตกคาหี}} -- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 01:12, 20 กรกฎาคม 2569 (+07) ru84ciyynfhcejxse5vh7ne2h8hqktj ᨩᩣ᩠ᨯ 0 2333695 5729022 2026-07-19T20:05:02Z Alifshinobi 397 สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=ชาด|s=จ้าด}} === การออกเสียง === * {{IPA|nod|/t͡ɕaːt˦˨/|a=เชียงใหม่}} === รากศัพท์ 1 === ==== คำกริยาวิเศษณ์ ==== {{nod-adv|-}} # [[มาก]] #: {{ux|nod|'''ᨩᩣ᩠ᨯ'''[[ᩃᩣᩴ]]|อร่อย'''มาก'''}} # [[ดี]] # [[วิเศษ]..." 5729022 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=ชาด|s=จ้าด}} === การออกเสียง === * {{IPA|nod|/t͡ɕaːt˦˨/|a=เชียงใหม่}} === รากศัพท์ 1 === ==== คำกริยาวิเศษณ์ ==== {{nod-adv|-}} # [[มาก]] #: {{ux|nod|'''ᨩᩣ᩠ᨯ'''[[ᩃᩣᩴ]]|อร่อย'''มาก'''}} # [[ดี]] # [[วิเศษ]] # [[สมบูรณ์]] === รากศัพท์ 2 === ==== คำกริยา ==== {{nod-verb}} # {{lb|nod|สกรรม}} [[จุ่ม]], [[แช่]], [[ชุบ]] # {{lb|nod|สกรรม}} [[แตะ]] (ใช้สำหรับของที่เผาให้ร้อนแล้วแตะน้ำโดยเร็ว) # {{lb|nod|สกรรม}} [[ถูก]][[ส่วน]][[ใด]][[ส่วน]][[หนึ่ง]][[ของ]][[ร่างกาย]] (ใช้กับของร้อน) #: {{syn|nod|ᨧᩣ᩠ᨯ|ᨴᩤ᩠ᨯ}} #: {{ux|nod|[[ᨲᩮᩢᩣᩁᩦ᩠ᨯ]]'''ᨩᩣ᩠ᨯ'''[[ᨾᩨ]]|เตารีด'''โดน'''มือ}} === รากศัพท์ 3 === ==== คำนาม ==== {{nod-noun}} # [[เอื้องผีเสื้อ]] <!--ไม่แน่ใจว่า ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พ.ศ. 2550) หมายถึง 1) "เอื้องผีเสื้อ" หรือ 2) "เอื้อง" และ "ผีเสื้อ" อาจเป็น "เอื้องผีเสื้อ" ซึ่งหมายถึง กะเรกะร่อนอินทนนท์ ซึ่งมีชื่ออื่นว่า "เอื้องกำเบ้อ" หรือ "เอื้องชาด" เป็นต้น--> === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. rpjwfblfqmzaqkg5tzqci55g9g2vwyk 5729023 5729022 2026-07-19T20:06:40Z Alifshinobi 397 /* รากศัพท์ 1 */ 5729023 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=ชาด|s=จ้าด}} === การออกเสียง === * {{IPA|nod|/t͡ɕaːt˦˨/|a=เชียงใหม่}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|kkh|ᨩᩣ᩠ᨯ}}, {{cog|khb|ᦋᦱᧆ}} ==== คำกริยาวิเศษณ์ ==== {{nod-adv|-}} # [[มาก]] #: {{ux|nod|'''ᨩᩣ᩠ᨯ'''[[ᩃᩣᩴ]]|อร่อย'''มาก'''}} # [[ดี]] # [[วิเศษ]] # [[สมบูรณ์]] === รากศัพท์ 2 === ==== คำกริยา ==== {{nod-verb}} # {{lb|nod|สกรรม}} [[จุ่ม]], [[แช่]], [[ชุบ]] # {{lb|nod|สกรรม}} [[แตะ]] (ใช้สำหรับของที่เผาให้ร้อนแล้วแตะน้ำโดยเร็ว) # {{lb|nod|สกรรม}} [[ถูก]][[ส่วน]][[ใด]][[ส่วน]][[หนึ่ง]][[ของ]][[ร่างกาย]] (ใช้กับของร้อน) #: {{syn|nod|ᨧᩣ᩠ᨯ|ᨴᩤ᩠ᨯ}} #: {{ux|nod|[[ᨲᩮᩢᩣᩁᩦ᩠ᨯ]]'''ᨩᩣ᩠ᨯ'''[[ᨾᩨ]]|เตารีด'''โดน'''มือ}} === รากศัพท์ 3 === ==== คำนาม ==== {{nod-noun}} # [[เอื้องผีเสื้อ]] <!--ไม่แน่ใจว่า ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พ.ศ. 2550) หมายถึง 1) "เอื้องผีเสื้อ" หรือ 2) "เอื้อง" และ "ผีเสื้อ" อาจเป็น "เอื้องผีเสื้อ" ซึ่งหมายถึง กะเรกะร่อนอินทนนท์ ซึ่งมีชื่ออื่นว่า "เอื้องกำเบ้อ" หรือ "เอื้องชาด" เป็นต้น--> === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. gtjr3fp8i0hk6pac4do6jyudbdu0f43 ᨹᩮᩥ᩠᩶ᨦ 0 2333696 5729031 2026-07-19T20:38:18Z Alifshinobi 397 สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=เผิ้ง}} === การออกเสียง === * {{IPA|nod|/pʰɤːŋ˦˦ʔ/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # [[ผึ้ง]] {{cls|nod|ᨲ᩠ᩅᩫ}} # {{lang|nod|([[ᩋᩮᩬᩥ᩶ᨦ]]~)}} [[กล้วยไม้]][[ชนิด]][[หนึ่ง]] [[เรียก]][[ว่า]] {{l|nod|ᩋᩮ..." 5729031 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=เผิ้ง}} === การออกเสียง === * {{IPA|nod|/pʰɤːŋ˦˦ʔ/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # [[ผึ้ง]] {{cls|nod|ᨲ᩠ᩅᩫ}} # {{lang|nod|([[ᩋᩮᩬᩥ᩶ᨦ]]~)}} [[กล้วยไม้]][[ชนิด]][[หนึ่ง]] [[เรียก]][[ว่า]] {{l|nod|[[ᩋᩮᩬᩥ᩶ᨦ]]ᨹᩮᩥ᩠᩶ᨦ}} === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. 7gfbpif9fp7ppcdqmibyahaf8zxrlq7 ᨧᩬ᩵ᨾ 0 2333697 5729032 2026-07-19T22:33:33Z Alifshinobi 397 สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=จ่อม}} === การออกเสียง === * {{IPA|nod|/t͡ɕɔm˨˩/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} [[ใช้]][[เบ็ด]][[ตก]][[ปลา]], [[จุ่ม]], [[หย่อน]] #: {{ux|nod|'''ᨧᩬ᩵ᨾ'''[[ᨷᩮᩢ᩠ᨯ]]'''ᨧᩬ᩵ᨾ'''ᨠ᩶ᩣ..." 5729032 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|~=จ่อม}} === การออกเสียง === * {{IPA|nod|/t͡ɕɔm˨˩/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} [[ใช้]][[เบ็ด]][[ตก]][[ปลา]], [[จุ่ม]], [[หย่อน]] #: {{ux|nod|'''ᨧᩬ᩵ᨾ'''[[ᨷᩮᩢ᩠ᨯ]]'''ᨧᩬ᩵ᨾ'''[[ᨠ᩶ᩣ᩠ᨶ]]|'''จ่อม'''เบ็ด'''จ่อม'''คันเบ็ด}} # {{lb|nod|สกรรม}} [[ดอง]][[อาหาร]][[บาง]][[อย่าง]][[เพื่อ]][[ให้]][[มี]][[รส]][[เปรี้ยว]][[เล็กน้อย]][[อย่าง]] {{l|nod|[[ᨸᩖᩣ]]ᨧᩬ᩵ᨾ}} [[หรือ]] {{l|nod|[[ᨾᩯ᩠ᨦᨾᩢ᩠ᨶ]]ᨧᩬ᩵ᨾ}} [[เป็นต้น]] === คำนาม === {{nod-noun}} # [[อาหาร]][[ที่]][[ผ่าน]][[การหมัก]][[ดอง]] #: {{ux|nod|[[ᨸᩖᩣ]]'''ᨧᩬ᩵ᨾ'''|ปลา'''หมัก'''}} === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. buoc5zb0ytbbsugckuvghu7puh4no8n ᨠᩰᩫ᩠ᨶ 0 2333698 5729033 2026-07-19T22:45:32Z Alifshinobi 397 สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=โกน|s=โก๋น}} === การออกเสียง === * {{IPA|nod|/koːn˨˦/|a=เชียงใหม่}} === รากศัพท์ 1 === ==== คำนาม ==== {{nod-noun}} # [[โพรง]] # [[โพรง]][[ที่]][[ให้]][[ผึ้ง]][[ทำ]][[รัง]] # [[ไม้]][[ท่อน]][[ที่]]เป็..." 5729033 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=โกน|s=โก๋น}} === การออกเสียง === * {{IPA|nod|/koːn˨˦/|a=เชียงใหม่}} === รากศัพท์ 1 === ==== คำนาม ==== {{nod-noun}} # [[โพรง]] # [[โพรง]][[ที่]][[ให้]][[ผึ้ง]][[ทำ]][[รัง]] # [[ไม้]][[ท่อน]][[ที่]][[เป็น]][[โพรง]][[หรือ]][[กลวง]] # {{lang|nod|([[ᨹᩮᩥ᩠᩶ᨦ]]~)}} [[ผึ้ง]][[ที่]][[ทำ]][[รัง]][[ใน]][[โพรง]][[ไม้]] [[เรียก]][[ว่า]] {{l|nod|[[ᨹᩮᩥ᩠᩶ᨦ]]ᨠᩰᩫ᩠ᨶ}} === รากศัพท์ 2 === ==== คำนาม ==== {{nod-noun}} # [[กางเกง]] #: {{syn|nod|ᨲ᩠ᨿ᩵ᩅ}} === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. 3snr5pc5wzukh7o2qkrn1ig1j2gysmq 5729035 5729033 2026-07-19T22:47:57Z Alifshinobi 397 /* รากศัพท์ 2 */ 5729035 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=โกน|s=โก๋น}} === การออกเสียง === * {{IPA|nod|/koːn˨˦/|a=เชียงใหม่}} === รากศัพท์ 1 === ==== คำนาม ==== {{nod-noun}} # [[โพรง]] # [[โพรง]][[ที่]][[ให้]][[ผึ้ง]][[ทำ]][[รัง]] # [[ไม้]][[ท่อน]][[ที่]][[เป็น]][[โพรง]][[หรือ]][[กลวง]] # {{lang|nod|([[ᨹᩮᩥ᩠᩶ᨦ]]~)}} [[ผึ้ง]][[ที่]][[ทำ]][[รัง]][[ใน]][[โพรง]][[ไม้]] [[เรียก]][[ว่า]] {{l|nod|[[ᨹᩮᩥ᩠᩶ᨦ]]ᨠᩰᩫ᩠ᨶ}} === รากศัพท์ 2 === ร่วมเชื้อสายกับ{{cog|kkh|ᨠᩫ᩠ᨶ}}, {{cog|shn|ၵူၼ်}}, {{cog|tdd|ᥐᥨᥢ}} ==== คำนาม ==== {{nod-noun}} # [[กางเกง]] #: {{syn|nod|ᨲ᩠ᨿ᩵ᩅ}} === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. 573itjfuzuur8pe5nw796p9sn3g88zb rechter 0 2333699 5729061 2026-07-20T01:46:22Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729061 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/ˈrɛx.tər/}} * {{audio|nl|Nl-rechter.ogg}} * {{hyphenation|nl|rech|ter}} * {{rhymes|nl|ɛxtər|s=2}} === รากศัพท์ 1 === จาก{{inh|nl|dum|rechtere}}; {{surface analysis|nl|rechten|t1=พิพากษา|-er|pos2=ปัจจัยผู้กระทำ}}; เทียบ{{cog|de|Richter}} ==== คำนาม ==== {{nl-noun|m|-s|+}} # {{lb|nl|legal}} [[ผู้พิพากษา]] ===== ลูกคำ ===== {{col|nl |eigenrechter |kantonrechter |onderzoeksrechter |politierechter |scheidsrechter |scherprechter |vrederechter }} ===== คำสืบทอด ===== * {{desc|dcr|rechter|regter}} === รากศัพท์ 2 === ต้นกำเนิดจากรูปเพศหญิงสัมปทานการกของ {{m|nl|recht}}; ทำให้เป็นนัยทั่วไปจากวลี {{m|nl|[[ter]] [[recht]]er [[hand]]}}, {{m|nl|ter rechter [[zijde]]|t=อยู่ขวามือ/ข้างขวา}} <!--Philippa says "comparative", but this is wrong, as the lack of inflection (*rechtere) shows. Philippa herself gives the correct derivation at "linker"--> ==== คำคุณศัพท์ ==== {{nl-adj|-}} # [[ขวา]] #: {{syn|nl|rechts}} #: {{ant|nl|linker|links}} #: {{ux|nl|Er zit een vlek op je '''rechter''' broekspijp.|There’s a spot on your right trouser leg.}} ===== หมายเหตุการใช้ ===== * In [[attributive]] position, the form {{m|nl||rechter}} is commoner than {{m|nl|rechts}}, but [[predicative]]ly and as an [[adverb]] only the latter is possible. ===== การผันรูป ===== {{nl-decl-adj|rechter|-|pred=-|part=-}} ===== คำสืบทอด ===== * {{desc|dcr|retu|regter}} === รากศัพท์ 3 === {{nonlemma}} ==== คำคุณศัพท์ ==== {{head|nl|รูปคุณศัพท์}} # {{comparative of|nl|recht|t=straight}} {{C|nl|อาชีพ}} == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechter.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{comparative of|de|recht}} # {{de-adj form of|recht}} bnl8rpc94w0qg1x0e7o91q5q69j2nqb 5729064 5729061 2026-07-20T01:49:18Z Octahedron80 267 /* คำคุณศัพท์ */ 5729064 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/ˈrɛx.tər/}} * {{audio|nl|Nl-rechter.ogg}} * {{hyphenation|nl|rech|ter}} * {{rhymes|nl|ɛxtər|s=2}} === รากศัพท์ 1 === จาก{{inh|nl|dum|rechtere}}; {{surface analysis|nl|rechten|t1=พิพากษา|-er|pos2=ปัจจัยผู้กระทำ}}; เทียบ{{cog|de|Richter}} ==== คำนาม ==== {{nl-noun|m|-s|+}} # {{lb|nl|legal}} [[ผู้พิพากษา]] ===== ลูกคำ ===== {{col|nl |eigenrechter |kantonrechter |onderzoeksrechter |politierechter |scheidsrechter |scherprechter |vrederechter }} ===== คำสืบทอด ===== * {{desc|dcr|rechter|regter}} === รากศัพท์ 2 === ต้นกำเนิดจากรูปเพศหญิงสัมปทานการกของ {{m|nl|recht}}; ทำให้เป็นนัยทั่วไปจากวลี {{m|nl|[[ter]] [[recht]]er [[hand]]}}, {{m|nl|ter rechter [[zijde]]|t=อยู่ขวามือ/ข้างขวา}} <!--Philippa says "comparative", but this is wrong, as the lack of inflection (*rechtere) shows. Philippa herself gives the correct derivation at "linker"--> ==== คำคุณศัพท์ ==== {{nl-adj|-}} # [[ขวา]] #: {{syn|nl|rechts}} #: {{ant|nl|linker|links}} #: {{ux|nl|Er zit een vlek op je '''rechter''' broekspijp.|There’s a spot on your right trouser leg.}} ===== หมายเหตุการใช้ ===== * In [[attributive]] position, the form {{m|nl||rechter}} is commoner than {{m|nl|rechts}}, but [[predicative]]ly and as an [[adverb]] only the latter is possible. ===== การผันรูป ===== {{nl-decl-adj|rechter|-|pred=-|part=-}} ===== คำสืบทอด ===== * {{desc|dcr|retu|regter}} === รากศัพท์ 3 === {{nonlemma}} ==== คำคุณศัพท์ ==== {{head|nl|รูปคุณศัพท์}} # {{comparative of|nl|recht|t=ตรง}} {{C|nl|อาชีพ}} == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechter.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{comparative of|de|recht}} # {{de-adj form of|recht}} 05wv7s36v85pzyx41j924raz873nr0z rechters 0 2333700 5729062 2026-07-20T01:46:41Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729062 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{audio|nl|Nl-rechters.ogg}} === คำนาม === {{head|nl|รูปนาม}} # {{plural of|nl|rechter}} g2sscdkvhfcstacxvvg9eo2w6h8kbp8 rechtje 0 2333701 5729063 2026-07-20T01:49:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729063 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{audio|nl|Nl-rechtje.ogg}} === คำนาม === {{nl-noun-dim}} # {{diminutive of|nl|recht}} tc5a9noeow7dtmnm9px2gkch1yd16bi retu 0 2333702 5729066 2026-07-20T01:51:28Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729066 wikitext text/x-wiki == ภาษาลัตเวีย == === คำคุณศัพท์ === {{head|lv|รูปคุณศัพท์}} # {{inflection of|lv|rets||acc//ins|m//f|s|;|gen|m//f|p}} == ภาษาอัสตูเรียส == === รากศัพท์ === จาก{{m|ast|retar}} === คำนาม === {{ast-noun|m|retos}} # [[การท้าทาย]] ==== คำพ้องความ ==== * {{l|ast|desafíu}} ==== คำเกี่ยวข้อง ==== * {{l|ast|retar}} == ภาษาอิงเกรีย == === รากศัพท์ === จาก{{inh|izh|urj-fin-pro|*rëtu}}; ร่วมเชื้อสายกับ{{cog|krl|redu}} [ใต้] และ{{cog|vep|redu}} === การออกเสียง === * {{izh-p}} === คำนาม === {{head|izh|คำนาม}} # [[โคลน]], [[ดิน]] ==== การผันรูป ==== {{izh-decl/koivu|t}} ==== คำพ้องความ ==== * {{l|izh|rooja}} ==== ลูกคำ ==== {{col4|izh |retumatokkain|retukoma|retupääskö|reukas|retuin}} === อ้างอิง === * {{R:izh:Junus:1936|page=19}} * {{R:izh:Nirvi:1971|page=471}} d7zt5kk2yc1qk0yvowirj0abniqf49d retos 0 2333703 5729067 2026-07-20T01:51:44Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729067 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำคุณศัพท์ === {{head|pt|รูปคุณศัพท์}} # {{adj form of|pt|reto||m|p}} == ภาษาลัตเวีย == === คำคุณศัพท์ === {{head|lv|รูปคุณศัพท์}} # {{inflection of|lv|rets||loc|m|p|;|def|acc|m|p}} == ภาษาสเปน == === คำนาม === {{head|es|รูปนาม|g=m-p}} # {{inflection of|es|reto||p}} == ภาษาอัสตูเรียส == === คำนาม === {{head|ast|รูปนาม}} # {{plural of|ast|retu}} q5e4vg6mp3iaj437iyqz3kfottzimyc regter 0 2333704 5729069 2026-07-20T01:53:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729069 wikitext text/x-wiki == ภาษาอาฟรีกานส์ == === คำคุณศัพท์ === {{head|af|รูปคุณศัพท์}} # {{comparative of|af|reg}} 030br7tler58i7tpmv6x5ktesrlpeme rooja 0 2333705 5729070 2026-07-20T01:54:13Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729070 wikitext text/x-wiki == ภาษาอิงเกรีย == === รากศัพท์ === จาก{{inh|izh|urj-fin-pro|*rooja}}; ร่วมเชื้อสายกับ{{cog|fi|ruoja}} และ{{cog|et|roe}} === การออกเสียง === * {{izh-p}} === คำนาม === {{head|izh|คำนาม}} # [[ดิน]], [[โคลน]] ==== การผันรูป ==== {{izh-decl/koira|j|j}} ==== คำพ้องความ ==== * {{l|izh|retu}} ==== ลูกคำ ==== {{col4|izh |roojakas|roojata}} === อ้างอิง === * {{R:izh:Nirvi:1971|page=488}} n8qf4q073i6lohsjw28ue2plzhf51o9 roojakas 0 2333706 5729071 2026-07-20T01:55:34Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729071 wikitext text/x-wiki == ภาษาอิงเกรีย == === รากศัพท์ === จาก{{suffix|izh|rooja|t1=dirt|-kas}} === การออกเสียง === * {{izh-p}} === คำคุณศัพท์ === {{izh-adj|roojakkaamp}} # [[สกปรก]], [[โสโครก]] #* {{RQ:izh:Lukukirja-1:1936|I tetretit hänel ollaa '''roojakkaat''' (reukkaat).|And he has '''dirty''' (dirty) notebooks.|page=9}} ==== การผันรูป ==== {{izh-decl/patsas|k|kk}} ==== คำพ้องความ ==== * {{l|izh|reukas}} === อ้างอิง === * {{R:izh:Nirvi:1971|page=488}} ev46nr3yaws92gtyb2806ozbmmewthr 5729076 5729071 2026-07-20T01:58:00Z Octahedron80 267 /* รากศัพท์ */ 5729076 wikitext text/x-wiki == ภาษาอิงเกรีย == === รากศัพท์ === จาก{{suffix|izh|rooja|t1=ดิน|-kas}} === การออกเสียง === * {{izh-p}} === คำคุณศัพท์ === {{izh-adj|roojakkaamp}} # [[สกปรก]], [[โสโครก]] #* {{RQ:izh:Lukukirja-1:1936|I tetretit hänel ollaa '''roojakkaat''' (reukkaat).|And he has '''dirty''' (dirty) notebooks.|page=9}} ==== การผันรูป ==== {{izh-decl/patsas|k|kk}} ==== คำพ้องความ ==== * {{l|izh|reukas}} === อ้างอิง === * {{R:izh:Nirvi:1971|page=488}} jnd937kujlkqg6lgtxqg99gdwlu9rer แม่แบบ:izh-adj 10 2333707 5729072 2026-07-20T01:56:30Z Octahedron80 267 นำเข้าจาก enwikt 5729072 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{head|izh|คำคุณศัพท์{{#ifeq:{{{c|}}}|1|ขั้นกว่า}} |head={{{head|}}} |{{#ifeq:{{{1|}}}|-||{{#if:{{{1|}}}|ขั้นกว่า}}}} |{{#switch:{{{1|}}}|-=|+={{pagename}}mp|{{{1|}}}}} |{{#if:{{{c2|}}}|หรือ}} |{{{c2|}}} |{{#if:{{{c3|}}}|หรือ}} |{{{c3|}}} }}{{#ifeq:{{{1|}}}|-|&nbsp;{{tlb|izh|เปรียบเทียบไม่ได้}}}}<noinclude>{{documentation}}</noinclude> jt5h5qqorpjh6r97wx5bczio1ufiqlc หมวดหมู่:คำคุณศัพท์ภาษาอิงเกรีย 14 2333708 5729073 2026-07-20T01:56:49Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729073 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx roojata 0 2333709 5729074 2026-07-20T01:57:33Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729074 wikitext text/x-wiki == ภาษาอิงเกรีย == === รากศัพท์ === จาก{{suffix|izh|rooja|t1=mud|-ta}} === การออกเสียง === * {{izh-p}} === คำกริยา === {{head|izh|คำกริยา}} # {{lb|izh|transitive}} [[ทำ]][[ให้]][[สกปรก]], ทำให้[[เปรอะเปื้อน]] ==== การผันรูป ==== {{izh-conj/maata|j|j}} === อ้างอิง === * {{R:izh:Nirvi:1971|page=488}} 443on92c7hcrelu1g9blhye37uqwwlc 5729075 5729074 2026-07-20T01:57:46Z Octahedron80 267 /* รากศัพท์ */ 5729075 wikitext text/x-wiki == ภาษาอิงเกรีย == === รากศัพท์ === จาก{{suffix|izh|rooja|t1=โคลน|-ta}} === การออกเสียง === * {{izh-p}} === คำกริยา === {{head|izh|คำกริยา}} # {{lb|izh|transitive}} [[ทำ]][[ให้]][[สกปรก]], ทำให้[[เปรอะเปื้อน]] ==== การผันรูป ==== {{izh-conj/maata|j|j}} === อ้างอิง === * {{R:izh:Nirvi:1971|page=488}} qeyga8ogmzvma1rnu43ju4huxno06z7 rechtere 0 2333710 5729077 2026-07-20T01:59:20Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729077 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{audio|nl|Nl-rechtere.ogg}} === คำคุณศัพท์ === {{head|nl|รูปคุณศัพท์}} # {{inflection of|nl|rechter||infl|comp-of=recht}} == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechtere.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์ขั้นกว่า}} # {{de-adj form of|recht}} ejxl8et2o0vb0r2re7wimfhknnskj6p rechtesten 0 2333711 5729080 2026-07-20T02:01:54Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729080 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechtesten.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|คำคุณศัพท์ขั้นสุด}} # {{superlative of|de|recht}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|recht|sten}} p5svhtib5hl4053w70583a9e07bgakd rechtsten 0 2333712 5729083 2026-07-20T02:03:07Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729083 wikitext text/x-wiki == ภาษาเยอรมัน == === คำคุณศัพท์ === {{head|de|คำคุณศัพท์ขั้นสุด}} # {{superlative of|de|recht}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์ขั้นสุด}} # {{de-adj form of|recht}} 0l7gkxs4aqnz6rm3fc922crftsarg6v rechte 0 2333713 5729084 2026-07-20T02:03:25Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729084 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{audio|nl|Nl-rechte.ogg}} === คำคุณศัพท์ === {{head|nl|รูปคุณศัพท์}} # {{inflection of|nl|recht||infl}} === คำกริยา === {{head|nl|รูปกริยา}} # {{inflection of|nl|rechten||s|pres|sub}} === คำสลับอักษร === * {{l|nl|echter}} == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechte.ogg|a=<<Germany>> (<<Berlin>>)}} * {{rhymes|de|ɛçtə|s=2}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|recht}} 8h0uxfxu3oc2amgiocbf42lvqbdup25 rechtes 0 2333714 5729085 2026-07-20T02:03:29Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729085 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechtes.ogg|a=<<Germany>> (<<Berlin>>)}} * {{rhymes|de|ɛçtəs|s=2}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|recht}} 5hw5tp8mpkl547xms15do1gbplstpcq rechtem 0 2333715 5729086 2026-07-20T02:03:39Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729086 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechtem.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|recht}} 5lkpv0lkt6zp6s88ril9sz4uhtwffu0 rechterer 0 2333716 5729087 2026-07-20T02:03:58Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729087 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechterer.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์ขั้นกว่า}} # {{de-adj form of|recht}} ejl2zvpejgm7snxb6s6rl3mmieotxsy rechteres 0 2333717 5729088 2026-07-20T02:04:02Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729088 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechteres.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์ขั้นกว่า}} # {{de-adj form of|recht}} nu8lzroa2cxtzxn2ononlsaro2eclhf rechteren 0 2333718 5729089 2026-07-20T02:04:06Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729089 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechteren.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์ขั้นกว่า}} # {{de-adj form of|recht}} syqlo4ywle0tsvxx42k25v7eepe76ge rechterem 0 2333719 5729090 2026-07-20T02:04:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729090 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechterem.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์ขั้นกว่า}} # {{de-adj form of|recht}} g2fnrxtp4qxqsmefx5e5xbzbaspdr8h rechtester 0 2333720 5729091 2026-07-20T02:04:38Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729091 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechtester.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|recht|ster}} 4qj9ye8i2o987mq4sedddxymzgxt6w2 rechtster 0 2333721 5729092 2026-07-20T02:04:42Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729092 wikitext text/x-wiki == ภาษาเยอรมัน == === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์ขั้นสุด}} # {{de-adj form of|recht}} 0tzma1qljpnxcuv6vkgiwsmf1aerc77 rechteste 0 2333722 5729093 2026-07-20T02:04:45Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729093 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechteste.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|recht|ste}} fnn7ndncmlj3avdllt4is78ivc9d8o7 rechtste 0 2333723 5729094 2026-07-20T02:04:49Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729094 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{audio|nl|Nl-rechtste.ogg}} === คำคุณศัพท์ === {{head|nl|รูปคุณศัพท์}} # {{inflection of|nl|rechtst||infl|sup-of=recht}} == ภาษาเยอรมัน == === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์ขั้นสุด}} # {{de-adj form of|recht}} ku4nb4a7tplpa5v92wrv7l1ajswrwty rechtestes 0 2333724 5729095 2026-07-20T02:04:52Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729095 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechtestes.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|recht|stes}} 68oebu7uib0lfv4zr9z0w44l8w5h20a rechtstes 0 2333725 5729096 2026-07-20T02:04:56Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729096 wikitext text/x-wiki == ภาษาเยอรมัน == === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์ขั้นสุด}} # {{de-adj form of|recht}} 0tzma1qljpnxcuv6vkgiwsmf1aerc77 rechtestem 0 2333726 5729097 2026-07-20T02:04:59Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729097 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-rechtestem.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|recht|stem}} 50paixcmos4jdeafjwnai0enisxycbc rechtstem 0 2333727 5729098 2026-07-20T02:05:03Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729098 wikitext text/x-wiki == ภาษาเยอรมัน == === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์ขั้นสุด}} # {{de-adj form of|recht}} 0tzma1qljpnxcuv6vkgiwsmf1aerc77 rechte Hand 0 2333728 5729100 2026-07-20T02:06:52Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729100 wikitext text/x-wiki == ภาษาเยอรมัน == === คำนาม === {{head|de|คำนาม|g=f|head=[[recht|rechte]] [[Hand]]}} # [[มือ]][[ข้าง]][[ขวา]] # {{lb|de|figuratively}} [[มือขวา]] (ผู้ช่วยคนสำคัญ) {{C|de|บุคคล}} 5ej1oryavkj19619c55d5as1qhilkvv หมวดหมู่:คำคุณศัพท์ภาษาฮุนสริก 14 2333729 5729116 2026-07-20T02:20:21Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729116 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:คำคุณศัพท์ภาษาเยอรมันแบบเพนซิลเวเนีย 14 2333730 5729117 2026-07-20T02:20:23Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729117 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx regt 0 2333731 5729118 2026-07-20T02:21:06Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729118 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-regt.ogg|a=<<Germany>> (<<Berlin>>)}} === คำกริยา === {{head|de|รูปกริยา}} # {{verb form of|de|regen||3|s|pres|;|2|p|pres|;|p|imp}} h9nnuad7jj3soxwpmafj6ixq9t6arv3 leti 0 2333732 5729132 2026-07-20T02:37:01Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729132 wikitext text/x-wiki == ภาษาซรานันโตโง == === การออกเสียง === * {{IPA|srn|/ˈle.ti/}} === รากศัพท์ 1 === จาก{{der|srn|en|light}} ==== คำกริยา ==== {{head|srn|คำกริยา}} # ทำให้เกิด[[แสง]] ==== คำนาม ==== {{head|srn|คำนาม}} # {{topics|srn|Light}} [[แสง]] === รากศัพท์ 2 === {{rfe|srn}} ==== คำคุณศัพท์ ==== {{head|srn|คำคุณศัพท์}} # [[เท่า]] ==== คำนาม ==== {{head|srn|คำนาม}} # [[ความเท่า]] == ภาษาเซอร์โบ-โครเอเชีย == === รูปแบบอื่น === * {{alt|sh|ljȅti||Ijekavian}} === การออกเสียง === * {{IPA|sh|/lêti/}} * {{hyphenation|sh|le|ti}} === คำกริยาวิเศษณ์ === {{sh-adv|lȅti}} {{tlb|sh|Ekavian}} # [[ใน]][[ฤดูร้อน]], [[ระหว่าง]]ฤดูร้อน == ภาษาเบรอตง == === รากศัพท์ === จาก{{inh|br|cel-bry-pro|*llettɨɣ}} (เทียบ{{cog|cy|llety}}) === คำนาม === {{br-noun|m|p=letiez}} # [[โรงแรม]], โรงแรม[[เล็ก]] ==== คำพ้องความ ==== * {{l|br|ostel}} * {{l|br|ostaleri}} == ภาษาแฟโร == === รากศัพท์ === จาก{{inh|fo|non|leti}} === การออกเสียง === * {{IPA|fo|[ˈleːʰtɪ]}} === คำนาม === {{fo-noun|f|leti|-}} # [[ความขี้เกียจ]] ==== การผันรูป ==== {{fo-decl-noun-f33-s|leti}} == ภาษาละติน == === คำนาม === {{head|la|รูปนาม|head=lētī}} # {{inflection of|la|lētum||gen|s}} == ภาษาลัตเวีย == === คำนาม === {{head|lv|รูปนาม|g=f}} # {{inflection of|lv|lete||acc//ins|s}} == ภาษาเวเนโต == === คำนาม === {{head|vec|รูปนาม}} # {{plural of|vec|leto}} == ภาษาสวาซี == === รากศัพท์ === {{rfe|ss}} === คำสรรพนาม === {{head|ss|คำสรรพนาม|cat2=demonstrative pronouns}} # [[เหล่านี้]]; {{n-g|class 8 proximal demonstrative}} == ภาษาไอซ์แลนด์ == === รากศัพท์ === จาก{{inh|is|non|leti}} === การออกเสียง === * {{is-IPA}} === คำนาม === {{is-noun|@@}} # [[ความขี้เกียจ]] ==== การผันรูป ==== {{is-ndecl|f.sg}} === อ่านเพิ่ม === * {{R:is:Islex}} agahb0e6xl2fozk6f8yfm8j5o7685c2 5729133 5729132 2026-07-20T02:37:15Z Octahedron80 267 5729133 wikitext text/x-wiki == ภาษาซรานันโตโง == === การออกเสียง === * {{IPA|srn|/ˈle.ti/}} === รากศัพท์ 1 === จาก{{der|srn|en|light}} ==== คำกริยา ==== {{head|srn|คำกริยา}} # ทำให้เกิด[[แสง]] ==== คำนาม ==== {{head|srn|คำนาม}} # {{topics|srn|แสง}} [[แสง]] === รากศัพท์ 2 === {{rfe|srn}} ==== คำคุณศัพท์ ==== {{head|srn|คำคุณศัพท์}} # [[เท่า]] ==== คำนาม ==== {{head|srn|คำนาม}} # [[ความเท่า]] == ภาษาเซอร์โบ-โครเอเชีย == === รูปแบบอื่น === * {{alt|sh|ljȅti||Ijekavian}} === การออกเสียง === * {{IPA|sh|/lêti/}} * {{hyphenation|sh|le|ti}} === คำกริยาวิเศษณ์ === {{sh-adv|lȅti}} {{tlb|sh|Ekavian}} # [[ใน]][[ฤดูร้อน]], [[ระหว่าง]]ฤดูร้อน == ภาษาเบรอตง == === รากศัพท์ === จาก{{inh|br|cel-bry-pro|*llettɨɣ}} (เทียบ{{cog|cy|llety}}) === คำนาม === {{br-noun|m|p=letiez}} # [[โรงแรม]], โรงแรม[[เล็ก]] ==== คำพ้องความ ==== * {{l|br|ostel}} * {{l|br|ostaleri}} == ภาษาแฟโร == === รากศัพท์ === จาก{{inh|fo|non|leti}} === การออกเสียง === * {{IPA|fo|[ˈleːʰtɪ]}} === คำนาม === {{fo-noun|f|leti|-}} # [[ความขี้เกียจ]] ==== การผันรูป ==== {{fo-decl-noun-f33-s|leti}} == ภาษาละติน == === คำนาม === {{head|la|รูปนาม|head=lētī}} # {{inflection of|la|lētum||gen|s}} == ภาษาลัตเวีย == === คำนาม === {{head|lv|รูปนาม|g=f}} # {{inflection of|lv|lete||acc//ins|s}} == ภาษาเวเนโต == === คำนาม === {{head|vec|รูปนาม}} # {{plural of|vec|leto}} == ภาษาสวาซี == === รากศัพท์ === {{rfe|ss}} === คำสรรพนาม === {{head|ss|คำสรรพนาม|cat2=demonstrative pronouns}} # [[เหล่านี้]]; {{n-g|class 8 proximal demonstrative}} == ภาษาไอซ์แลนด์ == === รากศัพท์ === จาก{{inh|is|non|leti}} === การออกเสียง === * {{is-IPA}} === คำนาม === {{is-noun|@@}} # [[ความขี้เกียจ]] ==== การผันรูป ==== {{is-ndecl|f.sg}} === อ่านเพิ่ม === * {{R:is:Islex}} h92krmr8z7o586jttctkif413qa75vv linkesten 0 2333733 5729134 2026-07-20T02:39:04Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729134 wikitext text/x-wiki == ภาษาเยอรมัน == === คำคุณศัพท์ === {{head|de|คำคุณศัพท์ขั้นสุด}} # {{superlative of|de|link}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link|sten}} kf0vzep1zm60xv6cp76jk1a5vk0shky linksten 0 2333734 5729135 2026-07-20T02:39:08Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729135 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linksten.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|คำคุณศัพท์ขั้นสุด}} # {{superlative of|de|link}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link}} ntm60iau62373ykcmhdqbgdsqtvb3p2 linkem 0 2333735 5729136 2026-07-20T02:39:54Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729136 wikitext text/x-wiki == ภาษาเช็ก == === การออกเสียง === * {{cs-IPA}} === คำนาม === {{head|cs|รูปนาม|g=m}} # {{inflection of|cs|link||ins|s}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|linkar}} == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linkem.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|linker|em}} == ภาษาฮังการี == === รากศัพท์ === {{affix|hu|link|-em|pos2=possessive suffix|nocat=y}} === การออกเสียง === * {{hu-IPA}} * {{hyphenation|hu|lin|kem}} === คำนาม === {{head|hu|รูปนาม}} # {{inflection of|hu|link||1|s|spos|poss}} ==== การผันรูป ==== {{hu-infl-nom|linkeme|e|n=sg|esm_sg=1}} m4gwwnaun6shwgh5staru4sgk8i694j linke 0 2333736 5729137 2026-07-20T02:40:02Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729137 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{audio|nl|Nl-linke.ogg}} === คำคุณศัพท์ === {{head|nl|รูปคุณศัพท์}} # {{inflection of|nl|link||infl}} === คำสลับอักษร === * {{l|nl|klein}}, {{l|nl|kniel}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|linkar}} == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linke.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link}} === คำกริยา === {{head|de|รูปกริยา}} # {{verb form of|de|linken||1|s|pres|;|1//3|s|sub|I|;|s|imp}} 2uzntc49ey8v0lf5smpa2ajiugs7n8y linkes 0 2333737 5729138 2026-07-20T02:40:20Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729138 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|linkar}} == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linkes.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|linker|es}} crrfz1u99ywbrwvxain0wpbomwqi6zy linkerer 0 2333738 5729139 2026-07-20T02:40:35Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729139 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linkerer.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link}} pl8owxbk4u2a4qkgrsd4dfg3gx4tlc0 linkeren 0 2333739 5729140 2026-07-20T02:40:38Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729140 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linkeren.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link}} 4i5wyo5r3ulylwx3wgxp6ct97plrb3p linkerem 0 2333740 5729141 2026-07-20T02:40:42Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729141 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linkerem.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link}} 8tefld5l2i2h6309utu9r13om9hd20a linkere 0 2333741 5729142 2026-07-20T02:40:52Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729142 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{audio|nl|Nl-linkere.ogg}} === คำคุณศัพท์ === {{head|nl|รูปคุณศัพท์}} # {{inflection of|nl|linker||infl|comp-of=link}} === คำสลับอักษร === * {{l|nl|kleiner}}, {{l|nl|klieren}} == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linkere.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link}} dehkkku93e9a0laxcvd7cxquxokohas linkeres 0 2333742 5729143 2026-07-20T02:40:55Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729143 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linkeres.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link}} ikr5qxkuh8p0siw8m2qbdksjgar7d3k linkester 0 2333743 5729144 2026-07-20T02:41:36Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729144 wikitext text/x-wiki == ภาษาเยอรมัน == === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link|ster}} mk7o93f04bdvh58tgbj9skk70y5ceqx linkeste 0 2333744 5729145 2026-07-20T02:41:57Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729145 wikitext text/x-wiki == ภาษาเยอรมัน == === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link|ste}} gfkfn7uhew7r678m2x3gztwe9aiztxv linkste 0 2333745 5729146 2026-07-20T02:42:02Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729146 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{audio|nl|Nl-linkste.ogg}} === คำคุณศัพท์ === {{head|nl|รูปคุณศัพท์}} # {{inflection of|nl|linkst||infl|sup-of=link}} === คำสลับอักษร === * {{l|nl|kleinst}}, {{l|nl|slikten}} == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linkste.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link}} k7oeni8as3moksncrdi9lcjg9ufxcki linkestes 0 2333746 5729147 2026-07-20T02:42:05Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729147 wikitext text/x-wiki == ภาษาเยอรมัน == === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link|stes}} 2zjy29rn9am1ac3yu9mmoeak5d2nr7d linkstes 0 2333747 5729148 2026-07-20T02:42:08Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729148 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linkstes.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link}} gtoumdhvp9mnb31rnm4z3hxyqojeubd linkestem 0 2333748 5729149 2026-07-20T02:42:13Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729149 wikitext text/x-wiki == ภาษาเยอรมัน == === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link|stem}} jcotw1svyy8k0at0n4cwz4s1w7d8pbc linkstem 0 2333749 5729150 2026-07-20T02:42:16Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729150 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-linkstem.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|link}} gn63djl8qcotqtyt3gtzmv7j73zpf2p หมวดหมู่:คำสรรพนามภาษาสวาซี 14 2333750 5729151 2026-07-20T02:42:47Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729151 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:คำหลักภาษาสวาซี 14 2333751 5729152 2026-07-20T02:42:48Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729152 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:คำคุณศัพท์ภาษาซรานันโตโง 14 2333752 5729153 2026-07-20T02:42:51Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729153 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:คำนามภาษาซรานันโตโง 14 2333753 5729154 2026-07-20T02:42:52Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729154 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:คำกริยาภาษาซรานันโตโง 14 2333754 5729155 2026-07-20T02:42:54Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729155 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:คำหลักภาษาซรานันโตโง 14 2333755 5729156 2026-07-20T02:42:55Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729156 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:ศัพท์ภาษาซรานันโตโงที่รับมาจากภาษาอังกฤษ 14 2333756 5729157 2026-07-20T02:42:57Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729157 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:ศัพท์ภาษาซรานันโตโงที่มีการออกเสียงไอพีเอ 14 2333757 5729158 2026-07-20T02:42:59Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729158 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:ภาษาซรานันโตโง 14 2333758 5729159 2026-07-20T02:47:45Z Octahedron80 267 สร้างหน้าด้วย "{{auto cat|ซูรินาม}}" 5729159 wikitext text/x-wiki {{auto cat|ซูรินาม}} 8d4lugxrf0fqf4u7nq9j5c21spvmur5 หมวดหมู่:ภาษาสวาซี 14 2333759 5729162 2026-07-20T02:51:48Z Octahedron80 267 สร้างหน้าด้วย "{{auto cat|เอสวาตินี|เซาท์แอฟริกา|เลซูทู|โมซัมบิก}}" 5729162 wikitext text/x-wiki {{auto cat|เอสวาตินี|เซาท์แอฟริกา|เลซูทู|โมซัมบิก}} iljdmpi5lgs6zm6ocipbpku740cks68 5729164 5729162 2026-07-20T02:52:25Z Octahedron80 267 5729164 wikitext text/x-wiki {{auto cat|เอสวาตินี|เซาท์แอฟริกา|เลโซโท|โมซัมบิก}} 7j9yrik0p79my80c51ijh2cb25x7l0t atmet 0 2333761 5729180 2026-07-20T03:12:23Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729180 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmet.ogg|a=<<Germany>> (<<Berlin>>)}} === คำกริยา === {{head|de|รูปกริยา}} # {{verb form of|de|atmen||3|s|pres|;|2|p|pres|;|2|p|sub|I|;|p|imp}} 5uhh4nfu6946xyjcacvgyr8rr2feypu atmete 0 2333762 5729181 2026-07-20T03:12:26Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729181 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmete.ogg|a=<<Germany>> (<<Berlin>>)}} === คำกริยา === {{head|de|รูปกริยา}} # {{verb form of|de|atmen||1//3|s|pret|;|1//3|s|sub|II}} 54kuevgyai8r0ok3t2zi6zzaxelk8sl geatmet 0 2333763 5729182 2026-07-20T03:12:29Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729182 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-geatmet.ogg|a=<<Germany>> (<<Berlin>>)}} === รูปกริยาขยาย === {{head|de|รูปกริยาขยายอดีตกาล}} # {{past participle of|de|atmen}} lqngs9m4irk2ftc2ssjb14n856vre0x atmend 0 2333764 5729183 2026-07-20T03:13:07Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729183 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmend.ogg|a=<<Germany>> (<<Berlin>>)}} === รูปกริยาขยาย === {{head|de|รูปกริยาขยายปัจจุบันกาล}} # {{present participle of|de|atmen}} === คำคุณศัพท์ === {{de-adj}} # [[ที่]][[หายใจ]][[อยู่]] ==== การผันรูป ==== {{de-adecl}} 5m4ssnx1e8fvbk1chpwmheqzpqddhy8 atme 0 2333765 5729184 2026-07-20T03:13:11Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729184 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atme.ogg|a=<<Germany>> (<<Berlin>>)}} === คำกริยา === {{head|de|รูปกริยา}} # {{verb form of|de|atmen||1|s|pres|;|1//3|s|sub|I|;|s|imp}} h9f88d3msegu1rb0luya422gavokkpy atmest 0 2333766 5729185 2026-07-20T03:13:14Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729185 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmest.ogg|a=<<Germany>> (<<Berlin>>)}} === คำกริยา === {{head|de|รูปกริยา}} # {{verb form of|de|atmen||2|s|pres|;|2|s|sub|I}} dbovalfvdvs2d28z5mnwftbu7gcrkzc atmender 0 2333767 5729187 2026-07-20T03:13:23Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729187 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmender.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|atmend}} opuwczpsfb8ew7xttppoqx48p8n91fw atmenden 0 2333768 5729188 2026-07-20T03:13:40Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729188 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmenden.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|atmend}} 9rs57t4toaarpdoy6mtgv58kahpej1e atmendem 0 2333769 5729189 2026-07-20T03:13:43Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729189 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmendem.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|atmend}} cywlq5fbxzmljvyelomqrxiniaib7b8 atmende 0 2333770 5729190 2026-07-20T03:13:46Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729190 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmende.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|atmend}} 6pgtmfc6usl1qt2zr16drvtsoodvj4l atmendes 0 2333771 5729191 2026-07-20T03:13:50Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729191 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmendes.ogg|a=<<Germany>> (<<Berlin>>)}} === คำคุณศัพท์ === {{head|de|รูปคุณศัพท์}} # {{de-adj form of|atmend}} r5s8wtm9xs10k6wws11byohrn6a70s3 atmetest 0 2333772 5729193 2026-07-20T03:14:20Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729193 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmetest.ogg|a=<<Germany>> (<<Berlin>>)}} === คำกริยา === {{head|de|รูปกริยา}} # {{verb form of|de|atmen||2|s|pret|;|2|s|sub|II}} 2xlcesbutjtphsxwwe95yrggp2dvfdx atmeten 0 2333773 5729194 2026-07-20T03:14:24Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729194 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmeten.ogg|a=<<Germany>> (<<Berlin>>)}} === คำกริยา === {{head|de|รูปกริยา}} # {{verb form of|de|atmen||1//3|p|pret|;|1//3|p|sub|II}} 1ia5yal907cm13glap4ztt8l5iwwots atmetet 0 2333774 5729195 2026-07-20T03:14:28Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729195 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{audio|de|De-atmetet.ogg|a=<<Germany>> (<<Berlin>>)}} === คำกริยา === {{head|de|รูปกริยา}} # {{verb form of|de|atmen||2|p|pret|;|2|p|sub|II}} t237634arav9n2qyw6zviqeqv9ejuck ᨧᩢ᩠ᨠᨡᩩ 0 2333776 5729214 2026-07-20T03:49:44Z Alifshinobi 397 สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=จักขุ|s=จั๋กขุ๋}} === การออกเสียง === * {{IPA|nod|/t͡ɕak˨˦.xuʔ˨˦/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ᨲ᩠ᩅᩫ}} # [[ตั๊กแตน]][[สีเขียว]][[ชนิด]][[หนึ่ง]] === อ้างอิง === {{รายการอ้างอิ..." 5729214 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=จักขุ|s=จั๋กขุ๋}} === การออกเสียง === * {{IPA|nod|/t͡ɕak˨˦.xuʔ˨˦/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ᨲ᩠ᩅᩫ}} # [[ตั๊กแตน]][[สีเขียว]][[ชนิด]][[หนึ่ง]] === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. {{topics|nod|แมลง}} 329mzrpjxdyxysjq5d56veay0gvsksn abandonando 0 2333777 5729218 2026-07-20T04:00:08Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729218 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยาเป็นนาม}} # {{gl-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|nan|do}} === คำกริยา === {{head|pt|รูปกริยาเป็นนาม}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยาเป็นนาม}} # {{es-verb form of|abandonar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|abandonar||gerund}} 4fi9wrht6m8nwmfobycj07x3l6lze0c cocinando 0 2333778 5729219 2026-07-20T04:00:40Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729219 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยาเป็นนาม}} # {{es-verb form of|cocinar}} 3abb610uhifo0mvt3bjpueq124hwr50 enseño 0 2333779 5729220 2026-07-20T04:01:09Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729220 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === รากศัพท์ 1 === {{ety|es|:deverbal|enseñar|text=+|tree=1}} ==== คำนาม ==== {{es-noun|m}} # {{lb|es|rare}} [[teaching]] === รากศัพท์ 2 === ==== คำกริยา ==== {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} === อ่านเพิ่ม === * {{R:es:DRAE}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||1|s|pres|indc}} bvq2yogduvey5gzh3k9323preo1m3o5 5729226 5729220 2026-07-20T04:02:18Z Octahedron80 267 /* ภาษาสเปน */ 5729226 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === รากศัพท์ 1 === {{ety|es|:deverbal|enseñar|text=+|tree=1}} ==== คำนาม ==== {{es-noun|m}} # {{lb|es|rare}} [[การสอน]] === รากศัพท์ 2 === ==== คำกริยา ==== {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} === อ่านเพิ่ม === * {{R:es:DRAE}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||1|s|pres|indc}} elgro7f3ek9al46sli342s1j9t7ugq8 enseñado 0 2333780 5729222 2026-07-20T04:01:33Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729222 wikitext text/x-wiki == ภาษาสเปน == === รากศัพท์ === รูปกริยาขยายอดีตกาลของ {{m|es|enseñar}} === การออกเสียง === {{es-pr}} === คำคุณศัพท์ === {{es-adj}} # [[สุภาพ]] === รูปกริยาขยาย === {{es-past participle}} # {{past participle of|es|enseñar}} === อ่านเพิ่ม === * {{R:es:DRAE}} mt9fpb5hp3tikwetif1mk06usrr9mrj enseñada 0 2333781 5729223 2026-07-20T04:01:47Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729223 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำคุณศัพท์ === {{head|es|รูปคุณศัพท์|g=f}} # {{adj form of|es|enseñado||f|s}} === รูปกริยาขยาย === {{head|es|รูปผันรูปกริยาขยายอดีตกาล|g=f-s}} # {{feminine singular of|es|enseñado}} == ภาษาอัสตูเรียส == === รูปกริยาขยาย === {{head|ast|รูปผันรูปกริยาขยายอดีตกาล|g=f-s}} # {{feminine singular of|ast|enseñáu}} 6ddk3d8sv2pb4zxknplg2v4lpn80rj4 enseñados 0 2333782 5729224 2026-07-20T04:01:51Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729224 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำคุณศัพท์ === {{head|es|รูปคุณศัพท์|g=m-p}} # {{adj form of|es|enseñado||m|p}} === รูปกริยาขยาย === {{head|es|รูปผันรูปกริยาขยายอดีตกาล|g=m-p}} # {{masculine plural of|es|enseñado}} ntesguxanptd02xf5awhymfx8n1m04k enseñadas 0 2333783 5729225 2026-07-20T04:01:54Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729225 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำคุณศัพท์ === {{head|es|รูปคุณศัพท์|g=f-p}} # {{adj form of|es|enseñado||f|p}} === รูปกริยาขยาย === {{head|es|รูปผันรูปกริยาขยายอดีตกาล|g=f-p}} # {{feminine plural of|es|enseñado}} ckbcqao7j8hmau3w6iyb70ee2znp8zu enseñando 0 2333784 5729227 2026-07-20T04:02:34Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729227 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยาเป็นนาม}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{gerund of|ast|enseñar}} ex8rrtu9un6cxxxs1q7sk9n912mliax enseña 0 2333785 5729228 2026-07-20T04:04:55Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729228 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === รากศัพท์ 1 === จาก{{der|es|la|īnsignia}} โดยอาจเป็นการสืบทอด หรือการยืมกึ่งเรียนรู้ (ซึ่งอย่างหลังเป็นไปได้มากกว่า) ==== คำนาม ==== {{es-noun|f}} # [[ธงชาติ]], [[ธง]][[ประจำ]][[หน่วย]] #: {{syn|es|pabellón}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} === อ่านเพิ่ม === * {{R:es:DRAE}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||3|s|pres|indc}} # {{inflection of|ast|enseñar||2|s|impr}} 8rtepspa5fr6t8ygrk4yqywdsclc5fx ᨣᩫ᩠ᨯᩃ᩠ᨿ᩶ᩅ 0 2333786 5729229 2026-07-20T04:05:17Z Alifshinobi 397 สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=คดเลี้ยว|s=ก๊ดเล้ว}} === การออกเสียง === * {{IPA|nod|/kot˦˥.leːw˦˥/|a=เชียงใหม่}} === คำคุณศัพท์ === {{nod-adj}} # [[ไม่]][[ซื่อสัตย์]] === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกร..." 5729229 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=คดเลี้ยว|s=ก๊ดเล้ว}} === การออกเสียง === * {{IPA|nod|/kot˦˥.leːw˦˥/|a=เชียงใหม่}} === คำคุณศัพท์ === {{nod-adj}} # [[ไม่]][[ซื่อสัตย์]] === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. 2ufs7cn2j4mit2ncf6j7le9m7b77q9l enseñare 0 2333787 5729230 2026-07-20T04:05:40Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729230 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||1|s|plup|indc}} # {{inflection of|ast|enseñar||3|s|plup|indc}} # {{inflection of|ast|enseñar||1|s|impf|subj}} # {{inflection of|ast|enseñar||3|s|impf|subj}} mgv5nyt005v2w0vvdn4io3p6i4sgv5f enseñara 0 2333788 5729231 2026-07-20T04:05:44Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729231 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||1|s|plup|indc}} # {{inflection of|ast|enseñar||3|s|plup|indc}} # {{inflection of|ast|enseñar||1|s|impf|subj}} # {{inflection of|ast|enseñar||3|s|impf|subj}} mgv5nyt005v2w0vvdn4io3p6i4sgv5f enseñares 0 2333789 5729232 2026-07-20T04:06:01Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729232 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||2|s|plup|indc}} # {{inflection of|ast|enseñar||2|s|impf|subj}} kafsvb3oo9cz5j9g3mitrg82g9bghpp enseñaras 0 2333790 5729233 2026-07-20T04:06:05Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729233 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||2|s|plup|indc}} # {{inflection of|ast|enseñar||2|s|impf|subj}} kafsvb3oo9cz5j9g3mitrg82g9bghpp enseñáremos 0 2333791 5729234 2026-07-20T04:06:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729234 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||1|p|plup|indc}} # {{inflection of|ast|enseñar||1|p|impf|subj}} eba9tzm7rmsgwew98npv6iwmfyk6gkh enseñáramos 0 2333792 5729235 2026-07-20T04:06:14Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729235 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||1|p|plup|indc}} # {{inflection of|ast|enseñar||1|p|impf|subj}} eba9tzm7rmsgwew98npv6iwmfyk6gkh enseñareis 0 2333793 5729236 2026-07-20T04:06:20Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729236 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||2|p|plup|indc}} # {{inflection of|ast|enseñar||2|p|impf|subj}} cgxea5ubu67resueznndvvk0klpixse enseñarais 0 2333794 5729237 2026-07-20T04:06:25Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729237 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||2|p|plup|indc}} # {{inflection of|ast|enseñar||2|p|impf|subj}} cgxea5ubu67resueznndvvk0klpixse enseñaren 0 2333795 5729238 2026-07-20T04:06:30Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729238 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||3|p|plup|indc}} # {{inflection of|ast|enseñar||3|p|impf|subj}} 12v3cc2jn0kr7whgz7hbzbota6b3dxu enseñaran 0 2333796 5729239 2026-07-20T04:06:35Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729239 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||3|p|plup|indc}} # {{inflection of|ast|enseñar||3|p|impf|subj}} 12v3cc2jn0kr7whgz7hbzbota6b3dxu enseñe 0 2333797 5729240 2026-07-20T04:06:53Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729240 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||1|s|pres|subj}} # {{inflection of|ast|enseñar||3|s|pres|subj}} qibcewkh4ssimjxpjvtj9gheezeioqs enseñes 0 2333798 5729241 2026-07-20T04:06:57Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729241 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||2|s|pres|indc}} # {{inflection of|ast|enseñar||2|s|pres|subj}} 8fswp65slct8khn3uw08j61sskruhn6 enseñas 0 2333799 5729242 2026-07-20T04:07:01Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729242 wikitext text/x-wiki == ภาษาสเปน == === คำนาม === {{head|es|รูปนาม|g=f-p}} # {{noun form of|es|enseña||p}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||2|s|pres|subj}} qe95oyqwbx7dai7ltf8vamctqth017n enseñemos 0 2333800 5729243 2026-07-20T04:07:06Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729243 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||1|p|pret|indc}} # {{inflection of|ast|enseñar||1|p|pres|subj}} jf1rb0iubq3eal8m0teigohhdkd0xzc enseñen 0 2333801 5729244 2026-07-20T04:07:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729244 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||3|p|pres|indc}} # {{inflection of|ast|enseñar||3|p|pres|subj}} oem4k3yc4sffvk325ctyuba3jomcqkf enseñaría 0 2333802 5729246 2026-07-20T04:07:27Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729246 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||1|s|cond}} # {{inflection of|ast|enseñar||3|s|cond}} 8f5g6xkz3i79u2f7wcsxitk9mddwi1f enseñaba 0 2333803 5729247 2026-07-20T04:07:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729247 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|enseñar||1|s|impf|indc}} # {{inflection of|ast|enseñar||3|s|impf|indc}} aou3s5iaep2c33gybiwm5b7qmh51bd8 enseñáu 0 2333804 5729248 2026-07-20T04:07:47Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729248 wikitext text/x-wiki == ภาษาอัสตูเรียส == === รูปกริยาขยาย === {{ast-pp|enseñ}} # {{past participle of|ast|enseñar}} h5814f3z2lku8isxcvvmg8dc2gswwor enseñao 0 2333805 5729249 2026-07-20T04:07:52Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729249 wikitext text/x-wiki == ภาษาอัสตูเรียส == === รูปกริยาขยาย === {{head|ast|รูปผันรูปกริยาขยายอดีตกาล|g=n}} # {{neuter singular of|ast|enseñáu}} i4ix4xx8otkdrtfoisggikud2xyqz8u enseñaos 0 2333806 5729250 2026-07-20T04:07:57Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729250 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|enseñar}} == ภาษาอัสตูเรียส == === รูปกริยาขยาย === {{head|ast|รูปผันรูปกริยาขยายอดีตกาล|g=m-p}} # {{masculine plural of|ast|enseñáu}} 569fw495c14pvbm7ui7ref9mn0k64jf enseñaes 0 2333807 5729251 2026-07-20T04:08:00Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729251 wikitext text/x-wiki == ภาษาอัสตูเรียส == === รูปกริยาขยาย === {{head|ast|รูปผันรูปกริยาขยายอดีตกาล|g=f-p}} # {{feminine plural of|ast|enseñáu}} 01qwe6z1vt94lrd1ahnhrpuhgqli4bl cocines 0 2333809 5729257 2026-07-20T04:18:28Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729257 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|cocinar}} == ภาษาอัสตูเรียส == === คำนาม === {{head|ast|รูปนาม}} # {{plural of|ast|cocina}} shysxey1q8vox08m3ke707gw7aepdh3 cocinas 0 2333810 5729264 2026-07-20T04:28:23Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729264 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำนาม === {{head|es|รูปนาม|g=f-p}} # {{noun form of|es|cocina||p}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|cocinar}} 7qfh6rd43azzhbh3pn5v55fyc2d3kh8 abandonas 0 2333811 5729265 2026-07-20T05:09:30Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729265 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA|abandô*nas}} * {{hyph|pt|a|ban|do|nas}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-AdrianAbdulBaha-abandonas.wav<a:Colombia>>}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} == ภาษาอีโด == === การออกเสียง === {{io-IPA}} === คำกริยา === {{head|io|รูปกริยา}} # {{io-form of|abandon}} == ภาษาเอสเปรันโต == === การออกเสียง === {{eo-pr}} === คำกริยา === {{eo-head}} # {{eo-form of|abandon|as}} icxmysezvj3t04tjhdnqx4tni5ih2ev abandonás 0 2333812 5729266 2026-07-20T05:09:35Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729266 wikitext text/x-wiki == ภาษาฟาลา == === คำคุณศัพท์ === {{head|fax|รูปคุณศัพท์|g=f-p}} # {{adj form of|fax|abandonau||f|p}} === รูปกริยาขยาย === {{head|fax|รูปผันรูปกริยาขยายอดีตกาล|g=f-p}} # {{feminine plural of|fax|abandonau}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} 116iq9fvcitzmzl00wlesrknmc45l20 abandonamos 0 2333813 5729267 2026-07-20T05:10:28Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729267 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|na|mos}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Marreromarco-abandonamos.wav<a:Venezuela>>}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} c0vwvfqyn7xk4tat36lyz0lwhda1xrf abandonáis 0 2333814 5729268 2026-07-20T05:10:34Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729268 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Marreromarco-abandonáis.wav<a:Venezuela>>}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} == ภาษาอัสตูเรียส == === การออกเสียง === {{ast-pr}} === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|abandonar||2|p|pres|ind}} r1r6a4xn7jush59c0jbogzrz10lso8a abandonan 0 2333815 5729269 2026-07-20T05:10:39Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729269 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Marreromarco-abandonan.wav<a:Venezuela>>}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} 6rqbnsu2kz5b4kf4xhxg9zg59bqxjrd abandonaste 0 2333816 5729270 2026-07-20T05:10:56Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729270 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|nas|te}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} mb8o41wfa7v9xi5vtjpzia4jiv821nw abandonó 0 2333817 5729271 2026-07-20T05:11:00Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729271 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Marreromarco-abandonó.wav<a:Venezuela>>}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} tct652k9pz0svnndq0k2lsig6ndratx abandonarás 0 2333818 5729272 2026-07-20T05:11:07Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729272 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|na|rás}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} bp3binvqnjvpci4c0e2nu526qkrv0un abandonará 0 2333819 5729273 2026-07-20T05:11:13Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729273 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyphenation|pt|a|ban|do|na|rá}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} gx2nt7th8caxi7dpwqfkpc2k46u2k7z abandonaremos 0 2333820 5729274 2026-07-20T05:11:19Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729274 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|na|re|mos}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} 1cap9x08m7l05tgcu7wtsqcek8l786h abandonaríamos 0 2333821 5729275 2026-07-20T05:11:25Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729275 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|na|rí|a|mos}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} aoo2fl6tjbzvmg5di720nn9e7ui3v9c abandonaríais 0 2333822 5729276 2026-07-20T05:11:30Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729276 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|abandonar}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} c90xasoc69y6450dortkaqljxbdibk9 abandonemos 0 2333823 5729277 2026-07-20T05:12:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729277 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|ne|mos}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} 1bbnsz8k9a046dzljj59zakaivl7iu3 abandonara 0 2333824 5729278 2026-07-20T05:12:18Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729278 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{rhymes|pt|aɾɐ|s=5}} * {{hyphenation|pt|a|ban|do|na|ra}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} == ภาษาอินเทอร์ลิงกวา == === คำกริยา === {{head|ia|รูปกริยา}} # {{ia-form of|abandon|ara}} n9v7wdklxhw27eww3v9nqwsfonxgaxf abandonaras 0 2333825 5729279 2026-07-20T05:12:24Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729279 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|na|ras}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} kbwyfwl25bku2yyqzxb54t9ry2rbwta abandonáramos 0 2333826 5729280 2026-07-20T05:12:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729280 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|ná|ra|mos}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} 4i561ka1lof55o1jwmnt3qn448ulann abandonase 0 2333827 5729281 2026-07-20T05:12:38Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729281 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|abandonar}} == ภาษาโรมาเนีย == === การออกเสียง === * {{IPA|ro|/abandoˈnase/}} * {{rhyme|ro|ase|s=5}} * {{hyph|ro|a|ban|do|ná|se}} === คำกริยา === {{head|ro|รูปกริยา}} # {{verb form of|ro|abandona||3s|plup|ind}} == ภาษาสเปน == === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Marreromarco-abandonase.wav<a:Venezuela>>}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} aovphmv01qma0vl22s8hhciwcyticab abandonare 0 2333828 5729282 2026-07-20T05:13:18Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729282 wikitext text/x-wiki == ภาษาโรมาเนีย == === รูปแบบอื่น === * {{alt|ro|абандонаре||new cyrl}} === รากศัพท์ === จาก{{affix|ro|abandona|-re}} === การออกเสียง === * {{IPA|ro|/a.ban.doˈna.re/}} * {{rhyme|ro|are|s=5}} * {{hyph|ro|a|ban|do|ná|re}} === คำนาม === {{ro-noun|f|abandonări}} # [[การทอดทิ้ง]], [[ผล]][[ของ]]การทอดลิ้ง ==== การผันรูป ==== {{ro-noun-f-e|abandonar|abandonăr}} === อ่านเพิ่ม === * {{R:DEX}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} == ภาษาอิตาลี == === การออกเสียง === {{it-pr}} === คำกริยา === {{it-verb|a/ó}} # {{tlb|it|obsolete}} {{alternative form of|it|abbandonare}} ==== การผันรูป ==== {{it-conj|a/ó}} === อ่านเพิ่ม === * {{R:it:Olivetti}} ccetikb5q8jw8rt1taj2muaaij7h2al abandonareis 0 2333829 5729283 2026-07-20T05:13:25Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729283 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|na|reis}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abandonar}} 72gtbrun2h0kmmt94pv6ct1hc3nkxu4 abandonai 0 2333830 5729284 2026-07-20T05:13:53Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729284 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|abandonar}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|a|ban|do|nai}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abandonar}} == ภาษาโรมาเนีย == === การออกเสียง === * {{IPA|ro|/abandoˈnaj/}} * {{rhyme|ro|aj|s=4}} * {{hyph|ro|a|ban|do|nái}} === คำกริยา === {{head|ro|รูปกริยา}} # {{verb form of|ro|abandona||2s|impf|ind|;|1s|sim|perf|ind}} 8p9hs72l7ar57a2ljkdehjgybqlibp4 abandonato 0 2333831 5729285 2026-07-20T05:13:58Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729285 wikitext text/x-wiki == ภาษาอีโด == === การออกเสียง === {{io-IPA}} === คำกริยา === {{io-part|noun}} # {{io-form of|abandon}} == ภาษาเอสเปรันโต == === คำนาม === {{eo-head}} # {{eo-form of|abandon|ato}} nwyhbee8vzjqofzqvwglmrja0udl25j abandonez 0 2333832 5729287 2026-07-20T05:16:42Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729287 wikitext text/x-wiki == ภาษาโรมาเนีย == === การออกเสียง === * {{IPA|ro|/abandoˈnez/}} * {{rhyme|ro|ez|s=4}} * {{hyph|ro|a|ban|do|néz}} === คำกริยา === {{head|ro|รูปกริยา}} # {{verb form of|ro|abandona||1|s|pres|ind//sub}} == ภาษาอีโด == === การออกเสียง === {{io-IPA}} === คำกริยา === {{head|io|รูปกริยา}} # {{io-form of|abandon}} ps567w3xjh3mk4amiid39hpt59z1t9w abandonus 0 2333833 5729288 2026-07-20T05:16:50Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729288 wikitext text/x-wiki == ภาษาฟาลา == === คำนาม === {{head|fax|รูปนาม|g=m-p}} # {{plural of|fax|abandonu}} == ภาษาอีโด == === การออกเสียง === {{io-IPA}} === คำกริยา === {{head|io|รูปกริยา}} # {{io-form of|abandon}} == ภาษาเอสเปรันโต == === การออกเสียง === {{eo-pr}} === คำกริยา === {{eo-head}} # {{eo-form of|abandon|us}} deap2lggu5hecvreo9o5e6ddn9i8u14 แม่แบบ:gl-reinteg-conj 10 2333834 5729290 2026-07-20T05:19:51Z Octahedron80 267 นำเข้าจาก enwikt 5729290 wikitext text/x-wiki {{#invoke:gl-reinteg-verb|show}}<noinclude>{{documentation}}</noinclude> co9i4p9txnp7tdcf5qnqow63pd38ui4 agradeces 0 2333835 5729303 2026-07-20T05:37:17Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729303 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|agradecer}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|agradecer}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|agradecer}} n78ssjs62ouqjp2gye6vd0n3xahzu9r agradece 0 2333836 5729304 2026-07-20T05:37:23Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729304 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|agradecer}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|agradecer}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|agradecer}} n78ssjs62ouqjp2gye6vd0n3xahzu9r agradecemos 0 2333837 5729305 2026-07-20T05:37:30Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729305 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|agradecer}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA|agradecêmos}} * {{hyph|pt|a|gra|de|ce|mos}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|agradecer}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|agradecer}} 6vnmgrpjvtani53r2g2vqaby6i9w93c agradecíamos 0 2333838 5729307 2026-07-20T05:37:45Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729307 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|agradecer}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|agradecer}} 3in8fn1968it9ek0vsmmfvz3vzzsq5c agradecerás 0 2333839 5729308 2026-07-20T05:38:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729308 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|agradecer}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|agradecer}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|agradecer}} n78ssjs62ouqjp2gye6vd0n3xahzu9r agradecerá 0 2333840 5729309 2026-07-20T05:38:16Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729309 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|agradecer}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|agradecer}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|agradecer}} n78ssjs62ouqjp2gye6vd0n3xahzu9r agradeceremos 0 2333841 5729310 2026-07-20T05:38:22Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729310 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|agradecer}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|agradecer}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|agradecer}} n78ssjs62ouqjp2gye6vd0n3xahzu9r agradeceríamos 0 2333842 5729312 2026-07-20T05:38:27Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729312 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|agradecer}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|agradecer}} 3in8fn1968it9ek0vsmmfvz3vzzsq5c แม่แบบ:ast-conj-cer 10 2333843 5729318 2026-07-20T05:43:42Z Octahedron80 267 นำเข้าจาก enwikt 5729318 wikitext text/x-wiki {{ast-conj-table<!-- -->|infinitive={{{1}}}cer<!-- -->|gerundive=[[{{{1}}}ciendo]]<!-- -->|part_m=[[{{{1}}}cíu]]<!-- -->|part_f=[[{{{1}}}cida]]<!-- -->|part_n=[[{{{1}}}cío]]<!-- -->|part_m-p=[[{{{1}}}cíos]]<!-- -->|part_f-p=[[{{{1}}}cíes]]<!-- -->|pres_ind_1sg=[[{{{1}}}zo]]<!-- -->|pres_ind_2sg=[[{{{1}}}ces]]<!-- -->|pres_ind_3sg=[[{{{1}}}z]]<!-- -->|pres_ind_1pl=[[{{{1}}}cemos]]<!-- -->|pres_ind_2pl=[[{{{1}}}céis]]<!-- -->|pres_ind_3pl=[[{{{1}}}cen]]<!-- -->|impf_ind_1sg=[[{{{1}}}cía]]<!-- -->|impf_ind_2sg=[[{{{1}}}cíes]]<!-- -->|impf_ind_3sg=[[{{{1}}}cía]]<!-- -->|impf_ind_1pl=[[{{{1}}}cíemos]]<!-- -->|impf_ind_2pl=[[{{{1}}}cíeis]]<!-- -->|impf_ind_3pl=[[{{{1}}}cíen]]<!-- -->|pret_ind_1sg=[[{{{1}}}cí]]<!-- -->|pret_ind_2sg=[[{{{1}}}ciesti]]<!-- -->|pret_ind_3sg=[[{{{1}}}ció]]<!-- -->|pret_ind_1pl=[[{{{1}}}ciemos]]<!-- -->|pret_ind_2pl=[[{{{1}}}ciestis]]<!-- -->|pret_ind_3pl=[[{{{1}}}cieron]]<!-- -->|plup_ind_1sg=[[{{{1}}}ciere]]<!-- -->|plup_ind_2sg=[[{{{1}}}cieres]]<!-- -->|plup_ind_3sg=[[{{{1}}}ciere]]<!-- -->|plup_ind_1pl=[[{{{1}}}ciéremos]]<!-- -->|plup_ind_2pl=[[{{{1}}}ciereis]]<!-- -->|plup_ind_3pl=[[{{{1}}}cieren]]<!-- -->|futr_ind_1sg=[[{{{1}}}ceré]]<!-- -->|futr_ind_2sg=[[{{{1}}}cerás]]<!-- -->|futr_ind_3sg=[[{{{1}}}cerá]]<!-- -->|futr_ind_1pl=[[{{{1}}}ceremos]]<!-- -->|futr_ind_2pl=[[{{{1}}}ceréis]]<!-- -->|futr_ind_3pl=[[{{{1}}}cerán]]<!-- -->|cond_1sg=[[{{{1}}}cería]]<!-- -->|cond_2sg=[[{{{1}}}ceríes]]<!-- -->|cond_3sg=[[{{{1}}}cería]]<!-- -->|cond_1pl=[[{{{1}}}ceríemos]]/[[{{{1}}}ceríamos]]<!-- -->|cond_2pl=[[{{{1}}}ceríeis]]/[[{{{1}}}ceríais]]<!-- -->|cond_3pl=[[{{{1}}}ceríen]]<!-- -->|pres_sub_1sg=[[{{{1}}}za]]<!-- -->|pres_sub_2sg=[[{{{1}}}zas]]<!-- -->|pres_sub_3sg=[[{{{1}}}za]]<!-- -->|pres_sub_1pl=[[{{{1}}}zamos]]<!-- -->|pres_sub_2pl=[[{{{1}}}záis]]<!-- -->|pres_sub_3pl=[[{{{1}}}zan]]<!-- -->|impf_sub_1sg=[[{{{1}}}ciere]]<!-- -->|impf_sub_2sg=[[{{{1}}}cieres]]<!-- -->|impf_sub_3sg=[[{{{1}}}ciere]]<!-- -->|impf_sub_1pl=[[{{{1}}}ciéremos]]<!-- -->|impf_sub_2pl=[[{{{1}}}ciereis]]<!-- -->|impf_sub_3pl=[[{{{1}}}cieren]]<!-- -->|impr_2sg=[[{{{1}}}z]]<!-- -->|impr_2pl=[[{{{1}}}céi]]<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude> fq6d4qhahhjr4b42kzs7rdb6qcswdqv นางณี 0 2333845 5729326 2026-07-20T06:00:05Z Alifshinobi 397 สร้างหน้าด้วย "== ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/naːŋ˧˧.niː˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ตัว|tl=1}} # {{altform|nod|ᨶᩣ᩠ᨦᨱᩦ|t=[[ชะนี]]}}" 5729326 wikitext text/x-wiki == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/naːŋ˧˧.niː˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun|ตัว|tl=1}} # {{altform|nod|ᨶᩣ᩠ᨦᨱᩦ|t=[[ชะนี]]}} 77j0vanqtonst6pvfbg3n9jvplf7jv0 ᩋᩦ᩵ᩅᩩ᩠ᨿ 0 2333846 5729330 2026-07-20T06:07:05Z Alifshinobi 397 เปลี่ยนทางหน้าไปยัง [[ᩅᩩ᩠ᨿ]] 5729330 wikitext text/x-wiki #เปลี่ยนทาง [[ᩅᩩ᩠ᨿ]] h9m46rcfkx99ic5iw215ieugjg6zxme ນາງນີ 0 2333847 5729333 2026-07-20T06:13:24Z Alifshinobi 397 สร้างหน้าด้วย "== ภาษาลาว == === การออกเสียง === {{lo-pron|ນາງ-ນີ}} === คำนาม === {{lo-noun|ໂຕ}} # [[ชะนี]] #: {{syn|lo|ຊະນີ|ທະນີ}} === อ้างอิง === {{รายการอ้างอิง}} * ''SEAlang library Lao lexicography''. SEAlang Projects. http://sealang.net/lao/dictionary.htm" 5729333 wikitext text/x-wiki == ภาษาลาว == === การออกเสียง === {{lo-pron|ນາງ-ນີ}} === คำนาม === {{lo-noun|ໂຕ}} # [[ชะนี]] #: {{syn|lo|ຊະນີ|ທະນີ}} === อ้างอิง === {{รายการอ้างอิง}} * ''SEAlang library Lao lexicography''. SEAlang Projects. http://sealang.net/lao/dictionary.htm rdl6jcw6462zrs91ag1zmj6d21jjktl 5729334 5729333 2026-07-20T06:14:03Z Alifshinobi 397 /* ภาษาลาว */ 5729334 wikitext text/x-wiki == ภาษาลาว == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|nod|ᨶᩣ᩠ᨦᨱᩦ}}, {{cog|kkh|ᨶᩣ᩠ᨦᨱᩦ}}, {{cog|khb|ᦓᦱᧂᦓᦲ}} === การออกเสียง === {{lo-pron|ນາງ-ນີ}} === คำนาม === {{lo-noun|ໂຕ}} # [[ชะนี]] #: {{syn|lo|ຊະນີ|ທະນີ}} === อ้างอิง === {{รายการอ้างอิง}} * ''SEAlang library Lao lexicography''. SEAlang Projects. http://sealang.net/lao/dictionary.htm ssnp6bm6t9khobplkid1txks5vna4n3 agradecíades 0 2333848 5729336 2026-07-20T07:12:05Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729336 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} r4k8irk0ch74a6sf70o049dh4i7c6ar agradecíais 0 2333849 5729337 2026-07-20T07:12:11Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729337 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|agradecer}} f0460plwoehocnamoarcxmezn380b55 agradeceche 0 2333850 5729338 2026-07-20T07:12:15Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729338 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} r4k8irk0ch74a6sf70o049dh4i7c6ar agradecêrom 0 2333851 5729339 2026-07-20T07:12:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729339 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} r4k8irk0ch74a6sf70o049dh4i7c6ar agradecêrades 0 2333852 5729340 2026-07-20T07:12:36Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729340 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} r4k8irk0ch74a6sf70o049dh4i7c6ar agradecêrais 0 2333853 5729341 2026-07-20T07:12:41Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729341 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} r4k8irk0ch74a6sf70o049dh4i7c6ar agradecerám 0 2333854 5729342 2026-07-20T07:12:45Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729342 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} r4k8irk0ch74a6sf70o049dh4i7c6ar agradeceríades 0 2333855 5729343 2026-07-20T07:12:50Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729343 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} r4k8irk0ch74a6sf70o049dh4i7c6ar agradeceríais 0 2333856 5729344 2026-07-20T07:12:55Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729344 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|agradecer}} f0460plwoehocnamoarcxmezn380b55 agradeçades 0 2333857 5729345 2026-07-20T07:13:09Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729345 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} r4k8irk0ch74a6sf70o049dh4i7c6ar agradecêssedes 0 2333858 5729346 2026-07-20T07:13:14Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729346 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|agradecer}} r4k8irk0ch74a6sf70o049dh4i7c6ar agradeciendo 0 2333859 5729352 2026-07-20T07:28:32Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729352 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยาเป็นนาม}} # {{es-verb form of|agradecer}} qrxb8vuck0s5hgw7b93uqbkwlmve1bl dormires 0 2333860 5729354 2026-07-20T07:32:44Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729354 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} == ภาษาละติน == === คำกริยา === {{head|la|รูปกริยา|head=dormīrēs}} # {{inflection of|la|dormiō||2|s|impf|actv|subj}} 74afe5skbdnigt176lr47o13fgf1mzz dormirem 0 2333861 5729355 2026-07-20T07:32:56Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729355 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} == ภาษาละติน == === คำกริยา === {{head|la|รูปกริยา|head=dormīrem}} # {{inflection of|la|dormiō||1|s|impf|actv|subj}} jr77hlix66kaoeqr1ndqcglw0mbx1o8 dormindo 0 2333862 5729356 2026-07-20T07:33:01Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729356 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยาเป็นนาม}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} === คำกริยา === {{head|pt|รูปกริยาเป็นนาม}} # {{pt-verb form of|dormir<u-o>}} 4v5etcn2geb01cdzii7aha25k58c2tz dormidos 0 2333863 5729357 2026-07-20T07:33:18Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729357 wikitext text/x-wiki == ภาษาโปรตุเกส == === รูปกริยาขยาย === {{head|pt|รูปผันรูปกริยาขยายอดีตกาล|g=m-p}} # {{masculine plural of|pt|dormido}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำคุณศัพท์ === {{head|es|รูปคุณศัพท์|g=m-p}} # {{adj form of|es|dormido||m|p}} === รูปกริยาขยาย === {{head|es|รูปผันรูปกริยาขยายอดีตกาล|g=m-p}} # {{masculine plural of|es|dormido}} gc605qpj2fajosy752tirx4ts8svi3t dormimos 0 2333864 5729358 2026-07-20T07:33:23Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729358 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} an2yvplmn3z2bx9hlm2ingb1ltc0hrh durmo 0 2333865 5729359 2026-07-20T07:33:41Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729359 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|durmir<u-o>}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyphenation|pt|dur|mo}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} # {{pt-verb form of|durmir}} rng7fvhfjpbyjimcpq31msxq12pyyal dormia 0 2333866 5729360 2026-07-20T07:33:47Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729360 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA}} * {{rhymes|ca|ia|s=3}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} 3taj2gpf9mymbfoe1xk1ej9wsbqu3fn dormias 0 2333867 5729361 2026-07-20T07:34:01Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729361 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} == ภาษาละติน == === คำกริยา === {{head|la|รูปกริยา|head=dormiās}} # {{inflection of|la|dormiō||2|s|pres|actv|subj}} nxz06dx702wpxcmhzwuqxl8whrz41yi dormíamos 0 2333868 5729363 2026-07-20T07:34:07Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729363 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} an2yvplmn3z2bx9hlm2ingb1ltc0hrh dormiam 0 2333869 5729364 2026-07-20T07:34:12Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729364 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} == ภาษาละติน == === คำกริยา === {{head|la|รูปกริยา}} # {{inflection of|la|dormiō||1|s|futr|actv|indc|;|1|s|pres|actv|subj}} oza5gcrmkylmz21upslow0aux9qzxi5 dormiste 0 2333870 5729365 2026-07-20T07:34:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729365 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dormire||2|p|phis|;|2|p|impf|sub}} === คำสลับอักษร === * {{anagrams|it|a=deimorst|mordesti}} o6trl98omtaejfc7nk3beckxtwa2bu2 dormiu 0 2333871 5729366 2026-07-20T07:34:39Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729366 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{rhymes|pt|iw|s=2}} * {{hyph|pt|dor|miu}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} kkr3l0vmj7m0n6cwzwdcow4mb08xxnc dormirei 0 2333872 5729367 2026-07-20T07:34:58Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729367 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dormire||1|s|cond}} === คำสลับอักษร === * {{anagrams|it|a=deiimorr|dirimerò|ridiremo}} nfi3dr6l40iirad2kpc972ytxn4blqw dormiremos 0 2333873 5729368 2026-07-20T07:35:04Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729368 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} an2yvplmn3z2bx9hlm2ingb1ltc0hrh dormiria 0 2333874 5729369 2026-07-20T07:35:11Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729369 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} cumemmby6433yi82ah4708j2crdoga3 dormiríamos 0 2333875 5729370 2026-07-20T07:35:16Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729370 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} an2yvplmn3z2bx9hlm2ingb1ltc0hrh durmas 0 2333876 5729371 2026-07-20T07:35:44Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729371 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|durmir<u-o>}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} # {{pt-verb form of|durmir}} jrxxui0vxghwvfjsvda1kqph2gasmnd durmamos 0 2333877 5729372 2026-07-20T07:35:49Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729372 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|durmir<u-o>}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} # {{pt-verb form of|durmir}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} ozqcm27s9u0q23f8sy77jwkdqcgzcex durmais 0 2333878 5729373 2026-07-20T07:35:54Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729373 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} # {{pt-verb form of|durmir}} dll2hc04hl5t1bxsp97fo2ht8dcc20p durmam 0 2333879 5729374 2026-07-20T07:35:59Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729374 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dormir<u-o>}} # {{pt-verb form of|durmir}} dll2hc04hl5t1bxsp97fo2ht8dcc20p durmir 0 2333880 5729376 2026-07-20T07:37:27Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729376 wikitext text/x-wiki == ภาษากาลิเซีย == === รูปแบบอื่น === * {{alt|gl|dormir||reintegrationist}} === รากศัพท์ === {{etymon|gl|id=sleep|:inh|roa-opt:dormir|text=++|tree=1}} === การออกเสียง === {{gl-pr}} * {{hyph|gl|dur|mir}} === คำกริยา === {{gl-verb|<u-o>}} # {{lb|gl|intransitive}} [[นอนหลับ]] ==== การผันรูป ==== {{gl-conj|<u-o>}} ==== ลูกคำ ==== {{col|gl|adormecer|adormentar|adormiñar}} === อ้างอิง === * {{R:gl:DDLG}} * {{R:gl:TILG}} * {{R:TLPGP}} * {{R:gl:DRAG}} * {{R:gl:DIGALEGO}} == ภาษากาลิเซีย-โปรตุเกสเก่า == === คำกริยา === {{head|roa-opt|คำกริยา}} # {{alternative form of|roa-opt|dormir}} === อ้างอิง === * {{R:roa-opt:DDGM}} * {{R:roa-opt:CX|durm}} * {{R:roa-opt:CX|dorm}} == ภาษาโปรตุเกส == === รากศัพท์ 1 === ==== คำกริยา ==== {{pt-verb}} # {{eye dialect of|pt|dormir}} ===== การผันรูป ===== {{pt-conj}} === รากศัพท์ 2 === ==== คำกริยา ==== {{pt-verb}} # {{obsolete form of|pt|dormir}} ===== การผันรูป ===== {{pt-conj}} == ภาษาโรมานช์ == === รูปแบบอื่น === * {{alt|rm|durmeir||Surmiran}} === รากศัพท์ === {{etymon|rm|id=sleep|:inh|la:dormiō<alt:dormīre>|text=++|tree=1}} === คำกริยา === {{rm-verb}} # {{lb|rm|Rumantsch Grischun|Sursilvan|Sutsilvan|Puter|Vallader}} [[นอนหลับ]] == ภาษาลาดิโน == === รูปแบบอื่น === * {{alt|lad|dormir}} === รากศัพท์ === {{etymon|lad|id=sleep|:inh|osp:dormir|text=++|tree=1}} === คำกริยา === {{lad-verb|heb=דורמיר}}<ref name="Folkmasa">{{R:lad:Folkmasa}}</ref> # {{lb|lad|intransitive}} [[นอนหลับ]] #* {{quote-book|lad|author=Reuben Eliyahu Israel|title=Traducsion libera de las poezias ebraicas de Roş Aşana i Kipur|url=https://digitalcollections.lib.washington.edu/digital/collection/p16786coll3/id/4098|location=Craiova|publisher=Institutul Grafic, I. Samitca şi D. Baraş, Socieatate in Comandita|year=1910|page=5|pageurl=https://digitalcollections.lib.washington.edu/digital/collection/p16786coll3/id/4053|OCLC=1091680857|text=Ombre mortal, porke '''doermes'''? Es tiempo ke roghes i te coniores<br/>Az orasion, emplora el pardon del sinior de los siniores<br/>Antes ke tus diias se terminen, corijate de tus ovras piores<br/>El dio del sielo te aiudara, si onde el con prisa cores<br/>Fuie de revelios i malisias, pensa ke ai castigo i dolores<br/>Dio! cudia de tu poevlo Israel tus fideles i tus servidores|t=Mortal, why do you '''sleep'''? ’Tis time that you beg and complain. Pray, beg for the King of Kings’ forgiveness; before your days end, mend your worst deeds. The god of the sky shall help you, if you run hastily whither he {{q-g|is}}. Flee from felonies and wickednesses; worry that there is punishment and pains. God! Take care of your people: Israel, your faithful and your servants.}} # {{lb|lad|reflexive}} [[ผล็อย]][[หลับ]] === อ้างอิง === <references/> == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|คำกริยา}} # {{alternative form of|ast|dormir}} === อ่านเพิ่ม === * {{R:ast:DGLA|dormir}} r8q8f8y6stybccxc02el3pr9pgcyons durmi 0 2333881 5729377 2026-07-20T07:37:59Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729377 wikitext text/x-wiki == ภาษาครีโอลกาบูเวร์ดี == === รากศัพท์ === {{etymon|kea|id=sleep|:inh|pt:dormir|text=++|tree=1}} === คำกริยา === {{head|kea|คำกริยา}} # [[นอนหลับ]] == ภาษาครีโอลกินี-บิสเซา == === รากศัพท์ === {{etymon|pov|id=sleep|:inh|pt:dormir|text=++|tree=1}} === คำกริยา === {{head|pov|คำกริยา}} # [[นอนหลับ]] == Istro-Romanian == === รากศัพท์ === {{etymon|ruo|id=sleep|:inh|la:dormiō<alt:dormīre>|text=++|tree=1}} === คำกริยา === {{head|ruo|คำกริยา}} # [[นอนหลับ]] == ภาษาโปรตุเกส == === รากศัพท์ 1 === ==== คำกริยา ==== {{head|pt|รูปสะกดผิด}} # {{misspelling of|pt|dormi}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|durmir}} == ภาษาโรมาเนีย == === คำกริยา === {{ro-verb|duarme|durmit}} # {{alternative form of|ro|dormi}} ==== การผันรูป ==== {{ro-conj-i}} tjad0qf1ohe8e08pzvdvsbuyto1bnr6 5729378 5729377 2026-07-20T07:39:40Z Octahedron80 267 /* Istro-Romanian */ 5729378 wikitext text/x-wiki == ภาษาครีโอลกาบูเวร์ดี == === รากศัพท์ === {{etymon|kea|id=sleep|:inh|pt:dormir|text=++|tree=1}} === คำกริยา === {{head|kea|คำกริยา}} # [[นอนหลับ]] == ภาษาครีโอลกินี-บิสเซา == === รากศัพท์ === {{etymon|pov|id=sleep|:inh|pt:dormir|text=++|tree=1}} === คำกริยา === {{head|pov|คำกริยา}} # [[นอนหลับ]] == ภาษาอิสโตร-โรมาเนีย == === รากศัพท์ === {{etymon|ruo|id=sleep|:inh|la:dormiō<alt:dormīre>|text=++|tree=1}} === คำกริยา === {{head|ruo|คำกริยา}} # [[นอนหลับ]] == ภาษาโปรตุเกส == === รากศัพท์ 1 === ==== คำกริยา ==== {{head|pt|รูปสะกดผิด}} # {{misspelling of|pt|dormi}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|durmir}} == ภาษาโรมาเนีย == === คำกริยา === {{ro-verb|duarme|durmit}} # {{alternative form of|ro|dormi}} ==== การผันรูป ==== {{ro-conj-i}} niarv8qia0pwbbauhw4yhlp5oxtrsrx 5729379 5729378 2026-07-20T07:39:50Z Octahedron80 267 เรียงลำดับหัวเรื่องภาษา 5729379 wikitext text/x-wiki == ภาษาครีโอลกาบูเวร์ดี == === รากศัพท์ === {{etymon|kea|id=sleep|:inh|pt:dormir|text=++|tree=1}} === คำกริยา === {{head|kea|คำกริยา}} # [[นอนหลับ]] == ภาษาครีโอลกินี-บิสเซา == === รากศัพท์ === {{etymon|pov|id=sleep|:inh|pt:dormir|text=++|tree=1}} === คำกริยา === {{head|pov|คำกริยา}} # [[นอนหลับ]] == ภาษาโปรตุเกส == === รากศัพท์ 1 === ==== คำกริยา ==== {{head|pt|รูปสะกดผิด}} # {{misspelling of|pt|dormi}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|durmir}} == ภาษาโรมาเนีย == === คำกริยา === {{ro-verb|duarme|durmit}} # {{alternative form of|ro|dormi}} ==== การผันรูป ==== {{ro-conj-i}} == ภาษาอิสโตร-โรมาเนีย == === รากศัพท์ === {{etymon|ruo|id=sleep|:inh|la:dormiō<alt:dormīre>|text=++|tree=1}} === คำกริยา === {{head|ruo|คำกริยา}} # [[นอนหลับ]] by9qfgcpj6yc0nxlr0yxmhuimkzcbae durmido 0 2333882 5729380 2026-07-20T07:40:26Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729380 wikitext text/x-wiki == ภาษากาลิเซีย == === รูปกริยาขยาย === {{gl-pp}} # {{past participle of|gl|durmir}} == ภาษาครีโอลมาเก๊า == === รากศัพท์ === จาก{{der|mzs|pt|dormido}}; {{surf|mzs|durmí|-ido}} === รูปกริยาขยาย === {{head|mzs|รูปกริยาขยายอดีตกาล}} # {{past participle of|mzs|durmí}}: [[หลับ]][[อยู่]] #: {{ux|mzs|Já ficâ '''durmido'''|t=He fell '''asleep'''|lit=He became '''asleep'''}} === อ้างอิง === * https://www.macaneselibrary.org/pub/english/uipatua.htm == ภาษาโปรตุเกส == === รูปกริยาขยาย === {{pt-pp}} # {{past participle of|pt|durmir}} 0w3456c5cwqcjwbvjv04bdz1qt0xa3e dormí 0 2333883 5729387 2026-07-20T07:51:12Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729387 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} nbpbzao3llx7mbu5h3auryj4zms8ybw dormiré 0 2333884 5729388 2026-07-20T07:51:26Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729388 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} qcx16pgkjt2jq0jkuh2sfxz504lw7s7 dormies 0 2333885 5729389 2026-07-20T07:51:33Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729389 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} * {{audio|fr|LL-Q150 (fra)-DenisdeShawi-dormies.wav|a=<<Canada>> (<<Shawinigan>>)}} === รูปกริยาขยาย === {{head|fr|รูปผันรูปกริยาขยายอดีตกาล|g=f-p}} # {{feminine plural of|fr|dormi}} == ภาษาละติน == === คำกริยา === {{head|la|รูปกริยา|head=dormiēs}} # {{inflection of|la|dormiō||2|s|futr|actv|indc}} == ภาษาอังกฤษ == === คำนาม === {{head|en|รูปนาม}} # {{plural of|en|dormy}} # {{plural of|en|dormie}} oqrtjl6y64cplx6nk3a3ik5e018jrlm escollí 0 2333886 5729392 2026-07-20T07:54:24Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729392 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|escollir}} # {{ca-verb form of|escollar}} 5v5njkc8dswwzgk71livoqs612p6htg escollit 0 2333887 5729393 2026-07-20T07:54:27Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729393 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA}} * {{rhymes|ca|it|s=3}} === รูปกริยาขยาย === {{ca-pp}} # {{past participle of|ca|escollir}} 87w6uf4nr8l9rrutjhglik93of15231 escollida 0 2333888 5729394 2026-07-20T07:54:38Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729394 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA}} === รูปกริยาขยาย === {{head|ca|รูปผันรูปกริยาขยายอดีตกาล|g=f-s}} # {{feminine singular of|ca|escollit}} == ภาษากาลิเซีย == === รูปกริยาขยาย === {{head|gl|รูปผันรูปกริยาขยายอดีตกาล|g=f-s}} # {{feminine singular of|gl|escollido}} 5v731oq8f74ppcsfehy28bphzn1kv36 escollits 0 2333889 5729395 2026-07-20T07:54:42Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729395 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA}} === รูปกริยาขยาย === {{head|ca|รูปผันรูปกริยาขยายอดีตกาล|g=m-p}} # {{masculine plural of|ca|escollit}} 1owta0nnvhb7cdxdh6wyjx5xlparrkb escollides 0 2333890 5729396 2026-07-20T07:54:45Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729396 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA}} === รูปกริยาขยาย === {{head|ca|รูปผันรูปกริยาขยายอดีตกาล|g=f-p}} # {{feminine plural of|ca|escollit}} 3dbjsvwq41dwmym8ivyd8bjfptqduw4 esculls 0 2333891 5729397 2026-07-20T07:55:00Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729397 wikitext text/x-wiki == ภาษากาตาลา == === คำนาม === {{head|ca|รูปนาม}} # {{plural of|ca|escull}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|escollir}} lqusq2n1rlzx9u8ao7vb86oi6o71y3z escollint 0 2333892 5729398 2026-07-20T07:55:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729398 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยาเป็นนาม}} # {{gerund of|ca|escollir}} lppw888qxo4w0appcjrxy9q8m8kp17r dormy 0 2333893 5729399 2026-07-20T07:57:28Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729399 wikitext text/x-wiki == ภาษาอังกฤษ == === คำคุณศัพท์ === {{en-adj|-}} # {{lb|en|golf}} {{alternative form of|en|dormie}} #* ''Encyclopaedia of Sport'' #*: A player who is '''dormy''' cannot be beaten, and at the worst must halve the match. #* '''1937''', [[w:P._G._Wodehouse|P. G. Wodehouse]], [[w:Lord_Emsworth_and_Others|'Lord Emsworth and Others']], Overlook, Woodstock: 2002, p 110. #*: I could see that Hemingway, confident that he would be '''dormy''' one, was a good deal shaken at coming to the eighteenth all square. === คำนาม === {{en-noun}} # {{lb|en|slang}} [[หอพัก]] (ของสถานศึกษา) #* {{quote-text|en|year=1952|author=Enid Blyton|title=Here's the Naughtiest Girl |passage=She called to Julian as he went to the boys' dormitory. 'Julian! See if Patrick is in your '''dormy'''.'}} oqx1r5a3vzzogk3k5ba19nv32us9fjo dormo 0 2333894 5729400 2026-07-20T07:58:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729400 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA|ò}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|dormir||1|s|ind}} == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dormire||1|s|pres|indc}} === คำสลับอักษร === * {{anagrams|it|a=dmoor|-dromo|dromo|mordo}} == ภาษาเอสเปรันโต == {{wp|lang=eo}} === รากศัพท์ === {{ety|eo|:af|dormi<t:to sleep>|-o|text=+|tree=1}} === การออกเสียง === {{eo-pr|a=LL-Q143 (epo)-Lepticed7-dormo.wav}} === คำนาม === {{eo-head|-}} # [[การนอนหลับ]] 3h5a5d0qc2u1uy0mhe5753k60x84zy0 5729401 5729400 2026-07-20T07:58:53Z Octahedron80 267 /* รากศัพท์ */ 5729401 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA|ò}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษาอัสตูเรียส == === คำกริยา === {{head|ast|รูปกริยา}} # {{inflection of|ast|dormir||1|s|ind}} == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dormire||1|s|pres|indc}} === คำสลับอักษร === * {{anagrams|it|a=dmoor|-dromo|dromo|mordo}} == ภาษาเอสเปรันโต == {{wp|lang=eo}} === รากศัพท์ === {{ety|eo|:af|dormi<t:นอนหลับ>|-o|text=+|tree=1}} === การออกเสียง === {{eo-pr|a=LL-Q143 (epo)-Lepticed7-dormo.wav}} === คำนาม === {{eo-head|-}} # [[การนอนหลับ]] c8btvuodm8a1p71gjfnlnqklvx8a0u7 dormon 0 2333895 5729402 2026-07-20T07:58:56Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729402 wikitext text/x-wiki == ภาษาเอสเปรันโต == === คำนาม === {{eo-head}} # {{eo-form of|dorm|on|unc=yes}} nxuem6prf6yaggftwfegly01evwckhk dorms 0 2333896 5729403 2026-07-20T07:59:01Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729403 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษาอังกฤษ == === คำนาม === {{head|en|รูปนาม}} # {{plural of|en|dorm}} qzxmrrcoznim4effl9p7rgvr8jfqgkw dormim 0 2333897 5729404 2026-07-20T07:59:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729404 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาโรมาเนีย == === การออกเสียง === * {{IPA|ro|[dorˈmim]}} === คำกริยา === {{head|ro|รูปกริยา}} # {{verb form of|ro|dormi||1|p|pres|ind//sub}} 9cy958z1kraelhvb8ul47wt8aahm80l dormen 0 2333898 5729405 2026-07-20T07:59:42Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729405 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA|ò}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-verb form of|durmir<u-o>}} 0152cbrmt5xxd97tthwrpd1rh0yu0am dormin 0 2333899 5729406 2026-07-20T08:00:05Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729406 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA|ò}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษาอังกฤษ == === คำนาม === {{en-noun|-}} # {{syn of|en|abscisic acid}} === คำสลับอักษร === * {{anagrams|en|a=dimnor|Nimrod|D minor|nimrod}} 5z3dk36v89cozm6vmn2idrkkczb14d7 dormís 0 2333900 5729407 2026-07-20T08:00:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729407 wikitext text/x-wiki == ภาษากาตาลา == === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} l0zhrgqnms3k31hr64q1mzja2pvais7 dormissis 0 2333901 5729408 2026-07-20T08:00:16Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729408 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA}} * {{rhymes|ca|isis|s=3}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|dormir}} obiyq80t13o5ifm5zt2d67c2eyzv5lm vocês 0 2333902 5729421 2026-07-20T09:22:12Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729421 wikitext text/x-wiki == ภาษากาลิเซีย == === การออกเสียง === {{rfp|gl}} {{rfap|gl}} * {{hyph|gl|vo|cês}} === คำสรรพนาม === {{gl-pron|g=mfbysense}} # {{plural of|gl|você}} == ภาษาโปรตุเกส == === รูปแบบอื่น === * {{alt|pt|vosmecês||archaic}} * {{alt|pt|vossemecês||obsolete}} * {{alt|pt|cês||Brazil|nonstandard}} * {{alt|pt|ceis||Brazil|eye dialect}} * {{alt|pt|vcs||Internet slang}} * {{alt|pt|v6||Brazil|Internet slang}} === การออกเสียง === {{pt-IPA|vòcês}} * {{IPA|pt|/vɔˈsɐʃ/|a=São Miguel,Azores}} * {{audio|pt|LL-Q5146 (por)-Santamarcanda-vocês.wav|a=<<Portugal>> (<<Porto>>)}} * {{hyph|pt|vo|cês}} === คำสรรพนาม === {{pt-pron|mfbysense-p}} # [[พวกคุณ]] {{q|คำบุรุษสรรพนามบุรุษที่สองพหูพจน์}} #: {{syn|pt|vós<q:โบราณหรือเฉพาะถิ่น>|os senhores<q:ทางการ>}} ==== หมายเหตุการใช้ ==== * เดิมทีคำสรรพนามนี้เป็นเพียงรูปพหูพจน์ของ {{m|pt|você}} และใช้ในการพูดแบบกึ่งทางการ แต่ปัจจุบันคำสรรพนามนี้ได้เข้ามาแทนที่ {{m|pt|vós}} เกือบทุกประเทศที่ใช้ภาษาโปรตุเกส (ดูที่ {{m|pt|vós}}) และใช้เป็นทั้งรูปพหูพจน์ของ {{m|pt|tu}} (แบบไม่เป็นทางการ) และ {{m|pt|você}} (แบบกึ่งทางการ) ==== คำเกี่ยวข้อง ==== * {{l|pt|tu}} * {{l|pt|você}} * {{l|pt|vós}} ==== ดูเพิ่ม ==== {{pt-personal pronouns}} eqdug74qhgczks8puk2p1tj39klcn86 แม่แบบ:gl-pron 10 2333903 5729422 2026-07-20T09:23:16Z Octahedron80 267 นำเข้าจาก enwikt 5729422 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{head|gl|คำสรรพนาม|head={{{head|}}}|g={{{g|}}}<!-- -->|{{#if:{{{obl|}}}|หลังคำบุพบท}}<!-- -->|{{{obl|}}}<!-- -->|{{#if:{{{acc|}}}|กรรมการก}}<!-- -->|{{{acc|}}}<!-- -->|{{#if:{{{dat|}}}|สัมปทานการก}}<!-- -->|{{{dat|}}}<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude> 26ctlgarrz4g1xefej61ohjk9hrxxvq หมวดหมู่:คำสรรพนามภาษากาลิเซีย 14 2333904 5729423 2026-07-20T09:23:54Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5729423 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx vcs 0 2333905 5729425 2026-07-20T09:25:54Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729425 wikitext text/x-wiki == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA|vocês}} === คำสรรพนาม === {{pt-pron|mfbysense-p}} # {{lb|pt|Internet slang|text messaging}} {{abbr of|pt|vocês}}; {{plural of|pt|vc}} #: {{syn|pt|vçs|v6}} q21n959eh1uug5c2dqwx7pqldh7hpcg vçs 0 2333906 5729426 2026-07-20T09:26:09Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729426 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำสรรพนาม === {{pt-pron|mfbysense-p|sg=vç}} # {{lb|pt|Internet slang|text messaging}} {{abbreviation of|pt|vocês}}; {{plural of|pt|vç}} 0unserfu3c094ja0wd6bi4zhlufd3es v6 0 2333907 5729428 2026-07-20T09:26:14Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729428 wikitext text/x-wiki == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA|br=vocês}} === คำสรรพนาม === {{pt-pron|mfbysense-p}} # {{lb|pt|dated|Brazil|Internet slang|text messaging}} {{abbr of|pt|vocês}}; {{plural of|pt|vc}}, {{plural of|pt|vç}} #: {{syn|pt|vcs|vçs}} {{cln|pt|number homophones}} 1ixiwkkky6icx5thtmpxw8sxuqplv7z 0 2333908 5729429 2026-07-20T09:26:24Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729429 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำสรรพนาม === {{pt-pron|mfbysense|pl=vçs,v6}} # {{lb|pt|internet slang|text messaging}} {{abbreviation of|pt|você||you}} 38ci7ijs92dtc2d6vmdt4jhn8niysfq 5729430 5729429 2026-07-20T09:26:37Z Octahedron80 267 /* คำสรรพนาม */ 5729430 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำสรรพนาม === {{pt-pron|mfbysense|pl=vçs,v6}} # {{lb|pt|internet slang|text messaging}} {{abbreviation of|pt|você||คุณ}} 5hvdxcopufl62tbau1njr632cfkuap0 cês 0 2333909 5729432 2026-07-20T09:27:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729432 wikitext text/x-wiki == ภาษาโปรตุเกส == === รากศัพท์ 1 === ==== การออกเสียง ==== {{pt-IPA|[s:ss]}} * {{rhymes|pt|es<a:BR>|eʃ<a:PT,Rio de Janeiro>|s=1}} * {{hyph|pt|cês}} ==== คำนาม ==== {{head|pt|รูปนาม|g=m}} # {{sid|pt|letter}} {{plural of|pt|cê|t=ตัวอักษร c|id=letter}} === รากศัพท์ 2 === ==== รูปแบบอื่น ==== * {{alt|pt|6||text messaging}} ==== การออกเสียง ==== {{pt-IPA}} * {{rhymes|pt|es<a:BR>|ejs|eʃ<a:PT,Rio de Janeiro>|ejʃ<a:Rio de Janeiro>|s=1}} * {{hyph|pt|cês}} * {{hmp|pt|seis|aa=BR}} ==== คำสรรพนาม ==== {{head|pt|รูปสรรพนาม}} # {{sid|pt|you}} {{plural of|pt|cê|t=คุณ|id=you}} j06bqecw8n0dhzm0ezdl3gbzuccugja dormido 0 2333910 5729435 2026-07-20T09:35:49Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5729435 wikitext text/x-wiki == ภาษากาลิเซีย == === รูปกริยาขยาย === {{gl-pp}} # {{past participle of|gl|dormir}} == ภาษาโปรตุเกส == === รูปกริยาขยาย === {{pt-pp}} # {{past participle of|pt|dormir}} == ภาษาสเปน == === รากศัพท์ === รูปกริยาขยายอดีตกาลของ {{m|es|dormir}} === การออกเสียง === {{es-pr}} === คำคุณศัพท์ === {{es-adj}} # [[ที่]][[หลับ]][[อยู่]] # [[ชา]] (ไม่มีความรู้สึก) ==== ลูกคำ ==== {{col|es|quedarse dormido}} === รูปกริยาขยาย === {{es-past participle}} # {{past participle of|es|dormir}} === อ่านเพิ่ม === * {{R:es:DRAE}} {{C|es|การนอนหลับ}} s2c7w57m6vrzllaxd5778zstbjzz14w durmiendo 0 2333911 5729437 2026-07-20T09:38:09Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729437 wikitext text/x-wiki == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยาเป็นนาม}} # {{es-verb form of|dormir<ue-u>}} fc6x9vektbjl16s042wt9tmbse1o5ar duerme 0 2333912 5729438 2026-07-20T09:38:13Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729438 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} s09rjymq107ov9of4dal9h14um988t8 dormíais 0 2333913 5729439 2026-07-20T09:38:18Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729439 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} i9tsiwnfgad8b5qilbrfyqqy0tgxa6t dormiríais 0 2333914 5729440 2026-07-20T09:38:22Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729440 wikitext text/x-wiki == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|dormir<u-o>}} == ภาษาสเปน == === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} i9tsiwnfgad8b5qilbrfyqqy0tgxa6t durmieras 0 2333915 5729441 2026-07-20T09:38:39Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729441 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|dormir<ue-u>}} s09rjymq107ov9of4dal9h14um988t8 dormíu 0 2333916 5729445 2026-07-20T09:43:25Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729445 wikitext text/x-wiki == ภาษาอัสตูเรียส == === การออกเสียง === {{ast-pr}} === รูปกริยาขยาย === {{head|ast|รูปกริยาขยายอดีตกาล|g=m|เพศหญิง|dormida|เพศกลาง|dormío|เพศชายพหูพจน์|dormíos|เพศหญิงพหูพจน์|dormíes}} # {{past participle of|ast|dormir}} mwjqauynnr81frs06el1hj6m1z1j3i4 dormiendo 0 2333917 5729446 2026-07-20T09:43:50Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729446 wikitext text/x-wiki == ภาษาละติน == === รูปกริยาขยาย === {{head|la|รูปผันรูปกริยาขยาย|head=dormiendō}} # {{inflection of|la|dormiendus||dat//abl|m//n|s}} ihbg7mh7qcx6f9j2qpvar6sv7c3axi2 แม่แบบ:oc-conj-ir 10 2333918 5729447 2026-07-20T09:45:08Z Octahedron80 267 นำเข้าจาก enwikt 5729447 wikitext text/x-wiki {{oc-conj-table | aux={{#switch:{{{2}}}|èsser=èsser|aver}} | auxger={{#switch:{{{2}}}|èsser=èsser|aver}} | {{{1}}}ir | {{l|oc|{{{1}}}issent}} | {{l|oc|{{{pp|{{{1}}}it}}}}} | {{l|oc|{{{1}}}issi}} | {{l|oc|{{{1}}}isses}} | {{l|oc|{{{1}}}ís}} | {{l|oc|{{{1}}}issèm}} | {{l|oc|{{{1}}}issètz}} | {{l|oc|{{{1}}}isson}} | {{l|oc|{{{1}}}issiái}} | {{l|oc|{{{1}}}issiás}} | {{l|oc|{{{1}}}issiá}} | {{l|oc|{{{1}}}issiam}} | {{l|oc|{{{1}}}issiatz}} | {{l|oc|{{{1}}}issián}} | {{l|oc|{{{1}}}iguèri}} | {{l|oc|{{{1}}}iguères}} | {{l|oc|{{{1}}}iguèt}} | {{l|oc|{{{1}}}iguèrem}} | {{l|oc|{{{1}}}iguèretz}} | {{l|oc|{{{1}}}iguèron}} | {{l|oc|{{{1}}}irai}} | {{l|oc|{{{1}}}iràs}} | {{l|oc|{{{1}}}irà}} | {{l|oc|{{{1}}}irem}} | {{l|oc|{{{1}}}iretz}} | {{l|oc|{{{1}}}iràn}} | {{l|oc|{{{1}}}iriái}} | {{l|oc|{{{1}}}iriás}} | {{l|oc|{{{1}}}iriá}} | {{l|oc|{{{1}}}iriam}} | {{l|oc|{{{1}}}iriatz}} | {{l|oc|{{{1}}}irián}} | {{l|oc|{{{1}}}isca}} | {{l|oc|{{{1}}}iscas}} | {{l|oc|{{{1}}}isca}} | {{l|oc|{{{1}}}iscam}} | {{l|oc|{{{1}}}iscatz}} | {{l|oc|{{{1}}}iscan}} | {{l|oc|{{{1}}}iguèsse}} | {{l|oc|{{{1}}}iguèsses}} | {{l|oc|{{{1}}}iguèsse}} | {{l|oc|{{{1}}}iguèssem}} | {{l|oc|{{{1}}}iguèssetz}} | {{l|oc|{{{1}}}iguèsson}} | {{l|oc|{{{1}}}ís}} | {{l|oc|{{{1}}}iscam}} | {{l|oc|{{{1}}}issetz}} | {{l|oc|{{{1}}}iguèra}} | {{l|oc|{{{1}}}iguèras}} | {{l|oc|{{{1}}}iguèra}} | {{l|oc|{{{1}}}igueram}} | {{l|oc|{{{1}}}igueratz}} | {{l|oc|{{{1}}}iguèran}} }}<noinclude>{{tcat|conj}}</noinclude> ghaogv725vwdbzeokkctt4kit4uq65c แม่แบบ:oc-conj-table 10 2333919 5729448 2026-07-20T09:53:35Z Octahedron80 267 นำเข้าจาก enwikt 5729448 wikitext text/x-wiki {{#invoke:checkparams|warn}}<!-- Validate template parameters --><templatestyles src="Module:roa-verb/style.css" /><div class="NavFrame"> <div class="NavHead" align=left>&nbsp; &nbsp; [[File:{{{dialcoat|Blason_Languedoc.svg}}}|14px]] {{{dial|Lengadocian (Central Occitan)}}}</div> <div class="NavContent"> {| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="2" class="roa-nonfinite-header" | ! colspan="3" class="roa-nonfinite-header" | กาลสามัญ ! colspan="3" class="roa-nonfinite-header" | กาลประสม |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยากลาง | colspan="3" | {{{1|}}} | colspan="3" | {{{aux|aver}}} {{{3|}}} |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยาเป็นนาม | colspan="3" | {{#if:{{{2|}}}|{{l|oc|{{{2}}}}}}} | colspan="3" | '''ใช้รูปกริยาเป็นนามของ {{m|oc|aver}} + รูปกริยาขยายอดีตกาล''' |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยาขยายอดีตกาล | colspan="3" | {{#if:{{{3|}}}|{{l|oc|{{{3}}}}}}} | colspan="3" | — |- ! colspan="2" rowspan="2" class="roa-person-number-header" | บุรุษ ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม |- ! class="roa-indicative-left-rail" rowspan="7" | มาลาบอกเล่า ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | ieu ! class="roa-indicative-left-rail" | tu ! class="roa-indicative-left-rail" | el ! class="roa-indicative-left-rail" | nosautres ! class="roa-indicative-left-rail" | vosautres ! class="roa-indicative-left-rail" | eles |- ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาล | {{#if:{{{4|}}}|{{l|oc|{{{4}}}}}}} | {{#if:{{{5|}}}|{{l|oc|{{{5}}}}}}} | {{#if:{{{6|}}}|{{l|oc|{{{6}}}}}}} | {{#if:{{{7|}}}|{{l|oc|{{{7}}}}}}} | {{#if:{{{8|}}}|{{l|oc|{{{8}}}}}}} | {{#if:{{{9|}}}|{{l|oc|{{{9}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | ไม่สมบูรณ์ | {{#if:{{{10|}}}|{{l|oc|{{{10}}}}}}} | {{#if:{{{11|}}}|{{l|oc|{{{11}}}}}}} | {{#if:{{{12|}}}|{{l|oc|{{{12}}}}}}} | {{#if:{{{13|}}}|{{l|oc|{{{13}}}}}}} | {{#if:{{{14|}}}|{{l|oc|{{{14}}}}}}} | {{#if:{{{15|}}}|{{l|oc|{{{15}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อดีตกาลสิ้นสุด (สมบูรณ์) | {{#if:{{{16|}}}|{{l|oc|{{{16}}}}}}} | {{#if:{{{17|}}}|{{l|oc|{{{17}}}}}}} | {{#if:{{{18|}}}|{{l|oc|{{{18}}}}}}} | {{#if:{{{19|}}}|{{l|oc|{{{19}}}}}}} | {{#if:{{{20|}}}|{{l|oc|{{{20}}}}}}} | {{#if:{{{21|}}}|{{l|oc|{{{21}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาล | {{#if:{{{22|}}}|{{l|oc|{{{22}}}}}}} | {{#if:{{{23|}}}|{{l|oc|{{{23}}}}}}} | {{#if:{{{24|}}}|{{l|oc|{{{24}}}}}}} | {{#if:{{{25|}}}|{{l|oc|{{{25}}}}}}} | {{#if:{{{26|}}}|{{l|oc|{{{26}}}}}}} | {{#if:{{{27|}}}|{{l|oc|{{{27}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไข | {{#if:{{{28|}}}|{{l|oc|{{{28}}}}}}} | {{#if:{{{29|}}}|{{l|oc|{{{29}}}}}}} | {{#if:{{{30|}}}|{{l|oc|{{{30}}}}}}} | {{#if:{{{31|}}}|{{l|oc|{{{31}}}}}}} | {{#if:{{{32|}}}|{{l|oc|{{{32}}}}}}} | {{#if:{{{33|}}}|{{l|oc|{{{33}}}}}}} |- ! class="roa-second-conditional-left-rail" style="height:3em;" | มาลาเงื่อนไขรูปที่ 2<sup class="roa-red-superscript">1</sup> | {{#if:{{{49|}}}|{{l|oc|{{{49}}}}}}} | {{#if:{{{50|}}}|{{l|oc|{{{50}}}}}}} | {{#if:{{{51|}}}|{{l|oc|{{{51}}}}}}} | {{#if:{{{52|}}}|{{l|oc|{{{52}}}}}}} | {{#if:{{{53|}}}|{{l|oc|{{{53}}}}}}} | {{#if:{{{54|}}}|{{l|oc|{{{54}}}}}}} |- ! rowspan="5" class="roa-indicative-left-rail" | กาลประสม ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาลสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลของ {{m|oc|aver}} + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | อภิสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์ของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | past anterior ! colspan="6" class="roa-compound-row" | ใช้รูปอดีตกาลสิ้นสุดของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาลสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปอนาคตกาลของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไขสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปมาลาเงื่อนไขของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-subjunctive-left-rail" rowspan="3" | มาลาสมมุติ ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | que ieu ! class="roa-subjunctive-left-rail" | que tu ! class="roa-subjunctive-left-rail" | que el ! class="roa-subjunctive-left-rail" | que nosautres ! class="roa-subjunctive-left-rail" | que vosautres ! class="roa-subjunctive-left-rail" | que eles |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ปัจจุบันกาล | {{#if:{{{34|}}}|{{l|oc|{{{34}}}}}}} | {{#if:{{{35|}}}|{{l|oc|{{{35}}}}}}} | {{#if:{{{36|}}}|{{l|oc|{{{36}}}}}}} | {{#if:{{{37|}}}|{{l|oc|{{{37}}}}}}} | {{#if:{{{38|}}}|{{l|oc|{{{38}}}}}}} | {{#if:{{{39|}}}|{{l|oc|{{{39}}}}}}} |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ไม่สมบูรณ์ | {{#if:{{{40|}}}|{{l|oc|{{{40}}}}}}} | {{#if:{{{41|}}}|{{l|oc|{{{41}}}}}}} | {{#if:{{{42|}}}|{{l|oc|{{{42}}}}}}} | {{#if:{{{43|}}}|{{l|oc|{{{43}}}}}}} | {{#if:{{{44|}}}|{{l|oc|{{{44}}}}}}} | {{#if:{{{45|}}}|{{l|oc|{{{45}}}}}}} |- ! rowspan="2" class="roa-subjunctive-left-rail" | กาลประสม ! class="roa-subjunctive-left-rail" style="height:3em;" | อดีตกาล ! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลมาลาสมมุติของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-subjunctive-left-rail" style="height:3em;" | อภิสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์มาลาสมมุติของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! colspan="2" rowspan="2" class="roa-imperative-left-rail" style="height:3em;" | มาลาสั่ง ! class="roa-imperative-left-rail" | — ! class="roa-imperative-left-rail" | tu ! class="roa-imperative-left-rail" | — ! class="roa-imperative-left-rail" | nosautres ! class="roa-imperative-left-rail" | vosautres ! class="roa-imperative-left-rail" | — |- | | {{#if:{{{46|}}}|{{l|oc|{{{46}}}}}}} | | {{#if:{{{47|}}}|{{l|oc|{{{47}}}}}}} | {{#if:{{{48|}}}|{{l|oc|{{{48}}}}}}} ! class="roa-second-conditional-left-rail" |<sup class="roa-red-superscript">1</sup>'''''Now chiefly obsolete, still in use in some Limousin and Vivaro-Alpin dialects''''' |- |colspan="8" class="roa-footnote-section" style="text-align:left" | {{{bottom|}}} |} </div></div><noinclude>{{documentation}} </noinclude> gqc8weeb8we8rro22tdzbs5mi9xcbx1 5729449 5729448 2026-07-20T09:59:02Z Octahedron80 267 5729449 wikitext text/x-wiki {{#invoke:checkparams|warn}}<!-- Validate template parameters --><templatestyles src="Module:roa-verb/style.css" /><div class="NavFrame"> <div class="NavHead" align=left>&nbsp; &nbsp; [[File:{{{dialcoat|Blason_Languedoc.svg}}}|14px]] {{{dial|แล็งกอด็อก (อุตซิตาตอนกลาง)}}}</div> <div class="NavContent"> {| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="2" class="roa-nonfinite-header" | ! colspan="3" class="roa-nonfinite-header" | กาลสามัญ ! colspan="3" class="roa-nonfinite-header" | กาลประสม |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยากลาง | colspan="3" | {{{1|}}} | colspan="3" | {{{aux|aver}}} {{{3|}}} |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยาเป็นนาม | colspan="3" | {{#if:{{{2|}}}|{{l|oc|{{{2}}}}}}} | colspan="3" | '''ใช้รูปกริยาเป็นนามของ {{m|oc|aver}} + รูปกริยาขยายอดีตกาล''' |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยาขยายอดีตกาล | colspan="3" | {{#if:{{{3|}}}|{{l|oc|{{{3}}}}}}} | colspan="3" | — |- ! colspan="2" rowspan="2" class="roa-person-number-header" | บุรุษ ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม |- ! class="roa-indicative-left-rail" rowspan="7" | มาลาบอกเล่า ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | ieu ! class="roa-indicative-left-rail" | tu ! class="roa-indicative-left-rail" | el ! class="roa-indicative-left-rail" | nosautres ! class="roa-indicative-left-rail" | vosautres ! class="roa-indicative-left-rail" | eles |- ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาล | {{#if:{{{4|}}}|{{l|oc|{{{4}}}}}}} | {{#if:{{{5|}}}|{{l|oc|{{{5}}}}}}} | {{#if:{{{6|}}}|{{l|oc|{{{6}}}}}}} | {{#if:{{{7|}}}|{{l|oc|{{{7}}}}}}} | {{#if:{{{8|}}}|{{l|oc|{{{8}}}}}}} | {{#if:{{{9|}}}|{{l|oc|{{{9}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | ไม่สมบูรณ์ | {{#if:{{{10|}}}|{{l|oc|{{{10}}}}}}} | {{#if:{{{11|}}}|{{l|oc|{{{11}}}}}}} | {{#if:{{{12|}}}|{{l|oc|{{{12}}}}}}} | {{#if:{{{13|}}}|{{l|oc|{{{13}}}}}}} | {{#if:{{{14|}}}|{{l|oc|{{{14}}}}}}} | {{#if:{{{15|}}}|{{l|oc|{{{15}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อดีตกาลสิ้นสุด (สมบูรณ์) | {{#if:{{{16|}}}|{{l|oc|{{{16}}}}}}} | {{#if:{{{17|}}}|{{l|oc|{{{17}}}}}}} | {{#if:{{{18|}}}|{{l|oc|{{{18}}}}}}} | {{#if:{{{19|}}}|{{l|oc|{{{19}}}}}}} | {{#if:{{{20|}}}|{{l|oc|{{{20}}}}}}} | {{#if:{{{21|}}}|{{l|oc|{{{21}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาล | {{#if:{{{22|}}}|{{l|oc|{{{22}}}}}}} | {{#if:{{{23|}}}|{{l|oc|{{{23}}}}}}} | {{#if:{{{24|}}}|{{l|oc|{{{24}}}}}}} | {{#if:{{{25|}}}|{{l|oc|{{{25}}}}}}} | {{#if:{{{26|}}}|{{l|oc|{{{26}}}}}}} | {{#if:{{{27|}}}|{{l|oc|{{{27}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไข | {{#if:{{{28|}}}|{{l|oc|{{{28}}}}}}} | {{#if:{{{29|}}}|{{l|oc|{{{29}}}}}}} | {{#if:{{{30|}}}|{{l|oc|{{{30}}}}}}} | {{#if:{{{31|}}}|{{l|oc|{{{31}}}}}}} | {{#if:{{{32|}}}|{{l|oc|{{{32}}}}}}} | {{#if:{{{33|}}}|{{l|oc|{{{33}}}}}}} |- ! class="roa-second-conditional-left-rail" style="height:3em;" | มาลาเงื่อนไขรูปที่ 2<sup class="roa-red-superscript">1</sup> | {{#if:{{{49|}}}|{{l|oc|{{{49}}}}}}} | {{#if:{{{50|}}}|{{l|oc|{{{50}}}}}}} | {{#if:{{{51|}}}|{{l|oc|{{{51}}}}}}} | {{#if:{{{52|}}}|{{l|oc|{{{52}}}}}}} | {{#if:{{{53|}}}|{{l|oc|{{{53}}}}}}} | {{#if:{{{54|}}}|{{l|oc|{{{54}}}}}}} |- ! rowspan="5" class="roa-indicative-left-rail" | กาลประสม ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาลสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลของ {{m|oc|aver}} + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | อภิสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์ของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | past anterior ! colspan="6" class="roa-compound-row" | ใช้รูปอดีตกาลสิ้นสุดของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาลสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปอนาคตกาลของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไขสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปมาลาเงื่อนไขของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-subjunctive-left-rail" rowspan="3" | มาลาสมมุติ ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | que ieu ! class="roa-subjunctive-left-rail" | que tu ! class="roa-subjunctive-left-rail" | que el ! class="roa-subjunctive-left-rail" | que nosautres ! class="roa-subjunctive-left-rail" | que vosautres ! class="roa-subjunctive-left-rail" | que eles |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ปัจจุบันกาล | {{#if:{{{34|}}}|{{l|oc|{{{34}}}}}}} | {{#if:{{{35|}}}|{{l|oc|{{{35}}}}}}} | {{#if:{{{36|}}}|{{l|oc|{{{36}}}}}}} | {{#if:{{{37|}}}|{{l|oc|{{{37}}}}}}} | {{#if:{{{38|}}}|{{l|oc|{{{38}}}}}}} | {{#if:{{{39|}}}|{{l|oc|{{{39}}}}}}} |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ไม่สมบูรณ์ | {{#if:{{{40|}}}|{{l|oc|{{{40}}}}}}} | {{#if:{{{41|}}}|{{l|oc|{{{41}}}}}}} | {{#if:{{{42|}}}|{{l|oc|{{{42}}}}}}} | {{#if:{{{43|}}}|{{l|oc|{{{43}}}}}}} | {{#if:{{{44|}}}|{{l|oc|{{{44}}}}}}} | {{#if:{{{45|}}}|{{l|oc|{{{45}}}}}}} |- ! rowspan="2" class="roa-subjunctive-left-rail" | กาลประสม ! class="roa-subjunctive-left-rail" style="height:3em;" | อดีตกาล ! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลมาลาสมมุติของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-subjunctive-left-rail" style="height:3em;" | อภิสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์มาลาสมมุติของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! colspan="2" rowspan="2" class="roa-imperative-left-rail" style="height:3em;" | มาลาสั่ง ! class="roa-imperative-left-rail" | — ! class="roa-imperative-left-rail" | tu ! class="roa-imperative-left-rail" | — ! class="roa-imperative-left-rail" | nosautres ! class="roa-imperative-left-rail" | vosautres ! class="roa-imperative-left-rail" | — |- | | {{#if:{{{46|}}}|{{l|oc|{{{46}}}}}}} | | {{#if:{{{47|}}}|{{l|oc|{{{47}}}}}}} | {{#if:{{{48|}}}|{{l|oc|{{{48}}}}}}} ! class="roa-second-conditional-left-rail" |<sup class="roa-red-superscript">1</sup>'''''Now chiefly obsolete, still in use in some Limousin and Vivaro-Alpin dialects''''' |- |colspan="8" class="roa-footnote-section" style="text-align:left" | {{{bottom|}}} |} </div></div><noinclude>{{documentation}} </noinclude> q6soqnrwqfqo4b79dcz7xl85io38zz0 5729450 5729449 2026-07-20T10:00:44Z Octahedron80 267 5729450 wikitext text/x-wiki {{#invoke:checkparams|warn}}<!-- Validate template parameters --><templatestyles src="Module:roa-verb/style.css" /><div class="NavFrame"> <div class="NavHead" align=left>&nbsp; &nbsp; [[File:{{{dialcoat|Blason_Languedoc.svg}}}|14px]] {{{dial|แล็งกอด็อก (อุตซิตาตอนกลาง)}}}</div> <div class="NavContent"> {| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="2" class="roa-nonfinite-header" | ! colspan="3" class="roa-nonfinite-header" | กาลสามัญ ! colspan="3" class="roa-nonfinite-header" | กาลประสม |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยากลาง | colspan="3" | {{{1|}}} | colspan="3" | {{{aux|aver}}} {{{3|}}} |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยาเป็นนาม | colspan="3" | {{#if:{{{2|}}}|{{l|oc|{{{2}}}}}}} | colspan="3" | '''ใช้รูปกริยาเป็นนามของ {{m|oc|aver}} + รูปกริยาขยายอดีตกาล''' |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยาขยายอดีตกาล | colspan="3" | {{#if:{{{3|}}}|{{l|oc|{{{3}}}}}}} | colspan="3" | — |- ! colspan="2" rowspan="2" class="roa-person-number-header" | บุรุษ ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม |- ! class="roa-indicative-left-rail" rowspan="7" | มาลาบอกเล่า ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | ieu ! class="roa-indicative-left-rail" | tu ! class="roa-indicative-left-rail" | el ! class="roa-indicative-left-rail" | nosautres ! class="roa-indicative-left-rail" | vosautres ! class="roa-indicative-left-rail" | eles |- ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาล | {{#if:{{{4|}}}|{{l|oc|{{{4}}}}}}} | {{#if:{{{5|}}}|{{l|oc|{{{5}}}}}}} | {{#if:{{{6|}}}|{{l|oc|{{{6}}}}}}} | {{#if:{{{7|}}}|{{l|oc|{{{7}}}}}}} | {{#if:{{{8|}}}|{{l|oc|{{{8}}}}}}} | {{#if:{{{9|}}}|{{l|oc|{{{9}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | ไม่สมบูรณ์ | {{#if:{{{10|}}}|{{l|oc|{{{10}}}}}}} | {{#if:{{{11|}}}|{{l|oc|{{{11}}}}}}} | {{#if:{{{12|}}}|{{l|oc|{{{12}}}}}}} | {{#if:{{{13|}}}|{{l|oc|{{{13}}}}}}} | {{#if:{{{14|}}}|{{l|oc|{{{14}}}}}}} | {{#if:{{{15|}}}|{{l|oc|{{{15}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อดีตกาลสิ้นสุด (สมบูรณ์) | {{#if:{{{16|}}}|{{l|oc|{{{16}}}}}}} | {{#if:{{{17|}}}|{{l|oc|{{{17}}}}}}} | {{#if:{{{18|}}}|{{l|oc|{{{18}}}}}}} | {{#if:{{{19|}}}|{{l|oc|{{{19}}}}}}} | {{#if:{{{20|}}}|{{l|oc|{{{20}}}}}}} | {{#if:{{{21|}}}|{{l|oc|{{{21}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาล | {{#if:{{{22|}}}|{{l|oc|{{{22}}}}}}} | {{#if:{{{23|}}}|{{l|oc|{{{23}}}}}}} | {{#if:{{{24|}}}|{{l|oc|{{{24}}}}}}} | {{#if:{{{25|}}}|{{l|oc|{{{25}}}}}}} | {{#if:{{{26|}}}|{{l|oc|{{{26}}}}}}} | {{#if:{{{27|}}}|{{l|oc|{{{27}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไข | {{#if:{{{28|}}}|{{l|oc|{{{28}}}}}}} | {{#if:{{{29|}}}|{{l|oc|{{{29}}}}}}} | {{#if:{{{30|}}}|{{l|oc|{{{30}}}}}}} | {{#if:{{{31|}}}|{{l|oc|{{{31}}}}}}} | {{#if:{{{32|}}}|{{l|oc|{{{32}}}}}}} | {{#if:{{{33|}}}|{{l|oc|{{{33}}}}}}} |- ! class="roa-second-conditional-left-rail" style="height:3em;" | มาลาเงื่อนไขรูปที่ 2<sup class="roa-red-superscript">1</sup> | {{#if:{{{49|}}}|{{l|oc|{{{49}}}}}}} | {{#if:{{{50|}}}|{{l|oc|{{{50}}}}}}} | {{#if:{{{51|}}}|{{l|oc|{{{51}}}}}}} | {{#if:{{{52|}}}|{{l|oc|{{{52}}}}}}} | {{#if:{{{53|}}}|{{l|oc|{{{53}}}}}}} | {{#if:{{{54|}}}|{{l|oc|{{{54}}}}}}} |- ! rowspan="5" class="roa-indicative-left-rail" | กาลประสม ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาลสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลของ {{m|oc|aver}} + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | อภิสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์ของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | past anterior ! colspan="6" class="roa-compound-row" | ใช้รูปอดีตกาลสิ้นสุดของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาลสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปอนาคตกาลของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไขสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปมาลาเงื่อนไขของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-subjunctive-left-rail" rowspan="3" | มาลาสมมุติ ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | que ieu ! class="roa-subjunctive-left-rail" | que tu ! class="roa-subjunctive-left-rail" | que el ! class="roa-subjunctive-left-rail" | que nosautres ! class="roa-subjunctive-left-rail" | que vosautres ! class="roa-subjunctive-left-rail" | que eles |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ปัจจุบันกาล | {{#if:{{{34|}}}|{{l|oc|{{{34}}}}}}} | {{#if:{{{35|}}}|{{l|oc|{{{35}}}}}}} | {{#if:{{{36|}}}|{{l|oc|{{{36}}}}}}} | {{#if:{{{37|}}}|{{l|oc|{{{37}}}}}}} | {{#if:{{{38|}}}|{{l|oc|{{{38}}}}}}} | {{#if:{{{39|}}}|{{l|oc|{{{39}}}}}}} |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ไม่สมบูรณ์ | {{#if:{{{40|}}}|{{l|oc|{{{40}}}}}}} | {{#if:{{{41|}}}|{{l|oc|{{{41}}}}}}} | {{#if:{{{42|}}}|{{l|oc|{{{42}}}}}}} | {{#if:{{{43|}}}|{{l|oc|{{{43}}}}}}} | {{#if:{{{44|}}}|{{l|oc|{{{44}}}}}}} | {{#if:{{{45|}}}|{{l|oc|{{{45}}}}}}} |- ! rowspan="2" class="roa-subjunctive-left-rail" | กาลประสม ! class="roa-subjunctive-left-rail" style="height:3em;" | อดีตกาล ! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลมาลาสมมุติของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-subjunctive-left-rail" style="height:3em;" | อภิสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์มาลาสมมุติของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! colspan="2" rowspan="2" class="roa-imperative-left-rail" style="height:3em;" | มาลาสั่ง ! class="roa-imperative-left-rail" | — ! class="roa-imperative-left-rail" | tu ! class="roa-imperative-left-rail" | — ! class="roa-imperative-left-rail" | nosautres ! class="roa-imperative-left-rail" | vosautres ! class="roa-imperative-left-rail" | — |- | | {{#if:{{{46|}}}|{{l|oc|{{{46}}}}}}} | | {{#if:{{{47|}}}|{{l|oc|{{{47}}}}}}} | {{#if:{{{48|}}}|{{l|oc|{{{48}}}}}}} ! class="roa-second-conditional-left-rail" |<sup class="roa-red-superscript">1</sup>'''''ปัจจุบันส่วนใหญ่เลิกใช้แล้ว แต่ยังคงใช้กันอยู่บ้างในภาษาถิ่นลิมูแซงและวิวาโร-อัลป์บางแห่ง''''' |- |colspan="8" class="roa-footnote-section" style="text-align:left" | {{{bottom|}}} |} </div></div><noinclude>{{documentation}} </noinclude> 3j9nfo51nubzz89cduwuftgupwh968s 5729451 5729450 2026-07-20T10:03:28Z Octahedron80 267 5729451 wikitext text/x-wiki {{#invoke:checkparams|warn}}<!-- Validate template parameters --><templatestyles src="Module:roa-verb/style.css" /><div class="NavFrame"> <div class="NavHead" align=left>&nbsp; &nbsp; [[File:{{{dialcoat|Blason_Languedoc.svg}}}|14px]] {{{dial|แล็งกอด็อก (อุตซิตาตอนกลาง)}}}</div> <div class="NavContent"> {| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="2" class="roa-nonfinite-header" | ! colspan="3" class="roa-nonfinite-header" | กาลสามัญ ! colspan="3" class="roa-nonfinite-header" | กาลประสม |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยากลาง | colspan="3" | {{{1|}}} | colspan="3" | {{{aux|aver}}} {{{3|}}} |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยาเป็นนาม | colspan="3" | {{#if:{{{2|}}}|{{l|oc|{{{2}}}}}}} | colspan="3" | '''ใช้รูปกริยาเป็นนามของ {{m|oc|aver}} + รูปกริยาขยายอดีตกาล''' |- ! colspan="2" class="roa-nonfinite-header" | รูปกริยาขยายอดีตกาล | colspan="3" | {{#if:{{{3|}}}|{{l|oc|{{{3}}}}}}} | colspan="3" | — |- ! colspan="2" rowspan="2" class="roa-person-number-header" | บุรุษ ! colspan="3" class="roa-person-number-header" | เอกพจน์ ! colspan="3" class="roa-person-number-header" | พหูพจน์ |- ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่หนึ่ง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สอง ! class="roa-person-number-header" style="width:12.5%;" | บุรุษที่สาม |- ! class="roa-indicative-left-rail" rowspan="7" | มาลาบอกเล่า ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | ieu ! class="roa-indicative-left-rail" | tu ! class="roa-indicative-left-rail" | el ! class="roa-indicative-left-rail" | nosautres ! class="roa-indicative-left-rail" | vosautres ! class="roa-indicative-left-rail" | eles |- ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาล | {{#if:{{{4|}}}|{{l|oc|{{{4}}}}}}} | {{#if:{{{5|}}}|{{l|oc|{{{5}}}}}}} | {{#if:{{{6|}}}|{{l|oc|{{{6}}}}}}} | {{#if:{{{7|}}}|{{l|oc|{{{7}}}}}}} | {{#if:{{{8|}}}|{{l|oc|{{{8}}}}}}} | {{#if:{{{9|}}}|{{l|oc|{{{9}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | ไม่สมบูรณ์ | {{#if:{{{10|}}}|{{l|oc|{{{10}}}}}}} | {{#if:{{{11|}}}|{{l|oc|{{{11}}}}}}} | {{#if:{{{12|}}}|{{l|oc|{{{12}}}}}}} | {{#if:{{{13|}}}|{{l|oc|{{{13}}}}}}} | {{#if:{{{14|}}}|{{l|oc|{{{14}}}}}}} | {{#if:{{{15|}}}|{{l|oc|{{{15}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อดีตกาลสิ้นสุด (สมบูรณ์) | {{#if:{{{16|}}}|{{l|oc|{{{16}}}}}}} | {{#if:{{{17|}}}|{{l|oc|{{{17}}}}}}} | {{#if:{{{18|}}}|{{l|oc|{{{18}}}}}}} | {{#if:{{{19|}}}|{{l|oc|{{{19}}}}}}} | {{#if:{{{20|}}}|{{l|oc|{{{20}}}}}}} | {{#if:{{{21|}}}|{{l|oc|{{{21}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาล | {{#if:{{{22|}}}|{{l|oc|{{{22}}}}}}} | {{#if:{{{23|}}}|{{l|oc|{{{23}}}}}}} | {{#if:{{{24|}}}|{{l|oc|{{{24}}}}}}} | {{#if:{{{25|}}}|{{l|oc|{{{25}}}}}}} | {{#if:{{{26|}}}|{{l|oc|{{{26}}}}}}} | {{#if:{{{27|}}}|{{l|oc|{{{27}}}}}}} |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไข | {{#if:{{{28|}}}|{{l|oc|{{{28}}}}}}} | {{#if:{{{29|}}}|{{l|oc|{{{29}}}}}}} | {{#if:{{{30|}}}|{{l|oc|{{{30}}}}}}} | {{#if:{{{31|}}}|{{l|oc|{{{31}}}}}}} | {{#if:{{{32|}}}|{{l|oc|{{{32}}}}}}} | {{#if:{{{33|}}}|{{l|oc|{{{33}}}}}}} |- ! class="roa-second-conditional-left-rail" style="height:3em;" | มาลาเงื่อนไขรูปที่ 2<sup class="roa-red-superscript">1</sup> | {{#if:{{{49|}}}|{{l|oc|{{{49}}}}}}} | {{#if:{{{50|}}}|{{l|oc|{{{50}}}}}}} | {{#if:{{{51|}}}|{{l|oc|{{{51}}}}}}} | {{#if:{{{52|}}}|{{l|oc|{{{52}}}}}}} | {{#if:{{{53|}}}|{{l|oc|{{{53}}}}}}} | {{#if:{{{54|}}}|{{l|oc|{{{54}}}}}}} |- ! rowspan="5" class="roa-indicative-left-rail" | กาลประสม ! class="roa-indicative-left-rail" style="height:3em;" | ปัจจุบันกาลสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลของ {{m|oc|aver}} + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | อภิสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์ของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | past anterior ! colspan="6" class="roa-compound-row" | ใช้รูปอดีตกาลสิ้นสุดของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | อนาคตกาลสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปอนาคตกาลของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-indicative-left-rail" style="height:3em;" | มาลาเงื่อนไขสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปมาลาเงื่อนไขของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-subjunctive-left-rail" rowspan="3" | มาลาสมมุติ ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | que ieu ! class="roa-subjunctive-left-rail" | que tu ! class="roa-subjunctive-left-rail" | que el ! class="roa-subjunctive-left-rail" | que nosautres ! class="roa-subjunctive-left-rail" | que vosautres ! class="roa-subjunctive-left-rail" | que eles |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ปัจจุบันกาล | {{#if:{{{34|}}}|{{l|oc|{{{34}}}}}}} | {{#if:{{{35|}}}|{{l|oc|{{{35}}}}}}} | {{#if:{{{36|}}}|{{l|oc|{{{36}}}}}}} | {{#if:{{{37|}}}|{{l|oc|{{{37}}}}}}} | {{#if:{{{38|}}}|{{l|oc|{{{38}}}}}}} | {{#if:{{{39|}}}|{{l|oc|{{{39}}}}}}} |- ! class="roa-subjunctive-left-rail" style="height:3em;" | ไม่สมบูรณ์ | {{#if:{{{40|}}}|{{l|oc|{{{40}}}}}}} | {{#if:{{{41|}}}|{{l|oc|{{{41}}}}}}} | {{#if:{{{42|}}}|{{l|oc|{{{42}}}}}}} | {{#if:{{{43|}}}|{{l|oc|{{{43}}}}}}} | {{#if:{{{44|}}}|{{l|oc|{{{44}}}}}}} | {{#if:{{{45|}}}|{{l|oc|{{{45}}}}}}} |- ! rowspan="2" class="roa-subjunctive-left-rail" | กาลประสม ! class="roa-subjunctive-left-rail" style="height:3em;" | อดีตกาล ! colspan="6" class="roa-compound-row" | ใช้รูปปัจจุบันกาลมาลาสมมุติของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! class="roa-subjunctive-left-rail" style="height:3em;" | อภิสมบูรณ์ ! colspan="6" class="roa-compound-row" | ใช้รูปไม่สมบูรณ์มาลาสมมุติของ ''{{{aux|aver}}}'' + รูปกริยาขยายอดีตกาล |- ! colspan="2" rowspan="2" class="roa-imperative-left-rail" style="height:3em;" | มาลาสั่ง ! class="roa-imperative-left-rail" | — ! class="roa-imperative-left-rail" | tu ! class="roa-imperative-left-rail" | — ! class="roa-imperative-left-rail" | nosautres ! class="roa-imperative-left-rail" | vosautres ! class="roa-imperative-left-rail" | — |- | | {{#if:{{{46|}}}|{{l|oc|{{{46}}}}}}} | | {{#if:{{{47|}}}|{{l|oc|{{{47}}}}}}} | {{#if:{{{48|}}}|{{l|oc|{{{48}}}}}}} ! class="roa-second-conditional-left-rail" |<sup class="roa-red-superscript">1</sup>'''''ปัจจุบันส่วนใหญ่เลิกใช้แล้ว แต่ยังคงใช้กันอยู่บ้างในภาษาถิ่นลีมูแซ็งและวิวาโร-อัลแป็งบางแห่ง''''' |- |colspan="8" class="roa-footnote-section" style="text-align:left" | {{{bottom|}}} |} </div></div><noinclude>{{documentation}} </noinclude> dafyko416gni6kb27k4kmclv1eoif0y dormissi 0 2333920 5729452 2026-07-20T10:04:19Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5729452 wikitext text/x-wiki == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dormire||1//2|s|impf|sub}} ekneuhl29krzw7vj4fwgu7bw0fhgibg