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.6
case-sensitive
สื่อ
พิเศษ
พูดคุย
ผู้ใช้
คุยกับผู้ใช้
วิกิพจนานุกรม
คุยเรื่องวิกิพจนานุกรม
ไฟล์
คุยเรื่องไฟล์
มีเดียวิกิ
คุยเรื่องมีเดียวิกิ
แม่แบบ
คุยเรื่องแม่แบบ
วิธีใช้
คุยเรื่องวิธีใช้
หมวดหมู่
คุยเรื่องหมวดหมู่
ภาคผนวก
คุยเรื่องภาคผนวก
ดัชนี
คุยเรื่องดัชนี
สัมผัส
คุยเรื่องสัมผัส
อรรถาภิธาน
คุยเรื่องอรรถาภิธาน
TimedText
TimedText talk
มอดูล
คุยเรื่องมอดูล
Event
Event talk
ၽႂ်
0
9230
5724864
1893576
2026-06-16T09:32:58Z
Alifshinobi
397
/* รากศัพท์ */
5724864
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทใหญ่ ==
=== รากศัพท์ ===
ร่วมเชื้อสายกับ{{cog|nod|ᨹᩲ}}, {{cog|tts|ใผ}} หรือ {{m|tts|ไผ}}, {{cog|lo|ໃຜ}}, {{cog|khb|ᦺᦕ}}, {{cog|blt|ꪻꪠ}}, {{cog|tdd|ᥚᥬᥴ}}, {{cog|aio|ၸၞ်}}, {{cog|aho|𑜇𑜧}} หรือ {{m|aho|𑜇𑜨𑜧}}
=== การออกเสียง ===
{{shn-pron}}
=== คำสรรพนาม ===
{{shn-pronoun}}
# [[ใคร]]
ryorquwaprxkfylv0ffg2htwvpzlay9
ဝႆႉ
0
9275
5724800
5724775
2026-06-15T21:00:43Z
Alifshinobi
397
/* รากศัพท์ */
5724800
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทใหญ่ ==
=== รากศัพท์ ===
{{inh+|shn|tai-swe-pro|*waj/aɰꟲ²}}; ร่วมเชื้อสายกับ{{cog|th|ไว้}}, {{cog|nod|ᩅᩱ᩶,ᩅᩱ᩠᩶ᨿ}}, {{cog|lo|ໄວ້}}, {{cog|khb|ᦺᦞᧉ}}, {{cog|blt|ꪼꪫ꫁}}, {{cog|twh|ꪼꪫꫂ}}, {{cog|tdd|ᥝᥭᥳ}}, {{cog|aho|𑜈𑜩,𑜚𑜩,𑜉𑜩}}
=== การออกเสียง ===
{{shn-pron}}
* ไว่ (โทสั้น)
=== คำกริยา ===
{{shn-verb}}
# [[ไว้]] (เก็บ)
sa1wjm00ytqia06ypsjsqql341ajkjw
ใบ
0
10198
5724866
5029618
2026-06-16T09:35:38Z
Alifshinobi
397
/* รากศัพท์ */
5724866
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รูปแบบอื่น ===
* {{alt|th|ไบ||เลิกใช้}}
=== รากศัพท์ ===
{{inh+|th|tai-pro|*ɓaɰᴬ}}; ร่วมเชื้อสายกับ{{cog|lo|ໃບ}}, {{cog|nod|ᨷᩱ}}, {{cog|khb|ᦺᦢ}}, {{cog|blt|ꪻꪚ}}, {{cog|twh|ꪻꪚ}}, {{cog|shn|မႂ်}} หรือ {{m|shn|ဝႂ်}}, {{cog|aho|𑜈𑜧}}, {{m|aho|𑜈𑜨𑜧}}, {{m|aho|𑜉𑜧}}, หรือ {{m|aho|𑜉𑜨𑜧}}, {{cog|za|mbaw}}, {{cog|skb|เบ๋อ}}; เทียบ{{cog|qfa-onb-pro|*ɓəːᴬ²}}, {{cog|qfa-lic-pro|*ɓɯː}}
=== การออกเสียง ===
{{th-pron}}
=== คำนาม ===
{{th-noun|*}}
# [[ส่วน]][[ของ]][[พืช]][[ที่]][[ติด]][[อยู่]][[กับ]][[กิ่ง]][[หรือ]][[ลำต้น]] [[โดย]][[มาก]][[มี]][[ลักษณะ]][[เป็น]][[แผ่น]][[แบน]] ๆ [[รูปร่าง]][[ต่าง ๆ]] [[กัน]] มี[[ก้าน]]ใบหรือ[[ไม่]]มี[[ก็]][[ได้]] [[มัก]]มี[[สี]][[เขียว]]
# [[สิ่ง]]ที่[[ทำ]][[ด้วย]][[ผืน]][[ผ้า]][[เป็นต้น]] [[สำหรับ]][[ขึง]]ที่[[เสา]][[กระโดง]][[เพื่อ]][[รับ]][[ลม]]
# แผ่น[[เอกสาร]]หรือ[[หนังสือ]][[สำคัญ]]ต่าง ๆ
#: {{ux|th|ใบขับขี่}}
#: {{ux|th|ใบทะเบียน}}
# [[เรียก]]ของที่เป็นแผ่น ๆ
#: {{ux|th|ใบหนังสือ}}
#: {{ux|th|ใบมีด}}
#: {{ux|th|ใบหู}}
#: {{ux|th|ทองใบ}}
==== คำแปลภาษาอื่น ====
{{trans-see|ส่วนของพืชที่ติดอยู่กับกิ่งหรือลำต้น|ใบไม้}}
=== คำลักษณนาม ===
{{th-cls}}
# [[ใช้]]เรียก[[ผลไม้]] [[ภาชนะ]] [[เครื่องใช้]][[บาง]][[อย่าง]] หรือแผ่นเอกสาร
#: {{ux|th|มะม่วง 2 ใบ}}
#: {{ux|th|ถ้วย 3 ใบ}}
#: {{ux|th|ตู้ 4 ใบ}}
#: {{ux|th|ใบขับขี่ 5 ใบ}}
== ภาษาคำเมือง ==
=== คำนาม ===
{{nod-noun}}
# {{alternative form of|nod|ᨷᩱ}}
boq6mavupsxh0863qk0yuzjwvceq5q6
shirt
0
13808
5724860
1256741
2026-06-16T08:34:05Z
Apisite
10648
5724860
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== คำนาม ===
{{en-noun}}
# [[เสื้อ]]
mq9tpeo6onx3znm86inw8lcdyontogx
เที่ยง
0
17776
5724867
2442742
2026-06-16T10:58:07Z
OctraBot
3198
/* รากศัพท์ */
5724867
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ ===
จาก{{der|th|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|nod|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|kkh|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|lo|ທ່ຽງ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|zzj|tingq}}, {{cog|skb|เถี้ยง}}
=== การออกเสียง ===
{{th-pron}}
=== คำคุณศัพท์ ===
{{th-adj}}
# [[ตรง]]
#: {{ux|th|กิโลนี้ไม่เที่ยง}}
# [[แน่นอน]]
#: {{ux|th|สังขารไม่เที่ยง}}
# [[ที่]][[สะท้อน]]ตรง[[กับ]][[ความ]][[เป็น]][[จริง]] [[ใน]][[คำ]][[ว่า]] [[กระจก]]เที่ยง
# [[แน่]], [[แม่นยำ]], ในคำว่า [[มือ]]เที่ยง
=== คำกริยาวิเศษณ์ ===
{{th-adv}}
# ตรง
#: {{ux|th|นาฬิกาเดินเที่ยง}}
# แน่นอน
==== ลูกคำ ====
{{col4|th|เที่ยงตรง|เที่ยงธรรม|เที่ยงแท้|มือเที่ยง}}
=== คำนาม ===
{{th-noun}}
# [[เรียก]][[เวลา]][[กึ่งกลาง]][[ของ]][[กลางวัน]]ที่[[พระอาทิตย์]][[อยู่]]ตรง[[ศีรษะ]]ว่า เที่ยง [[หรือ]] [[เที่ยงวัน]] ตรงกับ 12 [[นาฬิกา]]
# เรียกเวลากึ่งกลางของ[[กลางคืน]]ว่า [[เที่ยงคืน]] ตรงกับ 24 นาฬิกา หรือ 0 นาฬิกา
==== ลูกคำ ====
{{col4|th|เที่ยง ๆ|เที่ยงคืน|เที่ยงตรง|เที่ยงวัน|ไกลปืนเที่ยง|อาหารเที่ยง|มื้อเที่ยง|ข้าวเที่ยง|บานเที่ยง|เอื้องศรีเที่ยง|เที่ยงสุริยะ}}
{{topics|th|เวลา}}
3m6dbtwv7yny21zbtkrr2oofcuzbbnt
5724872
5724867
2026-06-16T11:03:10Z
OctraBot
3198
/* รากศัพท์ */
5724872
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ ===
{{inh+|th|tai-swe-pro|*diəŋᴮ⁴||เที่ยงวัน, เที่ยงคืน}} (Jonsson, 1991), จาก{{der|th|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|nod|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|kkh|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|lo|ທ່ຽງ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|zzj|tingq}}, {{cog|skb|เถี้ยง}}
=== การออกเสียง ===
{{th-pron}}
=== คำคุณศัพท์ ===
{{th-adj}}
# [[ตรง]]
#: {{ux|th|กิโลนี้ไม่เที่ยง}}
# [[แน่นอน]]
#: {{ux|th|สังขารไม่เที่ยง}}
# [[ที่]][[สะท้อน]]ตรง[[กับ]][[ความ]][[เป็น]][[จริง]] [[ใน]][[คำ]][[ว่า]] [[กระจก]]เที่ยง
# [[แน่]], [[แม่นยำ]], ในคำว่า [[มือ]]เที่ยง
=== คำกริยาวิเศษณ์ ===
{{th-adv}}
# ตรง
#: {{ux|th|นาฬิกาเดินเที่ยง}}
# แน่นอน
==== ลูกคำ ====
{{col4|th|เที่ยงตรง|เที่ยงธรรม|เที่ยงแท้|มือเที่ยง}}
=== คำนาม ===
{{th-noun}}
# [[เรียก]][[เวลา]][[กึ่งกลาง]][[ของ]][[กลางวัน]]ที่[[พระอาทิตย์]][[อยู่]]ตรง[[ศีรษะ]]ว่า เที่ยง [[หรือ]] [[เที่ยงวัน]] ตรงกับ 12 [[นาฬิกา]]
# เรียกเวลากึ่งกลางของ[[กลางคืน]]ว่า [[เที่ยงคืน]] ตรงกับ 24 นาฬิกา หรือ 0 นาฬิกา
==== ลูกคำ ====
{{col4|th|เที่ยง ๆ|เที่ยงคืน|เที่ยงตรง|เที่ยงวัน|ไกลปืนเที่ยง|อาหารเที่ยง|มื้อเที่ยง|ข้าวเที่ยง|บานเที่ยง|เอื้องศรีเที่ยง|เที่ยงสุริยะ}}
{{topics|th|เวลา}}
c1uqbjk96001xy0o4dniw4th9k744d9
5724873
5724872
2026-06-16T11:03:19Z
OctraBot
3198
/* รากศัพท์ */
5724873
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ ===
{{inh+|th|tai-swe-pro|*diəŋᴮ⁴||เที่ยงวัน, เที่ยงคืน}} (Jonsson, 1991), จาก{{der|th|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|nod|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|kkh|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|lo|ທ່ຽງ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|zzj|tingq}}, {{cog|skb|เถี้ยง}}
=== การออกเสียง ===
{{th-pron}}
=== คำคุณศัพท์ ===
{{th-adj}}
# [[ตรง]]
#: {{ux|th|กิโลนี้ไม่เที่ยง}}
# [[แน่นอน]]
#: {{ux|th|สังขารไม่เที่ยง}}
# [[ที่]][[สะท้อน]]ตรง[[กับ]][[ความ]][[เป็น]][[จริง]] [[ใน]][[คำ]][[ว่า]] [[กระจก]]เที่ยง
# [[แน่]], [[แม่นยำ]], ในคำว่า [[มือ]]เที่ยง
=== คำกริยาวิเศษณ์ ===
{{th-adv}}
# ตรง
#: {{ux|th|นาฬิกาเดินเที่ยง}}
# แน่นอน
==== ลูกคำ ====
{{col4|th|เที่ยงตรง|เที่ยงธรรม|เที่ยงแท้|มือเที่ยง}}
=== คำนาม ===
{{th-noun}}
# [[เรียก]][[เวลา]][[กึ่งกลาง]][[ของ]][[กลางวัน]]ที่[[พระอาทิตย์]][[อยู่]]ตรง[[ศีรษะ]]ว่า เที่ยง [[หรือ]] [[เที่ยงวัน]] ตรงกับ 12 [[นาฬิกา]]
# เรียกเวลากึ่งกลางของ[[กลางคืน]]ว่า [[เที่ยงคืน]] ตรงกับ 24 นาฬิกา หรือ 0 นาฬิกา
==== ลูกคำ ====
{{col4|th|เที่ยง ๆ|เที่ยงคืน|เที่ยงตรง|เที่ยงวัน|ไกลปืนเที่ยง|อาหารเที่ยง|มื้อเที่ยง|ข้าวเที่ยง|บานเที่ยง|เอื้องศรีเที่ยง|เที่ยงสุริยะ}}
{{topics|th|เวลา}}
c5amqoiou5tdp5huv9akrrs0s0p1uvz
ไท
0
17849
5724804
5721566
2026-06-16T01:19:58Z
OctraBot
3198
/* รากศัพท์ 1 */
5724804
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ 1 ===
{{inh+|th|tai-swe-pro|*dajᴬ²}}, จาก{{inh|th|tai-pro|*ɗwɤːjᴬ||อิสระ}}; ร่วมเชื้อสายกับ{{cog|tts|ไท}}, {{cog|nod|ᨴᩱ}}, {{cog|lo|ໄທ,ໄຕ}} ที่เลิกใช้แล้ว, {{cog|nyw|ไท}}, {{cog|khb|ᦺᦑ}}, {{cog|blt|ꪼꪕ}}, {{cog|shn|တႆး}}, {{cog|tdd|ᥖᥭᥰ}}, {{cog|aio|တႝ}}, {{cog|phk|တႝ}}, {{cog|aho|𑜄𑜩}} ซึ่งเมื่อใช้เดี่ยว ๆ จะหมายถึงกลุ่มชาติพันธุ์ไทนั้น ๆ
<!--Don't add ꪼꪗ here because it is loanword of ไทย-->
==== รูปแบบอื่น ====
* {{alt|th|ไต||พบได้ยาก}}
==== การออกเสียง ====
{{th-pron}}
==== คำนาม ====
{{th-noun}}
# ชนเชื้อชาติไท มีหลาย[[สาขา]]ด้วยกัน เช่น ไทใหญ่ ไทดำ ไทขาว
# {{lb|th|โบราณ}} [[ไทย]], [[สยาม]]
#: {{ux|th|ปี[[โถะ]][[หน]]ไท[[กัด]][[เหมา]]}} (ประชุมจารึกสยาม ภาคที่ 1 จารึกสุโขทัย)
# ความมี[[อิสระ]]ในตัว, ความไม่เป็น[[ทาส]]
===== ลูกคำ =====
{{col4|th
|ไทดำ
|ไทใต้คง
|ไทน้อย
|ไทพวน
|ไทยวน
|ไทลื้อ
|ไทใหญ่
|ไทหลวง
|ผู้ไท
}}
==== ดูเพิ่ม ====
{{col4|th
|ไทย
}}
=== รากศัพท์ 2 ===
แผลงมาจาก {{m|th|ไท้}}
==== การออกเสียง ====
{{th-pron}}
==== คำนาม ====
{{th-noun}}
# ผู้เป็นใหญ่
#: {{ux|th|ท้าวไท}}
=== รากศัพท์ 3 ===
{{bor+|th|en|tie}}
=== การออกเสียง ===
{{th-pron|ไท|ไท้}}
=== คำนาม ===
{{th-noun}}
# [[เน็กไท]] ผ้าที่ใช้ผูกคอเสื้อ[[เชิ้ต]] มักผูกเป็นปมรูปสามเหลี่ยมให้มีชายยาวลงมาประมาณเอว
#: {{ux|th|พอเขาผูก'''ไท'''แล้วดูดีขึ้นเป็นกอง}}
===== คำพ้องความ =====
{{col4|th
|เน็กไท
}}
{{topics|th|ไทย}}
== ภาษาคำเมือง ==
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{alternative form of|nod|ᨴᩱ}}
=== คำนาม ===
{{nod-noun}}
# {{alternative form of|nod|ᨴᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไต}}
=== การออกเสียง ===
* {{IPA|nyw|/tʰaj˨˨/|a=สว่างแดนดิน}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท#ภาษาไทย|ไท]]
== ภาษาอีสาน ==
=== การออกเสียง ===
* {{IPA|tts|/tʰaj˧˦˩/|a=ขอนแก่น}}
* {{คำอ่านไทย|ไท่<sup>สูง-ตก}} (ประมาณ)
=== คำนาม ===
{{tts-noun}}
# [[ไท#ภาษาไทย|ไท]]
n8t715vs4vupotd7suskfuu8vynwn5j
5724805
5724804
2026-06-16T01:21:53Z
OctraBot
3198
/* รากศัพท์ 1 */
5724805
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ 1 ===
{{inh+|th|tai-swe-pro|*dajᴬ²}}, จาก{{inh|th|tai-pro|*ɗwɤːjᴬ||อิสระ}}; ร่วมเชื้อสายกับ{{cog|tts|ไท}}, {{cog|nod|ᨴᩱ}}, {{cog|lo|ໄທ,ໄຕ<q:เลิกใช้>}}, {{cog|nyw|ไท}}, {{cog|khb|ᦺᦑ}}, {{cog|blt|ꪼꪕ}}, {{cog|shn|တႆး}}, {{cog|tdd|ᥖᥭᥰ}}, {{cog|aio|တႝ}}, {{cog|phk|တႝ}}, {{cog|aho|𑜄𑜩}} ซึ่งเมื่อใช้เดี่ยว ๆ จะหมายถึงกลุ่มชาติพันธุ์ไทนั้น ๆ
<!--Don't add ꪼꪗ here because it is loanword of ไทย-->
==== รูปแบบอื่น ====
* {{alt|th|ไต||พบได้ยาก}}
==== การออกเสียง ====
{{th-pron}}
==== คำนาม ====
{{th-noun}}
# ชนเชื้อชาติไท มีหลาย[[สาขา]]ด้วยกัน เช่น ไทใหญ่ ไทดำ ไทขาว
# {{lb|th|โบราณ}} [[ไทย]], [[สยาม]]
#: {{ux|th|ปี[[โถะ]][[หน]]ไท[[กัด]][[เหมา]]}} (ประชุมจารึกสยาม ภาคที่ 1 จารึกสุโขทัย)
# ความมี[[อิสระ]]ในตัว, ความไม่เป็น[[ทาส]]
===== ลูกคำ =====
{{col4|th
|ไทดำ
|ไทใต้คง
|ไทน้อย
|ไทพวน
|ไทยวน
|ไทลื้อ
|ไทใหญ่
|ไทหลวง
|ผู้ไท
}}
==== ดูเพิ่ม ====
{{col4|th
|ไทย
}}
=== รากศัพท์ 2 ===
แผลงมาจาก {{m|th|ไท้}}
==== การออกเสียง ====
{{th-pron}}
==== คำนาม ====
{{th-noun}}
# ผู้เป็นใหญ่
#: {{ux|th|ท้าวไท}}
=== รากศัพท์ 3 ===
{{bor+|th|en|tie}}
=== การออกเสียง ===
{{th-pron|ไท|ไท้}}
=== คำนาม ===
{{th-noun}}
# [[เน็กไท]] ผ้าที่ใช้ผูกคอเสื้อ[[เชิ้ต]] มักผูกเป็นปมรูปสามเหลี่ยมให้มีชายยาวลงมาประมาณเอว
#: {{ux|th|พอเขาผูก'''ไท'''แล้วดูดีขึ้นเป็นกอง}}
===== คำพ้องความ =====
{{col4|th
|เน็กไท
}}
{{topics|th|ไทย}}
== ภาษาคำเมือง ==
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{alternative form of|nod|ᨴᩱ}}
=== คำนาม ===
{{nod-noun}}
# {{alternative form of|nod|ᨴᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไต}}
=== การออกเสียง ===
* {{IPA|nyw|/tʰaj˨˨/|a=สว่างแดนดิน}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท#ภาษาไทย|ไท]]
== ภาษาอีสาน ==
=== การออกเสียง ===
* {{IPA|tts|/tʰaj˧˦˩/|a=ขอนแก่น}}
* {{คำอ่านไทย|ไท่<sup>สูง-ตก}} (ประมาณ)
=== คำนาม ===
{{tts-noun}}
# [[ไท#ภาษาไทย|ไท]]
j2b8x54b5ijvfy1yxl5yivjr7nmjjlj
5724806
5724805
2026-06-16T01:24:01Z
OctraBot
3198
/* ภาษาคำเมือง */
5724806
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ 1 ===
{{inh+|th|tai-swe-pro|*dajᴬ²}}, จาก{{inh|th|tai-pro|*ɗwɤːjᴬ||อิสระ}}; ร่วมเชื้อสายกับ{{cog|tts|ไท}}, {{cog|nod|ᨴᩱ}}, {{cog|lo|ໄທ,ໄຕ<q:เลิกใช้>}}, {{cog|nyw|ไท}}, {{cog|khb|ᦺᦑ}}, {{cog|blt|ꪼꪕ}}, {{cog|shn|တႆး}}, {{cog|tdd|ᥖᥭᥰ}}, {{cog|aio|တႝ}}, {{cog|phk|တႝ}}, {{cog|aho|𑜄𑜩}} ซึ่งเมื่อใช้เดี่ยว ๆ จะหมายถึงกลุ่มชาติพันธุ์ไทนั้น ๆ
<!--Don't add ꪼꪗ here because it is loanword of ไทย-->
==== รูปแบบอื่น ====
* {{alt|th|ไต||พบได้ยาก}}
==== การออกเสียง ====
{{th-pron}}
==== คำนาม ====
{{th-noun}}
# ชนเชื้อชาติไท มีหลาย[[สาขา]]ด้วยกัน เช่น ไทใหญ่ ไทดำ ไทขาว
# {{lb|th|โบราณ}} [[ไทย]], [[สยาม]]
#: {{ux|th|ปี[[โถะ]][[หน]]ไท[[กัด]][[เหมา]]}} (ประชุมจารึกสยาม ภาคที่ 1 จารึกสุโขทัย)
# ความมี[[อิสระ]]ในตัว, ความไม่เป็น[[ทาส]]
===== ลูกคำ =====
{{col4|th
|ไทดำ
|ไทใต้คง
|ไทน้อย
|ไทพวน
|ไทยวน
|ไทลื้อ
|ไทใหญ่
|ไทหลวง
|ผู้ไท
}}
==== ดูเพิ่ม ====
{{col4|th
|ไทย
}}
=== รากศัพท์ 2 ===
แผลงมาจาก {{m|th|ไท้}}
==== การออกเสียง ====
{{th-pron}}
==== คำนาม ====
{{th-noun}}
# ผู้เป็นใหญ่
#: {{ux|th|ท้าวไท}}
=== รากศัพท์ 3 ===
{{bor+|th|en|tie}}
=== การออกเสียง ===
{{th-pron|ไท|ไท้}}
=== คำนาม ===
{{th-noun}}
# [[เน็กไท]] ผ้าที่ใช้ผูกคอเสื้อ[[เชิ้ต]] มักผูกเป็นปมรูปสามเหลี่ยมให้มีชายยาวลงมาประมาณเอว
#: {{ux|th|พอเขาผูก'''ไท'''แล้วดูดีขึ้นเป็นกอง}}
===== คำพ้องความ =====
{{col4|th
|เน็กไท
}}
{{topics|th|ไทย}}
== ภาษาคำเมือง ==
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
=== คำนาม ===
{{nod-noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไต}}
=== การออกเสียง ===
* {{IPA|nyw|/tʰaj˨˨/|a=สว่างแดนดิน}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท#ภาษาไทย|ไท]]
== ภาษาอีสาน ==
=== การออกเสียง ===
* {{IPA|tts|/tʰaj˧˦˩/|a=ขอนแก่น}}
* {{คำอ่านไทย|ไท่<sup>สูง-ตก}} (ประมาณ)
=== คำนาม ===
{{tts-noun}}
# [[ไท#ภาษาไทย|ไท]]
b8ah1uim10qqbexs29yg0bza0en2eng
5724814
5724806
2026-06-16T01:43:51Z
OctraBot
3198
/* ภาษาไทย */
5724814
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ไท|ไท้:เพิ่มเติมสำหรับ<br>รากศัพท์ 3}}
=== รากศัพท์ 1 ===
{{inh+|th|tai-swe-pro|*dajᴬ²}}, จาก{{inh|th|tai-pro|*ɗwɤːjᴬ||อิสระ}}; ร่วมเชื้อสายกับ{{cog|tts|ไท}}, {{cog|nod|ᨴᩱ}}, {{cog|lo|ໄທ,ໄຕ<q:เลิกใช้>}}, {{cog|nyw|ไท}}, {{cog|khb|ᦺᦑ}}, {{cog|blt|ꪼꪕ}}, {{cog|shn|တႆး}}, {{cog|tdd|ᥖᥭᥰ}}, {{cog|aio|တႝ}}, {{cog|phk|တႝ}}, {{cog|aho|𑜄𑜩}} ซึ่งเมื่อใช้เดี่ยว ๆ จะหมายถึงกลุ่มชาติพันธุ์ไทนั้น ๆ
<!--Don't add ꪼꪗ here because it is loanword of ไทย-->
==== รูปแบบอื่น ====
* {{alt|th|ไต||พบได้ยาก}}
==== คำนาม ====
{{th-noun}}
# ชนเชื้อชาติไท มีหลาย[[สาขา]]ด้วยกัน เช่น ไทใหญ่ ไทดำ ไทขาว
# {{lb|th|โบราณ}} [[ไทย]], [[สยาม]]
#: {{ux|th|ปี[[โถะ]][[หน]]ไท[[กัด]][[เหมา]]}} (ประชุมจารึกสยาม ภาคที่ 1 จารึกสุโขทัย)
# ความมี[[อิสระ]]ในตัว, ความไม่เป็น[[ทาส]]
===== ลูกคำ =====
{{col4|th
|ไทดำ
|ไทใต้คง
|ไทน้อย
|ไทพวน
|ไทยวน
|ไทลื้อ
|ไทใหญ่
|ไทหลวง
|ผู้ไท
}}
==== ดูเพิ่ม ====
{{col4|th
|ไทย
}}
=== รากศัพท์ 2 ===
แผลงมาจาก {{m|th|ไท้}}
==== คำนาม ====
{{th-noun}}
# ผู้เป็นใหญ่
#: {{ux|th|ท้าวไท}}
=== รากศัพท์ 3 ===
{{bor+|th|en|tie}}
=== คำนาม ===
{{th-noun}}
# [[เน็กไท]] ผ้าที่ใช้ผูกคอเสื้อ[[เชิ้ต]] มักผูกเป็นปมรูปสามเหลี่ยมให้มีชายยาวลงมาประมาณเอว
#: {{ux|th|พอเขาผูก'''ไท'''แล้วดูดีขึ้นเป็นกอง}}
===== คำพ้องความ =====
{{col4|th
|เน็กไท
}}
{{topics|th|ไทย}}
== ภาษาคำเมือง ==
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
=== คำนาม ===
{{nod-noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไต}}
=== การออกเสียง ===
* {{IPA|nyw|/tʰaj˨˨/|a=สว่างแดนดิน}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท#ภาษาไทย|ไท]]
== ภาษาอีสาน ==
=== การออกเสียง ===
* {{IPA|tts|/tʰaj˧˦˩/|a=ขอนแก่น}}
* {{คำอ่านไทย|ไท่<sup>สูง-ตก}} (ประมาณ)
=== คำนาม ===
{{tts-noun}}
# [[ไท#ภาษาไทย|ไท]]
i9c8eomqiigvl36ke95kt4gddhsze5g
5724815
5724814
2026-06-16T01:48:39Z
OctraBot
3198
/* คำนาม */
5724815
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ไท|ไท้:เพิ่มเติมสำหรับ<br>รากศัพท์ 3}}
=== รากศัพท์ 1 ===
{{inh+|th|tai-swe-pro|*dajᴬ²}}, จาก{{inh|th|tai-pro|*ɗwɤːjᴬ||อิสระ}}; ร่วมเชื้อสายกับ{{cog|tts|ไท}}, {{cog|nod|ᨴᩱ}}, {{cog|lo|ໄທ,ໄຕ<q:เลิกใช้>}}, {{cog|nyw|ไท}}, {{cog|khb|ᦺᦑ}}, {{cog|blt|ꪼꪕ}}, {{cog|shn|တႆး}}, {{cog|tdd|ᥖᥭᥰ}}, {{cog|aio|တႝ}}, {{cog|phk|တႝ}}, {{cog|aho|𑜄𑜩}} ซึ่งเมื่อใช้เดี่ยว ๆ จะหมายถึงกลุ่มชาติพันธุ์ไทนั้น ๆ
<!--Don't add ꪼꪗ here because it is loanword of ไทย-->
==== รูปแบบอื่น ====
* {{alt|th|ไต||พบได้ยาก}}
==== คำนาม ====
{{th-noun}}
# ชนเชื้อชาติไท มีหลาย[[สาขา]]ด้วยกัน เช่น ไทใหญ่ ไทดำ ไทขาว
# {{lb|th|โบราณ}} [[ไทย]], [[สยาม]]
#: {{ux|th|ปี[[โถะ]][[หน]]ไท[[กัด]][[เหมา]]}} (ประชุมจารึกสยาม ภาคที่ 1 จารึกสุโขทัย)
# ความมี[[อิสระ]]ในตัว, ความไม่เป็น[[ทาส]]
===== ลูกคำ =====
{{col4|th
|ไทดำ
|ไทใต้คง
|ไทน้อย
|ไทพวน
|ไทยวน
|ไทลื้อ
|ไทใหญ่
|ไทหลวง
|ผู้ไท
}}
==== ดูเพิ่ม ====
{{col4|th
|ไทย
}}
=== รากศัพท์ 2 ===
แผลงมาจาก {{m|th|ไท้}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|กลอน}} ผู้เป็นใหญ่
#: {{ux|th|ท้าวไท}}
=== รากศัพท์ 3 ===
{{bor+|th|en|tie}}
=== คำนาม ===
{{th-noun}}
# [[เน็กไท]] ผ้าที่ใช้ผูกคอเสื้อ[[เชิ้ต]] มักผูกเป็นปมรูปสามเหลี่ยมให้มีชายยาวลงมาประมาณเอว
#: {{ux|th|พอเขาผูก'''ไท'''แล้วดูดีขึ้นเป็นกอง}}
===== คำพ้องความ =====
{{col4|th
|เน็กไท
}}
{{topics|th|ไทย}}
== ภาษาคำเมือง ==
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
=== คำนาม ===
{{nod-noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไต}}
=== การออกเสียง ===
* {{IPA|nyw|/tʰaj˨˨/|a=สว่างแดนดิน}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท#ภาษาไทย|ไท]]
== ภาษาอีสาน ==
=== การออกเสียง ===
* {{IPA|tts|/tʰaj˧˦˩/|a=ขอนแก่น}}
* {{คำอ่านไทย|ไท่<sup>สูง-ตก}} (ประมาณ)
=== คำนาม ===
{{tts-noun}}
# [[ไท#ภาษาไทย|ไท]]
bhodajk1so0wtrlbkd5mj7eb5pn96hh
5724816
5724815
2026-06-16T01:52:12Z
OctraBot
3198
/* การออกเสียง */
5724816
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ไท|ไท้:เพิ่มเติม<br>สำหรับรากศัพท์ 3}}
=== รากศัพท์ 1 ===
{{inh+|th|tai-swe-pro|*dajᴬ²}}, จาก{{inh|th|tai-pro|*ɗwɤːjᴬ||อิสระ}}; ร่วมเชื้อสายกับ{{cog|tts|ไท}}, {{cog|nod|ᨴᩱ}}, {{cog|lo|ໄທ,ໄຕ<q:เลิกใช้>}}, {{cog|nyw|ไท}}, {{cog|khb|ᦺᦑ}}, {{cog|blt|ꪼꪕ}}, {{cog|shn|တႆး}}, {{cog|tdd|ᥖᥭᥰ}}, {{cog|aio|တႝ}}, {{cog|phk|တႝ}}, {{cog|aho|𑜄𑜩}} ซึ่งเมื่อใช้เดี่ยว ๆ จะหมายถึงกลุ่มชาติพันธุ์ไทนั้น ๆ
<!--Don't add ꪼꪗ here because it is loanword of ไทย-->
==== รูปแบบอื่น ====
* {{alt|th|ไต||พบได้ยาก}}
==== คำนาม ====
{{th-noun}}
# ชนเชื้อชาติไท มีหลาย[[สาขา]]ด้วยกัน เช่น ไทใหญ่ ไทดำ ไทขาว
# {{lb|th|โบราณ}} [[ไทย]], [[สยาม]]
#: {{ux|th|ปี[[โถะ]][[หน]]ไท[[กัด]][[เหมา]]}} (ประชุมจารึกสยาม ภาคที่ 1 จารึกสุโขทัย)
# ความมี[[อิสระ]]ในตัว, ความไม่เป็น[[ทาส]]
===== ลูกคำ =====
{{col4|th
|ไทดำ
|ไทใต้คง
|ไทน้อย
|ไทพวน
|ไทยวน
|ไทลื้อ
|ไทใหญ่
|ไทหลวง
|ผู้ไท
}}
==== ดูเพิ่ม ====
{{col4|th
|ไทย
}}
=== รากศัพท์ 2 ===
แผลงมาจาก {{m|th|ไท้}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|กลอน}} ผู้เป็นใหญ่
#: {{ux|th|ท้าวไท}}
=== รากศัพท์ 3 ===
{{bor+|th|en|tie}}
=== คำนาม ===
{{th-noun}}
# [[เน็กไท]] ผ้าที่ใช้ผูกคอเสื้อ[[เชิ้ต]] มักผูกเป็นปมรูปสามเหลี่ยมให้มีชายยาวลงมาประมาณเอว
#: {{ux|th|พอเขาผูก'''ไท'''แล้วดูดีขึ้นเป็นกอง}}
===== คำพ้องความ =====
{{col4|th
|เน็กไท
}}
{{topics|th|ไทย}}
== ภาษาคำเมือง ==
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
=== คำนาม ===
{{nod-noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไต}}
=== การออกเสียง ===
* {{IPA|nyw|/tʰaj˨˨/|a=สว่างแดนดิน}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท#ภาษาไทย|ไท]]
== ภาษาอีสาน ==
=== การออกเสียง ===
* {{IPA|tts|/tʰaj˧˦˩/|a=ขอนแก่น}}
* {{คำอ่านไทย|ไท่<sup>สูง-ตก}} (ประมาณ)
=== คำนาม ===
{{tts-noun}}
# [[ไท#ภาษาไทย|ไท]]
ht5e78e80pmzvm1w9zi0pl5vtxwet9z
5724817
5724816
2026-06-16T02:03:42Z
OctraBot
3198
/* การออกเสียง */
5724817
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ไท|ไท้:สำหรับรากศัพท์ 3 ด้วย}}
=== รากศัพท์ 1 ===
{{inh+|th|tai-swe-pro|*dajᴬ²}}, จาก{{inh|th|tai-pro|*ɗwɤːjᴬ||อิสระ}}; ร่วมเชื้อสายกับ{{cog|tts|ไท}}, {{cog|nod|ᨴᩱ}}, {{cog|lo|ໄທ,ໄຕ<q:เลิกใช้>}}, {{cog|nyw|ไท}}, {{cog|khb|ᦺᦑ}}, {{cog|blt|ꪼꪕ}}, {{cog|shn|တႆး}}, {{cog|tdd|ᥖᥭᥰ}}, {{cog|aio|တႝ}}, {{cog|phk|တႝ}}, {{cog|aho|𑜄𑜩}} ซึ่งเมื่อใช้เดี่ยว ๆ จะหมายถึงกลุ่มชาติพันธุ์ไทนั้น ๆ
<!--Don't add ꪼꪗ here because it is loanword of ไทย-->
==== รูปแบบอื่น ====
* {{alt|th|ไต||พบได้ยาก}}
==== คำนาม ====
{{th-noun}}
# ชนเชื้อชาติไท มีหลาย[[สาขา]]ด้วยกัน เช่น ไทใหญ่ ไทดำ ไทขาว
# {{lb|th|โบราณ}} [[ไทย]], [[สยาม]]
#: {{ux|th|ปี[[โถะ]][[หน]]ไท[[กัด]][[เหมา]]}} (ประชุมจารึกสยาม ภาคที่ 1 จารึกสุโขทัย)
# ความมี[[อิสระ]]ในตัว, ความไม่เป็น[[ทาส]]
===== ลูกคำ =====
{{col4|th
|ไทดำ
|ไทใต้คง
|ไทน้อย
|ไทพวน
|ไทยวน
|ไทลื้อ
|ไทใหญ่
|ไทหลวง
|ผู้ไท
}}
==== ดูเพิ่ม ====
{{col4|th
|ไทย
}}
=== รากศัพท์ 2 ===
แผลงมาจาก {{m|th|ไท้}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|กลอน}} ผู้เป็นใหญ่
#: {{ux|th|ท้าวไท}}
=== รากศัพท์ 3 ===
{{bor+|th|en|tie}}
=== คำนาม ===
{{th-noun}}
# [[เน็กไท]] ผ้าที่ใช้ผูกคอเสื้อ[[เชิ้ต]] มักผูกเป็นปมรูปสามเหลี่ยมให้มีชายยาวลงมาประมาณเอว
#: {{ux|th|พอเขาผูก'''ไท'''แล้วดูดีขึ้นเป็นกอง}}
===== คำพ้องความ =====
{{col4|th
|เน็กไท
}}
{{topics|th|ไทย}}
== ภาษาคำเมือง ==
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
=== คำนาม ===
{{nod-noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไต}}
=== การออกเสียง ===
* {{IPA|nyw|/tʰaj˨˨/|a=สว่างแดนดิน}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท#ภาษาไทย|ไท]]
== ภาษาอีสาน ==
=== การออกเสียง ===
* {{IPA|tts|/tʰaj˧˦˩/|a=ขอนแก่น}}
* {{คำอ่านไทย|ไท่<sup>สูง-ตก}} (ประมาณ)
=== คำนาม ===
{{tts-noun}}
# [[ไท#ภาษาไทย|ไท]]
lkvfto6lfm6hfr0s78qn1ege1knoi7j
5724818
5724817
2026-06-16T02:04:19Z
OctraBot
3198
/* การออกเสียง */
5724818
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ไท|ไท้:สำหรับรากศัพท์ 3 อีกด้วย}}
=== รากศัพท์ 1 ===
{{inh+|th|tai-swe-pro|*dajᴬ²}}, จาก{{inh|th|tai-pro|*ɗwɤːjᴬ||อิสระ}}; ร่วมเชื้อสายกับ{{cog|tts|ไท}}, {{cog|nod|ᨴᩱ}}, {{cog|lo|ໄທ,ໄຕ<q:เลิกใช้>}}, {{cog|nyw|ไท}}, {{cog|khb|ᦺᦑ}}, {{cog|blt|ꪼꪕ}}, {{cog|shn|တႆး}}, {{cog|tdd|ᥖᥭᥰ}}, {{cog|aio|တႝ}}, {{cog|phk|တႝ}}, {{cog|aho|𑜄𑜩}} ซึ่งเมื่อใช้เดี่ยว ๆ จะหมายถึงกลุ่มชาติพันธุ์ไทนั้น ๆ
<!--Don't add ꪼꪗ here because it is loanword of ไทย-->
==== รูปแบบอื่น ====
* {{alt|th|ไต||พบได้ยาก}}
==== คำนาม ====
{{th-noun}}
# ชนเชื้อชาติไท มีหลาย[[สาขา]]ด้วยกัน เช่น ไทใหญ่ ไทดำ ไทขาว
# {{lb|th|โบราณ}} [[ไทย]], [[สยาม]]
#: {{ux|th|ปี[[โถะ]][[หน]]ไท[[กัด]][[เหมา]]}} (ประชุมจารึกสยาม ภาคที่ 1 จารึกสุโขทัย)
# ความมี[[อิสระ]]ในตัว, ความไม่เป็น[[ทาส]]
===== ลูกคำ =====
{{col4|th
|ไทดำ
|ไทใต้คง
|ไทน้อย
|ไทพวน
|ไทยวน
|ไทลื้อ
|ไทใหญ่
|ไทหลวง
|ผู้ไท
}}
==== ดูเพิ่ม ====
{{col4|th
|ไทย
}}
=== รากศัพท์ 2 ===
แผลงมาจาก {{m|th|ไท้}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|กลอน}} ผู้เป็นใหญ่
#: {{ux|th|ท้าวไท}}
=== รากศัพท์ 3 ===
{{bor+|th|en|tie}}
=== คำนาม ===
{{th-noun}}
# [[เน็กไท]] ผ้าที่ใช้ผูกคอเสื้อ[[เชิ้ต]] มักผูกเป็นปมรูปสามเหลี่ยมให้มีชายยาวลงมาประมาณเอว
#: {{ux|th|พอเขาผูก'''ไท'''แล้วดูดีขึ้นเป็นกอง}}
===== คำพ้องความ =====
{{col4|th
|เน็กไท
}}
{{topics|th|ไทย}}
== ภาษาคำเมือง ==
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
=== คำนาม ===
{{nod-noun}}
# {{alternative spelling of|nod|ᨴᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไต}}
=== การออกเสียง ===
* {{IPA|nyw|/tʰaj˨˨/|a=สว่างแดนดิน}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท#ภาษาไทย|ไท]]
== ภาษาอีสาน ==
=== การออกเสียง ===
* {{IPA|tts|/tʰaj˧˦˩/|a=ขอนแก่น}}
* {{คำอ่านไทย|ไท่<sup>สูง-ตก}} (ประมาณ)
=== คำนาม ===
{{tts-noun}}
# [[ไท#ภาษาไทย|ไท]]
mwjjb7sr32a4fhb9kzapyyu1fwsx2hr
alzarsi
0
25187
5724881
1174298
2026-06-16T11:50:44Z
OctraBot
3198
/* ภาษาอิตาลี */ เก็บกวาด
5724881
wikitext
text/x-wiki
== ภาษาอิตาลี ==
=== การออกเสียง ===
{{it-pr|altsàrsi<audio:LL-Q652 (ita)-Exilexi-alzarsi.wav>}}
=== คำกริยา ===
{{it-verb|à}}
# {{reflexive of|it|alzare}}
# [[ยืน]], [[ลุก]], ลุก[[ขึ้น]]ยืน, [[ยก]][[ตัว]]ขึ้น, (เครื่องบิน) [[บิน]]ขึ้น
# ลุก (ออกจากเตียง)
# ขึ้น
==== การผันรูป ====
{{it-conj|à}}
==== คำพ้องความ ====
* {{l|it|levarsi}}, {{l|it|sollevarsi}}
==== คำตรงข้าม ====
* {{l|it|abbassarsi}}
oqs91n5hdm4ed64nwlkr4d85wfj03zq
lavarsi
0
25777
5724876
1275990
2026-06-16T11:13:33Z
OctraBot
3198
/* ภาษาอิตาลี */ เก็บกวาด
5724876
wikitext
text/x-wiki
== ภาษาอิตาลี ==
=== การออกเสียง ===
{{it-pr}}
=== คำกริยา ===
{{it-verb|à}}
# {{reflexive of|it|lavare}}
# [[ล้าง]] (ตัวเขาเอง)
#: {{uxi|it|lavarsi le mani|t=to wash one's hands}}
#: {{uxi|it|lavarsene le mani|t=to wash one's hands of (take no responsibility for)}}
#: {{uxi|it|se ne lavano le mani|t=to wash one's hands of (take no responsibility for)}}
==== การผันรูป ====
{{it-conj|à}}
==== คำเกี่ยวข้อง ====
* {{l|it|lavarsene}}
=== คำสลับอักษร ===
* {{anagrams|it|a=aailrsv|rivalsa}}
==คำสลับอักษร==
* [[rivalsa]]
qud0ujaqnxztt7btkd0qze9lpq9ityt
5724878
5724876
2026-06-16T11:14:27Z
OctraBot
3198
/* คำสลับอักษร */
5724878
wikitext
text/x-wiki
== ภาษาอิตาลี ==
=== การออกเสียง ===
{{it-pr}}
=== คำกริยา ===
{{it-verb|à}}
# {{reflexive of|it|lavare}}
# [[ล้าง]] (ตัวเขาเอง)
#: {{uxi|it|lavarsi le mani|t=to wash one's hands}}
#: {{uxi|it|lavarsene le mani|t=to wash one's hands of (take no responsibility for)}}
#: {{uxi|it|se ne lavano le mani|t=to wash one's hands of (take no responsibility for)}}
==== การผันรูป ====
{{it-conj|à}}
==== คำเกี่ยวข้อง ====
* {{l|it|lavarsene}}
=== คำสลับอักษร ===
* {{anagrams|it|a=aailrsv|rivalsa}}
juzgr7elod8rb36kjqutslwvhoqmag4
ไว้
0
33294
5724799
5724769
2026-06-15T21:00:32Z
Alifshinobi
397
/* รากศัพท์ */
5724799
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ ===
{{inh+|th|tai-swe-pro|*waj/aɰꟲ²}}; ร่วมเชื้อสายกับ{{cog|nod|ᩅᩱ᩶,ᩅᩱ᩠᩶ᨿ}}, {{cog|lo|ໄວ້}}, {{cog|khb|ᦺᦞᧉ}}, {{cog|blt|ꪼꪫ꫁}}, {{cog|twh|ꪼꪫꫂ}}, {{cog|shn|ဝႆႉ}}, {{cog|tdd|ᥝᥭᥳ}}, {{cog|aho|𑜈𑜩,𑜚𑜩,𑜉𑜩}}
=== การออกเสียง ===
{{th-pron}}
=== คำกริยา ===
{{th-verb}}
# [[เก็บ]][[เข้า]][[ที่]], [[เอา]]เข้าที่
#: {{ux|th|เอาของไปไว้ที่}}
# [[วาง]]
#: {{ux|th|เอาไว้ตรงนั้นแหละ}}
#: {{ux|th|ไว้ของให้เป็นที่}}
# ให้[[มี]][[อยู่]], ให้[[ดำรง]]อยู่, [[รักษา]]
#: {{ux|th|ไว้จุก}}
#: {{ux|th|ไว้หนวด}}
#: {{ux|th|ไว้ชีวิต}}
#: {{ux|th|ไว้ยศ}}
=== คำอนุภาค ===
{{th-particle}}
# [[บาง]][[ที]][[ใช้]][[ประกอบ]][[ท้าย]][[กริยา]]บาง[[คำ]][[เพื่อ]][[ให้]][[ความหมาย]][[สมบูรณ์]][[หรือ]][[หนักแน่น]][[ยิ่ง]][[ขึ้น]]
#: {{ux|th|เก็บไว้}}
#: {{ux|th|รักษาไว้}}
#: {{ux|th|ปลูกไว้}}
== ภาษาคำเมือง ==
=== การออกเสียง ===
* {{IPA|nod|/waj˦˥/|a=เชียงใหม่}}
=== คำกริยา ===
{{nod-verb}}
# {{lb|nod|สกรรม}} {{alternative form of|nod|ᩅᩱ᩶}}
ftikp3r9h4o156zww2d0a1yucbjz507
ไหว
0
33828
5724865
5724757
2026-06-16T09:34:22Z
Alifshinobi
397
/* รากศัพท์ */
5724865
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ ===
{{inh+|th|tai-pro|*C̥.wajᴬ}}; ร่วมเชื้อสายกับ{{cog|tts|ไหว}}, {{cog|lo|ໄຫວ}}, {{cog|nod|ᩉ᩠ᩅᩱ}}, {{cog|khb|ᦺᦛ}}, {{cog|blt|ꪼꪪ}}, {{cog|shn|ဝႆ}}, {{cog|phk|ဝႝ}}, {{cog|aho|*𑜈𑜩}}, {{cog|zhn|vae}}, {{cog|zzj|vaej}}
=== การออกเสียง ===
{{th-pron|ไหฺว}}
=== คำกริยา ===
{{th-verb|~}}
# [[สั่น]], [[สะเทือน]], [[กระดิก]]
#: {{ux|th|ใบไม้'''ไหว'''}}
==== ลูกคำ ====
{{col|th|เคลื่อนไหว|ชายไหว|ดอกไม้ไหว|แผ่นดินไหว|พริบไหว|มีทองเท่าหนวดกุ้งนอนสะดุ้งจนเรือนไหว|หวั่นไหว|ไหวตัว|ไหวติง|ไหวทัน|ไหวพริบ|ไหว ๆ|อ่อนไหว}}
=== คำกริยาวิเศษณ์ ===
{{th-adv}}
# [[สามารถ]][[ทำ]][[ได้]], [[เป็น]][[ไป]][[ได้]][[ที่]][[จะ]]ทำ
#: {{ux|th|เดิน'''ไหว'''}}
#: {{ux|th|สู้'''ไหว'''}}
#: {{ux|th|กิน'''ไหว'''}}
=== คำคุณศัพท์ ===
{{th-adj|-}}
# {{lb|th|slang}} [[ตกลง]]; [[ดี]]; [[โอเค]]
==== ลูกคำ ====
{{col|th|ไม่หวาดไม่ไหว|ไม่ไหว|ยังไหว|หวาดไหว}}
== ภาษาคำเมือง ==
=== การออกเสียง ===
* {{IPA|nod|/waj˨˦/|a=เชียงใหม่}}
=== คำกริยา ===
{{nod-verb}}
# {{lb|nod|อกรรม}} {{alternative form of|nod|ᩉ᩠ᩅᩱ}}
thnwk3hox1krrwk2dwysiz06rrncpgk
ดาย
0
33884
5724859
1881823
2026-06-16T08:24:22Z
Alifshinobi
397
5724859
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{inh+|th|tai-pro|*ɓlaːjᴬ}}; ร่วมเชื้อสายกับ{{cog|blt|ꪚꪱꪥ}}, {{cog|twh|ꪚꪱꪥ}}, {{cog|zhn|ndai}}, {{cog|zzj|mbyai|tr=บลาย|t=ตัดหญ้า, ถอนหญ้า}}
==== คำกริยา ====
{{th-verb}}
# [[ใช้]][[มีด]][[หรือ]][[จอบ]][[เป็นต้น]][[ถาก]][[ต้น]][[หญ้า]][[เพื่อ]][[ให้]][[เตียน]]
=== รากศัพท์ 2 ===
ร่วมเชื้อสายกับ{{cog|lo|ດາຍ}}, {{cog|nod|ᨯᩣ᩠ᨿ}}, {{cog|kkh|ᨯᩣ᩠ᨿ}}, {{cog|khb|ᦡᦻ}}, {{cog|shn|လၢႆ}}, {{cog|za|ndai}}
==== คำกริยาวิเศษณ์ ====
{{th-adv|-}}
# [[ดะ]][[ไป]], [[ตะลุย]]
#: {{ux|th|กินดาย}}
# [[เพิกเฉย]], [[ไม่]][[เอาใจใส่]]
#: {{ux|th|ดูดาย}}
# [[ทีเดียว]], [[เท่านั้น]]
#: {{ux|th|เดียวดาย}}
#: {{ux|th|เปล่าดาย}}
#: {{ux|th|พู้นมาดาย}} (จารึกสยาม)
# [[ง่าย]]
#: {{ux|th|สะดวกดาย}}
# [[โดด]], [[เดี่ยว]], [[เลย]], [[ถ่าย]][[เดียว]] (มักใช้ในที่สุดประโยค)
1p3pmktf1z7qpnb6xv5sb6w0krfb0s9
สาย
0
34578
5724861
5686327
2026-06-16T09:25:16Z
Alifshinobi
397
/* คำนาม */
5724861
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
ร่วมเชื้อสายกับ{{cog|nod|ᩈᩣ᩠ᨿ}}, {{m|nod|ᨡ᩠ᩅᩣ᩠ᨿ}}, {{cog|lo|ສາຍ}}, {{m|lo|ສວາຍ}}, {{cog|blt|ꪎꪱꪥ}}, {{cog|za|sai}}, {{cog|zzj|svai}}
==== คำนาม ====
{{th-noun}}
# [[เวลา]][[ระหว่าง]][[เช้า]][[กับ]][[เที่ยง]][[ประมาณ]] 9.00 [[น.]] [[ถึง]] 10.00 น.
#: {{ux|th|พอสายก็ออกเดินทาง}}
==== คำกริยาวิเศษณ์ ====
{{th-adv}}
# [[ช้า]][[กว่า]]เวลา[[ที่]][[กำหนด]], [[ล่าช้า]]
#: {{ux|th|มาทำงานสาย}}
# {{lb|th|โดยปริยาย}} [[พ้น]]เวลาที่[[จะ]][[แก้ไข]], [[สุด]]ที่จะแก้ไข[[ได้]]
#: {{ux|th|เรื่องนี้ทำอะไรไม่ได้ สายเกินไปเสียแล้ว}}
=== รากศัพท์ 2 ===
{{inh+|th|tai-pro|*saːjᴬ}}; ร่วมเชื้อสายกับ{{cog|nod|ᩈᩣ᩠ᨿ}}, {{cog|lo|ສາຍ}}, {{cog|khb|ᦉᦻ}}, {{cog|blt|ꪎꪱꪥ}}, {{cog|twh|ꪎꪱꪥ}}, {{cog|tyr|ꪎꪱꪥ}}, {{cog|shn|သၢႆ}}, {{cog|tdd|ᥔᥣᥭᥴ}}, {{cog|aio|ꩬႝ}}, {{cog|phk|ꩬႝ}}, {{cog|aho|𑜏𑜩}}, {{cog|za|sai}}, {{cog|zzj|sai}}
==== คำนาม ====
{{th-noun|*}}
# [[สิ่ง]]ที่[[มี]][[ลักษณะ]][[เป็น]][[เส้น]]เป็น[[แนว]][[ยาว]]
#: {{ux|th|สายสร้อย}}
#: {{ux|th|สายไฟฟ้า}}
#: {{ux|th|สายรุ้ง}}
#: {{ux|th|สายนาฬิกา}}
#: {{ux|th|สายเข็มขัด}}
# [[ทาง]], [[เส้นทาง]]
#: {{ux|th|รถไฟสายเหนือ}}
#: {{ux|th|รถไฟสายใต้}}
# {{lb|th|โดยปริยาย}} สิ่งที่มีลักษณะ[[คล้ายคลึง]][[เช่น]][[นั้น]]
#: {{ux|th|สายการบิน}}
#: {{ux|th|สายการเดินเรือ}}
#: {{ux|th|สายงาน}}
# [[ญาติ]]ที่[[สืบ]][[มา]][[จาก]][[ต้น]][[วงศ์]][[หรือ]]ต้น[[สกุล]][[เดียว]][[กัน]] [[แล้ว]][[แยก]]เป็นสกุล[[ย่อย]][[ออก]][[ไป]]
# {{lb|th|ปาก}} {{clipping of|th|สายลับ}}
#: {{ux|th|ระวังคนใช้เป็นสายให้โจร}}
==== คำลักษณนาม ====
{{th-cls}}
# [[เรียก]]สิ่งที่เป็นแนวหรือเส้นยาว
#: {{ux|th|สายสะพาย 2 สาย}}
#: {{ux|th|ทาง 3 สาย}}
{{topics|th|เวลา}}
l74wvntn9ogfmxb94o2idbdxaid83ma
มอดูล:labels/data
828
37614
5724846
5720954
2026-06-16T04:34:35Z
OctraBot
3198
5724846
Scribunto
text/plain
local labels = {}
-- Grammatical labels
labels["คำย่อ"] = {
aliases = {"abbreviation"},
glossary = true,
pos_categories = "คำย่อ",
}
labels["อาการนาม"] = {
aliases = {"abstract noun"},
display = "อาการนาม",
glossary = true,
pos_categories = "คำอาการนาม",
}
labels["อักษรย่อรวมพยางค์"] = {
aliases = {"acronym"},
glossary = true,
pos_categories = "อักษรย่อรวมพยางค์",
}
labels["กรรตุวาจก"] = {
aliases = {"active", "in the active", "active voice"},
glossary = true,
}
labels["สกรรมและอกรรม"] = {
aliases = {"ambitransitive", "อกรรมและสกรรม"},
glossary = true,
pos_categories = {"คำสกรรมกริยา", "คำอกรรมกริยา"},
}
labels["angry register"] = {
aliases = {"angry", "anger", "said in anger"},
glossary = true,
pos_categories = "angry register terms",
}
labels["มีชีวิต"] = {
aliases = {"animate"},
glossary = true,
}
labels["บอกเล่า"] = {
aliases = {"indicative", "in the indicative", "indicative mood"},
glossary = "มาลาบอกเล่า",
}
labels["สมมุติ"] = {
aliases = {"subjunctive", "in the subjunctive", "subjunctive mood"},
glossary = "มาลาสมมุติ",
}
labels["สั่ง"] = {
aliases = {"imperative", "in the imperative", "imperative mood", "คำสั่ง"},
glossary = "มาลาสั่ง",
}
labels["ขอร้อง"] = {
aliases = {"jussive", "in the jussive", "jussive mood", "ร้องขอ"},
glossary = "มาลาขอร้อง",
}
labels["atelic"] = {
glossary = true,
}
labels["attenuative"] = {
pos_categories = "attenuative verbs",
}
labels["attributive"] = {
glossary = true,
}
labels["attributively"] = {
glossary = "attributive",
}
labels["ช่วย"] = {
aliases = {"auxiliary", "กริยาช่วย", "คำกริยาช่วย", "คำช่วยกริยา", "กริยานุเคราะห์", "คำกริยานุเคราะห์"},
glossary = true,
pos_categories = "คำกริยาช่วย",
}
labels["จำนวนเชิงการนับ"] = {
aliases = {"cardinal", "cardinal number", "เชิงการนับ"},
display = "[[จำนวนเชิงการนับ]]",
pos_categories = "จำนวนเชิงการนับ",
}
labels["catenative"] = {
glossary = "catenative verb",
}
labels["causative"] = {
glossary = true,
}
labels["causative verb"] = {
display = "causative",
glossary = true,
pos_categories = "causative verbs",
}
labels["cognate object"] = {
aliases = {"with cognate object"},
display = "with [[w:Cognate object|cognate object]]",
pos_categories = "verbs used with cognate objects",
}
labels["สมุหนาม"] = {
aliases = {"collective"},
glossary = true,
display = "สมุหนาม",
pos_categories = "คำสมุหนาม",
}
labels["collectively"] = {
glossary = "collective",
display = "สมุหนาม",
pos_categories = "คำสมุหนาม",
}
labels["collective number"] = {
aliases = {"collective numeral"},
display = "[[collective number]]",
pos_categories = "collective numbers",
}
labels["control verb"] = {
aliases = {"control"},
Wikipedia = true,
pos_categories = "control verbs",
}
labels["เพศรวม"] = {
aliases = {"common", "รวม"},
glossary = true,
}
labels["เปรียบเทียบได้"] = {
aliases = {"comparable"},
glossary = true,
}
labels["completive"] = {
pos_categories = "completive verbs",
}
labels["เชื่อม"] = {
aliases = {"copular"},
display = "[[คำกริยาเชื่อม|เชื่อม]]",
pos_categories = "คำกริยาเชื่อม",
}
labels["นับได้"] = {
aliases = {"countable"},
glossary = true,
pos_categories = "คำนามนับได้",
}
labels["cumulative"] = {
pos_categories = "cumulative verbs",
}
labels["delimitative"] = {
pos_categories = "delimitative verbs",
}
labels["deponent"] = {
glossary = true,
pos_categories = "deponent verbs",
}
labels["distributive"] = {
pos_categories = "distributive verbs",
}
labels["distributive number"] = {
aliases = {"distributive numeral"},
display = "[[distributive number]]",
pos_categories = "distributive numbers",
}
labels["ทวิกรรม"] = {
aliases = {"ditransitive", "ทวิกรรมกริยา"},
glossary = true,
pos_categories = "คำทวิกรรมกริยา",
}
labels["dysphemistic"] = {
aliases = {"dysphemism"},
glossary = true,
pos_categories = "dysphemisms",
}
labels["by ellipsis"] = {
aliases = {"ellipsis"},
glossary = "ellipsis",
pos_categories = "ellipses",
}
labels["emphatic"] = {
glossary = true,
}
labels["ergative"] = {
glossary = true,
pos_categories = "ergative verbs",
}
labels["expressive"] = {
glossary = true,
pos_categories = "expressive terms",
}
labels["by extension"] = {
aliases = {"hence"},
}
labels["เพศหญิง"] = {
aliases = {"feminine", "หญิง"},
glossary = true,
}
labels["focus"] = {
glossary = true,
pos_categories = "focus adverbs",
}
labels["fractional"] = {
aliases = {"fractional number", "fractional numeral"},
display = "[[fractional number]]",
pos_categories = "fractional numbers",
}
labels["frequentative"] = {
glossary = true,
pos_categories = "frequentative verbs",
}
labels["hedge"] = {
aliases = {"hedges"},
glossary = true,
pos_categories = "hedges",
}
labels["ideophonic"] = {
aliases = {"ideophone"},
glossary = true,
}
labels["สำนวน"] = {
aliases = {"idiomatic", "idiom", "idiomatically", "สำ"},
glossary = true,
pos_categories = "สำนวน",
}
labels["imperfect"] = {
glossary = true,
}
labels["ไม่สมบูรณ์"] = {
aliases = {"imperfective"},
glossary = true,
pos_categories = "คำกริยาไม่สมบูรณ์",
}
labels["อบุรุษ"] = {
aliases = {"impersonal", "impersonal verbs", "อบุรุษกริยา", "คำอบุรุษกริยา"},
glossary = true,
pos_categories = "คำอบุรุษกริยา",
}
labels["ในรูปเอกพจน์"] = {
aliases = {"in singular", "in the singular"},
display = "ในรูป[[เอกพจน์]]",
}
labels["ในรูปทวิพจน์"] = {
aliases = {"in dual", "in the dual"},
display = "ในรูป[[ทวิพจน์]]",
}
labels["ในรูปพหูพจน์"] = {
aliases = {"in plural"},
display = "ในรูป[[ภาคผนวก:อภิธานศัพท์#พหูพจน์|พหูพจน์]]",
}
labels["ไม่มีชีวิต"] = {
aliases = {"inanimate"},
glossary = true,
}
labels["inchoative"] = {
pos_categories = "inchoative verbs",
}
labels["ไม่ชี้เฉพาะ"] = {
aliases = {"indef", "indefinite"},
glossary = true,
}
labels["อักษรย่อ"] = {
aliases = {"initialism"},
glossary = true,
pos_categories = "อักษรย่อ",
}
labels["intensive verb"] = {
display = "intensive",
pos_categories = "intensive verbs",
}
labels["อกรรม"] = {
aliases = {"intransitive", "อกรรมกริยา"},
glossary = true,
pos_categories = "คำอกรรมกริยา",
}
labels["ไอพีเอ"] = {
aliases = {"IPA", "International Phonetic Alphabet", "สัทอักษรสากล"},
Wikipedia = "สัทอักษรสากล",
plain_categories = "สัญลักษณ์สำหรับสัทอักษรสากล",
}
labels["iterative"] = {
glossary = true,
pos_categories = "iterative verbs",
}
labels["litotes"] = {
aliases = {"litote", "litotic", "litotical"},
glossary = true,
pos_categories = true,
}
labels["เพศชาย"] = {
aliases = {"masculine", "ชาย"},
glossary = true,
}
labels["mediopassive"] = {
aliases = {"in the mediopassive", "in mediopassive"},
glossary = true,
}
labels["meiosis"] = {
aliases = {"meioses", "meiotic"},
glossary = true,
pos_categories = "meioses",
}
labels["middle voice"] = {
aliases = {"middle", "in the middle", "in the middle voice"},
glossary = true,
}
labels["รูปสะกดผิด"] = {
aliases = {"misspelling", "สะกดผิด"},
display = "[[รูปสะกดผิด]]",
}
labels["mnemonic"] = {
display = "[[mnemonic]]",
pos_categories = "mnemonics",
}
labels["modal"] = {
Wikipedia = "Modality (linguistics)",
}
labels["NAPA"] = {
aliases = {"Americanist_phonetic_notation"},
Wikipedia = "Americanist_phonetic_notation",
plain_categories = "NAPA symbols",
}
labels["always in the negative"] = {
glossary = "negative polarity item",
pos_categories = "negative polarity items",
}
labels["chiefly in the negative"] = {
aliases = {"chiefly used in the negative", "negative polarity", "negative polarity item", "usually in the negative", "usually used in the negative"},
glossary = "negative polarity item",
pos_categories = "negative polarity items",
}
labels["chiefly in the negative plural"] = {
aliases = {"chiefly used in the negative plural", "negative polarity plural", "negative polarity plural item", "usually in the negative plural", "usually used in the negative plural"},
display = "chiefly in the [[Appendix:Glossary#negative polarity item|negative]] [[Appendix:Glossary#plural|plural]]",
pos_categories = "negative polarity items",
}
labels["chiefly in the positive"] = {
aliases = {"chiefly used in the positive", "positive polarity", "positive polarity item", "usually in the positive", "usually used in the positive"},
glossary = "positive polarity item",
-- pos_categories = {"positive polarity items"},
}
labels["chiefly in the positive plural"] = {
aliases = {"chiefly used in the positive plural", "positive polarity plural", "positive polarity plural item", "usually in the positive plural", "usually used in the positive plural"},
display = "chiefly in the [[Appendix:Glossary#positive polarity item|positive]] [[Appendix:Glossary#plural|plural]]",
-- pos_categories = "positive polarity items",
}
labels["เพศกลาง"] = {
aliases = {"neuter", "กลาง"},
glossary = true,
}
-- British English ("ise")
labels["nominalised"] = {
aliases = {"nominalisation", "substantivised", "substantivisation"},
glossary = "nominalization",
pos_categories = "nominalized adjectives",
}
-- American English ("ize")
labels["nominalized"] = {
aliases = {"nominalization", "substantivized", "substantivization"},
glossary = "nominalization",
pos_categories = "nominalized adjectives",
}
labels["เปรียบเทียบไม่ได้"] = {
aliases = {"not comparable", "notcomp", "uncomparable"},
glossary = "เปรียบเทียบไม่ได้",
}
labels["เลียนเสียง"] = {
aliases = {"onomatopoeia", "onomatopoeic", "เลียนเสียงธรรมชาติ"},
glossary = true,
pos_categories = "ศัพท์ที่เลียนเสียงธรรมชาติ",
}
labels["เชิงอันดับที่"] = {
aliases = {"ordinal", "ordinal numbers", "จำนวนเชิงอันดับที่"},
display = "[[จำนวนเชิงอันดับที่]]",
pos_categories = "จำนวนเชิงอันดับที่",
}
labels["partitive verb"] = {
display = "[[ภาคผนวก:อภิธานศัพท์#สกรรม|สกรรม]], มักจะ[[ภาคผนวก:คำกริยามีจุดจบและไม่มีจุดจบภาษาฟินนิก|ไม่มีจุดจบ]]",
pos_categories = "คำสกรรมกริยา", -- = "partitive verbs",
}
labels["perfect"] = {
glossary = true,
}
labels["รูปกริยาขยาย"] = {
aliases = {"participle"},
glossary = true,
}
labels["กรรมวาจก"] = {
aliases = {"passive", "in the passive", "passive voice"},
glossary = true,
}
labels["perfect"] = {
glossary = true,
}
labels["สมบูรณ์"] = {
glossary = true,
pos_categories = "คำกริยาสมบูรณ์",
}
labels["พหูพจน์เท่านั้น"] = {
aliases = {"plural only", "pluralonly", "plurale tantum"},
pos_categories = "คำนามพหูพจน์เท่านั้น",
}
labels["possessional adjective"] = {
aliases = {"possessional", "possessional adjectives"},
display = "possessional",
glossary = true,
pos_categories = "possessional adjectives",
}
labels["สรรพนามแสดงความเป็นเจ้าของ"] = {
aliases = {"possessive pronoun", "possessive determiner"},
display = "แสดงความเป็นเจ้าของ",
glossary = "possessive determiner",
pos_categories = "คำสรรพนามแสดงความเป็นเจ้าของ",
}
labels["postpositive"] = {
glossary = true,
}
labels["ภาคแสดง"] = {
aliases = {"predicative"},
glossary = true,
}
labels["predicatively"] = {
glossary = "ภาคแสดง",
}
labels["prescriptive"] = {
aliases = {"normative", "prescribed"},
glossary = true,
}
labels["privative"] = {
pos_categories = "privative verbs",
}
labels["procedure word"] = {
display = "[[procedure word]]",
}
labels["productive"] = {
glossary = true,
}
-- TODO: This label is probably inappropriate for many languages
labels["pronominal"] = {
glossary = "pronominal verb",
}
labels["pro-verb"] = {
Wikipedia = true,
}
labels["reciprocal"] = {
glossary = true,
pos_categories = "reciprocal verbs",
}
labels["สะท้อน"] = {
aliases = {"reflexive", "คำกริยาสะท้อน", "กริยาสะท้อน"},
glossary = true,
pos_categories = "คำกริยาสะท้อน",
}
labels["คำสรรพนามสะท้อน"] = {
aliases = {"reflexive pronoun", "สรรพนามสะท้อน"},
glossary = "สะท้อน",
pos_categories = "คำสรรพนามสะท้อน",
}
labels["สัมพันธ์"] = {
aliases = {"relational adjective", "relational", "คำคุณศัพท์สัมพันธ์", "คุณศัพท์สัมพันธ์"},
glossary = true,
pos_categories = "คำคุณศัพท์สัมพันธ์",
}
labels["repetitive"] = {
pos_categories = "repetitive verbs",
}
labels["respelling"] = {
glossary = true,
}
labels["reversative"] = {
pos_categories = "reversative verbs",
}
labels["rhetorical question"] = {
glossary = true,
pos_categories = "rhetorical questions",
}
labels["saturative"] = {
aliases = {"sative"},
pos_categories = "saturative verbs",
}
labels["semelfactive"] = {
glossary = true,
pos_categories = "semelfactive verbs",
}
labels["sentence adverb"] = {
glossary = true,
pos_categories = "sentence adverbs",
}
labels["set phrase"] = {
display = "[[set phrase]]",
}
labels["simile"] = {
glossary = true,
pos_categories = "similes",
}
labels["เอกพจน์เท่านั้น"] = {
aliases = {"singular only", "singulare tantum", "no plural"},
display = "เอกพจน์เท่านั้น",
pos_categories = "คำนามเอกพจน์เท่านั้น",
}
labels["snowclone"] = {
glossary = true,
pos_categories = "snowclones",
}
labels["สภาว"] = {
aliases = {"stative", "stative verb", "สภาวกริยา"},
glossary = true,
pos_categories = "คำสภาวกริยา",
}
labels["strictly"] = {
aliases = {"strict", "narrowly", "narrow"},
glossary = true,
}
labels["substantive"] = {
glossary = true,
track = true,
}
labels["terminative"] = {
pos_categories = "terminative verbs",
}
labels["สกรรม"] = {
aliases = {"transitive", "สกรรมกริยา"},
glossary = true,
pos_categories = "คำสกรรมกริยา",
}
labels["unaccusative"] = {
Wikipedia = "Unaccusative verb",
}
labels["นับไม่ได้"] = {
aliases = {"uncountable"},
glossary = true,
pos_categories = "คำนามนับไม่ได้",
}
labels["unergative"] = {
Wikipedia = "Unergative verb",
}
labels["UPA"] = {
aliases = {"Uralic Phonetic Alphabet"},
Wikipedia = "Uralic Phonetic Alphabet",
plain_categories = "UPA symbols",
}
labels["usually plural"] = {
aliases = {"usually in the plural", "usually in plural"},
display = "usually in the [[Appendix:Glossary#plural|plural]]",
deprecated = true,
}
-- Usage labels
labels["โฟร์แชน"] = {
aliases = {"4chan", "4chan slang"},
display = "สแลง[[w:โฟร์แชน|โฟร์แชน]]",
pos_categories = "สแลงโฟร์แชน",
}
labels["4chan lgbt"] = {
aliases = {"tttt"},
display = "[[w:4chan|4chan]] /lgbt/ slang",
pos_categories = "4chan /lgbt/ slang",
}
labels["ACG"] = {
display = "[[ACG]]",
-- see also "fandom slang"
pos_categories = "fandom slang",
}
labels["endearing"] = {
aliases = {"affectionate"},
display = "[[endearing]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "endearing terms",
}
labels["pre-classical"] = {
aliases = {"Pre-classical", "pre-Classical", "Pre-Classical", "Preclassical", "preclassical", "ante-classical", "Ante-classical", "ante-Classical", "Ante-Classical", "Anteclassical", "anteclassical"},
display = "pre-Classical",
regional_categories = true,
}
labels["anti-LGBTQ slur"] = {
-- don't add aliases "homophobia" or "transphobia" because these could be topical categories
aliases = {"homophobic", "transphobic"},
display = "anti-[[LGBTQ]] [[slur]]",
pos_categories = "anti-LGBTQ slurs",
}
labels["โบราณ"] = {
aliases = {"archaic", "antiquated", "โบ"},
glossary = true,
sense_categories = true,
}
labels["รูปโบราณ"] = {
aliases = {"archaic form"},
glossary = "โบราณ",
display = "โบราณ",
pos_categories = "รูปโบราณ",
}
labels["Australian slang"] = {
regional_categories = "Australian",
plain_categories = true,
}
labels["avoidance"] = {
glossary = true,
}
labels["back slang"] = {
aliases = {"backslang", "back-slang"},
glossary = "backslang",
pos_categories = true,
}
labels["Bargoens"] = {
Wikipedia = true,
plain_categories = true,
}
labels["Braille"] = {
Wikipedia = true,
}
labels["British slang"] = {
aliases = {"UK slang"},
plain_categories = true,
}
labels["Cambridge University slang"] = {
aliases = {"University of Cambridge slang", "Cantab slang"},
display = "[[w:University of Cambridge|Cambridge University]] [[slang]]",
topical_categories = "Universities",
plain_categories = true,
}
labels["cant"] = {
aliases = {"argot", "cryptolect"},
display = "[[cant]]",
pos_categories = true,
}
labels["capitalized"] = {
aliases = {"capitalised"},
display = "[[capitalisation|capitalized]]",
}
labels["Castilianism"] = {
aliases = {"Hispanicism"},
display = "[[Castilianism]]",
}
labels["ภาษาเด็ก"] = {
aliases = {"childish", "baby talk", "child language", "infantile", "เด็ก"},
display = "[[ภาษาเด็ก]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "ศัพท์ที่เป็นภาษาเด็ก",
}
labels["chu Nom"] = {
display = "[[Vietnamese]] [[chữ Nôm]]",
plain_categories = "Vietnamese Han tu",
}
labels["Cockney rhyming slang"] = {
display = "[[Cockney rhyming slang]]",
plain_categories = true,
}
labels["ภาษาปาก"] = {
aliases = {"colloquial", "colloquially", "ภาษาพูด", "ปาก", "พูด"},
glossary = true,
pos_categories = "ศัพท์ที่เป็นภาษาปาก",
}
-- FIXME! The following two are apparently for Persian but probably don't belong in this file.
labels["colloquial-um"] = {
glossary = "ภาษาปาก",
pos_categories = "colloquialisms containing sequence um",
}
labels["colloquial-un"] = {
glossary = "ภาษาปาก",
pos_categories = "colloquialisms containing sequence un",
}
labels["corporate jargon"] = {
aliases = {"business jargon", "corporatese", "businessese", "corporate speak", "business speak"},
display = "[[corporate]] [[jargon]]",
pos_categories = true,
}
labels["costermongers"] = {
aliases = {"coster", "costers", "costermonger", "costermongers back slang", "costermongers' back slang"},
display = "[[Appendix:Costermongers' back slang|costermongers]]",
plain_categories = "Costermongers' back slang",
}
labels["criminal slang"] = {
aliases = {"thieves' cant", "Thieves' Cant", "thieves cant", "thieves'", "thieves", "thieves' cant"}, -- Thieves' Cant is English-only, so defined in the English submodule; if other languages try to use it, it's just criminal slang
display = "[[criminal]] [[slang]]",
topical_categories = "Crime",
pos_categories = true,
}
labels["ล้าสมัย"] = {
aliases = {"dated", "old-fashioned", "ล้า"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ล้าสมัย",
}
labels["dated form"] = {
glossary = "dated",
pos_categories = "dated forms",
}
-- combine with previous?
labels["นัยล้าสมัย"] = {
aliases = {"dated sense", "นัยล้า"},
glossary = "dated",
sense_categories = "ล้าสมัย",
}
labels["ดูหมิ่น"] = {
aliases = {"derogatory", "pejorative", "derogative", "disparaging", "หมิ่น", "ดูถูก", "หมิ่นประมาท"},
display = "[[ดูหมิ่น]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ดูหมิ่น",
}
--[=[ merged down
labels["dialect"] = {-- separated from "dialectal" so e.g. "obsolete|outside|the|_|dialect|of..." displays right
glossary = "ภาษาถิ่น",
pos_categories = {"ศัพท์ที่เป็นภาษาถิ่น"},
}
--]=]
labels["ภาษาถิ่น"] = {
aliases = {"dialect", "dialects", "dialectal", "ถิ่น", "เฉพาะถิ่น", "ภาษาเฉพาะถิ่น"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่เป็นภาษาถิ่น",
}
--[=[ merged up
labels["dialects"] = {-- separated from "dialectal" so e.g. "obsolete|outside|dialects" displays right
glossary = "ภาษาถิ่น",
pos_categories = {"ศัพท์ที่เป็นภาษาถิ่น"},
}
--]=]
labels["dis legomenon"] = {
display = "[[dis legomenon]]",
pos_categories = "dis legomena",
}
labels["dismissal"] = {
display = "[[dismissal]]",
pos_categories = "dismissals",
}
labels["drag slang"] = {
aliases = {"Drag Race slang"},
display = "[[drag]] [[slang]]",
pos_categories = "drag slang",
}
labels["solemn"] = {
glossary = true,
pos_categories = "solemn terms",
}
labels["ecclesiastical"] = {
pos_categories = "ecclesiastical terms",
}
labels["ethnic slur"] = {
aliases = {"racial slur"},
display = "[[ethnic]] [[slur]]",
pos_categories = "ethnic slurs",
}
labels["เสาวพจน์"] = {
aliases = {"รื่นหู", "นุ่มนวล", "สละสลวย", "euphemistic", "euphemism"},
glossary = "เสาวพจน์",
pos_categories = "เสาวพจน์",
}
labels["eye dialect"] = {
display = "[[eye dialect]]",
pos_categories = true,
}
labels["familiar"] = {
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "familiar terms",
}
labels["fandom slang"] = {
aliases = {"fandom"},
display = "[[fandom]] [[slang]]",
pos_categories = true,
}
--[=[ merged down
labels["figurative"] = {
aliases = {"metaphorical", "metaphoric", "metaphor"},
glossary = "ในเชิงเปรียบเทียบ",
}
--]=]
labels["ในเชิงเปรียบเทียบ"] = {
aliases = {"metaphorically", "metaphorical", "metaphoric", "metaphor", "figuratively", "figurative", "ภาพพจน์", "เปรียบเทียบ", "อุปมาอุปไมย", "อุปลักษณ์", "โดยปริยาย"},
glossary = "ในเชิงเปรียบเทียบ",
}
labels["folk poetic"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = {"folk poetic terms", "poetic terms"},
}
labels["ทางการ"] = {
aliases = {"formal", "เป็นทางการ"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "ศัพท์ที่เป็นทางการ",
}
labels["gay slang"] = {
display = "[[gay]] [[slang]]",
pos_categories = true,
}
labels["gender critical slang"] = {
aliases = {"gender-critical slang", "GC slang", "TERF slang"},
display = "[[gender-critical]] [[slang]]",
pos_categories = "gender-critical slang",
}
labels["ไม่ระบุเพศ"] = {
aliases = {"gender-neutral"},
glossary = "ไม่ระบุเพศ",
pos_categories = "ศัพท์ที่ไม่ระบุเพศ",
}
labels["genericized trademark"] = {
aliases = {"generic trademark", "proprietary eponym"},
display = "[[genericized trademark]]",
pos_categories = "genericized trademarks",
}
labels["ghost word"] = {
aliases = {"ghost"},
display = "ghost word",
glossary = true,
pos_categories = "ghost words",
}
labels["hapax legomenon"] = {
aliases = {"hapax"},
display = "hapax legomenon",
glossary = true,
pos_categories = "hapax legomena",
}
labels["higher register"] = {
aliases = {"high register", "elevated register", "elevated"},
glossary = "higher register",
pos_categories = "higher register terms",
}
labels["historical"] = {
aliases = {"historic"},
glossary = true,
sense_categories = true,
}
labels["non-native speakers"] = {-- language-agnostic version
aliases = {"NNS"},
display = "[[non-native speaker]]s", -- so preceded by "used by", "error by children and", etc? or reword?
regional_categories = {"Non-native speakers'"},
}
labels["non-native speakers' English"] = {
aliases = {"NNES", "NNSE"},
display = "[[non-native speaker]]s' English",
regional_categories = "Non-native speakers'",
}
-- used exclusively by languages that use the "Jpan" script code
labels["historical hiragana"] = {
pos_categories = true,
}
-- used exclusively by languages that use the "Jpan" script code
labels["historical katakana"] = {
pos_categories = true,
}
-- applies to Japanese and Korean, etc., please do not confuse with "polite"
labels["honorific"] = {
Wikipedia = "Honorifics (linguistics)",
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "honorific terms",
}
-- for Ancient Greek
labels["Homeric epithet"] = {
display = "[[Homeric Greek|Homeric]] [[w:Epithets in Homer|epithet]]",
omit_postComma = true,
plain_categories = "Epic Greek",
}
-- applies to Japanese and Korean, etc.
labels["humble"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
display = "[[humble]]",
pos_categories = "humble terms",
}
-- for Akkadian
labels["in hendiadys"] = {
aliases = {"hendiadys"},
pos_categories = "hendiadys",
}
labels["ขำขัน"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp; NB and cf a similar "jocular" label further up on this page
aliases = {"humorous", "humorously", "jocular", "ตลก"},
display = "[[ขำขัน]]",
pos_categories = "ศัพท์ที่ขำขัน",
}
labels["อติพจน์"] = {
aliases = {"hyperbolic", "hyperbole", "เกินจริง"},
glossary = true,
pos_categories = "อติพจน์",
}
labels["แก้ไขเกินเหตุ"] = {
aliases = {"hypercorrect", "hypercorrections", "การแก้ไขเกินเหตุ"},
glossary = true,
pos_categories = "ศัพท์ที่แก้ไขเกินเหตุ",
}
labels["hyperforeign"] = {
glossary = true,
pos_categories = "hyperforeign terms",
}
labels["imperial"] = {
aliases = {"emperor", "empress"},
pos_categories = "royal terms",
}
labels["incel slang"] = {
display = "[[incel]] [[slang]]",
pos_categories = true,
}
labels["ไม่ทางการ"] = {
aliases = {"informal", "informally", "ไม่เป็นทางการ"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ไม่เป็นทางการ",
}
labels["สแลงอินเทอร์เน็ต"] = {
aliases = {"Internet slang", "internet slang"},
display = "[[สแลง]][[อินเทอร์เน็ต]]",
pos_categories = "สแลงอินเทอร์เน็ต",
}
labels["ไออาร์ซี"] = {
aliases = {"IRC"},
display = "[[ไออาร์ซี]]",
pos_categories = "สแลงอินเทอร์เน็ต",
}
labels["ironic"] = {
display = "[[irony|ironic]]",
}
-- Not the same as "journalism", which maps to a topical category (e.g. [[:Category:en:Journalism]], instead of [[:Category:English journalistic terms]]).
labels["ภาษาข่าว"] = {
aliases = {"journalese", "journalistic"},
display = "[[ภาษาข่าว]]",
pos_categories = "ศัพท์ที่เป็นภาษาข่าว",
}
labels["leet"] = {
aliases = {"leetspeak"},
display = "[[leetspeak]]",
pos_categories = true,
}
labels["LGBTQ slang"] = {
aliases = {"LGBT slang"},
display = "[[LGBTQ]] [[slang]]",
pos_categories = true,
}
labels["literal"] = {
glossary = "literally",
}
labels["literally"] = {
glossary = "literally",
}
labels["ภาษาหนังสือ"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp
aliases = {"literary", "bookish", "ภาษาเขียน", "ภาษาแบบแผน", "หนังสือ", "เขียน", "แบบแผน", "แบบ"},
glossary = true,
pos_categories = "ศัพท์ที่เป็นภาษาหนังสือ",
}
labels["loosely"] = {
aliases = {"loose", "broadly", "broad"},
glossary = true,
}
labels["Lubunyaca"] = {
display = "[[Lubunyaca]]",
pos_categories = true,
}
labels["medical slang"] = {
display = "[[medical]] [[slang]]",
pos_categories = true,
}
-- for Awetí, Karajá, etc., where men and women use different words
labels["men's speech"] = {
aliases = {"male speech"},
glossary = "men's speech",
pos_categories = "men's speech terms",
}
labels["metonymically"] = {
aliases = {"metonymic", "metonymy", "metonym"},
glossary = true,
pos_categories = "metonyms",
}
labels["military slang"] = {
display = "[[military]] [[slang]]",
pos_categories = true,
}
labels["คำสบถแปลง"] = {
aliases = {"minced oath"},
display = "[[คำสบถแปลง]]",
pos_categories = "คำสบถแปลง",
}
labels["multiplicative"] = {
aliases = {"multiplicative number", "multiplicative numeral"},
display = "[[multiplicative number]]",
pos_categories = "multiplicative numbers",
}
labels["multiplicity slang"] = {
display = "{{l|en|multiplicity|id=multiple personalities}} [[slang]]",
pos_categories = true,
}
labels["nativising coinage"] = {
display = "[[w:Linguistic purism in Korean|nativising coinage]]",
pos_categories = "nativising coinages",
}
labels["naval slang"] = {
aliases = {"navy slang"},
display = "[[naval]] [[slang]]",
pos_categories = true,
}
labels["นวศัพท์"] = {
aliases = {"neologism", "neologistic", "ศัพท์ใหม่"},
glossary = true,
pos_categories = "นวศัพท์",
}
labels["neopronoun"] = {
display = "[[neopronoun]]",
-- pos_categories = {"neopronouns"},
}
labels["no longer productive"] = {
display = "no longer [[Appendix:Glossary#productive|productive]]",
}
labels["nonce word"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
aliases = {"nonce"},
glossary = true,
pos_categories = "nonce terms",
}
labels["ภาษาไม่มาตรฐาน"] = {
aliases = {"non-standard", "nonstandard", "substandard", "sub-standard", "ไม่มาตรฐาน"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่เป็นภาษาไม่มาตรฐาน",
}
labels["nonstandard form"] = {
aliases = {"non-standard form", "substandard form", "sub-standard form"},
glossary = "nonstandard",
pos_categories = "nonstandard forms",
}
labels["เลิกใช้"] = {
aliases = {"obsolete", "เลิก"},
glossary = true,
sense_categories = true,
}
labels["obsolete term"] = {
glossary = "obsolete",
-- combine with previous two, q.v.
pos_categories = "obsolete terms",
}
labels["ล่วงเกิน"] = {
aliases = {"offensive", "ล่วงละเมิด", "โจมตี", "รุกราน", "ก้าวร้าว"},
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp
pos_categories = "ศัพท์ที่ล่วงเกิน",
}
labels["officialese"] = {
aliases = {"bureaucratic"},
display = "[[officialese]]",
pos_categories = "officialese terms",
}
labels["OpenStreetMap"] = {
aliases = {"osm", "OSM"},
Wikipedia = true,
pos_categories = "OpenStreetMap jargon",
}
labels["Oxbridge slang"] = {
display = "[[w:Oxbridge|Oxbridge]] [[slang]]",
topical_categories = "Universities",
plain_categories = {"Cambridge University slang", "Oxford University slang"},
}
labels["Oxford University slang"] = {
aliases = {"University of Oxford slang", "Oxon slang"},
display = "[[w:University of Oxford|Oxford University]] [[slang]]",
topical_categories = "Universities",
plain_categories = true,
}
labels["ร้อยกรอง"] = {
aliases = {"poi"}, -- Only used in Ancient Greek as a holdover from [[Module:grc:Dialects]].
-- should be "terms with X senses", leaving "X terms" to the term-context temp
aliases = {"poetic", "กลอน", "กวี"},
glossary = true,
pos_categories = "ศัพท์ที่ใช้ในบทร้อยกรอง",
}
labels["สุภาพ"] = {
aliases = {"polite"},
pos_categories = "ศัพท์ที่สุภาพ",
}
labels["post-classical"] = {
aliases = {"Post-classical", "post-Classical", "Post-Classical", "Postclassical", "postclassical"},
display = "post-Classical",
regional_categories = true,
}
labels["prison slang"] = {
display = "[[prison]] [[slang]]",
pos_categories = true,
}
labels["ไม่ควรใช้"] = {
aliases = {"proscribed", "ห้ามใช้", "ต้องห้าม"},
glossary = true,
pos_categories = "ศัพท์ที่ไม่ควรใช้",
}
labels["puristic"] = {
aliases = {"purism"},
Wikipedia = "Linguistic purism",
pos_categories = "puristic terms",
}
labels["radio slang"] = {
display = "[[radio]] [[slang]]",
pos_categories = true,
}
labels["Reddit slang"] = {
display = "[[Reddit]] [[slang]]",
pos_categories = true,
}
labels["พบได้ยาก"] = {
aliases = {"rare", "rare sense", "พบยาก", "พบน้อย", "พบได้น้อย", "หายาก", "ใช้ไม่บ่อย"},
glossary = true,
sense_categories = true,
}
labels["rare term"] = {
display = "rare",
-- see comments about "obsolete"
pos_categories = "rare terms",
}
-- cf Cockney rhyming slang
labels["rhyming slang"] = {
display = "[[rhyming slang]]",
pos_categories = true,
}
labels["religious slur"] = {
aliases = {"sectarian slur"},
display = "[[religious]] [[slur]]",
pos_categories = "religious slurs",
}
labels["นิวัตนาม"] = {
aliases = {"retronym", "retro"},
glossary = true,
pos_categories = "คำนิวัตนาม",
}
labels["reverential"] = {
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
display = "[[reverential]]",
pos_categories = "reverential terms",
}
labels["ราชาศัพท์"] = {
aliases = {"regal", "royal"},
pos_categories = "ราชาศัพท์",
}
labels["rustic"] = {
glossary = true,
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
aliases = {"rural"},
pos_categories = "rustic terms",
}
labels["เสียดสี"] = {
aliases = {"ประชด", "ประชดประชัน", "เหน็บแนม", "sarcastic", "sarcasm"},
display = "[[เสียดสี]]",
pos_categories = "ศัพท์ที่เสียดสี",
}
labels["school slang"] = {
aliases = {"public school slang"},
display = "[[school]] [[slang]]",
pos_categories = true,
}
labels["self-deprecatory"] = {
aliases = {"self-deprecating"},
display = "[[self-deprecatory]]",
-- should be "terms with X senses", leaving "X terms" to the term-context temp?
pos_categories = "self-deprecatory terms",
}
-- Swahili Sheng cant / argot
-- should this be in a language-specific module?
labels["Sheng"] = {
Wikipedia = "Sheng slang",
plain_categories = true,
}
labels["siglum"] = {
aliases = {"sigla"},
glossary = true,
pos_categories = "sigla",
}
labels["สแลง"] = {
aliases = {"slang"},
glossary = true,
pos_categories = true,
}
labels["university slang"] = {
aliases = {"college slang", "student slang"},
display = "[[university]] [[slang]]",
topical_categories = "Universities",
pos_categories = "student slang",
}
labels["Stenoscript"] = {
aliases = {"stenoscript"},
display = "[[Stenoscript]]",
pos_categories = "Stenoscript abbreviations",
}
labels["superseded"] = {
glossary = true
}
labels["swear word"] = {
aliases = {"profanity", "expletive"},
pos_categories = "swear words",
}
labels["syncopated"] = {
aliases = {"syncope", "syncopic", "syncopation"},
glossary = true,
pos_categories = "syncopic forms",
}
labels["synecdochically"] = {
aliases = {"synecdochic", "synecdochical", "synecdoche"},
glossary = true,
pos_categories = "synecdoches",
}
labels["ศัพท์เฉพาะ"] = {
aliases = {"technical"},
display = "[[ศัพท์เฉพาะ]]",
pos_categories = "ศัพท์เฉพาะ",
}
labels["telic"] = {
glossary = true,
}
labels["text messaging"] = {
aliases = {"texting"},
display = "[[text messaging]]",
pos_categories = "text messaging slang",
}
labels["tone indicator"] = {
display = "[[tone indicator]]",
pos_categories = "tone indicators",
}
labels["เครื่องหมายการค้า"] = {
aliases = {"trademark", "ยี่ห้อ"},
display = "[[เครื่องหมายการค้า]]",
pos_categories = true,
}
labels["transferred sense"] = {
glossary = true,
pos_categories = "terms with transferred senses",
}
labels["transferred senses"] = {
display = "[[transferred sense#English|transferred senses]]",
pos_categories = "terms with transferred senses",
}
labels["transgender slang"] = {
aliases = {"trans slang"},
display = "[[transgender]] [[slang]]",
pos_categories = true,
}
labels["Twitch-speak"] = {
display = "[[Twitch-speak]]",
pos_categories = true,
}
labels["uds."] = {
display = "[[Appendix:Spanish pronouns#Ustedes and vosotros|used formally in Spain]]",
}
labels["uncommon"] = {
glossary = true,
sense_categories = true,
}
labels["used only in songs"] = {
aliases = {"only used in songs", "songs"},
pos_categories = "terms used only in songs",
display = "used only in [[song]]s",
}
labels["used only in tales"] = {
aliases = {"only used in tales", "tales"},
pos_categories = "terms used only in tales",
display = "used only in [[tale]]s",
}
labels["verlan"] = {
glossary = true,
plain_categories = true,
}
labels["very rare"] = {
display = "very [[Appendix:Glossary#rare|rare]]",
sense_categories = "rare",
}
labels["หยาบคาย"] = {
aliases = {"vulgar", "coarse", "obscene", "profane", "หยาบ", "ไม่สุภาพ"},
glossary = true,
pos_categories = "ศัพท์ที่หยาบคาย",
}
labels["vesre"] = {
Wikipedia = true,
plain_categories = true,
}
labels["youth slang"] = {
display = "[[youth]] [[slang]]",
pos_categories = "slang",
}
labels["2channel slang"] = {
aliases = {"2channel", "2ch slang"},
display ="[[w:2channel|2channel]] [[slang]]",
pos_categories = {"สแลงอินเทอร์เน็ต" , "2channel slang"},
}
-- for Awetí, Karajá, etc., where men & women use different words
labels["women's speech"] = {
aliases = {"female speech"},
glossary = "women's speech",
pos_categories = "women's speech terms",
}
-- terms applying to Old Norse skaldic poetry
labels["kenning"] = {
aliases = {"Kenning"},
Wikipedia = "Kenning",
pos_categories = "kennings",
}
labels["heiti"] = {
aliases = {"Heiti"},
Wikipedia = "Heiti",
pos_categories = true,
}
return require("Module:labels").finalize_data(labels)
4ric3o4e78g5xsbtr6fg6ljbga8swr2
เน็ต
0
50258
5724820
4756629
2026-06-16T02:17:35Z
OctraBot
3198
/* ภาษาไทย */
5724820
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ 1 ===
{{bor+|th|en|net||ตาข่าย}}
==== การออกเสียง ====
{{th-pron|เน็ด}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|กีฬา}} [[ตาข่าย]] (โดยเฉพาะสำหรับกีฬา)
=== รากศัพท์ 2 ===
{{clipping|th|อินเทอร์เน็ต}}, จาก{{der|th|en|Internet}}
==== การออกเสียง ====
{{th-pron|เหฺน็ด}}
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ปาก}} {{synonym of|th|อินเทอร์เน็ต}}
{{topics|th|อินเทอร์เน็ต}}
fq7atp7plf1vhlrt2wmnv2ll8uhlpuw
5724821
5724820
2026-06-16T02:18:04Z
OctraBot
3198
/* คำนาม */
5724821
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ 1 ===
{{bor+|th|en|net||ตาข่าย}}
==== การออกเสียง ====
{{th-pron|เน็ด}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|ปาก|กีฬา}} [[ตาข่าย]]
=== รากศัพท์ 2 ===
{{clipping|th|อินเทอร์เน็ต}}, จาก{{der|th|en|Internet}}
==== การออกเสียง ====
{{th-pron|เหฺน็ด}}
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ปาก}} {{synonym of|th|อินเทอร์เน็ต}}
{{topics|th|อินเทอร์เน็ต}}
9dkcj5g9v3buh7t0yilqidwuvkx0jm7
5724822
5724821
2026-06-16T02:23:04Z
OctraBot
3198
5724822
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
==== การออกเสียง ====
{{th-pron|เน็ด:สำหรับรากศัพท์ 1|เหฺน็ด:สำหรับรากศัพท์ 2}}
=== รากศัพท์ 1 ===
{{bor+|th|en|net||ตาข่าย}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|ปาก|กีฬา}} [[ตาข่าย]]
=== รากศัพท์ 2 ===
{{clipping|th|อินเทอร์เน็ต}}, จาก{{der|th|en|Internet}}
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ปาก}} {{synonym of|th|อินเทอร์เน็ต}}
{{topics|th|อินเทอร์เน็ต}}
hz9szv7vebonx7vwgvjpo6h0k0n6uit
5724823
5724822
2026-06-16T02:23:45Z
OctraBot
3198
/* การออกเสียง */
5724823
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|เน็ด:สำหรับรากศัพท์ 1|เหฺน็ด:สำหรับรากศัพท์ 2}}
=== รากศัพท์ 1 ===
{{bor+|th|en|net||ตาข่าย}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|ปาก|กีฬา}} [[ตาข่าย]]
=== รากศัพท์ 2 ===
{{clipping|th|อินเทอร์เน็ต}}, จาก{{der|th|en|Internet}}
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ปาก}} {{synonym of|th|อินเทอร์เน็ต}}
{{topics|th|อินเทอร์เน็ต}}
3wg5usrt45nj635b9hq9l7ywv6n2ema
5724824
5724823
2026-06-16T02:31:25Z
OctraBot
3198
/* คำนาม */
5724824
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|เน็ด:สำหรับรากศัพท์ 1|เหฺน็ด:สำหรับรากศัพท์ 2}}
=== รากศัพท์ 1 ===
{{bor+|th|en|net||ตาข่าย}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|ปาก|กีฬา}} [[ตาข่าย]]
# {{lb|th|ปาก|เศรษฐศาสตร์}} [[ปริมาณ]][[สุทธิ]] เช่น [[รายได้]]สุทธิ [[กำไร]]สุทธิ [[น้ำหนัก]]สุทธิ
=== รากศัพท์ 2 ===
{{clipping|th|อินเทอร์เน็ต}}, จาก{{der|th|en|Internet}}
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ปาก}} {{synonym of|th|อินเทอร์เน็ต}}
{{topics|th|อินเทอร์เน็ต}}
tg4yegbu1lx22a8895bt7ttz5lqlyzb
5724825
5724824
2026-06-16T02:34:17Z
OctraBot
3198
/* รากศัพท์ 1 */
5724825
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|เน็ด:สำหรับรากศัพท์ 1|เหฺน็ด:สำหรับรากศัพท์ 2}}
=== รากศัพท์ 1 ===
{{bor+|th|en|net||ตาข่าย; สุทธิ, ปริมาณสุทธิ}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|ปาก|กีฬา}} [[ตาข่าย]]
# {{lb|th|ปาก|เศรษฐศาสตร์}} [[ปริมาณ]][[สุทธิ]] เช่น [[รายได้]]สุทธิ [[กำไร]]สุทธิ [[น้ำหนัก]]สุทธิ
=== รากศัพท์ 2 ===
{{clipping|th|อินเทอร์เน็ต}}, จาก{{der|th|en|Internet}}
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ปาก}} {{synonym of|th|อินเทอร์เน็ต}}
{{topics|th|อินเทอร์เน็ต}}
o5uqjf5bk98ly1f2itq9edt133shh98
5724826
5724825
2026-06-16T02:37:35Z
OctraBot
3198
/* คำนาม */
5724826
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|เน็ด:สำหรับรากศัพท์ 1|เหฺน็ด:สำหรับรากศัพท์ 2}}
=== รากศัพท์ 1 ===
{{bor+|th|en|net||ตาข่าย; สุทธิ, ปริมาณสุทธิ}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|ปาก|กีฬา}} [[ตาข่าย]] {{gl|ที่แบ่งครึ่งสนาม}}
# {{lb|th|ปาก|เศรษฐศาสตร์}} [[ปริมาณ]][[สุทธิ]] เช่น [[รายได้]]สุทธิ [[กำไร]]สุทธิ [[น้ำหนัก]]สุทธิ
=== รากศัพท์ 2 ===
{{clipping|th|อินเทอร์เน็ต}}, จาก{{der|th|en|Internet}}
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ปาก}} {{synonym of|th|อินเทอร์เน็ต}}
{{topics|th|อินเทอร์เน็ต}}
m535ig5463w6vclw6hxzppf0zk2h7wj
5724830
5724826
2026-06-16T03:05:01Z
OctraBot
3198
/* คำนาม */
5724830
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|เน็ด:สำหรับรากศัพท์ 1|เหฺน็ด:สำหรับรากศัพท์ 2}}
=== รากศัพท์ 1 ===
{{bor+|th|en|net||ตาข่าย; สุทธิ, ปริมาณสุทธิ}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|ปาก|กีฬา}} [[ตาข่าย]] {{gl|ที่แบ่งครึ่งสนาม}}
# {{lb|th|ปาก}} [[ปริมาณ]][[สุทธิ]] เช่น [[รายได้]]สุทธิ [[กำไร]]สุทธิ [[น้ำหนัก]]สุทธิ
=== รากศัพท์ 2 ===
{{clipping|th|อินเทอร์เน็ต}}, จาก{{der|th|en|Internet}}
==== คำวิสามานยนาม ====
{{th-proper noun}}
# {{lb|th|ปาก}} {{synonym of|th|อินเทอร์เน็ต}}
{{topics|th|อินเทอร์เน็ต}}
cks29x697lcx138w22l3ztsjmh893j1
คาว
0
50486
5724796
5724785
2026-06-15T16:49:48Z
Alifshinobi
397
/* คำนาม */
5724796
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รูปแบบอื่น ===
* {{q|เลิกใช้}} [[ฅาว]]
=== รากศัพท์ ===
{{inh+|th|tai-pro|*ɣaːwᴬ}}; ร่วมเชื้อสายกับ{{cog|lo|ຄາວ}}, {{cog|nod|ᨤᩣ᩠ᩅ}}, {{cog|khb|ᦆᦱᧁ}}, {{cog|shn|ၶႅဝ်း}}, {{cog|tdd|ᥑᥦᥝᥰ}} หรือ {{m|tdd|ᥔᥦᥝᥰ}}, {{cog|skb|กฺ๊าว}}; เทียบ{{cog|qfa-lic-pro|*kʰaːw}}
=== การออกเสียง ===
{{th-pron}}
=== คำนาม ===
{{th-noun}}
# [[กลิ่น]][[เหม็น]][[อย่าง]][[หนึ่ง]]อย่างกลิ่น[[ปลา]][[สด]][[เนื้อ]]สด
# {{lb|th|โดยปริยาย}} [[ความเสื่อมเสีย]] [[ความมัวหมอง]] [[มลทิน]]
#: {{ux|th|ราคีคาว}}
#: {{ux|th|คนนั้นยังมีคาว}}
# [[เรียก]][[กับข้าว]][[ว่า]] [[ของคาว]], [[คู่]][[กับ]] [[ขนม]] ว่า [[ของหวาน]]
== ภาษาเขมรเหนือ ==
=== รากศัพท์ ===
{{bor+|kxm|th|ข่าว}}
=== การออกเสียง ===
* {{IPA|kxm|/kʰaːw/}}
=== คำนาม ===
{{kxm-noun}}
# [[ข่าว]]
s9im7sdrqkez3crhv09kq13qiux6nta
5724858
5724796
2026-06-16T05:41:17Z
OctraBot
3198
/* รูปแบบอื่น */
5724858
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รูปแบบอื่น ===
* {{alt|th|ฅาว||เลิกใช้}}
=== รากศัพท์ ===
{{inh+|th|tai-pro|*ɣaːwᴬ}}; ร่วมเชื้อสายกับ{{cog|lo|ຄາວ}}, {{cog|nod|ᨤᩣ᩠ᩅ}}, {{cog|khb|ᦆᦱᧁ}}, {{cog|shn|ၶႅဝ်း}}, {{cog|tdd|ᥑᥦᥝᥰ}} หรือ {{m|tdd|ᥔᥦᥝᥰ}}, {{cog|skb|กฺ๊าว}}; เทียบ{{cog|qfa-lic-pro|*kʰaːw}}
=== การออกเสียง ===
{{th-pron}}
=== คำนาม ===
{{th-noun}}
# [[กลิ่น]][[เหม็น]][[อย่าง]][[หนึ่ง]]อย่างกลิ่น[[ปลา]][[สด]][[เนื้อ]]สด
# {{lb|th|โดยปริยาย}} [[ความเสื่อมเสีย]] [[ความมัวหมอง]] [[มลทิน]]
#: {{ux|th|ราคีคาว}}
#: {{ux|th|คนนั้นยังมีคาว}}
# [[เรียก]][[กับข้าว]][[ว่า]] [[ของคาว]], [[คู่]][[กับ]] [[ขนม]] ว่า [[ของหวาน]]
== ภาษาเขมรเหนือ ==
=== รากศัพท์ ===
{{bor+|kxm|th|ข่าว}}
=== การออกเสียง ===
* {{IPA|kxm|/kʰaːw/}}
=== คำนาม ===
{{kxm-noun}}
# [[ข่าว]]
jhtoplc16jpwwnuvcuehwa1cvwdgvwh
มอดูล:category tree/สมบัติเชิงบริบท
828
50719
5724849
5713288
2026-06-16T04:42:30Z
OctraBot
3198
5724849
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local string_utilities_module = "Module:string utilities"
local ucfirst = require(string_utilities_module).ucfirst
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["ศัพท์แบ่งตามการใช้"] = {
description = "{{{langname}}} terms categorized by the manner and context in which they are used by speakers.",
umbrella_parents = "มูลฐาน",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by usage"] = labels["ศัพท์แบ่งตามการใช้"]
local function generate_category_with_senses(typ, desc, distinguish, other_types_in_group)
if distinguish then
distinguish = "\n\n" .. distinguish
else
distinguish = ""
end
local function make_preceding(pos)
if not other_types_in_group then
return nil
end
local cats = {}
for _, other_type in ipairs(other_types_in_group) do
local poscat = require("Module:th-utilities").th_categorize(pos, "{{{langcat}}}") --th
table.insert(cats, ("หมวดหมู่:" .. poscat):format(other_type))
end
return ("{{also|%s}}"):format(table.concat(cats, "|"))
end
local function make_umbrella_preceding(pos)
if not other_types_in_group then
return nil
end
local cats = {}
for _, other_type in ipairs(other_types_in_group) do
table.insert(cats, "หมวดหมู่:" .. ucfirst((pos .. "แบ่งตามภาษา"):format(other_type)))
end
return ("{{also|%s}}"):format(table.concat(cats, "|"))
end
labels[("ศัพท์%s"):format(typ)] = { -- out of ศัพท์ภาษาXที่...
description = ("{{{langname}}} terms that %s."):format(desc),
additional = ("To categorize into this category, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), " ..
"which should typically be placed next to the headword.\n\nIf the term is merely a variant (alternative form) of a term " ..
"in general use, it should be categorized instead in {{cl|{{{langname}}} %s forms}} (using " ..
"{{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}). If only some senses of the term are %s, " ..
"it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, using {{tl|lb|{{{langcode}}}|%s}} " ..
"(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")),
parents = {"ศัพท์แบ่งตามการใช้"},
preceding = make_preceding("ศัพท์%s"),
umbrella = {
preceding = make_umbrella_preceding("ศัพท์%s"),
additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> " ..
"(template '''tlb''', not '''lb'''), which should typically be placed next to the headword. " ..
"(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" ..
"If the term is merely a variant (alternative form) of a term in general use, it should be categorized instead in " ..
"{{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " ..
"or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>). " ..
"If only some senses of the term are %s, it should be categorized instead in {{cl|<var>langname</var> terms with %s senses}}, " ..
"using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''lb''' instead of '''tlb'''), which should " ..
"typically be placed next to the individual sense.%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")),
}
}
labels[("ศัพท์ที่มีนัย%s"):format(typ)] = {
description = ("{{{langname}}} terms with individual senses that %s."):format(desc),
additional = ("To categorize into this category, use {{tl|lb|{{{langcode}}}|%s}} (template '''lb''', not '''tlb'''), " ..
"which should typically be placed next to the individual sense.\n\nIf the term itself, in all its senses, is %s, " ..
"it should be placed in {{cl|{{{langname}}} %s terms}} instead, using {{tl|tlb|{{{langcode}}}|%s}} " ..
"(template '''tlb''' instead of '''lb'''), which should typically be placed next to the headword. " ..
"If the term is merely a variant (alternative form) of a term in general use, it should be categorized in " ..
"{{cl|{{{langname}}} %s forms}} (using {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}).%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")),
parents = {{name = "ศัพท์แบ่งตามการใช้", sort = ("มีนัย%s"):format(typ)}},
breadcrumb = ("มีนัย%s"):format(typ),
preceding = make_preceding("ศัพท์ที่มีนัย%s"),
umbrella = {
preceding = make_umbrella_preceding("ศัพท์ที่มีนัย%s"),
additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " ..
"(template '''lb''', not '''tlb'''), which should typically be placed next to the individual sense. " ..
"(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" ..
"If the term itself, in all its senses, is %s, it should be placed in {{cl|<var>langname</var> %s terms}} instead, using " ..
"<code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> (template '''tlb''' instead of '''lb'''), which should " ..
"typically be placed next to the headword. If the term is merely a variant (alternative form) of a term in general use, " ..
"it should be categorized in {{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " ..
"or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>.%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")),
}
}
labels[("รูป%s"):format(typ)] = {
description = ("{{{langname}}} forms that %s; and serve as alternative forms of the same terms in general use."):format(desc),
additional = ("To categorize into this category, use {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}.\n\n" ..
"If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|{{{langname}}} %s terms}} " ..
"instead; to do this, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), which should typically be placed next to the " ..
"headword. If only some senses of the term are %s, it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, " ..
"using {{tl|lb|{{{langcode}}}|%s}} (template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")),
parents = {{name = ("ศัพท์%s"):format(typ), sort = "รูป"}},
breadcrumb = "รูป",
preceding = make_preceding("รูป%s"),
umbrella = {
preceding = make_umbrella_preceding("รูป%s"),
additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " ..
"or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>. (<code><var>langcode</var></code> is the " ..
"appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" ..
"If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|<var>langname</var> %s terms}} " ..
"instead; to do this, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''tlb''', not '''lb'''), " ..
"which should typically be placed next to the headword. If only some senses of the term are %s, it should be categorized instead " ..
"in {{cl|<var>langname</var> terms with %s senses}}, using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " ..
"(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")),
}
}
end
local function generate_related_categories_with_senses(info)
for typ, spec in pairs(info) do
local other_types = {}
for other_type, _ in pairs(info) do
if other_type ~= typ then
table.insert(other_types, other_type)
end
end
table.sort(other_types)
generate_category_with_senses(typ, spec.desc, spec.distinguish, other_types)
end
end
generate_related_categories_with_senses {
["โบราณ"] = {
desc = "are no longer in general use but still encountered in older literature, sometimes still used for special effect, and typically recognized by native speakers",
distinguish = "Archaic POS should be distinguished from dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers; and on the other hand from obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.",
},
["ล้าสมัย"] = {
desc = "are no longer fashionable and thus are [[anachronistic]], but still sometimes in use, especially by older speakers",
distinguish = "Dated POS should be distinguished from archaic POS, which are no longer in use (except occasionally for special effect) but are still sometimes encountered in older literature and are typically recognized by native speakers; and obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.",
},
["เลิกใช้"] = {
desc = "are no longer in use and not usually recognized by native speakers, but still sometimes found in older literature",
distinguish = "Obsolete POS should be distinguished from archaic POS, which, although no longer in general use, are still occasionally used for special effect and are typically recognized by native speakers; and dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers.",
},
}
generate_related_categories_with_senses {
["พบได้ยาก"] = {
desc = "are rarely found in general use and may not be recognized by some native speakers",
distinguish = "Rare POS should be distinguished from uncommon POS, which are not common but used enough to be generally recognized.",
},
["ไม่สามัญ"] = {
desc = "are in general use but not common",
distinguish = "Uncommon POS should be distinguished from rare POS, which are infrequent enough that they are sometimes not recognized by native speakers.",
},
}
labels["2channel slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|2channel}}.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["4chan slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|4chan}}.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["4chan /lgbt/ slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the /lgbt/ board of the website {{w|4chan}}.",
parents = {"4chan slang", "สแลงแอลจีบีทีคิว"},
}
labels["angry register terms"] = {
description = "{{{langname}}} terms belonging to an angry linguistic register, used only when the speaker is angry.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["anti-LGBTQ slurs"] = {
description = "{{{langname}}} terms that are intended to offend [[LGBTQ]] people.",
parents = {"ศัพท์ที่ล่วงเกิน"},
}
labels["autological terms"] = {
description = "{{{langname}}} terms that possess the property they themselves describe.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["back slang"] = {
description = "{{{langname}}} terms in which the written word is spoken phonemically backwards to form a coded language.",
parents = {"cant"},
}
labels["cant"] = {
description = "{{{langname}}} terms used to form secret languages that are typically restricted to members of a specific group.",
parents = {"สแลง"},
}
labels["censored spellings"] = {
description = "{{{langname}}} spellings where some characters have been changed in an effort to reduce the shock value of the original term.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["ศัพท์ที่เป็นภาษาเด็ก"] = {
description = "{{{langname}}} terms that are typically only used by, or to, children.",
parents = {"ศัพท์แบ่งตามการใช้", "ศัพท์ที่ไม่เป็นทางการ"},
}
labels["childish terms"] = labels["ศัพท์ที่เป็นภาษาเด็ก"]
labels["ศัพท์ที่เป็นภาษาปาก"] = {
description = "{{{langname}}} terms that are likely to be used primarily in casual conversation rather than in more formal written works, speeches, and discourse.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["colloquialisms"] = labels["ศัพท์ที่เป็นภาษาปาก"]
labels["corporate jargon"] = {
description = "{{{langname}}} terms (typically for non-business-specific concepts) that are used especially in a [[business]] or [[corporate]] [[context]].",
additional = "See also [[:หมวดหมู่:กิจการ]], [[:หมวดหมู่:ธุรกิจ]] and language-specific categories thereof for terms related to business-specific concepts.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["criminal slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to criminals.",
parents = {"สแลง"},
}
labels["ศัพท์ที่ดูหมิ่น"] = {
description = "{{{langname}}} terms that are intended to [[disparage]], [[demean]], [[insult]] or [[offend]].",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["derogatory terms"] = labels["ศัพท์ที่ดูหมิ่น"]
labels["dialectal terms"] = {
description = "{{{langname}}} terms that are not used in standard language but only in dialects.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["dis legomena"] = {
description = "{{{langname}}} terms that are attested only twice in the entire corpus.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["drag slang"] = {
description = "{{{langname}}} [[slang]] terms used in the [[drag]] community.",
parents = {"สแลงแอลจีบีทีคิว"},
}
labels["ecclesiastical terms"] = {
description = "{{{langname}}} terms used only by religious figures.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["eggcorns"] = {
description = "{{{langname}}} [[eggcorn]]s, terms which are misconstructed.",
parents = {"misconstructions"},
}
labels["emoticons"] = {
description = "{{{langname}}} characters, or sequences of characters, that imitate expressions and other objects by means of [[pareidolia]].",
parents = {"สแลงอินเทอร์เน็ต", "text messaging slang"},
}
labels["endearing terms"] = {
description = "{{{langname}}} terms that are used to show affection or endearment to another person.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["ethnic slurs"] = {
description = "{{{langname}}} terms that are intended to offend certain ethnic groups.",
parents = {"ศัพท์ที่ล่วงเกิน"},
}
labels["expressive terms"] = {
description = "{{{langname}}} terms with additional expressive content compared with the basic meaning of the term.",
additional = "This term is common in Slavic lexicography and is found in most Czech, Slovak and Polish dictionaries, but there is no exact equivalent in English lexicography. The closest equivalents might be a combination of ''colloquial'' and either ''endearing'' or ''pejorative'', as the case may be.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["eye dialect"] = {
description = "{{{langname}}} nonstandard spellings, which however do not change pronunciation, deliberately used by an author to indicate that the speaker uses a nonstandard or dialectal speech.",
parents = {"nonstandard forms", "ศัพท์แบ่งตามสมบัติเชิงอักขรวิธี"},
}
labels["familiar terms"] = {
description = "{{{langname}}} terms whose use is typically to contexts of friendly intimacy.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["fandom slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to fans of one or more works of fiction.",
parents = {"สแลง"},
}
labels["filter-avoidance spellings"] = {
description = "Deliberate misspellings of {{{langname}}} terms that are used to avoid [[w:Wordfilter|wordfilters]].",
parents = {"รูปเจตนาสะกดผิด"},
}
labels["folk poetic terms"] = {
description = "{{{langname}}} terms whose usage is typically restricted to works of oral or folk poetry.",
parents = {"ศัพท์แบ่งตามการใช้", "ศัพท์ที่ใช้ในบทร้อยกรอง"},
}
labels["ศัพท์ที่เป็นทางการ"] = {
description = "{{{langname}}} terms whose use is typically restricted to polite, ceremonious, non-casual contexts.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["formal terms"] = labels["ศัพท์ที่เป็นทางการ"]
labels["gay slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to homosexual people.",
parents = {"สแลงแอลจีบีทีคิว"},
}
labels["gender-critical slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to gender-critical feminists.",
parents = {"สแลง", "หมวดหมู่:{{{langcode}}}:Gender-critical feminism"},
}
labels["ศัพท์ที่ไม่ระบุเพศ"] = {
description = "{{{langname}}} terms that are applicable to all people, independent of gender.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["gender-neutral terms"] = labels["ศัพท์ที่ไม่ระบุเพศ"]
labels["graffiti slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to creators of [[graffiti#Noun|graffiti]].",
parents = {"สแลง", "หมวดหมู่:{{{langcode}}}:ศิลปะ"},
}
labels["higher register terms"] = {
description = "{{{langname}}} terms belonging to a higher linguistic register, such as literary terms; such terms are somewhat less common or known.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["historical terms"] = {
description = "{{{langname}}} terms that refer to obsolete things or concepts.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["honorific terms"] = {
description = "{{{langname}}} [[honorific]] terms, which are used to show deference and respect.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["ศัพท์ที่สุภาพ"] = {
description = "{{{langname}}} [[polite]] terms, which are used to show deference and respect.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["polite terms"] = labels["ศัพท์ที่สุภาพ"]
labels["hapax legomena"] = {
description = "{{{langname}}} terms that are attested only once in the entire corpus.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["humble terms"] = {
description = "{{{langname}}} [[humble]] terms, which are used to show humility towards the addressee, indicating that the speaker has a lower social standing.",
parents = {"honorific terms"},
}
labels["hypercorrections"] = {
description = "{{{langname}}} forms of other terms by misapplications of grammatical or orthographical rules.",
parents = {"ศัพท์ที่ไม่เป็นมาตรฐาน", "nonstandard forms"},
}
labels["hyperforeign terms"] = {
description = "{{{langname}}} terms created by misapplying the perceived grammatical, orthographical or phonetical rules of another language.",
parents = {"hypercorrections"},
}
labels["incel slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to incels.",
parents = {"สแลง", "หมวดหมู่:{{{langcode}}}:Incel community"},
}
labels["imperfective forms"] = {
description = "{{{langname}}} verbs that serve as imperfective variants of perfective verbs, sharing the same base set of meanings.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["informal forms"] = {
description = "{{{langname}}} terms that can be used in casual, non-ceremonious conversations as alternative forms of other terms.",
additional = "Informal non-lemma form variants also belong here.",
parents = {"ศัพท์ที่ไม่เป็นทางการ"},
}
labels["ศัพท์ที่ไม่เป็นทางการ"] = {
description = "{{{langname}}} terms whose use is typically restricted to casual, non‐ceremonious conversations.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["informal terms"] = labels["ศัพท์ที่ไม่เป็นทางการ"]
labels["รูปเจตนาสะกดผิด"] = {
description = "Deliberate misspellings of {{{langname}}} terms.",
parents = {"รูปสะกดผิด"},
}
labels["deliberate misspellings"] = labels["รูปเจตนาสะกดผิด"]
labels["internet laughter slang"] = {
description = "{{{langname}}} [[slang]] terms that are used as substitutes for laughter in internet-related contexts.",
additional = "::''Note: The majority of items that <u>could</u> be here do not meet Wiktionary's [[WT:CFI|criteria for inclusion]].''",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["สแลงอินเทอร์เน็ต"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to internet users.",
parents = {"สแลง"},
}
labels["internet slang"] = labels["สแลงอินเทอร์เน็ต"]
labels["ศัพท์ที่ขำขัน"] = {
description = "{{{langname}}} terms that are humorous, amusing or joking.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["humorous terms"] = labels["ศัพท์ที่ขำขัน"]
labels["ศัพท์ที่เป็นภาษาข่าว"] = {
description = "{{{langname}}} terms that are used especially in [[journalistic]] language, i.e. in newspapers and magazines.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["journalistic terms"] = labels["ศัพท์ที่เป็นภาษาข่าว"]
labels["kennings"] = {
description = "{{{langname}}} metaphorical compounds or phrases describing basic objects in an allusive fashion, used especially in Germanic poetry.",
parents = {"ศัพท์ที่ใช้ในบทร้อยกรอง"},
}
labels["leetspeak"] = {
description = "{{{langname}}} which are used in [[leetspeak]], a variety of internet slang that focuses on substitution of letters by other characters which are similar in appearance.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["สแลงแอลจีบีทีคิว"] = {
description = "{{{langname}}} [[slang]] terms which are used predominantly among [[LGBTQ]] people.",
parents = {"สแลง", "Category:{{{langcode}}}:แอลจีบีทีคิว"},
}
labels["LGBTQ slang"] = labels["สแลงแอลจีบีทีคิว"]
labels["ศัพท์ที่เป็นภาษาหนังสือ"] = {
description = "{{{langname}}} terms whose usage is typically restricted to works of literature.",
parents = {"higher register terms"},
}
labels["literary terms"] = labels["ศัพท์ที่เป็นภาษาหนังสือ"]
labels["สแลงการแพทย์"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to medical doctors, such as physicians and surgeons.",
parents = {"สแลง"},
}
labels["medical slang"] = labels["สแลงการแพทย์"]
labels["สแลงการทหาร"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to military personnel.",
parents = {"สแลง"},
}
labels["military slang"] = labels["สแลงการทหาร"]
labels["misconstructions"] = {
description = "Terms wrongly built due to a misunderstanding of their parts.",
parents = {"nonstandard forms"},
}
labels["misromanizations"] = {
description = "Common misromanizations of {{{langname}}} terms.",
parents = {"nonstandard forms"},
}
labels["รูปสะกดผิด"] = {
description = "Common accidental misspellings of {{{langname}}} terms and some terms which are deliberate misspellings.",
parents = {"nonstandard forms"},
}
labels["misspellings"] = labels["รูปสะกดผิด"]
labels["multiplicity slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to the {{l|en|multiplicity|id=multiple personalities}} [[community]].",
parents = {"สแลง", "Category:{{{langcode}}}:Multiplicity (psychology)"},
}
labels["naval slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to naval personnel.",
parents = {"สแลงการทหาร"},
}
labels["nonstandard forms"] = {
description = "{{{langname}}} forms of standard terms that are considered improper, incorrect or commonly misused.",
parents = {"ศัพท์ที่ไม่เป็นมาตรฐาน"},
}
labels["ศัพท์ที่ไม่เป็นมาตรฐาน"] = {
description = "{{{langname}}} terms that are considered improper, incorrect or commonly misused.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["nonstandard terms"] = labels["ศัพท์ที่ไม่เป็นมาตรฐาน"]
labels["numismatic slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to numismatists.",
parents = {"สแลง", "หมวดหมู่:{{{langcode}}}:เงินตรา"},
}
labels["ศัพท์ที่ล่วงเกิน"] = {
description = "{{{langname}}} terms that are typically considered to offend people.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["offensive terms"] = labels["ศัพท์ที่ล่วงเกิน"]
labels["officialese terms"] = {
description = "{{{langname}}} terms that are chiefly used by official sources, and are often bureaucratic-sounding.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["oxymorons"] = {
description = "{{{langname}}} terms that are juxtapositions of opposing ideas.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["perfective forms"] = {
description = "{{{langname}}} verbs that serve as perfective variants of imperfective verbs, sharing the same base set of meanings.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["placeholder terms"] = {
description = "{{{langname}}} terms used to refer to items for which one does not know or cannot recall the name, or is unable to or does not care to specify precisely.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["poetic forms"] = {
description = "{{{langname}}} terms that can be used in works of poetry as poetic alternative forms of other terms.",
additional = "Poetic non-lemma form variants also belong here.",
parents = {"ศัพท์ที่ใช้ในบทร้อยกรอง"},
}
labels["ศัพท์ที่ใช้ในบทร้อยกรอง"] = {
description = "{{{langname}}} terms whose usage is typically restricted to works of poetry.",
parents = {"ศัพท์แบ่งตามการใช้", "ศัพท์ที่เป็นภาษาหนังสือ"},
}
labels["poetic terms"] = labels["ศัพท์ที่ใช้ในบทร้อยกรอง"]
labels["post-nominal letters"] = {
description = "{{{langname}}} Post-nominal letters - also called post-nominal initials, post-nominal titles or designatory letters are letters placed after the name of a person to indicate that the individual holds a position, educational degree, accreditation, office, military decoration, or honour, or is a member of a religious institute or fraternity.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["prison slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to detainees in correctional institutions.",
parents = {"สแลง"},
}
labels["ศัพท์ที่ไม่ควรใช้"] = {
description = "{{{langname}}} terms whose usage is proscribed; thus, they are considered wrong according to prescriptive sources.",
parents = {"ศัพท์แบ่งตามการใช้", "ศัพท์ที่ไม่เป็นมาตรฐาน"},
}
labels["proscribed terms"] = labels["ศัพท์ที่ไม่ควรใช้"]
labels["puristic terms"] = {
description = "{{{langname}}} terms adopted for [[w:Linguistic purism|linguistic purism]].",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["สแลงวิทยุ"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to radio communication.",
parents = {"สแลง"},
}
labels["radio slang"] = labels["สแลงวิทยุ"]
labels["Reddit slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|Reddit}}.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["religious slurs"] = {
description = "{{{langname}}} terms that are intended to offend members of certain religions.",
parents = {"ศัพท์ที่ล่วงเกิน"},
}
labels["reverential terms"] = {
description = "{{{langname}}} [[reverential]] terms, which are used to exalt the addressee, indicating that they have a higher social standing than the speaker.",
parents = {"honorific terms"},
}
labels["ราชาศัพท์"] = {
description = "{{{langname}}} terms used only by royalty.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["royal terms"] = labels["ราชาศัพท์"]
labels["rustic terms"] = {
description = "{{{langname}}} terms whose use is typically restricted rural speech.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["สแลงโรงเรียน"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to schools and school pupils.",
parents = {"สแลง"},
}
labels["school slang"] = labels["สแลงโรงเรียน"]
labels["self-deprecatory terms"] = {
description = "{{{langname}}} [[self-deprecatory]] terms.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["รูปสั้น"] = {
description = "{{{langname}}} terms that are [[short form]]s of other terms, often used informally.",
parents = {"ศัพท์แบ่งตามการใช้", "การย่อ"},
}
labels["short forms"] = labels["รูปสั้น"]
labels["สแลง"] = {
description = "{{{langname}}} [[colloquial]] terms that are typically used to mark membership in a cultural subgroup.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["slang"] = labels["สแลง"]
labels["solemn terms"] = {
description = "{{{langname}}} terms that are used to instill a sense of somberness.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["สแลงนักเรียน"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to colleges, universities, and their students.",
parents = {"สแลง"},
}
labels["student slang"] = labels["สแลงนักเรียน"]
labels["superseded forms"] = {
description = "{{{langname}}} forms that have been superseded by other forms due to changes in spelling conventions.",
parents = {"ศัพท์แบ่งตามการใช้", "ศัพท์แบ่งตามสมบัติเชิงอักขรวิธี"},
}
labels["swear words"] = {
description = "{{{langname}}} terms that are used to swear, such as to express strong anger or frustration.",
parents = {"ศัพท์ที่หยาบคาย"},
}
labels["technical terms"] = {
description = "{{{langname}}} terms that are usually or exclusively used in technical/scientific writing.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["terms of address"] = {
description = "{{{langname}}} terms used to refer to another person.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["terms used in hendiadys"] = {
description = "{{{langname}}} words or senses which are used only in {{w|hendiadys}}.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["terms with historical senses"] = {
description = "{{{langname}}} terms with senses that refer to things or concepts mainly known for their historical value.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["terms with transferred senses"] = {
description = "{{{langname}}} terms with [[Appendix:Glossary#transferred senses|transferred senses]].",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["ศัพท์ที่มีความหมายไม่แน่นอน"] = {
description = "{{{langname}}} terms whose meaning is unknown or disputed.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["terms with uncertain meaning"] = labels["ศัพท์ที่มีความหมายไม่แน่นอน"]
labels["text messaging slang"] = {
description = "{{{langname}}} terms used for [[text messaging]] on mobile phones or similar devices, usually consisting of heavily abbreviated forms.",
parents = {"สแลง"},
}
labels["tone indicators"] = {
description = "{{{langname}}} symbols used to denote or clarify the intent of a preceeding or occasionally following message.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["เครื่องหมายการค้า"] = {
description = "{{{langname}}} terms that identify legal entities, their products and services, by means of legal protection — to some extent, in a number of jurisdictions — against unauthorized use of the terms.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["trademarks"] = labels["เครื่องหมายการค้า"]
labels["transgender slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to transgender people.",
parents = {"สแลงแอลจีบีทีคิว", "หมวดหมู่:{{{langcode}}}:Transgender"},
}
labels["TV Tropes slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|TV Tropes}}.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["umlautless spellings"] = {
description = "{{{langname}}} terms that are the result of the original terms' [[umlaut]]s being substituted.",
parents = {"nonstandard forms", "ศัพท์แบ่งตามสมบัติเชิงอักขรวิธี"},
}
labels["สแลงยูสเน็ต"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of {{w|Usenet}}.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["Usenet slang"] = labels["สแลงยูสเน็ต"]
labels["ศัพท์ที่ผู้ชายใช้"] = {
description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#men's speech|men's speech]].",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["men's speech terms"] = labels["ศัพท์ที่ผู้ชายใช้"]
labels["ศัพท์ที่ผู้หญิงใช้"] = {
description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#women's speech|women's speech]].",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["women's speech terms"] = labels["ศัพท์ที่ผู้หญิงใช้"]
labels["ศัพท์ที่หยาบคาย"] = {
description = "{{{langname}}} terms whose tone (rather than the meaning) is offensive to polite company.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["vulgarities"] = labels["ศัพท์ที่หยาบคาย"] -- ให้เข้ากับ ศัพท์ที่สุภาพ
-- 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
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["หมวดหมู่ย่อยของศัพท์แบ่งตามการใช้แบ่งตามภาษา"] = {
description = "Umbrella categories covering topics related to terms categorized by their usage, such as slang, obsolete or archaic forms and vulgarities.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"หมวดหมู่ใหญ่รวมหัวข้อ",
{name = "ศัพท์แบ่งตามการใช้", is_label = true, sort = " "},
},
}
return {LABELS = labels, RAW_CATEGORIES = raw_categories}
ftcappzrqjle2v4weutmyiq89cid6is
5724850
5724849
2026-06-16T04:43:18Z
OctraBot
3198
5724850
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local string_utilities_module = "Module:string utilities"
local ucfirst = require(string_utilities_module).ucfirst
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["ศัพท์แบ่งตามการใช้"] = {
description = "{{{langname}}} terms categorized by the manner and context in which they are used by speakers.",
umbrella_parents = "มูลฐาน",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by usage"] = labels["ศัพท์แบ่งตามการใช้"]
local function generate_category_with_senses(typ, desc, distinguish, other_types_in_group)
if distinguish then
distinguish = "\n\n" .. distinguish
else
distinguish = ""
end
local function make_preceding(pos)
if not other_types_in_group then
return nil
end
local cats = {}
for _, other_type in ipairs(other_types_in_group) do
local poscat = require("Module:th-utilities").th_categorize(pos, "{{{langcat}}}") --th
table.insert(cats, ("หมวดหมู่:" .. poscat):format(other_type))
end
return ("{{also|%s}}"):format(table.concat(cats, "|"))
end
local function make_umbrella_preceding(pos)
if not other_types_in_group then
return nil
end
local cats = {}
for _, other_type in ipairs(other_types_in_group) do
table.insert(cats, "หมวดหมู่:" .. ucfirst((pos .. "แบ่งตามภาษา"):format(other_type)))
end
return ("{{also|%s}}"):format(table.concat(cats, "|"))
end
labels[("ศัพท์%s"):format(typ)] = { -- out of ศัพท์ภาษาXที่...
description = ("{{{langname}}} terms that %s."):format(desc),
additional = ("To categorize into this category, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), " ..
"which should typically be placed next to the headword.\n\nIf the term is merely a variant (alternative form) of a term " ..
"in general use, it should be categorized instead in {{cl|{{{langname}}} %s forms}} (using " ..
"{{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}). If only some senses of the term are %s, " ..
"it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, using {{tl|lb|{{{langcode}}}|%s}} " ..
"(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")),
parents = {"ศัพท์แบ่งตามการใช้"},
preceding = make_preceding("ศัพท์%s"),
umbrella = {
preceding = make_umbrella_preceding("ศัพท์%s"),
additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> " ..
"(template '''tlb''', not '''lb'''), which should typically be placed next to the headword. " ..
"(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" ..
"If the term is merely a variant (alternative form) of a term in general use, it should be categorized instead in " ..
"{{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " ..
"or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>). " ..
"If only some senses of the term are %s, it should be categorized instead in {{cl|<var>langname</var> terms with %s senses}}, " ..
"using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''lb''' instead of '''tlb'''), which should " ..
"typically be placed next to the individual sense.%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")),
}
}
labels[("ศัพท์ที่มีนัย%s"):format(typ)] = {
description = ("{{{langname}}} terms with individual senses that %s."):format(desc),
additional = ("To categorize into this category, use {{tl|lb|{{{langcode}}}|%s}} (template '''lb''', not '''tlb'''), " ..
"which should typically be placed next to the individual sense.\n\nIf the term itself, in all its senses, is %s, " ..
"it should be placed in {{cl|{{{langname}}} %s terms}} instead, using {{tl|tlb|{{{langcode}}}|%s}} " ..
"(template '''tlb''' instead of '''lb'''), which should typically be placed next to the headword. " ..
"If the term is merely a variant (alternative form) of a term in general use, it should be categorized in " ..
"{{cl|{{{langname}}} %s forms}} (using {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}).%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")),
parents = {{name = "ศัพท์แบ่งตามการใช้", sort = ("มีนัย%s"):format(typ)}},
breadcrumb = ("มีนัย%s"):format(typ),
preceding = make_preceding("ศัพท์ที่มีนัย%s"),
umbrella = {
preceding = make_umbrella_preceding("ศัพท์ที่มีนัย%s"),
additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " ..
"(template '''lb''', not '''tlb'''), which should typically be placed next to the individual sense. " ..
"(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" ..
"If the term itself, in all its senses, is %s, it should be placed in {{cl|<var>langname</var> %s terms}} instead, using " ..
"<code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> (template '''tlb''' instead of '''lb'''), which should " ..
"typically be placed next to the headword. If the term is merely a variant (alternative form) of a term in general use, " ..
"it should be categorized in {{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " ..
"or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>.%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")),
}
}
labels[("รูป%s"):format(typ)] = {
description = ("{{{langname}}} forms that %s; and serve as alternative forms of the same terms in general use."):format(desc),
additional = ("To categorize into this category, use {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}.\n\n" ..
"If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|{{{langname}}} %s terms}} " ..
"instead; to do this, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), which should typically be placed next to the " ..
"headword. If only some senses of the term are %s, it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, " ..
"using {{tl|lb|{{{langcode}}}|%s}} (template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")),
parents = {{name = ("ศัพท์%s"):format(typ), sort = "รูป"}},
breadcrumb = "รูป",
preceding = make_preceding("รูป%s"),
umbrella = {
preceding = make_umbrella_preceding("รูป%s"),
additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " ..
"or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>. (<code><var>langcode</var></code> is the " ..
"appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" ..
"If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|<var>langname</var> %s terms}} " ..
"instead; to do this, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''tlb''', not '''lb'''), " ..
"which should typically be placed next to the headword. If only some senses of the term are %s, it should be categorized instead " ..
"in {{cl|<var>langname</var> terms with %s senses}}, using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " ..
"(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format(
typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")),
}
}
end
local function generate_related_categories_with_senses(info)
for typ, spec in pairs(info) do
local other_types = {}
for other_type, _ in pairs(info) do
if other_type ~= typ then
table.insert(other_types, other_type)
end
end
table.sort(other_types)
generate_category_with_senses(typ, spec.desc, spec.distinguish, other_types)
end
end
generate_related_categories_with_senses {
["โบราณ"] = {
desc = "are no longer in general use but still encountered in older literature, sometimes still used for special effect, and typically recognized by native speakers",
distinguish = "Archaic POS should be distinguished from dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers; and on the other hand from obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.",
},
["ล้าสมัย"] = {
desc = "are no longer fashionable and thus are [[anachronistic]], but still sometimes in use, especially by older speakers",
distinguish = "Dated POS should be distinguished from archaic POS, which are no longer in use (except occasionally for special effect) but are still sometimes encountered in older literature and are typically recognized by native speakers; and obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.",
},
["เลิกใช้"] = {
desc = "are no longer in use and not usually recognized by native speakers, but still sometimes found in older literature",
distinguish = "Obsolete POS should be distinguished from archaic POS, which, although no longer in general use, are still occasionally used for special effect and are typically recognized by native speakers; and dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers.",
},
}
generate_related_categories_with_senses {
["พบได้ยาก"] = {
desc = "are rarely found in general use and may not be recognized by some native speakers",
distinguish = "Rare POS should be distinguished from uncommon POS, which are not common but used enough to be generally recognized.",
},
["ไม่สามัญ"] = {
desc = "are in general use but not common",
distinguish = "Uncommon POS should be distinguished from rare POS, which are infrequent enough that they are sometimes not recognized by native speakers.",
},
}
labels["2channel slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|2channel}}.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["4chan slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|4chan}}.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["4chan /lgbt/ slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the /lgbt/ board of the website {{w|4chan}}.",
parents = {"4chan slang", "สแลงแอลจีบีทีคิว"},
}
labels["angry register terms"] = {
description = "{{{langname}}} terms belonging to an angry linguistic register, used only when the speaker is angry.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["anti-LGBTQ slurs"] = {
description = "{{{langname}}} terms that are intended to offend [[LGBTQ]] people.",
parents = {"ศัพท์ที่ล่วงเกิน"},
}
labels["autological terms"] = {
description = "{{{langname}}} terms that possess the property they themselves describe.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["back slang"] = {
description = "{{{langname}}} terms in which the written word is spoken phonemically backwards to form a coded language.",
parents = {"cant"},
}
labels["cant"] = {
description = "{{{langname}}} terms used to form secret languages that are typically restricted to members of a specific group.",
parents = {"สแลง"},
}
labels["censored spellings"] = {
description = "{{{langname}}} spellings where some characters have been changed in an effort to reduce the shock value of the original term.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["ศัพท์ที่เป็นภาษาเด็ก"] = {
description = "{{{langname}}} terms that are typically only used by, or to, children.",
parents = {"ศัพท์แบ่งตามการใช้", "ศัพท์ที่ไม่เป็นทางการ"},
}
labels["childish terms"] = labels["ศัพท์ที่เป็นภาษาเด็ก"]
labels["ศัพท์ที่เป็นภาษาปาก"] = {
description = "{{{langname}}} terms that are likely to be used primarily in casual conversation rather than in more formal written works, speeches, and discourse.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["colloquialisms"] = labels["ศัพท์ที่เป็นภาษาปาก"]
labels["corporate jargon"] = {
description = "{{{langname}}} terms (typically for non-business-specific concepts) that are used especially in a [[business]] or [[corporate]] [[context]].",
additional = "See also [[:หมวดหมู่:กิจการ]], [[:หมวดหมู่:ธุรกิจ]] and language-specific categories thereof for terms related to business-specific concepts.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["criminal slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to criminals.",
parents = {"สแลง"},
}
labels["ศัพท์ที่ดูหมิ่น"] = {
description = "{{{langname}}} terms that are intended to [[disparage]], [[demean]], [[insult]] or [[offend]].",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["derogatory terms"] = labels["ศัพท์ที่ดูหมิ่น"]
labels["dialectal terms"] = {
description = "{{{langname}}} terms that are not used in standard language but only in dialects.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["dis legomena"] = {
description = "{{{langname}}} terms that are attested only twice in the entire corpus.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["drag slang"] = {
description = "{{{langname}}} [[slang]] terms used in the [[drag]] community.",
parents = {"สแลงแอลจีบีทีคิว"},
}
labels["ecclesiastical terms"] = {
description = "{{{langname}}} terms used only by religious figures.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["eggcorns"] = {
description = "{{{langname}}} [[eggcorn]]s, terms which are misconstructed.",
parents = {"misconstructions"},
}
labels["emoticons"] = {
description = "{{{langname}}} characters, or sequences of characters, that imitate expressions and other objects by means of [[pareidolia]].",
parents = {"สแลงอินเทอร์เน็ต", "text messaging slang"},
}
labels["endearing terms"] = {
description = "{{{langname}}} terms that are used to show affection or endearment to another person.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["ethnic slurs"] = {
description = "{{{langname}}} terms that are intended to offend certain ethnic groups.",
parents = {"ศัพท์ที่ล่วงเกิน"},
}
labels["expressive terms"] = {
description = "{{{langname}}} terms with additional expressive content compared with the basic meaning of the term.",
additional = "This term is common in Slavic lexicography and is found in most Czech, Slovak and Polish dictionaries, but there is no exact equivalent in English lexicography. The closest equivalents might be a combination of ''colloquial'' and either ''endearing'' or ''pejorative'', as the case may be.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["eye dialect"] = {
description = "{{{langname}}} nonstandard spellings, which however do not change pronunciation, deliberately used by an author to indicate that the speaker uses a nonstandard or dialectal speech.",
parents = {"nonstandard forms", "ศัพท์แบ่งตามสมบัติเชิงอักขรวิธี"},
}
labels["familiar terms"] = {
description = "{{{langname}}} terms whose use is typically to contexts of friendly intimacy.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["fandom slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to fans of one or more works of fiction.",
parents = {"สแลง"},
}
labels["filter-avoidance spellings"] = {
description = "Deliberate misspellings of {{{langname}}} terms that are used to avoid [[w:Wordfilter|wordfilters]].",
parents = {"รูปเจตนาสะกดผิด"},
}
labels["folk poetic terms"] = {
description = "{{{langname}}} terms whose usage is typically restricted to works of oral or folk poetry.",
parents = {"ศัพท์แบ่งตามการใช้", "ศัพท์ที่ใช้ในบทร้อยกรอง"},
}
labels["ศัพท์ที่เป็นทางการ"] = {
description = "{{{langname}}} terms whose use is typically restricted to polite, ceremonious, non-casual contexts.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["formal terms"] = labels["ศัพท์ที่เป็นทางการ"]
labels["gay slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to homosexual people.",
parents = {"สแลงแอลจีบีทีคิว"},
}
labels["gender-critical slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to gender-critical feminists.",
parents = {"สแลง", "หมวดหมู่:{{{langcode}}}:Gender-critical feminism"},
}
-- [[มอดูล:gender and number/data]]
labels["ศัพท์ที่ไม่ระบุเพศ"] = {
description = "{{{langname}}} terms that are applicable to all people, independent of gender.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["gender-neutral terms"] = labels["ศัพท์ที่ไม่ระบุเพศ"]
labels["graffiti slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to creators of [[graffiti#Noun|graffiti]].",
parents = {"สแลง", "หมวดหมู่:{{{langcode}}}:ศิลปะ"},
}
labels["higher register terms"] = {
description = "{{{langname}}} terms belonging to a higher linguistic register, such as literary terms; such terms are somewhat less common or known.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["historical terms"] = {
description = "{{{langname}}} terms that refer to obsolete things or concepts.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["honorific terms"] = {
description = "{{{langname}}} [[honorific]] terms, which are used to show deference and respect.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["ศัพท์ที่สุภาพ"] = {
description = "{{{langname}}} [[polite]] terms, which are used to show deference and respect.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["polite terms"] = labels["ศัพท์ที่สุภาพ"]
labels["hapax legomena"] = {
description = "{{{langname}}} terms that are attested only once in the entire corpus.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["humble terms"] = {
description = "{{{langname}}} [[humble]] terms, which are used to show humility towards the addressee, indicating that the speaker has a lower social standing.",
parents = {"honorific terms"},
}
labels["hypercorrections"] = {
description = "{{{langname}}} forms of other terms by misapplications of grammatical or orthographical rules.",
parents = {"ศัพท์ที่ไม่เป็นมาตรฐาน", "nonstandard forms"},
}
labels["hyperforeign terms"] = {
description = "{{{langname}}} terms created by misapplying the perceived grammatical, orthographical or phonetical rules of another language.",
parents = {"hypercorrections"},
}
labels["incel slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to incels.",
parents = {"สแลง", "หมวดหมู่:{{{langcode}}}:Incel community"},
}
labels["imperfective forms"] = {
description = "{{{langname}}} verbs that serve as imperfective variants of perfective verbs, sharing the same base set of meanings.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["informal forms"] = {
description = "{{{langname}}} terms that can be used in casual, non-ceremonious conversations as alternative forms of other terms.",
additional = "Informal non-lemma form variants also belong here.",
parents = {"ศัพท์ที่ไม่เป็นทางการ"},
}
labels["ศัพท์ที่ไม่เป็นทางการ"] = {
description = "{{{langname}}} terms whose use is typically restricted to casual, non‐ceremonious conversations.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["informal terms"] = labels["ศัพท์ที่ไม่เป็นทางการ"]
labels["รูปเจตนาสะกดผิด"] = {
description = "Deliberate misspellings of {{{langname}}} terms.",
parents = {"รูปสะกดผิด"},
}
labels["deliberate misspellings"] = labels["รูปเจตนาสะกดผิด"]
labels["internet laughter slang"] = {
description = "{{{langname}}} [[slang]] terms that are used as substitutes for laughter in internet-related contexts.",
additional = "::''Note: The majority of items that <u>could</u> be here do not meet Wiktionary's [[WT:CFI|criteria for inclusion]].''",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["สแลงอินเทอร์เน็ต"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to internet users.",
parents = {"สแลง"},
}
labels["internet slang"] = labels["สแลงอินเทอร์เน็ต"]
labels["ศัพท์ที่ขำขัน"] = {
description = "{{{langname}}} terms that are humorous, amusing or joking.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["humorous terms"] = labels["ศัพท์ที่ขำขัน"]
labels["ศัพท์ที่เป็นภาษาข่าว"] = {
description = "{{{langname}}} terms that are used especially in [[journalistic]] language, i.e. in newspapers and magazines.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["journalistic terms"] = labels["ศัพท์ที่เป็นภาษาข่าว"]
labels["kennings"] = {
description = "{{{langname}}} metaphorical compounds or phrases describing basic objects in an allusive fashion, used especially in Germanic poetry.",
parents = {"ศัพท์ที่ใช้ในบทร้อยกรอง"},
}
labels["leetspeak"] = {
description = "{{{langname}}} which are used in [[leetspeak]], a variety of internet slang that focuses on substitution of letters by other characters which are similar in appearance.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["สแลงแอลจีบีทีคิว"] = {
description = "{{{langname}}} [[slang]] terms which are used predominantly among [[LGBTQ]] people.",
parents = {"สแลง", "Category:{{{langcode}}}:แอลจีบีทีคิว"},
}
labels["LGBTQ slang"] = labels["สแลงแอลจีบีทีคิว"]
labels["ศัพท์ที่เป็นภาษาหนังสือ"] = {
description = "{{{langname}}} terms whose usage is typically restricted to works of literature.",
parents = {"higher register terms"},
}
labels["literary terms"] = labels["ศัพท์ที่เป็นภาษาหนังสือ"]
labels["สแลงการแพทย์"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to medical doctors, such as physicians and surgeons.",
parents = {"สแลง"},
}
labels["medical slang"] = labels["สแลงการแพทย์"]
labels["สแลงการทหาร"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to military personnel.",
parents = {"สแลง"},
}
labels["military slang"] = labels["สแลงการทหาร"]
labels["misconstructions"] = {
description = "Terms wrongly built due to a misunderstanding of their parts.",
parents = {"nonstandard forms"},
}
labels["misromanizations"] = {
description = "Common misromanizations of {{{langname}}} terms.",
parents = {"nonstandard forms"},
}
labels["รูปสะกดผิด"] = {
description = "Common accidental misspellings of {{{langname}}} terms and some terms which are deliberate misspellings.",
parents = {"nonstandard forms"},
}
labels["misspellings"] = labels["รูปสะกดผิด"]
labels["multiplicity slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to the {{l|en|multiplicity|id=multiple personalities}} [[community]].",
parents = {"สแลง", "Category:{{{langcode}}}:Multiplicity (psychology)"},
}
labels["naval slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to naval personnel.",
parents = {"สแลงการทหาร"},
}
labels["nonstandard forms"] = {
description = "{{{langname}}} forms of standard terms that are considered improper, incorrect or commonly misused.",
parents = {"ศัพท์ที่ไม่เป็นมาตรฐาน"},
}
labels["ศัพท์ที่ไม่เป็นมาตรฐาน"] = {
description = "{{{langname}}} terms that are considered improper, incorrect or commonly misused.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["nonstandard terms"] = labels["ศัพท์ที่ไม่เป็นมาตรฐาน"]
labels["numismatic slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to numismatists.",
parents = {"สแลง", "หมวดหมู่:{{{langcode}}}:เงินตรา"},
}
labels["ศัพท์ที่ล่วงเกิน"] = {
description = "{{{langname}}} terms that are typically considered to offend people.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["offensive terms"] = labels["ศัพท์ที่ล่วงเกิน"]
labels["officialese terms"] = {
description = "{{{langname}}} terms that are chiefly used by official sources, and are often bureaucratic-sounding.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["oxymorons"] = {
description = "{{{langname}}} terms that are juxtapositions of opposing ideas.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["perfective forms"] = {
description = "{{{langname}}} verbs that serve as perfective variants of imperfective verbs, sharing the same base set of meanings.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["placeholder terms"] = {
description = "{{{langname}}} terms used to refer to items for which one does not know or cannot recall the name, or is unable to or does not care to specify precisely.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["poetic forms"] = {
description = "{{{langname}}} terms that can be used in works of poetry as poetic alternative forms of other terms.",
additional = "Poetic non-lemma form variants also belong here.",
parents = {"ศัพท์ที่ใช้ในบทร้อยกรอง"},
}
labels["ศัพท์ที่ใช้ในบทร้อยกรอง"] = {
description = "{{{langname}}} terms whose usage is typically restricted to works of poetry.",
parents = {"ศัพท์แบ่งตามการใช้", "ศัพท์ที่เป็นภาษาหนังสือ"},
}
labels["poetic terms"] = labels["ศัพท์ที่ใช้ในบทร้อยกรอง"]
labels["post-nominal letters"] = {
description = "{{{langname}}} Post-nominal letters - also called post-nominal initials, post-nominal titles or designatory letters are letters placed after the name of a person to indicate that the individual holds a position, educational degree, accreditation, office, military decoration, or honour, or is a member of a religious institute or fraternity.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["prison slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to detainees in correctional institutions.",
parents = {"สแลง"},
}
labels["ศัพท์ที่ไม่ควรใช้"] = {
description = "{{{langname}}} terms whose usage is proscribed; thus, they are considered wrong according to prescriptive sources.",
parents = {"ศัพท์แบ่งตามการใช้", "ศัพท์ที่ไม่เป็นมาตรฐาน"},
}
labels["proscribed terms"] = labels["ศัพท์ที่ไม่ควรใช้"]
labels["puristic terms"] = {
description = "{{{langname}}} terms adopted for [[w:Linguistic purism|linguistic purism]].",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["สแลงวิทยุ"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to radio communication.",
parents = {"สแลง"},
}
labels["radio slang"] = labels["สแลงวิทยุ"]
labels["Reddit slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|Reddit}}.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["religious slurs"] = {
description = "{{{langname}}} terms that are intended to offend members of certain religions.",
parents = {"ศัพท์ที่ล่วงเกิน"},
}
labels["reverential terms"] = {
description = "{{{langname}}} [[reverential]] terms, which are used to exalt the addressee, indicating that they have a higher social standing than the speaker.",
parents = {"honorific terms"},
}
labels["ราชาศัพท์"] = {
description = "{{{langname}}} terms used only by royalty.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["royal terms"] = labels["ราชาศัพท์"]
labels["rustic terms"] = {
description = "{{{langname}}} terms whose use is typically restricted rural speech.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["สแลงโรงเรียน"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to schools and school pupils.",
parents = {"สแลง"},
}
labels["school slang"] = labels["สแลงโรงเรียน"]
labels["self-deprecatory terms"] = {
description = "{{{langname}}} [[self-deprecatory]] terms.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["รูปสั้น"] = {
description = "{{{langname}}} terms that are [[short form]]s of other terms, often used informally.",
parents = {"ศัพท์แบ่งตามการใช้", "การย่อ"},
}
labels["short forms"] = labels["รูปสั้น"]
labels["สแลง"] = {
description = "{{{langname}}} [[colloquial]] terms that are typically used to mark membership in a cultural subgroup.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["slang"] = labels["สแลง"]
labels["solemn terms"] = {
description = "{{{langname}}} terms that are used to instill a sense of somberness.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["สแลงนักเรียน"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to colleges, universities, and their students.",
parents = {"สแลง"},
}
labels["student slang"] = labels["สแลงนักเรียน"]
labels["superseded forms"] = {
description = "{{{langname}}} forms that have been superseded by other forms due to changes in spelling conventions.",
parents = {"ศัพท์แบ่งตามการใช้", "ศัพท์แบ่งตามสมบัติเชิงอักขรวิธี"},
}
labels["swear words"] = {
description = "{{{langname}}} terms that are used to swear, such as to express strong anger or frustration.",
parents = {"ศัพท์ที่หยาบคาย"},
}
labels["technical terms"] = {
description = "{{{langname}}} terms that are usually or exclusively used in technical/scientific writing.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["terms of address"] = {
description = "{{{langname}}} terms used to refer to another person.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["terms used in hendiadys"] = {
description = "{{{langname}}} words or senses which are used only in {{w|hendiadys}}.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["terms with historical senses"] = {
description = "{{{langname}}} terms with senses that refer to things or concepts mainly known for their historical value.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["terms with transferred senses"] = {
description = "{{{langname}}} terms with [[Appendix:Glossary#transferred senses|transferred senses]].",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["ศัพท์ที่มีความหมายไม่แน่นอน"] = {
description = "{{{langname}}} terms whose meaning is unknown or disputed.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["terms with uncertain meaning"] = labels["ศัพท์ที่มีความหมายไม่แน่นอน"]
labels["text messaging slang"] = {
description = "{{{langname}}} terms used for [[text messaging]] on mobile phones or similar devices, usually consisting of heavily abbreviated forms.",
parents = {"สแลง"},
}
labels["tone indicators"] = {
description = "{{{langname}}} symbols used to denote or clarify the intent of a preceeding or occasionally following message.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["เครื่องหมายการค้า"] = {
description = "{{{langname}}} terms that identify legal entities, their products and services, by means of legal protection — to some extent, in a number of jurisdictions — against unauthorized use of the terms.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["trademarks"] = labels["เครื่องหมายการค้า"]
labels["transgender slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to transgender people.",
parents = {"สแลงแอลจีบีทีคิว", "หมวดหมู่:{{{langcode}}}:Transgender"},
}
labels["TV Tropes slang"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|TV Tropes}}.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["umlautless spellings"] = {
description = "{{{langname}}} terms that are the result of the original terms' [[umlaut]]s being substituted.",
parents = {"nonstandard forms", "ศัพท์แบ่งตามสมบัติเชิงอักขรวิธี"},
}
labels["สแลงยูสเน็ต"] = {
description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of {{w|Usenet}}.",
parents = {"สแลงอินเทอร์เน็ต"},
}
labels["Usenet slang"] = labels["สแลงยูสเน็ต"]
labels["ศัพท์ที่ผู้ชายใช้"] = {
description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#men's speech|men's speech]].",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["men's speech terms"] = labels["ศัพท์ที่ผู้ชายใช้"]
labels["ศัพท์ที่ผู้หญิงใช้"] = {
description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#women's speech|women's speech]].",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["women's speech terms"] = labels["ศัพท์ที่ผู้หญิงใช้"]
labels["ศัพท์ที่หยาบคาย"] = {
description = "{{{langname}}} terms whose tone (rather than the meaning) is offensive to polite company.",
parents = {"ศัพท์แบ่งตามการใช้"},
}
labels["vulgarities"] = labels["ศัพท์ที่หยาบคาย"] -- ให้เข้ากับ ศัพท์ที่สุภาพ
-- 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
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["หมวดหมู่ย่อยของศัพท์แบ่งตามการใช้แบ่งตามภาษา"] = {
description = "Umbrella categories covering topics related to terms categorized by their usage, such as slang, obsolete or archaic forms and vulgarities.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"หมวดหมู่ใหญ่รวมหัวข้อ",
{name = "ศัพท์แบ่งตามการใช้", is_label = true, sort = " "},
},
}
return {LABELS = labels, RAW_CATEGORIES = raw_categories}
4ka0frgmlm0hwc8nj1q2xtlgfzw23ad
ᦆᦱᧁ
0
168710
5724798
5723716
2026-06-15T18:21:21Z
Alifshinobi
397
/* ภาษาไทลื้อ */
5724798
wikitext
text/x-wiki
== ภาษาไทลื้อ ==
=== การออกเสียง ===
{{khb-pron}}
=== รากศัพท์ 1 ===
{{inh+|khb|tai-pro|*ɣaːwᴬ}}; ร่วมเชื้อสายกับ{{cog|th|คาว}}, {{cog|lo|ຄາວ}}, {{cog|nod|ᨤᩣ᩠ᩅ}}, {{cog|shn|ၶႅဝ်း}}, {{cog|tdd|ᥑᥦᥝᥰ}} หรือ {{m|tdd|ᥔᥦᥝᥰ}}, {{cog|skb|กฺ๊าว}}
==== คำนาม ====
{{khb-noun|l=ᨤᩣ᩠ᩅ}}
# [[คาว]]
#: {{ux|khb|[[ᦶᦉᧁ]] [[ᦉᦱᧇ]] [[ᦖᦲᧃ]] '''ᦆᦱᧁ'''|เหม็นสาบเหม็นคาว}}
=== รากศัพท์ 2 ===
ร่วมเชื้อสายกับ{{cog|th|คราว}}, {{cog|tts|คราว}}, {{cog|lo|ຄາວ}}, {{cog|nod|ᨣᩕᩣ᩠ᩅ}}, {{cog|kkh|ᨤᩣ᩠ᩅ}}, {{cog|blt|ꪅꪱꪫ}}, {{cog|shn|ၶၢဝ်း}}, {{cog|tdd|ᥑᥣᥝᥰ}}
==== คำนาม ====
{{khb-noun|l=ᨤᩣ᩠ᩅ}}
# [[คราว]], [[พัก]]
#: {{ux|khb|[[ᦎᦳᧄᧉ]] [[ᦓᧄᧉ]] [[ᦷᦝᧆ]] '''ᦆᦱᧁ''' [[᧚]]|ต้มน้ำเดือดพักหนึ่ง}}
l4hp7j4lkli0swipttdmt2192nb5al0
เถี้ยง
0
171121
5724871
1885087
2026-06-16T10:58:46Z
OctraBot
3198
/* รากศัพท์ */
5724871
wikitext
text/x-wiki
{{also/auto}}
== ภาษาแสก ==
=== รากศัพท์ ===
จาก{{der|skb|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|th|เที่ยง}}, {{cog|nod|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|kkh|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|lo|ທ່ຽງ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}
=== คำคุณศัพท์ ===
{{skb-adj}}
# [[เที่ยง]], [[ตรง]], [[แน่นอน]]
=== คำนาม ===
{{skb-noun}}
# [[เที่ยง]] (เวลา)
djcpemb3jb75xdkt5girlos4ybzh2sv
ᨴᩱ᩠ᨿ
0
230911
5724812
2442308
2026-06-16T01:29:32Z
OctraBot
3198
/* คำวิสามานยนาม */
5724812
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
{{nod-alt|c=ᨴᩱ|l=ไทย|s=ไต}}
=== รากศัพท์ ===
{{obor|nod|th|ไทย}}
=== การออกเสียง ===
* {{IPA|nod|/taj˧˧/|a=เชียงใหม่}}
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{tcl|th|ไทย|id=Q869}}
# [[ภาษาไทย]]
{{topics|nod|ไทย}}
p8gzyt6khma5e1iwdcb77fynv5rre58
ၵဵင်ႈ
0
239300
5724801
1918441
2026-06-16T01:15:32Z
OctraBot
3198
/* รากศัพท์ 1 */
5724801
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทใหญ่ ==
=== การออกเสียง ===
{{shn-pron|audio=shn-{{PAGENAME}}.ogg}}
=== รากศัพท์ 1 ===
{{inh+|shn|tai-swe-pro|*kliəŋꟲ²}} (Jonsson, 1991); ร่วมเชื้อสายกับ{{cog|th|เกลี้ยง}}, {{cog|nod|ᨠᩖ᩠ᨿ᩶ᨦ}}, {{cog|kkh|ᨠ᩠ᨿ᩶ᨦ}}, {{cog|lo|ກ້ຽງ}}, {{cog|tts|เกลี้ยง}}, {{cog|khb|ᦵᦂᧂᧉ}}, {{cog|blt|ꪀꪸ꫁ꪉ}}, {{cog|tdd|ᥐᥥᥒᥲ}}
==== คำคุณศัพท์ ====
{{shn-adj}}
# [[เกลี้ยง]], [[หมด]] (ไม่มีของอยู่)
# [[เสร็จ]], [[จบ]], [[สิ้น]]
=== รากศัพท์ 2 ===
ร่วมเชื้อสายกับ{{cog|th|แกล้ง}}
==== คำกริยา ====
{{shn-verb}}
# [[แกล้ง]], [[แสร้ง]]
jiih862ypet9lnhbsdb20p9ir6r7wb7
ທ່ຽງ
0
244780
5724870
1644389
2026-06-16T10:58:40Z
OctraBot
3198
/* รากศัพท์ */
5724870
wikitext
text/x-wiki
== ภาษาลาว ==
=== รากศัพท์ ===
จาก{{der|lo|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|th|เที่ยง}}, {{cog|nod|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|kkh|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|skb|เถี้ยง}}
=== การออกเสียง ===
{{lo-pron}}
=== คำคุณศัพท์ ===
{{lo-adj}}
# [[เที่ยง]], [[ตรง]], [[แน่นอน]]
=== คำนาม ===
{{lo-noun}}
# [[เที่ยง]] (เวลา)
#: {{ux|lo|[[ອາຫານ]]'''ທ່ຽງ'''|อาหาร'''เที่ยง'''}}
72z9wnhj91hm4wt30age4lcox90x9p3
5724875
5724870
2026-06-16T11:03:56Z
OctraBot
3198
/* รากศัพท์ */
5724875
wikitext
text/x-wiki
== ภาษาลาว ==
=== รากศัพท์ ===
{{inh+|lo|tai-swe-pro|*diəŋᴮ⁴||เที่ยงวัน, เที่ยงคืน}} (Jonsson, 1991), จาก{{der|lo|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|th|เที่ยง}}, {{cog|nod|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|kkh|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|skb|เถี้ยง}}
=== การออกเสียง ===
{{lo-pron}}
=== คำคุณศัพท์ ===
{{lo-adj}}
# [[เที่ยง]], [[ตรง]], [[แน่นอน]]
=== คำนาม ===
{{lo-noun}}
# [[เที่ยง]] (เวลา)
#: {{ux|lo|[[ອາຫານ]]'''ທ່ຽງ'''|อาหาร'''เที่ยง'''}}
sm9xoox8pqv5amhzot7u2zhpubqbrlm
แม่แบบ:reflexive of
10
262570
5724879
1616051
2026-06-16T11:31:49Z
OctraBot
3198
5724879
wikitext
text/x-wiki
{{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!--
-->{{#invoke:form of/templates|tagged_form_of_t|refl<!--
-->|cat={{#if:{{{p|}}}|{{{p|}}}|{{#if:{{{POS|}}}|{{{POS|}}}|คำกริยา}}}}สะท้อน<!--
-->}}<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
2ap0kcr694u78zoql1otc8r6llx94po
ไคล
0
264333
5724862
1885942
2026-06-16T09:29:41Z
Alifshinobi
397
/* รากศัพท์ 1 */
5724862
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ไคฺล}}
=== รากศัพท์ 1 ===
ร่วมเชื้อสายกับ{{cog|lo|ໄຄ}}, {{cog|nod|ᨣᩖᩱ}}, {{cog|blt|ꪼꪁ}}, {{cog|shn|ၵႆး}}
==== คำนาม ====
{{th-noun}}
# [[เหงื่อ]][[ที่]][[ปน]][[กับ]][[ฝุ่น]][[ละออง]][[ติด]][[กรัง]][[อยู่]]กับ[[หนังกำพร้า]]
#: {{ux|th|ขี้ไคล}}
#: {{ux|th|เหงื่อไคล}}
# [[ตะไคร่น้ำ]]
#: {{ux|th|ปูกินไคล}}
=== รากศัพท์ 2 ===
==== คำกริยา ====
{{th-verb|-}}
# {{lb|th|กลอน}} [[ไป]]
=== รากศัพท์ 3 ===
==== คำกริยา ====
{{th-verb}}
# {{lb|th|ล้า}} [[ทำ]][[ให้]][[คลาย]] ให้[[อ่อน]] [[หรือ]]ให้[[หย่อน]] [[โดย]][[ใช้]][[นิ้ว]][[มือ]]หรือ[[ฝ่า]]มือ[[เป็นต้น]][[คลึง]]ไป[[มา]]
rr6ljir6ez6ongwom4hcny7ev142ea9
ไต
0
266520
5724807
5723550
2026-06-16T01:24:37Z
OctraBot
3198
/* ภาษาคำเมือง */
5724807
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
[[ไฟล์:Gray1120-kidneys.png|thumb|ไต]]
=== รูปแบบอื่น ===
* {{alt|th|ใต||เลิกใช้}}
=== รากศัพท์ ===
{{inh+|th|tai-swe-pro|*taɰᴬ²||กึ๋น; ไต}}, จาก{{inh|th|tai-pro|*p.taɰᴬ||กึ๋น}}; ร่วมเชื้อสายกับ{{cog|lo|ໃຕ}}, {{m|lo|ໄຕ}}, หรือ {{m|lo|ເຕີ}}, {{cog|nyw|ไต๋}}, {{cog|nod|ᨲᩱ}}, {{cog|khb|ᦺᦎ||กึ๋น; ไต}}, {{cog|blt|ꪻꪔ||กึ๋น}}, {{cog|twh|ꪻꪔ||กึ๋น}}, {{cog|phk|တၞ်||ไต}}, {{cog|za|daw||กึ๋น}}, {{cog|skb|เต๋อ||กึ๋น; ไต}}; เทียบ{{cog|shn|တႂ်||การแข็งหรือด้านที่เกิดจากการเสียดสีของผิวหนัง}} สำหรับความหมาย 2
=== การออกเสียง ===
{{th-pron}}
=== คำนาม ===
{{th-noun}}
# [[อวัยวะ]][[คู่]][[หนึ่ง]][[ของ]][[คน]][[และ]][[สัตว์]] [[อยู่]][[ใน]][[ช่องท้อง]][[ใกล้]][[กระดูกสันหลัง]] [[ทำ]][[หน้าที่]][[ขับ]][[ของเสีย]][[ออก]][[มา]][[กับ]][[น้ำปัสสาวะ]] {{cls|th|ข้าง|ลูก}}
# [[สิ่ง]][[ซึ่ง]][[เป็น]][[ก้อน]][[แข็ง]]อยู่ใน[[เนื้อ]]
==== คำพ้องความ ====
* {{sense|อวัยวะ}} {{l|th|วักกะ}}, {{l|th|เซ่งจี๊}} / {{l|th|เซี่ยงจี๊}} {{q|ของหมู}}
==== คำแปลภาษาอื่น ====
{{trans-top|อวัยวะ}}
* กรีก: {{t+|el|νεφρό|n}}
*: โบราณ: {{t|grc|νεφρός|m}}
* กันนฑะ: {{t+|kn|ಮೂತ್ರಪಿಂಡ}}
* กาลิเซีย: {{t+|gl|ril|m}}, {{t|gl|rinle|m}}
* เกชัว: {{t|qu|rurun}}
* เกาหลี: {{t+|ko|콩팥}}, {{t+|ko|신장}} ({{t+|ko|腎臟}})
* แกลิกแบบสกอตแลนด์: {{t|gd|dubhag|f}}
* เขมร: {{t+|km|វក្កំ}}, {{t|km|តម្រងមូត្រ}} {{qualifier|พบยาก}}
* คาซัค: {{t+|kk|бүйрек}}
* กาตาลา: {{t+|ca|ronyó|m}}
* คีร์กีซ: {{t+|ky|бөйрөк}}
* คุชราต: {{t|gu|મુત્રપિંડ}}
* เคิร์ด: [[gurçik]], [[گورچیلە]]
* จ้วง: {{t|za|mak}}, {{t|za|samndaen}} {{qualifier|ถิ่น}}, {{t|za|iucij}} {{qualifier|ถิ่น}}
* จอร์เจีย: {{t|ka|თირკმელი}}, {{t|ka|ჭაჭა}} {{qualifier|ถิ่น}}
* จีน:
*: กวางตุ้ง: {{t|yue|腎}}, {{t|yue|肾|tr=san6}}
*: จีนกลาง: {{t+|cmn|腎臟}}, {{t+|cmn|肾脏|tr=shènzàng}}, {{t+|cmn|腎}}, {{t+|cmn|肾|tr=shèn}}, {{t+|cmn|腰子|tr=yāozi}}
* เจวา: {{t|ny|impso}}
* เช็ก: {{t+|cs|ledvina|f}}
* ซาร์ดิเนีย: {{t|sc|arrene}}, {{t|sc|rene}}, {{t|sc|arrigu}}, {{t|sc|errigu}}, {{t|sc|orrungione}}, {{t|sc|orrunzone}}, {{t|sc|runzone}}, {{t|sc|nerule}}
* ซุนดา: {{t|su|ᮌᮤᮔ᮪ᮏᮜ᮪}}
* ซูลู: {{t|zu|izinso}}
* เซอร์โบ-โครเอเชีย: {{t|sh|бу̀брег|m}}, {{t+|sh|bùbreg|m}}
* ญี่ปุ่น: {{t+|ja|腎臓|tr=じんぞう, jinzō}}
* ดัตช์: {{t+|nl|nier|f|tr=นีร์}}
* เดนมาร์ก: {{t+|da|nyre|c}}
* ตากาล็อก: {{t+|tl|bato}}
* ตาตาร์: {{t+|tt|бөер}}
* ทือกรึญญา: {{t|ti|ኵሊት}}
* ตุรกี: {{t+|tr|böbrek}}
* ตุรกีแบบออตโตมัน: {{t|ota|بوبرك}}
* เตลูกู: {{t+|te|మూత్రపిండము}}
* เติร์กเมน: {{t+|tk|böwrek}}
* ทมิฬ: {{t+|ta|சிறுநீரகம்}}
* ทาจิก: {{t+|tg|гурда}}
* ทิเบต: {{t|bo|མཁལ་རིལ}}
* ไทลื้อ: {{t+|khb|ᦖᦱᧅᦶᦅᧁ}}
* ไทใหญ่: {{t+|shn|မၢၵ်ႇလၼ်း}}
* นอร์มัน: {{t|nrf|rein|m}}
* นอร์เวย์:
*: นือนอสก์: {{t|nn|nyre|f|n}}
*: บุ๊กมอล: {{t+|nb|nyre|m|f|n}}
* นาวาโฮ: {{t|nv|achą́ʼáshkʼazhí}}
* เนปาล: {{t|ne|मिर्गौलो}}
* บัลแกเรีย: {{t+|bg|бъ́брек|m}}
* บาลี: {{t|pi|วกฺก|n}}
* บาสก์: {{t+|eu|giltzurrun}}
* เบงกอล: {{t|bn|কিডনি}}, {{t|bn|বৃক্ক}}, {{t+|bn|অন্ত্র}}
* เบลารุส: {{t|be|ны́рка|f}}
* แบชเคียร์: {{t|ba|бөйөр}}
* ปัญจาบ: {{t|pa|ਗੁਰਦਾ}}
* เปอร์เซีย: {{t+|fa|کلیه}}, {{t+|fa|گرده}}
* โปรตุเกส: {{t+|pt|rim|m}}
* โปแลนด์: {{t+|pl|nerka|f}}
* ฝรั่งเศส: {{t+|fr|rein|m|tr=แร็ง}}
* พม่า: {{t+|my|ကျောက်ကပ်}}
* พัชโต: {{t|ps|پوښتورګى|m}}, {{t|ps|بدوری|m}}
* ฟรียูลี: {{t|fur|rognon}}
* ฟินแลนด์: {{t+|fi|munuainen}}
* แฟโร: {{t|fo|nýra|n}}
* มราฐี: {{t|mr|गुडदा}}
* มลยาฬัม: {{t+|ml|വൃക്ക}}
* มองโกเลีย: {{t+|mn|бөөр}}
* มอลตา: {{t|mt|kilwa|f}}
* มัลดีฟส์: {{t|dv|ގުރުދާ}}
* มาซิโดเนีย: {{t|mk|бубрег|m}}
* มาเลเซีย: {{t|ms|ginjal}}, {{t|ms|kerinjal}}, {{t|ms|buah pinggang}}
* มาวรี: {{t|mi|tākihi}}, {{t|mi|whatukuhu}}, {{t|mi|whatumanawa}}
* แมนจู: {{t|mnc|ᠪᠣᠰᡥᠣ}}
* ยิดดิช: {{t|yi|ניר}}
* ยูเครน: {{t+|uk|ни́рка|f}}
* เยอรมัน: {{t+|de|Niere|f}}
* รัสเซีย: {{t+|ru|по́чка|f}}
* โรมานช์: {{t|rm|gnirunchel}}, {{t|rm|narunchel}}, {{t|rm|niruncel}}, {{t|rm|nirunchel}}, {{t|rm|ranuogl}}
* โรมาเนีย: {{t+|ro|rinichi|m}}
* ละติน: {{t+|la|rēn|m}}
* ลักเซมเบิร์ก: {{t+|lb|Nier|f}}
* ลัตเวีย: {{t|lv|niere|f}}, {{t|lv|īkstis|f-p}}
* ลาว: {{t+|lo|ໝາກໄຂ່ຫຼັງ}}, {{t+|lo|ໄຕ}}
* ลิทัวเนีย: {{t|lt|inkstas|m}}
* วัลลูน: {{t+|wa|rino}}, {{t+|wa|rno}}, {{t+|wa|rin}}
* เวเนโต: {{t|vec|reno|m}}
* เวลส์: {{t|cy|aren|f}}
* เวียดนาม: {{t+|vi|thận}} ({{t|vi|腎}})
* โวลอฟ: {{t|wo|roño}}
* โวลาปุก: {{t+|vo|roin}}
* สเปน: {{t+|es|riñón|m}}
* สโลวัก: {{t+|sk|oblička|f}}, {{t|sk|ľadvina|f}}
* สโลวีเนีย: {{t|sl|ledvica|f}}
* สวาฮีลี: {{t+|sw|figo}}
* สวีเดน: {{t+|sv|njure}}
* สันสกฤต: {{t+|sa|वृक्क}}
* สิงหล: {{t|si|වකුගඩුව}}
* แสก: {{t|skb|เต๋อ}}
* อุตซิตา: {{t+|oc|ren}}, {{t|oc|arnelh}}
* ออสซีเซีย: {{t|os|уырг}}
* อังกฤษ: {{t+|en|kidney|tr=คิดนี}}
* อังกฤษเก่า: {{t|ang|ǣdre|f}}
* อัมฮารา: {{t|am|ኩላሊት}}
* อัสตูเรียส: {{t+|ast|reñón|m}}, {{t+|ast|riñón|m}}
* อัสสัม: {{t|as|বৃক্ক}}
* อาเซอร์ไบจาน: {{t+|az|böyrək}}
* อาร์มีเนีย: {{t+|hy|երիկամ}}
* อาหรับ: {{t+|ar|كُلْيَة|f}}
* อีโด: {{t+|io|reno}}
* อิตาลี: {{t+|it|rene|m}}
* อินโดนีเซีย: {{t+|id|ginjal}}
* อินเทอร์ลิงกวา: {{t|ia|ren}}
* อุซเบก: {{t+|uz|buyrak}}
* อุยกูร์: {{t|ug|بۆرەك}}
* อูรดู: {{t|ur|گردہ|m}}
* เอเว: {{t|ee|ayiku|n}}
* เอสโตเนีย: {{t+|et|neer}}
* เอสเปรันโต: {{t|eo|reno}}
* อาฟรีกานส์: {{t|af|nier}}
* แอลเบเนีย: {{t+|sq|veshkë|f}}, {{t|sq|rrâni}}
* โอริยา: {{t+|or|ମୂତ୍ରାଶୟ}}, {{t|or|ବୃକ୍କକ}}
* ไอซ์แลนด์: {{t+|is|nýra|n}}
* ไอริช: {{t+|ga|duán|m}}
* ฮังการี: {{t+|hu|vese}}
* ฮาวาย: {{t|haw|hakuʻala}}
* ฮินดี: {{t+|hi|गुर्दा|m}}
* ฮีบรู: {{t+|he|כִּלְיָה|f}}, {{t|he|כליות|f-p}}
* ฮุนสริก: {{t|hrx|Nier|f}}
* เฮาซา: {{t|ha|ƙoda}}
* ไฮติครีโอล: {{t|ht|ren}}
{{trans-bottom}}
== ภาษาคำเมือง ==
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{pronunciation spelling of|nod|ᨴᩱ}}
# {{pronunciation spelling of|nod|ᨴᩱ᩠ᨿ}}
=== คำนาม ===
{{nod-noun}}
# {{pronunciation spelling of|nod|ᨴᩱ}}
=== คำนาม ===
{{nod-noun|tl=1}}
# {{pronunciation spelling of|nod|ᨲᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไท}}
=== การออกเสียง ===
* {{IPA|nyw|/taj˨˨/}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท]]
i47soz8c7dbm4u4fw4wo5uk8g0imbwz
5724808
5724807
2026-06-16T01:24:55Z
OctraBot
3198
/* คำนาม */
5724808
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
[[ไฟล์:Gray1120-kidneys.png|thumb|ไต]]
=== รูปแบบอื่น ===
* {{alt|th|ใต||เลิกใช้}}
=== รากศัพท์ ===
{{inh+|th|tai-swe-pro|*taɰᴬ²||กึ๋น; ไต}}, จาก{{inh|th|tai-pro|*p.taɰᴬ||กึ๋น}}; ร่วมเชื้อสายกับ{{cog|lo|ໃຕ}}, {{m|lo|ໄຕ}}, หรือ {{m|lo|ເຕີ}}, {{cog|nyw|ไต๋}}, {{cog|nod|ᨲᩱ}}, {{cog|khb|ᦺᦎ||กึ๋น; ไต}}, {{cog|blt|ꪻꪔ||กึ๋น}}, {{cog|twh|ꪻꪔ||กึ๋น}}, {{cog|phk|တၞ်||ไต}}, {{cog|za|daw||กึ๋น}}, {{cog|skb|เต๋อ||กึ๋น; ไต}}; เทียบ{{cog|shn|တႂ်||การแข็งหรือด้านที่เกิดจากการเสียดสีของผิวหนัง}} สำหรับความหมาย 2
=== การออกเสียง ===
{{th-pron}}
=== คำนาม ===
{{th-noun}}
# [[อวัยวะ]][[คู่]][[หนึ่ง]][[ของ]][[คน]][[และ]][[สัตว์]] [[อยู่]][[ใน]][[ช่องท้อง]][[ใกล้]][[กระดูกสันหลัง]] [[ทำ]][[หน้าที่]][[ขับ]][[ของเสีย]][[ออก]][[มา]][[กับ]][[น้ำปัสสาวะ]] {{cls|th|ข้าง|ลูก}}
# [[สิ่ง]][[ซึ่ง]][[เป็น]][[ก้อน]][[แข็ง]]อยู่ใน[[เนื้อ]]
==== คำพ้องความ ====
* {{sense|อวัยวะ}} {{l|th|วักกะ}}, {{l|th|เซ่งจี๊}} / {{l|th|เซี่ยงจี๊}} {{q|ของหมู}}
==== คำแปลภาษาอื่น ====
{{trans-top|อวัยวะ}}
* กรีก: {{t+|el|νεφρό|n}}
*: โบราณ: {{t|grc|νεφρός|m}}
* กันนฑะ: {{t+|kn|ಮೂತ್ರಪಿಂಡ}}
* กาลิเซีย: {{t+|gl|ril|m}}, {{t|gl|rinle|m}}
* เกชัว: {{t|qu|rurun}}
* เกาหลี: {{t+|ko|콩팥}}, {{t+|ko|신장}} ({{t+|ko|腎臟}})
* แกลิกแบบสกอตแลนด์: {{t|gd|dubhag|f}}
* เขมร: {{t+|km|វក្កំ}}, {{t|km|តម្រងមូត្រ}} {{qualifier|พบยาก}}
* คาซัค: {{t+|kk|бүйрек}}
* กาตาลา: {{t+|ca|ronyó|m}}
* คีร์กีซ: {{t+|ky|бөйрөк}}
* คุชราต: {{t|gu|મુત્રપિંડ}}
* เคิร์ด: [[gurçik]], [[گورچیلە]]
* จ้วง: {{t|za|mak}}, {{t|za|samndaen}} {{qualifier|ถิ่น}}, {{t|za|iucij}} {{qualifier|ถิ่น}}
* จอร์เจีย: {{t|ka|თირკმელი}}, {{t|ka|ჭაჭა}} {{qualifier|ถิ่น}}
* จีน:
*: กวางตุ้ง: {{t|yue|腎}}, {{t|yue|肾|tr=san6}}
*: จีนกลาง: {{t+|cmn|腎臟}}, {{t+|cmn|肾脏|tr=shènzàng}}, {{t+|cmn|腎}}, {{t+|cmn|肾|tr=shèn}}, {{t+|cmn|腰子|tr=yāozi}}
* เจวา: {{t|ny|impso}}
* เช็ก: {{t+|cs|ledvina|f}}
* ซาร์ดิเนีย: {{t|sc|arrene}}, {{t|sc|rene}}, {{t|sc|arrigu}}, {{t|sc|errigu}}, {{t|sc|orrungione}}, {{t|sc|orrunzone}}, {{t|sc|runzone}}, {{t|sc|nerule}}
* ซุนดา: {{t|su|ᮌᮤᮔ᮪ᮏᮜ᮪}}
* ซูลู: {{t|zu|izinso}}
* เซอร์โบ-โครเอเชีย: {{t|sh|бу̀брег|m}}, {{t+|sh|bùbreg|m}}
* ญี่ปุ่น: {{t+|ja|腎臓|tr=じんぞう, jinzō}}
* ดัตช์: {{t+|nl|nier|f|tr=นีร์}}
* เดนมาร์ก: {{t+|da|nyre|c}}
* ตากาล็อก: {{t+|tl|bato}}
* ตาตาร์: {{t+|tt|бөер}}
* ทือกรึญญา: {{t|ti|ኵሊት}}
* ตุรกี: {{t+|tr|böbrek}}
* ตุรกีแบบออตโตมัน: {{t|ota|بوبرك}}
* เตลูกู: {{t+|te|మూత్రపిండము}}
* เติร์กเมน: {{t+|tk|böwrek}}
* ทมิฬ: {{t+|ta|சிறுநீரகம்}}
* ทาจิก: {{t+|tg|гурда}}
* ทิเบต: {{t|bo|མཁལ་རིལ}}
* ไทลื้อ: {{t+|khb|ᦖᦱᧅᦶᦅᧁ}}
* ไทใหญ่: {{t+|shn|မၢၵ်ႇလၼ်း}}
* นอร์มัน: {{t|nrf|rein|m}}
* นอร์เวย์:
*: นือนอสก์: {{t|nn|nyre|f|n}}
*: บุ๊กมอล: {{t+|nb|nyre|m|f|n}}
* นาวาโฮ: {{t|nv|achą́ʼáshkʼazhí}}
* เนปาล: {{t|ne|मिर्गौलो}}
* บัลแกเรีย: {{t+|bg|бъ́брек|m}}
* บาลี: {{t|pi|วกฺก|n}}
* บาสก์: {{t+|eu|giltzurrun}}
* เบงกอล: {{t|bn|কিডনি}}, {{t|bn|বৃক্ক}}, {{t+|bn|অন্ত্র}}
* เบลารุส: {{t|be|ны́рка|f}}
* แบชเคียร์: {{t|ba|бөйөр}}
* ปัญจาบ: {{t|pa|ਗੁਰਦਾ}}
* เปอร์เซีย: {{t+|fa|کلیه}}, {{t+|fa|گرده}}
* โปรตุเกส: {{t+|pt|rim|m}}
* โปแลนด์: {{t+|pl|nerka|f}}
* ฝรั่งเศส: {{t+|fr|rein|m|tr=แร็ง}}
* พม่า: {{t+|my|ကျောက်ကပ်}}
* พัชโต: {{t|ps|پوښتورګى|m}}, {{t|ps|بدوری|m}}
* ฟรียูลี: {{t|fur|rognon}}
* ฟินแลนด์: {{t+|fi|munuainen}}
* แฟโร: {{t|fo|nýra|n}}
* มราฐี: {{t|mr|गुडदा}}
* มลยาฬัม: {{t+|ml|വൃക്ക}}
* มองโกเลีย: {{t+|mn|бөөр}}
* มอลตา: {{t|mt|kilwa|f}}
* มัลดีฟส์: {{t|dv|ގުރުދާ}}
* มาซิโดเนีย: {{t|mk|бубрег|m}}
* มาเลเซีย: {{t|ms|ginjal}}, {{t|ms|kerinjal}}, {{t|ms|buah pinggang}}
* มาวรี: {{t|mi|tākihi}}, {{t|mi|whatukuhu}}, {{t|mi|whatumanawa}}
* แมนจู: {{t|mnc|ᠪᠣᠰᡥᠣ}}
* ยิดดิช: {{t|yi|ניר}}
* ยูเครน: {{t+|uk|ни́рка|f}}
* เยอรมัน: {{t+|de|Niere|f}}
* รัสเซีย: {{t+|ru|по́чка|f}}
* โรมานช์: {{t|rm|gnirunchel}}, {{t|rm|narunchel}}, {{t|rm|niruncel}}, {{t|rm|nirunchel}}, {{t|rm|ranuogl}}
* โรมาเนีย: {{t+|ro|rinichi|m}}
* ละติน: {{t+|la|rēn|m}}
* ลักเซมเบิร์ก: {{t+|lb|Nier|f}}
* ลัตเวีย: {{t|lv|niere|f}}, {{t|lv|īkstis|f-p}}
* ลาว: {{t+|lo|ໝາກໄຂ່ຫຼັງ}}, {{t+|lo|ໄຕ}}
* ลิทัวเนีย: {{t|lt|inkstas|m}}
* วัลลูน: {{t+|wa|rino}}, {{t+|wa|rno}}, {{t+|wa|rin}}
* เวเนโต: {{t|vec|reno|m}}
* เวลส์: {{t|cy|aren|f}}
* เวียดนาม: {{t+|vi|thận}} ({{t|vi|腎}})
* โวลอฟ: {{t|wo|roño}}
* โวลาปุก: {{t+|vo|roin}}
* สเปน: {{t+|es|riñón|m}}
* สโลวัก: {{t+|sk|oblička|f}}, {{t|sk|ľadvina|f}}
* สโลวีเนีย: {{t|sl|ledvica|f}}
* สวาฮีลี: {{t+|sw|figo}}
* สวีเดน: {{t+|sv|njure}}
* สันสกฤต: {{t+|sa|वृक्क}}
* สิงหล: {{t|si|වකුගඩුව}}
* แสก: {{t|skb|เต๋อ}}
* อุตซิตา: {{t+|oc|ren}}, {{t|oc|arnelh}}
* ออสซีเซีย: {{t|os|уырг}}
* อังกฤษ: {{t+|en|kidney|tr=คิดนี}}
* อังกฤษเก่า: {{t|ang|ǣdre|f}}
* อัมฮารา: {{t|am|ኩላሊት}}
* อัสตูเรียส: {{t+|ast|reñón|m}}, {{t+|ast|riñón|m}}
* อัสสัม: {{t|as|বৃক্ক}}
* อาเซอร์ไบจาน: {{t+|az|böyrək}}
* อาร์มีเนีย: {{t+|hy|երիկամ}}
* อาหรับ: {{t+|ar|كُلْيَة|f}}
* อีโด: {{t+|io|reno}}
* อิตาลี: {{t+|it|rene|m}}
* อินโดนีเซีย: {{t+|id|ginjal}}
* อินเทอร์ลิงกวา: {{t|ia|ren}}
* อุซเบก: {{t+|uz|buyrak}}
* อุยกูร์: {{t|ug|بۆرەك}}
* อูรดู: {{t|ur|گردہ|m}}
* เอเว: {{t|ee|ayiku|n}}
* เอสโตเนีย: {{t+|et|neer}}
* เอสเปรันโต: {{t|eo|reno}}
* อาฟรีกานส์: {{t|af|nier}}
* แอลเบเนีย: {{t+|sq|veshkë|f}}, {{t|sq|rrâni}}
* โอริยา: {{t+|or|ମୂତ୍ରାଶୟ}}, {{t|or|ବୃକ୍କକ}}
* ไอซ์แลนด์: {{t+|is|nýra|n}}
* ไอริช: {{t+|ga|duán|m}}
* ฮังการี: {{t+|hu|vese}}
* ฮาวาย: {{t|haw|hakuʻala}}
* ฮินดี: {{t+|hi|गुर्दा|m}}
* ฮีบรู: {{t+|he|כִּלְיָה|f}}, {{t|he|כליות|f-p}}
* ฮุนสริก: {{t|hrx|Nier|f}}
* เฮาซา: {{t|ha|ƙoda}}
* ไฮติครีโอล: {{t|ht|ren}}
{{trans-bottom}}
== ภาษาคำเมือง ==
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{pronunciation spelling of|nod|ᨴᩱ}}
# {{pronunciation spelling of|nod|ᨴᩱ᩠ᨿ}}
=== คำนาม ===
{{nod-noun}}
# {{pronunciation spelling of|nod|ᨴᩱ}}
=== คำนาม ===
{{nod-noun|tl=1}}
# {{alternative spelling of|nod|ᨲᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไท}}
=== การออกเสียง ===
* {{IPA|nyw|/taj˨˨/}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท]]
3nkugy1i97l1ojsmu8ftuowtac8piru
5724809
5724808
2026-06-16T01:25:29Z
OctraBot
3198
/* ภาษาคำเมือง */
5724809
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
[[ไฟล์:Gray1120-kidneys.png|thumb|ไต]]
=== รูปแบบอื่น ===
* {{alt|th|ใต||เลิกใช้}}
=== รากศัพท์ ===
{{inh+|th|tai-swe-pro|*taɰᴬ²||กึ๋น; ไต}}, จาก{{inh|th|tai-pro|*p.taɰᴬ||กึ๋น}}; ร่วมเชื้อสายกับ{{cog|lo|ໃຕ}}, {{m|lo|ໄຕ}}, หรือ {{m|lo|ເຕີ}}, {{cog|nyw|ไต๋}}, {{cog|nod|ᨲᩱ}}, {{cog|khb|ᦺᦎ||กึ๋น; ไต}}, {{cog|blt|ꪻꪔ||กึ๋น}}, {{cog|twh|ꪻꪔ||กึ๋น}}, {{cog|phk|တၞ်||ไต}}, {{cog|za|daw||กึ๋น}}, {{cog|skb|เต๋อ||กึ๋น; ไต}}; เทียบ{{cog|shn|တႂ်||การแข็งหรือด้านที่เกิดจากการเสียดสีของผิวหนัง}} สำหรับความหมาย 2
=== การออกเสียง ===
{{th-pron}}
=== คำนาม ===
{{th-noun}}
# [[อวัยวะ]][[คู่]][[หนึ่ง]][[ของ]][[คน]][[และ]][[สัตว์]] [[อยู่]][[ใน]][[ช่องท้อง]][[ใกล้]][[กระดูกสันหลัง]] [[ทำ]][[หน้าที่]][[ขับ]][[ของเสีย]][[ออก]][[มา]][[กับ]][[น้ำปัสสาวะ]] {{cls|th|ข้าง|ลูก}}
# [[สิ่ง]][[ซึ่ง]][[เป็น]][[ก้อน]][[แข็ง]]อยู่ใน[[เนื้อ]]
==== คำพ้องความ ====
* {{sense|อวัยวะ}} {{l|th|วักกะ}}, {{l|th|เซ่งจี๊}} / {{l|th|เซี่ยงจี๊}} {{q|ของหมู}}
==== คำแปลภาษาอื่น ====
{{trans-top|อวัยวะ}}
* กรีก: {{t+|el|νεφρό|n}}
*: โบราณ: {{t|grc|νεφρός|m}}
* กันนฑะ: {{t+|kn|ಮೂತ್ರಪಿಂಡ}}
* กาลิเซีย: {{t+|gl|ril|m}}, {{t|gl|rinle|m}}
* เกชัว: {{t|qu|rurun}}
* เกาหลี: {{t+|ko|콩팥}}, {{t+|ko|신장}} ({{t+|ko|腎臟}})
* แกลิกแบบสกอตแลนด์: {{t|gd|dubhag|f}}
* เขมร: {{t+|km|វក្កំ}}, {{t|km|តម្រងមូត្រ}} {{qualifier|พบยาก}}
* คาซัค: {{t+|kk|бүйрек}}
* กาตาลา: {{t+|ca|ronyó|m}}
* คีร์กีซ: {{t+|ky|бөйрөк}}
* คุชราต: {{t|gu|મુત્રપિંડ}}
* เคิร์ด: [[gurçik]], [[گورچیلە]]
* จ้วง: {{t|za|mak}}, {{t|za|samndaen}} {{qualifier|ถิ่น}}, {{t|za|iucij}} {{qualifier|ถิ่น}}
* จอร์เจีย: {{t|ka|თირკმელი}}, {{t|ka|ჭაჭა}} {{qualifier|ถิ่น}}
* จีน:
*: กวางตุ้ง: {{t|yue|腎}}, {{t|yue|肾|tr=san6}}
*: จีนกลาง: {{t+|cmn|腎臟}}, {{t+|cmn|肾脏|tr=shènzàng}}, {{t+|cmn|腎}}, {{t+|cmn|肾|tr=shèn}}, {{t+|cmn|腰子|tr=yāozi}}
* เจวา: {{t|ny|impso}}
* เช็ก: {{t+|cs|ledvina|f}}
* ซาร์ดิเนีย: {{t|sc|arrene}}, {{t|sc|rene}}, {{t|sc|arrigu}}, {{t|sc|errigu}}, {{t|sc|orrungione}}, {{t|sc|orrunzone}}, {{t|sc|runzone}}, {{t|sc|nerule}}
* ซุนดา: {{t|su|ᮌᮤᮔ᮪ᮏᮜ᮪}}
* ซูลู: {{t|zu|izinso}}
* เซอร์โบ-โครเอเชีย: {{t|sh|бу̀брег|m}}, {{t+|sh|bùbreg|m}}
* ญี่ปุ่น: {{t+|ja|腎臓|tr=じんぞう, jinzō}}
* ดัตช์: {{t+|nl|nier|f|tr=นีร์}}
* เดนมาร์ก: {{t+|da|nyre|c}}
* ตากาล็อก: {{t+|tl|bato}}
* ตาตาร์: {{t+|tt|бөер}}
* ทือกรึญญา: {{t|ti|ኵሊት}}
* ตุรกี: {{t+|tr|böbrek}}
* ตุรกีแบบออตโตมัน: {{t|ota|بوبرك}}
* เตลูกู: {{t+|te|మూత్రపిండము}}
* เติร์กเมน: {{t+|tk|böwrek}}
* ทมิฬ: {{t+|ta|சிறுநீரகம்}}
* ทาจิก: {{t+|tg|гурда}}
* ทิเบต: {{t|bo|མཁལ་རིལ}}
* ไทลื้อ: {{t+|khb|ᦖᦱᧅᦶᦅᧁ}}
* ไทใหญ่: {{t+|shn|မၢၵ်ႇလၼ်း}}
* นอร์มัน: {{t|nrf|rein|m}}
* นอร์เวย์:
*: นือนอสก์: {{t|nn|nyre|f|n}}
*: บุ๊กมอล: {{t+|nb|nyre|m|f|n}}
* นาวาโฮ: {{t|nv|achą́ʼáshkʼazhí}}
* เนปาล: {{t|ne|मिर्गौलो}}
* บัลแกเรีย: {{t+|bg|бъ́брек|m}}
* บาลี: {{t|pi|วกฺก|n}}
* บาสก์: {{t+|eu|giltzurrun}}
* เบงกอล: {{t|bn|কিডনি}}, {{t|bn|বৃক্ক}}, {{t+|bn|অন্ত্র}}
* เบลารุส: {{t|be|ны́рка|f}}
* แบชเคียร์: {{t|ba|бөйөр}}
* ปัญจาบ: {{t|pa|ਗੁਰਦਾ}}
* เปอร์เซีย: {{t+|fa|کلیه}}, {{t+|fa|گرده}}
* โปรตุเกส: {{t+|pt|rim|m}}
* โปแลนด์: {{t+|pl|nerka|f}}
* ฝรั่งเศส: {{t+|fr|rein|m|tr=แร็ง}}
* พม่า: {{t+|my|ကျောက်ကပ်}}
* พัชโต: {{t|ps|پوښتورګى|m}}, {{t|ps|بدوری|m}}
* ฟรียูลี: {{t|fur|rognon}}
* ฟินแลนด์: {{t+|fi|munuainen}}
* แฟโร: {{t|fo|nýra|n}}
* มราฐี: {{t|mr|गुडदा}}
* มลยาฬัม: {{t+|ml|വൃക്ക}}
* มองโกเลีย: {{t+|mn|бөөр}}
* มอลตา: {{t|mt|kilwa|f}}
* มัลดีฟส์: {{t|dv|ގުރުދާ}}
* มาซิโดเนีย: {{t|mk|бубрег|m}}
* มาเลเซีย: {{t|ms|ginjal}}, {{t|ms|kerinjal}}, {{t|ms|buah pinggang}}
* มาวรี: {{t|mi|tākihi}}, {{t|mi|whatukuhu}}, {{t|mi|whatumanawa}}
* แมนจู: {{t|mnc|ᠪᠣᠰᡥᠣ}}
* ยิดดิช: {{t|yi|ניר}}
* ยูเครน: {{t+|uk|ни́рка|f}}
* เยอรมัน: {{t+|de|Niere|f}}
* รัสเซีย: {{t+|ru|по́чка|f}}
* โรมานช์: {{t|rm|gnirunchel}}, {{t|rm|narunchel}}, {{t|rm|niruncel}}, {{t|rm|nirunchel}}, {{t|rm|ranuogl}}
* โรมาเนีย: {{t+|ro|rinichi|m}}
* ละติน: {{t+|la|rēn|m}}
* ลักเซมเบิร์ก: {{t+|lb|Nier|f}}
* ลัตเวีย: {{t|lv|niere|f}}, {{t|lv|īkstis|f-p}}
* ลาว: {{t+|lo|ໝາກໄຂ່ຫຼັງ}}, {{t+|lo|ໄຕ}}
* ลิทัวเนีย: {{t|lt|inkstas|m}}
* วัลลูน: {{t+|wa|rino}}, {{t+|wa|rno}}, {{t+|wa|rin}}
* เวเนโต: {{t|vec|reno|m}}
* เวลส์: {{t|cy|aren|f}}
* เวียดนาม: {{t+|vi|thận}} ({{t|vi|腎}})
* โวลอฟ: {{t|wo|roño}}
* โวลาปุก: {{t+|vo|roin}}
* สเปน: {{t+|es|riñón|m}}
* สโลวัก: {{t+|sk|oblička|f}}, {{t|sk|ľadvina|f}}
* สโลวีเนีย: {{t|sl|ledvica|f}}
* สวาฮีลี: {{t+|sw|figo}}
* สวีเดน: {{t+|sv|njure}}
* สันสกฤต: {{t+|sa|वृक्क}}
* สิงหล: {{t|si|වකුගඩුව}}
* แสก: {{t|skb|เต๋อ}}
* อุตซิตา: {{t+|oc|ren}}, {{t|oc|arnelh}}
* ออสซีเซีย: {{t|os|уырг}}
* อังกฤษ: {{t+|en|kidney|tr=คิดนี}}
* อังกฤษเก่า: {{t|ang|ǣdre|f}}
* อัมฮารา: {{t|am|ኩላሊት}}
* อัสตูเรียส: {{t+|ast|reñón|m}}, {{t+|ast|riñón|m}}
* อัสสัม: {{t|as|বৃক্ক}}
* อาเซอร์ไบจาน: {{t+|az|böyrək}}
* อาร์มีเนีย: {{t+|hy|երիկամ}}
* อาหรับ: {{t+|ar|كُلْيَة|f}}
* อีโด: {{t+|io|reno}}
* อิตาลี: {{t+|it|rene|m}}
* อินโดนีเซีย: {{t+|id|ginjal}}
* อินเทอร์ลิงกวา: {{t|ia|ren}}
* อุซเบก: {{t+|uz|buyrak}}
* อุยกูร์: {{t|ug|بۆرەك}}
* อูรดู: {{t|ur|گردہ|m}}
* เอเว: {{t|ee|ayiku|n}}
* เอสโตเนีย: {{t+|et|neer}}
* เอสเปรันโต: {{t|eo|reno}}
* อาฟรีกานส์: {{t|af|nier}}
* แอลเบเนีย: {{t+|sq|veshkë|f}}, {{t|sq|rrâni}}
* โอริยา: {{t+|or|ମୂତ୍ରାଶୟ}}, {{t|or|ବୃକ୍କକ}}
* ไอซ์แลนด์: {{t+|is|nýra|n}}
* ไอริช: {{t+|ga|duán|m}}
* ฮังการี: {{t+|hu|vese}}
* ฮาวาย: {{t|haw|hakuʻala}}
* ฮินดี: {{t+|hi|गुर्दा|m}}
* ฮีบรู: {{t+|he|כִּלְיָה|f}}, {{t|he|כליות|f-p}}
* ฮุนสริก: {{t|hrx|Nier|f}}
* เฮาซา: {{t|ha|ƙoda}}
* ไฮติครีโอล: {{t|ht|ren}}
{{trans-bottom}}
== ภาษาคำเมือง ==
=== รากศัพท์ 1 ===
==== คำวิสามานยนาม ====
{{nod-proper noun}}
# {{pronunciation spelling of|nod|ᨴᩱ}}
# {{pronunciation spelling of|nod|ᨴᩱ᩠ᨿ}}
==== คำนาม ====
{{nod-noun}}
# {{pronunciation spelling of|nod|ᨴᩱ}}
=== รากศัพท์ 2 ===
==== คำนาม ====
{{nod-noun|tl=1}}
# {{alternative spelling of|nod|ᨲᩱ}}
{{topics|nod|ไทย}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
* {{alt|nyw|ไท}}
=== การออกเสียง ===
* {{IPA|nyw|/taj˨˨/}}
=== คำนาม ===
{{nyw-noun}}
# [[ไท]]
e6rbfd5hocsn4hqd0zidxoix2k0dvrl
ทรอ
0
274134
5724793
1520549
2026-06-15T13:58:07Z
CorneliusVnG
17117
เพิ่มตัวอย่าง เติมข้อเสนอแนะ ต้องจัดหน้า
5724793
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ซอ}}
'''ข้อควรทราบ'''
จดหมายเหตุลาลูแบร์เก็บคำนี้ไว้ได้ เขียนว่า Trô === อ้างอิง ===
{{https://archive.org/details/bub_gb_PNUMAAAAYAAJ/page/n261/mode/2up}} อาจจะออกเสียงควบกล้ำแท้ แล้วมาออกเสียง ทร เป็น ซ ในภายหลังก็ได้
=== คำนาม ===
{{th-noun|คัน}}
# {{lb|th|โบ|กลอน}} [[ซอ]]
#: {{ux|th|สยงสารสงงคีตขับทรอท่อ}} (ม. คำหลวง ทานกัณฑ์)
#: {{ux|th|แจรงทรอทรในสารสยงยิ่ง จเข้ดิ่งสารสวรรค์}} (ม. คำหลวง มหาราช)
#: {{ux|th|เสียงแฉ่งเสียงสาวทรอ ข่าวชู้}} (กำสรวลสมุทร)
qltcxkgwd654lpc8ks670zst8e5em6p
5724795
5724793
2026-06-15T16:47:24Z
Alifshinobi
397
5724795
wikitext
text/x-wiki
== ภาษาไทย ==
=== รากศัพท์ ===
จดหมายเหตุลาลูแบร์เก็บคำนี้ไว้ได้ เขียนว่า Trô<ref>https://archive.org/details/bub_gb_PNUMAAAAYAAJ/page/n261/mode/2up</ref> อาจจะออกเสียงควบกล้ำแท้ แล้วมาออกเสียง ทร เป็น ซ ในภายหลังก็ได้
=== การออกเสียง ===
{{th-pron|ซอ}}
=== คำนาม ===
{{th-noun|คัน}}
# {{lb|th|โบ|กลอน}} [[ซอ]]
#: {{ux|th|สยงสารสงงคีตขับทรอท่อ}} (ม. คำหลวง ทานกัณฑ์)
#: {{ux|th|แจรงทรอทรในสารสยงยิ่ง จเข้ดิ่งสารสวรรค์}} (ม. คำหลวง มหาราช)
#: {{ux|th|เสียงแฉ่งเสียงสาวทรอ ข่าวชู้}} (กำสรวลสมุทร)
=== อ้างอิง ===
{{รายการอ้างอิง}}
4yyv3q5n11c040edkfktbnu2tt3tp4n
วิกิพจนานุกรม:แจ้งผู้ดูแลระบบ
4
283125
5724880
5676722
2026-06-16T11:39:50Z
Poompak
12275
5724880
wikitext
text/x-wiki
{{/ส่วนหัว}}
== คำขอแก้ไข ==
ผมสร้างคำขอใหม่ที่[[คุยเรื่องมอดูล:mul-letter]] แต่ติดตัวกรองผู้ใช้ใหม่ โปรดพิจารณาด้วยครับขอบคุณครับ --[[ผู้ใช้:Patsagorn Y.|Patsagorn Y.]] ([[คุยกับผู้ใช้:Patsagorn Y.|คุย]]) 12:06, 2 กันยายน 2563 (+07)
== deprecated global wg varibles on HotCat ==
เนื่องจากมีเดียวิกิได้มี[[phab:T72470|การอัพเดตซอฟต์แวร์]]ทำให้การแปลภาษาไทยของ HotCat ในหน้า [[มีเดียวิกิ:Gadget-HotCat.js/local_defaults]] ใช้การไม่ได้ ซึ่งมีกระทบทำให้อุปกรณ์เสริมนี้ใช้ไม่ได้ มีวิธีแก้ไขโดยใส่
<pre>var wgArticleId = mw.config.get('wgArticleId');</pre>
เข้าไประหว่างบรรทัดที่ 47 - 48
สามารถดูการแก้ไขที่แก้ไขแล้วประกอบที่ [[w:Special:Diff/9337615]] ด้วยครับ --[[ผู้ใช้:Bebiezaza|Bebiezaza]] ([[คุยกับผู้ใช้:Bebiezaza|คุย]]) 13:35, 29 เมษายน 2564 (+07)
:{{done}} ทำแล้ว ไม่รู้ดีขึ้นหรือเปล่า --[[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 20:53, 30 เมษายน 2564 (+07)
:: เท่าที่ดูก็ดีขึ้นแล้วนะครับ กลับมาใช้งานได้แล้ว --[[ผู้ใช้:Bebiezaza|Bebiezaza]] ([[คุยกับผู้ใช้:Bebiezaza|คุย]]) 21:08, 30 เมษายน 2564 (+07)
== แก้ไขตอนลบไม่แสดงจำนวนหน้าย่อย (ต้องใช้สิทธิ์ IA) ==
เนื่องจากเวลาจะลบหน้าแล้วระบบไม่แสดงจำนวนหน้าย่อย เนื่องจากความผิดพลาดในโค้ดอินเตอร์เฟซ จึงมาแจ้งเพื่อให้ปรับปรุงโค้ดในหน้า [[มีเดียวิกิ:Deleting-subpages-warning]] ดังนี้
<source lang=diff>
- <strong>คำเตือน:</strong> หน้าที่คุณกำลังจะลบมี[[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|หน้าย่อย $ หน้า|51=มากกว่า 50 หน้า}}]]
+ <strong>คำเตือน:</strong> หน้าที่คุณกำลังจะลบมี[[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|หน้าย่อย $1 หน้า|51=มากกว่า 50 หน้า}}]]
</source>
ขอบคุณครับ (และขอขอบคุณ [[ผู้ใช้:นคเรศ]] ที่ช่วยหาหน้าอินเตอร์เฟซให้ครับ) --[[ผู้ใช้:Bebiezaza|Bebiezaza]] ([[คุยกับผู้ใช้:Bebiezaza|คุย]]) 03:34, 13 พฤษภาคม 2564 (+07)
::{{done}} --[[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 04:36, 13 พฤษภาคม 2564 (+07)
== ติดตามกลุ่มหุ่นเชิด ==
อยากให้ผู้ดูแลระบบวิกิพจนานุกรมทุกท่านช่วยติดตามกลุ่มหุ่นเชิด [[w:วิกิพีเดีย:การก่อกวนต่อเนื่องยาวนาน/Phanuruch8555|Ph8555]] เนื่องจากมีการก่อกวนข้ามโครงการ มีการสร้างหน้านโยบายที่ไม่ผ่านความคิดเห็นของชุมชน [[ผู้ใช้:Kaoavi|Kaoavi]] ([[คุยกับผู้ใช้:Kaoavi|คุย]]) 21:18, 13 พฤษภาคม 2566 (+07)
== บล็อก ==
รบกวนผู้ดูแลระบบพิจารณาบล็อก [[ผู้ใช้:อีหน้าห*]] เนื่องจากเป็นหุ่นเชิดของ ph8555 และมีพฤติกรรมไม่เหมาะสม และบล็อกช่วงไอพี 2001:FB1:154:0:0:0:0:0/46 ซึ่งเป็นช่วงไอพีหลักที่ผู้ก่อกวนใช้ --[[ผู้ใช้:Kaoavi|Kaoavi]] ([[คุยกับผู้ใช้:Kaoavi|คุย]]) 14:24, 17 พฤษภาคม 2566 (+07)
::{{done}} เฉพาะผู้ใช้ดังกล่าว --[[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 17:08, 18 มิถุนายน 2566 (+07)
:::{{ping|Octahedron80}} บัญชีถูก [[Special:CentralAuth/อีหน้าห*|globally locked]] แล้วครับ
== Report concerning 2403:6200:8850:2402:89C1:8EB3:2BB7:20C0 ==
* [[Special:Contribs/2403:6200:8850:2402:89C1:8EB3:2BB7:20C0]]
* Removing content from pages. Sorry for not knowing your language.
[[ผู้ใช้:Yahya|Yahya]] ([[คุยกับผู้ใช้:Yahya|คุย]]) 00:54, 12 กรกฎาคม 2566 (+07)
== translatewiki.net ==
{{ping|Octahedron80|Ponpan|B20180|Alifshinobi|NNNEIFU}}
ขอเชิญชวน[[:w:วิกิพีเดีย:สภากาแฟ/อภิปราย/translatewiki.net|ร่วมกันแปล]] translatewiki.net คิดว่าในบรรดาโครงการพี่น้อง ที่วิกิพจนานุกรมจะมีความสำคัญในการดำเนินการส่วนนี้มากที่สุดครับ [[ผู้ใช้:Taweetham|taweethaも]] ([[คุยกับผู้ใช้:Taweetham|คุย]]) 07:36, 20 มกราคม 2567 (+07)
== Report concerning 49.237.38.62 ==
*[[Special:Contribs/49.237.38.62]] - Reason: Vandalism.
[[ผู้ใช้:Hide on Rosé|Hide on Rosé]] ([[คุยกับผู้ใช้:Hide on Rosé|คุย]]) 20:12, 8 กุมภาพันธ์ 2567 (+07)
: {{ping|Octahedron80}} [[ผู้ใช้:Hide on Rosé|Hide on Rosé]] ([[คุยกับผู้ใช้:Hide on Rosé|คุย]]) 20:12, 8 กุมภาพันธ์ 2567 (+07)
Sorry for not online. A global-op already took it down. --[[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 20:46, 8 กุมภาพันธ์ 2567 (+07)
== เพิ่มข้อความในประกาศ ==
ขอให้ผู้ดูแลพิจารณาเพิ่มข้อความต่อไปนี้ในแม่แบบประกาศด้วยครับ
<code>* 17 ก.พ. - [[:m:Wikimedia Thailand/Rangsitpol Family Topic Ban|อภิปราย]]มาตรการห้ามเขียนบทความตระกูลรังสิตพลในโครงการวิกิมีเดียภาษาไทย</code> [[ผู้ใช้:Harley Hartwell|Harley Hartwell]] ([[คุยกับผู้ใช้:Harley Hartwell|คุย]]) 20:06, 17 กุมภาพันธ์ 2567 (+07)
==บังคับใช้มาตรการห้ามเขียนเนื้อหาของตระกูลรังสิตพล==
ตามที่ประชาคมวิกิมีเดียประเทศไทยได้ออกเสียงรับรองมาตรการ[[:m:Wikimedia Thailand/Rangsitpol Family Topic Ban|ห้ามเขียนเนื้อหาของตระกูลรังสิตพล]] จึงขอแจ้งให้ผู้ดูแลระบบทราบถึงมาตรการดังกล่าว ดังต่อไปนี้
# '''ห้ามมิให้'''ผู้ใช้ (ไม่ว่าจะเป็นผู้ใช้ลงทะเบียนหรือไม่ก็ตาม) '''เพิ่มเติมเนื้อหาที่เกี่ยวข้องกับตระกูลรังสิตพลและบุคคลในตระกูลเป็นจำนวนเจ็ด (7) ชั้นสายลำดับ''' ทั้งนี้ ให้ตีความอย่างกว้าง ในโครงการที่อยู่ในความดูแลของชุมชนวิกิมีเดียประเทศไทยทุกโครงการ (กล่าวคือ โครงการที่มีโดเมน <code>th.wik*</code> ทั้งหมด และโครงการใน Wikimedia Incubator ที่ใช้ภาษาไทย) ยกเว้นกรณีจะเป็นไปตามข้อยกเว้นที่กำหนด
#* คำว่า "เจ็ดชั้นสายลำดับ" ให้นับสุขวิช รังสิตพล และคู่สมรสเป็นชั้นลำดับที่ 0 และให้หมายถึงลำดับชั้นสุขวิช รังสิตพล และคู่สมรส ลำดับชั้นของบรรพบุรุษของสุขวิช รังสิตพล นับขึ้นไปสาม (3) ชั้นสายลำดับ และลำดับชั้นของผู้สืบสันดานของสุขวิช รังสิตพล และคู่สมรส นับถัดลงมาสาม (3) ชั้นสายลำดับ
#* คำว่า "ตีความอย่างกว้าง" ให้หมายความรวมถึงการแก้ไขบทความในเรื่องใด ๆ ก็ตามเพื่อเพิ่มเติมเนื้อหาที่เกี่ยวกับบุคคลในตระกูลรังสิตพล หรือเนื้อหาที่เกี่ยวข้องกับผลงานของบุคคลในตระกูลรังสิตพล ซึ่งรวมถึง (แต่ไม่จำกัดเพียง) การปฏิรูปการศึกษา กระเทย มหาวิทยาลัยราชภัฏ พรรคประชาธิปัตย์ หรือบทความใด ๆ ที่บุคคลในตระกูลรังสิตพลมีส่วนเกี่ยวข้อง
#* กรณีที่มีเนื้อหาของบุคคลในตระกูลรังสิตพลอยู่ในหน้าใด ให้'''นำออก'''หรือ'''ลบหน้า'''ดังกล่าวทิ้ง (ทั้งนี้ ไม่จำเป็นต้องใช้กระบวนการ Revision Delete เพื่อนำเนื้อหาดังกล่าวออกจากประวัติเดิมของหน้า)
# '''อนุญาต'''ให้มีเนื้อหาที่เกี่ยวข้องกับตระกูลรังสิตพลได้เฉพาะกรณีที่เป็นข้อเท็จจริงที่ไม่อาจโต้แย้งเป็นอย่างอื่นได้ และมีเอกสารราชการรองรับ เช่น การดำรงตำแหน่งในคณะรัฐมนตรีหรือหน่วยงานราชการ การลงสมัครผู้ว่ากรุงเทพมหานคร ทั้งนี้ จะต้องไม่เป็นการกล่าวถึงผลงานของบุคคลดังกล่าว
# '''อนุญาต'''ให้ใช้กลไกของระบบมีเดียวิกิ เช่น Abuse Filter, Title Blacklist หรือกลไกอื่นใดเพื่อดำเนินการตามมาตรการดังกล่าวได้ และ'''อนุญาต'''ให้ผู้ดูแลระบบดำเนินมาตรการตามที่เห็นสมควรกับผู้ใช้ที่พยายามกระทำการหลีกเลี่ยงการบังคับใช้มาตรการนี้ รวมถึงการบล็อกผู้ใช้หรือไอพีหากจำเป็นได้
# มาตรการนี้มีผลบังคับใช้เมื่อชุมชนวิกิมีเดียประเทศไทยให้ความเห็นชอบ และให้บังคับใช้โดย'''ไม่มีกำหนดระยะเวลา''' (indefinite) จนกว่าชุมชนจะได้ทบทวนมาตรการดังกล่าวในภายหลัง โดยคำนึงถึงภัยคุกคามที่อาจเกิดขึ้นในการมีบทความของบุคคลในตระกูลรังสิตพลในขณะนั้น ทั้งนี้ ให้มีการทบทวนนโยบายดังกล่าวอย่างน้อยหนึ่งครั้งทุก ๆ ระยะเวลาห้า (5) ปีที่เริ่มบังคับใช้มาตรการ หรือต่ออายุมาตรการครั้งหลังสุด
เพื่อการนี้ ขอให้ผู้ดูแลระบบหรือผู้ใช้ดำเนินการตามความเหมาะสมเพื่อนำออก และ/หรือคงเนื้อหาที่เกี่ยวข้องไว้โดยไม่เป็นการขัดต่อนโยบายนี้ จึงเรียนมาเพื่อทราบและดำเนินการต่อไป (ทั้งนี้ เนื่องจากเสร็จสิ้นการอภิปรายแล้ว สามารถนำประกาศในเรื่องนี้ออกได้) --[[ผู้ใช้:Harley Hartwell|Harley Hartwell]] ([[คุยกับผู้ใช้:Harley Hartwell|คุย]]) 15:26, 15 มีนาคม 2567 (+07)
== แจ้งลบประวัติหน้า ==
ขอให้ผู้ดูแลระบบลบประวัติหน้ารุ่นการแก้ไขนี้ [[Special:Permalink/2765044]] เนื่องจากมีการเปิดเผยสารสนเทศส่วนบุคคลครับ [[User:Ekminarin|Rin]] <sup>[ [[User talk:Ekminarin|T]] · [[Special:Contributions/Ekminarin|C]] ]</sup> 12:28, 11 มีนาคม 2568 (+07)
:ซ่อนประวัติหน้าแล้ว--[[ผู้ใช้:Octahedron80|Octahedron80]] ([[คุยกับผู้ใช้:Octahedron80|คุย]]) 16:39, 12 มีนาคม 2568 (+07)
== WikiLove extension ==
ที่วิกิพีเดียภาษาไทยเริ่มใช้งานแล้วตั้งแต่ 7 สิงหาคม พ.ศ. 2568 หากท่านสนใจโปรดดำเนินการตามวิกิพีเดียภาษาไทยที่เป็นตัวอย่างให้แล้วได้เลย --[[ผู้ใช้:Taweetham|taweethaも]] ([[คุยกับผู้ใช้:Taweetham|คุย]]) 00:57, 8 สิงหาคม 2568 (+07)
== temporary account ==
FYI. https://wikimedia.eventyay.com/talk/wikimania2025/talk/KFEFVG/ บัญชีชั่วคราวกำลังจะมาในระยะเวลาอันสั้น (1-3 เดือน ข้างหน้านี้) ทำให้ผู้ใช้ไม่ลงทะเบียนที่เป็นไอพีเปลี่ยนแปลงไป --[[ผู้ใช้:Taweetham|Taweethaも]] ([[คุยกับผู้ใช้:Taweetham|คุย]]) 22:18, 9 สิงหาคม 2568 (+07)
:: รวมกันไปอภิปรายที่เดียวก็ได้ครับ [[:w:th:วิกิพีเดีย:สภากาแฟ/อภิปราย/temporary accounts announcement]] --[[ผู้ใช้:Taweetham|taweethaも]] ([[คุยกับผู้ใช้:Taweetham|คุย]]) 08:53, 30 สิงหาคม 2568 (+07)
== ขอสิทธิ์แก้ไข ==
สวัสดีครับ ตอนนี้ผมเขียนเพิ่มเนื้อหาของพจนานุกรมในส่วนที่เป็นภาษาญี่ปุ่น เนื่องจากผมเป็นผู้ใช้ใหม่ อีกทั้งยังติดตัวกรองสแปมของทางวิกิ ก็เลยยังไม่สามารถเขียนได้ในทั้งส่วนของคำนิยามเองก็ดี หรือแม่แบบที่เกี่ยวข้องกับภาษาญี่ปุ่นที่ไม่ค่อยครบก็ดี จงเรียนมาเพื่อโปรดพิจารณาให้ปลดแบนผมด้วย --[[ผู้ใช้:Poompak|Poompak]] ([[คุยกับผู้ใช้:Poompak|คุย]]) 18:39, 16 มิถุนายน 2569 (+07)
9lb1f3i44ikg2rreyhher9taa8rhkdi
ตะไคร้
0
283814
5724863
5721814
2026-06-16T09:31:01Z
Alifshinobi
397
/* รากศัพท์ */
5724863
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
{{wp}}
=== รากศัพท์ ===
เทียบ{{cog|sou|ไคร}}, {{cog|tts|หัวสิงไค}} หรือ {{m|tts|ซิงไค}}, {{cog|lo|ຫົວສີໄຄ,ຫົວສິງໄຄ}}, {{cog|nod|ᨧᩢ᩠ᨠᨣᩕᩱ,จะไคร}}, {{cog|khb|ᦷᦠᦉᧅᦺᦆᧉ}}, {{cog|blt|ꪻꪋ}}, {{cog|km|គ្រៃ}} (ในคำว่า {{m|km|ស្លឹកគ្រៃ}})
=== การออกเสียง ===
{{th-pron|ตะ-ไคฺร้}}
=== คำนาม ===
{{th-noun}}
# [[ชื่อ]][[ไม้ล้มลุก]][[ชนิด]] Cymbopogon citratus (DC.) Stapf [[ใน]][[วงศ์]] Gramineae [[ขึ้น]][[เป็น]][[กอ]] [[กลิ่น]][[หอม]] [[ใช้]][[ปรุง]][[อาหาร]]
==== คำแปลภาษาอื่น ====
{{trans-top|ชื่อไม้ล้มลุก}}
* เขมร: {{t+|km|ស្លឹកគ្រៃ}}
* ไทลื้อ: {{t+|khb|ᦷᦠᦉᧅᦺᦆᧉ}}
* ไทใหญ่: {{t+|shn|ၶႃးႁွမ်}}
* พม่า: {{t+|my|စပါးလင်}}
* ลาว: {{t+|lo|ຫົວສີໄຄ}}, {{t+|lo|ຫົວສິງໄຄ}}
* เวียดนาม: {{t+|vi|sả}}
* อังกฤษ: {{t+|en|lemongrass|tr=เล็มมันแกรส}}
* อีสาน: {{t+|tts|หัวสิงไค}}
{{trans-bottom}}
ltpnq04zp0frwh7mk400xznelordd4v
ᨴ᩠ᨿ᩵ᨦ
0
285267
5724868
2019353
2026-06-16T10:58:24Z
OctraBot
3198
/* รากศัพท์ */
5724868
wikitext
text/x-wiki
== ภาษาเขิน ==
=== รากศัพท์ ===
{{bor+|kkh|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|th|เที่ยง}}, {{cog|nod|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|lo|ທ່ຽງ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|skb|เถี้ยง}}
=== การออกเสียง ===
* {{IPA|kkh|/teːŋ˨˨/|a=เชียงตุง}}
* {{homophones|kkh|qq1=ในถิ่นที่มีการออกเสียงอักษรคู่เหมือนกันเมื่อมี[[ไม้หยัก]]|ᨲ᩠ᨿ᩵ᨦ}}
=== คำนาม ===
{{kkh-noun}}
# [[เที่ยง]]
=== คำคุณศัพท์ ===
{{kkh-adj}}
# [[เที่ยง]], [[มั่นคง]], [[ยุติธรรม]], [[ซื่อสัตย์]]
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
{{nod-alt|l=เที่ยง|s=เตี้ยง}}
=== รากศัพท์ ===
จาก{{der|nod|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|th|เที่ยง}}, {{cog|kkh|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|lo|ທ່ຽງ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|skb|เถี้ยง}}
=== คำนาม ===
{{nod-noun}}
# [[เที่ยง]]
=== คำคุณศัพท์ ===
{{nod-adj}}
# [[เที่ยง]], [[มั่นคง]], [[ยุติธรรม]], [[ซื่อสัตย์]]
jnxcqn5yhqot13v4tmaznegqh42o3cw
5724869
5724868
2026-06-16T10:58:34Z
OctraBot
3198
/* รากศัพท์ */
5724869
wikitext
text/x-wiki
== ภาษาเขิน ==
=== รากศัพท์ ===
จาก{{der|kkh|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|th|เที่ยง}}, {{cog|nod|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|lo|ທ່ຽງ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|skb|เถี้ยง}}
=== การออกเสียง ===
* {{IPA|kkh|/teːŋ˨˨/|a=เชียงตุง}}
* {{homophones|kkh|qq1=ในถิ่นที่มีการออกเสียงอักษรคู่เหมือนกันเมื่อมี[[ไม้หยัก]]|ᨲ᩠ᨿ᩵ᨦ}}
=== คำนาม ===
{{kkh-noun}}
# [[เที่ยง]]
=== คำคุณศัพท์ ===
{{kkh-adj}}
# [[เที่ยง]], [[มั่นคง]], [[ยุติธรรม]], [[ซื่อสัตย์]]
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
{{nod-alt|l=เที่ยง|s=เตี้ยง}}
=== รากศัพท์ ===
จาก{{der|nod|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|th|เที่ยง}}, {{cog|kkh|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|lo|ທ່ຽງ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|skb|เถี้ยง}}
=== คำนาม ===
{{nod-noun}}
# [[เที่ยง]]
=== คำคุณศัพท์ ===
{{nod-adj}}
# [[เที่ยง]], [[มั่นคง]], [[ยุติธรรม]], [[ซื่อสัตย์]]
a26xco8id8ymolazedzznsw9h47le7f
5724874
5724869
2026-06-16T11:03:51Z
OctraBot
3198
5724874
wikitext
text/x-wiki
== ภาษาเขิน ==
=== รากศัพท์ ===
{{inh+|kkh|tai-swe-pro|*diəŋᴮ⁴||เที่ยงวัน, เที่ยงคืน}} (Jonsson, 1991), จาก{{der|kkh|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|th|เที่ยง}}, {{cog|nod|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|lo|ທ່ຽງ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|skb|เถี้ยง}}
=== การออกเสียง ===
* {{IPA|kkh|/teːŋ˨˨/|a=เชียงตุง}}
* {{homophones|kkh|qq1=ในถิ่นที่มีการออกเสียงอักษรคู่เหมือนกันเมื่อมี[[ไม้หยัก]]|ᨲ᩠ᨿ᩵ᨦ}}
=== คำนาม ===
{{kkh-noun}}
# [[เที่ยง]]
=== คำคุณศัพท์ ===
{{kkh-adj}}
# [[เที่ยง]], [[มั่นคง]], [[ยุติธรรม]], [[ซื่อสัตย์]]
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
{{nod-alt|l=เที่ยง|s=เตี้ยง}}
=== รากศัพท์ ===
{{inh+|nod|tai-swe-pro|*diəŋᴮ⁴||เที่ยงวัน, เที่ยงคืน}} (Jonsson, 1991), จาก{{der|nod|ltc|-}} {{ltc-l|定|id=1}}; ร่วมเชื้อสายกับ{{cog|th|เที่ยง}}, {{cog|kkh|ᨴ᩠ᨿ᩵ᨦ}}, {{cog|lo|ທ່ຽງ}}, {{cog|khb|ᦵᦑᧂᧈ}}, {{cog|shn|တဵင်ႈ}}, {{cog|aho|𑜄𑜢𑜂𑜫}}, {{cog|zhn|dingh}} หรือ {{m|zhn|dingq}}, {{cog|skb|เถี้ยง}}
=== คำนาม ===
{{nod-noun}}
# [[เที่ยง]]
=== คำคุณศัพท์ ===
{{nod-adj}}
# [[เที่ยง]], [[มั่นคง]], [[ยุติธรรม]], [[ซื่อสัตย์]]
dfqaiwzbjcp21x5gucnq15lher7fxlw
ไต๋
0
289267
5724810
4931174
2026-06-16T01:26:18Z
OctraBot
3198
/* ภาษาญ้อ */
5724810
wikitext
text/x-wiki
{{also/auto}}
==ภาษาไทย==
===รากศัพท์===
จาก{{der|th|yue|底|tr=dai2}}
===การออกเสียง===
{{th-pron}}
===คำนาม===
{{th-noun}}
# {{lb|th|ปาก}} [[กลเม็ด]], ทีเด็ด, ความลับ, เจตนาแท้จริงซึ่งปิดบังไว้.
#: {{ux|th|ในที่สุดก็เผยไต๋ออกมา}}
# ไพ่ตัวสำคัญที่ปิดไว้ไม่ให้คู่แข่งรู้.
== ภาษาคำเมือง ==
=== คำนาม ===
{{nod-noun|tl=1}}
# {{pronunciation spelling of|nod|ᨲᩱ}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
=== คำนาม ===
{{nyw-noun}}
# [[ไต]] (อวัยวะ)
hyuq1e1e8avyldqy41dizaa4h008ln3
5724811
5724810
2026-06-16T01:26:37Z
OctraBot
3198
/* คำนาม */
5724811
wikitext
text/x-wiki
{{also/auto}}
==ภาษาไทย==
===รากศัพท์===
จาก{{der|th|yue|底|tr=dai2}}
===การออกเสียง===
{{th-pron}}
===คำนาม===
{{th-noun}}
# {{lb|th|ปาก}} [[กลเม็ด]], ทีเด็ด, ความลับ, เจตนาแท้จริงซึ่งปิดบังไว้.
#: {{ux|th|ในที่สุดก็เผยไต๋ออกมา}}
# ไพ่ตัวสำคัญที่ปิดไว้ไม่ให้คู่แข่งรู้.
== ภาษาคำเมือง ==
=== คำนาม ===
{{nod-noun}}
# {{pronunciation spelling of|nod|ᨲᩱ}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
=== คำนาม ===
{{nyw-noun}}
# [[ไต]] (อวัยวะ)
fqxnp4du19q97x18bidjks3wkw46pjz
มอดูล:category tree/หมวดเชิงไวยากรณ์
828
306653
5724845
5688468
2026-06-16T04:33:45Z
OctraBot
3198
5724845
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["ศัพท์แบ่งตามประเภทไวยากรณ์"] = {
description = "{{{langname}}} terms categorized by their grammatical category.",
umbrella_parents = "มูลฐาน",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["terms by grammatical category"] = labels["ศัพท์แบ่งตามประเภทไวยากรณ์"]
labels["ศัพท์ที่ผันรูปไม่ได้"] = {
description = "Indeclinable {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {{name = "ศัพท์แบ่งตามประเภทไวยากรณ์"}},
}
labels["indeclinable terms"] = labels["ศัพท์ที่ผันรูปไม่ได้"]
labels["suppletive terms"] = {
description = "Suppletive {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Suppletion subcategories by language",
parents = {{name = "ศัพท์แบ่งตามประเภทไวยากรณ์"}},
}
------- GENDER -------
for _, pos in ipairs { "คำนาม", "คำวิสามานยนาม", "คำสรรพนาม", "ปัจจัย" } do
labels[pos .. "★แบ่งตามเพศ"] = {
description = "{{{langname}}} " .. pos .. " organized by the gender they belong to.",
breadcrumb = "แบ่งตามเพศ",
parents = {{name = pos, sort = "เพศ"}},
}
labels[pos .. "★ที่มีเพศไม่ปรกติ"] = {
description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.",
breadcrumb = "มีเพศไม่ปรกติ",
parents = {{name = pos .. "ไม่ปรกติ", sort = "เพศไม่ปรกติ"}},
}
labels[pos .. "★ที่มีหลายเพศ"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one gender.",
breadcrumb = "มีหลายเพศ",
parents = {{name = pos .. "★แบ่งตามเพศ", sort = "หลายเพศ"}},
}
labels[pos .. "เพศรวม"] = {
description = "{{{langname}}} " .. pos .. " of [[Appendix:Glossary#common gender|common gender]], i.e. belonging to a gender category that combines the function of [[Appendix:Glossary#masculine|masculine]] and [[Appendix:Glossary#feminine|feminine]] and is opposed to the [[Appendix:Glossary#neuter|neuter]] gender.",
breadcrumb = "เพศรวม",
parents = {pos .. "★แบ่งตามเพศ"},
}
labels[pos .. "เพศหญิง"] = {
description = "{{{langname}}} " .. pos .. " of [[Appendix:Glossary#feminine|feminine]] gender, i.e. belonging to a gender category that contains (among other things) female beings.",
breadcrumb = "เพศหญิง",
parents = {pos .. "★แบ่งตามเพศ"},
}
labels[pos .. "เพศชาย"] = {
description = "{{{langname}}} " .. pos .. " of [[Appendix:Glossary#masculine|masculine]] gender, i.e. belonging to a gender category that contains (among other things) male beings.",
breadcrumb = "เพศชาย",
parents = {pos .. "★แบ่งตามเพศ"},
}
labels[pos .. "★ที่เพศขึ้นอยู่กับความหมาย"] = {
description = "{{{langname}}} " .. pos .. " that may be either [[Appendix:Glossary#masculine|masculine]] or [[Appendix:Glossary#feminine|feminine]] depending on whether they refer to male or female beings.",
breadcrumb = "เพศขึ้นอยู่กับความหมาย",
parents = {pos .. "★แบ่งตามเพศ"},
}
labels[pos .. "เพศกลาง"] = {
description = "{{{langname}}} " .. pos .. " of [[Appendix:Glossary#neuter|neuter]] gender, i.e. belonging to a gender category that does not usually contain male or female beings.",
breadcrumb = "เพศกลาง",
parents = {pos .. "★แบ่งตามเพศ"},
}
labels[pos .. "ไม่ระบุเพศ"] = {
description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.",
breadcrumb = "ไม่ระบุเพศ",
parents = {pos .. "★แบ่งตามเพศ", "ศัพท์ที่ไม่ระบุเพศ"},
}
end
for _, pos in ipairs({"คำคุณศัพท์", "ตัวกำหนด", "เลข", "รูปกริยาขยาย", "ปัจจัย"}) do
labels[pos .. "epicene"] = {
description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.",
breadcrumb = "epicene",
parents = {pos .. "★แบ่งตามชนิดการผันรูป"},
}
end
------- NOUN CLASSES -------
labels["คำนาม★แบ่งตามกลุ่ม"] = {
description = "{{{langname}}} nouns organized by the class they belong to.",
breadcrumb = "แบ่งตามกลุ่ม",
parents = {{name = "คำนาม", sort = "กลุ่ม"}},
}
labels["nouns by class"] = labels["คำนาม★แบ่งตามกลุ่ม"]
labels["alienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].",
breadcrumb = "alienable",
parents = {"คำนาม"},
}
labels["inalienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].",
breadcrumb = "inalienable",
parents = {"คำนาม"},
}
------- ANIMACY -------
for _, pos in ipairs({"คำนาม", "ปัจจัย", "คำกริยา"}) do
labels[pos .. "มีชีวิต"] = {
description = "{{{langname}}} " .. pos .. " that refer to humans or animals.",
breadcrumb = "มีชีวิต",
parents = {pos},
}
labels[pos .. "ไม่มีชีวิต"] = {
description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).",
breadcrumb = "ไม่มีชีวิต",
parents = {pos},
}
labels[pos .. "★ที่มีหลายชีวิตภาพ"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.",
breadcrumb = "มีหลายชีวิตภาพ",
parents = {{name = pos, sort = "หลายชีวิตภาพ"}},
}
end
for _, pos in ipairs({"คำนาม", "ปัจจัย"}) do
-- This category should be used particularly in languages that have
-- grammatical distinctions related to animals, such as Ukrainian.
labels[pos .. "สัตว์"] = {
description = "{{{langname}}} " .. pos .. " that refer to animals.",
breadcrumb = "สัตว์",
parents = {pos .. "มีชีวิต"},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels[pos .. "nonvirile"] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.",
breadcrumb = "nonvirile",
parents = {pos, "พหูพจน์เท่านั้น"},
}
labels[pos .. "บุคคล"] = {
description = "{{{langname}}} " .. pos .. " that refer to humans.",
breadcrumb = "บุคคล",
parents = {pos .. "มีชีวิต"},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels[pos .. "virile"] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.",
breadcrumb = "virile",
parents = {pos, "พหูพจน์เท่านั้น"},
}
end
------- INFLECTED PARTS OF SPEECH -------
-- Add "POS by inflection type", "irregular POS" and "POS by tone"
-- categories for (potentially) inflected parts of speech.
local inflected_poses = {
"คำคุณศัพท์",
"คำกริยาวิเศษณ์",
"ตัวกำหนด",
"คำนาม",
"เลข",
"รูปกริยาขยาย",
"คำสรรพนาม",
"คำวิสามานยนาม",
"ปัจจัย",
"คำกริยา",
}
for _, pos in ipairs(inflected_poses) do
labels[pos .. "★แบ่งตามชนิดการผันรูป"] = {
description = "{{{langname}}} " .. pos .. " organized by the type of inflection they follow.",
breadcrumb = "แบ่งตามชนิดการผันรูป",
parents = {{name = pos, sort = "การผันรูป"}},
}
labels[pos .. "ไม่ปรกติ"] = {
description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.",
breadcrumb = "ไม่ปรกติ",
parents = {pos .. "★แบ่งตามชนิดการผันรูป"},
}
labels[pos .. "บกพร่อง"] = {
description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.",
breadcrumb = "บกพร่อง",
parents = {pos, pos .. "ไม่ปรกติ"},
}
labels[pos .. "suppletive"] = {
description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.",
breadcrumb = "suppletive",
umbrella_parents = "Suppletion subcategories by language",
parents = {
pos .. "ไม่ปรกติ",
"suppletive terms",
},
}
if pos ~= "คำกริยา" and pos ~= "คำกริยาวิเศษณ์" then
labels[pos .. "ผันรูปไม่ได้"] = {
description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.",
breadcrumb = "ผันรูปไม่ได้",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {
pos .. "★แบ่งตามชนิดการผันรูป",
"ศัพท์ที่ผันรูปไม่ได้",
},
}
labels[pos .. "★ที่มีการผันรูปหลายแบบ"] = {
description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.",
breadcrumb = "มีการผันรูปหลายแบบ",
parents = {{name = pos .. "★แบ่งตามชนิดการผันรูป", sort = "การผันรูปหลายแบบ"}},
}
labels[pos .. "★ที่มีหลายพหูพจน์"] = {
description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).",
breadcrumb = "มีหลายพหูพจน์",
parents = {{name = pos .. "★แบ่งตามชนิดการผันรูป", sort = "พหูพจน์"}},
}
end
labels[pos .. " by tone"] = {
description = "{{{langname}}} " .. pos .. " organized by the tone they follow.",
breadcrumb = "by tone",
parents = {{name = pos .. "★แบ่งตามชนิดการผันรูป", sort = "tone"}},
}
labels[pos .. " by vowel harmony"] = {
description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.",
breadcrumb = "by vowel harmony",
parents = {{name = pos .. "★แบ่งตามชนิดการผันรูป", sort = "vowel harmony"}},
}
end
-- FIXME: Only used currently for Arabic; probably should be removed as a general category.
labels["irregular elative adjectives"] = {
description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.",
parents = {"คำคุณศัพท์★แบ่งตามชนิดการผันรูป"},
}
for _, pos in ipairs { "คำนาม", "คำวิสามานยนาม", "คำสรรพนาม" } do
labels[pos .. "★ที่มีพหูพจน์ไม่ปรกติ"] = {
description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.",
breadcrumb = "มีพหูพจน์ไม่ปรกติ",
parents = {{name = pos .. "ไม่ปรกติ", sort = "พหูพจน์ไม่ปรกติ"}},
}
labels[pos .. " with unattested plurals"] = {
description = "{{{langname}}} " .. pos .. " with unattested plurals.",
breadcrumb = "with unattested plurals",
parents = {{name = pos, sort = "unattested plurals"}},
}
labels[pos .. "ชี้เฉพาะ"] = {
description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.",
breadcrumb = "ชี้เฉพาะ",
parents = {pos .. "★แบ่งตามชนิดการผันรูป"},
}
end
local labels2 = {}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "หมวดหมู่ย่อยของศัพท์แบ่งตามประเภทไวยากรณ์แบ่งตามภาษา"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["หมวดหมู่ย่อยของศัพท์แบ่งตามประเภทไวยากรณ์แบ่งตามภาษา"] = {
description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"หมวดหมู่ใหญ่รวมหัวข้อ",
{name = "ศัพท์แบ่งตามประเภทไวยากรณ์", is_label = true, sort = " "},
},
}
raw_categories["หมวดหมู่ย่อยของศัพท์ที่ผันรูปไม่ได้แบ่งตามภาษา"] = {
description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"หมวดหมู่ใหญ่รวมหัวข้อ",
"หมวดหมู่ย่อยของศัพท์แบ่งตามประเภทไวยากรณ์แบ่งตามภาษา",
},
}
raw_categories["Suppletion subcategories by language"] = {
description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"หมวดหมู่ใหญ่รวมหัวข้อ",
"หมวดหมู่ย่อยของศัพท์แบ่งตามประเภทไวยากรณ์แบ่งตามภาษา",
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(handlers, function(data)
local class = data.label:match("^คำนามกลุ่ม (.+)$")
if class then
local classnum, suffix = class:match("^(%d+)(.*)$")
return {
description =
"{{{langname}}} nouns that belong to class " .. class .. ".",
breadcrumb = {name = class, nocap = true},
umbrella = false,
parents = {{
name = "คำนาม★แบ่งตามกลุ่ม",
sort = classnum and ("#%03d"):format(classnum) .. suffix or class,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".",
breadcrumb = tone,
-- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'?
umbrella = false,
parents = {{
name = pos .. " by tone",
sort = "" .. tone:len() .. tone,
}},
}
end
end)
table.insert(handlers, function(data)
local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".",
breadcrumb = vh,
umbrella = false,
parents = {{
name = pos .. " by vowel harmony",
sort = "" .. vh:len() .. vh,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, classifier = data.label:match("^(คำนาม)ที่ใช้คำลักษณนาม (.+)$")
if pos then
local linktext
if data.lang then
-- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]],
-- but the module can accept links of the form TRAD//SIMP and display them correctly.
if data.lang:getCode() == "zh" then
classifier = classifier:gsub("/", "//")
end
linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term")
else
linktext = classifier
end
return {
description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.",
breadcrumb = classifier,
umbrella = false,
parents = {{
name = pos .. "★แบ่งตามคำลักษณนาม",
sort = (data.lang:makeSortKey(classifier)),
}},
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
4wbk19yws9e3djpfjtn2w86p1dm18d5
คุยกับผู้ใช้:Yl0o0
3
310552
5724790
1576981
2026-06-15T13:44:42Z
Jules*
19120
Jules* ย้ายหน้า [[คุยกับผู้ใช้:Ylovoir]] ไปยัง [[คุยกับผู้ใช้:Yl0o0]]: ย้ายหน้าอัตโนมัติขณะเปลี่ยนชื่อผู้ใช้ "[[Special:CentralAuth/Ylovoir|Ylovoir]]" เป็น "[[Special:CentralAuth/Yl0o0|Yl0o0]]"
1576981
wikitext
text/x-wiki
{{Template:Welcome|realName=|name=Ylovoir}}
-- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 04:00, 17 กันยายน 2565 (+07)
fz3tg6ajz36dfbx00h9lx0940aqjaq2
มอดูล:gender and number/data
828
311849
5724844
5685331
2026-06-16T04:33:06Z
OctraBot
3198
5724844
Scribunto
text/plain
local data = {}
-- A list of all possible "parts" that a specification can be made out of. For each part, we list
-- the class it's in (gender, animacy, etc.), the associated category (if any) and the display form.
-- In a given gender/number spec, only one part of each class is allowed.
data.codes = {
["?"] = {type = "other", display = '<abbr title="ยังไม่ระบุเพศ">?</abbr>'},
-- FIXME: The following should be either eliminated in favor of g! or converted to a general "gender/number unattested".
["?!"] = {type = "other", display = '<abbr title="gender unattested">gender unattested</abbr>'},
-- Genders
["m"] = {type = "gender", cat = "POSเพศชาย", display = '<abbr title="เพศชาย">ช.</abbr>'},
["f"] = {type = "gender", cat = "POSเพศหญิง", display = '<abbr title="เพศหญิง">ญ.</abbr>'},
["n"] = {type = "gender", cat = "POSเพศกลาง", display = '<abbr title="เพศกลาง">ก.</abbr>'},
["c"] = {type = "gender", cat = "POSเพศรวม", display = '<abbr title="เพศรวม">ร.</abbr>'},
["gneut"] = {type = "gender", cat = "POSไม่ระบุเพศ", display = '<abbr title="ไม่ระบุเพศ">ไม่ระบุเพศ</abbr>'},
["g!"] = {type = "gender", display = '<abbr title="gender unattested">gender unattested</abbr>'},
-- Animacy
-- Animate = either animal or personal (for Russian, etc.)
["an"] = {type = "animacy", cat = "POSมีชีวิต", display = '<abbr title="มีชีวิต">ชีว.</abbr>'},
["in"] = {type = "animacy", cat = "POSไม่มีชีวิต", display = '<abbr title="ไม่มีชีวิต">อชีว.</abbr>'},
-- Animal (for Ukrainian, Belarusian, Polish)
["anml"] = {type = "animacy", cat = "POSสัตว์", display = '<abbr title="สัตว์">สัต.</abbr>'},
-- Personal (for Ukrainian, Belarusian, Polish)
["pr"] = {type = "animacy", cat = "POSบุคคล", display = '<abbr title="บุคคล">บุค.</abbr>'},
["np"] = {type = "animacy", cat = "POSไม่ใช่บุคคล", display = '<abbr title="ไม่ใช่บุคคล">อบุค.</abbr>'},
["an!"] = {type = "animacy", display = '<abbr title="animacy unattested">animacy unattested</abbr>'},
-- Virility (for Polish)
["vr"] = {type = "virility", cat = "virile POS", display = '<abbr title="virile (= masculine personal)">vir</abbr>'},
["nv"] = {type = "virility", cat = "nonvirile POS", display = '<abbr title="nonvirile (= other than masculine personal)">nvir</abbr>'},
-- Numbers
["s"] = {type = "number", display = '<abbr title="เอกพจน์">เอก.</abbr>'},
["d"] = {type = "number", cat = "ทวิพจน์เท่านั้น", display = '<abbr title="ทวิพจน์">ทวิ.</abbr>'},
["p"] = {type = "number", cat = "พหูพจน์เท่านั้น", display = '<abbr title="พหูพจน์">พหู.</abbr>'},
["num!"] = {type = "number", display = '<abbr title="number unattested">number unattested</abbr>'},
-- Verb qualifiers
["impf"] = {type = "aspect", cat = "POSไม่สมบูรณ์", display = '<abbr title="การณ์ลักษณะไม่สมบูรณ์">ไม่สมบูรณ์</abbr>'},
["pf"] = {type = "aspect", cat = "POSสมบูรณ์", display = '<abbr title="การณ์ลักษณะสมบูรณ์">สมบูรณ์</abbr>'},
["asp!"] = {type = "aspect", display = '<abbr title="aspect unattested">aspect unattested</abbr>'},
}
-- Combined codes that are equivalent to giving multiple specs. `mf` is the same as specifying two separate specs,
-- one with `m` in it and the other with `f`. `mfbysense` is similar but is used for nouns that can be either masculine
-- or feminine according as to whether they refer to masculine or feminine beings.
data.combinations = {
["mf"] = {codes = {"m", "f"}},
["mfequiv"] = {codes = {"m", "f"}, display = '<abbr title="เพศไม่ส่งผลต่อความหมาย">นัยเดิม</abbr>'},
["mfbysense"] = {codes = {"m", "f"}, cat = "POSที่เพศขึ้นอยู่กับความหมาย",
display = '<abbr title="เพศขึ้นอยู่กับสิ่งที่อ้างถึง">ตามนัย</abbr>'},
["biasp"] = {codes = {"impf", "pf"}},
}
-- Categories when multiple gender/number codes of a given type occur in different specs (two or more of the same type
-- cannot occur in a single spec).
data.multicode_cats = {
["gender"] = "POSที่มีหลายเพศ",
["animacy"] = "POSที่มีความมีชีวิตหลายแบบ",
["aspect"] = "POSที่มีการณ์ลักษณะสองแบบ",
}
return data
fzdabwiv2quyrn2upq026wmiqa6tsya
5724847
5724844
2026-06-16T04:37:48Z
OctraBot
3198
5724847
Scribunto
text/plain
local data = {}
-- A list of all possible "parts" that a specification can be made out of. For each part, we list
-- the class it's in (gender, animacy, etc.), the associated category (if any) and the display form.
-- In a given gender/number spec, only one part of each class is allowed.
data.codes = {
["?"] = {type = "other", display = '<abbr title="ยังไม่ทราบเพศ">?</abbr>'},
-- FIXME: The following should be either eliminated in favor of g! or converted to a general "gender/number unattested".
["?!"] = {type = "other", display = '<abbr title="gender unattested">gender unattested</abbr>'},
-- Genders
["m"] = {type = "gender", cat = "POSเพศชาย", display = '<abbr title="เพศชาย">ช.</abbr>'},
["f"] = {type = "gender", cat = "POSเพศหญิง", display = '<abbr title="เพศหญิง">ญ.</abbr>'},
["n"] = {type = "gender", cat = "POSเพศกลาง", display = '<abbr title="เพศกลาง">ก.</abbr>'},
["c"] = {type = "gender", cat = "POSเพศรวม", display = '<abbr title="เพศรวม">ร.</abbr>'},
["gneut"] = {type = "gender", cat = "POSไม่ระบุเพศ", display = '<abbr title="ไม่ระบุเพศ">ไม่ระบุเพศ</abbr>'},
["g!"] = {type = "gender", display = '<abbr title="gender unattested">gender unattested</abbr>'},
-- Animacy
-- Animate = either animal or personal (for Russian, etc.)
["an"] = {type = "animacy", cat = "POSมีชีวิต", display = '<abbr title="มีชีวิต">ชีว.</abbr>'},
["in"] = {type = "animacy", cat = "POSไม่มีชีวิต", display = '<abbr title="ไม่มีชีวิต">อชีว.</abbr>'},
-- Animal (for Ukrainian, Belarusian, Polish)
["anml"] = {type = "animacy", cat = "POSสัตว์", display = '<abbr title="สัตว์">สัต.</abbr>'},
-- Personal (for Ukrainian, Belarusian, Polish)
["pr"] = {type = "animacy", cat = "POSบุคคล", display = '<abbr title="บุคคล">บุค.</abbr>'},
["np"] = {type = "animacy", cat = "POSไม่ใช่บุคคล", display = '<abbr title="ไม่ใช่บุคคล">อบุค.</abbr>'},
["an!"] = {type = "animacy", display = '<abbr title="animacy unattested">animacy unattested</abbr>'},
-- Virility (for Polish)
["vr"] = {type = "virility", cat = "virile POS", display = '<abbr title="virile (= masculine personal)">vir</abbr>'},
["nv"] = {type = "virility", cat = "nonvirile POS", display = '<abbr title="nonvirile (= other than masculine personal)">nvir</abbr>'},
-- Numbers
["s"] = {type = "number", display = '<abbr title="เอกพจน์">เอก.</abbr>'},
["d"] = {type = "number", cat = "ทวิพจน์เท่านั้น", display = '<abbr title="ทวิพจน์">ทวิ.</abbr>'},
["p"] = {type = "number", cat = "พหูพจน์เท่านั้น", display = '<abbr title="พหูพจน์">พหู.</abbr>'},
["num!"] = {type = "number", display = '<abbr title="number unattested">number unattested</abbr>'},
-- Verb qualifiers
["impf"] = {type = "aspect", cat = "POSไม่สมบูรณ์", display = '<abbr title="การณ์ลักษณะไม่สมบูรณ์">ไม่สมบูรณ์</abbr>'},
["pf"] = {type = "aspect", cat = "POSสมบูรณ์", display = '<abbr title="การณ์ลักษณะสมบูรณ์">สมบูรณ์</abbr>'},
["asp!"] = {type = "aspect", display = '<abbr title="aspect unattested">aspect unattested</abbr>'},
}
-- Combined codes that are equivalent to giving multiple specs. `mf` is the same as specifying two separate specs,
-- one with `m` in it and the other with `f`. `mfbysense` is similar but is used for nouns that can be either masculine
-- or feminine according as to whether they refer to masculine or feminine beings.
data.combinations = {
["mf"] = {codes = {"m", "f"}},
["mfequiv"] = {codes = {"m", "f"}, display = '<abbr title="เพศไม่ส่งผลต่อความหมาย">นัยเดิม</abbr>'},
["mfbysense"] = {codes = {"m", "f"}, cat = "POSที่เพศขึ้นอยู่กับความหมาย",
display = '<abbr title="เพศขึ้นอยู่กับสิ่งที่อ้างถึง">ตามนัย</abbr>'},
["biasp"] = {codes = {"impf", "pf"}},
}
-- Categories when multiple gender/number codes of a given type occur in different specs (two or more of the same type
-- cannot occur in a single spec).
data.multicode_cats = {
["gender"] = "POSที่มีหลายเพศ",
["animacy"] = "POSที่มีความมีชีวิตหลายแบบ",
["aspect"] = "POSที่มีการณ์ลักษณะสองแบบ",
}
return data
0b0ezbytp0kfvkvm3r2rbzhk4uzknli
5724848
5724847
2026-06-16T04:38:42Z
OctraBot
3198
5724848
Scribunto
text/plain
local data = {}
-- A list of all possible "parts" that a specification can be made out of. For each part, we list
-- the class it's in (gender, animacy, etc.), the associated category (if any) and the display form.
-- In a given gender/number spec, only one part of each class is allowed.
data.codes = {
["?"] = {type = "other", display = '<abbr title="ยังไม่ทราบเพศ">?</abbr>'}, -- ไม่รู้ว่าเป็นเพศอะไร
-- FIXME: The following should be either eliminated in favor of g! or converted to a general "gender/number unattested".
["?!"] = {type = "other", display = '<abbr title="gender unattested">gender unattested</abbr>'},
-- Genders
["m"] = {type = "gender", cat = "POSเพศชาย", display = '<abbr title="เพศชาย">ช.</abbr>'},
["f"] = {type = "gender", cat = "POSเพศหญิง", display = '<abbr title="เพศหญิง">ญ.</abbr>'},
["n"] = {type = "gender", cat = "POSเพศกลาง", display = '<abbr title="เพศกลาง">ก.</abbr>'},
["c"] = {type = "gender", cat = "POSเพศรวม", display = '<abbr title="เพศรวม">ร.</abbr>'},
["gneut"] = {type = "gender", cat = "POSไม่ระบุเพศ", display = '<abbr title="ไม่ระบุเพศ">ไม่ระบุเพศ</abbr>'}, -- ไม่จำกัดว่าต้องเป็นเพศอะไร
["g!"] = {type = "gender", display = '<abbr title="gender unattested">gender unattested</abbr>'},
-- Animacy
-- Animate = either animal or personal (for Russian, etc.)
["an"] = {type = "animacy", cat = "POSมีชีวิต", display = '<abbr title="มีชีวิต">ชีว.</abbr>'},
["in"] = {type = "animacy", cat = "POSไม่มีชีวิต", display = '<abbr title="ไม่มีชีวิต">อชีว.</abbr>'},
-- Animal (for Ukrainian, Belarusian, Polish)
["anml"] = {type = "animacy", cat = "POSสัตว์", display = '<abbr title="สัตว์">สัต.</abbr>'},
-- Personal (for Ukrainian, Belarusian, Polish)
["pr"] = {type = "animacy", cat = "POSบุคคล", display = '<abbr title="บุคคล">บุค.</abbr>'},
["np"] = {type = "animacy", cat = "POSไม่ใช่บุคคล", display = '<abbr title="ไม่ใช่บุคคล">อบุค.</abbr>'},
["an!"] = {type = "animacy", display = '<abbr title="animacy unattested">animacy unattested</abbr>'},
-- Virility (for Polish)
["vr"] = {type = "virility", cat = "virile POS", display = '<abbr title="virile (= masculine personal)">vir</abbr>'},
["nv"] = {type = "virility", cat = "nonvirile POS", display = '<abbr title="nonvirile (= other than masculine personal)">nvir</abbr>'},
-- Numbers
["s"] = {type = "number", display = '<abbr title="เอกพจน์">เอก.</abbr>'},
["d"] = {type = "number", cat = "ทวิพจน์เท่านั้น", display = '<abbr title="ทวิพจน์">ทวิ.</abbr>'},
["p"] = {type = "number", cat = "พหูพจน์เท่านั้น", display = '<abbr title="พหูพจน์">พหู.</abbr>'},
["num!"] = {type = "number", display = '<abbr title="number unattested">number unattested</abbr>'},
-- Verb qualifiers
["impf"] = {type = "aspect", cat = "POSไม่สมบูรณ์", display = '<abbr title="การณ์ลักษณะไม่สมบูรณ์">ไม่สมบูรณ์</abbr>'},
["pf"] = {type = "aspect", cat = "POSสมบูรณ์", display = '<abbr title="การณ์ลักษณะสมบูรณ์">สมบูรณ์</abbr>'},
["asp!"] = {type = "aspect", display = '<abbr title="aspect unattested">aspect unattested</abbr>'},
}
-- Combined codes that are equivalent to giving multiple specs. `mf` is the same as specifying two separate specs,
-- one with `m` in it and the other with `f`. `mfbysense` is similar but is used for nouns that can be either masculine
-- or feminine according as to whether they refer to masculine or feminine beings.
data.combinations = {
["mf"] = {codes = {"m", "f"}},
["mfequiv"] = {codes = {"m", "f"}, display = '<abbr title="เพศไม่ส่งผลต่อความหมาย">นัยเดิม</abbr>'},
["mfbysense"] = {codes = {"m", "f"}, cat = "POSที่เพศขึ้นอยู่กับความหมาย",
display = '<abbr title="เพศขึ้นอยู่กับสิ่งที่อ้างถึง">ตามนัย</abbr>'},
["biasp"] = {codes = {"impf", "pf"}},
}
-- Categories when multiple gender/number codes of a given type occur in different specs (two or more of the same type
-- cannot occur in a single spec).
data.multicode_cats = {
["gender"] = "POSที่มีหลายเพศ",
["animacy"] = "POSที่มีความมีชีวิตหลายแบบ",
["aspect"] = "POSที่มีการณ์ลักษณะสองแบบ",
}
return data
r1s2bxtuq8qzs2f7rpmkpzt3wegof6i
5724851
5724848
2026-06-16T04:43:43Z
OctraBot
3198
5724851
Scribunto
text/plain
local data = {}
-- A list of all possible "parts" that a specification can be made out of. For each part, we list
-- the class it's in (gender, animacy, etc.), the associated category (if any) and the display form.
-- In a given gender/number spec, only one part of each class is allowed.
data.codes = {
["?"] = {type = "other", display = '<abbr title="ไม่ทราบ">?</abbr>'}, -- ไม่รู้ว่าเป็นอะไร (ใช้ได้ทุกประเภท)
-- FIXME: The following should be either eliminated in favor of g! or converted to a general "gender/number unattested".
["?!"] = {type = "other", display = '<abbr title="gender unattested">gender unattested</abbr>'},
-- Genders
["m"] = {type = "gender", cat = "POSเพศชาย", display = '<abbr title="เพศชาย">ช.</abbr>'},
["f"] = {type = "gender", cat = "POSเพศหญิง", display = '<abbr title="เพศหญิง">ญ.</abbr>'},
["n"] = {type = "gender", cat = "POSเพศกลาง", display = '<abbr title="เพศกลาง">ก.</abbr>'},
["c"] = {type = "gender", cat = "POSเพศรวม", display = '<abbr title="เพศรวม">ร.</abbr>'},
["gneut"] = {type = "gender", cat = "POSไม่ระบุเพศ", display = '<abbr title="ไม่ระบุเพศ">ไม่ระบุเพศ</abbr>'}, -- ไม่จำกัดว่าต้องเป็นเพศอะไร
["g!"] = {type = "gender", display = '<abbr title="gender unattested">gender unattested</abbr>'},
-- Animacy
-- Animate = either animal or personal (for Russian, etc.)
["an"] = {type = "animacy", cat = "POSมีชีวิต", display = '<abbr title="มีชีวิต">ชีว.</abbr>'},
["in"] = {type = "animacy", cat = "POSไม่มีชีวิต", display = '<abbr title="ไม่มีชีวิต">อชีว.</abbr>'},
-- Animal (for Ukrainian, Belarusian, Polish)
["anml"] = {type = "animacy", cat = "POSสัตว์", display = '<abbr title="สัตว์">สัต.</abbr>'},
-- Personal (for Ukrainian, Belarusian, Polish)
["pr"] = {type = "animacy", cat = "POSบุคคล", display = '<abbr title="บุคคล">บุค.</abbr>'},
["np"] = {type = "animacy", cat = "POSไม่ใช่บุคคล", display = '<abbr title="ไม่ใช่บุคคล">อบุค.</abbr>'},
["an!"] = {type = "animacy", display = '<abbr title="animacy unattested">animacy unattested</abbr>'},
-- Virility (for Polish)
["vr"] = {type = "virility", cat = "virile POS", display = '<abbr title="virile (= masculine personal)">vir</abbr>'},
["nv"] = {type = "virility", cat = "nonvirile POS", display = '<abbr title="nonvirile (= other than masculine personal)">nvir</abbr>'},
-- Numbers
["s"] = {type = "number", display = '<abbr title="เอกพจน์">เอก.</abbr>'},
["d"] = {type = "number", cat = "ทวิพจน์เท่านั้น", display = '<abbr title="ทวิพจน์">ทวิ.</abbr>'},
["p"] = {type = "number", cat = "พหูพจน์เท่านั้น", display = '<abbr title="พหูพจน์">พหู.</abbr>'},
["num!"] = {type = "number", display = '<abbr title="number unattested">number unattested</abbr>'},
-- Verb qualifiers
["impf"] = {type = "aspect", cat = "POSไม่สมบูรณ์", display = '<abbr title="การณ์ลักษณะไม่สมบูรณ์">ไม่สมบูรณ์</abbr>'},
["pf"] = {type = "aspect", cat = "POSสมบูรณ์", display = '<abbr title="การณ์ลักษณะสมบูรณ์">สมบูรณ์</abbr>'},
["asp!"] = {type = "aspect", display = '<abbr title="aspect unattested">aspect unattested</abbr>'},
}
-- Combined codes that are equivalent to giving multiple specs. `mf` is the same as specifying two separate specs,
-- one with `m` in it and the other with `f`. `mfbysense` is similar but is used for nouns that can be either masculine
-- or feminine according as to whether they refer to masculine or feminine beings.
data.combinations = {
["mf"] = {codes = {"m", "f"}},
["mfequiv"] = {codes = {"m", "f"}, display = '<abbr title="เพศไม่ส่งผลต่อความหมาย">นัยเดิม</abbr>'},
["mfbysense"] = {codes = {"m", "f"}, cat = "POSที่เพศขึ้นอยู่กับความหมาย",
display = '<abbr title="เพศขึ้นอยู่กับสิ่งที่อ้างถึง">ตามนัย</abbr>'},
["biasp"] = {codes = {"impf", "pf"}},
}
-- Categories when multiple gender/number codes of a given type occur in different specs (two or more of the same type
-- cannot occur in a single spec).
data.multicode_cats = {
["gender"] = "POSที่มีหลายเพศ",
["animacy"] = "POSที่มีความมีชีวิตหลายแบบ",
["aspect"] = "POSที่มีการณ์ลักษณะสองแบบ",
}
return data
k2ytyzyx51sypq85468d3od09pssuoz
โสม
0
317501
5724819
5724749
2026-06-16T02:04:41Z
OctraBot
3198
/* การออกเสียง */
5724819
wikitext
text/x-wiki
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|โสม|โสม-มะ-:สำหรับรากศัพท์ 3 อีกด้วย}}
=== รากศัพท์ 1 ===
เป็นไปได้ว่า{{bor+|th|nan-tws|參,蔘|tr=som1|nocap=1}}
==== คำนาม ====
{{th-noun}}
# {{lang|th|([[ผัก]]~)}} [[ชื่อ]][[ไม้ล้มลุก]] 2 ชนิดในสกุล ''Talinum'' วงศ์ Portulacaceae ใบเดี่ยวอวบน้ำ
## [[โสมไทย]] (''T. paniculatum'' (Jacq.) Gaertn.) ใบกินได้และใช้ทำยาได้
## [[โสมญี่ปุ่น]] (''T. fruticosum'' (L.) Juss) ดอกสีชมพู ใบและยอดกินได้
# ชื่อไม้ล้มลุกหลายปี หลายชนิดในสกุล ''Panax'' วงศ์ Araliaceae ใบเป็นใบประกอบ รากอวบ มักมีรูปร่างคล้ายคน เรียกว่า [[โสมคน]] (แปลจาก [[人參]],[[人蔘]]) ใช้เป็นยาบำรุงกำลัง ที่สำคัญ เช่น [[โสมเกาหลี]]หรือ[[โสมจีน]] (''P. ginseng'' C. A. Mey.) ก้านช่อดอกยาวกว่าก้านใบ และ[[โสมอเมริกัน]] (''P. quinquefolium'' L.) ก้านช่อดอกยาวใกล้เคียงกับก้านใบ
===== ลูกคำ =====
{{col|th
|โสมขาว<t:ชื่อเล่นของเกาหลีใต้>
|โสมแดง<t:ชื่อเล่นของเกาหลีเหนือ>
}}
=== รากศัพท์ 2 ===
{{bor+|th|sa|सोम|gloss=พืช "โสม"; เถาวัลย์ต้มชนิดหนึ่งจากอินเดียสมัยพระเวท ทำจากพืช "โสม" ดื่มเป็นยาและถวายแด่เทพเจ้า นอกจากนี้ยังมีความเกี่ยวข้องกับดวงจันทร์หลังจากยุคพระเวท}}; ร่วมเชื้อสายกับ{{cog|okz|សោម-}}, {{cog|km|សោម}}
==== คำนาม ====
{{th-noun}}
# {{lang|th|([[น้ำ]]~)}} {{lb|th|ฮินดู}} น้ำ[[คั้น]]จากต้นของ[[ไม้เถา]]ชนิดหนึ่ง [[กรอง]]แล้วนำมา[[ผสม]]กับ[[เนยใส]] เพื่อใช้[[เซ่นสรวง]][[พระอินทร์]]และ[[เทพ]]อื่น ๆ
# {{lang|th|(น้ำ~)}} {{lb|th|โดยปริยาย}} [[เครื่องดื่ม]][[แอลกอฮอล์]], [[สุรา]][[เมรัย]]
=== รากศัพท์ 3 ===
{{bor+|th|sa|सोम||พระจันทร์|pos=ดูรากศัพท์ 2}} หรือ{{bor|th|pi|โสม||พระจันทร์}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|กลอน}} [[พระจันทร์]]
#: {{ux|th|เห็นนางนวลศรีมีโฉม ดัง'''โสม'''ส่องหล้าราศี}} (กนกนคร)
===== ลูกคำ =====
{{col|th
|โสมวาร<t:วันจันทร์>
|โสมส่องแสง
}}
=== รากศัพท์ 4 ===
เทียบ{{ncog|pi|โสณฺณ||ทอง}}, {{ncog|pra-sau|𑀲𑁄𑀡𑁆𑀡||ทอง}}
{{rfe|th}}
==== รูปแบบอื่น ====
* {{alt|th|โสรม||dated}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|กลอน}} [[ทอง]]
#: {{ux|th|ในทาบทองแล้วเนื้อนอก'''โสรม'''}} (กำสรวล)
=== รากศัพท์ 5 ===
{{rfe|th}}
==== คำนาม ====
{{th-noun}}
# [[ผี]]ชนิดหนึ่งที่คอยเฝ้า[[ขุมทรัพย์]]
== ภาษาคำเมือง ==
=== การออกเสียง ===
* {{IPA|nod|/soːm˨˦/|a=เชียงใหม่}}
=== คำนาม ===
{{nod-noun}}
# {{pronunciation spelling of|nod|ᩈᩰᩫ᩠ᨾ}}
# {{pronunciation spelling of|nod|ᨨᩰᩫ᩠ᨾ}}
mcisxjl55d8yjbpxkyzpfwrlfs3q7bp
ᨴᩱ
0
428956
5724813
5632594
2026-06-16T01:31:32Z
OctraBot
3198
/* คำวิสามานยนาม */
5724813
wikitext
text/x-wiki
{{also/auto}}
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
{{nod-alt|c=ᨴᩱ᩠ᨿ|l=ไท|s=ไต}}
=== การออกเสียง ===
* {{IPA|nod|/taj˧˧/|a=เชียงใหม่}}
=== คำนาม ===
{{nod-noun}}
# [[ไท]] (ชาติพันธุ์)
=== คำวิสามานยนาม ===
{{nod-proper noun}}
# {{synonym of|th|ᨴᩱ᩠ᨿ||ประเทศไทย; ภาษาไทย}}
{{topics|nod|ไทย}}
plnzdrxsiqqfp7gkwfnuotzi8kcssmo
ᥖᥭᥰ
0
2300567
5724802
5720730
2026-06-16T01:16:10Z
OctraBot
3198
/* รากศัพท์ */
5724802
wikitext
text/x-wiki
== ภาษาไทใต้คง ==
=== รากศัพท์ ===
{{inh+|tdd|tai-swe-pro|*dajᴬ²}}, จาก{{inh|th|tai-pro|*ɗwɤːjᴬ}}; ร่วมเชื้อสายกับ{{cog|th|ไท}}, {{cog|tts|ไท}}, {{cog|nod|ᨴᩱ}}, {{cog|lo|ໄທ}}, {{cog|nyw|ไท}}, {{cog|khb|ᦺᦑ}}, {{cog|blt|ꪼꪕ}}, {{cog|shn|တႆး}}, {{cog|aio|တႝ}}, {{cog|phk|တႝ}}, {{cog|aho|𑜄𑜩}}
=== คำนาม ===
{{tdd-verb}}
# [[ไท]]
4of49zgmg749ge4iod54spzjez4s58w
5724803
5724802
2026-06-16T01:16:19Z
OctraBot
3198
/* รากศัพท์ */
5724803
wikitext
text/x-wiki
== ภาษาไทใต้คง ==
=== รากศัพท์ ===
{{inh+|tdd|tai-swe-pro|*dajᴬ²}}, จาก{{inh|tdd|tai-pro|*ɗwɤːjᴬ}}; ร่วมเชื้อสายกับ{{cog|th|ไท}}, {{cog|tts|ไท}}, {{cog|nod|ᨴᩱ}}, {{cog|lo|ໄທ}}, {{cog|nyw|ไท}}, {{cog|khb|ᦺᦑ}}, {{cog|blt|ꪼꪕ}}, {{cog|shn|တႆး}}, {{cog|aio|တႝ}}, {{cog|phk|တႝ}}, {{cog|aho|𑜄𑜩}}
=== คำนาม ===
{{tdd-verb}}
# [[ไท]]
2t106nnf9ro6k9owgyo1urazo0ce5j4
คุยกับผู้ใช้:Ylovoir
3
2331792
5724791
2026-06-15T13:44:42Z
Jules*
19120
Jules* ย้ายหน้า [[คุยกับผู้ใช้:Ylovoir]] ไปยัง [[คุยกับผู้ใช้:Yl0o0]]: ย้ายหน้าอัตโนมัติขณะเปลี่ยนชื่อผู้ใช้ "[[Special:CentralAuth/Ylovoir|Ylovoir]]" เป็น "[[Special:CentralAuth/Yl0o0|Yl0o0]]"
5724791
wikitext
text/x-wiki
#เปลี่ยนทาง [[คุยกับผู้ใช้:Yl0o0]]
fjx9dely4huaa7yyej61m8o003u8hnf
ตะเกี่ย
0
2331793
5724792
2026-06-15T13:47:48Z
CorneliusVnG
17117
สร้างหน้าด้วย "ตะเกี่ย เป็นชื่อบุคคล พบในชื่อ มัสยิดเจ้าพระคุณตะเกี่ย หรือ มัสยิดตะเกี่ยโยคิณราชมิสจินจาสยาม ==== ดูเพิ่ม ==== https://edutour.vantagestudio.net/node/188?language=th"
5724792
wikitext
text/x-wiki
ตะเกี่ย เป็นชื่อบุคคล พบในชื่อ มัสยิดเจ้าพระคุณตะเกี่ย หรือ มัสยิดตะเกี่ยโยคิณราชมิสจินจาสยาม ==== ดูเพิ่ม ==== https://edutour.vantagestudio.net/node/188?language=th
b8xsvj4kp9fx6wty1id9pzh9c21f7s4
5724794
5724792
2026-06-15T16:45:11Z
Alifshinobi
397
5724794
wikitext
text/x-wiki
{{delete|ข้อมูลไม่ได้จัดอยู่ในรูปแบบที่เหมาะสมกับรูปแบบที่ใช้ในวิกิพจนานุกรม}}
ตะเกี่ย เป็นชื่อบุคคล พบในชื่อ มัสยิดเจ้าพระคุณตะเกี่ย หรือ มัสยิดตะเกี่ยโยคิณราชมิสจินจาสยาม ==== ดูเพิ่ม ==== https://edutour.vantagestudio.net/node/188?language=th
szr9q0sy6ofuk32sxfb0jt70xvbti4g
ᨤᩣ᩠ᩅ
0
2331794
5724797
2026-06-15T18:00:05Z
Alifshinobi
397
สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=ฅาว|s=คาว}} === การออกเสียง === * {{IPA|nod|/xaːw˧˧/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # [[คาว]] {{gl|กลิ่นเหม็นอย่างกลิ่นของปลาสดเนื้อสด, กับข้าว}} === อ้างอิง === {{รายก..."
5724797
wikitext
text/x-wiki
== ภาษาคำเมือง ==
=== รูปแบบอื่น ===
{{nod-alt|l=ฅาว|s=คาว}}
=== การออกเสียง ===
* {{IPA|nod|/xaːw˧˧/|a=เชียงใหม่}}
=== คำนาม ===
{{nod-noun}}
# [[คาว]] {{gl|กลิ่นเหม็นอย่างกลิ่นของปลาสดเนื้อสด, กับข้าว}}
=== อ้างอิง ===
{{รายการอ้างอิง}}
* สุนทรสิงห์, จ. (n.d.). คาว. In ''มรดกล้านนา พจนานุกรมภาษาล้านนา-ไทย, ไทย-ล้านนา''. https://moradoklanna.com/dict/?คาว
4tokuo92entnuzzki7le3gma9czgimx
สุทธิ
0
2331795
5724827
2026-06-16T02:57:53Z
OctraBot
3198
สร้างหน้าด้วย "== ภาษาไทย == === รากศัพท์ === {{bor+|th|pi|สุทฺธิ}} === การออกเสียง === {{th-pron|สุด-ทิ}} === คำคุณศัพท์ === {{th-adj|-}} # [[แท้ ๆ]], [[ล้วน ๆ]] #: {{ux|th|กาแฟขวดนี้น้ำหนักสุทธิ 100 กรัม}}"
5724827
wikitext
text/x-wiki
== ภาษาไทย ==
=== รากศัพท์ ===
{{bor+|th|pi|สุทฺธิ}}
=== การออกเสียง ===
{{th-pron|สุด-ทิ}}
=== คำคุณศัพท์ ===
{{th-adj|-}}
# [[แท้ ๆ]], [[ล้วน ๆ]]
#: {{ux|th|กาแฟขวดนี้น้ำหนักสุทธิ 100 กรัม}}
od3le0ejuj76us5vk5vjhyehjt4ts1k
5724828
5724827
2026-06-16T03:02:02Z
OctraBot
3198
/* รากศัพท์ */
5724828
wikitext
text/x-wiki
== ภาษาไทย ==
=== รากศัพท์ ===
{{bor+|th|pi|สุทฺธิ}}, จาก{{der|th|sa|शुद्धि}}
=== การออกเสียง ===
{{th-pron|สุด-ทิ}}
=== คำคุณศัพท์ ===
{{th-adj|-}}
# [[แท้ ๆ]], [[ล้วน ๆ]]
#: {{ux|th|กาแฟขวดนี้น้ำหนักสุทธิ 100 กรัม}}
k2w2dl8hxkuv8phq8wsctefmc6fphbz
5724829
5724828
2026-06-16T03:04:25Z
OctraBot
3198
/* รากศัพท์ */
5724829
wikitext
text/x-wiki
== ภาษาไทย ==
=== รากศัพท์ ===
{{bor+|th|pi|สุทฺธิ}}, จาก{{der|th|sa|शुद्धि}}
{{ศบญ|net}}
=== การออกเสียง ===
{{th-pron|สุด-ทิ}}
=== คำคุณศัพท์ ===
{{th-adj|-}}
# [[แท้ ๆ]], [[ล้วน ๆ]]
#: {{ux|th|กาแฟขวดนี้น้ำหนักสุทธิ 100 กรัม}}
pr3e8jsskmx6ey7tib0w2o1kxrqs64n
शुद्धि
0
2331796
5724831
2026-06-16T04:13:15Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5724831
wikitext
text/x-wiki
== ภาษาสันสกฤต ==
=== รูปแบบอื่น ===
{{sa-alt}}
=== รากศัพท์ ===
{{affix|sa|शुध्|-ति}}
=== การออกเสียง ===
{{sa-IPA}}
=== คำนาม ===
{{sa-noun|शुध्|g=f}}
# {{lb|sa|ศาสนาฮินดู}} {{w|ศุทธิ (ศาสนาฮินดู)|ศุทธิ}}
# {{lb|sa|ความหมายตรงตัว|ความหมายเชิงเปรียบเทียบ}} [[การชำระ]][[ล้าง]], การทำให้บริสุทธิ์, ความบริสุทธิ์, [[ความศักดิ์สิทธิ์]], [[การปลดปล่อย]]จาก[[มลทิน]], [[พิธีกรรม]][[ชำระ]][[ล้าง]]
# [[การทำ]][[ให้]][[เป็น]][[อิสระ]] หรือการทำให้[[ปลอดภัย]] (จากอันตรายใด ๆ)
#* {{Q|sa||Kām}}
#* {{Q|sa||VarBṛS}}
# [[การพิสูจน์]][[ความชอบธรรม]], [[การพ้น]][[ผิด]], [[ความบริสุทธิ์]] (ที่พิสูจน์ได้จากการทดสอบหรือการไต่สวน)
# [[การยกหนี้]], [[การชำระ]][[หนี้]] หรือ[[การจ่าย]]หนี้, [[การปลด]] (จากหนี้สิน ฯลฯ)
#* {{Q|sa||MW}}
# [[การแก้แค้น]]
# [[การตรวจสอบ]], [[การแก้ไข]], การทำให้[[เป็น]][[จริง]], ความถูกต้อง, ความแม่นยำ, [[ความแท้จริง]], [[ความจริง]]
#* {{Q|sa||Yājñ}}
# [[ความชัดเจน]], [[ความแน่นอน]], [[ความรู้]]ที่ถูกต้องเกี่ยวกับ {{q|ใช้กับสัมพันธการกหรือในคำประสม}}
#: {{ux|sa|'''शुद्धिं'''[[कृ]]|tr='''śuddhiṃ'''-kṛ|t=ตรวจสอบให้แน่ใจ}}
# {{lb|sa|เลขคณิต}} ไม่เหลือ[[เศษ]]
#: {{ux|sa|'''शुद्धि'''मि|tr='''śuddhim'''-i|t=ไม่เหลือเศษ}}
# [[การลบ]]ของ[[ปริมาณ]] หรือปริมาณที่จะ[[ลบ]]
# ชื่อของ[[พระแม่ทุรคา]]
# หนึ่งในพระศักติของพระวิษณุ
# ทากษายณีที่ได้รับการบูชาที่กปาลโมจนะ
==== การผันรูป ====
{{sa-decl-noun-f}}
==== ลูกคำ ====
{{col3|sa|विशुद्धि|अशुद्धि|शुद्धिकर|शुद्धिकृत|शुद्धितम|संशुद्धि|परिशुद्धि}}
==== คำสืบทอด ====
* {{desc|pi|suddhi|t=การทำให้บริสุทธิ์|g=f}}
* {{desc|pra|𑀲𑀼𑀤𑁆𑀥𑀺|t=การทำให้บริสุทธิ์, สารสนเทศ|g=f}}
** ตะวันตกเฉียงเหนือ:
*** {{desc|sd|سدھ|tr=sudhi}}
*** {{desc|pa|سدھ|tr=-}} / {{l|pa|ਸੁੱਧ}}
** เหนือ:
*** {{desc|ne|सुधि|सुद्धि}}
** ตะวันออก:
*** {{desc|bn|সুধ|সুধি}}
*** {{desc|as|সুধি}}
** ตอนกลาง:
*** ฮินดูสตานี:
***: {{desc|hi|सुध|सुधी}}
***: {{desc|ur|سدھ|سدھی}}
*** {{desc|gu|સૂધ}}
*** {{desc|mr|सुधी}}
=== อ้างอิง ===
* {{R:sa:MW}}
== ภาษาฮินดี ==
=== รากศัพท์ ===
{{lbor|hi|sa|शुद्धि}}; {{doublet|hi|सुध}}
=== การออกเสียง ===
* {{hi-IPA}}
=== คำนาม ===
{{hi-noun|f}}
# [[ความบริสุทธิ์]]
# [[การทำ]][[ให้]][[บริสุทธิ์]], [[การชดใช้]][[บาป]]
# [[การชำระ]] (ความผิด)
# [[ความถูกต้อง]], [[ความแม่นยำ]] (ของงาน)
# [[การตอบแทน]]
==== การผันรูป ====
{{hi-ndecl|<F>}}
==== ลูกคำ ====
{{col3|hi|शुद्धिकरण|शुद्धिकारक|शुद्धिकारी|शुद्धिपत्र|शुद्धिबोध|शुद्धिवादी}}
==== คำเกี่ยวข้อง ====
{{col3|hi|अशुद्धि|परिशुद्धि|संशुद्धि}}
=== อ้างอิง ===
* {{R:hi:McGregor}}
pk1qolh05bv2v4e0cf22i79z1krtgub
5724832
5724831
2026-06-16T04:13:50Z
OctraBot
3198
/* คำนาม */
5724832
wikitext
text/x-wiki
== ภาษาสันสกฤต ==
=== รูปแบบอื่น ===
{{sa-alt}}
=== รากศัพท์ ===
{{affix|sa|शुध्|-ति}}
=== การออกเสียง ===
{{sa-IPA}}
=== คำนาม ===
{{sa-noun|शुध्|g=f}}
# {{lb|sa|ศาสนาฮินดู}} {{w|ศุทธิ (ศาสนาฮินดู)|ศุทธิ}}
# {{lb|sa|ความหมายตรงตัว|ความหมายเชิงเปรียบเทียบ}} [[การชำระ]][[ล้าง]], การทำให้บริสุทธิ์, ความบริสุทธิ์, [[ความศักดิ์สิทธิ์]], [[การปลดปล่อย]]จาก[[มลทิน]], [[พิธีกรรม]][[ชำระ]][[ล้าง]]
# [[การทำ]][[ให้]][[เป็น]][[อิสระ]] หรือการทำให้[[ปลอดภัย]] (จากอันตรายใด ๆ)
#* {{Q|sa||Kām}}
#* {{Q|sa||VarBṛS}}
# [[การพิสูจน์]][[ความชอบธรรม]], [[การพ้น]][[ผิด]], [[ความบริสุทธิ์]] (ที่พิสูจน์ได้จากการทดสอบหรือการไต่สวน)
# [[การยกหนี้]], [[การชำระ]][[หนี้]] หรือ[[การจ่าย]]หนี้, [[การปลด]] (จากหนี้สิน ฯลฯ)
#* {{Q|sa||MW}}
# [[การแก้แค้น]]
# [[การตรวจสอบ]], [[การแก้ไข]], การทำให้[[เป็น]][[จริง]], ความถูกต้อง, ความแม่นยำ, [[ความแท้จริง]], [[ความจริง]]
#* {{Q|sa||Yājñ}}
# [[ความชัดเจน]], [[ความแน่นอน]], [[ความรู้]]ที่ถูกต้องเกี่ยวกับ {{q|ใช้กับสัมพันธการกหรือในคำประสม}}
#: {{ux|sa|'''शुद्धिं'''[[कृ]]|t=ตรวจสอบให้แน่ใจ}}
# {{lb|sa|เลขคณิต}} ไม่เหลือ[[เศษ]]
#: {{ux|sa|'''शुद्धि'''मि|t=ไม่เหลือเศษ}}
# [[การลบ]]ของ[[ปริมาณ]] หรือปริมาณที่จะ[[ลบ]]
# ชื่อของ[[พระแม่ทุรคา]]
# หนึ่งในพระศักติของพระวิษณุ
# ทากษายณีที่ได้รับการบูชาที่กปาลโมจนะ
==== การผันรูป ====
{{sa-decl-noun-f}}
==== ลูกคำ ====
{{col3|sa|विशुद्धि|अशुद्धि|शुद्धिकर|शुद्धिकृत|शुद्धितम|संशुद्धि|परिशुद्धि}}
==== คำสืบทอด ====
* {{desc|pi|suddhi|t=การทำให้บริสุทธิ์|g=f}}
* {{desc|pra|𑀲𑀼𑀤𑁆𑀥𑀺|t=การทำให้บริสุทธิ์, สารสนเทศ|g=f}}
** ตะวันตกเฉียงเหนือ:
*** {{desc|sd|سدھ|tr=sudhi}}
*** {{desc|pa|سدھ|tr=-}} / {{l|pa|ਸੁੱਧ}}
** เหนือ:
*** {{desc|ne|सुधि|सुद्धि}}
** ตะวันออก:
*** {{desc|bn|সুধ|সুধি}}
*** {{desc|as|সুধি}}
** ตอนกลาง:
*** ฮินดูสตานี:
***: {{desc|hi|सुध|सुधी}}
***: {{desc|ur|سدھ|سدھی}}
*** {{desc|gu|સૂધ}}
*** {{desc|mr|सुधी}}
=== อ้างอิง ===
* {{R:sa:MW}}
== ภาษาฮินดี ==
=== รากศัพท์ ===
{{lbor|hi|sa|शुद्धि}}; {{doublet|hi|सुध}}
=== การออกเสียง ===
* {{hi-IPA}}
=== คำนาม ===
{{hi-noun|f}}
# [[ความบริสุทธิ์]]
# [[การทำ]][[ให้]][[บริสุทธิ์]], [[การชดใช้]][[บาป]]
# [[การชำระ]] (ความผิด)
# [[ความถูกต้อง]], [[ความแม่นยำ]] (ของงาน)
# [[การตอบแทน]]
==== การผันรูป ====
{{hi-ndecl|<F>}}
==== ลูกคำ ====
{{col3|hi|शुद्धिकरण|शुद्धिकारक|शुद्धिकारी|शुद्धिपत्र|शुद्धिबोध|शुद्धिवादी}}
==== คำเกี่ยวข้อง ====
{{col3|hi|अशुद्धि|परिशुद्धि|संशुद्धि}}
=== อ้างอิง ===
* {{R:hi:McGregor}}
rsbt9833rydkk085ozqbe2lnc4sjee5
5724833
5724832
2026-06-16T04:15:02Z
OctraBot
3198
/* คำสืบทอด */
5724833
wikitext
text/x-wiki
== ภาษาสันสกฤต ==
=== รูปแบบอื่น ===
{{sa-alt}}
=== รากศัพท์ ===
{{affix|sa|शुध्|-ति}}
=== การออกเสียง ===
{{sa-IPA}}
=== คำนาม ===
{{sa-noun|शुध्|g=f}}
# {{lb|sa|ศาสนาฮินดู}} {{w|ศุทธิ (ศาสนาฮินดู)|ศุทธิ}}
# {{lb|sa|ความหมายตรงตัว|ความหมายเชิงเปรียบเทียบ}} [[การชำระ]][[ล้าง]], การทำให้บริสุทธิ์, ความบริสุทธิ์, [[ความศักดิ์สิทธิ์]], [[การปลดปล่อย]]จาก[[มลทิน]], [[พิธีกรรม]][[ชำระ]][[ล้าง]]
# [[การทำ]][[ให้]][[เป็น]][[อิสระ]] หรือการทำให้[[ปลอดภัย]] (จากอันตรายใด ๆ)
#* {{Q|sa||Kām}}
#* {{Q|sa||VarBṛS}}
# [[การพิสูจน์]][[ความชอบธรรม]], [[การพ้น]][[ผิด]], [[ความบริสุทธิ์]] (ที่พิสูจน์ได้จากการทดสอบหรือการไต่สวน)
# [[การยกหนี้]], [[การชำระ]][[หนี้]] หรือ[[การจ่าย]]หนี้, [[การปลด]] (จากหนี้สิน ฯลฯ)
#* {{Q|sa||MW}}
# [[การแก้แค้น]]
# [[การตรวจสอบ]], [[การแก้ไข]], การทำให้[[เป็น]][[จริง]], ความถูกต้อง, ความแม่นยำ, [[ความแท้จริง]], [[ความจริง]]
#* {{Q|sa||Yājñ}}
# [[ความชัดเจน]], [[ความแน่นอน]], [[ความรู้]]ที่ถูกต้องเกี่ยวกับ {{q|ใช้กับสัมพันธการกหรือในคำประสม}}
#: {{ux|sa|'''शुद्धिं'''[[कृ]]|t=ตรวจสอบให้แน่ใจ}}
# {{lb|sa|เลขคณิต}} ไม่เหลือ[[เศษ]]
#: {{ux|sa|'''शुद्धि'''मि|t=ไม่เหลือเศษ}}
# [[การลบ]]ของ[[ปริมาณ]] หรือปริมาณที่จะ[[ลบ]]
# ชื่อของ[[พระแม่ทุรคา]]
# หนึ่งในพระศักติของพระวิษณุ
# ทากษายณีที่ได้รับการบูชาที่กปาลโมจนะ
==== การผันรูป ====
{{sa-decl-noun-f}}
==== ลูกคำ ====
{{col3|sa|विशुद्धि|अशुद्धि|शुद्धिकर|शुद्धिकृत|शुद्धितम|संशुद्धि|परिशुद्धि}}
==== คำสืบทอด ====
* {{desc|pi|suddhi|t=การทำให้บริสุทธิ์|g=f}}
* {{desc|pra|𑀲𑀼𑀤𑁆𑀥𑀺|t=การทำให้บริสุทธิ์, ข่าวสาร|g=f}}
** ตะวันตกเฉียงเหนือ:
*** {{desc|sd|سدھ|tr=sudhi}}
*** {{desc|pa|سدھ|tr=-}} / {{l|pa|ਸੁੱਧ}}
** เหนือ:
*** {{desc|ne|सुधि|सुद्धि}}
** ตะวันออก:
*** {{desc|bn|সুধ|সুধি}}
*** {{desc|as|সুধি}}
** ตอนกลาง:
*** ฮินดูสตานี:
***: {{desc|hi|सुध|सुधी}}
***: {{desc|ur|سدھ|سدھی}}
*** {{desc|gu|સૂધ}}
*** {{desc|mr|सुधी}}
=== อ้างอิง ===
* {{R:sa:MW}}
== ภาษาฮินดี ==
=== รากศัพท์ ===
{{lbor|hi|sa|शुद्धि}}; {{doublet|hi|सुध}}
=== การออกเสียง ===
* {{hi-IPA}}
=== คำนาม ===
{{hi-noun|f}}
# [[ความบริสุทธิ์]]
# [[การทำ]][[ให้]][[บริสุทธิ์]], [[การชดใช้]][[บาป]]
# [[การชำระ]] (ความผิด)
# [[ความถูกต้อง]], [[ความแม่นยำ]] (ของงาน)
# [[การตอบแทน]]
==== การผันรูป ====
{{hi-ndecl|<F>}}
==== ลูกคำ ====
{{col3|hi|शुद्धिकरण|शुद्धिकारक|शुद्धिकारी|शुद्धिपत्र|शुद्धिबोध|शुद्धिवादी}}
==== คำเกี่ยวข้อง ====
{{col3|hi|अशुद्धि|परिशुद्धि|संशुद्धि}}
=== อ้างอิง ===
* {{R:hi:McGregor}}
538gjzxyrl8ushfexnyumoddh45brdb
5724834
5724833
2026-06-16T04:15:24Z
OctraBot
3198
/* คำนาม */
5724834
wikitext
text/x-wiki
== ภาษาสันสกฤต ==
=== รูปแบบอื่น ===
{{sa-alt}}
=== รากศัพท์ ===
{{affix|sa|शुध्|-ति}}
=== การออกเสียง ===
{{sa-IPA}}
=== คำนาม ===
{{sa-noun|शुध्|g=f}}
# {{lb|sa|ศาสนาฮินดู}} {{w|ศุทธิ (ศาสนาฮินดู)|ศุทธิ}}
# {{lb|sa|ตรงตัว|เชิงเปรียบเทียบ}} [[การชำระ]][[ล้าง]], การทำให้บริสุทธิ์, ความบริสุทธิ์, [[ความศักดิ์สิทธิ์]], [[การปลดปล่อย]]จาก[[มลทิน]], [[พิธีกรรม]][[ชำระ]][[ล้าง]]
# [[การทำ]][[ให้]][[เป็น]][[อิสระ]] หรือการทำให้[[ปลอดภัย]] (จากอันตรายใด ๆ)
#* {{Q|sa||Kām}}
#* {{Q|sa||VarBṛS}}
# [[การพิสูจน์]][[ความชอบธรรม]], [[การพ้น]][[ผิด]], [[ความบริสุทธิ์]] (ที่พิสูจน์ได้จากการทดสอบหรือการไต่สวน)
# [[การยกหนี้]], [[การชำระ]][[หนี้]] หรือ[[การจ่าย]]หนี้, [[การปลด]] (จากหนี้สิน ฯลฯ)
#* {{Q|sa||MW}}
# [[การแก้แค้น]]
# [[การตรวจสอบ]], [[การแก้ไข]], การทำให้[[เป็น]][[จริง]], ความถูกต้อง, ความแม่นยำ, [[ความแท้จริง]], [[ความจริง]]
#* {{Q|sa||Yājñ}}
# [[ความชัดเจน]], [[ความแน่นอน]], [[ความรู้]]ที่ถูกต้องเกี่ยวกับ {{q|ใช้กับสัมพันธการกหรือในคำประสม}}
#: {{ux|sa|'''शुद्धिं'''[[कृ]]|t=ตรวจสอบให้แน่ใจ}}
# {{lb|sa|เลขคณิต}} ไม่เหลือ[[เศษ]]
#: {{ux|sa|'''शुद्धि'''मि|t=ไม่เหลือเศษ}}
# [[การลบ]]ของ[[ปริมาณ]] หรือปริมาณที่จะ[[ลบ]]
# ชื่อของ[[พระแม่ทุรคา]]
# หนึ่งในพระศักติของพระวิษณุ
# ทากษายณีที่ได้รับการบูชาที่กปาลโมจนะ
==== การผันรูป ====
{{sa-decl-noun-f}}
==== ลูกคำ ====
{{col3|sa|विशुद्धि|अशुद्धि|शुद्धिकर|शुद्धिकृत|शुद्धितम|संशुद्धि|परिशुद्धि}}
==== คำสืบทอด ====
* {{desc|pi|suddhi|t=การทำให้บริสุทธิ์|g=f}}
* {{desc|pra|𑀲𑀼𑀤𑁆𑀥𑀺|t=การทำให้บริสุทธิ์, ข่าวสาร|g=f}}
** ตะวันตกเฉียงเหนือ:
*** {{desc|sd|سدھ|tr=sudhi}}
*** {{desc|pa|سدھ|tr=-}} / {{l|pa|ਸੁੱਧ}}
** เหนือ:
*** {{desc|ne|सुधि|सुद्धि}}
** ตะวันออก:
*** {{desc|bn|সুধ|সুধি}}
*** {{desc|as|সুধি}}
** ตอนกลาง:
*** ฮินดูสตานี:
***: {{desc|hi|सुध|सुधी}}
***: {{desc|ur|سدھ|سدھی}}
*** {{desc|gu|સૂધ}}
*** {{desc|mr|सुधी}}
=== อ้างอิง ===
* {{R:sa:MW}}
== ภาษาฮินดี ==
=== รากศัพท์ ===
{{lbor|hi|sa|शुद्धि}}; {{doublet|hi|सुध}}
=== การออกเสียง ===
* {{hi-IPA}}
=== คำนาม ===
{{hi-noun|f}}
# [[ความบริสุทธิ์]]
# [[การทำ]][[ให้]][[บริสุทธิ์]], [[การชดใช้]][[บาป]]
# [[การชำระ]] (ความผิด)
# [[ความถูกต้อง]], [[ความแม่นยำ]] (ของงาน)
# [[การตอบแทน]]
==== การผันรูป ====
{{hi-ndecl|<F>}}
==== ลูกคำ ====
{{col3|hi|शुद्धिकरण|शुद्धिकारक|शुद्धिकारी|शुद्धिपत्र|शुद्धिबोध|शुद्धिवादी}}
==== คำเกี่ยวข้อง ====
{{col3|hi|अशुद्धि|परिशुद्धि|संशुद्धि}}
=== อ้างอิง ===
* {{R:hi:McGregor}}
6mtwdjbzqc4nxo6nl4uupoi9ovwwzuv
5724835
5724834
2026-06-16T04:15:58Z
OctraBot
3198
/* คำนาม */
5724835
wikitext
text/x-wiki
== ภาษาสันสกฤต ==
=== รูปแบบอื่น ===
{{sa-alt}}
=== รากศัพท์ ===
{{affix|sa|शुध्|-ति}}
=== การออกเสียง ===
{{sa-IPA}}
=== คำนาม ===
{{sa-noun|शुध्|g=f}}
# {{lb|sa|ศาสนาฮินดู}} {{w|ศุทธิ (ศาสนาฮินดู)|ศุทธิ}}
# {{lb|sa|literal|figurative}} [[การชำระ]][[ล้าง]], การทำให้บริสุทธิ์, ความบริสุทธิ์, [[ความศักดิ์สิทธิ์]], [[การปลดปล่อย]]จาก[[มลทิน]], [[พิธีกรรม]][[ชำระ]][[ล้าง]]
# [[การทำ]][[ให้]][[เป็น]][[อิสระ]] หรือการทำให้[[ปลอดภัย]] (จากอันตรายใด ๆ)
#* {{Q|sa||Kām}}
#* {{Q|sa||VarBṛS}}
# [[การพิสูจน์]][[ความชอบธรรม]], [[การพ้น]][[ผิด]], [[ความบริสุทธิ์]] (ที่พิสูจน์ได้จากการทดสอบหรือการไต่สวน)
# [[การยกหนี้]], [[การชำระ]][[หนี้]] หรือ[[การจ่าย]]หนี้, [[การปลด]] (จากหนี้สิน ฯลฯ)
#* {{Q|sa||MW}}
# [[การแก้แค้น]]
# [[การตรวจสอบ]], [[การแก้ไข]], การทำให้[[เป็น]][[จริง]], ความถูกต้อง, ความแม่นยำ, [[ความแท้จริง]], [[ความจริง]]
#* {{Q|sa||Yājñ}}
# [[ความชัดเจน]], [[ความแน่นอน]], [[ความรู้]]ที่ถูกต้องเกี่ยวกับ {{q|ใช้กับสัมพันธการกหรือในคำประสม}}
#: {{ux|sa|'''शुद्धिं'''[[कृ]]|t=ตรวจสอบให้แน่ใจ}}
# {{lb|sa|เลขคณิต}} ไม่เหลือ[[เศษ]]
#: {{ux|sa|'''शुद्धि'''मि|t=ไม่เหลือเศษ}}
# [[การลบ]]ของ[[ปริมาณ]] หรือปริมาณที่จะ[[ลบ]]
# ชื่อของ[[พระแม่ทุรคา]]
# หนึ่งในพระศักติของพระวิษณุ
# ทากษายณีที่ได้รับการบูชาที่กปาลโมจนะ
==== การผันรูป ====
{{sa-decl-noun-f}}
==== ลูกคำ ====
{{col3|sa|विशुद्धि|अशुद्धि|शुद्धिकर|शुद्धिकृत|शुद्धितम|संशुद्धि|परिशुद्धि}}
==== คำสืบทอด ====
* {{desc|pi|suddhi|t=การทำให้บริสุทธิ์|g=f}}
* {{desc|pra|𑀲𑀼𑀤𑁆𑀥𑀺|t=การทำให้บริสุทธิ์, ข่าวสาร|g=f}}
** ตะวันตกเฉียงเหนือ:
*** {{desc|sd|سدھ|tr=sudhi}}
*** {{desc|pa|سدھ|tr=-}} / {{l|pa|ਸੁੱਧ}}
** เหนือ:
*** {{desc|ne|सुधि|सुद्धि}}
** ตะวันออก:
*** {{desc|bn|সুধ|সুধি}}
*** {{desc|as|সুধি}}
** ตอนกลาง:
*** ฮินดูสตานี:
***: {{desc|hi|सुध|सुधी}}
***: {{desc|ur|سدھ|سدھی}}
*** {{desc|gu|સૂધ}}
*** {{desc|mr|सुधी}}
=== อ้างอิง ===
* {{R:sa:MW}}
== ภาษาฮินดี ==
=== รากศัพท์ ===
{{lbor|hi|sa|शुद्धि}}; {{doublet|hi|सुध}}
=== การออกเสียง ===
* {{hi-IPA}}
=== คำนาม ===
{{hi-noun|f}}
# [[ความบริสุทธิ์]]
# [[การทำ]][[ให้]][[บริสุทธิ์]], [[การชดใช้]][[บาป]]
# [[การชำระ]] (ความผิด)
# [[ความถูกต้อง]], [[ความแม่นยำ]] (ของงาน)
# [[การตอบแทน]]
==== การผันรูป ====
{{hi-ndecl|<F>}}
==== ลูกคำ ====
{{col3|hi|शुद्धिकरण|शुद्धिकारक|शुद्धिकारी|शुद्धिपत्र|शुद्धिबोध|शुद्धिवादी}}
==== คำเกี่ยวข้อง ====
{{col3|hi|अशुद्धि|परिशुद्धि|संशुद्धि}}
=== อ้างอิง ===
* {{R:hi:McGregor}}
g1ppij7hblr8g42nrmkquypdampjdvk
5724837
5724835
2026-06-16T04:19:40Z
OctraBot
3198
/* คำสืบทอด */
5724837
wikitext
text/x-wiki
== ภาษาสันสกฤต ==
=== รูปแบบอื่น ===
{{sa-alt}}
=== รากศัพท์ ===
{{affix|sa|शुध्|-ति}}
=== การออกเสียง ===
{{sa-IPA}}
=== คำนาม ===
{{sa-noun|शुध्|g=f}}
# {{lb|sa|ศาสนาฮินดู}} {{w|ศุทธิ (ศาสนาฮินดู)|ศุทธิ}}
# {{lb|sa|literal|figurative}} [[การชำระ]][[ล้าง]], การทำให้บริสุทธิ์, ความบริสุทธิ์, [[ความศักดิ์สิทธิ์]], [[การปลดปล่อย]]จาก[[มลทิน]], [[พิธีกรรม]][[ชำระ]][[ล้าง]]
# [[การทำ]][[ให้]][[เป็น]][[อิสระ]] หรือการทำให้[[ปลอดภัย]] (จากอันตรายใด ๆ)
#* {{Q|sa||Kām}}
#* {{Q|sa||VarBṛS}}
# [[การพิสูจน์]][[ความชอบธรรม]], [[การพ้น]][[ผิด]], [[ความบริสุทธิ์]] (ที่พิสูจน์ได้จากการทดสอบหรือการไต่สวน)
# [[การยกหนี้]], [[การชำระ]][[หนี้]] หรือ[[การจ่าย]]หนี้, [[การปลด]] (จากหนี้สิน ฯลฯ)
#* {{Q|sa||MW}}
# [[การแก้แค้น]]
# [[การตรวจสอบ]], [[การแก้ไข]], การทำให้[[เป็น]][[จริง]], ความถูกต้อง, ความแม่นยำ, [[ความแท้จริง]], [[ความจริง]]
#* {{Q|sa||Yājñ}}
# [[ความชัดเจน]], [[ความแน่นอน]], [[ความรู้]]ที่ถูกต้องเกี่ยวกับ {{q|ใช้กับสัมพันธการกหรือในคำประสม}}
#: {{ux|sa|'''शुद्धिं'''[[कृ]]|t=ตรวจสอบให้แน่ใจ}}
# {{lb|sa|เลขคณิต}} ไม่เหลือ[[เศษ]]
#: {{ux|sa|'''शुद्धि'''मि|t=ไม่เหลือเศษ}}
# [[การลบ]]ของ[[ปริมาณ]] หรือปริมาณที่จะ[[ลบ]]
# ชื่อของ[[พระแม่ทุรคา]]
# หนึ่งในพระศักติของพระวิษณุ
# ทากษายณีที่ได้รับการบูชาที่กปาลโมจนะ
==== การผันรูป ====
{{sa-decl-noun-f}}
==== ลูกคำ ====
{{col3|sa|विशुद्धि|अशुद्धि|शुद्धिकर|शुद्धिकृत|शुद्धितम|संशुद्धि|परिशुद्धि}}
==== คำสืบทอด ====
* {{desc|pi|สุทฺธิ|t=การทำให้บริสุทธิ์|g=f}}
* {{desc|pra|𑀲𑀼𑀤𑁆𑀥𑀺|t=การทำให้บริสุทธิ์, ข่าวสาร|g=f}}
** ตะวันตกเฉียงเหนือ:
*** {{desc|sd|سدھ|tr=sudhi}}
*** {{desc|pa|سدھ|tr=-}} / {{l|pa|ਸੁੱਧ}}
** เหนือ:
*** {{desc|ne|सुधि|सुद्धि}}
** ตะวันออก:
*** {{desc|bn|সুধ|সুধি}}
*** {{desc|as|সুধি}}
** ตอนกลาง:
*** ฮินดูสตานี:
***: {{desc|hi|सुध|सुधी}}
***: {{desc|ur|سدھ|سدھی}}
*** {{desc|gu|સૂધ}}
*** {{desc|mr|सुधी}}
=== อ้างอิง ===
* {{R:sa:MW}}
== ภาษาฮินดี ==
=== รากศัพท์ ===
{{lbor|hi|sa|शुद्धि}}; {{doublet|hi|सुध}}
=== การออกเสียง ===
* {{hi-IPA}}
=== คำนาม ===
{{hi-noun|f}}
# [[ความบริสุทธิ์]]
# [[การทำ]][[ให้]][[บริสุทธิ์]], [[การชดใช้]][[บาป]]
# [[การชำระ]] (ความผิด)
# [[ความถูกต้อง]], [[ความแม่นยำ]] (ของงาน)
# [[การตอบแทน]]
==== การผันรูป ====
{{hi-ndecl|<F>}}
==== ลูกคำ ====
{{col3|hi|शुद्धिकरण|शुद्धिकारक|शुद्धिकारी|शुद्धिपत्र|शुद्धिबोध|शुद्धिवादी}}
==== คำเกี่ยวข้อง ====
{{col3|hi|अशुद्धि|परिशुद्धि|संशुद्धि}}
=== อ้างอิง ===
* {{R:hi:McGregor}}
rpjxhjb9ob0zmqt871uuf44nuztvpom
แม่แบบ:sa-decl-noun-f
10
2331797
5724836
2026-06-16T04:19:27Z
OctraBot
3198
นำเข้าจาก enwikt
5724836
wikitext
text/x-wiki
<includeonly>{{#invoke:sa-decl|show|f}}</includeonly><!--
--><noinclude>{{tcat|ndecl:f}}</noinclude><!--
--><noinclude>{{documentation}}</noinclude>
t0l1pj57nq53tvx53bgumcewykfwssa
มอดูล:sa-decl
828
2331798
5724838
2026-06-16T04:21:35Z
OctraBot
3198
สร้างหน้าด้วย "local export = {} local m_para = require("Module:parameters") local m_links = require("Module:links") local m_utils = require("Module:utilities") local lang = require("Module:languages").getByCode("sa") local m_script_utils = require("Module:script utilities") local sa_decl_data = require("Module:sa-decl/data") local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST") local sa_utils_translit = require("Module:sa-utilities/translit")..."
5724838
Scribunto
text/plain
local export = {}
local m_para = require("Module:parameters")
local m_links = require("Module:links")
local m_utils = require("Module:utilities")
local lang = require("Module:languages").getByCode("sa")
local m_script_utils = require("Module:script utilities")
local sa_decl_data = require("Module:sa-decl/data")
local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST")
local sa_utils_translit = require("Module:sa-utilities/translit")
local PAGENAME = mw.loadData("Module:headword/data").pagename
local sub = mw.ustring.sub
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local len = mw.ustring.len
local accent = '[/\\]'
local genders = {
m = 'Masculine', f = 'Feminine', n = 'Neuter', gneut = 'Gender-neutral'
}
local cases = {
{ 'nom', 'nominative' }, { 'acc', 'accusative' },
{ 'ins', 'instrumental' }, { 'dat', 'dative' },
{ 'abl', 'ablative' }, { 'gen', 'genitive' },
{ 'loc', 'locative' }, { 'voc', 'vocative' }
}
local super_nums = {'¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹', [0]='⁰'}
local function to_super(num)
local annotation = gsub(num, ".", super_nums)
return annotation
end
local function get_form_note_tags(form_notes, data)
local output = {}
if type(form_notes) ~= 'table' then form_notes = { form_notes } end
for _, form_note in ipairs(form_notes) do
if type(data.form_notes[form_note]) ~= "number" then
table.insert(data.form_notes_out, form_note)
data.form_notes[form_note] = #data.form_notes_out
end
table.insert(output, to_super(data.form_notes[form_note]))
end
return table.concat(output)
end
local function make_header(args, data, sc_cache)
local width = '40'
local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(args.lemma)) or sc_cache.reverse_tr(gsub(args.lemma, accent, ""))
local title = genders[args.g] .. ' ' .. ' ' .. data.decl_type .. ' declension of ' ..
m_links.full_link({ term = nil, alt = reverse_trd, tr = "-", lang = lang, sc = sc_cache.sc })
local header = { mw.getCurrentFrame():expandTemplate {
title = 'inflection-table-top',
args = {
title = title,
palette = 'blue',
tall = 'yes',
}
} }
table.insert(header, '!\n')
if args.n:find('s') then
table.insert(header, '! singular\n')
end
if args.n:find('d') then
table.insert(header, '! dual\n')
end
if args.n:find('p') then
table.insert(header, '! plural\n')
end
return table.concat(header)
end
local function make_cell(args, data, code, num, sc_cache)
local tag = code .. '_' .. num
local forms, links, trs = {}, {}, {}
if args[tag] then
forms = mw.text.split(sc_cache.tr(args[tag]), '%s*[,]%s*')
else
forms = data.forms[tag]
end
if not forms then
error("Internal error: No forms for slot '" .. tag .. "'")
end
for i, form in ipairs(forms) do
if form == "" then -- in case of form reduced to zero by 'novedic' parameter
-- do nothing
else
local form_note_tag = get_form_note_tags(forms['note' .. i] or {}, data)
-- a superscript number at the end of manually added forms should not be part of the (linked) form
if match(form, "[¹²³⁴⁵⁶⁷⁸⁹]$") then
extra_note_tag = gsub(form, "^.+(.)$", "%1")
form = gsub(form, ".$", "")
else
extra_note_tag = ""
end
if form == "-" then
table.insert(links, m_links.full_link({ term = nil, alt = '-', lang = lang, sc = sc_cache.sc }))
else
-- strip accent before reverse tr for non-Deva scripts
local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(form)) or sc_cache.reverse_tr(gsub(form, accent, ""))
table.insert(links,
m_links.full_link({
term = reverse_trd,
alt = reverse_trd .. form_note_tag .. extra_note_tag,
tr = SLP_to_IAST.tr(form) .. form_note_tag .. extra_note_tag,
lang = lang,
sc = sc_cache.sc
}))
end
end
end
return table.concat {
'| ',
table.concat(links, '<br>'),
'\n'
}
end
local function format_notes(args, data)
local output = {}
if #data.form_notes_out > 0 or #data.general_notes > 0 or #args.note > 0 then
for i, form_note in ipairs(data.form_notes_out) do
table.insert(output, '* ' .. to_super(i) .. form_note)
end
for _, general_note in ipairs(data.general_notes) do
table.insert(output, '* ' .. general_note)
end
for _, note in ipairs(args.note) do
table.insert(output, '* ' .. note)
end
return table.concat(output, '\n') .. '\n'
else
return ''
end
end
local function make_table_noun(args, data, sc_cache)
local output = { make_header(args, data, sc_cache) }
for _, case in ipairs(cases) do
local code, name = case[1], case[2]
table.insert(output, '|-\n')
table.insert(output, '! ' .. name .. '\n')
if args.n:find('s') then
table.insert(output, make_cell(args, data, code, 's', sc_cache))
end
if args.n:find('d') then
table.insert(output, make_cell(args, data, code, 'd', sc_cache))
end
if args.n:find('p') then
table.insert(output, make_cell(args, data, code, 'p', sc_cache))
end
end
table.insert(output, mw.getCurrentFrame():expandTemplate {
title = 'inflection-table-bottom',
args = {
notes = format_notes(args, data)
}
})
if not args.nocat and #data.categories > 0 then
table.insert(output, m_utils.format_categories(data.categories, lang))
end
return table.concat(output)
end
local function get_sc_details(args)
local sc, scCode
if args.sc then
sc = require("Module:scripts").getByCode(args.sc)
scCode = args.sc
else
sc = lang:findBestScript(args.lemma)
scCode = sc:getCode()
if scCode == 'None' then
sc = lang:findBestScript(PAGENAME)
scCode = sc:getCode()
if scCode == 'None' then
return get_sc_details({sc = "Deva"})
end
end
end
local tr, reverse_tr = sa_utils_translit.retrieve_tr_modules(scCode)
return { tr = tr, reverse_tr = reverse_tr, sc = sc, scCode = scCode }
end
function export.show(frame)
local params = {
lemma = { default = PAGENAME },
decl = true,
n = { default = 'sdp', set = {'s', 'd', 'p', 'sd', 'sp', 'dp', 'sdp'} },
sc = true,
[1] = { alias_of = 'lemma' },
nom_s = true,
nom_d = true,
nom_p = true,
acc_s = true,
acc_d = true,
acc_p = true,
ins_s = true,
ins_d = true,
ins_p = true,
dat_s = true,
dat_d = true,
dat_p = true,
abl_s = true,
abl_d = true,
abl_p = true,
gen_s = true,
gen_d = true,
gen_p = true,
loc_s = true,
loc_d = true,
loc_p = true,
voc_s = true,
voc_d = true,
voc_p = true,
note = { list = true },
root = { type = 'boolean' },
vrki = { type = 'boolean' }, -- for 'vṛkī' declension
pronominal = { type = 'boolean' }, -- use pronominal declension, e.g. for 'sarva'
novedic = { default = false, type = "boolean" }, -- disable extra Vedic forms
norigvedic = { default = false, type = "boolean" }, -- disable Rigvedic forms
r_stem_a = true,
at_nom_s = { type = 'boolean' },
ambig_final = true, -- for stems on -j, -ś or -h
diaspirate = { type = 'boolean' }, -- for diaspirate roots like 'duh'
participle = { type = 'boolean' },
contract = { type = 'boolean' },
han = { type = 'boolean' }, -- for root 'han'
voc_svar = { type = 'boolean' }, -- to indicate that the vocative should have initial svarita
adj = { type = 'boolean' }, -- internal argument for categorizing adjectives
participle_n_nom_d = true, -- internal argument to pass on feminine as neuter nom.du. for participles
participle_n_nom_d2 = true,
nocat = true,
}
local data = {
forms = {},
categories = {},
decl_type = nil,
form_notes = {},
form_notes_out = {},
general_notes = {},
}
local g = frame.args[1]
if g == 'gneut' then -- no number spec for gender-neutral numerals
params.n = nil
end
local args = m_para.process(frame:getParent().args, params)
args.g = g
if args.g == 'gneut' then
args.n = 'p' -- plural number-only
end
if args.pronominal then
args.root = false -- the pronominal endings override the usual declension pattern
end
local sc_cache = get_sc_details(args)
args.lemma = sc_cache.tr(args.lemma)
args.has_accent = match(args.lemma, accent)
if args.has_accent and (match(args.lemma, "^[td][rv]y") or (match(args.lemma, "^ny") and not match(args.lemma, "^nya/$"))) then
args.voc_svar = true
end
for decl, decl_data in pairs(sa_decl_data) do
if decl_data.detect(args) then
sa_decl_data[decl](args, data)
break
end
end
if data.decl_type == nil then
error("No declension class could be detected. Please check the lemma form or specify the declension.")
end
return make_table_noun(args, data, sc_cache)
end
return export
mp4xevpaiklvczznopyssey473j7tf8
5724843
5724838
2026-06-16T04:31:21Z
OctraBot
3198
5724843
Scribunto
text/plain
local export = {}
local m_para = require("Module:parameters")
local m_links = require("Module:links")
local m_utils = require("Module:utilities")
local lang = require("Module:languages").getByCode("sa")
local m_script_utils = require("Module:script utilities")
local sa_decl_data = require("Module:sa-decl/data")
local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST")
local sa_utils_translit = require("Module:sa-utilities/translit")
local PAGENAME = mw.loadData("Module:headword/data").pagename
local sub = mw.ustring.sub
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local len = mw.ustring.len
local accent = '[/\\]'
local genders = {
m = 'เพศชาย', f = 'เพศหญิง', n = 'เพศกลาง', gneut = 'ไม่ระบุเพศ'
}
local cases = {
{ 'nom', 'กรรตุการก' }, { 'acc', 'กรรมการก' },
{ 'ins', 'กรณการก' }, { 'dat', 'สัมปทานการก' },
{ 'abl', 'อปาทานการก' }, { 'gen', 'สัมพันธการก' },
{ 'loc', 'อธิกรณการก' }, { 'voc', 'สัมโพธนการก' }
}
local super_nums = {'¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹', [0]='⁰'}
local function to_super(num)
local annotation = gsub(num, ".", super_nums)
return annotation
end
local function get_form_note_tags(form_notes, data)
local output = {}
if type(form_notes) ~= 'table' then form_notes = { form_notes } end
for _, form_note in ipairs(form_notes) do
if type(data.form_notes[form_note]) ~= "number" then
table.insert(data.form_notes_out, form_note)
data.form_notes[form_note] = #data.form_notes_out
end
table.insert(output, to_super(data.form_notes[form_note]))
end
return table.concat(output)
end
local function make_header(args, data, sc_cache)
local width = '40'
local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(args.lemma)) or sc_cache.reverse_tr(gsub(args.lemma, accent, ""))
local title = genders[args.g] .. ' ' .. ' ' .. data.decl_type .. ' declension of ' ..
m_links.full_link({ term = nil, alt = reverse_trd, tr = "-", lang = lang, sc = sc_cache.sc })
local header = { mw.getCurrentFrame():expandTemplate {
title = 'inflection-table-top',
args = {
title = title,
palette = 'blue',
tall = 'yes',
}
} }
table.insert(header, '!\n')
if args.n:find('s') then
table.insert(header, '! singular\n')
end
if args.n:find('d') then
table.insert(header, '! dual\n')
end
if args.n:find('p') then
table.insert(header, '! plural\n')
end
return table.concat(header)
end
local function make_cell(args, data, code, num, sc_cache)
local tag = code .. '_' .. num
local forms, links, trs = {}, {}, {}
if args[tag] then
forms = mw.text.split(sc_cache.tr(args[tag]), '%s*[,]%s*')
else
forms = data.forms[tag]
end
if not forms then
error("Internal error: No forms for slot '" .. tag .. "'")
end
for i, form in ipairs(forms) do
if form == "" then -- in case of form reduced to zero by 'novedic' parameter
-- do nothing
else
local form_note_tag = get_form_note_tags(forms['note' .. i] or {}, data)
-- a superscript number at the end of manually added forms should not be part of the (linked) form
if match(form, "[¹²³⁴⁵⁶⁷⁸⁹]$") then
extra_note_tag = gsub(form, "^.+(.)$", "%1")
form = gsub(form, ".$", "")
else
extra_note_tag = ""
end
if form == "-" then
table.insert(links, m_links.full_link({ term = nil, alt = '-', lang = lang, sc = sc_cache.sc }))
else
-- strip accent before reverse tr for non-Deva scripts
local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(form)) or sc_cache.reverse_tr(gsub(form, accent, ""))
table.insert(links,
m_links.full_link({
term = reverse_trd,
alt = reverse_trd .. form_note_tag .. extra_note_tag,
tr = SLP_to_IAST.tr(form) .. form_note_tag .. extra_note_tag,
lang = lang,
sc = sc_cache.sc
}))
end
end
end
return table.concat {
'| ',
table.concat(links, '<br>'),
'\n'
}
end
local function format_notes(args, data)
local output = {}
if #data.form_notes_out > 0 or #data.general_notes > 0 or #args.note > 0 then
for i, form_note in ipairs(data.form_notes_out) do
table.insert(output, '* ' .. to_super(i) .. form_note)
end
for _, general_note in ipairs(data.general_notes) do
table.insert(output, '* ' .. general_note)
end
for _, note in ipairs(args.note) do
table.insert(output, '* ' .. note)
end
return table.concat(output, '\n') .. '\n'
else
return ''
end
end
local function make_table_noun(args, data, sc_cache)
local output = { make_header(args, data, sc_cache) }
for _, case in ipairs(cases) do
local code, name = case[1], case[2]
table.insert(output, '|-\n')
table.insert(output, '! ' .. name .. '\n')
if args.n:find('s') then
table.insert(output, make_cell(args, data, code, 's', sc_cache))
end
if args.n:find('d') then
table.insert(output, make_cell(args, data, code, 'd', sc_cache))
end
if args.n:find('p') then
table.insert(output, make_cell(args, data, code, 'p', sc_cache))
end
end
table.insert(output, mw.getCurrentFrame():expandTemplate {
title = 'inflection-table-bottom',
args = {
notes = format_notes(args, data)
}
})
if not args.nocat and #data.categories > 0 then
table.insert(output, m_utils.format_categories(data.categories, lang))
end
return table.concat(output)
end
local function get_sc_details(args)
local sc, scCode
if args.sc then
sc = require("Module:scripts").getByCode(args.sc)
scCode = args.sc
else
sc = lang:findBestScript(args.lemma)
scCode = sc:getCode()
if scCode == 'None' then
sc = lang:findBestScript(PAGENAME)
scCode = sc:getCode()
if scCode == 'None' then
return get_sc_details({sc = "Deva"})
end
end
end
local tr, reverse_tr = sa_utils_translit.retrieve_tr_modules(scCode)
return { tr = tr, reverse_tr = reverse_tr, sc = sc, scCode = scCode }
end
function export.show(frame)
local params = {
lemma = { default = PAGENAME },
decl = true,
n = { default = 'sdp', set = {'s', 'd', 'p', 'sd', 'sp', 'dp', 'sdp'} },
sc = true,
[1] = { alias_of = 'lemma' },
nom_s = true,
nom_d = true,
nom_p = true,
acc_s = true,
acc_d = true,
acc_p = true,
ins_s = true,
ins_d = true,
ins_p = true,
dat_s = true,
dat_d = true,
dat_p = true,
abl_s = true,
abl_d = true,
abl_p = true,
gen_s = true,
gen_d = true,
gen_p = true,
loc_s = true,
loc_d = true,
loc_p = true,
voc_s = true,
voc_d = true,
voc_p = true,
note = { list = true },
root = { type = 'boolean' },
vrki = { type = 'boolean' }, -- for 'vṛkī' declension
pronominal = { type = 'boolean' }, -- use pronominal declension, e.g. for 'sarva'
novedic = { default = false, type = "boolean" }, -- disable extra Vedic forms
norigvedic = { default = false, type = "boolean" }, -- disable Rigvedic forms
r_stem_a = true,
at_nom_s = { type = 'boolean' },
ambig_final = true, -- for stems on -j, -ś or -h
diaspirate = { type = 'boolean' }, -- for diaspirate roots like 'duh'
participle = { type = 'boolean' },
contract = { type = 'boolean' },
han = { type = 'boolean' }, -- for root 'han'
voc_svar = { type = 'boolean' }, -- to indicate that the vocative should have initial svarita
adj = { type = 'boolean' }, -- internal argument for categorizing adjectives
participle_n_nom_d = true, -- internal argument to pass on feminine as neuter nom.du. for participles
participle_n_nom_d2 = true,
nocat = true,
}
local data = {
forms = {},
categories = {},
decl_type = nil,
form_notes = {},
form_notes_out = {},
general_notes = {},
}
local g = frame.args[1]
if g == 'gneut' then -- no number spec for gender-neutral numerals
params.n = nil
end
local args = m_para.process(frame:getParent().args, params)
args.g = g
if args.g == 'gneut' then
args.n = 'p' -- plural number-only
end
if args.pronominal then
args.root = false -- the pronominal endings override the usual declension pattern
end
local sc_cache = get_sc_details(args)
args.lemma = sc_cache.tr(args.lemma)
args.has_accent = match(args.lemma, accent)
if args.has_accent and (match(args.lemma, "^[td][rv]y") or (match(args.lemma, "^ny") and not match(args.lemma, "^nya/$"))) then
args.voc_svar = true
end
for decl, decl_data in pairs(sa_decl_data) do
if decl_data.detect(args) then
sa_decl_data[decl](args, data)
break
end
end
if data.decl_type == nil then
error("No declension class could be detected. Please check the lemma form or specify the declension.")
end
return make_table_noun(args, data, sc_cache)
end
return export
0xgijn0ajfmfnnslnoq50ec0xzj3lti
5724852
5724843
2026-06-16T04:48:26Z
OctraBot
3198
5724852
Scribunto
text/plain
local export = {}
local m_para = require("Module:parameters")
local m_links = require("Module:links")
local m_utils = require("Module:utilities")
local lang = require("Module:languages").getByCode("sa")
local m_script_utils = require("Module:script utilities")
local sa_decl_data = require("Module:sa-decl/data")
local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST")
local sa_utils_translit = require("Module:sa-utilities/translit")
local PAGENAME = mw.loadData("Module:headword/data").pagename
local sub = mw.ustring.sub
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local len = mw.ustring.len
local accent = '[/\\]'
local genders = {
m = 'เพศชาย', f = 'เพศหญิง', n = 'เพศกลาง', gneut = 'ไม่ระบุเพศ'
}
local cases = {
{ 'nom', 'กรรตุการก' }, { 'acc', 'กรรมการก' },
{ 'ins', 'กรณการก' }, { 'dat', 'สัมปทานการก' },
{ 'abl', 'อปาทานการก' }, { 'gen', 'สัมพันธการก' },
{ 'loc', 'อธิกรณการก' }, { 'voc', 'สัมโพธนการก' }
}
local super_nums = {'¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹', [0]='⁰'}
local function to_super(num)
local annotation = gsub(num, ".", super_nums)
return annotation
end
local function get_form_note_tags(form_notes, data)
local output = {}
if type(form_notes) ~= 'table' then form_notes = { form_notes } end
for _, form_note in ipairs(form_notes) do
if type(data.form_notes[form_note]) ~= "number" then
table.insert(data.form_notes_out, form_note)
data.form_notes[form_note] = #data.form_notes_out
end
table.insert(output, to_super(data.form_notes[form_note]))
end
return table.concat(output)
end
local function make_header(args, data, sc_cache)
local width = '40'
local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(args.lemma)) or sc_cache.reverse_tr(gsub(args.lemma, accent, ""))
local title = 'การผันรูปของ ' .. --th
m_links.full_link({ term = nil, alt = reverse_trd, tr = "-", lang = lang, sc = sc_cache.sc }) ..
'(' .. genders[args.g] .. ' ' .. data.decl_type .. ')'
local header = { mw.getCurrentFrame():expandTemplate {
title = 'inflection-table-top',
args = {
title = title,
palette = 'blue',
tall = 'yes',
}
} }
table.insert(header, '!\n')
if args.n:find('s') then
table.insert(header, '! เอกพจน์\n')
end
if args.n:find('d') then
table.insert(header, '! ทวิพจน์\n')
end
if args.n:find('p') then
table.insert(header, '! พหูพจน์\n')
end
return table.concat(header)
end
local function make_cell(args, data, code, num, sc_cache)
local tag = code .. '_' .. num
local forms, links, trs = {}, {}, {}
if args[tag] then
forms = mw.text.split(sc_cache.tr(args[tag]), '%s*[,]%s*')
else
forms = data.forms[tag]
end
if not forms then
error("Internal error: No forms for slot '" .. tag .. "'")
end
for i, form in ipairs(forms) do
if form == "" then -- in case of form reduced to zero by 'novedic' parameter
-- do nothing
else
local form_note_tag = get_form_note_tags(forms['note' .. i] or {}, data)
-- a superscript number at the end of manually added forms should not be part of the (linked) form
if match(form, "[¹²³⁴⁵⁶⁷⁸⁹]$") then
extra_note_tag = gsub(form, "^.+(.)$", "%1")
form = gsub(form, ".$", "")
else
extra_note_tag = ""
end
if form == "-" then
table.insert(links, m_links.full_link({ term = nil, alt = '-', lang = lang, sc = sc_cache.sc }))
else
-- strip accent before reverse tr for non-Deva scripts
local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(form)) or sc_cache.reverse_tr(gsub(form, accent, ""))
table.insert(links,
m_links.full_link({
term = reverse_trd,
alt = reverse_trd .. form_note_tag .. extra_note_tag,
tr = SLP_to_IAST.tr(form) .. form_note_tag .. extra_note_tag,
lang = lang,
sc = sc_cache.sc
}))
end
end
end
return table.concat {
'| ',
table.concat(links, '<br>'),
'\n'
}
end
local function format_notes(args, data)
local output = {}
if #data.form_notes_out > 0 or #data.general_notes > 0 or #args.note > 0 then
for i, form_note in ipairs(data.form_notes_out) do
table.insert(output, '* ' .. to_super(i) .. form_note)
end
for _, general_note in ipairs(data.general_notes) do
table.insert(output, '* ' .. general_note)
end
for _, note in ipairs(args.note) do
table.insert(output, '* ' .. note)
end
return table.concat(output, '\n') .. '\n'
else
return ''
end
end
local function make_table_noun(args, data, sc_cache)
local output = { make_header(args, data, sc_cache) }
for _, case in ipairs(cases) do
local code, name = case[1], case[2]
table.insert(output, '|-\n')
table.insert(output, '! ' .. name .. '\n')
if args.n:find('s') then
table.insert(output, make_cell(args, data, code, 's', sc_cache))
end
if args.n:find('d') then
table.insert(output, make_cell(args, data, code, 'd', sc_cache))
end
if args.n:find('p') then
table.insert(output, make_cell(args, data, code, 'p', sc_cache))
end
end
table.insert(output, mw.getCurrentFrame():expandTemplate {
title = 'inflection-table-bottom',
args = {
notes = format_notes(args, data)
}
})
if not args.nocat and #data.categories > 0 then
table.insert(output, m_utils.format_categories(data.categories, lang))
end
return table.concat(output)
end
local function get_sc_details(args)
local sc, scCode
if args.sc then
sc = require("Module:scripts").getByCode(args.sc)
scCode = args.sc
else
sc = lang:findBestScript(args.lemma)
scCode = sc:getCode()
if scCode == 'None' then
sc = lang:findBestScript(PAGENAME)
scCode = sc:getCode()
if scCode == 'None' then
return get_sc_details({sc = "Deva"})
end
end
end
local tr, reverse_tr = sa_utils_translit.retrieve_tr_modules(scCode)
return { tr = tr, reverse_tr = reverse_tr, sc = sc, scCode = scCode }
end
function export.show(frame)
local params = {
lemma = { default = PAGENAME },
decl = true,
n = { default = 'sdp', set = {'s', 'd', 'p', 'sd', 'sp', 'dp', 'sdp'} },
sc = true,
[1] = { alias_of = 'lemma' },
nom_s = true,
nom_d = true,
nom_p = true,
acc_s = true,
acc_d = true,
acc_p = true,
ins_s = true,
ins_d = true,
ins_p = true,
dat_s = true,
dat_d = true,
dat_p = true,
abl_s = true,
abl_d = true,
abl_p = true,
gen_s = true,
gen_d = true,
gen_p = true,
loc_s = true,
loc_d = true,
loc_p = true,
voc_s = true,
voc_d = true,
voc_p = true,
note = { list = true },
root = { type = 'boolean' },
vrki = { type = 'boolean' }, -- for 'vṛkī' declension
pronominal = { type = 'boolean' }, -- use pronominal declension, e.g. for 'sarva'
novedic = { default = false, type = "boolean" }, -- disable extra Vedic forms
norigvedic = { default = false, type = "boolean" }, -- disable Rigvedic forms
r_stem_a = true,
at_nom_s = { type = 'boolean' },
ambig_final = true, -- for stems on -j, -ś or -h
diaspirate = { type = 'boolean' }, -- for diaspirate roots like 'duh'
participle = { type = 'boolean' },
contract = { type = 'boolean' },
han = { type = 'boolean' }, -- for root 'han'
voc_svar = { type = 'boolean' }, -- to indicate that the vocative should have initial svarita
adj = { type = 'boolean' }, -- internal argument for categorizing adjectives
participle_n_nom_d = true, -- internal argument to pass on feminine as neuter nom.du. for participles
participle_n_nom_d2 = true,
nocat = true,
}
local data = {
forms = {},
categories = {},
decl_type = nil,
form_notes = {},
form_notes_out = {},
general_notes = {},
}
local g = frame.args[1]
if g == 'gneut' then -- no number spec for gender-neutral numerals
params.n = nil
end
local args = m_para.process(frame:getParent().args, params)
args.g = g
if args.g == 'gneut' then
args.n = 'p' -- plural number-only
end
if args.pronominal then
args.root = false -- the pronominal endings override the usual declension pattern
end
local sc_cache = get_sc_details(args)
args.lemma = sc_cache.tr(args.lemma)
args.has_accent = match(args.lemma, accent)
if args.has_accent and (match(args.lemma, "^[td][rv]y") or (match(args.lemma, "^ny") and not match(args.lemma, "^nya/$"))) then
args.voc_svar = true
end
for decl, decl_data in pairs(sa_decl_data) do
if decl_data.detect(args) then
sa_decl_data[decl](args, data)
break
end
end
if data.decl_type == nil then
error("No declension class could be detected. Please check the lemma form or specify the declension.")
end
return make_table_noun(args, data, sc_cache)
end
return export
tn2inzggulkqnkvltvzkr9dqw99yrjs
5724853
5724852
2026-06-16T04:50:38Z
OctraBot
3198
5724853
Scribunto
text/plain
local export = {}
local m_para = require("Module:parameters")
local m_links = require("Module:links")
local m_utils = require("Module:utilities")
local lang = require("Module:languages").getByCode("sa")
local m_script_utils = require("Module:script utilities")
local sa_decl_data = require("Module:sa-decl/data")
local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST")
local sa_utils_translit = require("Module:sa-utilities/translit")
local PAGENAME = mw.loadData("Module:headword/data").pagename
local sub = mw.ustring.sub
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local len = mw.ustring.len
local accent = '[/\\]'
local genders = {
m = 'เพศชาย', f = 'เพศหญิง', n = 'เพศกลาง', gneut = 'ไม่ระบุเพศ'
}
local cases = {
{ 'nom', 'กรรตุการก' }, { 'acc', 'กรรมการก' },
{ 'ins', 'กรณการก' }, { 'dat', 'สัมปทานการก' },
{ 'abl', 'อปาทานการก' }, { 'gen', 'สัมพันธการก' },
{ 'loc', 'อธิกรณการก' }, { 'voc', 'สัมโพธนการก' }
}
local super_nums = {'¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹', [0]='⁰'}
local function to_super(num)
local annotation = gsub(num, ".", super_nums)
return annotation
end
local function get_form_note_tags(form_notes, data)
local output = {}
if type(form_notes) ~= 'table' then form_notes = { form_notes } end
for _, form_note in ipairs(form_notes) do
if type(data.form_notes[form_note]) ~= "number" then
table.insert(data.form_notes_out, form_note)
data.form_notes[form_note] = #data.form_notes_out
end
table.insert(output, to_super(data.form_notes[form_note]))
end
return table.concat(output)
end
local function make_header(args, data, sc_cache)
local width = '40'
local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(args.lemma)) or sc_cache.reverse_tr(gsub(args.lemma, accent, ""))
local title = 'การผันรูปของ ' .. --th
m_links.full_link({ term = nil, alt = reverse_trd, tr = "-", lang = lang, sc = sc_cache.sc }) ..
' (' .. genders[args.g] .. ' ' .. data.decl_type .. ')'
local header = { mw.getCurrentFrame():expandTemplate {
title = 'inflection-table-top',
args = {
title = title,
palette = 'blue',
tall = 'yes',
}
} }
table.insert(header, '!\n')
if args.n:find('s') then
table.insert(header, '! เอกพจน์\n')
end
if args.n:find('d') then
table.insert(header, '! ทวิพจน์\n')
end
if args.n:find('p') then
table.insert(header, '! พหูพจน์\n')
end
return table.concat(header)
end
local function make_cell(args, data, code, num, sc_cache)
local tag = code .. '_' .. num
local forms, links, trs = {}, {}, {}
if args[tag] then
forms = mw.text.split(sc_cache.tr(args[tag]), '%s*[,]%s*')
else
forms = data.forms[tag]
end
if not forms then
error("Internal error: No forms for slot '" .. tag .. "'")
end
for i, form in ipairs(forms) do
if form == "" then -- in case of form reduced to zero by 'novedic' parameter
-- do nothing
else
local form_note_tag = get_form_note_tags(forms['note' .. i] or {}, data)
-- a superscript number at the end of manually added forms should not be part of the (linked) form
if match(form, "[¹²³⁴⁵⁶⁷⁸⁹]$") then
extra_note_tag = gsub(form, "^.+(.)$", "%1")
form = gsub(form, ".$", "")
else
extra_note_tag = ""
end
if form == "-" then
table.insert(links, m_links.full_link({ term = nil, alt = '-', lang = lang, sc = sc_cache.sc }))
else
-- strip accent before reverse tr for non-Deva scripts
local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(form)) or sc_cache.reverse_tr(gsub(form, accent, ""))
table.insert(links,
m_links.full_link({
term = reverse_trd,
alt = reverse_trd .. form_note_tag .. extra_note_tag,
tr = SLP_to_IAST.tr(form) .. form_note_tag .. extra_note_tag,
lang = lang,
sc = sc_cache.sc
}))
end
end
end
return table.concat {
'| ',
table.concat(links, '<br>'),
'\n'
}
end
local function format_notes(args, data)
local output = {}
if #data.form_notes_out > 0 or #data.general_notes > 0 or #args.note > 0 then
for i, form_note in ipairs(data.form_notes_out) do
table.insert(output, '* ' .. to_super(i) .. form_note)
end
for _, general_note in ipairs(data.general_notes) do
table.insert(output, '* ' .. general_note)
end
for _, note in ipairs(args.note) do
table.insert(output, '* ' .. note)
end
return table.concat(output, '\n') .. '\n'
else
return ''
end
end
local function make_table_noun(args, data, sc_cache)
local output = { make_header(args, data, sc_cache) }
for _, case in ipairs(cases) do
local code, name = case[1], case[2]
table.insert(output, '|-\n')
table.insert(output, '! ' .. name .. '\n')
if args.n:find('s') then
table.insert(output, make_cell(args, data, code, 's', sc_cache))
end
if args.n:find('d') then
table.insert(output, make_cell(args, data, code, 'd', sc_cache))
end
if args.n:find('p') then
table.insert(output, make_cell(args, data, code, 'p', sc_cache))
end
end
table.insert(output, mw.getCurrentFrame():expandTemplate {
title = 'inflection-table-bottom',
args = {
notes = format_notes(args, data)
}
})
if not args.nocat and #data.categories > 0 then
table.insert(output, m_utils.format_categories(data.categories, lang))
end
return table.concat(output)
end
local function get_sc_details(args)
local sc, scCode
if args.sc then
sc = require("Module:scripts").getByCode(args.sc)
scCode = args.sc
else
sc = lang:findBestScript(args.lemma)
scCode = sc:getCode()
if scCode == 'None' then
sc = lang:findBestScript(PAGENAME)
scCode = sc:getCode()
if scCode == 'None' then
return get_sc_details({sc = "Deva"})
end
end
end
local tr, reverse_tr = sa_utils_translit.retrieve_tr_modules(scCode)
return { tr = tr, reverse_tr = reverse_tr, sc = sc, scCode = scCode }
end
function export.show(frame)
local params = {
lemma = { default = PAGENAME },
decl = true,
n = { default = 'sdp', set = {'s', 'd', 'p', 'sd', 'sp', 'dp', 'sdp'} },
sc = true,
[1] = { alias_of = 'lemma' },
nom_s = true,
nom_d = true,
nom_p = true,
acc_s = true,
acc_d = true,
acc_p = true,
ins_s = true,
ins_d = true,
ins_p = true,
dat_s = true,
dat_d = true,
dat_p = true,
abl_s = true,
abl_d = true,
abl_p = true,
gen_s = true,
gen_d = true,
gen_p = true,
loc_s = true,
loc_d = true,
loc_p = true,
voc_s = true,
voc_d = true,
voc_p = true,
note = { list = true },
root = { type = 'boolean' },
vrki = { type = 'boolean' }, -- for 'vṛkī' declension
pronominal = { type = 'boolean' }, -- use pronominal declension, e.g. for 'sarva'
novedic = { default = false, type = "boolean" }, -- disable extra Vedic forms
norigvedic = { default = false, type = "boolean" }, -- disable Rigvedic forms
r_stem_a = true,
at_nom_s = { type = 'boolean' },
ambig_final = true, -- for stems on -j, -ś or -h
diaspirate = { type = 'boolean' }, -- for diaspirate roots like 'duh'
participle = { type = 'boolean' },
contract = { type = 'boolean' },
han = { type = 'boolean' }, -- for root 'han'
voc_svar = { type = 'boolean' }, -- to indicate that the vocative should have initial svarita
adj = { type = 'boolean' }, -- internal argument for categorizing adjectives
participle_n_nom_d = true, -- internal argument to pass on feminine as neuter nom.du. for participles
participle_n_nom_d2 = true,
nocat = true,
}
local data = {
forms = {},
categories = {},
decl_type = nil,
form_notes = {},
form_notes_out = {},
general_notes = {},
}
local g = frame.args[1]
if g == 'gneut' then -- no number spec for gender-neutral numerals
params.n = nil
end
local args = m_para.process(frame:getParent().args, params)
args.g = g
if args.g == 'gneut' then
args.n = 'p' -- plural number-only
end
if args.pronominal then
args.root = false -- the pronominal endings override the usual declension pattern
end
local sc_cache = get_sc_details(args)
args.lemma = sc_cache.tr(args.lemma)
args.has_accent = match(args.lemma, accent)
if args.has_accent and (match(args.lemma, "^[td][rv]y") or (match(args.lemma, "^ny") and not match(args.lemma, "^nya/$"))) then
args.voc_svar = true
end
for decl, decl_data in pairs(sa_decl_data) do
if decl_data.detect(args) then
sa_decl_data[decl](args, data)
break
end
end
if data.decl_type == nil then
error("No declension class could be detected. Please check the lemma form or specify the declension.")
end
return make_table_noun(args, data, sc_cache)
end
return export
h7bem8ri1gqv5ni84mamk6q4fnscjq5
มอดูล:sa-decl/data
828
2331799
5724839
2026-06-16T04:22:06Z
OctraBot
3198
สร้างหน้าด้วย "local decl_data = {} local sa_utils = require("Module:sa-utilities") local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST") local IAST_to_SLP = require("Module:sa-utilities/translit/IAST-to-SLP1") local match = string.match -- sufficient for SLP1 local umatch = mw.ustring.match -- Make a detection function for ARGS that fetches the stem according to MATCH_RE (which is matched against -- args.lemma and should have the stem in the..."
5724839
Scribunto
text/plain
local decl_data = {}
local sa_utils = require("Module:sa-utilities")
local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST")
local IAST_to_SLP = require("Module:sa-utilities/translit/IAST-to-SLP1")
local match = string.match -- sufficient for SLP1
local umatch = mw.ustring.match
-- Make a detection function for ARGS that fetches the stem according to MATCH_RE (which is matched against
-- args.lemma and should have the stem in the first capture). ADDL_CONDITION is an optional function of one
-- argument (ARGS) that must return true for the detection to happen.
local function make_detect(match_re, addl_condition)
return function(args)
if addl_condition and not addl_condition(args) then
return false
end
local stem = match(args.lemma, match_re)
if stem then
args.stem = stem
return true
else
return false
end
end
end
-- Construct all or part of a given noun's declension. Each of SG, DU and PL is a table, whose keys are
-- as follows:
--
-- n = nominative
-- a = accusative
-- v = vocative
-- i = instrumental
-- d = dative
-- ab = ablative
-- g = genitive
-- l = locative
--
-- The corresponding value is one of the following:
-- 1. a "copy spec" such as "[ins]", meaning to copy from the instrumental of the same number;
-- 2. a single string (specifying an ending); or
-- 3. a list of specs, where a spec is either a string (an ending) or a table of the form
-- {"ENDING", stem = "STEM", mono = TRUE/FALSE, note = "NOTE"}. The latter format lets you explicitly specify what
-- the stem is, whether the form is monosyllabic, and what the footnote is. All named keys are optional.
--
-- In forms 2 and 3, if the ending begins with +, the stem defaults to args.lemma; otherwise it defaults to args.stem.
local function decline(args, data, sg, du, pl)
local cases = {n="nom", a="acc", v="voc", i="ins", d="dat", ab="abl", g="gen", l="loc"}
local function process_number(endings, tag)
if not endings then
return
end
for case, es in pairs(endings) do
if type(es) == "string" and es:find("^%[") then
-- copy from another case; skip and handle later
else
if type(es) == "string" then
es = {es}
end
local forms = {}
for i, e in ipairs(es) do
local stem, mono, accent_override, note
if type(e) == "table" then
stem = e.stem
mono = e.mono
accent_override = e.accent_override
note = e.note
e = e[1]
end
-- reduce Vedic forms to zero in case of novedic parameter
if args.novedic == true and note and (match(note, "[Vv]edic$") or umatch(note, "Br[aā]hma[nṇ]a")) then
stem = ""; e = ""; note = ""
elseif args.norigvedic == true and note and match(note, "Rigvedic$") then
stem = ""; e = ""; note = ""
else
if e:find("^%+") then
if stem then
error("Internal error: Can't use + in an ending when stem is explicitly given")
end
e = e:gsub("^%+", "")
stem = args.lemma
elseif not stem then
stem = args.stem
end
forms[i] = sa_utils.internal_sandhi({
stem = stem, ending = e, has_accent = args.has_accent, recessive = case == "v", no_syncope = no_syncope,
mono = mono, root = root, ambig_final = args.ambig_final, diaspirate = args.diaspirate,
accent_override = accent_override, han = args.han, stem_final_n = stem_final_n, voc_svar = args.voc_svar,
})
if note and note~= "" then
forms["note" .. i] = note
end
end
end
data.forms[cases[case] .. "_" .. tag] = forms
end
end
-- Now handle cases copied from another.
for case, es in pairs(endings) do
if type(es) == "string" and es:find("^%[") then
-- copy from another case; skip and handle later
local other_case = es:match("^%[(.*)%]$")
if not other_case then
error("Internal error: Unrecognized copy case spec " .. es)
end
local other_slot = other_case .. "_" .. tag
local value = data.forms[other_slot]
if not value then
error("Internal error: Slot '" .. other_slot .. "' to copy from is empty")
end
local this_slot = cases[case] .. "_" .. tag
if data.forms[this_slot] then
error("Internal error: A value already exists for slot '" .. this_slot ..
"' when copying from '" .. other_slot .. "'")
end
data.forms[cases[case] .. "_" .. tag] = value
end
end
end
process_number(sg, "s")
process_number(du, "d")
process_number(pl, "p")
end
decl_data["numeral"] = {
detect = make_detect("(.+)a/?[nz]?$",
function(args) return args.g == "gneut" end)
}
setmetatable(decl_data["numeral"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(/?)[nz]?$")
local acc = match(args.lemma, "(/?)[^/]*$")
data.decl_type = "numeral"
if match(args.lemma, "a/?z$") then -- ṣaṣ
decline(args, data, {}, {}, {
n="+",
a="[nom]",
v="[nom]",
i="aqBi" .. oxy .. "s",
d="aqBya" .. oxy .. "s",
ab="[dat]",
g="aRRA" .. oxy .. "m",
l="awsu" .. oxy,
})
else -- pañca(n), etc.
decline(args, data, {}, {}, {
n="a" .. oxy,
a="[nom]",
v="a",
i={{"a" .. acc .. "Bis", accent_override = true}},
d={{"a" .. acc .. "Byas", accent_override = true}},
ab="[dat]",
g={{"AnA" .. acc .. "m", accent_override = true}},
l={{"a" .. acc .. "su", accent_override = true}},
})
end
-- no categorisation?
end
})
decl_data["a"] = {
detect = make_detect("(.+)a" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["a"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
if args.pronominal then
data.decl_type = "pronominal a-stem"
else
data.decl_type = "a-stem"
end
if args.g == "m" then
decline(args, data, {
n="a" .. oxy .. "s",
a="a" .. oxy .. "m",
v="a"
}, {
n={ "O" .. oxy, { "A" .. oxy, note = "Vedic" } },
v={ "O", { "A", note = "Vedic" } }
}, {
a="A" .. oxy .. "n",
})
if args.pronominal then
decline(args, data, {}, {}, {
n="e" .. oxy,
v="e"
})
else
decline(args, data, {}, {}, {
n={"A" .. oxy .. "s", {"A" .. oxy .. "sas", note="Vedic"}},
v={"As", {"Asas", note="Vedic"}}
})
end
else
decline(args, data, {
n="a" .. oxy .. "m",
a="[nom]",
v="a"
}, {
n="e" .. oxy,
v="e"
}, {
n={"A" .. oxy .. "ni", {"A" .. oxy, note="Vedic"}},
a="[nom]",
v={"Ani", {"A", note="Vedic"}}
})
end
if args.pronominal then
decline(args, data, {
d="a" .. oxy .. "smE",
ab="a" .. oxy .. "smAt",
l="a" .. oxy .. "smin"
}, {}, {
g="e" .. oxy .. "zAm"
})
else
decline(args, data, {
d="A" .. oxy .. "ya",
ab="A" .. oxy .. "t",
l="e" .. oxy
}, {}, {
g="A" .. oxy .. "nAm"
})
end
decline(args, data, {
-- For nouns on -tva(na), RV has only three instr.sg. with -ena (1.110.4, 8.18.13, 10.37.9); see Lanman p.335f. for forms on -ā.
-- This avoidance is phonetically perfectly understandable for -tvanā instead of -tvanena, and with abstract nouns like this
-- (predominantly used in the singular), there wouldn't be much cause for confusion with the nom./acc. plural.
-- (detection of oxytone accent to avoid gerundives on -tva)
i= match(args.lemma, "tva?n?a/$") and {"e" .. oxy .. "na", {"A" .. oxy, note = "Vedic"}} or "e" .. oxy .. "na",
g="a" .. oxy .. "sya"
}, {
a="[nom]",
i="A" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
-- see Wackernagel III, p.98-99, §48a
g= match(args.stem, ".y$") and {"a" .. oxy .. "yos", {"o" .. oxy .. "s", note = "Vedic"}} or "a" .. oxy .. "yos",
l="[gen]"
}, {
i={ "E" .. oxy .. "s", { "e" .. oxy .. "Bis", note = "Vedic" } },
d="e" .. oxy .. "Byas",
ab="[dat]",
l="e" .. oxy .. "zu"
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit a-stem adjectives")
else
table.insert(data.categories, "Sanskrit a-stem nouns")
end
end
})
decl_data["iu"] = {
detect = make_detect("(.+)[iu]" .. sa_utils.accent .. "?$")
}
setmetatable(decl_data["iu"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([iu])(" .. sa_utils.accent .. "?)$")
data.decl_type = vowel .. "-stem"
if match(args.lemma, "[sz]a/?Ki/$") and not (args.decl and match(args.decl, "i")) then
-- in classical possibly regular in compounds (see Wackernagel vol.III p.141), for which use 'decl=i'
decline(args, data, {
n="A" .. oxy,
a="A" .. oxy .. "yam",
i={{stem = args.stem .. vowel, "A" .. oxy }},
d={{stem = args.stem .. vowel, "e" .. oxy }},
ab={{stem = args.stem .. vowel, "u" .. oxy .. "r" }},
l={{stem = args.stem .. vowel, "O" .. oxy }}, -- Wackernagel suggests older *sákhayi (ibid.)
v="e",
}, {
n={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "Vedic"}},
v={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "Vedic"}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s" }},
}, {
n="A" .. oxy .. "yas",
v="Ayas",
a="I" .. oxy .. "n",
})
elseif args.g == "m" then
if vowel == "i" then
decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "y", "e" }},
l={ "O" .. oxy, { "A" .. oxy, note = "Vedic"}}, -- Whitney §336f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u
decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "v", "e" }},
l="O" .. oxy,
}, {}, {})
else decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "v", "e" }, {stem = args.stem .. "v", "e" .. oxy, note = "Vedic"}},
l="O" .. oxy,
}, {}, {})
end
if match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
decline(args, data, {
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}},
}, {}, {})
else
decline(args, data, {
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}},
}, {}, {})
end
decline(args, data, {
n="+s",
a="+m",
i={ "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "Vedic" } },
v={{stem= args.stem .. sa_utils.up_one_grade[vowel], ""}},
}, {
n={{stem = args.stem .. sa_utils.lengthen[vowel..oxy], ""}},
v={{stem = args.stem .. sa_utils.lengthen[vowel], ""}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}},
a={{stem = args.stem ..sa_utils.lengthen[vowel..oxy], "n"}},
v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}},
})
elseif args.g == "f" then
if vowel == "i" then
decline(args, data, {
i={{stem = args.stem .. vowel, "A" .. oxy}, {"I" .. oxy, note = "Vedic"}}, -- Whitney §336c
l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" }, { "A" .. oxy, note = "Vedic"} },
}, {}, {})
else
decline(args, data, {
i={{stem = args.stem .. vowel, "A" .. oxy }},
l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" } },
}, {}, {})
end
decline(args, data, {
n="+s",
a="+m",
-- the Rigvedic dat.sg. on -ī (mostly ūtī́) seems too rare to extrapolate to every stem (see also Macdonell p.282)
d={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "e"}, {stem = args.stem .. vowel, "E" .. oxy } },
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "A" .. oxy .. "s" },
{stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"} },
v=sa_utils.up_one_grade[vowel],
}, {
n=sa_utils.lengthen[vowel..oxy],
v=sa_utils.lengthen[vowel],
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}},
a=sa_utils.lengthen[vowel..oxy] .. "s",
v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}},
})
else -- neuter
if args.adj == true then -- for difference with nouns see Whitney §344
if vowel == "i" then
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "y", "e"}},
ab={ "+nas", {stem = args.stem .. "e" .. oxy, "s"}},
l={ "+ni", "O" .. oxy, {"A" .. oxy, note = "Vedic"}}, -- Whitney §336f + §340f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u; similar for abl./gen. -vas (vs. -os)
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s"}},
l={ "+ni", "O" .. oxy},
}, {}, {})
else decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e"}, {stem = args.stem .. "v", "e" .. oxy, note = "Vedic"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}},
l={ "+ni", "O" .. oxy},
}, {}, {})
end
decline(args, data, {}, {
g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s" }},
}, {})
else -- nouns
if vowel == "i" then
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "y", "e", note = "Vedic" }},
ab={ "+nas", {stem = args.stem .. "e" .. oxy, "s", note = "Vedic"}},
l={ "+ni", {"O" .. oxy, note = "Vedic"}, {"A" .. oxy, note = "Vedic"}}, -- Whitney §336f + §340f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u; similar for abl./gen. -vas (vs. -os)
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "Vedic" }},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "Vedic"}},
l={ "+ni", {"O" .. oxy, note = "Vedic"}},
}, {}, {})
else
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "Vedic" },
{stem = args.stem .. "v", "e" .. oxy, note = "Vedic"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "Vedic"},
{stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}},
l={ "+ni", {"O" .. oxy, note = "Vedic"}},
}, {}, {})
end
decline(args, data, {}, {
g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s", note = "Vedic" }},
}, {})
end
decline(args, data, {
n="+",
a="[nom]",
i={ "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "Vedic" }},
v={ "+", {stem= args.stem .. sa_utils.up_one_grade[vowel], ""}},
}, {
n={ "+nI", {stem = args.stem .. vowel, "I" .. oxy, note = "Vedic" }},
v={ "+nI", {stem = args.stem .. vowel, "I", note = "Vedic" }},
}, {
n={{ stem = args.stem .. sa_utils.lengthen[vowel .. oxy], "ni" }, { "+", note = "Vedic"},
{ stem = args.stem .. sa_utils.lengthen[vowel..oxy], "", note = "Vedic"}},
a="[nom]",
v={{ stem = args.stem .. sa_utils.lengthen[vowel], "ni" }, { "+", note = "Vedic"},
{ stem = args.stem .. sa_utils.lengthen[vowel], "", note = "Vedic"}},
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
g={{ stem = args.stem .. sa_utils.lengthen[vowel], "nA" .. (oxy ~= "" and "/" or "") .. "m"}},
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. vowel .. "-stem adjectives")
else
table.insert(data.categories, "Sanskrit " .. vowel .. "-stem nouns")
end
end
})
decl_data["A"] = {
detect = function(args)
if make_detect("(.+)A" .. sa_utils.accent .. "?$")(args) then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["A"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
if args.g == "n" then
-- It seems better not to base a neuter declension on the masculine nominatives on -ās accompanying neuter nouns.
-- See Whitney §367b and Wackernagel vol.III p.129
error("The neuter of radical stems in -ā ends in -a.")
end
if args.pronominal then
data.decl_type = "pronominal ā-stem"
else
data.decl_type = "ā-stem"
end
if not (args.root or args.true_mono) or (args.true_mono and args.root == false) then -- derived stem
if args.g == "m" then
error("Add 'root=1' in case this is a root noun or adjective.")
else
table.insert(data.categories, "Sanskrit ā-stem nouns")
end
if args.pronominal then
decline(args, data, {
d="a" .. oxy .. "syE",
ab={"a" .. oxy .. "syAs", {"a" .. oxy .. "syE", note = "Brāhmaṇas"}},
l="a" .. oxy .. "syAm"
}, {}, {
g="+sAm"
})
else
decline(args, data, {
d="+yE",
ab={"+yAs", {"+yE", note = "Brāhmaṇas"}},
l="+yAm"
}, {}, {
g="+nAm"
})
end
decline(args, data, {
n="+",
i={ "a" .. oxy .. "yA", { "+", note = "Vedic" } },
v="e",
}, {
n="e" .. oxy,
g="a" .. oxy .. "yos",
v="e",
}, {
a="+s",
})
else
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit root-stem adjectives on -ā")
else
table.insert(data.categories, "Sanskrit root-stem nouns on -ā")
end
if args.g == "m" then
data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by a-stem declension."}
else
data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by regular ā-stem declension."}
end
decline(args, data, {
n="+s",
i="+",
d="e" .. oxy,
ab="a" .. oxy .. "s",
l="i" .. oxy,
v="+s",
}, {
n={ "O" .. oxy, { "A" .. oxy, note = "Vedic" } },
g="o" .. oxy .. "s",
v={ "O", { "A", note = "Vedic" } }
}, {
a={ "+s", { "a" .. oxy .. "s", note = "Perhaps" } },
g={ "+nAm", { "+Am", note = "Perhaps" } },
})
end
decline(args, data, {
a="+m",
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
n="+s",
i="+Bis",
d="+Byas",
ab="[dat]",
l="+su",
v="+s",
})
end
})
decl_data["IU"] = {
detect = function(args)
if make_detect("(.+)[IU]" .. sa_utils.accent .. "?$")(args) then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["IU"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([IU])(" .. sa_utils.accent .. "?)$")
data.decl_type = SLP_to_IAST.tr(vowel) .. "-stem"
if args.g == "n" then
-- it seems better to mention the one or two Vedic forms that could be interpreted
-- as coming from a neuter ī-stem (see Whitney §367b) separately
error("The neuter of radical stems in -ī/ū ends in -i/u.")
end
if not (args.root or args.true_mono) or (args.true_mono and args.root == false) or args.han then -- derived stem
if args.vrki then -- with original vṛkī-declension (Whitney §355 ff.), given as older forms of later classical declension
if vowel == "U" then
error()
elseif args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ī-stem adjectives with original vṛkī́-declension")
else
table.insert(data.categories, "Sanskrit ī-stem nouns with original vṛkī́-declension")
end
data.general_notes = {"This stem originally had ''vṛkī́''-declension."}
decline(args, data, {
n={"+", {"+s", note = "Vedic"}},
a={"+m", {"+am", note = "Vedic"}},
i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic"}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic"}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic"},
{stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+", note = "Vedic"}}, -- Wackernagel III, §86c, p.170
}, {
n={"+O", {"+A", note = "Vedic"}},
v={"+O", {"+A", note = "Vedic"}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic"}},
}, {
n="+as",
v="+as",
a={"+s", {"+as", note = "Vedic"}},
g="+nAm",
})
elseif vowel == "I" then -- devī-declension
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ī-stem adjectives")
else
table.insert(data.categories, "Sanskrit ī-stem nouns")
end
decline(args,data, {
n="+",
a="+m",
i={{stem = args.stem .. vowel, "A" .. oxy}},
d={{stem = args.stem .. vowel, "E" .. oxy}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}},
}, {
n={ "+O", { "+", note = "Vedic" } },
v={ "+O", { "+", note = "Vedic" } },
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={ "+as", { "+s", note = "Vedic" } },
v={ "+as", { "+s", note = "Vedic" } },
a="+s",
g= oxy == "" and "+nAm" or {"+nAm", { stem = args.stem .. vowel, "nA" .. oxy .. "m", note = "Rigvedic"} }, -- Whitney §319a
})
else -- ū-stems, with Whitney's declension at §356a given as older forms of §364, see Wackernagel vol.III p.189
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ū-stem adjectives") -- probably only bahuvrihis like 'sarvatanū'
else
table.insert(data.categories, "Sanskrit ū-stem nouns")
end
if match(args.stem, "y$") or match(args.stem, "agr$")
or match(args.stem, "kadr$") or match(args.stem, "bIBats") then -- with Vedic -úv-, see Macdonell p.290 §384a
decline(args,data, {
a={"+m", {"+am", note = "Vedic", mono = true}},
i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic", mono = true}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic", mono = true}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic", mono = true},
{stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "Vedic", mono = true},
{"+", note = "Vedic"}},
}, {
n={"+O", {"+A", note = "Vedic", mono = true}},
v={"+O", {"+A", note = "Vedic", mono = true}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic", mono = true}},
}, {
n={"+as", {"+as", note = "Vedic", mono = true}},
v={"+as", {"+as", note = "Vedic", mono = true}},
a={"+s", {"+as", note = "Vedic", mono = true}},
})
else
decline(args,data, {
a={"+m", {"+am", note = "Vedic"}},
i= oxy == "" and "+A" or {{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic"}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic"}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic"},
{stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "Vedic"},
{"+", note = "Vedic"}}, -- Wackernagel III, §97b, p.188
}, {
n={"+O", {"+A", note = "Vedic"}}, -- duals on -ū for ū-stems do not occur
v={"+O", {"+A", note = "Vedic"}},
g= oxy == "" and "+os" or {{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic"}},
}, {
n="+as", -- RV 4.41.8 has 'yuvayū́s', but it seems better to simply give this at the relevant lemma
v="+as",
a={"+s", {"+as", note = "Vedic"}},
})
end
decline(args,data, {
n="+s",
}, {}, {
g="+nAm",
})
end
decline(args, data, {
g="[abl]",
v=sa_utils.shorten[vowel],
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
l="+su",
})
else
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit root-stem adjectives on -" .. SLP_to_IAST.tr(vowel))
else
table.insert(data.categories, "Sanskrit root-stem nouns on -" .. SLP_to_IAST.tr(vowel))
end
if args.true_mono then -- rout nouns, Whitney §351
no_syncope = true
if args.g == "f" then -- see Wackernagel vol.III p.181
decline(args, data, {
d={{ "+e" .. oxy, mono = true }, { "+E" .. oxy, mono = true, note = "Later Sanskrit" } },
ab={{ "+a" .. oxy .. "s", mono = true }, { "+A" .. oxy .. "s", mono = true, note = "Later Sanskrit" } },
l={{ "+i" .. oxy, mono = true }, { "+A" .. oxy .. "m", mono = true, note = "Later Sanskrit" } },
})
else
decline(args, data, {
d={{ "+e" .. oxy, mono = true } },
ab={{ "+a" .. oxy .. "s", mono = true } },
l={{ "+i" .. oxy, mono = true } },
})
end
decline(args, data, {
i={{ "+A" .. oxy, mono = true}},
}, {
i={{"+ByA" .. oxy .. "m", mono = true}},
g={{"+o" .. oxy .. "s", mono = true}},
}, {
i={{"+Bi" .. oxy .. "s", mono = true}},
d={{"+Bya" .. oxy .. "s", mono = true}},
g={{"+A" .. oxy .. "m", mono = true }, { "+nA" .. oxy .. "m", mono = true } },
l={{"+su" .. oxy, mono = true}},
})
else -- root terms in compounds, Whitney §352; I'd suggest to give two tables when both contracted and non-contracted forms occur
-- see Wackernagel III §91a (p.179) for ī, and §100a + §100eα (p.192-3) for ū; Macdonell: p.268 + 288
-- Taking as default that ū-stems with accent (rule of thumb for Vedic terms) are not contracted. To be overrided with 'contract=1'
if args.contract == false or (args.contract ~= true and (match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$")
or vowel == "U" and (match(args.lemma, sa_utils.accent) or match(args.stem, "B$") or match(args.stem, "jo/?g$"))
or vowel == "I" and (match(args.stem, "avadyaB$") or (match(args.stem, "D$") and match(args.stem, sa_utils.accent))))) then
no_syncope = true -- -Ciy-/-Cuv- when followed by vowel
decline(args, data, {
l= args.g == "f" and {"+i", {"+Am", note = "Later Sanskrit"}} or "+i",
})
else
decline(args, data, {
l= args.g == "f" and {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }, {"+Am", note = "Later Sanskrit"}}
or {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }},
})
end
if args.g == "f" then -- see Wackernagel vol.III p.181
decline(args, data, {
d={ "+e", { "+E", note = "Later Sanskrit" } },
ab={ "+as", { "+As", note = "Later Sanskrit" } },
})
else
decline(args, data, {
d= "+e",
ab= "+as",
})
end
decline(args, data, {
i= "+A",
}, {
i="+ByAm",
g= "+os",
}, {
i="+Bis",
d="+Byas",
g= {"+Am", "+nAm"},
l="+su",
})
end
decline(args, data, {
n= "+s",
v= "+s",
a= "+am",
g="[abl]",
}, {
n= { "+O", { "+A", note = "Vedic"}},
v= { "+O", { "+A", note = "Vedic"}},
a="[nom]",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
n= "+as",
v= "+as",
a="[nom]",
ab="[dat]",
})
end
end
})
decl_data["f"] = { -- for nouns in ṛ
detect = make_detect("(.+)f" .. sa_utils.accent .. "?$")
}
setmetatable(decl_data["f"], { -- for nouns in ṛ
__call = function(self, args, data)
if args.g == "f" and args.r_stem_a == "ā" and match(args.stem, "t$") and not match(args.stem, "^s?t$") then
error("The feminine of adjectives in -tṛ ends in -trī.")
end
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
data.decl_type = SLP_to_IAST.tr("f") .. "-stem"
if args.g == "n" then
decline(args, data, {
-- for neuter -úr, see Wackernagel, III, p.204, §107b (denies 'sthātar' and 'sthātṝ́n' are neuter sg.)
-- all cases of -tári given as nom./acc.n.sg. by Macdonell (p.243) are translated as locatives by Jamison & Brereton
n={"f" .. oxy, {"u" .. oxy .. "r", note = "Rigvedic"}},
a="[nom]",
i={"+nA", "rA" .. oxy},
d={"+ne", "re" .. oxy},
ab={"+nas", "u" .. oxy .. "r"},
l={"+ni", "a" .. oxy .. "ri"},
v={ "f", "ar" },
}, {
n="+nI",
g={"+nos", "ro" .. oxy .. "s"},
v="+nI",
}, {
n="F" .. oxy .. "ni",
a="[nom]",
v="Fni",
})
else
if not args.r_stem_a then
error('Please specify the length of the accusative singular vowel with r_stem_a = "a" or "ā".')
else
args.r_stem_a = IAST_to_SLP.tr(args.r_stem_a)
end
decline(args, data, {
n="A" .. oxy,
a=args.r_stem_a .. oxy .. "ram",
i="rA" .. oxy,
d="re" .. oxy,
ab="u" .. oxy .. "r",
l="a" .. oxy .. "ri",
v="ar",
}, {
n={ args.r_stem_a .. oxy .. "rO", { args.r_stem_a .. oxy .. "rA", note = "Vedic" } },
g="ro" .. oxy .. "s",
v={ args.r_stem_a .. "rO", { args.r_stem_a .. "rA", note = "Vedic" } },
}, {
n=args.r_stem_a .. oxy .. "ras",
a=args.g == "f" and "F" .. oxy .. "s" or "F" .. oxy .. "n",
v=args.r_stem_a .. "ras",
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
g={{stem = args.stem .. "F", "nA" .. (oxy ~= "" and "/" or "") .. "m"}},
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-stem adjectives")
else
table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-stem nouns")
end
end
})
decl_data["root"] = { -- for root nouns ending on -k/g/gh/c/j/ṭ/ḍ/th/d/dh/p/bh/m/r/ṣ/ś/h + -āt/it/ut/ṛt/akt + -ās/os
detect = function(args)
-- capture of vowel needed for accent
if (make_detect("(.*)" .. sa_utils.vowel .. sa_utils.accent .. "?r?[kgGcjwqTdDpBmrzSh]$")(args)
or (make_detect("(.*)[Aiuf]" .. sa_utils.accent .. "?t$")(args) and not args.participle == true)
or make_detect("(.*)a" .. sa_utils.accent .. "?kt$")(args) -- nákt-
or make_detect("(.*)[Ao]" .. sa_utils.accent .. "?s$")(args)
or (args.root == true and make_detect("(.*)[ai]" .. sa_utils.accent .. "?[ts]$")(args) )) -- + āśis + numerals like triṃśát
and args.g ~= "gneut" then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["root"], {
__call = function(self, args, data)
local vowel, oxy, extra, cons = match(args.lemma, "(" .. sa_utils.vowel .. ")(" .. sa_utils.accent .. "?)(r?)([kgGcjwqtTdDpBmrzShs]t?)$")
if match(cons, "[jSh]") ~= nil and not args.ambig_final then
error('Please specify the final consonant in the nominative singular with ambig_final = "k" or "ṭ".')
elseif args.ambig_final then -- also for cases like sarágh > saráṭ or potentially anuṣṭúbh > anuṣṭúk
args.ambig_final = IAST_to_SLP.tr(args.ambig_final)
end
local nasal = cons:gsub(".", sa_utils.homorganic_nasal)
data.decl_type = "root-stem"
root = true
-- neuter nom. plural (Whitney §389c, although saying that these forms with infixed nasal are not attested for nouns)
if args.g == "n" then
if match(cons, "[mr]") == nil and extra == "" then
decline(args, data, nil, nil, {
n= {{stem = args.stem .. vowel .. oxy .. nasal .. cons, "i"}},
v= {{stem = args.stem .. vowel .. nasal .. cons, "i"}},
})
else
decline(args, data, nil, nil, {
n= "+i",
v= "+i",
})
end
end
if args.true_mono then -- monosyllabic stem
if args.g ~= "n" then
decline(args, data, {
-- nom.sg. -s is an 'invisible' (historical) ending to provoke vowel lengthening in -ir/-ur stems, see Whitney §392
-- this ending should be removed by internal_sandhi at an early stage
n="+s",
a="+am",
v="+s",
}, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
}, {
n="+as",
v="+as",
})
else
decline(args, data, {
n= "+",
a="[nom]",
v= "+"
}, {
n= {{"+I" .. oxy, mono = true }},
v= "+I"
}, { })
end
decline(args, data, {
i= {{ "+A" .. oxy, mono = true }},
d= {{ "+e" .. oxy, mono = true }},
ab= {{ "+a" .. oxy .. "s", mono = true }},
g="[abl]",
l= {{ "+i" .. oxy, mono = true }},
}, {
a= "[nom]",
i= {{ "+ByA" .. oxy .. "m", mono = true }},
d="[ins]",
ab="[ins]",
g= {{ "+o" .. oxy .. "s", mono = true }},
l="[gen]",
}, {
a= "[nom]",
i= {{ "+Bi" .. oxy .. "s", mono = true }},
d= {{ "+Bya" .. oxy .. "s", mono = true }},
ab="[dat]",
g= {{ "+A" .. oxy .. "m", mono = true }},
l= {{ "+su" .. oxy, mono = true }},
})
else -- polysyllabic stem, no accent on ending
if args.g ~= "n" then
decline(args, data, {
n="+s",
a="+am",
v="+s",
}, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
}, {
n="+as",
v="+as"
})
else
decline(args, data, {
n= "+",
a="[nom]",
v= "+"
}, {
n= "+I",
v= "+I",
}, { })
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a= "[nom]",
i= "+ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
a= "[nom]",
i= "+Bis",
d= "+Byas",
ab="[dat]",
g= "+Am",
l= "+su",
})
end
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit consonantal root-stem adjectives")
else
table.insert(data.categories, "Sanskrit consonantal root-stem nouns")
end
end
})
decl_data["[aiu]s"] = {
detect = make_detect("(.+)[aiu]" .. sa_utils.accent .. "?s$")
}
setmetatable(decl_data["[aiu]s"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([aiu])(" .. sa_utils.accent .. "?)s$")
data.decl_type = vowel .. "s-stem"
if (match(args.stem, "[^aAiK/\\]"..sa_utils.accent.."?y$") or match (args.stem, "jyA/?y$"))
and vowel == "a" then -- comparative
comp = "1"
else comp = "0" end
if comp == "1" and args.g ~= "n" then
if args.g == "m" then
decline(args, data, {
n="An",
a="AMsam",
v={"an", { "+", note = "Rigvedic"}},
}, {
n={"AMsO", {"AMsA", note = "Vedic"}},
v={"AMsO", {"AMsA", note = "Vedic"}},
}, {
n="AMsas",
a="+as",
v="AMsas",
})
else
error("The feminine of comparatives in -yas ends in -yasī.")
end
elseif args.g == "m" or args.g == "f" then
if vowel == "a" then
decline(args, data, {
n="A" .. oxy .. "s",
a={ "+am", { "A" .. oxy .. "m", note = "Vedic" } },
v="+",
}, nil, {
n={ "+as", { "A" .. oxy .. "s", note = "Vedic" } },
v={ "+as", { "A" .. oxy .. "s", note = "Vedic" } },
})
else
decline(args, data, {
n="+",
a="+am",
v={ "+",{ sa_utils.up_one_grade[vowel], note = "Vedic" } }, -- Wackernagel vol.III, p.292, §152c
}, nil, {
n="+as",
v="+as",
})
end
decline(args, data, nil, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
}, {
a="[nom]",
})
else
if args.adj == true and vowel == "a" and comp == "0"
and (match(args.stem, sa_utils.vowel .. ".*" .. sa_utils.vowel) or match(args.stem, "^sv")) then
-- compounds on -as, see Macdonell, p.226 + Whitney §418 a
decline(args, data, {
n={ "+", { "A" .. oxy .. "s", note = "Vedic"} },
}, {}, {})
else
decline(args, data, {
n="+",
}, {}, {})
end
decline(args, data, {
a="[nom]",
v="+",
}, {
n="+I",
v="+I",
}, {
n={{stem = args.stem .. sa_utils.lengthen[vowel] .. oxy .. "Ms", "i"}},
v={{stem = args.stem .. sa_utils.lengthen[vowel] .. "Ms", "i"}},
a="[nom]",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i= "+ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i= "+Bis",
d= "+Byas",
ab="[dat]",
g="+Am",
l= "+su",
})
if comp == "1" then
table.insert(data.categories, "Sanskrit yas-stem adjectives")
elseif args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. vowel .. "s-stem adjectives")
else
table.insert(data.categories, "Sanskrit " .. vowel .. "s-stem nouns")
end
end
})
decl_data["an"] = {
detect = make_detect("(.+)a" .. sa_utils.accent .. "?n$",
function(args) return args.g ~= "gneut" end) -- not gender-neutral numerals
}
setmetatable(decl_data["an"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "a(" .. sa_utils.accent .. "?)n$")
data.decl_type = "an-stem"
stem_final_n = true
if args.g == "n" then -- Wackernagel vol.III p.238 presupposes neuter pl. '-hāni' for '-han'
decline(args, data, {
n=args.han == true and {"a" .. oxy, {"a" .. oxy .. "m", note = "Vedic"}} or "a" .. oxy,
a="[nom]",
v={ "+", "a" },
}, {}, {
n={ "A" .. oxy .. "ni", {"a" .. oxy, note = "Vedic"}, {"A" .. oxy, note = "Vedic"}},
a="[nom]",
v={ "Ani", {"a", note = "Vedic"}, {"A", note = "Vedic"}},
})
if not match(args.stem, sa_utils.consonant .. "[NYRnmyrlv]$") or args.contract then
decline(args, data, nil, {
n={ "nI" .. oxy, "+I" },
v={ "nI", "+I" },
}, {})
else
decline(args, data, nil, {
n="+I",
v="+I",
}, {})
end
else
decline(args, data, {
n="A" .. oxy,
v="+",
})
if args.han or match(args.stem, "pUz$") or match(args.stem, "aryam$") then
decline(args, data, {
a="a" .. oxy .. "nam",
}, {
n={ "a" .. oxy .. "nO", { "a" .. oxy .. "nA", note = "Vedic" } },
v={ "anO", { "anA", note = "Vedic" } },
}, {
n="a" .. oxy .. "nas",
v="anas",
a=args.han == true and { "na" .. oxy .. "s", "a" .. oxy .. "nas"} or "na" .. oxy .. "s",
})
elseif match(args.stem, "ukz$") or match(args.stem, "yo/?z$") or match(args.stem, "vf/?z$")
or match(args.stem, "^tm$") then -- Whitney §426b; Wackernagel vol.III p.267
decline(args, data, {
a={"A" .. oxy .. "nam", {"a" .. oxy .. "nam", note = "Vedic" }},
}, {
n={ "A" .. oxy .. "nO", { "a" .. oxy .. "nO", note = "Vedic" }, { "a" .. oxy .. "nA", note = "Vedic" } },
v={ "AnO", { "anO", note = "Vedic" }, { "anA", note = "Vedic" } },
}, {
n={"A" .. oxy .. "nas", {"a" .. oxy .. "nas", note = "Vedic" }},
v={"Anas", {"anas", note = "Vedic" }},
a="na" .. oxy .. "s",
})
else
decline(args, data, {
a="A" .. oxy .. "nam",
}, {
n={ "A" .. oxy .. "nO", { "A" .. oxy .. "nA", note = "Vedic" } },
v={ "AnO", { "AnA", note = "Vedic" } },
}, {
n="A" .. oxy .. "nas",
v="Anas",
a="na" .. oxy .. "s",
})
end
end
if not match(args.stem, sa_utils.consonant .. "[NYRnmyrlv]$") or args.contract then
decline(args, data, {
i="nA" .. oxy,
d="ne" .. oxy,
ab="na" .. oxy .. "s",
g="[abl]",
l={ "ni" .. oxy, "+i", { "+" , note = "Vedic"} }, -- Whitney §425c for Vedic form
}, {
g="no" .. oxy .. "s",
}, {
g="nA" .. oxy .. "m",
})
else
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l= { "+i", { "+" , note = "Vedic"} }, -- Whitney §425c for Vedic form
}, {
g="+os",
}, {
g="+Am",
})
end
decline(args, data, nil, {
a="[nom]",
i="a" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="a" .. oxy .. "Bis",
d="a" .. oxy .. "Byas",
ab="[dat]",
l="a" .. oxy .. "su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit an-stem adjectives")
else
table.insert(data.categories, "Sanskrit an-stem nouns")
end
end
})
decl_data["in"] = {
detect = make_detect("(.+)i" .. sa_utils.accent .. "?n$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["in"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "i(" .. sa_utils.accent .. "?)n$")
data.decl_type = "in-stem"
stem_final_n = true
if args.g ~= "n" then
decline(args, data, {
n="I" .. oxy,
a="i" .. oxy .. "nam",
v="+",
}, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
}, {
n="+as",
a="[nom]",
v="+as",
})
else
decline(args, data, {
n="i" .. oxy,
a="[nom]",
v={ "i", "+" },
}, {
n="+I",
v="+I",
}, {
n="I" .. oxy .. "ni",
a="[nom]",
v="Ini",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i="i" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i="i" .. oxy .. "Bis",
d="i" .. oxy .. "Byas",
ab="[dat]",
g="+Am",
l="i" .. oxy .. "zu",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit in-stem adjectives")
else
table.insert(data.categories, "Sanskrit in-stem nouns")
end
end
})
decl_data["at"] = {
detect = function(args)
if (make_detect("(.+)a" .. sa_utils.accent .. "?t$")(args)
or (make_detect("(.+)A" .. sa_utils.accent .. "?t$")(args) and args.participle == true)) -- participles like 'yā́t'
and (args.g == "m" or args.g == "n") then
return true
else
return false
end
end
}
setmetatable(decl_data["at"], {
__call = function(self, args, data)
local cons, vow, oxy = match(args.lemma, "([mv]?)([aA])(" .. sa_utils.accent .. "?)t$")
-- for present participles
if args.lemma:find("[vm]a/?t$") == nil or args.participle == true then
data.decl_type = "at-stem"
if args.at_nom_s == true then -- participles like 'júhvat'
if args.g ~= "n" then
decline(args, data, {
n="a" .. oxy .. "t",
a="a" .. oxy .. "tam",
v="at",
}, {
n={ "a" .. oxy .. "tO", { "a" .. oxy .. "tA", note = "Vedic"} },
v={ "atO", { "atA", note = "Vedic"} },
}, {
n="a" .. oxy .. "tas",
a="a" .. oxy .. "tas",
v="atas",
})
else
decline(args, data, {
n="a" .. oxy .. "t",
a="[nom]",
v="at",
}, {
n="a" .. oxy .. "tI",
v="atI",
}, {
n="a" .. oxy .. "ti",
a="[nom]",
v="ati",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
l="+i",
}, {
g="+os",
}, {
g="+Am",
})
else
if args.g ~= "n" then
decline(args, data, {
n= vow .. oxy .. "n",
a= vow .. oxy .. "ntam",
v= vow .. "n",
}, {
n={ vow .. oxy .. "ntO", { vow .. oxy .. "ntA", note = "Vedic"} },
v={ vow .. "ntO", { vow .. "ntA", note = "Vedic"} },
}, {
n= vow .. oxy .. "ntas",
a= vow .. "ta" .. oxy .. "s",
v= vow .. "ntas",
})
else
if not args.participle_n_nom_d and not args.nom_d then
error('Please indicate nominative dual (identical to feminine stem) with nom_d')
else
if args.nom_d then
local s = mw.text.split(args.nom_d, ",")
args.participle_n_nom_d = s[1]
args.participle_n_nom_d2 = s[2]
end
-- neuter nom.du. taken from feminine, see Whitney §443a (though maybe artificial: §447b)
args.participle_n_nom_d = IAST_to_SLP.tr(args.participle_n_nom_d)
if args.participle_n_nom_d2 then
args.participle_n_nom_d2 = IAST_to_SLP.tr(args.participle_n_nom_d2)
decline(args, data, {}, {
n= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}},
v= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}},
}, {})
else
decline(args, data, {}, {
n= {{stem = args.participle_n_nom_d, ""}},
v= {{stem = args.participle_n_nom_d, ""}},
}, {})
end
if vow == "a" then
decline(args, data, {}, {}, {
n= {"a" .. oxy .. "nti", {"A" .. oxy .. "nti", note = "Rigvedic"}}, -- see Wackernagel III p 262
a="[nom]",
v= {"anti", {"Anti", note = "Rigvedic"}},
})
else
decline(args, data, {}, {}, {
n= vow .. oxy .. "nti",
a="[nom]",
v= vow .. "nti",
})
end
end
decline(args, data, {
n= vow .. oxy .. "t",
a="[nom]",
v= vow .. "t",
}, {}, {})
end
decline(args, data, {
i= vow .. "tA" .. oxy,
d= vow .. "te" .. oxy,
ab= vow .. "ta" .. oxy .. "s",
l= vow .. "ti" .. oxy,
}, {
g= vow .. "to" .. oxy .. "s",
}, {
g= vow .. "tA" .. oxy .. "m",
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i= vow .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i= vow .. oxy .. "dBis",
d= vow .. oxy .. "dByas",
ab="[dat]",
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit at-stem adjectives")
else
table.insert(data.categories, "Sanskrit at-stem nouns")
end
else -- for nouns suffixed with -vat/-mat
data.decl_type = cons .. "at-stem"
if args.g ~= "n" then
decline(args, data, {
n="A" .. oxy .. "n",
a="a" .. oxy .. "ntam",
v={ "an", { "as", note = "Rigvedic"} },
}, {
n={ "a" .. oxy .. "ntO", { "a" .. oxy .. "ntA", note = "Vedic"} },
v={ "antO", { "antA", note = "Vedic"} },
}, {
n="a" .. oxy .. "ntas",
a="a" .. oxy .. "tas",
v="antas",
})
else
decline(args, data, {
n="a" .. oxy .. "t",
a="[nom]",
v="at",
}, {
n="+I",
v="+I",
}, {
n={{"a" .. oxy .. "nti"}, {"A" .. oxy .. "nti", note = "Rigvedic"}}, -- see Wackernagel III p 258-9
a="[nom]",
v={{"anti"}, {"Anti", note = "Rigvedic"}},
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i="a" .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i="a" .. oxy .. "dBis",
d="a" .. oxy .. "dByas",
ab="[dat]",
g="+Am",
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. cons .. "at-stem adjectives")
else
table.insert(data.categories, "Sanskrit " .. cons .. "at-stem nouns")
end
end
end
})
decl_data["añc"] = {
detect = make_detect("(.+[aA]" .. sa_utils.accent .. "?Yc)$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["añc"], {
__call = function(self, args, data)
local cons, vowel, oxy = match(args.lemma, "([yv]?)([aA])(" .. sa_utils.accent .. "?)Yc$")
data.decl_type = "añc-stem"
-- make stem for 'middle' cases
args.stem = args.stem:gsub("Yc$", "c")
if args.g == "m" then
decline(args, data, {
n= "+", -- args.lemma
a="+am",
v= "+",
}, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
}, {
n="+as",
v="+as",
})
else -- neuter
decline(args, data, {
n= "", -- args.stem
v= "",
a="[nom]"
}, {}, {
n="+i",
v="+i",
a="[nom]"
})
end
decline(args, data, {}, {
i= "ByAm",
}, {
i= "Bis",
d= "Byas",
l= "su",
})
-- changing stem to weakest form
if vowel == "A" then
-- do nothing
elseif match(args.stem, "tirya/?c$") then -- specifically for tiryañc
args.stem = args.stem:gsub("ya(/?)c$", "a%1Sc")
elseif cons ~= "" then
args.stem = args.stem:gsub("([yv])a([/\\]?)c$",
function(cons, acc) return (cons == "y" and "I" or "U") .. (acc == "" and "" or "/") .. "c" end)
elseif match(args.stem, "dac$") then
args.stem = args.stem:gsub("ac$", "Ic")
else
error("Not supported")
end
if vowel == "A" or oxy == "" then
if args.g == "m" then
decline(args, data, nil, nil, {
a="as",
})
else -- neuter
decline(args, data, nil, {
n="I",
v="I",
})
end
decline(args, data, {
i="A",
d="e",
ab="as",
l="i",
}, {
g="os",
}, {
g="Am",
})
else -- oxytone accent, showing two possible accentuations (Whitney §410)
if args.g == "m" then
decline(args, data, nil, nil, { a={"as", {"a" .. oxy .. "s", note = "Rigvedic", mono = true}} })
else
decline(args, data, nil, {
n= {"I", {"I" .. oxy, note = "Rigvedic", mono = true}},
v= "I",
})
end
decline(args, data, {
i= {"A", {"A" .. oxy, note = "Rigvedic", mono = true}},
d= {"e", {"e" .. oxy, note = "Rigvedic", mono = true}},
ab= {"as", {"a" .. oxy .. "s", note = "Rigvedic", mono = true}},
l= {"i", {"i" .. oxy, note = "Rigvedic", mono = true}},
}, {
g= {"os", {"o" .. oxy .. "s", note = "Rigvedic", mono = true}},
}, {
g= {"Am", {"A" .. oxy .. "m", note = "Rigvedic", mono = true}},
})
end
decline(args, data, {
g="[abl]"
}, {
a="[nom]",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
ab="[dat]",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit añc-stem adjectives")
end
end
})
decl_data["o"] = {
detect = make_detect("(.+)o" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "f" end)
}
setmetatable(decl_data["o"], { -- 'gó'
__call = function(self, args, data)
local oxy = match(args.lemma, "o(" .. sa_utils.accent .. "?)$")
data.decl_type = "o-stem"
decline(args, data, {
n="O" .. oxy .. "s",
v="Os",
a="A" .. oxy .. "m",
i="+A",
d="+e",
ab="o" .. oxy .. "s",
g="[abl]",
l="+i",
}, {
n={ "A" .. oxy .. "vO", { "A" .. oxy .. "vA", note = "Vedic" } },
v={ "AvO", { "AvA", note = "Vedic" } },
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
g= "+os",
l="[gen]",
}, {
n="A" .. oxy .. "vas",
a={"A" .. oxy .. "s", { "A" .. oxy .. "vas", note = "rare" } },
v="Avas",
i="+Bis",
d="+Byas",
ab="[dat]",
g={ "+Am", { "+nAm", note = "Vedic" } },
l="+su",
})
table.insert(data.categories, "Sanskrit o-stem nouns")
end
})
decl_data["O"] = {
detect = make_detect("(.+)O" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "f" end)
}
setmetatable(decl_data["O"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "O(" .. sa_utils.accent .. "?)$")
data.decl_type = "au-stem"
decline(args, data, {
n="+s",
v="+s",
a="+am",
i= {{ "+A" .. oxy, mono = true }},
d= {{ "+e" .. oxy, mono = true }},
ab={{ "+a" .. oxy .. "s", mono = true }},
g="[abl]",
l= {{ "+i" .. oxy, mono = true }},
}, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
a="[nom]",
i= {{"+ByA" .. oxy .. "m", mono = true }},
d="[ins]",
ab="[ins]",
g= {{ "+o" .. oxy .. "s", mono = true }},
l="[gen]",
}, {
n="+as",
v="+as",
a="[nom]",
i= {{"+Bi" .. oxy .. "s", mono = true }},
d= {{"+Bya" .. oxy .. "s", mono = true }},
ab="[dat]",
g= {{ "+A" .. oxy .. "m", mono = true }},
l= {{ "+su" .. oxy, mono = true }},
})
table.insert(data.categories, "Sanskrit au-stem nouns")
end
})
decl_data["vāṃs"] = {
detect = make_detect("(.+)vA" .. sa_utils.accent .. "?Ms$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["vāṃs"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "vA(" .. sa_utils.accent .. "?)Ms$")
data.decl_type = "vāṃs-stem"
local weak_stem
if match(args.stem, "baBU$") or match(args.stem, "u$") then
weak_stem = args.stem .. "v"
elseif match(args.stem, "U$") then
weak_stem = args.stem:gsub("U$", "uv")
elseif match(args.stem, "pIpi$") or match(args.stem, "dI[dD]i$") then
weak_stem = args.stem
-- the second 'i' of 'śiśrivāṃs' etc. is part of the root
elseif match(args.stem, "[aAIuUfFxeEoO]" .. sa_utils.accent .."?M?" .. sa_utils.consonant .. "+i$") or match(args.stem, "vi[Sd]i$") then
weak_stem = args.stem:gsub("i$", "")
else
weak_stem = args.stem
end
if args.g == "m" then
decline(args, data, {
n= "vA" .. oxy .. "n",
a= "vA" .. oxy .. "Msam",
v={ "van", { "vas", note = "Rigvedic"} },
}, {
n= "vA" .. oxy .. "MsO",
a="[nom]",
v= "vAMsO",
}, {
n= "vA" .. oxy .. "Msas",
a={{stem = weak_stem, "u" .. oxy .. "zas"}},
v= "vAMsas",
})
else
decline(args, data, {
n= "va" .. oxy .. "t",
a="[nom]",
v= "vat"
}, {
n={{stem = weak_stem, "u" .. oxy .. "zI"}},
a="[nom]",
v={{stem = weak_stem, "uzI"}},
}, {
n= "vA" .. oxy .. "MsI",
a="[nom]",
v= "vAMsI"
})
end
decline(args, data, {
i={{stem = weak_stem, "u" .. oxy .. "zA"}},
d={{stem = weak_stem, "u" .. oxy .. "ze"}},
ab={{stem = weak_stem, "u" .. oxy .. "zas"}},
g="[abl]",
l={{stem = weak_stem, "u" .. oxy .. "zi"}},
}, {
i= "va" .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
g={{stem = weak_stem, "u" .. oxy .. "zos"}},
l="[gen]"
}, {
i= "va" .. oxy .. "dBis",
d= "va" .. oxy .. "dByas",
ab="[dat]",
g={{stem = weak_stem, "u" .. oxy .. "zAm"}},
l= "va" .. oxy .. "tsu"
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit vāṃs-stem adjectives")
else
table.insert(data.categories, "Sanskrit vāṃs-stem nouns")
end
end
})
return decl_data
t84x33k7ruudbmk9yka9czjc2utdzza
5724854
5724839
2026-06-16T04:57:36Z
OctraBot
3198
5724854
Scribunto
text/plain
local decl_data = {}
local sa_utils = require("Module:sa-utilities")
local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST")
local IAST_to_SLP = require("Module:sa-utilities/translit/IAST-to-SLP1")
local match = string.match -- sufficient for SLP1
local umatch = mw.ustring.match
-- Make a detection function for ARGS that fetches the stem according to MATCH_RE (which is matched against
-- args.lemma and should have the stem in the first capture). ADDL_CONDITION is an optional function of one
-- argument (ARGS) that must return true for the detection to happen.
local function make_detect(match_re, addl_condition)
return function(args)
if addl_condition and not addl_condition(args) then
return false
end
local stem = match(args.lemma, match_re)
if stem then
args.stem = stem
return true
else
return false
end
end
end
-- Construct all or part of a given noun's declension. Each of SG, DU and PL is a table, whose keys are
-- as follows:
--
-- n = nominative
-- a = accusative
-- v = vocative
-- i = instrumental
-- d = dative
-- ab = ablative
-- g = genitive
-- l = locative
--
-- The corresponding value is one of the following:
-- 1. a "copy spec" such as "[ins]", meaning to copy from the instrumental of the same number;
-- 2. a single string (specifying an ending); or
-- 3. a list of specs, where a spec is either a string (an ending) or a table of the form
-- {"ENDING", stem = "STEM", mono = TRUE/FALSE, note = "NOTE"}. The latter format lets you explicitly specify what
-- the stem is, whether the form is monosyllabic, and what the footnote is. All named keys are optional.
--
-- In forms 2 and 3, if the ending begins with +, the stem defaults to args.lemma; otherwise it defaults to args.stem.
local function decline(args, data, sg, du, pl)
local cases = {n="nom", a="acc", v="voc", i="ins", d="dat", ab="abl", g="gen", l="loc"}
local function process_number(endings, tag)
if not endings then
return
end
for case, es in pairs(endings) do
if type(es) == "string" and es:find("^%[") then
-- copy from another case; skip and handle later
else
if type(es) == "string" then
es = {es}
end
local forms = {}
for i, e in ipairs(es) do
local stem, mono, accent_override, note
if type(e) == "table" then
stem = e.stem
mono = e.mono
accent_override = e.accent_override
note = e.note
e = e[1]
end
-- reduce Vedic forms to zero in case of novedic parameter
if args.novedic == true and note and (match(note, "[Vv]edic$") or umatch(note, "Br[aā]hma[nṇ]a")) then
stem = ""; e = ""; note = ""
elseif args.norigvedic == true and note and match(note, "Rigvedic$") then
stem = ""; e = ""; note = ""
else
if e:find("^%+") then
if stem then
error("Internal error: Can't use + in an ending when stem is explicitly given")
end
e = e:gsub("^%+", "")
stem = args.lemma
elseif not stem then
stem = args.stem
end
forms[i] = sa_utils.internal_sandhi({
stem = stem, ending = e, has_accent = args.has_accent, recessive = case == "v", no_syncope = no_syncope,
mono = mono, root = root, ambig_final = args.ambig_final, diaspirate = args.diaspirate,
accent_override = accent_override, han = args.han, stem_final_n = stem_final_n, voc_svar = args.voc_svar,
})
if note and note~= "" then
forms["note" .. i] = note
end
end
end
data.forms[cases[case] .. "_" .. tag] = forms
end
end
-- Now handle cases copied from another.
for case, es in pairs(endings) do
if type(es) == "string" and es:find("^%[") then
-- copy from another case; skip and handle later
local other_case = es:match("^%[(.*)%]$")
if not other_case then
error("Internal error: Unrecognized copy case spec " .. es)
end
local other_slot = other_case .. "_" .. tag
local value = data.forms[other_slot]
if not value then
error("Internal error: Slot '" .. other_slot .. "' to copy from is empty")
end
local this_slot = cases[case] .. "_" .. tag
if data.forms[this_slot] then
error("Internal error: A value already exists for slot '" .. this_slot ..
"' when copying from '" .. other_slot .. "'")
end
data.forms[cases[case] .. "_" .. tag] = value
end
end
end
process_number(sg, "s")
process_number(du, "d")
process_number(pl, "p")
end
decl_data["numeral"] = {
detect = make_detect("(.+)a/?[nz]?$",
function(args) return args.g == "gneut" end)
}
setmetatable(decl_data["numeral"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(/?)[nz]?$")
local acc = match(args.lemma, "(/?)[^/]*$")
data.decl_type = "numeral"
if match(args.lemma, "a/?z$") then -- ṣaṣ
decline(args, data, {}, {}, {
n="+",
a="[nom]",
v="[nom]",
i="aqBi" .. oxy .. "s",
d="aqBya" .. oxy .. "s",
ab="[dat]",
g="aRRA" .. oxy .. "m",
l="awsu" .. oxy,
})
else -- pañca(n), etc.
decline(args, data, {}, {}, {
n="a" .. oxy,
a="[nom]",
v="a",
i={{"a" .. acc .. "Bis", accent_override = true}},
d={{"a" .. acc .. "Byas", accent_override = true}},
ab="[dat]",
g={{"AnA" .. acc .. "m", accent_override = true}},
l={{"a" .. acc .. "su", accent_override = true}},
})
end
-- no categorisation?
end
})
decl_data["a"] = {
detect = make_detect("(.+)a" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["a"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
if args.pronominal then
data.decl_type = "หน่วยสรรพนาม a-การันต์"
else
data.decl_type = "a-การันต์"
end
if args.g == "m" then
decline(args, data, {
n="a" .. oxy .. "s",
a="a" .. oxy .. "m",
v="a"
}, {
n={ "O" .. oxy, { "A" .. oxy, note = "Vedic" } },
v={ "O", { "A", note = "Vedic" } }
}, {
a="A" .. oxy .. "n",
})
if args.pronominal then
decline(args, data, {}, {}, {
n="e" .. oxy,
v="e"
})
else
decline(args, data, {}, {}, {
n={"A" .. oxy .. "s", {"A" .. oxy .. "sas", note="Vedic"}},
v={"As", {"Asas", note="Vedic"}}
})
end
else
decline(args, data, {
n="a" .. oxy .. "m",
a="[nom]",
v="a"
}, {
n="e" .. oxy,
v="e"
}, {
n={"A" .. oxy .. "ni", {"A" .. oxy, note="Vedic"}},
a="[nom]",
v={"Ani", {"A", note="Vedic"}}
})
end
if args.pronominal then
decline(args, data, {
d="a" .. oxy .. "smE",
ab="a" .. oxy .. "smAt",
l="a" .. oxy .. "smin"
}, {}, {
g="e" .. oxy .. "zAm"
})
else
decline(args, data, {
d="A" .. oxy .. "ya",
ab="A" .. oxy .. "t",
l="e" .. oxy
}, {}, {
g="A" .. oxy .. "nAm"
})
end
decline(args, data, {
-- For nouns on -tva(na), RV has only three instr.sg. with -ena (1.110.4, 8.18.13, 10.37.9); see Lanman p.335f. for forms on -ā.
-- This avoidance is phonetically perfectly understandable for -tvanā instead of -tvanena, and with abstract nouns like this
-- (predominantly used in the singular), there wouldn't be much cause for confusion with the nom./acc. plural.
-- (detection of oxytone accent to avoid gerundives on -tva)
i= match(args.lemma, "tva?n?a/$") and {"e" .. oxy .. "na", {"A" .. oxy, note = "Vedic"}} or "e" .. oxy .. "na",
g="a" .. oxy .. "sya"
}, {
a="[nom]",
i="A" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
-- see Wackernagel III, p.98-99, §48a
g= match(args.stem, ".y$") and {"a" .. oxy .. "yos", {"o" .. oxy .. "s", note = "Vedic"}} or "a" .. oxy .. "yos",
l="[gen]"
}, {
i={ "E" .. oxy .. "s", { "e" .. oxy .. "Bis", note = "Vedic" } },
d="e" .. oxy .. "Byas",
ab="[dat]",
l="e" .. oxy .. "zu"
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit a-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit a-การันต์ nouns")
end
end
})
decl_data["iu"] = {
detect = make_detect("(.+)[iu]" .. sa_utils.accent .. "?$")
}
setmetatable(decl_data["iu"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([iu])(" .. sa_utils.accent .. "?)$")
data.decl_type = vowel .. "-การันต์"
if match(args.lemma, "[sz]a/?Ki/$") and not (args.decl and match(args.decl, "i")) then
-- in classical possibly regular in compounds (see Wackernagel vol.III p.141), for which use 'decl=i'
decline(args, data, {
n="A" .. oxy,
a="A" .. oxy .. "yam",
i={{stem = args.stem .. vowel, "A" .. oxy }},
d={{stem = args.stem .. vowel, "e" .. oxy }},
ab={{stem = args.stem .. vowel, "u" .. oxy .. "r" }},
l={{stem = args.stem .. vowel, "O" .. oxy }}, -- Wackernagel suggests older *sákhayi (ibid.)
v="e",
}, {
n={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "Vedic"}},
v={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "Vedic"}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s" }},
}, {
n="A" .. oxy .. "yas",
v="Ayas",
a="I" .. oxy .. "n",
})
elseif args.g == "m" then
if vowel == "i" then
decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "y", "e" }},
l={ "O" .. oxy, { "A" .. oxy, note = "Vedic"}}, -- Whitney §336f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u
decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "v", "e" }},
l="O" .. oxy,
}, {}, {})
else decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "v", "e" }, {stem = args.stem .. "v", "e" .. oxy, note = "Vedic"}},
l="O" .. oxy,
}, {}, {})
end
if match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
decline(args, data, {
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}},
}, {}, {})
else
decline(args, data, {
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}},
}, {}, {})
end
decline(args, data, {
n="+s",
a="+m",
i={ "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "Vedic" } },
v={{stem= args.stem .. sa_utils.up_one_grade[vowel], ""}},
}, {
n={{stem = args.stem .. sa_utils.lengthen[vowel..oxy], ""}},
v={{stem = args.stem .. sa_utils.lengthen[vowel], ""}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}},
a={{stem = args.stem ..sa_utils.lengthen[vowel..oxy], "n"}},
v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}},
})
elseif args.g == "f" then
if vowel == "i" then
decline(args, data, {
i={{stem = args.stem .. vowel, "A" .. oxy}, {"I" .. oxy, note = "Vedic"}}, -- Whitney §336c
l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" }, { "A" .. oxy, note = "Vedic"} },
}, {}, {})
else
decline(args, data, {
i={{stem = args.stem .. vowel, "A" .. oxy }},
l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" } },
}, {}, {})
end
decline(args, data, {
n="+s",
a="+m",
-- the Rigvedic dat.sg. on -ī (mostly ūtī́) seems too rare to extrapolate to every stem (see also Macdonell p.282)
d={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "e"}, {stem = args.stem .. vowel, "E" .. oxy } },
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "A" .. oxy .. "s" },
{stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"} },
v=sa_utils.up_one_grade[vowel],
}, {
n=sa_utils.lengthen[vowel..oxy],
v=sa_utils.lengthen[vowel],
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}},
a=sa_utils.lengthen[vowel..oxy] .. "s",
v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}},
})
else -- neuter
if args.adj == true then -- for difference with nouns see Whitney §344
if vowel == "i" then
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "y", "e"}},
ab={ "+nas", {stem = args.stem .. "e" .. oxy, "s"}},
l={ "+ni", "O" .. oxy, {"A" .. oxy, note = "Vedic"}}, -- Whitney §336f + §340f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u; similar for abl./gen. -vas (vs. -os)
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s"}},
l={ "+ni", "O" .. oxy},
}, {}, {})
else decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e"}, {stem = args.stem .. "v", "e" .. oxy, note = "Vedic"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}},
l={ "+ni", "O" .. oxy},
}, {}, {})
end
decline(args, data, {}, {
g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s" }},
}, {})
else -- nouns
if vowel == "i" then
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "y", "e", note = "Vedic" }},
ab={ "+nas", {stem = args.stem .. "e" .. oxy, "s", note = "Vedic"}},
l={ "+ni", {"O" .. oxy, note = "Vedic"}, {"A" .. oxy, note = "Vedic"}}, -- Whitney §336f + §340f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u; similar for abl./gen. -vas (vs. -os)
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "Vedic" }},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "Vedic"}},
l={ "+ni", {"O" .. oxy, note = "Vedic"}},
}, {}, {})
else
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "Vedic" },
{stem = args.stem .. "v", "e" .. oxy, note = "Vedic"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "Vedic"},
{stem = args.stem .. vowel, "a" .. oxy .. "s", note = "Vedic"}},
l={ "+ni", {"O" .. oxy, note = "Vedic"}},
}, {}, {})
end
decline(args, data, {}, {
g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s", note = "Vedic" }},
}, {})
end
decline(args, data, {
n="+",
a="[nom]",
i={ "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "Vedic" }},
v={ "+", {stem= args.stem .. sa_utils.up_one_grade[vowel], ""}},
}, {
n={ "+nI", {stem = args.stem .. vowel, "I" .. oxy, note = "Vedic" }},
v={ "+nI", {stem = args.stem .. vowel, "I", note = "Vedic" }},
}, {
n={{ stem = args.stem .. sa_utils.lengthen[vowel .. oxy], "ni" }, { "+", note = "Vedic"},
{ stem = args.stem .. sa_utils.lengthen[vowel..oxy], "", note = "Vedic"}},
a="[nom]",
v={{ stem = args.stem .. sa_utils.lengthen[vowel], "ni" }, { "+", note = "Vedic"},
{ stem = args.stem .. sa_utils.lengthen[vowel], "", note = "Vedic"}},
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
g={{ stem = args.stem .. sa_utils.lengthen[vowel], "nA" .. (oxy ~= "" and "/" or "") .. "m"}},
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. vowel .. "-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. vowel .. "-การันต์ nouns")
end
end
})
decl_data["A"] = {
detect = function(args)
if make_detect("(.+)A" .. sa_utils.accent .. "?$")(args) then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["A"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
if args.g == "n" then
-- It seems better not to base a neuter declension on the masculine nominatives on -ās accompanying neuter nouns.
-- See Whitney §367b and Wackernagel vol.III p.129
error("The neuter of radical stems in -ā ends in -a.")
end
if args.pronominal then
data.decl_type = "หน่วยสรรพนาม ā-การันต์"
else
data.decl_type = "ā-การันต์"
end
if not (args.root or args.true_mono) or (args.true_mono and args.root == false) then -- derived stem
if args.g == "m" then
error("Add 'root=1' in case this is a root noun or adjective.")
else
table.insert(data.categories, "Sanskrit ā-การันต์ nouns")
end
if args.pronominal then
decline(args, data, {
d="a" .. oxy .. "syE",
ab={"a" .. oxy .. "syAs", {"a" .. oxy .. "syE", note = "Brāhmaṇas"}},
l="a" .. oxy .. "syAm"
}, {}, {
g="+sAm"
})
else
decline(args, data, {
d="+yE",
ab={"+yAs", {"+yE", note = "Brāhmaṇas"}},
l="+yAm"
}, {}, {
g="+nAm"
})
end
decline(args, data, {
n="+",
i={ "a" .. oxy .. "yA", { "+", note = "Vedic" } },
v="e",
}, {
n="e" .. oxy,
g="a" .. oxy .. "yos",
v="e",
}, {
a="+s",
})
else
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit มูลการันต์ adjectives on -ā")
else
table.insert(data.categories, "Sanskrit มูลการันต์ nouns on -ā")
end
if args.g == "m" then
data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by a-stem declension."}
else
data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by regular ā-stem declension."}
end
decline(args, data, {
n="+s",
i="+",
d="e" .. oxy,
ab="a" .. oxy .. "s",
l="i" .. oxy,
v="+s",
}, {
n={ "O" .. oxy, { "A" .. oxy, note = "Vedic" } },
g="o" .. oxy .. "s",
v={ "O", { "A", note = "Vedic" } }
}, {
a={ "+s", { "a" .. oxy .. "s", note = "Perhaps" } },
g={ "+nAm", { "+Am", note = "Perhaps" } },
})
end
decline(args, data, {
a="+m",
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
n="+s",
i="+Bis",
d="+Byas",
ab="[dat]",
l="+su",
v="+s",
})
end
})
decl_data["IU"] = {
detect = function(args)
if make_detect("(.+)[IU]" .. sa_utils.accent .. "?$")(args) then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["IU"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([IU])(" .. sa_utils.accent .. "?)$")
data.decl_type = SLP_to_IAST.tr(vowel) .. "-การันต์"
if args.g == "n" then
-- it seems better to mention the one or two Vedic forms that could be interpreted
-- as coming from a neuter ī-stem (see Whitney §367b) separately
error("The neuter of radical stems in -ī/ū ends in -i/u.")
end
if not (args.root or args.true_mono) or (args.true_mono and args.root == false) or args.han then -- derived stem
if args.vrki then -- with original vṛkī-declension (Whitney §355 ff.), given as older forms of later classical declension
if vowel == "U" then
error()
elseif args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ī-การันต์ adjectives with original vṛkī́-declension")
else
table.insert(data.categories, "Sanskrit ī-การันต์ nouns with original vṛkī́-declension")
end
data.general_notes = {"This stem originally had ''vṛkī́''-declension."}
decline(args, data, {
n={"+", {"+s", note = "Vedic"}},
a={"+m", {"+am", note = "Vedic"}},
i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic"}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic"}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic"},
{stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+", note = "Vedic"}}, -- Wackernagel III, §86c, p.170
}, {
n={"+O", {"+A", note = "Vedic"}},
v={"+O", {"+A", note = "Vedic"}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic"}},
}, {
n="+as",
v="+as",
a={"+s", {"+as", note = "Vedic"}},
g="+nAm",
})
elseif vowel == "I" then -- devī-declension
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ī-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit ī-การันต์ nouns")
end
decline(args,data, {
n="+",
a="+m",
i={{stem = args.stem .. vowel, "A" .. oxy}},
d={{stem = args.stem .. vowel, "E" .. oxy}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}},
}, {
n={ "+O", { "+", note = "Vedic" } },
v={ "+O", { "+", note = "Vedic" } },
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={ "+as", { "+s", note = "Vedic" } },
v={ "+as", { "+s", note = "Vedic" } },
a="+s",
g= oxy == "" and "+nAm" or {"+nAm", { stem = args.stem .. vowel, "nA" .. oxy .. "m", note = "Rigvedic"} }, -- Whitney §319a
})
else -- ū-stems, with Whitney's declension at §356a given as older forms of §364, see Wackernagel vol.III p.189
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ū-การันต์ adjectives") -- probably only bahuvrihis like 'sarvatanū'
else
table.insert(data.categories, "Sanskrit ū-การันต์ nouns")
end
if match(args.stem, "y$") or match(args.stem, "agr$")
or match(args.stem, "kadr$") or match(args.stem, "bIBats") then -- with Vedic -úv-, see Macdonell p.290 §384a
decline(args,data, {
a={"+m", {"+am", note = "Vedic", mono = true}},
i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic", mono = true}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic", mono = true}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic", mono = true},
{stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "Vedic", mono = true},
{"+", note = "Vedic"}},
}, {
n={"+O", {"+A", note = "Vedic", mono = true}},
v={"+O", {"+A", note = "Vedic", mono = true}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic", mono = true}},
}, {
n={"+as", {"+as", note = "Vedic", mono = true}},
v={"+as", {"+as", note = "Vedic", mono = true}},
a={"+s", {"+as", note = "Vedic", mono = true}},
})
else
decline(args,data, {
a={"+m", {"+am", note = "Vedic"}},
i= oxy == "" and "+A" or {{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "Vedic"}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "Vedic"}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "Vedic"},
{stem = args.stem .. vowel, "E" .. oxy, note = "Brāhmaṇas"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "Vedic"},
{"+", note = "Vedic"}}, -- Wackernagel III, §97b, p.188
}, {
n={"+O", {"+A", note = "Vedic"}}, -- duals on -ū for ū-stems do not occur
v={"+O", {"+A", note = "Vedic"}},
g= oxy == "" and "+os" or {{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "Vedic"}},
}, {
n="+as", -- RV 4.41.8 has 'yuvayū́s', but it seems better to simply give this at the relevant lemma
v="+as",
a={"+s", {"+as", note = "Vedic"}},
})
end
decline(args,data, {
n="+s",
}, {}, {
g="+nAm",
})
end
decline(args, data, {
g="[abl]",
v=sa_utils.shorten[vowel],
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
l="+su",
})
else
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit มูลการันต์ adjectives on -" .. SLP_to_IAST.tr(vowel))
else
table.insert(data.categories, "Sanskrit มูลการันต์ nouns on -" .. SLP_to_IAST.tr(vowel))
end
if args.true_mono then -- rout nouns, Whitney §351
no_syncope = true
if args.g == "f" then -- see Wackernagel vol.III p.181
decline(args, data, {
d={{ "+e" .. oxy, mono = true }, { "+E" .. oxy, mono = true, note = "Later Sanskrit" } },
ab={{ "+a" .. oxy .. "s", mono = true }, { "+A" .. oxy .. "s", mono = true, note = "Later Sanskrit" } },
l={{ "+i" .. oxy, mono = true }, { "+A" .. oxy .. "m", mono = true, note = "Later Sanskrit" } },
})
else
decline(args, data, {
d={{ "+e" .. oxy, mono = true } },
ab={{ "+a" .. oxy .. "s", mono = true } },
l={{ "+i" .. oxy, mono = true } },
})
end
decline(args, data, {
i={{ "+A" .. oxy, mono = true}},
}, {
i={{"+ByA" .. oxy .. "m", mono = true}},
g={{"+o" .. oxy .. "s", mono = true}},
}, {
i={{"+Bi" .. oxy .. "s", mono = true}},
d={{"+Bya" .. oxy .. "s", mono = true}},
g={{"+A" .. oxy .. "m", mono = true }, { "+nA" .. oxy .. "m", mono = true } },
l={{"+su" .. oxy, mono = true}},
})
else -- root terms in compounds, Whitney §352; I'd suggest to give two tables when both contracted and non-contracted forms occur
-- see Wackernagel III §91a (p.179) for ī, and §100a + §100eα (p.192-3) for ū; Macdonell: p.268 + 288
-- Taking as default that ū-stems with accent (rule of thumb for Vedic terms) are not contracted. To be overrided with 'contract=1'
if args.contract == false or (args.contract ~= true and (match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$")
or vowel == "U" and (match(args.lemma, sa_utils.accent) or match(args.stem, "B$") or match(args.stem, "jo/?g$"))
or vowel == "I" and (match(args.stem, "avadyaB$") or (match(args.stem, "D$") and match(args.stem, sa_utils.accent))))) then
no_syncope = true -- -Ciy-/-Cuv- when followed by vowel
decline(args, data, {
l= args.g == "f" and {"+i", {"+Am", note = "Later Sanskrit"}} or "+i",
})
else
decline(args, data, {
l= args.g == "f" and {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }, {"+Am", note = "Later Sanskrit"}}
or {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }},
})
end
if args.g == "f" then -- see Wackernagel vol.III p.181
decline(args, data, {
d={ "+e", { "+E", note = "Later Sanskrit" } },
ab={ "+as", { "+As", note = "Later Sanskrit" } },
})
else
decline(args, data, {
d= "+e",
ab= "+as",
})
end
decline(args, data, {
i= "+A",
}, {
i="+ByAm",
g= "+os",
}, {
i="+Bis",
d="+Byas",
g= {"+Am", "+nAm"},
l="+su",
})
end
decline(args, data, {
n= "+s",
v= "+s",
a= "+am",
g="[abl]",
}, {
n= { "+O", { "+A", note = "Vedic"}},
v= { "+O", { "+A", note = "Vedic"}},
a="[nom]",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
n= "+as",
v= "+as",
a="[nom]",
ab="[dat]",
})
end
end
})
decl_data["f"] = { -- for nouns in ṛ
detect = make_detect("(.+)f" .. sa_utils.accent .. "?$")
}
setmetatable(decl_data["f"], { -- for nouns in ṛ
__call = function(self, args, data)
if args.g == "f" and args.r_stem_a == "ā" and match(args.stem, "t$") and not match(args.stem, "^s?t$") then
error("The feminine of adjectives in -tṛ ends in -trī.")
end
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
data.decl_type = SLP_to_IAST.tr("f") .. "-การันต์"
if args.g == "n" then
decline(args, data, {
-- for neuter -úr, see Wackernagel, III, p.204, §107b (denies 'sthātar' and 'sthātṝ́n' are neuter sg.)
-- all cases of -tári given as nom./acc.n.sg. by Macdonell (p.243) are translated as locatives by Jamison & Brereton
n={"f" .. oxy, {"u" .. oxy .. "r", note = "Rigvedic"}},
a="[nom]",
i={"+nA", "rA" .. oxy},
d={"+ne", "re" .. oxy},
ab={"+nas", "u" .. oxy .. "r"},
l={"+ni", "a" .. oxy .. "ri"},
v={ "f", "ar" },
}, {
n="+nI",
g={"+nos", "ro" .. oxy .. "s"},
v="+nI",
}, {
n="F" .. oxy .. "ni",
a="[nom]",
v="Fni",
})
else
if not args.r_stem_a then
error('Please specify the length of the accusative singular vowel with r_stem_a = "a" or "ā".')
else
args.r_stem_a = IAST_to_SLP.tr(args.r_stem_a)
end
decline(args, data, {
n="A" .. oxy,
a=args.r_stem_a .. oxy .. "ram",
i="rA" .. oxy,
d="re" .. oxy,
ab="u" .. oxy .. "r",
l="a" .. oxy .. "ri",
v="ar",
}, {
n={ args.r_stem_a .. oxy .. "rO", { args.r_stem_a .. oxy .. "rA", note = "Vedic" } },
g="ro" .. oxy .. "s",
v={ args.r_stem_a .. "rO", { args.r_stem_a .. "rA", note = "Vedic" } },
}, {
n=args.r_stem_a .. oxy .. "ras",
a=args.g == "f" and "F" .. oxy .. "s" or "F" .. oxy .. "n",
v=args.r_stem_a .. "ras",
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
g={{stem = args.stem .. "F", "nA" .. (oxy ~= "" and "/" or "") .. "m"}},
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-การันต์ nouns")
end
end
})
decl_data["root"] = { -- for root nouns ending on -k/g/gh/c/j/ṭ/ḍ/th/d/dh/p/bh/m/r/ṣ/ś/h + -āt/it/ut/ṛt/akt + -ās/os
detect = function(args)
-- capture of vowel needed for accent
if (make_detect("(.*)" .. sa_utils.vowel .. sa_utils.accent .. "?r?[kgGcjwqTdDpBmrzSh]$")(args)
or (make_detect("(.*)[Aiuf]" .. sa_utils.accent .. "?t$")(args) and not args.participle == true)
or make_detect("(.*)a" .. sa_utils.accent .. "?kt$")(args) -- nákt-
or make_detect("(.*)[Ao]" .. sa_utils.accent .. "?s$")(args)
or (args.root == true and make_detect("(.*)[ai]" .. sa_utils.accent .. "?[ts]$")(args) )) -- + āśis + numerals like triṃśát
and args.g ~= "gneut" then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["root"], {
__call = function(self, args, data)
local vowel, oxy, extra, cons = match(args.lemma, "(" .. sa_utils.vowel .. ")(" .. sa_utils.accent .. "?)(r?)([kgGcjwqtTdDpBmrzShs]t?)$")
if match(cons, "[jSh]") ~= nil and not args.ambig_final then
error('Please specify the final consonant in the nominative singular with ambig_final = "k" or "ṭ".')
elseif args.ambig_final then -- also for cases like sarágh > saráṭ or potentially anuṣṭúbh > anuṣṭúk
args.ambig_final = IAST_to_SLP.tr(args.ambig_final)
end
local nasal = cons:gsub(".", sa_utils.homorganic_nasal)
data.decl_type = "มูลการันต์"
root = true
-- neuter nom. plural (Whitney §389c, although saying that these forms with infixed nasal are not attested for nouns)
if args.g == "n" then
if match(cons, "[mr]") == nil and extra == "" then
decline(args, data, nil, nil, {
n= {{stem = args.stem .. vowel .. oxy .. nasal .. cons, "i"}},
v= {{stem = args.stem .. vowel .. nasal .. cons, "i"}},
})
else
decline(args, data, nil, nil, {
n= "+i",
v= "+i",
})
end
end
if args.true_mono then -- monosyllabic stem
if args.g ~= "n" then
decline(args, data, {
-- nom.sg. -s is an 'invisible' (historical) ending to provoke vowel lengthening in -ir/-ur stems, see Whitney §392
-- this ending should be removed by internal_sandhi at an early stage
n="+s",
a="+am",
v="+s",
}, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
}, {
n="+as",
v="+as",
})
else
decline(args, data, {
n= "+",
a="[nom]",
v= "+"
}, {
n= {{"+I" .. oxy, mono = true }},
v= "+I"
}, { })
end
decline(args, data, {
i= {{ "+A" .. oxy, mono = true }},
d= {{ "+e" .. oxy, mono = true }},
ab= {{ "+a" .. oxy .. "s", mono = true }},
g="[abl]",
l= {{ "+i" .. oxy, mono = true }},
}, {
a= "[nom]",
i= {{ "+ByA" .. oxy .. "m", mono = true }},
d="[ins]",
ab="[ins]",
g= {{ "+o" .. oxy .. "s", mono = true }},
l="[gen]",
}, {
a= "[nom]",
i= {{ "+Bi" .. oxy .. "s", mono = true }},
d= {{ "+Bya" .. oxy .. "s", mono = true }},
ab="[dat]",
g= {{ "+A" .. oxy .. "m", mono = true }},
l= {{ "+su" .. oxy, mono = true }},
})
else -- polysyllabic stem, no accent on ending
if args.g ~= "n" then
decline(args, data, {
n="+s",
a="+am",
v="+s",
}, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
}, {
n="+as",
v="+as"
})
else
decline(args, data, {
n= "+",
a="[nom]",
v= "+"
}, {
n= "+I",
v= "+I",
}, { })
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a= "[nom]",
i= "+ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
a= "[nom]",
i= "+Bis",
d= "+Byas",
ab="[dat]",
g= "+Am",
l= "+su",
})
end
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit consonantal มูลการันต์ adjectives")
else
table.insert(data.categories, "Sanskrit consonantal มูลการันต์ nouns")
end
end
})
decl_data["[aiu]s"] = {
detect = make_detect("(.+)[aiu]" .. sa_utils.accent .. "?s$")
}
setmetatable(decl_data["[aiu]s"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([aiu])(" .. sa_utils.accent .. "?)s$")
data.decl_type = vowel .. "s-การันต์"
if (match(args.stem, "[^aAiK/\\]"..sa_utils.accent.."?y$") or match (args.stem, "jyA/?y$"))
and vowel == "a" then -- comparative
comp = "1"
else comp = "0" end
if comp == "1" and args.g ~= "n" then
if args.g == "m" then
decline(args, data, {
n="An",
a="AMsam",
v={"an", { "+", note = "Rigvedic"}},
}, {
n={"AMsO", {"AMsA", note = "Vedic"}},
v={"AMsO", {"AMsA", note = "Vedic"}},
}, {
n="AMsas",
a="+as",
v="AMsas",
})
else
error("The feminine of comparatives in -yas ends in -yasī.")
end
elseif args.g == "m" or args.g == "f" then
if vowel == "a" then
decline(args, data, {
n="A" .. oxy .. "s",
a={ "+am", { "A" .. oxy .. "m", note = "Vedic" } },
v="+",
}, nil, {
n={ "+as", { "A" .. oxy .. "s", note = "Vedic" } },
v={ "+as", { "A" .. oxy .. "s", note = "Vedic" } },
})
else
decline(args, data, {
n="+",
a="+am",
v={ "+",{ sa_utils.up_one_grade[vowel], note = "Vedic" } }, -- Wackernagel vol.III, p.292, §152c
}, nil, {
n="+as",
v="+as",
})
end
decline(args, data, nil, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
}, {
a="[nom]",
})
else
if args.adj == true and vowel == "a" and comp == "0"
and (match(args.stem, sa_utils.vowel .. ".*" .. sa_utils.vowel) or match(args.stem, "^sv")) then
-- compounds on -as, see Macdonell, p.226 + Whitney §418 a
decline(args, data, {
n={ "+", { "A" .. oxy .. "s", note = "Vedic"} },
}, {}, {})
else
decline(args, data, {
n="+",
}, {}, {})
end
decline(args, data, {
a="[nom]",
v="+",
}, {
n="+I",
v="+I",
}, {
n={{stem = args.stem .. sa_utils.lengthen[vowel] .. oxy .. "Ms", "i"}},
v={{stem = args.stem .. sa_utils.lengthen[vowel] .. "Ms", "i"}},
a="[nom]",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i= "+ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i= "+Bis",
d= "+Byas",
ab="[dat]",
g="+Am",
l= "+su",
})
if comp == "1" then
table.insert(data.categories, "Sanskrit yas-การันต์ adjectives")
elseif args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. vowel .. "s-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. vowel .. "s-การันต์ nouns")
end
end
})
decl_data["an"] = {
detect = make_detect("(.+)a" .. sa_utils.accent .. "?n$",
function(args) return args.g ~= "gneut" end) -- not gender-neutral numerals
}
setmetatable(decl_data["an"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "a(" .. sa_utils.accent .. "?)n$")
data.decl_type = "an-การันต์"
stem_final_n = true
if args.g == "n" then -- Wackernagel vol.III p.238 presupposes neuter pl. '-hāni' for '-han'
decline(args, data, {
n=args.han == true and {"a" .. oxy, {"a" .. oxy .. "m", note = "Vedic"}} or "a" .. oxy,
a="[nom]",
v={ "+", "a" },
}, {}, {
n={ "A" .. oxy .. "ni", {"a" .. oxy, note = "Vedic"}, {"A" .. oxy, note = "Vedic"}},
a="[nom]",
v={ "Ani", {"a", note = "Vedic"}, {"A", note = "Vedic"}},
})
if not match(args.stem, sa_utils.consonant .. "[NYRnmyrlv]$") or args.contract then
decline(args, data, nil, {
n={ "nI" .. oxy, "+I" },
v={ "nI", "+I" },
}, {})
else
decline(args, data, nil, {
n="+I",
v="+I",
}, {})
end
else
decline(args, data, {
n="A" .. oxy,
v="+",
})
if args.han or match(args.stem, "pUz$") or match(args.stem, "aryam$") then
decline(args, data, {
a="a" .. oxy .. "nam",
}, {
n={ "a" .. oxy .. "nO", { "a" .. oxy .. "nA", note = "Vedic" } },
v={ "anO", { "anA", note = "Vedic" } },
}, {
n="a" .. oxy .. "nas",
v="anas",
a=args.han == true and { "na" .. oxy .. "s", "a" .. oxy .. "nas"} or "na" .. oxy .. "s",
})
elseif match(args.stem, "ukz$") or match(args.stem, "yo/?z$") or match(args.stem, "vf/?z$")
or match(args.stem, "^tm$") then -- Whitney §426b; Wackernagel vol.III p.267
decline(args, data, {
a={"A" .. oxy .. "nam", {"a" .. oxy .. "nam", note = "Vedic" }},
}, {
n={ "A" .. oxy .. "nO", { "a" .. oxy .. "nO", note = "Vedic" }, { "a" .. oxy .. "nA", note = "Vedic" } },
v={ "AnO", { "anO", note = "Vedic" }, { "anA", note = "Vedic" } },
}, {
n={"A" .. oxy .. "nas", {"a" .. oxy .. "nas", note = "Vedic" }},
v={"Anas", {"anas", note = "Vedic" }},
a="na" .. oxy .. "s",
})
else
decline(args, data, {
a="A" .. oxy .. "nam",
}, {
n={ "A" .. oxy .. "nO", { "A" .. oxy .. "nA", note = "Vedic" } },
v={ "AnO", { "AnA", note = "Vedic" } },
}, {
n="A" .. oxy .. "nas",
v="Anas",
a="na" .. oxy .. "s",
})
end
end
if not match(args.stem, sa_utils.consonant .. "[NYRnmyrlv]$") or args.contract then
decline(args, data, {
i="nA" .. oxy,
d="ne" .. oxy,
ab="na" .. oxy .. "s",
g="[abl]",
l={ "ni" .. oxy, "+i", { "+" , note = "Vedic"} }, -- Whitney §425c for Vedic form
}, {
g="no" .. oxy .. "s",
}, {
g="nA" .. oxy .. "m",
})
else
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l= { "+i", { "+" , note = "Vedic"} }, -- Whitney §425c for Vedic form
}, {
g="+os",
}, {
g="+Am",
})
end
decline(args, data, nil, {
a="[nom]",
i="a" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="a" .. oxy .. "Bis",
d="a" .. oxy .. "Byas",
ab="[dat]",
l="a" .. oxy .. "su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit an-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit an-การันต์ nouns")
end
end
})
decl_data["in"] = {
detect = make_detect("(.+)i" .. sa_utils.accent .. "?n$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["in"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "i(" .. sa_utils.accent .. "?)n$")
data.decl_type = "in-การันต์"
stem_final_n = true
if args.g ~= "n" then
decline(args, data, {
n="I" .. oxy,
a="i" .. oxy .. "nam",
v="+",
}, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
}, {
n="+as",
a="[nom]",
v="+as",
})
else
decline(args, data, {
n="i" .. oxy,
a="[nom]",
v={ "i", "+" },
}, {
n="+I",
v="+I",
}, {
n="I" .. oxy .. "ni",
a="[nom]",
v="Ini",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i="i" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i="i" .. oxy .. "Bis",
d="i" .. oxy .. "Byas",
ab="[dat]",
g="+Am",
l="i" .. oxy .. "zu",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit in-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit in-การันต์ nouns")
end
end
})
decl_data["at"] = {
detect = function(args)
if (make_detect("(.+)a" .. sa_utils.accent .. "?t$")(args)
or (make_detect("(.+)A" .. sa_utils.accent .. "?t$")(args) and args.participle == true)) -- participles like 'yā́t'
and (args.g == "m" or args.g == "n") then
return true
else
return false
end
end
}
setmetatable(decl_data["at"], {
__call = function(self, args, data)
local cons, vow, oxy = match(args.lemma, "([mv]?)([aA])(" .. sa_utils.accent .. "?)t$")
-- for present participles
if args.lemma:find("[vm]a/?t$") == nil or args.participle == true then
data.decl_type = "at-การันต์"
if args.at_nom_s == true then -- participles like 'júhvat'
if args.g ~= "n" then
decline(args, data, {
n="a" .. oxy .. "t",
a="a" .. oxy .. "tam",
v="at",
}, {
n={ "a" .. oxy .. "tO", { "a" .. oxy .. "tA", note = "Vedic"} },
v={ "atO", { "atA", note = "Vedic"} },
}, {
n="a" .. oxy .. "tas",
a="a" .. oxy .. "tas",
v="atas",
})
else
decline(args, data, {
n="a" .. oxy .. "t",
a="[nom]",
v="at",
}, {
n="a" .. oxy .. "tI",
v="atI",
}, {
n="a" .. oxy .. "ti",
a="[nom]",
v="ati",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
l="+i",
}, {
g="+os",
}, {
g="+Am",
})
else
if args.g ~= "n" then
decline(args, data, {
n= vow .. oxy .. "n",
a= vow .. oxy .. "ntam",
v= vow .. "n",
}, {
n={ vow .. oxy .. "ntO", { vow .. oxy .. "ntA", note = "Vedic"} },
v={ vow .. "ntO", { vow .. "ntA", note = "Vedic"} },
}, {
n= vow .. oxy .. "ntas",
a= vow .. "ta" .. oxy .. "s",
v= vow .. "ntas",
})
else
if not args.participle_n_nom_d and not args.nom_d then
error('Please indicate nominative dual (identical to feminine stem) with nom_d')
else
if args.nom_d then
local s = mw.text.split(args.nom_d, ",")
args.participle_n_nom_d = s[1]
args.participle_n_nom_d2 = s[2]
end
-- neuter nom.du. taken from feminine, see Whitney §443a (though maybe artificial: §447b)
args.participle_n_nom_d = IAST_to_SLP.tr(args.participle_n_nom_d)
if args.participle_n_nom_d2 then
args.participle_n_nom_d2 = IAST_to_SLP.tr(args.participle_n_nom_d2)
decline(args, data, {}, {
n= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}},
v= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}},
}, {})
else
decline(args, data, {}, {
n= {{stem = args.participle_n_nom_d, ""}},
v= {{stem = args.participle_n_nom_d, ""}},
}, {})
end
if vow == "a" then
decline(args, data, {}, {}, {
n= {"a" .. oxy .. "nti", {"A" .. oxy .. "nti", note = "Rigvedic"}}, -- see Wackernagel III p 262
a="[nom]",
v= {"anti", {"Anti", note = "Rigvedic"}},
})
else
decline(args, data, {}, {}, {
n= vow .. oxy .. "nti",
a="[nom]",
v= vow .. "nti",
})
end
end
decline(args, data, {
n= vow .. oxy .. "t",
a="[nom]",
v= vow .. "t",
}, {}, {})
end
decline(args, data, {
i= vow .. "tA" .. oxy,
d= vow .. "te" .. oxy,
ab= vow .. "ta" .. oxy .. "s",
l= vow .. "ti" .. oxy,
}, {
g= vow .. "to" .. oxy .. "s",
}, {
g= vow .. "tA" .. oxy .. "m",
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i= vow .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i= vow .. oxy .. "dBis",
d= vow .. oxy .. "dByas",
ab="[dat]",
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit at-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit at-การันต์ nouns")
end
else -- for nouns suffixed with -vat/-mat
data.decl_type = cons .. "at-การันต์"
if args.g ~= "n" then
decline(args, data, {
n="A" .. oxy .. "n",
a="a" .. oxy .. "ntam",
v={ "an", { "as", note = "Rigvedic"} },
}, {
n={ "a" .. oxy .. "ntO", { "a" .. oxy .. "ntA", note = "Vedic"} },
v={ "antO", { "antA", note = "Vedic"} },
}, {
n="a" .. oxy .. "ntas",
a="a" .. oxy .. "tas",
v="antas",
})
else
decline(args, data, {
n="a" .. oxy .. "t",
a="[nom]",
v="at",
}, {
n="+I",
v="+I",
}, {
n={{"a" .. oxy .. "nti"}, {"A" .. oxy .. "nti", note = "Rigvedic"}}, -- see Wackernagel III p 258-9
a="[nom]",
v={{"anti"}, {"Anti", note = "Rigvedic"}},
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i="a" .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i="a" .. oxy .. "dBis",
d="a" .. oxy .. "dByas",
ab="[dat]",
g="+Am",
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. cons .. "at-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. cons .. "at-การันต์ nouns")
end
end
end
})
decl_data["añc"] = {
detect = make_detect("(.+[aA]" .. sa_utils.accent .. "?Yc)$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["añc"], {
__call = function(self, args, data)
local cons, vowel, oxy = match(args.lemma, "([yv]?)([aA])(" .. sa_utils.accent .. "?)Yc$")
data.decl_type = "añc-การันต์"
-- make stem for 'middle' cases
args.stem = args.stem:gsub("Yc$", "c")
if args.g == "m" then
decline(args, data, {
n= "+", -- args.lemma
a="+am",
v= "+",
}, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
}, {
n="+as",
v="+as",
})
else -- neuter
decline(args, data, {
n= "", -- args.stem
v= "",
a="[nom]"
}, {}, {
n="+i",
v="+i",
a="[nom]"
})
end
decline(args, data, {}, {
i= "ByAm",
}, {
i= "Bis",
d= "Byas",
l= "su",
})
-- changing stem to weakest form
if vowel == "A" then
-- do nothing
elseif match(args.stem, "tirya/?c$") then -- specifically for tiryañc
args.stem = args.stem:gsub("ya(/?)c$", "a%1Sc")
elseif cons ~= "" then
args.stem = args.stem:gsub("([yv])a([/\\]?)c$",
function(cons, acc) return (cons == "y" and "I" or "U") .. (acc == "" and "" or "/") .. "c" end)
elseif match(args.stem, "dac$") then
args.stem = args.stem:gsub("ac$", "Ic")
else
error("Not supported")
end
if vowel == "A" or oxy == "" then
if args.g == "m" then
decline(args, data, nil, nil, {
a="as",
})
else -- neuter
decline(args, data, nil, {
n="I",
v="I",
})
end
decline(args, data, {
i="A",
d="e",
ab="as",
l="i",
}, {
g="os",
}, {
g="Am",
})
else -- oxytone accent, showing two possible accentuations (Whitney §410)
if args.g == "m" then
decline(args, data, nil, nil, { a={"as", {"a" .. oxy .. "s", note = "Rigvedic", mono = true}} })
else
decline(args, data, nil, {
n= {"I", {"I" .. oxy, note = "Rigvedic", mono = true}},
v= "I",
})
end
decline(args, data, {
i= {"A", {"A" .. oxy, note = "Rigvedic", mono = true}},
d= {"e", {"e" .. oxy, note = "Rigvedic", mono = true}},
ab= {"as", {"a" .. oxy .. "s", note = "Rigvedic", mono = true}},
l= {"i", {"i" .. oxy, note = "Rigvedic", mono = true}},
}, {
g= {"os", {"o" .. oxy .. "s", note = "Rigvedic", mono = true}},
}, {
g= {"Am", {"A" .. oxy .. "m", note = "Rigvedic", mono = true}},
})
end
decline(args, data, {
g="[abl]"
}, {
a="[nom]",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
ab="[dat]",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit añc-การันต์ adjectives")
end
end
})
decl_data["o"] = {
detect = make_detect("(.+)o" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "f" end)
}
setmetatable(decl_data["o"], { -- 'gó'
__call = function(self, args, data)
local oxy = match(args.lemma, "o(" .. sa_utils.accent .. "?)$")
data.decl_type = "o-การันต์"
decline(args, data, {
n="O" .. oxy .. "s",
v="Os",
a="A" .. oxy .. "m",
i="+A",
d="+e",
ab="o" .. oxy .. "s",
g="[abl]",
l="+i",
}, {
n={ "A" .. oxy .. "vO", { "A" .. oxy .. "vA", note = "Vedic" } },
v={ "AvO", { "AvA", note = "Vedic" } },
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
g= "+os",
l="[gen]",
}, {
n="A" .. oxy .. "vas",
a={"A" .. oxy .. "s", { "A" .. oxy .. "vas", note = "rare" } },
v="Avas",
i="+Bis",
d="+Byas",
ab="[dat]",
g={ "+Am", { "+nAm", note = "Vedic" } },
l="+su",
})
table.insert(data.categories, "Sanskrit o-การันต์ nouns")
end
})
decl_data["O"] = {
detect = make_detect("(.+)O" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "f" end)
}
setmetatable(decl_data["O"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "O(" .. sa_utils.accent .. "?)$")
data.decl_type = "au-การันต์"
decline(args, data, {
n="+s",
v="+s",
a="+am",
i= {{ "+A" .. oxy, mono = true }},
d= {{ "+e" .. oxy, mono = true }},
ab={{ "+a" .. oxy .. "s", mono = true }},
g="[abl]",
l= {{ "+i" .. oxy, mono = true }},
}, {
n={ "+O", { "+A", note = "Vedic" } },
v={ "+O", { "+A", note = "Vedic" } },
a="[nom]",
i= {{"+ByA" .. oxy .. "m", mono = true }},
d="[ins]",
ab="[ins]",
g= {{ "+o" .. oxy .. "s", mono = true }},
l="[gen]",
}, {
n="+as",
v="+as",
a="[nom]",
i= {{"+Bi" .. oxy .. "s", mono = true }},
d= {{"+Bya" .. oxy .. "s", mono = true }},
ab="[dat]",
g= {{ "+A" .. oxy .. "m", mono = true }},
l= {{ "+su" .. oxy, mono = true }},
})
table.insert(data.categories, "Sanskrit au-การันต์ nouns")
end
})
decl_data["vāṃs"] = {
detect = make_detect("(.+)vA" .. sa_utils.accent .. "?Ms$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["vāṃs"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "vA(" .. sa_utils.accent .. "?)Ms$")
data.decl_type = "vāṃs-การันต์"
local weak_stem
if match(args.stem, "baBU$") or match(args.stem, "u$") then
weak_stem = args.stem .. "v"
elseif match(args.stem, "U$") then
weak_stem = args.stem:gsub("U$", "uv")
elseif match(args.stem, "pIpi$") or match(args.stem, "dI[dD]i$") then
weak_stem = args.stem
-- the second 'i' of 'śiśrivāṃs' etc. is part of the root
elseif match(args.stem, "[aAIuUfFxeEoO]" .. sa_utils.accent .."?M?" .. sa_utils.consonant .. "+i$") or match(args.stem, "vi[Sd]i$") then
weak_stem = args.stem:gsub("i$", "")
else
weak_stem = args.stem
end
if args.g == "m" then
decline(args, data, {
n= "vA" .. oxy .. "n",
a= "vA" .. oxy .. "Msam",
v={ "van", { "vas", note = "Rigvedic"} },
}, {
n= "vA" .. oxy .. "MsO",
a="[nom]",
v= "vAMsO",
}, {
n= "vA" .. oxy .. "Msas",
a={{stem = weak_stem, "u" .. oxy .. "zas"}},
v= "vAMsas",
})
else
decline(args, data, {
n= "va" .. oxy .. "t",
a="[nom]",
v= "vat"
}, {
n={{stem = weak_stem, "u" .. oxy .. "zI"}},
a="[nom]",
v={{stem = weak_stem, "uzI"}},
}, {
n= "vA" .. oxy .. "MsI",
a="[nom]",
v= "vAMsI"
})
end
decline(args, data, {
i={{stem = weak_stem, "u" .. oxy .. "zA"}},
d={{stem = weak_stem, "u" .. oxy .. "ze"}},
ab={{stem = weak_stem, "u" .. oxy .. "zas"}},
g="[abl]",
l={{stem = weak_stem, "u" .. oxy .. "zi"}},
}, {
i= "va" .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
g={{stem = weak_stem, "u" .. oxy .. "zos"}},
l="[gen]"
}, {
i= "va" .. oxy .. "dBis",
d= "va" .. oxy .. "dByas",
ab="[dat]",
g={{stem = weak_stem, "u" .. oxy .. "zAm"}},
l= "va" .. oxy .. "tsu"
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit vāṃs-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit vāṃs-การันต์ nouns")
end
end
})
return decl_data
jhx7q8vunro2tipbzl7x0h1n9qs82au
5724856
5724854
2026-06-16T05:11:11Z
OctraBot
3198
5724856
Scribunto
text/plain
local decl_data = {}
local sa_utils = require("Module:sa-utilities")
local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST")
local IAST_to_SLP = require("Module:sa-utilities/translit/IAST-to-SLP1")
local match = string.match -- sufficient for SLP1
local umatch = mw.ustring.match
-- Make a detection function for ARGS that fetches the stem according to MATCH_RE (which is matched against
-- args.lemma and should have the stem in the first capture). ADDL_CONDITION is an optional function of one
-- argument (ARGS) that must return true for the detection to happen.
local function make_detect(match_re, addl_condition)
return function(args)
if addl_condition and not addl_condition(args) then
return false
end
local stem = match(args.lemma, match_re)
if stem then
args.stem = stem
return true
else
return false
end
end
end
-- Construct all or part of a given noun's declension. Each of SG, DU and PL is a table, whose keys are
-- as follows:
--
-- n = nominative
-- a = accusative
-- v = vocative
-- i = instrumental
-- d = dative
-- ab = ablative
-- g = genitive
-- l = locative
--
-- The corresponding value is one of the following:
-- 1. a "copy spec" such as "[ins]", meaning to copy from the instrumental of the same number;
-- 2. a single string (specifying an ending); or
-- 3. a list of specs, where a spec is either a string (an ending) or a table of the form
-- {"ENDING", stem = "STEM", mono = TRUE/FALSE, note = "NOTE"}. The latter format lets you explicitly specify what
-- the stem is, whether the form is monosyllabic, and what the footnote is. All named keys are optional.
--
-- In forms 2 and 3, if the ending begins with +, the stem defaults to args.lemma; otherwise it defaults to args.stem.
local function decline(args, data, sg, du, pl)
local cases = {n="nom", a="acc", v="voc", i="ins", d="dat", ab="abl", g="gen", l="loc"}
local function process_number(endings, tag)
if not endings then
return
end
for case, es in pairs(endings) do
if type(es) == "string" and es:find("^%[") then
-- copy from another case; skip and handle later
else
if type(es) == "string" then
es = {es}
end
local forms = {}
for i, e in ipairs(es) do
local stem, mono, accent_override, note
if type(e) == "table" then
stem = e.stem
mono = e.mono
accent_override = e.accent_override
note = e.note
e = e[1]
end
-- reduce Vedic forms to zero in case of novedic parameter
if args.novedic == true and note and (match(note, "[Vv]edic$") or umatch(note, "Br[aā]hma[nṇ]a")) then
stem = ""; e = ""; note = ""
elseif args.norigvedic == true and note and match(note, "Rigvedic$") then
stem = ""; e = ""; note = ""
else
if e:find("^%+") then
if stem then
error("Internal error: Can't use + in an ending when stem is explicitly given")
end
e = e:gsub("^%+", "")
stem = args.lemma
elseif not stem then
stem = args.stem
end
forms[i] = sa_utils.internal_sandhi({
stem = stem, ending = e, has_accent = args.has_accent, recessive = case == "v", no_syncope = no_syncope,
mono = mono, root = root, ambig_final = args.ambig_final, diaspirate = args.diaspirate,
accent_override = accent_override, han = args.han, stem_final_n = stem_final_n, voc_svar = args.voc_svar,
})
if note and note~= "" then
forms["note" .. i] = note
end
end
end
data.forms[cases[case] .. "_" .. tag] = forms
end
end
-- Now handle cases copied from another.
for case, es in pairs(endings) do
if type(es) == "string" and es:find("^%[") then
-- copy from another case; skip and handle later
local other_case = es:match("^%[(.*)%]$")
if not other_case then
error("Internal error: Unrecognized copy case spec " .. es)
end
local other_slot = other_case .. "_" .. tag
local value = data.forms[other_slot]
if not value then
error("Internal error: Slot '" .. other_slot .. "' to copy from is empty")
end
local this_slot = cases[case] .. "_" .. tag
if data.forms[this_slot] then
error("Internal error: A value already exists for slot '" .. this_slot ..
"' when copying from '" .. other_slot .. "'")
end
data.forms[cases[case] .. "_" .. tag] = value
end
end
end
process_number(sg, "s")
process_number(du, "d")
process_number(pl, "p")
end
decl_data["numeral"] = {
detect = make_detect("(.+)a/?[nz]?$",
function(args) return args.g == "gneut" end)
}
setmetatable(decl_data["numeral"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(/?)[nz]?$")
local acc = match(args.lemma, "(/?)[^/]*$")
data.decl_type = "numeral"
if match(args.lemma, "a/?z$") then -- ṣaṣ
decline(args, data, {}, {}, {
n="+",
a="[nom]",
v="[nom]",
i="aqBi" .. oxy .. "s",
d="aqBya" .. oxy .. "s",
ab="[dat]",
g="aRRA" .. oxy .. "m",
l="awsu" .. oxy,
})
else -- pañca(n), etc.
decline(args, data, {}, {}, {
n="a" .. oxy,
a="[nom]",
v="a",
i={{"a" .. acc .. "Bis", accent_override = true}},
d={{"a" .. acc .. "Byas", accent_override = true}},
ab="[dat]",
g={{"AnA" .. acc .. "m", accent_override = true}},
l={{"a" .. acc .. "su", accent_override = true}},
})
end
-- no categorisation?
end
})
decl_data["a"] = {
detect = make_detect("(.+)a" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["a"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
if args.pronominal then
data.decl_type = "หน่วยสรรพนาม a-การันต์"
else
data.decl_type = "a-การันต์"
end
if args.g == "m" then
decline(args, data, {
n="a" .. oxy .. "s",
a="a" .. oxy .. "m",
v="a"
}, {
n={ "O" .. oxy, { "A" .. oxy, note = "พระเวท" } },
v={ "O", { "A", note = "พระเวท" } }
}, {
a="A" .. oxy .. "n",
})
if args.pronominal then
decline(args, data, {}, {}, {
n="e" .. oxy,
v="e"
})
else
decline(args, data, {}, {}, {
n={"A" .. oxy .. "s", {"A" .. oxy .. "sas", note="พระเวท"}},
v={"As", {"Asas", note="พระเวท"}}
})
end
else
decline(args, data, {
n="a" .. oxy .. "m",
a="[nom]",
v="a"
}, {
n="e" .. oxy,
v="e"
}, {
n={"A" .. oxy .. "ni", {"A" .. oxy, note="พระเวท"}},
a="[nom]",
v={"Ani", {"A", note="พระเวท"}}
})
end
if args.pronominal then
decline(args, data, {
d="a" .. oxy .. "smE",
ab="a" .. oxy .. "smAt",
l="a" .. oxy .. "smin"
}, {}, {
g="e" .. oxy .. "zAm"
})
else
decline(args, data, {
d="A" .. oxy .. "ya",
ab="A" .. oxy .. "t",
l="e" .. oxy
}, {}, {
g="A" .. oxy .. "nAm"
})
end
decline(args, data, {
-- For nouns on -tva(na), RV has only three instr.sg. with -ena (1.110.4, 8.18.13, 10.37.9); see Lanman p.335f. for forms on -ā.
-- This avoidance is phonetically perfectly understandable for -tvanā instead of -tvanena, and with abstract nouns like this
-- (predominantly used in the singular), there wouldn't be much cause for confusion with the nom./acc. plural.
-- (detection of oxytone accent to avoid gerundives on -tva)
i= match(args.lemma, "tva?n?a/$") and {"e" .. oxy .. "na", {"A" .. oxy, note = "พระเวท"}} or "e" .. oxy .. "na",
g="a" .. oxy .. "sya"
}, {
a="[nom]",
i="A" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
-- see Wackernagel III, p.98-99, §48a
g= match(args.stem, ".y$") and {"a" .. oxy .. "yos", {"o" .. oxy .. "s", note = "พระเวท"}} or "a" .. oxy .. "yos",
l="[gen]"
}, {
i={ "E" .. oxy .. "s", { "e" .. oxy .. "Bis", note = "พระเวท" } },
d="e" .. oxy .. "Byas",
ab="[dat]",
l="e" .. oxy .. "zu"
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit a-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit a-การันต์ nouns")
end
end
})
decl_data["iu"] = {
detect = make_detect("(.+)[iu]" .. sa_utils.accent .. "?$")
}
setmetatable(decl_data["iu"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([iu])(" .. sa_utils.accent .. "?)$")
data.decl_type = vowel .. "-การันต์"
if match(args.lemma, "[sz]a/?Ki/$") and not (args.decl and match(args.decl, "i")) then
-- in classical possibly regular in compounds (see Wackernagel vol.III p.141), for which use 'decl=i'
decline(args, data, {
n="A" .. oxy,
a="A" .. oxy .. "yam",
i={{stem = args.stem .. vowel, "A" .. oxy }},
d={{stem = args.stem .. vowel, "e" .. oxy }},
ab={{stem = args.stem .. vowel, "u" .. oxy .. "r" }},
l={{stem = args.stem .. vowel, "O" .. oxy }}, -- Wackernagel suggests older *sákhayi (ibid.)
v="e",
}, {
n={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "พระเวท"}},
v={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "พระเวท"}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s" }},
}, {
n="A" .. oxy .. "yas",
v="Ayas",
a="I" .. oxy .. "n",
})
elseif args.g == "m" then
if vowel == "i" then
decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "y", "e" }},
l={ "O" .. oxy, { "A" .. oxy, note = "พระเวท"}}, -- Whitney §336f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u
decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "v", "e" }},
l="O" .. oxy,
}, {}, {})
else decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "v", "e" }, {stem = args.stem .. "v", "e" .. oxy, note = "พระเวท"}},
l="O" .. oxy,
}, {}, {})
end
if match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
decline(args, data, {
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}},
}, {}, {})
else
decline(args, data, {
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "พระเวท"}},
}, {}, {})
end
decline(args, data, {
n="+s",
a="+m",
i={ "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "พระเวท" } },
v={{stem= args.stem .. sa_utils.up_one_grade[vowel], ""}},
}, {
n={{stem = args.stem .. sa_utils.lengthen[vowel..oxy], ""}},
v={{stem = args.stem .. sa_utils.lengthen[vowel], ""}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}},
a={{stem = args.stem ..sa_utils.lengthen[vowel..oxy], "n"}},
v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}},
})
elseif args.g == "f" then
if vowel == "i" then
decline(args, data, {
i={{stem = args.stem .. vowel, "A" .. oxy}, {"I" .. oxy, note = "พระเวท"}}, -- Whitney §336c
l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" }, { "A" .. oxy, note = "พระเวท"} },
}, {}, {})
else
decline(args, data, {
i={{stem = args.stem .. vowel, "A" .. oxy }},
l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" } },
}, {}, {})
end
decline(args, data, {
n="+s",
a="+m",
-- the Rigvedic dat.sg. on -ī (mostly ūtī́) seems too rare to extrapolate to every stem (see also Macdonell p.282)
d={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "e"}, {stem = args.stem .. vowel, "E" .. oxy } },
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "A" .. oxy .. "s" },
{stem = args.stem .. vowel, "E" .. oxy, note = "พราหมณะ"} },
v=sa_utils.up_one_grade[vowel],
}, {
n=sa_utils.lengthen[vowel..oxy],
v=sa_utils.lengthen[vowel],
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}},
a=sa_utils.lengthen[vowel..oxy] .. "s",
v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}},
})
else -- neuter
if args.adj == true then -- for difference with nouns see Whitney §344
if vowel == "i" then
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "y", "e"}},
ab={ "+nas", {stem = args.stem .. "e" .. oxy, "s"}},
l={ "+ni", "O" .. oxy, {"A" .. oxy, note = "พระเวท"}}, -- Whitney §336f + §340f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u; similar for abl./gen. -vas (vs. -os)
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s"}},
l={ "+ni", "O" .. oxy},
}, {}, {})
else decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e"}, {stem = args.stem .. "v", "e" .. oxy, note = "พระเวท"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "พระเวท"}},
l={ "+ni", "O" .. oxy},
}, {}, {})
end
decline(args, data, {}, {
g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s" }},
}, {})
else -- nouns
if vowel == "i" then
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "y", "e", note = "พระเวท" }},
ab={ "+nas", {stem = args.stem .. "e" .. oxy, "s", note = "พระเวท"}},
l={ "+ni", {"O" .. oxy, note = "พระเวท"}, {"A" .. oxy, note = "พระเวท"}}, -- Whitney §336f + §340f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u; similar for abl./gen. -vas (vs. -os)
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "พระเวท" }},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "พระเวท"}},
l={ "+ni", {"O" .. oxy, note = "พระเวท"}},
}, {}, {})
else
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "พระเวท" },
{stem = args.stem .. "v", "e" .. oxy, note = "พระเวท"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "พระเวท"},
{stem = args.stem .. vowel, "a" .. oxy .. "s", note = "พระเวท"}},
l={ "+ni", {"O" .. oxy, note = "พระเวท"}},
}, {}, {})
end
decline(args, data, {}, {
g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s", note = "พระเวท" }},
}, {})
end
decline(args, data, {
n="+",
a="[nom]",
i={ "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "พระเวท" }},
v={ "+", {stem= args.stem .. sa_utils.up_one_grade[vowel], ""}},
}, {
n={ "+nI", {stem = args.stem .. vowel, "I" .. oxy, note = "พระเวท" }},
v={ "+nI", {stem = args.stem .. vowel, "I", note = "พระเวท" }},
}, {
n={{ stem = args.stem .. sa_utils.lengthen[vowel .. oxy], "ni" }, { "+", note = "พระเวท"},
{ stem = args.stem .. sa_utils.lengthen[vowel..oxy], "", note = "พระเวท"}},
a="[nom]",
v={{ stem = args.stem .. sa_utils.lengthen[vowel], "ni" }, { "+", note = "พระเวท"},
{ stem = args.stem .. sa_utils.lengthen[vowel], "", note = "พระเวท"}},
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
g={{ stem = args.stem .. sa_utils.lengthen[vowel], "nA" .. (oxy ~= "" and "/" or "") .. "m"}},
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. vowel .. "-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. vowel .. "-การันต์ nouns")
end
end
})
decl_data["A"] = {
detect = function(args)
if make_detect("(.+)A" .. sa_utils.accent .. "?$")(args) then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["A"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
if args.g == "n" then
-- It seems better not to base a neuter declension on the masculine nominatives on -ās accompanying neuter nouns.
-- See Whitney §367b and Wackernagel vol.III p.129
error("The neuter of radical stems in -ā ends in -a.")
end
if args.pronominal then
data.decl_type = "หน่วยสรรพนาม ā-การันต์"
else
data.decl_type = "ā-การันต์"
end
if not (args.root or args.true_mono) or (args.true_mono and args.root == false) then -- derived stem
if args.g == "m" then
error("Add 'root=1' in case this is a root noun or adjective.")
else
table.insert(data.categories, "Sanskrit ā-การันต์ nouns")
end
if args.pronominal then
decline(args, data, {
d="a" .. oxy .. "syE",
ab={"a" .. oxy .. "syAs", {"a" .. oxy .. "syE", note = "พราหมณะ"}},
l="a" .. oxy .. "syAm"
}, {}, {
g="+sAm"
})
else
decline(args, data, {
d="+yE",
ab={"+yAs", {"+yE", note = "พราหมณะ"}},
l="+yAm"
}, {}, {
g="+nAm"
})
end
decline(args, data, {
n="+",
i={ "a" .. oxy .. "yA", { "+", note = "พระเวท" } },
v="e",
}, {
n="e" .. oxy,
g="a" .. oxy .. "yos",
v="e",
}, {
a="+s",
})
else
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit มูลการันต์ adjectives on -ā")
else
table.insert(data.categories, "Sanskrit มูลการันต์ nouns on -ā")
end
if args.g == "m" then
data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by a-stem declension."}
else
data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by regular ā-stem declension."}
end
decline(args, data, {
n="+s",
i="+",
d="e" .. oxy,
ab="a" .. oxy .. "s",
l="i" .. oxy,
v="+s",
}, {
n={ "O" .. oxy, { "A" .. oxy, note = "พระเวท" } },
g="o" .. oxy .. "s",
v={ "O", { "A", note = "พระเวท" } }
}, {
a={ "+s", { "a" .. oxy .. "s", note = "Perhaps" } },
g={ "+nAm", { "+Am", note = "Perhaps" } },
})
end
decline(args, data, {
a="+m",
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
n="+s",
i="+Bis",
d="+Byas",
ab="[dat]",
l="+su",
v="+s",
})
end
})
decl_data["IU"] = {
detect = function(args)
if make_detect("(.+)[IU]" .. sa_utils.accent .. "?$")(args) then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["IU"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([IU])(" .. sa_utils.accent .. "?)$")
data.decl_type = SLP_to_IAST.tr(vowel) .. "-การันต์"
if args.g == "n" then
-- it seems better to mention the one or two Vedic forms that could be interpreted
-- as coming from a neuter ī-stem (see Whitney §367b) separately
error("The neuter of radical stems in -ī/ū ends in -i/u.")
end
if not (args.root or args.true_mono) or (args.true_mono and args.root == false) or args.han then -- derived stem
if args.vrki then -- with original vṛkī-declension (Whitney §355 ff.), given as older forms of later classical declension
if vowel == "U" then
error()
elseif args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ī-การันต์ adjectives with original vṛkī́-declension")
else
table.insert(data.categories, "Sanskrit ī-การันต์ nouns with original vṛkī́-declension")
end
data.general_notes = {"This stem originally had ''vṛkī́''-declension."}
decline(args, data, {
n={"+", {"+s", note = "พระเวท"}},
a={"+m", {"+am", note = "พระเวท"}},
i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "พระเวท"}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "พระเวท"}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "พระเวท"},
{stem = args.stem .. vowel, "E" .. oxy, note = "พราหมณะ"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+", note = "พระเวท"}}, -- Wackernagel III, §86c, p.170
}, {
n={"+O", {"+A", note = "พระเวท"}},
v={"+O", {"+A", note = "พระเวท"}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "พระเวท"}},
}, {
n="+as",
v="+as",
a={"+s", {"+as", note = "พระเวท"}},
g="+nAm",
})
elseif vowel == "I" then -- devī-declension
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ī-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit ī-การันต์ nouns")
end
decline(args,data, {
n="+",
a="+m",
i={{stem = args.stem .. vowel, "A" .. oxy}},
d={{stem = args.stem .. vowel, "E" .. oxy}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {stem = args.stem .. vowel, "E" .. oxy, note = "พราหมณะ"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}},
}, {
n={ "+O", { "+", note = "พระเวท" } },
v={ "+O", { "+", note = "พระเวท" } },
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={ "+as", { "+s", note = "พระเวท" } },
v={ "+as", { "+s", note = "พระเวท" } },
a="+s",
g= oxy == "" and "+nAm" or {"+nAm", { stem = args.stem .. vowel, "nA" .. oxy .. "m", note = "Rigvedic"} }, -- Whitney §319a
})
else -- ū-stems, with Whitney's declension at §356a given as older forms of §364, see Wackernagel vol.III p.189
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ū-การันต์ adjectives") -- probably only bahuvrihis like 'sarvatanū'
else
table.insert(data.categories, "Sanskrit ū-การันต์ nouns")
end
if match(args.stem, "y$") or match(args.stem, "agr$")
or match(args.stem, "kadr$") or match(args.stem, "bIBats") then -- with Vedic -úv-, see Macdonell p.290 §384a
decline(args,data, {
a={"+m", {"+am", note = "พระเวท", mono = true}},
i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "พระเวท", mono = true}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "พระเวท", mono = true}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "พระเวท", mono = true},
{stem = args.stem .. vowel, "E" .. oxy, note = "พราหมณะ"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "พระเวท", mono = true},
{"+", note = "พระเวท"}},
}, {
n={"+O", {"+A", note = "พระเวท", mono = true}},
v={"+O", {"+A", note = "พระเวท", mono = true}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "พระเวท", mono = true}},
}, {
n={"+as", {"+as", note = "พระเวท", mono = true}},
v={"+as", {"+as", note = "พระเวท", mono = true}},
a={"+s", {"+as", note = "พระเวท", mono = true}},
})
else
decline(args,data, {
a={"+m", {"+am", note = "พระเวท"}},
i= oxy == "" and "+A" or {{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "พระเวท"}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "พระเวท"}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "พระเวท"},
{stem = args.stem .. vowel, "E" .. oxy, note = "พราหมณะ"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "พระเวท"},
{"+", note = "พระเวท"}}, -- Wackernagel III, §97b, p.188
}, {
n={"+O", {"+A", note = "พระเวท"}}, -- duals on -ū for ū-stems do not occur
v={"+O", {"+A", note = "พระเวท"}},
g= oxy == "" and "+os" or {{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "พระเวท"}},
}, {
n="+as", -- RV 4.41.8 has 'yuvayū́s', but it seems better to simply give this at the relevant lemma
v="+as",
a={"+s", {"+as", note = "พระเวท"}},
})
end
decline(args,data, {
n="+s",
}, {}, {
g="+nAm",
})
end
decline(args, data, {
g="[abl]",
v=sa_utils.shorten[vowel],
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
l="+su",
})
else
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit มูลการันต์ adjectives on -" .. SLP_to_IAST.tr(vowel))
else
table.insert(data.categories, "Sanskrit มูลการันต์ nouns on -" .. SLP_to_IAST.tr(vowel))
end
if args.true_mono then -- rout nouns, Whitney §351
no_syncope = true
if args.g == "f" then -- see Wackernagel vol.III p.181
decline(args, data, {
d={{ "+e" .. oxy, mono = true }, { "+E" .. oxy, mono = true, note = "Later Sanskrit" } },
ab={{ "+a" .. oxy .. "s", mono = true }, { "+A" .. oxy .. "s", mono = true, note = "Later Sanskrit" } },
l={{ "+i" .. oxy, mono = true }, { "+A" .. oxy .. "m", mono = true, note = "Later Sanskrit" } },
})
else
decline(args, data, {
d={{ "+e" .. oxy, mono = true } },
ab={{ "+a" .. oxy .. "s", mono = true } },
l={{ "+i" .. oxy, mono = true } },
})
end
decline(args, data, {
i={{ "+A" .. oxy, mono = true}},
}, {
i={{"+ByA" .. oxy .. "m", mono = true}},
g={{"+o" .. oxy .. "s", mono = true}},
}, {
i={{"+Bi" .. oxy .. "s", mono = true}},
d={{"+Bya" .. oxy .. "s", mono = true}},
g={{"+A" .. oxy .. "m", mono = true }, { "+nA" .. oxy .. "m", mono = true } },
l={{"+su" .. oxy, mono = true}},
})
else -- root terms in compounds, Whitney §352; I'd suggest to give two tables when both contracted and non-contracted forms occur
-- see Wackernagel III §91a (p.179) for ī, and §100a + §100eα (p.192-3) for ū; Macdonell: p.268 + 288
-- Taking as default that ū-stems with accent (rule of thumb for Vedic terms) are not contracted. To be overrided with 'contract=1'
if args.contract == false or (args.contract ~= true and (match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$")
or vowel == "U" and (match(args.lemma, sa_utils.accent) or match(args.stem, "B$") or match(args.stem, "jo/?g$"))
or vowel == "I" and (match(args.stem, "avadyaB$") or (match(args.stem, "D$") and match(args.stem, sa_utils.accent))))) then
no_syncope = true -- -Ciy-/-Cuv- when followed by vowel
decline(args, data, {
l= args.g == "f" and {"+i", {"+Am", note = "Later Sanskrit"}} or "+i",
})
else
decline(args, data, {
l= args.g == "f" and {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }, {"+Am", note = "Later Sanskrit"}}
or {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }},
})
end
if args.g == "f" then -- see Wackernagel vol.III p.181
decline(args, data, {
d={ "+e", { "+E", note = "Later Sanskrit" } },
ab={ "+as", { "+As", note = "Later Sanskrit" } },
})
else
decline(args, data, {
d= "+e",
ab= "+as",
})
end
decline(args, data, {
i= "+A",
}, {
i="+ByAm",
g= "+os",
}, {
i="+Bis",
d="+Byas",
g= {"+Am", "+nAm"},
l="+su",
})
end
decline(args, data, {
n= "+s",
v= "+s",
a= "+am",
g="[abl]",
}, {
n= { "+O", { "+A", note = "พระเวท"}},
v= { "+O", { "+A", note = "พระเวท"}},
a="[nom]",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
n= "+as",
v= "+as",
a="[nom]",
ab="[dat]",
})
end
end
})
decl_data["f"] = { -- for nouns in ṛ
detect = make_detect("(.+)f" .. sa_utils.accent .. "?$")
}
setmetatable(decl_data["f"], { -- for nouns in ṛ
__call = function(self, args, data)
if args.g == "f" and args.r_stem_a == "ā" and match(args.stem, "t$") and not match(args.stem, "^s?t$") then
error("The feminine of adjectives in -tṛ ends in -trī.")
end
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
data.decl_type = SLP_to_IAST.tr("f") .. "-การันต์"
if args.g == "n" then
decline(args, data, {
-- for neuter -úr, see Wackernagel, III, p.204, §107b (denies 'sthātar' and 'sthātṝ́n' are neuter sg.)
-- all cases of -tári given as nom./acc.n.sg. by Macdonell (p.243) are translated as locatives by Jamison & Brereton
n={"f" .. oxy, {"u" .. oxy .. "r", note = "Rigvedic"}},
a="[nom]",
i={"+nA", "rA" .. oxy},
d={"+ne", "re" .. oxy},
ab={"+nas", "u" .. oxy .. "r"},
l={"+ni", "a" .. oxy .. "ri"},
v={ "f", "ar" },
}, {
n="+nI",
g={"+nos", "ro" .. oxy .. "s"},
v="+nI",
}, {
n="F" .. oxy .. "ni",
a="[nom]",
v="Fni",
})
else
if not args.r_stem_a then
error('Please specify the length of the accusative singular vowel with r_stem_a = "a" or "ā".')
else
args.r_stem_a = IAST_to_SLP.tr(args.r_stem_a)
end
decline(args, data, {
n="A" .. oxy,
a=args.r_stem_a .. oxy .. "ram",
i="rA" .. oxy,
d="re" .. oxy,
ab="u" .. oxy .. "r",
l="a" .. oxy .. "ri",
v="ar",
}, {
n={ args.r_stem_a .. oxy .. "rO", { args.r_stem_a .. oxy .. "rA", note = "พระเวท" } },
g="ro" .. oxy .. "s",
v={ args.r_stem_a .. "rO", { args.r_stem_a .. "rA", note = "พระเวท" } },
}, {
n=args.r_stem_a .. oxy .. "ras",
a=args.g == "f" and "F" .. oxy .. "s" or "F" .. oxy .. "n",
v=args.r_stem_a .. "ras",
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
g={{stem = args.stem .. "F", "nA" .. (oxy ~= "" and "/" or "") .. "m"}},
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-การันต์ nouns")
end
end
})
decl_data["root"] = { -- for root nouns ending on -k/g/gh/c/j/ṭ/ḍ/th/d/dh/p/bh/m/r/ṣ/ś/h + -āt/it/ut/ṛt/akt + -ās/os
detect = function(args)
-- capture of vowel needed for accent
if (make_detect("(.*)" .. sa_utils.vowel .. sa_utils.accent .. "?r?[kgGcjwqTdDpBmrzSh]$")(args)
or (make_detect("(.*)[Aiuf]" .. sa_utils.accent .. "?t$")(args) and not args.participle == true)
or make_detect("(.*)a" .. sa_utils.accent .. "?kt$")(args) -- nákt-
or make_detect("(.*)[Ao]" .. sa_utils.accent .. "?s$")(args)
or (args.root == true and make_detect("(.*)[ai]" .. sa_utils.accent .. "?[ts]$")(args) )) -- + āśis + numerals like triṃśát
and args.g ~= "gneut" then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["root"], {
__call = function(self, args, data)
local vowel, oxy, extra, cons = match(args.lemma, "(" .. sa_utils.vowel .. ")(" .. sa_utils.accent .. "?)(r?)([kgGcjwqtTdDpBmrzShs]t?)$")
if match(cons, "[jSh]") ~= nil and not args.ambig_final then
error('Please specify the final consonant in the nominative singular with ambig_final = "k" or "ṭ".')
elseif args.ambig_final then -- also for cases like sarágh > saráṭ or potentially anuṣṭúbh > anuṣṭúk
args.ambig_final = IAST_to_SLP.tr(args.ambig_final)
end
local nasal = cons:gsub(".", sa_utils.homorganic_nasal)
data.decl_type = "มูลการันต์"
root = true
-- neuter nom. plural (Whitney §389c, although saying that these forms with infixed nasal are not attested for nouns)
if args.g == "n" then
if match(cons, "[mr]") == nil and extra == "" then
decline(args, data, nil, nil, {
n= {{stem = args.stem .. vowel .. oxy .. nasal .. cons, "i"}},
v= {{stem = args.stem .. vowel .. nasal .. cons, "i"}},
})
else
decline(args, data, nil, nil, {
n= "+i",
v= "+i",
})
end
end
if args.true_mono then -- monosyllabic stem
if args.g ~= "n" then
decline(args, data, {
-- nom.sg. -s is an 'invisible' (historical) ending to provoke vowel lengthening in -ir/-ur stems, see Whitney §392
-- this ending should be removed by internal_sandhi at an early stage
n="+s",
a="+am",
v="+s",
}, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
}, {
n="+as",
v="+as",
})
else
decline(args, data, {
n= "+",
a="[nom]",
v= "+"
}, {
n= {{"+I" .. oxy, mono = true }},
v= "+I"
}, { })
end
decline(args, data, {
i= {{ "+A" .. oxy, mono = true }},
d= {{ "+e" .. oxy, mono = true }},
ab= {{ "+a" .. oxy .. "s", mono = true }},
g="[abl]",
l= {{ "+i" .. oxy, mono = true }},
}, {
a= "[nom]",
i= {{ "+ByA" .. oxy .. "m", mono = true }},
d="[ins]",
ab="[ins]",
g= {{ "+o" .. oxy .. "s", mono = true }},
l="[gen]",
}, {
a= "[nom]",
i= {{ "+Bi" .. oxy .. "s", mono = true }},
d= {{ "+Bya" .. oxy .. "s", mono = true }},
ab="[dat]",
g= {{ "+A" .. oxy .. "m", mono = true }},
l= {{ "+su" .. oxy, mono = true }},
})
else -- polysyllabic stem, no accent on ending
if args.g ~= "n" then
decline(args, data, {
n="+s",
a="+am",
v="+s",
}, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
}, {
n="+as",
v="+as"
})
else
decline(args, data, {
n= "+",
a="[nom]",
v= "+"
}, {
n= "+I",
v= "+I",
}, { })
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a= "[nom]",
i= "+ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
a= "[nom]",
i= "+Bis",
d= "+Byas",
ab="[dat]",
g= "+Am",
l= "+su",
})
end
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit consonantal มูลการันต์ adjectives")
else
table.insert(data.categories, "Sanskrit consonantal มูลการันต์ nouns")
end
end
})
decl_data["[aiu]s"] = {
detect = make_detect("(.+)[aiu]" .. sa_utils.accent .. "?s$")
}
setmetatable(decl_data["[aiu]s"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([aiu])(" .. sa_utils.accent .. "?)s$")
data.decl_type = vowel .. "s-การันต์"
if (match(args.stem, "[^aAiK/\\]"..sa_utils.accent.."?y$") or match (args.stem, "jyA/?y$"))
and vowel == "a" then -- comparative
comp = "1"
else comp = "0" end
if comp == "1" and args.g ~= "n" then
if args.g == "m" then
decline(args, data, {
n="An",
a="AMsam",
v={"an", { "+", note = "Rigvedic"}},
}, {
n={"AMsO", {"AMsA", note = "พระเวท"}},
v={"AMsO", {"AMsA", note = "พระเวท"}},
}, {
n="AMsas",
a="+as",
v="AMsas",
})
else
error("The feminine of comparatives in -yas ends in -yasī.")
end
elseif args.g == "m" or args.g == "f" then
if vowel == "a" then
decline(args, data, {
n="A" .. oxy .. "s",
a={ "+am", { "A" .. oxy .. "m", note = "พระเวท" } },
v="+",
}, nil, {
n={ "+as", { "A" .. oxy .. "s", note = "พระเวท" } },
v={ "+as", { "A" .. oxy .. "s", note = "พระเวท" } },
})
else
decline(args, data, {
n="+",
a="+am",
v={ "+",{ sa_utils.up_one_grade[vowel], note = "พระเวท" } }, -- Wackernagel vol.III, p.292, §152c
}, nil, {
n="+as",
v="+as",
})
end
decline(args, data, nil, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
}, {
a="[nom]",
})
else
if args.adj == true and vowel == "a" and comp == "0"
and (match(args.stem, sa_utils.vowel .. ".*" .. sa_utils.vowel) or match(args.stem, "^sv")) then
-- compounds on -as, see Macdonell, p.226 + Whitney §418 a
decline(args, data, {
n={ "+", { "A" .. oxy .. "s", note = "พระเวท"} },
}, {}, {})
else
decline(args, data, {
n="+",
}, {}, {})
end
decline(args, data, {
a="[nom]",
v="+",
}, {
n="+I",
v="+I",
}, {
n={{stem = args.stem .. sa_utils.lengthen[vowel] .. oxy .. "Ms", "i"}},
v={{stem = args.stem .. sa_utils.lengthen[vowel] .. "Ms", "i"}},
a="[nom]",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i= "+ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i= "+Bis",
d= "+Byas",
ab="[dat]",
g="+Am",
l= "+su",
})
if comp == "1" then
table.insert(data.categories, "Sanskrit yas-การันต์ adjectives")
elseif args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. vowel .. "s-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. vowel .. "s-การันต์ nouns")
end
end
})
decl_data["an"] = {
detect = make_detect("(.+)a" .. sa_utils.accent .. "?n$",
function(args) return args.g ~= "gneut" end) -- not gender-neutral numerals
}
setmetatable(decl_data["an"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "a(" .. sa_utils.accent .. "?)n$")
data.decl_type = "an-การันต์"
stem_final_n = true
if args.g == "n" then -- Wackernagel vol.III p.238 presupposes neuter pl. '-hāni' for '-han'
decline(args, data, {
n=args.han == true and {"a" .. oxy, {"a" .. oxy .. "m", note = "พระเวท"}} or "a" .. oxy,
a="[nom]",
v={ "+", "a" },
}, {}, {
n={ "A" .. oxy .. "ni", {"a" .. oxy, note = "พระเวท"}, {"A" .. oxy, note = "พระเวท"}},
a="[nom]",
v={ "Ani", {"a", note = "พระเวท"}, {"A", note = "พระเวท"}},
})
if not match(args.stem, sa_utils.consonant .. "[NYRnmyrlv]$") or args.contract then
decline(args, data, nil, {
n={ "nI" .. oxy, "+I" },
v={ "nI", "+I" },
}, {})
else
decline(args, data, nil, {
n="+I",
v="+I",
}, {})
end
else
decline(args, data, {
n="A" .. oxy,
v="+",
})
if args.han or match(args.stem, "pUz$") or match(args.stem, "aryam$") then
decline(args, data, {
a="a" .. oxy .. "nam",
}, {
n={ "a" .. oxy .. "nO", { "a" .. oxy .. "nA", note = "พระเวท" } },
v={ "anO", { "anA", note = "พระเวท" } },
}, {
n="a" .. oxy .. "nas",
v="anas",
a=args.han == true and { "na" .. oxy .. "s", "a" .. oxy .. "nas"} or "na" .. oxy .. "s",
})
elseif match(args.stem, "ukz$") or match(args.stem, "yo/?z$") or match(args.stem, "vf/?z$")
or match(args.stem, "^tm$") then -- Whitney §426b; Wackernagel vol.III p.267
decline(args, data, {
a={"A" .. oxy .. "nam", {"a" .. oxy .. "nam", note = "พระเวท" }},
}, {
n={ "A" .. oxy .. "nO", { "a" .. oxy .. "nO", note = "พระเวท" }, { "a" .. oxy .. "nA", note = "พระเวท" } },
v={ "AnO", { "anO", note = "พระเวท" }, { "anA", note = "พระเวท" } },
}, {
n={"A" .. oxy .. "nas", {"a" .. oxy .. "nas", note = "พระเวท" }},
v={"Anas", {"anas", note = "พระเวท" }},
a="na" .. oxy .. "s",
})
else
decline(args, data, {
a="A" .. oxy .. "nam",
}, {
n={ "A" .. oxy .. "nO", { "A" .. oxy .. "nA", note = "พระเวท" } },
v={ "AnO", { "AnA", note = "พระเวท" } },
}, {
n="A" .. oxy .. "nas",
v="Anas",
a="na" .. oxy .. "s",
})
end
end
if not match(args.stem, sa_utils.consonant .. "[NYRnmyrlv]$") or args.contract then
decline(args, data, {
i="nA" .. oxy,
d="ne" .. oxy,
ab="na" .. oxy .. "s",
g="[abl]",
l={ "ni" .. oxy, "+i", { "+" , note = "พระเวท"} }, -- Whitney §425c for Vedic form
}, {
g="no" .. oxy .. "s",
}, {
g="nA" .. oxy .. "m",
})
else
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l= { "+i", { "+" , note = "พระเวท"} }, -- Whitney §425c for Vedic form
}, {
g="+os",
}, {
g="+Am",
})
end
decline(args, data, nil, {
a="[nom]",
i="a" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="a" .. oxy .. "Bis",
d="a" .. oxy .. "Byas",
ab="[dat]",
l="a" .. oxy .. "su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit an-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit an-การันต์ nouns")
end
end
})
decl_data["in"] = {
detect = make_detect("(.+)i" .. sa_utils.accent .. "?n$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["in"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "i(" .. sa_utils.accent .. "?)n$")
data.decl_type = "in-การันต์"
stem_final_n = true
if args.g ~= "n" then
decline(args, data, {
n="I" .. oxy,
a="i" .. oxy .. "nam",
v="+",
}, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
}, {
n="+as",
a="[nom]",
v="+as",
})
else
decline(args, data, {
n="i" .. oxy,
a="[nom]",
v={ "i", "+" },
}, {
n="+I",
v="+I",
}, {
n="I" .. oxy .. "ni",
a="[nom]",
v="Ini",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i="i" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i="i" .. oxy .. "Bis",
d="i" .. oxy .. "Byas",
ab="[dat]",
g="+Am",
l="i" .. oxy .. "zu",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit in-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit in-การันต์ nouns")
end
end
})
decl_data["at"] = {
detect = function(args)
if (make_detect("(.+)a" .. sa_utils.accent .. "?t$")(args)
or (make_detect("(.+)A" .. sa_utils.accent .. "?t$")(args) and args.participle == true)) -- participles like 'yā́t'
and (args.g == "m" or args.g == "n") then
return true
else
return false
end
end
}
setmetatable(decl_data["at"], {
__call = function(self, args, data)
local cons, vow, oxy = match(args.lemma, "([mv]?)([aA])(" .. sa_utils.accent .. "?)t$")
-- for present participles
if args.lemma:find("[vm]a/?t$") == nil or args.participle == true then
data.decl_type = "at-การันต์"
if args.at_nom_s == true then -- participles like 'júhvat'
if args.g ~= "n" then
decline(args, data, {
n="a" .. oxy .. "t",
a="a" .. oxy .. "tam",
v="at",
}, {
n={ "a" .. oxy .. "tO", { "a" .. oxy .. "tA", note = "พระเวท"} },
v={ "atO", { "atA", note = "พระเวท"} },
}, {
n="a" .. oxy .. "tas",
a="a" .. oxy .. "tas",
v="atas",
})
else
decline(args, data, {
n="a" .. oxy .. "t",
a="[nom]",
v="at",
}, {
n="a" .. oxy .. "tI",
v="atI",
}, {
n="a" .. oxy .. "ti",
a="[nom]",
v="ati",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
l="+i",
}, {
g="+os",
}, {
g="+Am",
})
else
if args.g ~= "n" then
decline(args, data, {
n= vow .. oxy .. "n",
a= vow .. oxy .. "ntam",
v= vow .. "n",
}, {
n={ vow .. oxy .. "ntO", { vow .. oxy .. "ntA", note = "พระเวท"} },
v={ vow .. "ntO", { vow .. "ntA", note = "พระเวท"} },
}, {
n= vow .. oxy .. "ntas",
a= vow .. "ta" .. oxy .. "s",
v= vow .. "ntas",
})
else
if not args.participle_n_nom_d and not args.nom_d then
error('Please indicate nominative dual (identical to feminine stem) with nom_d')
else
if args.nom_d then
local s = mw.text.split(args.nom_d, ",")
args.participle_n_nom_d = s[1]
args.participle_n_nom_d2 = s[2]
end
-- neuter nom.du. taken from feminine, see Whitney §443a (though maybe artificial: §447b)
args.participle_n_nom_d = IAST_to_SLP.tr(args.participle_n_nom_d)
if args.participle_n_nom_d2 then
args.participle_n_nom_d2 = IAST_to_SLP.tr(args.participle_n_nom_d2)
decline(args, data, {}, {
n= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}},
v= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}},
}, {})
else
decline(args, data, {}, {
n= {{stem = args.participle_n_nom_d, ""}},
v= {{stem = args.participle_n_nom_d, ""}},
}, {})
end
if vow == "a" then
decline(args, data, {}, {}, {
n= {"a" .. oxy .. "nti", {"A" .. oxy .. "nti", note = "Rigvedic"}}, -- see Wackernagel III p 262
a="[nom]",
v= {"anti", {"Anti", note = "Rigvedic"}},
})
else
decline(args, data, {}, {}, {
n= vow .. oxy .. "nti",
a="[nom]",
v= vow .. "nti",
})
end
end
decline(args, data, {
n= vow .. oxy .. "t",
a="[nom]",
v= vow .. "t",
}, {}, {})
end
decline(args, data, {
i= vow .. "tA" .. oxy,
d= vow .. "te" .. oxy,
ab= vow .. "ta" .. oxy .. "s",
l= vow .. "ti" .. oxy,
}, {
g= vow .. "to" .. oxy .. "s",
}, {
g= vow .. "tA" .. oxy .. "m",
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i= vow .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i= vow .. oxy .. "dBis",
d= vow .. oxy .. "dByas",
ab="[dat]",
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit at-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit at-การันต์ nouns")
end
else -- for nouns suffixed with -vat/-mat
data.decl_type = cons .. "at-การันต์"
if args.g ~= "n" then
decline(args, data, {
n="A" .. oxy .. "n",
a="a" .. oxy .. "ntam",
v={ "an", { "as", note = "Rigvedic"} },
}, {
n={ "a" .. oxy .. "ntO", { "a" .. oxy .. "ntA", note = "พระเวท"} },
v={ "antO", { "antA", note = "พระเวท"} },
}, {
n="a" .. oxy .. "ntas",
a="a" .. oxy .. "tas",
v="antas",
})
else
decline(args, data, {
n="a" .. oxy .. "t",
a="[nom]",
v="at",
}, {
n="+I",
v="+I",
}, {
n={{"a" .. oxy .. "nti"}, {"A" .. oxy .. "nti", note = "Rigvedic"}}, -- see Wackernagel III p 258-9
a="[nom]",
v={{"anti"}, {"Anti", note = "Rigvedic"}},
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i="a" .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i="a" .. oxy .. "dBis",
d="a" .. oxy .. "dByas",
ab="[dat]",
g="+Am",
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. cons .. "at-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. cons .. "at-การันต์ nouns")
end
end
end
})
decl_data["añc"] = {
detect = make_detect("(.+[aA]" .. sa_utils.accent .. "?Yc)$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["añc"], {
__call = function(self, args, data)
local cons, vowel, oxy = match(args.lemma, "([yv]?)([aA])(" .. sa_utils.accent .. "?)Yc$")
data.decl_type = "añc-การันต์"
-- make stem for 'middle' cases
args.stem = args.stem:gsub("Yc$", "c")
if args.g == "m" then
decline(args, data, {
n= "+", -- args.lemma
a="+am",
v= "+",
}, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
}, {
n="+as",
v="+as",
})
else -- neuter
decline(args, data, {
n= "", -- args.stem
v= "",
a="[nom]"
}, {}, {
n="+i",
v="+i",
a="[nom]"
})
end
decline(args, data, {}, {
i= "ByAm",
}, {
i= "Bis",
d= "Byas",
l= "su",
})
-- changing stem to weakest form
if vowel == "A" then
-- do nothing
elseif match(args.stem, "tirya/?c$") then -- specifically for tiryañc
args.stem = args.stem:gsub("ya(/?)c$", "a%1Sc")
elseif cons ~= "" then
args.stem = args.stem:gsub("([yv])a([/\\]?)c$",
function(cons, acc) return (cons == "y" and "I" or "U") .. (acc == "" and "" or "/") .. "c" end)
elseif match(args.stem, "dac$") then
args.stem = args.stem:gsub("ac$", "Ic")
else
error("Not supported")
end
if vowel == "A" or oxy == "" then
if args.g == "m" then
decline(args, data, nil, nil, {
a="as",
})
else -- neuter
decline(args, data, nil, {
n="I",
v="I",
})
end
decline(args, data, {
i="A",
d="e",
ab="as",
l="i",
}, {
g="os",
}, {
g="Am",
})
else -- oxytone accent, showing two possible accentuations (Whitney §410)
if args.g == "m" then
decline(args, data, nil, nil, { a={"as", {"a" .. oxy .. "s", note = "Rigvedic", mono = true}} })
else
decline(args, data, nil, {
n= {"I", {"I" .. oxy, note = "Rigvedic", mono = true}},
v= "I",
})
end
decline(args, data, {
i= {"A", {"A" .. oxy, note = "Rigvedic", mono = true}},
d= {"e", {"e" .. oxy, note = "Rigvedic", mono = true}},
ab= {"as", {"a" .. oxy .. "s", note = "Rigvedic", mono = true}},
l= {"i", {"i" .. oxy, note = "Rigvedic", mono = true}},
}, {
g= {"os", {"o" .. oxy .. "s", note = "Rigvedic", mono = true}},
}, {
g= {"Am", {"A" .. oxy .. "m", note = "Rigvedic", mono = true}},
})
end
decline(args, data, {
g="[abl]"
}, {
a="[nom]",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
ab="[dat]",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit añc-การันต์ adjectives")
end
end
})
decl_data["o"] = {
detect = make_detect("(.+)o" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "f" end)
}
setmetatable(decl_data["o"], { -- 'gó'
__call = function(self, args, data)
local oxy = match(args.lemma, "o(" .. sa_utils.accent .. "?)$")
data.decl_type = "o-การันต์"
decline(args, data, {
n="O" .. oxy .. "s",
v="Os",
a="A" .. oxy .. "m",
i="+A",
d="+e",
ab="o" .. oxy .. "s",
g="[abl]",
l="+i",
}, {
n={ "A" .. oxy .. "vO", { "A" .. oxy .. "vA", note = "พระเวท" } },
v={ "AvO", { "AvA", note = "พระเวท" } },
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
g= "+os",
l="[gen]",
}, {
n="A" .. oxy .. "vas",
a={"A" .. oxy .. "s", { "A" .. oxy .. "vas", note = "rare" } },
v="Avas",
i="+Bis",
d="+Byas",
ab="[dat]",
g={ "+Am", { "+nAm", note = "พระเวท" } },
l="+su",
})
table.insert(data.categories, "Sanskrit o-การันต์ nouns")
end
})
decl_data["O"] = {
detect = make_detect("(.+)O" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "f" end)
}
setmetatable(decl_data["O"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "O(" .. sa_utils.accent .. "?)$")
data.decl_type = "au-การันต์"
decline(args, data, {
n="+s",
v="+s",
a="+am",
i= {{ "+A" .. oxy, mono = true }},
d= {{ "+e" .. oxy, mono = true }},
ab={{ "+a" .. oxy .. "s", mono = true }},
g="[abl]",
l= {{ "+i" .. oxy, mono = true }},
}, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
a="[nom]",
i= {{"+ByA" .. oxy .. "m", mono = true }},
d="[ins]",
ab="[ins]",
g= {{ "+o" .. oxy .. "s", mono = true }},
l="[gen]",
}, {
n="+as",
v="+as",
a="[nom]",
i= {{"+Bi" .. oxy .. "s", mono = true }},
d= {{"+Bya" .. oxy .. "s", mono = true }},
ab="[dat]",
g= {{ "+A" .. oxy .. "m", mono = true }},
l= {{ "+su" .. oxy, mono = true }},
})
table.insert(data.categories, "Sanskrit au-การันต์ nouns")
end
})
decl_data["vāṃs"] = {
detect = make_detect("(.+)vA" .. sa_utils.accent .. "?Ms$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["vāṃs"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "vA(" .. sa_utils.accent .. "?)Ms$")
data.decl_type = "vāṃs-การันต์"
local weak_stem
if match(args.stem, "baBU$") or match(args.stem, "u$") then
weak_stem = args.stem .. "v"
elseif match(args.stem, "U$") then
weak_stem = args.stem:gsub("U$", "uv")
elseif match(args.stem, "pIpi$") or match(args.stem, "dI[dD]i$") then
weak_stem = args.stem
-- the second 'i' of 'śiśrivāṃs' etc. is part of the root
elseif match(args.stem, "[aAIuUfFxeEoO]" .. sa_utils.accent .."?M?" .. sa_utils.consonant .. "+i$") or match(args.stem, "vi[Sd]i$") then
weak_stem = args.stem:gsub("i$", "")
else
weak_stem = args.stem
end
if args.g == "m" then
decline(args, data, {
n= "vA" .. oxy .. "n",
a= "vA" .. oxy .. "Msam",
v={ "van", { "vas", note = "Rigvedic"} },
}, {
n= "vA" .. oxy .. "MsO",
a="[nom]",
v= "vAMsO",
}, {
n= "vA" .. oxy .. "Msas",
a={{stem = weak_stem, "u" .. oxy .. "zas"}},
v= "vAMsas",
})
else
decline(args, data, {
n= "va" .. oxy .. "t",
a="[nom]",
v= "vat"
}, {
n={{stem = weak_stem, "u" .. oxy .. "zI"}},
a="[nom]",
v={{stem = weak_stem, "uzI"}},
}, {
n= "vA" .. oxy .. "MsI",
a="[nom]",
v= "vAMsI"
})
end
decline(args, data, {
i={{stem = weak_stem, "u" .. oxy .. "zA"}},
d={{stem = weak_stem, "u" .. oxy .. "ze"}},
ab={{stem = weak_stem, "u" .. oxy .. "zas"}},
g="[abl]",
l={{stem = weak_stem, "u" .. oxy .. "zi"}},
}, {
i= "va" .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
g={{stem = weak_stem, "u" .. oxy .. "zos"}},
l="[gen]"
}, {
i= "va" .. oxy .. "dBis",
d= "va" .. oxy .. "dByas",
ab="[dat]",
g={{stem = weak_stem, "u" .. oxy .. "zAm"}},
l= "va" .. oxy .. "tsu"
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit vāṃs-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit vāṃs-การันต์ nouns")
end
end
})
return decl_data
no9pjkdeuh5w2pufuo76ynqac1amrc9
5724857
5724856
2026-06-16T05:17:26Z
OctraBot
3198
5724857
Scribunto
text/plain
local decl_data = {}
local sa_utils = require("Module:sa-utilities")
local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST")
local IAST_to_SLP = require("Module:sa-utilities/translit/IAST-to-SLP1")
local match = string.match -- sufficient for SLP1
local umatch = mw.ustring.match
-- Make a detection function for ARGS that fetches the stem according to MATCH_RE (which is matched against
-- args.lemma and should have the stem in the first capture). ADDL_CONDITION is an optional function of one
-- argument (ARGS) that must return true for the detection to happen.
local function make_detect(match_re, addl_condition)
return function(args)
if addl_condition and not addl_condition(args) then
return false
end
local stem = match(args.lemma, match_re)
if stem then
args.stem = stem
return true
else
return false
end
end
end
-- Construct all or part of a given noun's declension. Each of SG, DU and PL is a table, whose keys are
-- as follows:
--
-- n = nominative
-- a = accusative
-- v = vocative
-- i = instrumental
-- d = dative
-- ab = ablative
-- g = genitive
-- l = locative
--
-- The corresponding value is one of the following:
-- 1. a "copy spec" such as "[ins]", meaning to copy from the instrumental of the same number;
-- 2. a single string (specifying an ending); or
-- 3. a list of specs, where a spec is either a string (an ending) or a table of the form
-- {"ENDING", stem = "STEM", mono = TRUE/FALSE, note = "NOTE"}. The latter format lets you explicitly specify what
-- the stem is, whether the form is monosyllabic, and what the footnote is. All named keys are optional.
--
-- In forms 2 and 3, if the ending begins with +, the stem defaults to args.lemma; otherwise it defaults to args.stem.
local function decline(args, data, sg, du, pl)
local cases = {n="nom", a="acc", v="voc", i="ins", d="dat", ab="abl", g="gen", l="loc"}
local function process_number(endings, tag)
if not endings then
return
end
for case, es in pairs(endings) do
if type(es) == "string" and es:find("^%[") then
-- copy from another case; skip and handle later
else
if type(es) == "string" then
es = {es}
end
local forms = {}
for i, e in ipairs(es) do
local stem, mono, accent_override, note
if type(e) == "table" then
stem = e.stem
mono = e.mono
accent_override = e.accent_override
note = e.note
e = e[1]
end
-- reduce Vedic forms to zero in case of novedic parameter
if args.novedic == true and note and (match(note, "เวท$") or umatch(note, "พราหมณะ")) then
stem = ""; e = ""; note = ""
elseif args.norigvedic == true and note and match(note, "ฤคเวท$") then
stem = ""; e = ""; note = ""
else
if e:find("^%+") then
if stem then
error("Internal error: Can't use + in an ending when stem is explicitly given")
end
e = e:gsub("^%+", "")
stem = args.lemma
elseif not stem then
stem = args.stem
end
forms[i] = sa_utils.internal_sandhi({
stem = stem, ending = e, has_accent = args.has_accent, recessive = case == "v", no_syncope = no_syncope,
mono = mono, root = root, ambig_final = args.ambig_final, diaspirate = args.diaspirate,
accent_override = accent_override, han = args.han, stem_final_n = stem_final_n, voc_svar = args.voc_svar,
})
if note and note~= "" then
forms["note" .. i] = note
end
end
end
data.forms[cases[case] .. "_" .. tag] = forms
end
end
-- Now handle cases copied from another.
for case, es in pairs(endings) do
if type(es) == "string" and es:find("^%[") then
-- copy from another case; skip and handle later
local other_case = es:match("^%[(.*)%]$")
if not other_case then
error("Internal error: Unrecognized copy case spec " .. es)
end
local other_slot = other_case .. "_" .. tag
local value = data.forms[other_slot]
if not value then
error("Internal error: Slot '" .. other_slot .. "' to copy from is empty")
end
local this_slot = cases[case] .. "_" .. tag
if data.forms[this_slot] then
error("Internal error: A value already exists for slot '" .. this_slot ..
"' when copying from '" .. other_slot .. "'")
end
data.forms[cases[case] .. "_" .. tag] = value
end
end
end
process_number(sg, "s")
process_number(du, "d")
process_number(pl, "p")
end
decl_data["numeral"] = {
detect = make_detect("(.+)a/?[nz]?$",
function(args) return args.g == "gneut" end)
}
setmetatable(decl_data["numeral"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(/?)[nz]?$")
local acc = match(args.lemma, "(/?)[^/]*$")
data.decl_type = "numeral"
if match(args.lemma, "a/?z$") then -- ṣaṣ
decline(args, data, {}, {}, {
n="+",
a="[nom]",
v="[nom]",
i="aqBi" .. oxy .. "s",
d="aqBya" .. oxy .. "s",
ab="[dat]",
g="aRRA" .. oxy .. "m",
l="awsu" .. oxy,
})
else -- pañca(n), etc.
decline(args, data, {}, {}, {
n="a" .. oxy,
a="[nom]",
v="a",
i={{"a" .. acc .. "Bis", accent_override = true}},
d={{"a" .. acc .. "Byas", accent_override = true}},
ab="[dat]",
g={{"AnA" .. acc .. "m", accent_override = true}},
l={{"a" .. acc .. "su", accent_override = true}},
})
end
-- no categorisation?
end
})
decl_data["a"] = {
detect = make_detect("(.+)a" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["a"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
if args.pronominal then
data.decl_type = "หน่วยสรรพนาม a-การันต์"
else
data.decl_type = "a-การันต์"
end
if args.g == "m" then
decline(args, data, {
n="a" .. oxy .. "s",
a="a" .. oxy .. "m",
v="a"
}, {
n={ "O" .. oxy, { "A" .. oxy, note = "พระเวท" } },
v={ "O", { "A", note = "พระเวท" } }
}, {
a="A" .. oxy .. "n",
})
if args.pronominal then
decline(args, data, {}, {}, {
n="e" .. oxy,
v="e"
})
else
decline(args, data, {}, {}, {
n={"A" .. oxy .. "s", {"A" .. oxy .. "sas", note="พระเวท"}},
v={"As", {"Asas", note="พระเวท"}}
})
end
else
decline(args, data, {
n="a" .. oxy .. "m",
a="[nom]",
v="a"
}, {
n="e" .. oxy,
v="e"
}, {
n={"A" .. oxy .. "ni", {"A" .. oxy, note="พระเวท"}},
a="[nom]",
v={"Ani", {"A", note="พระเวท"}}
})
end
if args.pronominal then
decline(args, data, {
d="a" .. oxy .. "smE",
ab="a" .. oxy .. "smAt",
l="a" .. oxy .. "smin"
}, {}, {
g="e" .. oxy .. "zAm"
})
else
decline(args, data, {
d="A" .. oxy .. "ya",
ab="A" .. oxy .. "t",
l="e" .. oxy
}, {}, {
g="A" .. oxy .. "nAm"
})
end
decline(args, data, {
-- For nouns on -tva(na), RV has only three instr.sg. with -ena (1.110.4, 8.18.13, 10.37.9); see Lanman p.335f. for forms on -ā.
-- This avoidance is phonetically perfectly understandable for -tvanā instead of -tvanena, and with abstract nouns like this
-- (predominantly used in the singular), there wouldn't be much cause for confusion with the nom./acc. plural.
-- (detection of oxytone accent to avoid gerundives on -tva)
i= match(args.lemma, "tva?n?a/$") and {"e" .. oxy .. "na", {"A" .. oxy, note = "พระเวท"}} or "e" .. oxy .. "na",
g="a" .. oxy .. "sya"
}, {
a="[nom]",
i="A" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
-- see Wackernagel III, p.98-99, §48a
g= match(args.stem, ".y$") and {"a" .. oxy .. "yos", {"o" .. oxy .. "s", note = "พระเวท"}} or "a" .. oxy .. "yos",
l="[gen]"
}, {
i={ "E" .. oxy .. "s", { "e" .. oxy .. "Bis", note = "พระเวท" } },
d="e" .. oxy .. "Byas",
ab="[dat]",
l="e" .. oxy .. "zu"
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit a-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit a-การันต์ nouns")
end
end
})
decl_data["iu"] = {
detect = make_detect("(.+)[iu]" .. sa_utils.accent .. "?$")
}
setmetatable(decl_data["iu"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([iu])(" .. sa_utils.accent .. "?)$")
data.decl_type = vowel .. "-การันต์"
if match(args.lemma, "[sz]a/?Ki/$") and not (args.decl and match(args.decl, "i")) then
-- in classical possibly regular in compounds (see Wackernagel vol.III p.141), for which use 'decl=i'
decline(args, data, {
n="A" .. oxy,
a="A" .. oxy .. "yam",
i={{stem = args.stem .. vowel, "A" .. oxy }},
d={{stem = args.stem .. vowel, "e" .. oxy }},
ab={{stem = args.stem .. vowel, "u" .. oxy .. "r" }},
l={{stem = args.stem .. vowel, "O" .. oxy }}, -- Wackernagel suggests older *sákhayi (ibid.)
v="e",
}, {
n={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "พระเวท"}},
v={"A" .. oxy .. "yO", {"A" .. oxy .. "yA", note = "พระเวท"}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s" }},
}, {
n="A" .. oxy .. "yas",
v="Ayas",
a="I" .. oxy .. "n",
})
elseif args.g == "m" then
if vowel == "i" then
decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "y", "e" }},
l={ "O" .. oxy, { "A" .. oxy, note = "พระเวท"}}, -- Whitney §336f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u
decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "v", "e" }},
l="O" .. oxy,
}, {}, {})
else decline(args, data, {
d={{stem = args.stem .. "a" .. oxy .. "v", "e" }, {stem = args.stem .. "v", "e" .. oxy, note = "พระเวท"}},
l="O" .. oxy,
}, {}, {})
end
if match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
decline(args, data, {
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}},
}, {}, {})
else
decline(args, data, {
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "พระเวท"}},
}, {}, {})
end
decline(args, data, {
n="+s",
a="+m",
i={ "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "พระเวท" } },
v={{stem= args.stem .. sa_utils.up_one_grade[vowel], ""}},
}, {
n={{stem = args.stem .. sa_utils.lengthen[vowel..oxy], ""}},
v={{stem = args.stem .. sa_utils.lengthen[vowel], ""}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}},
a={{stem = args.stem ..sa_utils.lengthen[vowel..oxy], "n"}},
v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}},
})
elseif args.g == "f" then
if vowel == "i" then
decline(args, data, {
i={{stem = args.stem .. vowel, "A" .. oxy}, {"I" .. oxy, note = "พระเวท"}}, -- Whitney §336c
l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" }, { "A" .. oxy, note = "พระเวท"} },
}, {}, {})
else
decline(args, data, {
i={{stem = args.stem .. vowel, "A" .. oxy }},
l={ "O" .. oxy, {stem = args.stem .. vowel, "A" .. oxy .. "m" } },
}, {}, {})
end
decline(args, data, {
n="+s",
a="+m",
-- the Rigvedic dat.sg. on -ī (mostly ūtī́) seems too rare to extrapolate to every stem (see also Macdonell p.282)
d={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "e"}, {stem = args.stem .. vowel, "E" .. oxy } },
ab={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "s"}, {stem = args.stem .. vowel, "A" .. oxy .. "s" },
{stem = args.stem .. vowel, "E" .. oxy, note = "พราหมณะ"} },
v=sa_utils.up_one_grade[vowel],
}, {
n=sa_utils.lengthen[vowel..oxy],
v=sa_utils.lengthen[vowel],
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={{stem = args.stem .. sa_utils.up_one_grade[vowel .. oxy], "as"}},
a=sa_utils.lengthen[vowel..oxy] .. "s",
v={{stem = args.stem .. sa_utils.up_one_grade[vowel], "as"}},
})
else -- neuter
if args.adj == true then -- for difference with nouns see Whitney §344
if vowel == "i" then
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "y", "e"}},
ab={ "+nas", {stem = args.stem .. "e" .. oxy, "s"}},
l={ "+ni", "O" .. oxy, {"A" .. oxy, note = "พระเวท"}}, -- Whitney §336f + §340f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u; similar for abl./gen. -vas (vs. -os)
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s"}},
l={ "+ni", "O" .. oxy},
}, {}, {})
else decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e"}, {stem = args.stem .. "v", "e" .. oxy, note = "พระเวท"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s"}, {stem = args.stem .. vowel, "a" .. oxy .. "s", note = "พระเวท"}},
l={ "+ni", "O" .. oxy},
}, {}, {})
end
decline(args, data, {}, {
g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s" }},
}, {})
else -- nouns
if vowel == "i" then
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "y", "e", note = "พระเวท" }},
ab={ "+nas", {stem = args.stem .. "e" .. oxy, "s", note = "พระเวท"}},
l={ "+ni", {"O" .. oxy, note = "พระเวท"}, {"A" .. oxy, note = "พระเวท"}}, -- Whitney §336f + §340f
}, {}, {})
elseif match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$") then
-- the dative ending -ve (vs. -ave) does not occur if the stem has two consonants before -u; similar for abl./gen. -vas (vs. -os)
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "พระเวท" }},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "พระเวท"}},
l={ "+ni", {"O" .. oxy, note = "พระเวท"}},
}, {}, {})
else
decline(args, data, {
d={ "+ne", {stem = args.stem .. "a" .. oxy .. "v", "e", note = "พระเวท" },
{stem = args.stem .. "v", "e" .. oxy, note = "พระเวท"}},
ab={ "+nas", {stem = args.stem .. "o" .. oxy, "s", note = "พระเวท"},
{stem = args.stem .. vowel, "a" .. oxy .. "s", note = "พระเวท"}},
l={ "+ni", {"O" .. oxy, note = "พระเวท"}},
}, {}, {})
end
decline(args, data, {}, {
g={ "+nos", {stem = args.stem .. vowel, "o" .. oxy .. "s", note = "พระเวท" }},
}, {})
end
decline(args, data, {
n="+",
a="[nom]",
i={ "+nA", {stem = args.stem .. vowel, "A" .. oxy, note = "พระเวท" }},
v={ "+", {stem= args.stem .. sa_utils.up_one_grade[vowel], ""}},
}, {
n={ "+nI", {stem = args.stem .. vowel, "I" .. oxy, note = "พระเวท" }},
v={ "+nI", {stem = args.stem .. vowel, "I", note = "พระเวท" }},
}, {
n={{ stem = args.stem .. sa_utils.lengthen[vowel .. oxy], "ni" }, { "+", note = "พระเวท"},
{ stem = args.stem .. sa_utils.lengthen[vowel..oxy], "", note = "พระเวท"}},
a="[nom]",
v={{ stem = args.stem .. sa_utils.lengthen[vowel], "ni" }, { "+", note = "พระเวท"},
{ stem = args.stem .. sa_utils.lengthen[vowel], "", note = "พระเวท"}},
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
g={{ stem = args.stem .. sa_utils.lengthen[vowel], "nA" .. (oxy ~= "" and "/" or "") .. "m"}},
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. vowel .. "-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. vowel .. "-การันต์ nouns")
end
end
})
decl_data["A"] = {
detect = function(args)
if make_detect("(.+)A" .. sa_utils.accent .. "?$")(args) then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["A"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
if args.g == "n" then
-- It seems better not to base a neuter declension on the masculine nominatives on -ās accompanying neuter nouns.
-- See Whitney §367b and Wackernagel vol.III p.129
error("The neuter of radical stems in -ā ends in -a.")
end
if args.pronominal then
data.decl_type = "หน่วยสรรพนาม ā-การันต์"
else
data.decl_type = "ā-การันต์"
end
if not (args.root or args.true_mono) or (args.true_mono and args.root == false) then -- derived stem
if args.g == "m" then
error("Add 'root=1' in case this is a root noun or adjective.")
else
table.insert(data.categories, "Sanskrit ā-การันต์ nouns")
end
if args.pronominal then
decline(args, data, {
d="a" .. oxy .. "syE",
ab={"a" .. oxy .. "syAs", {"a" .. oxy .. "syE", note = "พราหมณะ"}},
l="a" .. oxy .. "syAm"
}, {}, {
g="+sAm"
})
else
decline(args, data, {
d="+yE",
ab={"+yAs", {"+yE", note = "พราหมณะ"}},
l="+yAm"
}, {}, {
g="+nAm"
})
end
decline(args, data, {
n="+",
i={ "a" .. oxy .. "yA", { "+", note = "พระเวท" } },
v="e",
}, {
n="e" .. oxy,
g="a" .. oxy .. "yos",
v="e",
}, {
a="+s",
})
else
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit มูลการันต์ adjectives on -ā")
else
table.insert(data.categories, "Sanskrit มูลการันต์ nouns on -ā")
end
if args.g == "m" then
data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by a-stem declension."}
else
data.general_notes = {"In practice, this declension only occurs in early Vedic<br> and is later replaced by regular ā-stem declension."}
end
decline(args, data, {
n="+s",
i="+",
d="e" .. oxy,
ab="a" .. oxy .. "s",
l="i" .. oxy,
v="+s",
}, {
n={ "O" .. oxy, { "A" .. oxy, note = "พระเวท" } },
g="o" .. oxy .. "s",
v={ "O", { "A", note = "พระเวท" } }
}, {
a={ "+s", { "a" .. oxy .. "s", note = "Perhaps" } },
g={ "+nAm", { "+Am", note = "Perhaps" } },
})
end
decline(args, data, {
a="+m",
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
n="+s",
i="+Bis",
d="+Byas",
ab="[dat]",
l="+su",
v="+s",
})
end
})
decl_data["IU"] = {
detect = function(args)
if make_detect("(.+)[IU]" .. sa_utils.accent .. "?$")(args) then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["IU"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([IU])(" .. sa_utils.accent .. "?)$")
data.decl_type = SLP_to_IAST.tr(vowel) .. "-การันต์"
if args.g == "n" then
-- it seems better to mention the one or two Vedic forms that could be interpreted
-- as coming from a neuter ī-stem (see Whitney §367b) separately
error("The neuter of radical stems in -ī/ū ends in -i/u.")
end
if not (args.root or args.true_mono) or (args.true_mono and args.root == false) or args.han then -- derived stem
if args.vrki then -- with original vṛkī-declension (Whitney §355 ff.), given as older forms of later classical declension
if vowel == "U" then
error()
elseif args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ī-การันต์ adjectives with original vṛkī́-declension")
else
table.insert(data.categories, "Sanskrit ī-การันต์ nouns with original vṛkī́-declension")
end
data.general_notes = {"This stem originally had ''vṛkī́''-declension."}
decline(args, data, {
n={"+", {"+s", note = "พระเวท"}},
a={"+m", {"+am", note = "พระเวท"}},
i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "พระเวท"}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "พระเวท"}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "พระเวท"},
{stem = args.stem .. vowel, "E" .. oxy, note = "พราหมณะ"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+", note = "พระเวท"}}, -- Wackernagel III, §86c, p.170
}, {
n={"+O", {"+A", note = "พระเวท"}},
v={"+O", {"+A", note = "พระเวท"}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "พระเวท"}},
}, {
n="+as",
v="+as",
a={"+s", {"+as", note = "พระเวท"}},
g="+nAm",
})
elseif vowel == "I" then -- devī-declension
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ī-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit ī-การันต์ nouns")
end
decline(args,data, {
n="+",
a="+m",
i={{stem = args.stem .. vowel, "A" .. oxy}},
d={{stem = args.stem .. vowel, "E" .. oxy}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {stem = args.stem .. vowel, "E" .. oxy, note = "พราหมณะ"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}},
}, {
n={ "+O", { "+", note = "พระเวท" } },
v={ "+O", { "+", note = "พระเวท" } },
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}},
}, {
n={ "+as", { "+s", note = "พระเวท" } },
v={ "+as", { "+s", note = "พระเวท" } },
a="+s",
g= oxy == "" and "+nAm" or {"+nAm", { stem = args.stem .. vowel, "nA" .. oxy .. "m", note = "ฤคเวท"} }, -- Whitney §319a
})
else -- ū-stems, with Whitney's declension at §356a given as older forms of §364, see Wackernagel vol.III p.189
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit ū-การันต์ adjectives") -- probably only bahuvrihis like 'sarvatanū'
else
table.insert(data.categories, "Sanskrit ū-การันต์ nouns")
end
if match(args.stem, "y$") or match(args.stem, "agr$")
or match(args.stem, "kadr$") or match(args.stem, "bIBats") then -- with Vedic -úv-, see Macdonell p.290 §384a
decline(args,data, {
a={"+m", {"+am", note = "พระเวท", mono = true}},
i={{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "พระเวท", mono = true}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "พระเวท", mono = true}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "พระเวท", mono = true},
{stem = args.stem .. vowel, "E" .. oxy, note = "พราหมณะ"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "พระเวท", mono = true},
{"+", note = "พระเวท"}},
}, {
n={"+O", {"+A", note = "พระเวท", mono = true}},
v={"+O", {"+A", note = "พระเวท", mono = true}},
g={{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "พระเวท", mono = true}},
}, {
n={"+as", {"+as", note = "พระเวท", mono = true}},
v={"+as", {"+as", note = "พระเวท", mono = true}},
a={"+s", {"+as", note = "พระเวท", mono = true}},
})
else
decline(args,data, {
a={"+m", {"+am", note = "พระเวท"}},
i= oxy == "" and "+A" or {{stem = args.stem .. vowel, "A" .. oxy}, {"+A", note = "พระเวท"}},
d={{stem = args.stem .. vowel, "E" .. oxy}, {"+e", note = "พระเวท"}},
ab={{stem = args.stem .. vowel, "A" .. oxy .. "s"}, {"+as", note = "พระเวท"},
{stem = args.stem .. vowel, "E" .. oxy, note = "พราหมณะ"}},
l={{stem = args.stem .. vowel, "A" .. oxy .. "m"}, {"+i", note = "พระเวท"},
{"+", note = "พระเวท"}}, -- Wackernagel III, §97b, p.188
}, {
n={"+O", {"+A", note = "พระเวท"}}, -- duals on -ū for ū-stems do not occur
v={"+O", {"+A", note = "พระเวท"}},
g= oxy == "" and "+os" or {{stem = args.stem .. vowel, "o" .. oxy .. "s"}, {"+os", note = "พระเวท"}},
}, {
n="+as", -- RV 4.41.8 has 'yuvayū́s', but it seems better to simply give this at the relevant lemma
v="+as",
a={"+s", {"+as", note = "พระเวท"}},
})
end
decline(args,data, {
n="+s",
}, {}, {
g="+nAm",
})
end
decline(args, data, {
g="[abl]",
v=sa_utils.shorten[vowel],
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
l="+su",
})
else
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit มูลการันต์ adjectives on -" .. SLP_to_IAST.tr(vowel))
else
table.insert(data.categories, "Sanskrit มูลการันต์ nouns on -" .. SLP_to_IAST.tr(vowel))
end
if args.true_mono then -- rout nouns, Whitney §351
no_syncope = true
if args.g == "f" then -- see Wackernagel vol.III p.181
decline(args, data, {
d={{ "+e" .. oxy, mono = true }, { "+E" .. oxy, mono = true, note = "Later Sanskrit" } },
ab={{ "+a" .. oxy .. "s", mono = true }, { "+A" .. oxy .. "s", mono = true, note = "Later Sanskrit" } },
l={{ "+i" .. oxy, mono = true }, { "+A" .. oxy .. "m", mono = true, note = "Later Sanskrit" } },
})
else
decline(args, data, {
d={{ "+e" .. oxy, mono = true } },
ab={{ "+a" .. oxy .. "s", mono = true } },
l={{ "+i" .. oxy, mono = true } },
})
end
decline(args, data, {
i={{ "+A" .. oxy, mono = true}},
}, {
i={{"+ByA" .. oxy .. "m", mono = true}},
g={{"+o" .. oxy .. "s", mono = true}},
}, {
i={{"+Bi" .. oxy .. "s", mono = true}},
d={{"+Bya" .. oxy .. "s", mono = true}},
g={{"+A" .. oxy .. "m", mono = true }, { "+nA" .. oxy .. "m", mono = true } },
l={{"+su" .. oxy, mono = true}},
})
else -- root terms in compounds, Whitney §352; I'd suggest to give two tables when both contracted and non-contracted forms occur
-- see Wackernagel III §91a (p.179) for ī, and §100a + §100eα (p.192-3) for ū; Macdonell: p.268 + 288
-- Taking as default that ū-stems with accent (rule of thumb for Vedic terms) are not contracted. To be overrided with 'contract=1'
if args.contract == false or (args.contract ~= true and (match(args.stem, sa_utils.consonant .. sa_utils.consonant .. "$")
or vowel == "U" and (match(args.lemma, sa_utils.accent) or match(args.stem, "B$") or match(args.stem, "jo/?g$"))
or vowel == "I" and (match(args.stem, "avadyaB$") or (match(args.stem, "D$") and match(args.stem, sa_utils.accent))))) then
no_syncope = true -- -Ciy-/-Cuv- when followed by vowel
decline(args, data, {
l= args.g == "f" and {"+i", {"+Am", note = "Later Sanskrit"}} or "+i",
})
else
decline(args, data, {
l= args.g == "f" and {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }, {"+Am", note = "Later Sanskrit"}}
or {{ stem = args.stem .. sa_utils.vowel_to_cons[vowel], "i" .. (oxy ~= "" and "\\" or "") }},
})
end
if args.g == "f" then -- see Wackernagel vol.III p.181
decline(args, data, {
d={ "+e", { "+E", note = "Later Sanskrit" } },
ab={ "+as", { "+As", note = "Later Sanskrit" } },
})
else
decline(args, data, {
d= "+e",
ab= "+as",
})
end
decline(args, data, {
i= "+A",
}, {
i="+ByAm",
g= "+os",
}, {
i="+Bis",
d="+Byas",
g= {"+Am", "+nAm"},
l="+su",
})
end
decline(args, data, {
n= "+s",
v= "+s",
a= "+am",
g="[abl]",
}, {
n= { "+O", { "+A", note = "พระเวท"}},
v= { "+O", { "+A", note = "พระเวท"}},
a="[nom]",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
n= "+as",
v= "+as",
a="[nom]",
ab="[dat]",
})
end
end
})
decl_data["f"] = { -- for nouns in ṛ
detect = make_detect("(.+)f" .. sa_utils.accent .. "?$")
}
setmetatable(decl_data["f"], { -- for nouns in ṛ
__call = function(self, args, data)
if args.g == "f" and args.r_stem_a == "ā" and match(args.stem, "t$") and not match(args.stem, "^s?t$") then
error("The feminine of adjectives in -tṛ ends in -trī.")
end
local oxy = match(args.lemma, "(" .. sa_utils.accent .. "?)$")
data.decl_type = SLP_to_IAST.tr("f") .. "-การันต์"
if args.g == "n" then
decline(args, data, {
-- for neuter -úr, see Wackernagel, III, p.204, §107b (denies 'sthātar' and 'sthātṝ́n' are neuter sg.)
-- all cases of -tári given as nom./acc.n.sg. by Macdonell (p.243) are translated as locatives by Jamison & Brereton
n={"f" .. oxy, {"u" .. oxy .. "r", note = "ฤคเวท"}},
a="[nom]",
i={"+nA", "rA" .. oxy},
d={"+ne", "re" .. oxy},
ab={"+nas", "u" .. oxy .. "r"},
l={"+ni", "a" .. oxy .. "ri"},
v={ "f", "ar" },
}, {
n="+nI",
g={"+nos", "ro" .. oxy .. "s"},
v="+nI",
}, {
n="F" .. oxy .. "ni",
a="[nom]",
v="Fni",
})
else
if not args.r_stem_a then
error('Please specify the length of the accusative singular vowel with r_stem_a = "a" or "ā".')
else
args.r_stem_a = IAST_to_SLP.tr(args.r_stem_a)
end
decline(args, data, {
n="A" .. oxy,
a=args.r_stem_a .. oxy .. "ram",
i="rA" .. oxy,
d="re" .. oxy,
ab="u" .. oxy .. "r",
l="a" .. oxy .. "ri",
v="ar",
}, {
n={ args.r_stem_a .. oxy .. "rO", { args.r_stem_a .. oxy .. "rA", note = "พระเวท" } },
g="ro" .. oxy .. "s",
v={ args.r_stem_a .. "rO", { args.r_stem_a .. "rA", note = "พระเวท" } },
}, {
n=args.r_stem_a .. oxy .. "ras",
a=args.g == "f" and "F" .. oxy .. "s" or "F" .. oxy .. "n",
v=args.r_stem_a .. "ras",
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="+Bis",
d="+Byas",
ab="[dat]",
g={{stem = args.stem .. "F", "nA" .. (oxy ~= "" and "/" or "") .. "m"}},
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. SLP_to_IAST.tr("f") .. "-การันต์ nouns")
end
end
})
decl_data["root"] = { -- for root nouns ending on -k/g/gh/c/j/ṭ/ḍ/th/d/dh/p/bh/m/r/ṣ/ś/h + -āt/it/ut/ṛt/akt + -ās/os
detect = function(args)
-- capture of vowel needed for accent
if (make_detect("(.*)" .. sa_utils.vowel .. sa_utils.accent .. "?r?[kgGcjwqTdDpBmrzSh]$")(args)
or (make_detect("(.*)[Aiuf]" .. sa_utils.accent .. "?t$")(args) and not args.participle == true)
or make_detect("(.*)a" .. sa_utils.accent .. "?kt$")(args) -- nákt-
or make_detect("(.*)[Ao]" .. sa_utils.accent .. "?s$")(args)
or (args.root == true and make_detect("(.*)[ai]" .. sa_utils.accent .. "?[ts]$")(args) )) -- + āśis + numerals like triṃśát
and args.g ~= "gneut" then
args.true_mono = sa_utils.is_monosyllabic(args.lemma)
return true
else
return false
end
end
}
setmetatable(decl_data["root"], {
__call = function(self, args, data)
local vowel, oxy, extra, cons = match(args.lemma, "(" .. sa_utils.vowel .. ")(" .. sa_utils.accent .. "?)(r?)([kgGcjwqtTdDpBmrzShs]t?)$")
if match(cons, "[jSh]") ~= nil and not args.ambig_final then
error('Please specify the final consonant in the nominative singular with ambig_final = "k" or "ṭ".')
elseif args.ambig_final then -- also for cases like sarágh > saráṭ or potentially anuṣṭúbh > anuṣṭúk
args.ambig_final = IAST_to_SLP.tr(args.ambig_final)
end
local nasal = cons:gsub(".", sa_utils.homorganic_nasal)
data.decl_type = "มูลการันต์"
root = true
-- neuter nom. plural (Whitney §389c, although saying that these forms with infixed nasal are not attested for nouns)
if args.g == "n" then
if match(cons, "[mr]") == nil and extra == "" then
decline(args, data, nil, nil, {
n= {{stem = args.stem .. vowel .. oxy .. nasal .. cons, "i"}},
v= {{stem = args.stem .. vowel .. nasal .. cons, "i"}},
})
else
decline(args, data, nil, nil, {
n= "+i",
v= "+i",
})
end
end
if args.true_mono then -- monosyllabic stem
if args.g ~= "n" then
decline(args, data, {
-- nom.sg. -s is an 'invisible' (historical) ending to provoke vowel lengthening in -ir/-ur stems, see Whitney §392
-- this ending should be removed by internal_sandhi at an early stage
n="+s",
a="+am",
v="+s",
}, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
}, {
n="+as",
v="+as",
})
else
decline(args, data, {
n= "+",
a="[nom]",
v= "+"
}, {
n= {{"+I" .. oxy, mono = true }},
v= "+I"
}, { })
end
decline(args, data, {
i= {{ "+A" .. oxy, mono = true }},
d= {{ "+e" .. oxy, mono = true }},
ab= {{ "+a" .. oxy .. "s", mono = true }},
g="[abl]",
l= {{ "+i" .. oxy, mono = true }},
}, {
a= "[nom]",
i= {{ "+ByA" .. oxy .. "m", mono = true }},
d="[ins]",
ab="[ins]",
g= {{ "+o" .. oxy .. "s", mono = true }},
l="[gen]",
}, {
a= "[nom]",
i= {{ "+Bi" .. oxy .. "s", mono = true }},
d= {{ "+Bya" .. oxy .. "s", mono = true }},
ab="[dat]",
g= {{ "+A" .. oxy .. "m", mono = true }},
l= {{ "+su" .. oxy, mono = true }},
})
else -- polysyllabic stem, no accent on ending
if args.g ~= "n" then
decline(args, data, {
n="+s",
a="+am",
v="+s",
}, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
}, {
n="+as",
v="+as"
})
else
decline(args, data, {
n= "+",
a="[nom]",
v= "+"
}, {
n= "+I",
v= "+I",
}, { })
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a= "[nom]",
i= "+ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
a= "[nom]",
i= "+Bis",
d= "+Byas",
ab="[dat]",
g= "+Am",
l= "+su",
})
end
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit consonantal มูลการันต์ adjectives")
else
table.insert(data.categories, "Sanskrit consonantal มูลการันต์ nouns")
end
end
})
decl_data["[aiu]s"] = {
detect = make_detect("(.+)[aiu]" .. sa_utils.accent .. "?s$")
}
setmetatable(decl_data["[aiu]s"], {
__call = function(self, args, data)
local vowel, oxy = match(args.lemma, "([aiu])(" .. sa_utils.accent .. "?)s$")
data.decl_type = vowel .. "s-การันต์"
if (match(args.stem, "[^aAiK/\\]"..sa_utils.accent.."?y$") or match (args.stem, "jyA/?y$"))
and vowel == "a" then -- comparative
comp = "1"
else comp = "0" end
if comp == "1" and args.g ~= "n" then
if args.g == "m" then
decline(args, data, {
n="An",
a="AMsam",
v={"an", { "+", note = "ฤคเวท"}},
}, {
n={"AMsO", {"AMsA", note = "พระเวท"}},
v={"AMsO", {"AMsA", note = "พระเวท"}},
}, {
n="AMsas",
a="+as",
v="AMsas",
})
else
error("The feminine of comparatives in -yas ends in -yasī.")
end
elseif args.g == "m" or args.g == "f" then
if vowel == "a" then
decline(args, data, {
n="A" .. oxy .. "s",
a={ "+am", { "A" .. oxy .. "m", note = "พระเวท" } },
v="+",
}, nil, {
n={ "+as", { "A" .. oxy .. "s", note = "พระเวท" } },
v={ "+as", { "A" .. oxy .. "s", note = "พระเวท" } },
})
else
decline(args, data, {
n="+",
a="+am",
v={ "+",{ sa_utils.up_one_grade[vowel], note = "พระเวท" } }, -- Wackernagel vol.III, p.292, §152c
}, nil, {
n="+as",
v="+as",
})
end
decline(args, data, nil, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
}, {
a="[nom]",
})
else
if args.adj == true and vowel == "a" and comp == "0"
and (match(args.stem, sa_utils.vowel .. ".*" .. sa_utils.vowel) or match(args.stem, "^sv")) then
-- compounds on -as, see Macdonell, p.226 + Whitney §418 a
decline(args, data, {
n={ "+", { "A" .. oxy .. "s", note = "พระเวท"} },
}, {}, {})
else
decline(args, data, {
n="+",
}, {}, {})
end
decline(args, data, {
a="[nom]",
v="+",
}, {
n="+I",
v="+I",
}, {
n={{stem = args.stem .. sa_utils.lengthen[vowel] .. oxy .. "Ms", "i"}},
v={{stem = args.stem .. sa_utils.lengthen[vowel] .. "Ms", "i"}},
a="[nom]",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i= "+ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i= "+Bis",
d= "+Byas",
ab="[dat]",
g="+Am",
l= "+su",
})
if comp == "1" then
table.insert(data.categories, "Sanskrit yas-การันต์ adjectives")
elseif args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. vowel .. "s-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. vowel .. "s-การันต์ nouns")
end
end
})
decl_data["an"] = {
detect = make_detect("(.+)a" .. sa_utils.accent .. "?n$",
function(args) return args.g ~= "gneut" end) -- not gender-neutral numerals
}
setmetatable(decl_data["an"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "a(" .. sa_utils.accent .. "?)n$")
data.decl_type = "an-การันต์"
stem_final_n = true
if args.g == "n" then -- Wackernagel vol.III p.238 presupposes neuter pl. '-hāni' for '-han'
decline(args, data, {
n=args.han == true and {"a" .. oxy, {"a" .. oxy .. "m", note = "พระเวท"}} or "a" .. oxy,
a="[nom]",
v={ "+", "a" },
}, {}, {
n={ "A" .. oxy .. "ni", {"a" .. oxy, note = "พระเวท"}, {"A" .. oxy, note = "พระเวท"}},
a="[nom]",
v={ "Ani", {"a", note = "พระเวท"}, {"A", note = "พระเวท"}},
})
if not match(args.stem, sa_utils.consonant .. "[NYRnmyrlv]$") or args.contract then
decline(args, data, nil, {
n={ "nI" .. oxy, "+I" },
v={ "nI", "+I" },
}, {})
else
decline(args, data, nil, {
n="+I",
v="+I",
}, {})
end
else
decline(args, data, {
n="A" .. oxy,
v="+",
})
if args.han or match(args.stem, "pUz$") or match(args.stem, "aryam$") then
decline(args, data, {
a="a" .. oxy .. "nam",
}, {
n={ "a" .. oxy .. "nO", { "a" .. oxy .. "nA", note = "พระเวท" } },
v={ "anO", { "anA", note = "พระเวท" } },
}, {
n="a" .. oxy .. "nas",
v="anas",
a=args.han == true and { "na" .. oxy .. "s", "a" .. oxy .. "nas"} or "na" .. oxy .. "s",
})
elseif match(args.stem, "ukz$") or match(args.stem, "yo/?z$") or match(args.stem, "vf/?z$")
or match(args.stem, "^tm$") then -- Whitney §426b; Wackernagel vol.III p.267
decline(args, data, {
a={"A" .. oxy .. "nam", {"a" .. oxy .. "nam", note = "พระเวท" }},
}, {
n={ "A" .. oxy .. "nO", { "a" .. oxy .. "nO", note = "พระเวท" }, { "a" .. oxy .. "nA", note = "พระเวท" } },
v={ "AnO", { "anO", note = "พระเวท" }, { "anA", note = "พระเวท" } },
}, {
n={"A" .. oxy .. "nas", {"a" .. oxy .. "nas", note = "พระเวท" }},
v={"Anas", {"anas", note = "พระเวท" }},
a="na" .. oxy .. "s",
})
else
decline(args, data, {
a="A" .. oxy .. "nam",
}, {
n={ "A" .. oxy .. "nO", { "A" .. oxy .. "nA", note = "พระเวท" } },
v={ "AnO", { "AnA", note = "พระเวท" } },
}, {
n="A" .. oxy .. "nas",
v="Anas",
a="na" .. oxy .. "s",
})
end
end
if not match(args.stem, sa_utils.consonant .. "[NYRnmyrlv]$") or args.contract then
decline(args, data, {
i="nA" .. oxy,
d="ne" .. oxy,
ab="na" .. oxy .. "s",
g="[abl]",
l={ "ni" .. oxy, "+i", { "+" , note = "พระเวท"} }, -- Whitney §425c for Vedic form
}, {
g="no" .. oxy .. "s",
}, {
g="nA" .. oxy .. "m",
})
else
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l= { "+i", { "+" , note = "พระเวท"} }, -- Whitney §425c for Vedic form
}, {
g="+os",
}, {
g="+Am",
})
end
decline(args, data, nil, {
a="[nom]",
i="a" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i="a" .. oxy .. "Bis",
d="a" .. oxy .. "Byas",
ab="[dat]",
l="a" .. oxy .. "su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit an-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit an-การันต์ nouns")
end
end
})
decl_data["in"] = {
detect = make_detect("(.+)i" .. sa_utils.accent .. "?n$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["in"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "i(" .. sa_utils.accent .. "?)n$")
data.decl_type = "in-การันต์"
stem_final_n = true
if args.g ~= "n" then
decline(args, data, {
n="I" .. oxy,
a="i" .. oxy .. "nam",
v="+",
}, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
}, {
n="+as",
a="[nom]",
v="+as",
})
else
decline(args, data, {
n="i" .. oxy,
a="[nom]",
v={ "i", "+" },
}, {
n="+I",
v="+I",
}, {
n="I" .. oxy .. "ni",
a="[nom]",
v="Ini",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i="i" .. oxy .. "ByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i="i" .. oxy .. "Bis",
d="i" .. oxy .. "Byas",
ab="[dat]",
g="+Am",
l="i" .. oxy .. "zu",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit in-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit in-การันต์ nouns")
end
end
})
decl_data["at"] = {
detect = function(args)
if (make_detect("(.+)a" .. sa_utils.accent .. "?t$")(args)
or (make_detect("(.+)A" .. sa_utils.accent .. "?t$")(args) and args.participle == true)) -- participles like 'yā́t'
and (args.g == "m" or args.g == "n") then
return true
else
return false
end
end
}
setmetatable(decl_data["at"], {
__call = function(self, args, data)
local cons, vow, oxy = match(args.lemma, "([mv]?)([aA])(" .. sa_utils.accent .. "?)t$")
-- for present participles
if args.lemma:find("[vm]a/?t$") == nil or args.participle == true then
data.decl_type = "at-การันต์"
if args.at_nom_s == true then -- participles like 'júhvat'
if args.g ~= "n" then
decline(args, data, {
n="a" .. oxy .. "t",
a="a" .. oxy .. "tam",
v="at",
}, {
n={ "a" .. oxy .. "tO", { "a" .. oxy .. "tA", note = "พระเวท"} },
v={ "atO", { "atA", note = "พระเวท"} },
}, {
n="a" .. oxy .. "tas",
a="a" .. oxy .. "tas",
v="atas",
})
else
decline(args, data, {
n="a" .. oxy .. "t",
a="[nom]",
v="at",
}, {
n="a" .. oxy .. "tI",
v="atI",
}, {
n="a" .. oxy .. "ti",
a="[nom]",
v="ati",
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
l="+i",
}, {
g="+os",
}, {
g="+Am",
})
else
if args.g ~= "n" then
decline(args, data, {
n= vow .. oxy .. "n",
a= vow .. oxy .. "ntam",
v= vow .. "n",
}, {
n={ vow .. oxy .. "ntO", { vow .. oxy .. "ntA", note = "พระเวท"} },
v={ vow .. "ntO", { vow .. "ntA", note = "พระเวท"} },
}, {
n= vow .. oxy .. "ntas",
a= vow .. "ta" .. oxy .. "s",
v= vow .. "ntas",
})
else
if not args.participle_n_nom_d and not args.nom_d then
error('Please indicate nominative dual (identical to feminine stem) with nom_d')
else
if args.nom_d then
local s = mw.text.split(args.nom_d, ",")
args.participle_n_nom_d = s[1]
args.participle_n_nom_d2 = s[2]
end
-- neuter nom.du. taken from feminine, see Whitney §443a (though maybe artificial: §447b)
args.participle_n_nom_d = IAST_to_SLP.tr(args.participle_n_nom_d)
if args.participle_n_nom_d2 then
args.participle_n_nom_d2 = IAST_to_SLP.tr(args.participle_n_nom_d2)
decline(args, data, {}, {
n= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}},
v= {{stem = args.participle_n_nom_d, ""}, {stem = args.participle_n_nom_d2, ""}},
}, {})
else
decline(args, data, {}, {
n= {{stem = args.participle_n_nom_d, ""}},
v= {{stem = args.participle_n_nom_d, ""}},
}, {})
end
if vow == "a" then
decline(args, data, {}, {}, {
n= {"a" .. oxy .. "nti", {"A" .. oxy .. "nti", note = "ฤคเวท"}}, -- see Wackernagel III p 262
a="[nom]",
v= {"anti", {"Anti", note = "ฤคเวท"}},
})
else
decline(args, data, {}, {}, {
n= vow .. oxy .. "nti",
a="[nom]",
v= vow .. "nti",
})
end
end
decline(args, data, {
n= vow .. oxy .. "t",
a="[nom]",
v= vow .. "t",
}, {}, {})
end
decline(args, data, {
i= vow .. "tA" .. oxy,
d= vow .. "te" .. oxy,
ab= vow .. "ta" .. oxy .. "s",
l= vow .. "ti" .. oxy,
}, {
g= vow .. "to" .. oxy .. "s",
}, {
g= vow .. "tA" .. oxy .. "m",
})
end
decline(args, data, {
g="[abl]",
}, {
a="[nom]",
i= vow .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
i= vow .. oxy .. "dBis",
d= vow .. oxy .. "dByas",
ab="[dat]",
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit at-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit at-การันต์ nouns")
end
else -- for nouns suffixed with -vat/-mat
data.decl_type = cons .. "at-การันต์"
if args.g ~= "n" then
decline(args, data, {
n="A" .. oxy .. "n",
a="a" .. oxy .. "ntam",
v={ "an", { "as", note = "ฤคเวท"} },
}, {
n={ "a" .. oxy .. "ntO", { "a" .. oxy .. "ntA", note = "พระเวท"} },
v={ "antO", { "antA", note = "พระเวท"} },
}, {
n="a" .. oxy .. "ntas",
a="a" .. oxy .. "tas",
v="antas",
})
else
decline(args, data, {
n="a" .. oxy .. "t",
a="[nom]",
v="at",
}, {
n="+I",
v="+I",
}, {
n={{"a" .. oxy .. "nti"}, {"A" .. oxy .. "nti", note = "ฤคเวท"}}, -- see Wackernagel III p 258-9
a="[nom]",
v={{"anti"}, {"Anti", note = "ฤคเวท"}},
})
end
decline(args, data, {
i="+A",
d="+e",
ab="+as",
g="[abl]",
l="+i",
}, {
a="[nom]",
i="a" .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
g="+os",
l="[gen]",
}, {
i="a" .. oxy .. "dBis",
d="a" .. oxy .. "dByas",
ab="[dat]",
g="+Am",
l="+su",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit " .. cons .. "at-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit " .. cons .. "at-การันต์ nouns")
end
end
end
})
decl_data["añc"] = {
detect = make_detect("(.+[aA]" .. sa_utils.accent .. "?Yc)$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["añc"], {
__call = function(self, args, data)
local cons, vowel, oxy = match(args.lemma, "([yv]?)([aA])(" .. sa_utils.accent .. "?)Yc$")
data.decl_type = "añc-การันต์"
-- make stem for 'middle' cases
args.stem = args.stem:gsub("Yc$", "c")
if args.g == "m" then
decline(args, data, {
n= "+", -- args.lemma
a="+am",
v= "+",
}, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
}, {
n="+as",
v="+as",
})
else -- neuter
decline(args, data, {
n= "", -- args.stem
v= "",
a="[nom]"
}, {}, {
n="+i",
v="+i",
a="[nom]"
})
end
decline(args, data, {}, {
i= "ByAm",
}, {
i= "Bis",
d= "Byas",
l= "su",
})
-- changing stem to weakest form
if vowel == "A" then
-- do nothing
elseif match(args.stem, "tirya/?c$") then -- specifically for tiryañc
args.stem = args.stem:gsub("ya(/?)c$", "a%1Sc")
elseif cons ~= "" then
args.stem = args.stem:gsub("([yv])a([/\\]?)c$",
function(cons, acc) return (cons == "y" and "I" or "U") .. (acc == "" and "" or "/") .. "c" end)
elseif match(args.stem, "dac$") then
args.stem = args.stem:gsub("ac$", "Ic")
else
error("Not supported")
end
if vowel == "A" or oxy == "" then
if args.g == "m" then
decline(args, data, nil, nil, {
a="as",
})
else -- neuter
decline(args, data, nil, {
n="I",
v="I",
})
end
decline(args, data, {
i="A",
d="e",
ab="as",
l="i",
}, {
g="os",
}, {
g="Am",
})
else -- oxytone accent, showing two possible accentuations (Whitney §410)
if args.g == "m" then
decline(args, data, nil, nil, { a={"as", {"a" .. oxy .. "s", note = "ฤคเวท", mono = true}} })
else
decline(args, data, nil, {
n= {"I", {"I" .. oxy, note = "ฤคเวท", mono = true}},
v= "I",
})
end
decline(args, data, {
i= {"A", {"A" .. oxy, note = "ฤคเวท", mono = true}},
d= {"e", {"e" .. oxy, note = "ฤคเวท", mono = true}},
ab= {"as", {"a" .. oxy .. "s", note = "ฤคเวท", mono = true}},
l= {"i", {"i" .. oxy, note = "ฤคเวท", mono = true}},
}, {
g= {"os", {"o" .. oxy .. "s", note = "ฤคเวท", mono = true}},
}, {
g= {"Am", {"A" .. oxy .. "m", note = "ฤคเวท", mono = true}},
})
end
decline(args, data, {
g="[abl]"
}, {
a="[nom]",
d="[ins]",
ab="[ins]",
l="[gen]",
}, {
ab="[dat]",
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit añc-การันต์ adjectives")
end
end
})
decl_data["o"] = {
detect = make_detect("(.+)o" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "f" end)
}
setmetatable(decl_data["o"], { -- 'gó'
__call = function(self, args, data)
local oxy = match(args.lemma, "o(" .. sa_utils.accent .. "?)$")
data.decl_type = "o-การันต์"
decline(args, data, {
n="O" .. oxy .. "s",
v="Os",
a="A" .. oxy .. "m",
i="+A",
d="+e",
ab="o" .. oxy .. "s",
g="[abl]",
l="+i",
}, {
n={ "A" .. oxy .. "vO", { "A" .. oxy .. "vA", note = "พระเวท" } },
v={ "AvO", { "AvA", note = "พระเวท" } },
a="[nom]",
i="+ByAm",
d="[ins]",
ab="[ins]",
g= "+os",
l="[gen]",
}, {
n="A" .. oxy .. "vas",
a={"A" .. oxy .. "s", { "A" .. oxy .. "vas", note = "rare" } },
v="Avas",
i="+Bis",
d="+Byas",
ab="[dat]",
g={ "+Am", { "+nAm", note = "พระเวท" } },
l="+su",
})
table.insert(data.categories, "Sanskrit o-การันต์ nouns")
end
})
decl_data["O"] = {
detect = make_detect("(.+)O" .. sa_utils.accent .. "?$",
function(args) return args.g == "m" or args.g == "f" end)
}
setmetatable(decl_data["O"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "O(" .. sa_utils.accent .. "?)$")
data.decl_type = "au-การันต์"
decline(args, data, {
n="+s",
v="+s",
a="+am",
i= {{ "+A" .. oxy, mono = true }},
d= {{ "+e" .. oxy, mono = true }},
ab={{ "+a" .. oxy .. "s", mono = true }},
g="[abl]",
l= {{ "+i" .. oxy, mono = true }},
}, {
n={ "+O", { "+A", note = "พระเวท" } },
v={ "+O", { "+A", note = "พระเวท" } },
a="[nom]",
i= {{"+ByA" .. oxy .. "m", mono = true }},
d="[ins]",
ab="[ins]",
g= {{ "+o" .. oxy .. "s", mono = true }},
l="[gen]",
}, {
n="+as",
v="+as",
a="[nom]",
i= {{"+Bi" .. oxy .. "s", mono = true }},
d= {{"+Bya" .. oxy .. "s", mono = true }},
ab="[dat]",
g= {{ "+A" .. oxy .. "m", mono = true }},
l= {{ "+su" .. oxy, mono = true }},
})
table.insert(data.categories, "Sanskrit au-การันต์ nouns")
end
})
decl_data["vāṃs"] = {
detect = make_detect("(.+)vA" .. sa_utils.accent .. "?Ms$",
function(args) return args.g == "m" or args.g == "n" end)
}
setmetatable(decl_data["vāṃs"], {
__call = function(self, args, data)
local oxy = match(args.lemma, "vA(" .. sa_utils.accent .. "?)Ms$")
data.decl_type = "vāṃs-การันต์"
local weak_stem
if match(args.stem, "baBU$") or match(args.stem, "u$") then
weak_stem = args.stem .. "v"
elseif match(args.stem, "U$") then
weak_stem = args.stem:gsub("U$", "uv")
elseif match(args.stem, "pIpi$") or match(args.stem, "dI[dD]i$") then
weak_stem = args.stem
-- the second 'i' of 'śiśrivāṃs' etc. is part of the root
elseif match(args.stem, "[aAIuUfFxeEoO]" .. sa_utils.accent .."?M?" .. sa_utils.consonant .. "+i$") or match(args.stem, "vi[Sd]i$") then
weak_stem = args.stem:gsub("i$", "")
else
weak_stem = args.stem
end
if args.g == "m" then
decline(args, data, {
n= "vA" .. oxy .. "n",
a= "vA" .. oxy .. "Msam",
v={ "van", { "vas", note = "ฤคเวท"} },
}, {
n= "vA" .. oxy .. "MsO",
a="[nom]",
v= "vAMsO",
}, {
n= "vA" .. oxy .. "Msas",
a={{stem = weak_stem, "u" .. oxy .. "zas"}},
v= "vAMsas",
})
else
decline(args, data, {
n= "va" .. oxy .. "t",
a="[nom]",
v= "vat"
}, {
n={{stem = weak_stem, "u" .. oxy .. "zI"}},
a="[nom]",
v={{stem = weak_stem, "uzI"}},
}, {
n= "vA" .. oxy .. "MsI",
a="[nom]",
v= "vAMsI"
})
end
decline(args, data, {
i={{stem = weak_stem, "u" .. oxy .. "zA"}},
d={{stem = weak_stem, "u" .. oxy .. "ze"}},
ab={{stem = weak_stem, "u" .. oxy .. "zas"}},
g="[abl]",
l={{stem = weak_stem, "u" .. oxy .. "zi"}},
}, {
i= "va" .. oxy .. "dByAm",
d="[ins]",
ab="[ins]",
g={{stem = weak_stem, "u" .. oxy .. "zos"}},
l="[gen]"
}, {
i= "va" .. oxy .. "dBis",
d= "va" .. oxy .. "dByas",
ab="[dat]",
g={{stem = weak_stem, "u" .. oxy .. "zAm"}},
l= "va" .. oxy .. "tsu"
})
if args.adj == true and args.g == "m" then
table.insert(data.categories, "Sanskrit vāṃs-การันต์ adjectives")
else
table.insert(data.categories, "Sanskrit vāṃs-การันต์ nouns")
end
end
})
return decl_data
1n5y679yuyzel8p214rrzvvkscp8e38
มอดูล:sa-utilities
828
2331800
5724840
2026-06-16T04:22:56Z
OctraBot
3198
สร้างหน้าด้วย "local export = {} -- Common regex patterns: export.consonant_list = "kKgGNcCjJYwWqQRtTdDnpPbBmyrlLvSzsh" export.consonant = "[" .. export.consonant_list .. "]" export.accent = "[/\\]" export.vowel_list = "aAiIuUfFxXeEoO" export.vowel = "[" .. export.vowel_list .. "]" export.vowel_with_accent = export.vowel .. export.accent .. "?" export.stop_list = "kKgGcCjJwWqQtTdDpPbB" export.stop = "[" .. export.stop_list .. "]" -- Abbreviated helper functions:..."
5724840
Scribunto
text/plain
local export = {}
-- Common regex patterns:
export.consonant_list = "kKgGNcCjJYwWqQRtTdDnpPbBmyrlLvSzsh"
export.consonant = "[" .. export.consonant_list .. "]"
export.accent = "[/\\]"
export.vowel_list = "aAiIuUfFxXeEoO"
export.vowel = "[" .. export.vowel_list .. "]"
export.vowel_with_accent = export.vowel .. export.accent .. "?"
export.stop_list = "kKgGcCjJwWqQtTdDpPbB"
export.stop = "[" .. export.stop_list .. "]"
-- Abbreviated helper functions:
local match = string.match
local gsub = string.gsub -- All we need for SLP1! Much faster than mw.ustring.gsub
local sub = string.sub
local lower = string.lower
local upper = string.upper
--[=[Detects whether a specified text ends in a given pattern.
Parameters:
text (String): the text to be tested
pattern (String): the query pattern to be tested on the end of the text.
Return:
Boolean
]=]
local function ends_with(text, pattern)
return match(text, pattern .. "$")
end
--[=[Detects whether a specified text begins in a given pattern.
Parameters:
text (String): the text to be tested
pattern (String): the query pattern to be tested on the beginning of the text.
Return:
Boolean
]=]
local function starts_with(text, pattern)
return match(text, "^" .. pattern)
end
-- Common transformation types:
--[=[ Increase a vowel one grade (guṇation). It is possible that this should
include provisions for guṇation of sonorants into CV configurations
(e.g. i/ī -> ya -> yā, etc.). Perhaps will need to be updated.
]=]
export.up_one_grade = {
['a'] = 'A', ['A'] = 'A', ['a/'] = 'A/', ['A/'] = 'A/', ['a\\'] = 'A\\', ['A\\'] = 'A\\',
['i'] = 'e', ['I'] = 'e', ['i/'] = 'e/', ['I/'] = 'e/', ['i\\'] = 'e\\', ['I\\'] = 'e\\',
['u'] = 'o', ['U'] = 'o', ['u/'] = 'o/', ['U/'] = 'o/', ['u\\'] = 'o\\', ['U\\'] = 'o\\',
['e'] = 'E', ['E'] = 'E', ['e/'] = 'E/', ['E/'] = 'E/', ['e\\'] = 'E\\', ['E\\'] = 'E\\',
['o'] = 'O', ['O'] = 'O', ['o/'] = 'O/', ['O/'] = 'O/', ['o\\'] = 'O\\', ['O\\'] = 'O\\',
['f'] = 'ar', ['F'] = 'ar', ['f/'] = 'a/r', ['F/'] = 'a/r', ['f\\'] = 'a\\r', ['F\\'] = 'a\\r',
['x'] = 'al', ['x/'] = 'a/l', ['x\\'] = 'a\\l',
}
-- Lengthen a vowel
export.lengthen = {
['a'] = 'A', ['A'] = 'A', ['a/'] = 'A/', ['A/'] = 'A/', ['a\\'] = 'A\\', ['A\\'] = 'A\\',
['i'] = 'I', ['I'] = 'I', ['i/'] = 'I/', ['I/'] = 'I/', ['i\\'] = 'I\\', ['I\\'] = 'I\\',
['u'] = 'U', ['U'] = 'U', ['u/'] = 'U/', ['U/'] = 'U/', ['u\\'] = 'U\\', ['U\\'] = 'U\\',
['f'] = 'F', ['F'] = 'F', ['f/'] = 'F/', ['F/'] = 'F/', ['f\\'] = 'F\\', ['F\\'] = 'F\\',
}
-- Decrease vowel one grade (reverse of above)
export.shorten = {
['a'] = 'a', ['A'] = 'a', ['a/'] = 'a/', ['A/'] = 'a/', ['a\\'] = 'a\\', ['A\\'] = 'a\\',
['i'] = 'i', ['I'] = 'i', ['i/'] = 'i/', ['I/'] = 'i/', ['i\\'] = 'i\\', ['I\\'] = 'i\\',
['u'] = 'u', ['U'] = 'u', ['u/'] = 'u/', ['U/'] = 'u/', ['u\\'] = 'u\\', ['U\\'] = 'u\\',
['f'] = 'f', ['F'] = 'f', ['f/'] = 'f/', ['F/'] = 'f/', ['f\\'] = 'f\\', ['F\\'] = 'f\\',
}
-- Convert a monosegmental (or at least monoliteral) diphthong into a/ā + glide.
export.split_diphthong = {
['e'] = 'ay', ['e/'] = 'a/y', ['e\\'] = 'a\\y',
['E'] = 'Ay', ['E/'] = 'A/y', ['E\\'] = 'A\\y',
['o'] = 'av', ['o/'] = 'a/v', ['o\\'] = 'a\\v',
['O'] = 'Av', ['O/'] = 'A/v', ['O\\'] = 'A\\v',
}
-- reverse of above
local join_diphthong = {
['ay'] = 'e', ['a/y'] = 'e/', ['a\\y'] = 'e\\',
['Ay'] = 'E', ['A/y'] = 'E/', ['A\\y'] = 'E\\',
['av'] = 'o', ['a/v'] = 'o/', ['a\\v'] = 'o\\',
['Av'] = 'O', ['A/v'] = 'O/', ['A\\v'] = 'O\\',
}
-- Convert a syllabic sonorant to its associated consonantal form.
export.vowel_to_cons = {
['i'] = 'y', ['I'] = 'y',
['u'] = 'v', ['U'] = 'v',
['f'] = 'r', ['F'] = 'r',
['x'] = 'l', ['X'] = 'l',
}
local cons_to_vowel = { ['y'] = 'i', ['r'] = 'f', ['v'] = 'u', ['l'] = 'x' }
local to_velar = { ['c'] = 'k', ['j'] = 'g', ['h'] = 'G' }
-- Add a homorganic glide to a vowel
local insert_glide = {
['i'] = 'iy', ['I'] = 'iy', ['i/'] = 'i/y', ['I/'] = 'i/y', ['i\\'] = 'i\\y', ['I\\'] = 'i\\y',
['u'] = 'uv', ['U'] = 'uv', ['u/'] = 'u/v', ['U/'] = 'u/v', ['u\\'] = 'u\\v', ['U\\'] = 'u\\v',
}
--[=[Convert all unambiguous stops to their absolute final value. The equivalent
values (e.g. k = k) may be redundant given the implementation of
absolute_final and internal_sandhi below.
]=]
export.to_final = {
['k'] = 'k', ['K'] = 'k', ['g'] = 'k', ['G'] = 'k',
['c'] = 'k', ['C'] = 'w', ['J'] = 'w', -- value for 'J' is theoretical
['w'] = 'w', ['W'] = 'w', ['q'] = 'w', ['Q'] = 'w', ['L'] = 'w',
['t'] = 't', ['T'] = 't', ['d'] = 't', ['D'] = 't',
['p'] = 'p', ['P'] = 'p', ['b'] = 'p', ['B'] = 'p',
['Y'] = 'N', ['z'] = 'w',
}
-- Convert dental to retroflex
local function dental_to_retroflex(str)
local changes = {
['t'] = 'w', ['T'] = 'W', ['d'] = 'q', ['D'] = 'Q', ['n'] = 'R',
}
return gsub(str, '.', changes)
end
-- Remove aspiration
export.deaspirate = {
['K'] = 'k', ['G'] = 'g',
['C'] = 'c', ['J'] = 'j',
['W'] = 'w', ['Q'] = 'q',
['T'] = 't', ['D'] = 'd',
['P'] = 'p', ['B'] = 'b',
}
export.aspirate = {
['g'] = 'G', ['j'] = 'J', ['q'] = 'Q', ['d'] = 'D', ['b'] = 'B'
}
export.to_voiced = {
['k'] = 'g', ['c'] = 'j', ['w'] = 'q', ['t'] = 'd', ['p'] = 'b'
}
export.homorganic_nasal = {
['k'] = 'N', ['K'] = 'N', ['g'] = 'N', ['G'] = 'N',
['c'] = 'Y', ['C'] = 'Y', ['j'] = 'Y', ['J'] = 'Y',
['w'] = 'R', ['W'] = 'R', ['q'] = 'R', ['Q'] = 'R',
['t'] = 'n', ['T'] = 'n', ['d'] = 'n', ['D'] = 'n',
['p'] = 'm', ['P'] = 'm', ['b'] = 'm', ['B'] = 'm',
['r'] = 'M', ['l'] = 'M', -- or 'l~'
['S'] = 'M', ['z'] = 'M', ['s'] = 'M', ['h'] = 'M'
}
--[=[Detects whether a word is monosyllabic. This function does not apply sandhi
to determing whether a potential phonemic form like /dā́rv/ would be
syllabified to [dā́ru]. This might need to be changed.
Parameters:
text (String): the text to be checked for monosyllabicity
Return:
Boolean
]=]
function export.is_monosyllabic(text)
return match(text, "^" .. export.consonant .. "*" .. export.vowel_with_accent .. "[HM~]?" .. export.consonant .. "*$")
end
--[=[Transforms a word to its absolute final sandhi form.
Parameters:
text (String): the text to be converted to final sandhi position
ambig_final (String): an indication of what outcome j/ś/h should have as
these will unpredictably produce either a retroflex or a velar
stop in final position (e.g. spáś- > spáṭ 'spy' vs. náś- > nák 'night').
Required for j/ś/h-final strings.
Return:
String
]=]
local function absolute_final(text, ambig_final, j_to_z, h_to_g)
if ends_with(text, "kz") then -- final -kṣ > ṭ
text = gsub(text, "..$", "w")
elseif ends_with(text, "Ms") then
text = gsub(text, "..$", "n")
-- final r + stop is allowed in stem, see Whitney §150b (endings -s/-t after consonant have been eliminated previously)
elseif ends_with(text, export.vowel_with_accent .. "r[" .. export.stop_list .. "SzhL]") then
-- do nothing
elseif ends_with(text, export.consonant .. export.consonant) then -- at least 2 consonants
-- Take the first of the cluster.
text = gsub(text, "(" .. export.consonant .. "+)$",
function(cluster) return sub(cluster, 1, 1) end)
end
-- ḷh, v, and y are not handled as they should not appear finally. Perhaps wrong.
if ambig_final then -- in case of -j/ś/h, but also to override the normal value in a few exceptional cases
text = gsub(text, ".$", ambig_final)
elseif ends_with(text, "[kwtpNRnmlaAiIuUeEoOfFxXH][/\\]?") then
-- do nothing
elseif ends_with(text, "M") then -- just in case, ṃ > m
text = gsub(text, ".$", "m")
elseif ends_with(text, "[sr]") then -- convert to final visarga
text = gsub(text, ".$", "H")
elseif ends_with(text, "[KgGcCJWqQTdDPbBYzL]") then -- Handle final stops.
text = gsub(text, ".$", export.to_final)
elseif ends_with(text, "[jhS]") then -- see also ambig_final above
if j_to_z then
text = gsub(text, "j$", "w")
elseif h_to_g then
text = gsub(text, "h$", "k")
else
text = gsub(text, ".$", {['j'] = 'k', ['h'] = 'w', ['S'] = 'w'}) -- most common values
end
end
return text
end
--[=[Applying retroflexion to a stem and ending without joining them.
This include RUKI, ṣ-cluster harmony, and nasal retroflexions.
Parameters:
stem (String): the stem to receive an ending
ending (String): the ending to be affixed
Return:
String (stem), String (ending)
]=]
function export.retroflexion(stem, ending, no_retroflex_root_s, han, stem_final_n)
-- Does the stem end in a RUKI environment?
if ends_with(stem, "[iIeEfFxuUoOrk][/\\]?[HM]?") then
ending = gsub(ending, "^s([^rfF])", "z%1") -- Convert ending-initial s > ṣ not followed by [rṛṝ].
ending = gsub(ending, "^z[tTdDn]*", dental_to_retroflex)
end
-- Does the stem end in a RUKI environment followed by s and the ending not start with [rṛṝ]?
if ends_with(stem, "[iIeEfFxuUoOrk][/\\]?[HM]?s") and starts_with(ending, "[^rfF]")
and not no_retroflex_root_s == true then
stem = gsub(stem, "s$", "z") -- Convert stem-final s > ṣ
end
if ends_with(stem, "[zqwR]") then -- Does the stem end in a retroflex?
-- Convert an ending-initial dental (cluster) to retroflex
ending = gsub(ending, "^[tTdDn]*", dental_to_retroflex)
end
-- Does the stem contain a nasal harmony trigger without intervening blockers?
if ends_with(stem, "[zrfF][^cCjJYwWqQRtTdDnSslL]*") and not (han and ends_with(stem, "G") and starts_with(ending, "n")) then
-- Convert all retroflexable n > ṇ in the ending
ending = gsub(ending, "^([^cCjJYwWqQRtTdDnSslL]*)n([aAiIeEfFxuUoOynmv])", "%1R%2")
end
-- Does the stem contain a nasal harmony trigger without intervening blockers and stem-final n?
-- (Compounds ending in -na (with nasal harmony trigger in first member) shouldn't have there 'n' retroflexed)
if stem_final_n and ends_with(stem, "[zrfF][^cCjJYwWqQRtTdDnSslL]*n") and starts_with(ending, "[aAiIuUxeEoOnmyv]") then
stem = gsub(stem, "n$", "R") -- Convert stem-final n > ṇ
end
-- For safety, does the ending contain an unblocked nasal harmony trigger and unretroflexed n?
ending = gsub(ending,
"([zrfF][^cCjJYwWqQRtTdDnSslL]*)n([aAiIuUxeEoOnmyv])", "%1R%2")
return stem, ending
end
--[=[Combine a stem and ending while modifiying the accentuation. This does not currently
account for mobility of accent between the stem and ending.
Parameters:
stem (String): the stem to receive an ending
ending (String): the ending to be affixed
has_accent (Boolean): whether the word has an accent to be modified at all
accent_override (Boolean): whether to strip the stem of accent
mono (Boolean): whether the stem is monosyllabic AND susceptible to
accentual mobility (cf. pā́dam ~ padā́ vs. gā́m ~ gávā). This should
perhaps be renamed or removed as redundant to accent_override in this
function. This should not be applied to *all* monosyllabic nouns!
recessive (Boolean): whether the accent must be moved to the leftmost vowel (in the vocative)
voc_svar (Boolean): to indicate that the first syllable should get svarita in the vocative
Return:
String
]=]
local function combine_accent(stem, ending, has_accent, accent_override, mono, recessive, voc_svar)
if has_accent then
if starts_with(stem, "-") and recessive then -- suffix in vocative case
stem = gsub(stem, export.accent, "")
ending = gsub(ending, export.accent, "")
-- vocative; no change if first syllable has svarita
elseif recessive and not starts_with(stem, export.consonant .. "*" .. export.vowel .. "\\") then
local combined = stem .. ending -- combine word
combined = gsub(combined, export.accent, "") -- remove any accent
if voc_svar and match(combined, "^" .. export.consonant .. "+[vy]" .. export.vowel) then
combined = gsub(combined, "^(" .. export.consonant .. "+" .. export.vowel .. ")", "%1\\") -- svarita on first vowel
else
combined = gsub(combined, "^(" .. export.consonant .. "*" .. export.vowel .. ")", "%1/") -- udatta on first vowel
end
return combined
elseif accent_override or (mono and match(ending, export.accent)) then
stem = gsub(stem, export.accent, "") -- remove all accents from stem
ending = gsub(ending, "\\", "/") -- convert svarita to udatta on ending
-- If both the stem and ending are accented, remove the ending accent. This may be too simple.
elseif match(stem, export.accent) and match(ending, export.accent) then
ending = gsub(ending, export.accent, "")
end
end
return stem .. ending
end
local function aspirate_diaspirate(stem)
stem = gsub(stem, "(.*)([gdb])([^gdb]+[gdb]?)$", function(pre, cons, post) return (pre .. export.aspirate[cons]) .. post end)
return stem
end
--[=[Return a word-stem combined with a given ending while handling internal
sandhi and accentuation. Please see the implementation for details.
Parameters:
input_table (Table): This table is expected to contain the items:
stem (String): the stem to receive an ending
ending (String): the ending to be affixed
has_accent (Boolean): whether the word has an accent to be modified
mono (Boolean): whether the stem is monosyllabic OR behaves like a monosyllable (e.g. root noun compounds)
accent_override (Boolean): whether to strip the stem of accent since
some non-monosyllabic forms (e.g. present participles and gen.pl.)
may show stem-to-ending accentual mobility.
recessive (Boolean): whether the accent must be moved to the leftmost vowel (e.g. in the vocative)
j_to_z (Boolean): whether to convert j > ṣ before {t, th} instead of j > k
h_to_g (Boolean): whether to convert h > g before {t, th, d, dh} (duh + -tá = dugdhá) instead of h + t > ḍh (lih + -tá = līḍhá)
retroflex_l (Boolean): produces ḷ(h) instead of ḍ(h) intervocalically (Vedic variant)
non_final (Boolean): if true, will not apply word-final sandhi (i.e. convert s to visarga)
Return:
String
]=]
function export.internal_sandhi(input_table)
local stem, ending = input_table.stem, input_table.ending
local last -- last segment of the stem
local acc -- the accent
local first -- the first segment of the ending
local combined -- the combined form
-- explicitly ignored are CV, C + semivowel, or C + nasal
if starts_with(ending, export.consonant) then
-- {i, u} > {ī, ū} /__[rs]C if stem is monosyllabic (e.g. gir, pur + ā-śis)
if ends_with(stem, "[iu][/\\]?[rs]") and input_table.root and not ends_with(stem, "catu/?r") then
stem = gsub(stem, "([iu][/\\]?)([rs])$", function(vow, cons) return export.lengthen[vow] .. cons end)
-- consonant + y/r/v + consonant from ending
-- note that sequences like 'trv' can occur, e.g. śatrvos, gen.dual of śatru, so the case ending should be given as 'os' there, not 'vos'
elseif ends_with(stem, export.consonant .. "[yrv]") then -- e.g. śvan > śunā / cakruḥ > cakṛma
stem = gsub(stem, ".$", cons_to_vowel)
-- no word-initial clusters with y-, for verb 'eti, yanti'
elseif stem == "y" then stem = "i"
-- e.g. yuvan > yūnā / iyaja > īje (Whitney §800j) / babhūva > babhūtha (§800d)
elseif (ends_with(stem, "[uU][/\\]?v") or ends_with(stem, "[iI][/\\]?y") ) and starts_with(ending, "[^yrl]") then
if ends_with(stem, export.consonant..export.consonant.."[iu][/\\]?[yv]") then
-- do nothing
else
stem = gsub(stem, "([iIuU][/\\]?)[yv]$", function(vow) return export.lengthen[vow] end)
end
elseif ends_with(stem, "a[/\\]?[vy]") and starts_with(ending, "[^yrl]") then
stem = gsub(stem, "(a[/\\]?[vy])$", function(diph) return join_diphthong[diph] end)
-- historical vocalisation of PIE nasal vowels; omitting endings starting with 'y' (optative) as 'gmy' actually occurs
elseif ends_with(stem, export.consonant .. "[nmY]") then
if starts_with(ending, "[mv]") then
stem = gsub(stem, ".$", "an")
elseif starts_with(ending, "[tTDBs]") then
stem = gsub(stem, ".$", "a")
end
end
end
-- remove -s/-t verbal endings after consonant (Whitney §555)
-- plus -s after nominal consonant stem (used to provoke a long vowel in -ir/-ur stems)
if ends_with(stem, "[" .. export.consonant_list .. "M]") and match(ending, "^[st]$") then
ending = gsub(ending, ".", "")
end
if ending == "" then
if ends_with(stem, "[mM]") then -- final 'm' of a root becomes 'n'
stem = gsub(stem, ".$", "n")
elseif input_table.diaspirate then -- budh > bhut, etc.
stem = aspirate_diaspirate(stem)
end
-- combine_accent for vocatives without ending
combined = combine_accent(stem, ending, input_table.has_accent, input_table.accent_override,
input_table.mono, input_table.recessive, input_table.voc_svar)
return absolute_final(combined, input_table.ambig_final, input_table.j_to_z, input_table.h_to_g)
-- all cases of ending starts with vowel
elseif starts_with(ending, export.vowel) then
if ends_with(stem, export.vowel_with_accent) then -- stem ends with vowel
-- strip last vowel and accent off stem
stem, last, acc = match(stem, "^(.*)(" .. export.vowel .. ")(" .. export.accent .. "?)$")
-- strip first vowel off ending
first, ending = match(ending, "^(.)(.*)$")
-- monosyllabic semivowel-final stems (this applies to root noun compounds as well)
if match(last, '[iIuU]') and ( input_table.mono or input_table.no_syncope ) then
stem = stem .. insert_glide[last .. acc]
ending = first .. ending
elseif export.split_diphthong[last] then -- Can a stem-final guna and vrddhi be split into V + sonorant?
stem = stem .. export.split_diphthong[last .. acc]
ending = first .. ending
elseif lower(last) == lower(first) then -- homorganic vowels
ending = upper(first) .. acc .. ending
elseif lower(last) == "a" then -- gunation and vrddhization after stem-final a.
ending = export.up_one_grade[first .. acc] .. ending
elseif export.vowel_to_cons[last] then -- Can the stem-final vowel be made consonantal?
stem = gsub(stem, "L$", "q"); stem = gsub(stem, "Lh$", "Q") -- convert ḷ(h) to ḍ(h)
stem = stem .. export.vowel_to_cons[last]
ending = first .. (acc == "/" and "\\" or "") .. ending -- Convert stem-final udatta to ending-initial svarita
if match(stem, "^" .. export.consonant .. "*yv$") then -- dyu- > divā
stem = gsub(stem, "..$", "iv")
end
end
end
-- endings starting with consonants
-- for middle s-aorist 2nd plural
elseif ends_with(stem, export.vowel_with_accent .. 'M?') and starts_with(ending, "sD") then
if ends_with(stem, "[iIeEfFxuUoO][/\\]?") then
ending = gsub(ending, '^..', 'Q')
else
ending = gsub(ending, '^..', 'D')
stem = gsub(stem, 'M$', 'n')
end
-- n > ñ /__{c, j}
elseif ends_with(stem, "[cj]") and starts_with(ending, "n") then
ending = gsub(ending, "^.", "Y")
elseif input_table.han and starts_with(ending, "n") then
stem = gsub(stem, 'h$', 'G')
-- All other C- + -C interactions
elseif ends_with(stem, export.consonant) and starts_with(ending, export.consonant) then
stem = gsub(stem, "L$", "q"); stem = gsub(stem, "Lh$", "Q") -- convert ḷ(h) to ḍ(h)
-- for nominal endings -bhyām, -bhis, -bhyas, -su (see Whitney §111a)
if starts_with(ending, "B[iy]") or starts_with(ending, "su" .. export.accent .. "?$") then
if ends_with(stem, "kz") then -- final -kṣ > ṭ
stem = gsub(stem, "..$", "w")
-- final r + stop is allowed in stem, see Whitney §150b
elseif ends_with(stem, export.vowel_with_accent .. "r[" .. export.stop_list .. "SzhL]") then
-- do nothing
elseif ends_with(stem, export.consonant .. export.consonant) then -- at least 2 consonants
-- take the first of the cluster
stem = gsub(stem, "(" .. export.consonant .. "+)$",
function(cluster) return sub(cluster, 1, 1) end)
end
if ends_with(stem, "[jSh]") or input_table.ambig_final then
stem = gsub(stem, ".$", input_table.ambig_final) -- in case of -j/ś/h, but also to override the normal value in a few exceptional cases
elseif ends_with(stem, "[KgGcCJWqQTdDPbBz]") then
stem = gsub(stem, ".$", export.to_final)
elseif ends_with(stem, "m") then
stem = gsub(stem, ".$", "n")
-- Loss of {z, ẓ} with compensatory lengthening before voiced consonant. (FIXME: but what about the médha- < *mázdha- type?)
elseif ends_with(stem, "[aA][/\\]?s") and starts_with(ending, "[rgGdDbByvjJqQlLhnm]") then
stem = gsub(stem, "([aA])([/\\]?)s$",
function(vow, acc) return (vow == "a" and "o" or "A") .. acc end)
-- final s-allophones
elseif ends_with(stem, "s") then
if starts_with(ending, "[kKpPzsS]") then -- visarga
stem = gsub(stem, ".$", "H")
elseif starts_with(ending, "[gGjJqQdDbByvlLhnm]") then -- s > r
stem = gsub(stem, ".$", "r")
-- outcommented because not relevant to internal sandhi
-- elseif starts_with(ending, "[cCwW]") then -- homorganic fricative
-- local homorg_s = {
-- ['c'] = 'S', ['C'] = 'S',
-- ['w'] = 'z', ['W'] = 'z',
-- }
-- stem = gsub(stem, ".$", homorg_s[sub(ending, 1, 1)])
-- elseif starts_with(ending, "r") then -- Loss of z before r with compensatory lengthening before voiced consonant.
-- stem = gsub(stem, "(" .. export.vowel .. "[/\\])[sHr]$", function(vow) return export.lengthen[vow] or vow end)
end
end
-- if ends_with(stem, "w") and starts_with(ending, "n") then -- for 'ṣaṇṇām'
-- stem = gsub(stem, "w$", "R")
-- end
else -- for all other endings
-- s-aorist (Whitney §881)
if (ends_with(stem, "[^rnm]") and starts_with(ending, "s[tT]")) or starts_with(ending, "sD") then
ending = gsub(ending, '^s', '')
end
-- diaspirate verbs with -dhve/-dhvam ending, see paper "Sanskrit as she has been misanalyzed ..." (Janda & Joseph, 2002), p.28-29
if input_table.diaspirate and starts_with(ending, "Dv") then
stem = aspirate_diaspirate(stem)
elseif (ends_with(stem, "jj") or ends_with(stem, "Sc")) and starts_with(ending, "[tTdDs]") then
stem = gsub(stem, ".$", "") -- further treated below
end
if ends_with(stem, "kz") then -- roots on -kṣ
if starts_with(ending, "s") then
stem = gsub(stem, "..$", 'k')
elseif starts_with(ending, "[tT]") then
stem = gsub(stem, "Nkz$", 'Mz')
stem = gsub(stem, "kz$", 'z')
elseif starts_with(ending, "[dD]") then
stem = gsub(stem, "Nkz$", 'Rq')
stem = gsub(stem, "kz$", 'q')
end
elseif ends_with(stem, "[cJ]") and starts_with(ending, "[tTdDs]") then
stem = gsub(stem, "Y.$", 'Nk')
stem = gsub(stem, "[cJ]$", 'k')
elseif ends_with(stem, "[jCSzh]") and starts_with(ending, "s") then
stem = gsub(stem, "[YM].$", 'Nk')
stem = gsub(stem, "[jCSzh]$", 'k')
elseif ends_with(stem, "[jCSz]") and starts_with(ending, "[tTdD]") then
if input_table.j_to_z or input_table.ambig_final == "w" or ends_with(stem, "[CSz]") then
if starts_with(ending, "[tT]") then
stem = gsub(stem, 'Y[jC]$', 'Mz')
stem = gsub(stem, "[jCS]$", 'z')
else
stem = gsub(stem, '[YM].$', 'Rq')
stem = gsub(stem, '[jCSz]$', 'q')
end
else
stem = gsub(stem, "Yj$", 'Nk')
stem = gsub(stem, "j$", 'k')
end
elseif ends_with(stem, "h") and starts_with(ending, "[tTdD]") then
if input_table.h_to_g then
stem = gsub(stem, "h$", "g")
ending = gsub(ending, "^.", "D")
else
if ends_with(stem, "va/?h") then -- root 'vah' (sometimes also 'sah', see Whitney §224b)
stem = gsub(stem, "a(/?)h$", "o%1")
else -- {a, i, u}h + {t, th, d, dh} > {ā, ī, ū}ḍh (Bartholomae's Law with retroflection and compensatory lengthening)
stem = gsub(stem, "([aiu]?)([/\\]?)h$", function(vow, acc) return (export.lengthen[vow] or "") .. acc end)
stem = gsub(stem, 'M$', 'R')
end
if input_table.retroflex_l and starts_with(ending, "." .. export.vowel) then
ending = gsub(ending, "^.", "Lh")
else
ending = gsub(ending, "^.", "Q")
end
end
-- -vāṃs, see Whitney §216 j
elseif input_table.deriv and ((ends_with(stem, "[cj]") and not input_table.j_to_z)
or (ends_with(stem, "h") and input_table.h_to_g)) then
stem = gsub(stem, ".$", to_velar)
stem = gsub(stem, "[YM](.)$", "N%1")
-- e.g. śādhi (Whitney §166)
elseif ends_with(stem, "As") and match(ending, "^Di/?$") then
stem = gsub(stem, "s$", "")
-- following Whitney's convention at §612 of interpreting 'dhv' from 's + dhv' as 'ddhv' (see also §166 and §232)
-- sometimes also in nouns + -bhis, etc. (normally handled by input_table.final above)
elseif ends_with(stem, ".s") and starts_with(ending, "[DB]") then
stem = gsub(stem, "Ms$", "nd")
stem = gsub(stem, "s$", "d")
-- for the (basically theoretical) middle voice of 'asti'
elseif stem == "s" and starts_with(ending, "[sD]") then stem = ""
elseif ends_with(stem, "m") then -- if stem ends in m
-- m > ṃ before {h, ś, ṣ, s} and homorganic before stops (Whitney §212)
if starts_with(ending, "[kKgGcCjJwWqQtTdDSzsh]") then
stem = gsub(stem, "m$", export.homorganic_nasal[sub(ending, 1, 1)])
elseif starts_with(ending, "[mv]") then
stem = gsub(stem, "m$", "n")
end
elseif ends_with(stem, "n") then -- if stem ends in n
if starts_with(ending, "[Szs]") then -- n > ṃ /__{ś, ṣ, s}
stem = gsub(stem, ".$", "M")
end
elseif ends_with(stem, "[KGWQTDPB]") and starts_with(ending, "[^NYRnmyrlv]") then -- Whitney §153
-- Bartholomae's Law
if ends_with(stem, "[GQDB]") and starts_with(ending, "[tT]") then
ending = gsub(ending, "^.", "D")
end
stem = gsub(stem, ".$", export.deaspirate)
end
-- {g, ḍ, d, b} > {k, ṭ, t, p} before following unvoiced stop/sibilant
if ends_with(stem, "[gqbd]") and starts_with(ending, "[kKcCwWtTpPSzs]") then
stem = gsub(stem, ".$", export.to_final)
end
end
-- general rules for both 'final' (pāda) endings and others (outcommented lines are only relevant for external sandhi)
if ends_with(stem, "[kwp]") then
if starts_with(ending, "[gGjJqQdDbB]") then -- {k, ṭ, p} > {g, ḍ, b} before following voiced stop
stem = gsub(stem, ".$", export.to_voiced)
-- elseif starts_with(ending, "h") then -- {k, ṭ, p}h > {ggh, ḍḍh, bbh}
-- stem = gsub(stem, ".$", export.to_voiced)
-- ending = gsub(ending, "^.", gsub(stem, ".$", {['k'] = 'G', ['w'] = 'Q', ['p'] = 'B'}))
end
elseif ends_with(stem, "t") then
if starts_with(ending, "[gGdDbB]") then -- t > d /__{g(h), d(h), b(h)}
stem = gsub(stem, ".$", "d")
-- elseif starts_with(ending, "h") then -- t + h > ddh
-- stem = gsub(stem, ".$", "d")
-- ending = gsub(ending, "^.", "D")
-- elseif starts_with(ending, "[cCjJwWqQ]") then -- homorganic with following stop
-- local t_pre_palatal_retroflex =
-- { ['c'] = 'c', ['C'] = 'c', ['j'] = 'j', ['J'] = 'j',
-- ['w'] = 'w', ['W'] = 'w', ['q'] = 'q', ['Q'] = 'q', }
-- stem = gsub(stem, ".$", t_pre_palatal_retroflex[sub(ending, 1, 1)])
-- elseif starts_with(ending, "S") then -- tś > cch
-- stem = gsub(stem, ".$", "c")
-- ending = gsub(ending, "^.", "C")
-- elseif starts_with(ending, "l") then
-- stem = gsub(stem, ".$", "l")
end
end
-- note that nominal endings with -bh also trigger aspiration throwback
if input_table.diaspirate and ends_with(stem, "[^GDBh]") and starts_with(ending, "[^QD]") then
stem = aspirate_diaspirate(stem)
end
end
stem, ending = export.retroflexion(stem, ending, input_table.no_retroflex_root_s, input_table.han, input_table.stem_final_n)
combined = combine_accent(stem, ending, input_table.has_accent, input_table.accent_override,
input_table.mono, input_table.recessive, input_table.voc_svar)
if input_table.non_final then return combined end
return absolute_final(combined)
end
return export
9cytjvohcdcis6lctfbwkpst371qzlr
มอดูล:sa-utilities/translit/SLP1-to-IAST
828
2331801
5724841
2026-06-16T04:23:29Z
OctraBot
3198
สร้างหน้าด้วย "local export = {} local U = require("Module:string/char") local acute = U(0x301) -- combining acute local grave = U(0x300) -- combining grave local diaeresis = U(0x308) -- combining diaeresis local tt = { [1] = { -- consonants ['K'] = 'kh', ['G'] = 'gh', ['N'] = 'ṅ', ['C'] = 'ch', ['J'] = 'jh', ['Y'] = 'ñ', ['w'] = 'ṭ', ['W'] = 'ṭh', ['q'] = 'ḍ', ['Q'] = 'ḍh', ['R'] = 'ṇ', ['T'] = 'th', ['D'] = 'dh', ['P'] = 'ph', ['B'] =..."
5724841
Scribunto
text/plain
local export = {}
local U = require("Module:string/char")
local acute = U(0x301) -- combining acute
local grave = U(0x300) -- combining grave
local diaeresis = U(0x308) -- combining diaeresis
local tt = {
[1] = {
-- consonants
['K'] = 'kh', ['G'] = 'gh', ['N'] = 'ṅ',
['C'] = 'ch', ['J'] = 'jh', ['Y'] = 'ñ',
['w'] = 'ṭ', ['W'] = 'ṭh', ['q'] = 'ḍ', ['Q'] = 'ḍh', ['R'] = 'ṇ',
['T'] = 'th', ['D'] = 'dh', ['P'] = 'ph', ['B'] = 'bh',
['L'] = 'ḷ', ['S'] = 'ś', ['z'] = 'ṣ',
-- vowels
['A'] = 'ā',
['I'] = 'ī',
['U'] = 'ū',
['f'] = 'ṛ', ['F'] = 'ṝ',
['x'] = 'ḷ', ['X'] = 'ḹ',
['E'] = 'ai',
['O'] = 'au',
-- chandrabindu
['~'] = 'm̐', --until a better method is found
-- anusvara
['M'] = 'ṃ', --until a better method is found
-- visarga
['H'] = 'ḥ',
-- avagraha
["'"] = '’',
--Vedic extensions
['/'] = acute,
['\\'] = grave,
},
[2] = {
--Vedic extensions
['Z'] = 'x',
['V'] = 'f',
},
}
function export.tr(text, lang, sc)
text = mw.ustring.gsub(text, '(a[/\\]?[iu])', '%1' .. diaeresis)
text = mw.ustring.gsub(text, '.', tt[1])
text = mw.ustring.gsub(text, '.', tt[2])
text = mw.ustring.gsub(text, 'a([iu])([' .. acute .. grave .. '])', 'a%2%1')
return mw.ustring.toNFC(text)
end
return export
btule1qavlhxx97pq1zfvzfld7nqfkf
มอดูล:sa-utilities/translit/SLP1-to-Deva
828
2331802
5724842
2026-06-16T04:24:10Z
OctraBot
3198
สร้างหน้าด้วย "local export = {} local consonant_list = "kKgGNcCjJYwWqQRtTdDnpPbBmyrlLvSzsh" local consonant = "[" .. consonant_list .. "]" local vowel_list = "aAiIuUfFxXeEoO" local vowel = "[" .. vowel_list .. "]" local U = require("Module:string/char") local gsub = mw.ustring.gsub local gmatch = mw.ustring.gmatch local virAma = U(0x94D) local svar = U(0x951) local anud = U(0x952) local diacritics = { ['a'] = '', ['A'] = 'ा', ['i'] = 'ि', ['I'] = 'ी',..."
5724842
Scribunto
text/plain
local export = {}
local consonant_list = "kKgGNcCjJYwWqQRtTdDnpPbBmyrlLvSzsh"
local consonant = "[" .. consonant_list .. "]"
local vowel_list = "aAiIuUfFxXeEoO"
local vowel = "[" .. vowel_list .. "]"
local U = require("Module:string/char")
local gsub = mw.ustring.gsub
local gmatch = mw.ustring.gmatch
local virAma = U(0x94D)
local svar = U(0x951)
local anud = U(0x952)
local diacritics = {
['a'] = '', ['A'] = 'ा',
['i'] = 'ि', ['I'] = 'ी',
['u'] = 'ु', ['U'] = 'ू',
['f'] = 'ृ', ['F'] = 'ॄ',
['x'] = 'ॢ', ['X'] = 'ॣ',
['e'] = 'े', ['E'] = 'ै',
['o'] = 'ो', ['O'] = 'ौ',
}
local tt = {
-- consonants
['k'] = 'क', ['K'] = 'ख', ['g'] = 'ग', ['G'] = 'घ', ['N'] = 'ङ',
['c'] = 'च', ['C'] = 'छ', ['j'] = 'ज', ['J'] = 'झ', ['Y'] = 'ञ',
['w'] = 'ट', ['W'] = 'ठ', ['q'] = 'ड', ['Q'] = 'ढ', ['R'] = 'ण',
['t'] = 'त', ['T'] = 'थ', ['d'] = 'द', ['D'] = 'ध', ['n'] = 'न',
['p'] = 'प', ['P'] = 'फ', ['b'] = 'ब', ['B'] = 'भ', ['m'] = 'म',
['y'] = 'य', ['r'] = 'र', ['l'] = 'ल', ['v'] = 'व', ['L'] = 'ळ',
['S'] = 'श', ['z'] = 'ष', ['s'] = 'स', ['h'] = 'ह',
-- vowels
['a'] = "अ", ['A'] = "आ",
['i'] = "इ", ['I'] = "ई",
['u'] = "उ", ['U'] = "ऊ",
['f'] = "ऋ", ['F'] = "ॠ",
['x'] = "ऌ", ['X'] = "ॡ",
['e'] = "ए", ['E'] = "ऐ",
['o'] = "ओ", ['O'] = "औ",
-- chandrabindu
['~'] = 'ँ',
-- anusvara
['M'] = 'ं',
-- visarga
['H'] = 'ः',
-- avagraha
["'"] = 'ऽ',
--numerals
['0'] = '०', ['1'] = '१', ['2'] = '२', ['3'] = '३', ['4'] = '४', ['5'] = '५', ['6'] = '६', ['7'] = '७', ['8'] = '८', ['9'] = '९',
--Vedic extensions
['Z'] = 'ᳵ',
['V'] = 'ᳶ',
-- ['/'] = '',
-- ['\\'] = '',
}
function export.tr(text, lang, sc)
-- Introduce underscore as extra 'accent' for syllables where dependent svarita becomes anudatta (viz. between two udatta's).
text = gsub(text, "(/[" .. consonant_list .. " 'HM~]*".. vowel ..")([" .. consonant_list .. " 'HM~]*".. vowel .."/)", "%1_%2")
text = gsub(text, "(/[" .. consonant_list .. " 'HM~]*".. vowel ..")([" .. consonant_list .. " 'HM~]*".. vowel .."/)", "%1_%2") -- twice
-- capture twice so that all adjacent pairs are covered
text = gsub(text, "(" .. consonant .. ")(" .. consonant .. ")", "%1" .. virAma .. "%2")
text = gsub(text, "(" .. consonant .. ")(" .. consonant .. ")", "%1" .. virAma .. "%2")
-- whitespace and end of string
text = gsub(text, "(" .. consonant .. ")%f[%s%z-]", "%1" .. virAma)
-- all vowel diacritics
text = gsub(text, "(" .. consonant .. ")(" .. vowel .. ")", function(c, v) return c .. diacritics[v] end)
-- everything else
text = gsub(text, '.', tt)
-- Vedic accent
do
-- Build sets of Devanagari consonants/vowels (post-transliteration).
local dev_consonant = {}
for c in gmatch(consonant_list, ".") do
dev_consonant[tt[c]] = true
end
local dev_vowel = {}
for v in gmatch(vowel_list, ".") do
dev_vowel[tt[v]] = true
end
local vowel_sign = {}
for _, sign in pairs(diacritics) do
if sign ~= "" then
vowel_sign[sign] = true
end
end
-- Common Devanagari marks that can trail a syllable.
local mark = {
["ँ"] = true, ["ं"] = true, ["ः"] = true,
["ᳵ"] = true, ["ᳶ"] = true,
}
-- Turn text into a codepoint array for easy indexing.
local chars = {}
for ch in gmatch(text, ".") do
chars[#chars + 1] = ch
end
local n = #chars
-- Collect syllable spans and explicit accent markers.
local starts, ends, afters, accents = {}, {}, {}, {}
local i = 1
while i <= n do
local ch = chars[i]
if dev_consonant[ch] or dev_vowel[ch] then
local start = i
local j = i
if dev_consonant[ch] then
j = j + 1
-- (virama + consonant)* for conjuncts
while j <= n - 1 and chars[j] == virAma and dev_consonant[chars[j + 1]] do
j = j + 2
end
-- optional final virama (dead consonant)
if j <= n and chars[j] == virAma then
j = j + 1
end
-- optional vowel sign
if j <= n and vowel_sign[chars[j]] then
j = j + 1
end
else
-- independent vowel
j = j + 1
end
-- trailing marks (anusvara, candrabindu, visarga, etc.)
while j <= n and mark[chars[j]] do
j = j + 1
end
-- optional explicit accent marker at the very end of the syllable
local accent = "none"
local after = j - 1
local accent_name = { ['/'] = 'acute', ['\\'] = 'grave', ['_'] = 'underscore' }
if j <= n and (chars[j] == "/" or chars[j] == "\\" or chars[j] == "_") then
accent = accent_name[chars[j]]
after = j -- include the marker in "after"
j = j + 1
end
local end_idx = (accent == "none") and after or (after - 1) -- exclude marker from end
starts[#starts + 1] = start
ends[#ends + 1] = end_idx
afters[#afters + 1] = after
accents[#accents + 1] = accent
i = after + 1
else
i = i + 1
end
end
-- Propagate accents:
-- * Explicit acute "/" marks udatta (no glyph inserted), makes previous syllables anudatta,
-- and the following syllable (if unmarked) becomes svarita.
-- * Explicit grave "\" becomes svarita, and previous syllables become anudatta.
local last_accent = 0
local prev_acute = false
for si, accent in ipairs(accents) do
if accent == "acute" then
for j = last_accent + 1, si - 1 do
accents[j] = "anudatta"
end
last_accent = si
prev_acute = true
elseif accent == "grave" then
for j = last_accent + 1, si - 1 do
accents[j] = "anudatta"
end
last_accent = si
accents[si] = "svarita"
prev_acute = false
elseif accent == "underscore" then
last_accent = si
accents[si] = "anudatta"
prev_acute = false
elseif prev_acute then
accents[si] = "svarita"
prev_acute = false
last_accent = si
end
end
-- Rebuild text:
-- - drop the explicit "/" "\" "_" markers
-- - insert anud/svar after syllable end as needed
local out = {}
local offset = 1
for si, start in ipairs(starts) do
local end_idx = ends[si]
local after = afters[si]
-- copy any non-syllable chars before this syllable
if offset <= start - 1 then
for k = offset, start - 1 do
out[#out + 1] = chars[k]
end
end
-- copy syllable body (excluding explicit marker)
for k = start, end_idx do
out[#out + 1] = chars[k]
end
-- insert accent glyphs
local a = accents[si]
if a == "anudatta" then
out[#out + 1] = anud
elseif a == "svarita" then
out[#out + 1] = svar
end
-- jump past syllable (+ explicit marker if it existed)
offset = after + 1
end
-- copy any trailing chars after the last syllable
for k = offset, n do
out[#out + 1] = chars[k]
end
text = table.concat(out)
end
-- fix case where accent mark is placed before diacritic
text = gsub(text, "([".. anud .. svar .. "])([ंँः]+)", "%2%1")
-- a virAma followed by accent mark should not have the accent mark at all
text = gsub(text, virAma .. "[".. anud .. svar .. "]", virAma)
return mw.ustring.toNFC(text)
end
return export
dzmkwy856wcve7pvimqh6edmvxnwj4o
มอดูล:sa-utilities/translit/Deva-to-IAST
828
2331803
5724855
2026-06-16T05:04:55Z
OctraBot
3198
สร้างหน้าด้วย "local export = {} local consonants = { ['क'] = 'k', ['ख'] = 'kh', ['ग'] = 'g', ['घ'] = 'gh', ['ङ'] = 'ṅ', ['च'] = 'c', ['छ'] = 'ch', ['ज'] = 'j', ['झ'] = 'jh', ['ञ'] = 'ñ', ['ट'] = 'ṭ', ['ठ'] = 'ṭh', ['ड'] = 'ḍ', ['ढ'] = 'ḍh', ['ण'] = 'ṇ', ['त'] = 't', ['थ'] = 'th', ['द'] = 'd', ['ध'] = 'dh', ['न'] = 'n', ['प'] = 'p', ['फ'] = 'ph', ['ब'] = 'b', ['भ'] = 'bh', ['म'] = 'm', ['य'] =..."
5724855
Scribunto
text/plain
local export = {}
local consonants = {
['क'] = 'k', ['ख'] = 'kh', ['ग'] = 'g', ['घ'] = 'gh', ['ङ'] = 'ṅ',
['च'] = 'c', ['छ'] = 'ch', ['ज'] = 'j', ['झ'] = 'jh', ['ञ'] = 'ñ',
['ट'] = 'ṭ', ['ठ'] = 'ṭh', ['ड'] = 'ḍ', ['ढ'] = 'ḍh', ['ण'] = 'ṇ',
['त'] = 't', ['थ'] = 'th', ['द'] = 'd', ['ध'] = 'dh', ['न'] = 'n',
['प'] = 'p', ['फ'] = 'ph', ['ब'] = 'b', ['भ'] = 'bh', ['म'] = 'm',
['य'] = 'y', ['र'] = 'r', ['ल'] = 'l', ['व'] = 'v', ['ळ'] = 'ḷ',
['श'] = 'ś', ['ष'] = 'ṣ', ['स'] = 's', ['ह'] = 'h',
}
local diacritics = {
['्'] = '', ['ा'] = 'ā',
['ि'] = 'i', ['ी'] = 'ī',
['ु'] = 'u', ['ू'] = 'ū',
['ृ'] = 'ṛ', ['ॄ'] = 'ṝ',
['ॢ'] = 'ḷ', ['ॣ'] = 'ḹ',
['े'] = 'e', ['ै'] = 'ai',
['ो'] = 'o', ['ौ'] = 'au',
}
local tt = {
-- vowels
['अ'] = 'a', ['आ'] = 'ā',
['इ'] = 'i', ['ई'] = 'ī',
['उ'] = 'u', ['ऊ'] = 'ū',
['ऋ'] = 'ṛ', ['ॠ'] = 'ṝ',
['ऌ'] = 'ḷ', ['ॡ'] = 'ḹ',
['ए'] = 'e', ['ऐ'] = 'ai',
['ओ'] = 'o', ['औ'] = 'au',
-- chandrabindu
['ँ'] = 'm̐', --until a better method is found
-- anusvara
['ं'] = 'ṃ', --until a better method is found
-- visarga
['ः'] = 'ḥ',
-- avagraha
['ऽ'] = '’',
--numerals
['०'] = '0', ['१'] = '1', ['२'] = '2', ['३'] = '3', ['४'] = '4', ['५'] = '5', ['६'] = '6', ['७'] = '7', ['८'] = '8', ['९'] = '9',
--punctuation
['॥'] = '.', --double danda
['।'] = '.', --danda
--Vedic extensions
['ᳵ'] = 'x',
['ᳶ'] = 'f',
--Om
['ॐ'] = 'oṃ',
}
function export.tr(text, lang, sc)
text = mw.ustring.gsub(text,
'([कखगघङचछजझञटठडढणतथदधनपफबभमयरलळवशषसह])' ..
'([ािीुूृॄॢॣेैोौ्]?)',
function(c, d)
if d == "" then
return consonants[c] .. 'a'
else
return consonants[c] .. diacritics[d]
end
end)
text = mw.ustring.gsub(text, '.', tt)
return text
end
return export
7kh14fj3n6fngxh3u2u29t3z1qkr217
แม่แบบ:pluralize
10
2331804
5724877
2026-06-16T11:14:11Z
OctraBot
3198
นำเข้าจาก enwikt
5724877
wikitext
text/x-wiki
<includeonly>{{safesubst:<noinclude/>#invoke:en-utilities/templates|pluralize_t}}</includeonly><noinclude><!--
-->{{documentation}}</noinclude>
4tlbfof8ktz47fphyee85al02k3pkiu
alzo
0
2331805
5724882
2026-06-16T11:58:54Z
OctraBot
3198
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5724882
wikitext
text/x-wiki
== ภาษากาลิเซีย ==
=== คำกริยา ===
{{head|gl|รูปกริยา}}
# {{gl-verb form of|alzar}}
== ภาษาดัตช์ ==
=== รากศัพท์ ===
จาก{{inh|nl|dum|alsô}}, จาก{{inh|nl|odt|alsō}}, จาก{{inh|nl|gmw-pro|*allswā}}; เทียบเท่า{{compound|nl|al|zo}}; {{dbt|nl|als}}
=== การออกเสียง ===
* {{IPA|nl|/ɑlˈzoː/}}
* {{audio|nl|Nl-alzo.ogg}}
* {{hyphenation|nl|al|zo}}
* {{rhymes|nl|oː|s=2}}
=== คำสันธาน ===
{{head|nl|คำสันธาน}}
# [[ดังนั้น]], [[ผลที่ตามมา]], [[ด้วยเหตุนี้]]
==== คำเกี่ยวข้อง ====
* {{l|nl|zoals}}
== ภาษาสเปน ==
=== คำกริยา ===
{{head|es|รูปกริยา}}
# {{es-verb form of|alzar}}
== ภาษาอัสตูเรียส ==
=== คำกริยา ===
{{head|ast|รูปกริยา}}
# {{inflection of|ast|alzar||1|s|pres|ind}}
== ภาษาอิตาลี ==
=== การออกเสียง ===
{{it-pr|àltso}}
=== คำกริยา ===
{{head|it|รูปกริยา}}
# {{inflection of|it|alzare||1|s|pres|indc}}
=== คำสลับอักษร ===
* {{anagrams|it|a=aloz|Zola|lazo|zola}}
t0wz8610waj816supt5l63vtguwqkaw