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.17
case-sensitive
สื่อ
พิเศษ
พูดคุย
ผู้ใช้
คุยกับผู้ใช้
วิกิพจนานุกรม
คุยเรื่องวิกิพจนานุกรม
ไฟล์
คุยเรื่องไฟล์
มีเดียวิกิ
คุยเรื่องมีเดียวิกิ
แม่แบบ
คุยเรื่องแม่แบบ
วิธีใช้
คุยเรื่องวิธีใช้
หมวดหมู่
คุยเรื่องหมวดหมู่
ภาคผนวก
คุยเรื่องภาคผนวก
ดัชนี
คุยเรื่องดัชนี
สัมผัส
คุยเรื่องสัมผัส
อรรถาภิธาน
คุยเรื่องอรรถาภิธาน
TimedText
TimedText talk
มอดูล
คุยเรื่องมอดูล
Event
Event talk
เฮือน
0
8792
5759377
5759285
2026-09-01T06:08:24Z
Thai-Northeastern
17169
/* รากศัพท์ */
5759377
wikitext
text/x-wiki
{{also/auto}}
== ภาษาคำเมือง ==
=== การออกเสียง ===
* {{IPA|nod|/hɯan˧˧/|a=เชียงใหม่}}
=== คำนาม ===
{{nod-noun}}
# {{alternative form of|nod|ᩁᩮᩬᩥᩁ}}
== ภาษาญ้อ ==
=== รูปแบบอื่น ===
* {{alt|nyw||sc=Tayo}}
=== รากศัพท์ ===
{{inh+|nyw|tai-pro|*rɤːnᴬ}}; ร่วมเชื้อสายกับ{{cog|th|เรือน}}, {{cog|tts|เฮือน}}, {{cog|lo|ເຮືອນ}}, {{cog|sou|เริน}}, {{cog|nod|ᩁᩮᩬᩥᩁ}} หรือ {{m|nod|ᩁᩮᩥ᩠ᨶ}}, {{cog|kkh|ᩁᩮᩨ᩠ᨶ}}, {{cog|khb|ᦵᦣᦲᧃ}}, {{cog|blt|ꪹꪭꪙ}}, {{cog|twh|ꪭꪷꪙ}}, {{cog|shn|ႁိူၼ်း}}, {{cog|tdd|ᥞᥫᥢᥰ}}, {{cog|aho|𑜍𑜢𑜤𑜃𑜫}}, {{cog|tyz|rườn}}, {{cog|pcc|raanz}}, {{cog|skb|ร๊าน}}, {{cog|za|ranz}}, {{cog|zzj|rwenz}}
=== การออกเสียง ===
* {{IPA|nyw|/hɯan˨˨/|a=สว่างแดนดิน}}
=== คำนาม ===
{{nyw-noun}}
# [[เรือน]]
== ภาษาอีสาน ==
=== รากศัพท์ ===
{{inh+|tts|tai-swe-pro|*rɯənᴬ⁴}}, จาก{{inh|tts|tai-pro|*rɤːnᴬ}}; ร่วมเชื้อสายกับ{{cog|th|เรือน}}, {{cog|nod|ᩁᩮᩬᩥᩁ}}, {{cog|lo|ເຮືອນ}}, {{cog|khb|ᦵᦣᦲᧃ}}, {{cog|blt|ꪹꪭꪙ}}, {{cog|shn|ႁိူၼ်း}}, {{cog|tdd|ᥞᥫᥢᥰ}}, {{cog|aho|𑜍𑜢𑜤𑜃𑜫}}, {{cog|pcc|raanz}}, {{cog|za|ranz}}, {{cog|zzj|rwenz}}
=== คำนาม ===
{{tts-noun}}
# [[เรือน]]
74izqyvdy0r5ule7rc8lolg39e4xkmq
ฮ่อ
0
17922
5759310
1903869
2026-09-01T01:59:14Z
~2026-47556-71
19459
/* คำนาม */
5759310
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, จาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ร่วมเชื้อสายกับ{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{th-noun}}
# มาจากคำว่าฮั่น ชาวฮั่น คนจีนเรียกตัวเองว่าคนฮั่น ทุกมณฑลของจีน ไม่แบ่งแยกว่าเป็นพื้นทีไหน ตามที่คนไทยเข้าใจว่า(จีนฮ่อ)ไม่สุภาพ จีนฮั่นนั้น ไม่ได้มาจากแค่มณฑลยูนานแต่เป็นทั่วทุกที่ของประเทศจีน
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
2n60vq0zt2cvze9b8xbbph6xnucppvm
5759321
5759310
2026-09-01T02:08:28Z
~2026-47556-71
19459
/* รากศัพท์ 1 */
5759321
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, จาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ภาษาจีน กลาง ฮั่นเหริน汉人
คำว่าฮ่อนั้นคนไทยเอามาเหยียดคนจีนนี่เอง ไอ้จีนฮ่อ ไอ้ฮ่อ
ต่อมาคนจีนก็ได้เรียกคนไทยทางเหนือที่ชอบเหยียดคนจีนพวกนั้นว่าเหล่าโกโล แปลว่า ชาวป่า ล้าสมัยนั่นเอง เพื่อเป็นกันบลัฟกันนั่นเอง
ทีนี้ให้รู้กันว่าคำว่าจีนฮ่อนั้นเป็น ไม่สุภาพ
ร่วมเชื้อสายกับ{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{th-noun}}
# มาจากคำว่าฮั่น ชาวฮั่น คนจีนเรียกตัวเองว่าคนฮั่น ทุกมณฑลของจีน ไม่แบ่งแยกว่าเป็นพื้นทีไหน ตามที่คนไทยเข้าใจว่า(จีนฮ่อ)ไม่สุภาพ จีนฮั่นนั้น ไม่ได้มาจากแค่มณฑลยูนานแต่เป็นทั่วทุกที่ของประเทศจีน
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
a6porimcv2j64hrh75vqxyt8wcq1l1u
5759329
5759321
2026-09-01T02:14:15Z
~2026-47556-71
19459
/* รากศัพท์ 1 */
5759329
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, จาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ภาษาจีน กลาง ฮั่นเหริน汉人
คำว่าฮ่อนั้นคนไทยเอามาเหยียดคนจีนนี่เอง ไอ้จีนฮ่อ ไอ้ฮ่อ
ต่อมาคนจีนก็ได้เรียกคนไทยทางเหนือที่ชอบเหยียดคนจีนพวกนั้นว่าเหล่าโกโล แปลว่า ชาวป่า ล้าสมัยนั่นเอง เพื่อเป็นกันบลัฟกันนั่นเอง
ทีนี้ให้รู้กันว่าคำว่าจีนฮ่อนั้นเป็น ไม่สุภาพ
ชาวไทยทางเหนือนั้นร่วมเชื้อสาย{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{th-noun}}
# มาจากคำว่าฮั่น ชาวฮั่น คนจีนเรียกตัวเองว่าคนฮั่น ทุกมณฑลของจีน ไม่แบ่งแยกว่าเป็นพื้นทีไหน ตามที่คนไทยเข้าใจว่า(จีนฮ่อ)ไม่สุภาพ จีนฮั่นนั้น ไม่ได้มาจากแค่มณฑลยูนานแต่เป็นทั่วทุกที่ของประเทศจีน
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
k1li46m9ewzjsqzrs3d91vgjvb0bo2i
5759361
5759329
2026-09-01T02:56:04Z
Octahedron80
267
ผิดตั้งแต่คำอธิบายแรกที่บอกว่ามาจากฮั่น ซึ่งเสียงไม่ได้ใกล้เคียง
5759361
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, จาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ร่วมเชื้อสายกับ{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{th-noun}}
# ชาวจีนพวกหนึ่ง มีถิ่นฐานเดิมอยู่ทางตอนใต้ของประเทศจีน แถบ[[มณฑลยูนนาน]]
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
pwxqir2386xno79nb0a3xr76j75u5u8
5759362
5759361
2026-09-01T02:56:58Z
Octahedron80
267
/* คำนาม */ โบราณเรียกอย่างนั้น สุภาพไหมไม่ทราบ
5759362
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, จาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ร่วมเชื้อสายกับ{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|โบราณ}} คำเรียกชาวจีนพวกหนึ่ง มีถิ่นฐานเดิมอยู่ทางตอนใต้ของประเทศจีน แถบ[[มณฑลยูนนาน]]
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
30qgzcwdt5g7t8herkr500qlitdm9vr
5759365
5759362
2026-09-01T03:02:45Z
Octahedron80
267
/* รากศัพท์ 1 */
5759365
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, จาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}; คำศัพท์ดูหมิ่นโบราณที่ใช้เรียกผู้คนจาก[[ยูนนาน]] ซึ่งอยู่ทางตะวันตกเฉียงใต้สุดของประเทศจีน ที่บันทึกไว้ในเอกสารคริสต์ศตวรรษที่ 9 เรื่อง *{{w|zh:蛮书|Book on Barbarians}}* ({{lw|zh|蠻書}}) โดยฟาน ฉั่ว ({{lw|zh|樊綽}})
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ร่วมเชื้อสายกับ{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|โบราณ}} คำเรียกชาวจีนพวกหนึ่ง มีถิ่นฐานเดิมอยู่ทางตอนใต้ของประเทศจีน แถบ[[มณฑลยูนนาน]]
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
ifxu7txls0pa1fph927urpeleol56pb
5759366
5759365
2026-09-01T03:03:37Z
Octahedron80
267
/* รากศัพท์ 1 */
5759366
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, จาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}; คำศัพท์ดูหมิ่นโบราณที่ใช้เรียกผู้คนจาก[[ยูนนาน]] ซึ่งอยู่ทางตะวันตกเฉียงใต้สุดของประเทศจีน ที่บันทึกไว้ในเอกสารคริสต์ศตวรรษที่ 9 เรื่อง ''{{w|zh:蛮书|หนังสือคนเถื่อน}}'' ({{lw|zh|蠻書}}) โดยฟาน ฉั่ว ({{lw|zh|樊綽}})
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ร่วมเชื้อสายกับ{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|โบราณ}} คำเรียกชาวจีนพวกหนึ่ง มีถิ่นฐานเดิมอยู่ทางตอนใต้ของประเทศจีน แถบ[[มณฑลยูนนาน]]
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
hkl9omuf0g7747k5yq9e1g0u9zixtd9
5759367
5759366
2026-09-01T03:04:04Z
Octahedron80
267
/* รากศัพท์ 1 */
5759367
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, ตัดมาจาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}; คำศัพท์ดูหมิ่นโบราณที่ใช้เรียกผู้คนจาก[[ยูนนาน]] ซึ่งอยู่ทางตะวันตกเฉียงใต้สุดของประเทศจีน ที่บันทึกไว้ในเอกสารคริสต์ศตวรรษที่ 9 เรื่อง ''{{w|zh:蛮书|หนังสือคนเถื่อน}}'' ({{lw|zh|蠻書}}) โดยฟาน ฉั่ว ({{lw|zh|樊綽}})
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ร่วมเชื้อสายกับ{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{th-noun}}
# {{lb|th|โบราณ}} คำเรียกชาวจีนพวกหนึ่ง มีถิ่นฐานเดิมอยู่ทางตอนใต้ของประเทศจีน แถบ[[มณฑลยูนนาน]]
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
48v7as80k8flttcr5r8eiz3gl2rw76u
5759368
5759367
2026-09-01T03:05:37Z
Octahedron80
267
/* คำนาม */
5759368
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, ตัดมาจาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}; คำศัพท์ดูหมิ่นโบราณที่ใช้เรียกผู้คนจาก[[ยูนนาน]] ซึ่งอยู่ทางตะวันตกเฉียงใต้สุดของประเทศจีน ที่บันทึกไว้ในเอกสารคริสต์ศตวรรษที่ 9 เรื่อง ''{{w|zh:蛮书|หนังสือคนเถื่อน}}'' ({{lw|zh|蠻書}}) โดยฟาน ฉั่ว ({{lw|zh|樊綽}})
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ร่วมเชื้อสายกับ{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{wp}}
{{th-noun}}
# {{lb|th|โบราณ|ดูหมิ่น}} คำเรียกชาวจีนพวกหนึ่ง มีถิ่นฐานเดิมอยู่ทางตอนใต้ของประเทศจีน แถบ[[มณฑลยูนนาน]]
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
100s9s2iykok8r77mo9oxn5qepf7wnu
5759369
5759368
2026-09-01T03:07:23Z
Octahedron80
267
/* คำนาม */
5759369
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, ตัดมาจาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}; คำศัพท์ดูหมิ่นโบราณที่ใช้เรียกผู้คนจาก[[ยูนนาน]] ซึ่งอยู่ทางตะวันตกเฉียงใต้สุดของประเทศจีน ที่บันทึกไว้ในเอกสารคริสต์ศตวรรษที่ 9 เรื่อง ''{{w|zh:蛮书|หนังสือคนเถื่อน}}'' ({{lw|zh|蠻書}}) โดยฟาน ฉั่ว ({{lw|zh|樊綽}})
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ร่วมเชื้อสายกับ{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{wp}}
{{th-noun}}
# {{lb|th|โบราณ|ดูหมิ่น}} คำเรียกชาวจีนพวกหนึ่ง มีถิ่นฐานเดิมอยู่ทางตอนใต้ของประเทศจีน แถบ[[มณฑลยูนนาน]] <!--ดูเพิ่มเติมในบทความวิกิพีเดีย-->
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
19rm0yrvtnria39q193hn03wj6fyz4y
5759370
5759369
2026-09-01T03:08:55Z
Octahedron80
267
/* คำนาม */
5759370
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron}}
=== รากศัพท์ 1 ===
{{unc|th}}; เป็นไปได้ว่ามาจาก:
* {{der|th|nan-hbl|-}} {{zh-l|河|tr=hô|gloss=[[แม่น้ำ]]}}, ตัดมาจาก {{zh-l|[[河]][[蠻]]|gloss=คนเถื่อนแถบแม่น้ำ}} หรือ {{zh-l|[[西洱河]]蠻|gloss=คนเถื่อนแถบ{{w|Erhai Lake|แม่น้ำรูปหู}}ฝั่งตะวันตก}}; คำศัพท์ดูหมิ่นโบราณที่ใช้เรียกผู้คนจาก[[ยูนนาน]] ซึ่งอยู่ทางตะวันตกเฉียงใต้สุดของประเทศจีน ที่บันทึกไว้ในเอกสารคริสต์ศตวรรษที่ 9 เรื่อง ''{{w|zh:蛮书|หนังสือคนเถื่อน}}'' ({{lw|zh|蠻書}}) โดยฟาน ฉั่ว ({{lw|zh|樊綽}})
* {{der|th|nan-hbl|-}} {{zh-l|胡|tr=hô͘|gloss=[[คนเถื่อน]]}}
* {{der|th|nan-hbl|-}} {{zh-l|華|tr=hôa|gloss=[[จีน]]}}
ร่วมเชื้อสายกับ{{cog|lo|ຫໍ້}}, {{cog|nod|ᩉᩬᩴ᩶}}, {{cog|kkh|ᩉ᩷᩶}}, {{cog|khb|ᦠᦸᧉ}}
==== คำนาม ====
{{wp}}
{{th-noun}}
# {{lb|th|โบราณ|ค่อนข้าง|_|ดูหมิ่น}} คำเรียกชาวจีนพวกหนึ่ง มีถิ่นฐานเดิมอยู่ทางตอนใต้ของประเทศจีน แถบ[[มณฑลยูนนาน]] <!--ดูเพิ่มเติมในบทความวิกิพีเดีย-->
=== รากศัพท์ 2 ===
{{unc|th}}
==== คำนาม ====
{{th-noun}}
# ลายเส้นที่เขียนเป็น[[ไพรคิ้ว]] [[ไพรปาก]]บนหน้า[[โขน]] ประกอบด้วยเส้นสีแดง [[ดินแดง]] และสีทอง
# ลายที่เขียนเป็นอย่างแถบผ้าสะบัดกลับไปมาใช้เขียนเพื่อแบ่งภาพเป็นตอน ๆ ในงาน[[จิตรกรรม]]ฝาผนัง หรือจิตรกรรมภาพ[[พระบฏ]]
e23r4s2jk0u2ttyt2kbvwcqaibvaj35
มอดูล:headword/templates
828
37347
5759301
5624728
2026-09-01T01:46:59Z
Octahedron80
267
5759301
Scribunto
text/plain
local export = {}
local debug_track_module = "Module:debug/track"
local headword_module = "Module:headword"
local headword_data_module = "Module:headword/data"
local parameters_module = "Module:parameters"
local yesno_module = "Module:yesno"
local insert = table.insert
local require = require
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function track(page)
debug_track("headword/templates/" .. page)
return true
end
local function get_args(frame)
local boolean = {type = "boolean"}
local boolean_list_allow_holes = {type = "boolean", list = true, allow_holes = true}
local list_allow_holes = {list = true, allow_holes = true}
return process_params(frame:getParent().args, {
[1] = {required = true, type = "language", template_default = "und"},
sc = {type = "script"},
sort = true,
[2] = {required = true, template_default = "nouns"},
sccat = boolean,
noposcat = boolean,
nomultiwordcat = boolean,
nogendercat = boolean,
nopalindromecat = boolean,
nolinkhead = boolean,
-- Don't track uses of this template for the purpose of finding direct calls to {{head}}.
-- Useful for templates that wrap {{tl|head}}.
notrackuses = boolean,
autotrinfl = boolean,
var = true,
checkredlinks = true,
cat2 = true,
cat3 = true,
cat4 = true,
pagename = true,
head = list_allow_holes,
image = true,
id = true,
tr = list_allow_holes,
ts = list_allow_holes,
gloss = true,
g = {list = true, type = "genders", flatten = true},
["g\1qual"] = {list = true, allow_holes = true, replaced_by = false, instead = "use <q:...> or <l:...> inline modifier on a gender"},
[3] = list_allow_holes,
["f\1accel-form"] = list_allow_holes,
["f\1accel-translit"] = list_allow_holes,
["f\1accel-lemma"] = list_allow_holes,
["f\1accel-lemma-translit"] = list_allow_holes,
["f\1accel-gender"] = list_allow_holes,
["f\1accel-nostore"] = boolean_list_allow_holes,
["f\1request"] = list_allow_holes,
["f\1alt"] = list_allow_holes,
["f\1lang"] = {list = true, allow_holes = true, type = "language"},
["f\1sc"] = {list = true, allow_holes = true, type = "script"},
["f\1id"] = list_allow_holes,
["f\1tr"] = list_allow_holes,
["f\1ts"] = list_allow_holes,
["f\1t"] = list_allow_holes,
["f\1lit"] = list_allow_holes,
["f\1pos"] = list_allow_holes,
["f\1ng"] = list_allow_holes,
["f\1g"] = {list = true, allow_holes = true, type = "genders"},
["f\1q"] = {list = true, allow_holes = true, type = "qualifier"},
["f\1qq"] = {list = true, allow_holes = true, type = "qualifier"},
["f\1qual"] = {list = true, allow_holes = true, replaced_by = false, instead = "use fNq= or fNl="},
["f\1l"] = {list = true, allow_holes = true, type = "labels"},
["f\1ll"] = {list = true, allow_holes = true, type = "labels"},
["f\1ref"] = {list = true, allow_holes = true, type = "references"},
["f\1autotr"] = boolean_list_allow_holes,
["f\1nolink"] = boolean_list_allow_holes,
})
end
function export.head_t(frame)
local m_headword = require(headword_module)
local args = get_args(frame)
-- Get language and script information
local data = {}
data.lang = args[1]
data.sc = args.sc
data.sccat = args.sccat
data.sort_key = args.sort
data.heads = args.head
data.image = args.image
data.pagename = args.pagename
data.id = args.id
data.translits = args.tr
data.transcriptions = args.ts
data.gloss = args.gloss
data.genders = args.g
-- TODO should throw an error if data.heads gets overwritten
if data.image then
data.heads = {"[[File:" .. data.image .. "|class=skin-invert-image]]"}
end
-- This shouldn't really happen.
for i = 1, args.head.maxindex do
if not args.head[i] then
track("head-with-holes")
end
end
-- Variant forms (lemmas or non-lemma forms)
if args.var then
data.var = require(yesno_module)(args.var, args.var)
end
-- Part-of-speech category
local pos_category = args[2]
data.noposcat = args.noposcat
-- Check for headword aliases and then pluralize if the POS term does not have an invariable plural.
data.pos_category = m_headword.canonicalize_pos(pos_category)
-- Track all direct uses of {{head}} for certain languages that have a {{XX-head}} template that should be
-- used instead. Examples: {{en-head}}, {{sa-head}}, {{hi-head}}, {{tl-head}}, etc.
if not args.notrackuses then
local langcode = data.lang:getCode()
local langfullcode = data.lang:getFullCode()
if mw.loadData(headword_data_module).track_head_template[langfullcode] then
track(langcode)
track(langcode .. "/" .. data.pos_category)
if langcode ~= langfullcode then
track(langfullcode)
track(langfullcode .. "/" .. data.pos_category)
end
end
end
-- Additional categories.
local categories = {}
data.whole_page_categories = {}
data.nomultiwordcat = args.nomultiwordcat
data.nogendercat = args.nogendercat
data.nopalindromecat = args.nopalindromecat
-- FIXME: add a minimum_index spec to [[Module:parameters]] list specs, so
-- that `cat` can be changed to a list parameter starting at index 2.
if args.cat2 then
--insert(categories, data.lang:getFullName() .. " " .. args.cat2)
insert(categories, require("Module:th-utilities").th_categorize(args.cat2, data.lang:getCategoryName()))
end
if args.cat3 then
--insert(categories, data.lang:getFullName() .. " " .. args.cat3)
insert(categories, require("Module:th-utilities").th_categorize(args.cat3, data.lang:getCategoryName()))
end
if args.cat4 then
--insert(categories, data.lang:getFullName() .. " " .. args.cat4)
insert(categories, require("Module:th-utilities").th_categorize(args.cat4, data.lang:getCategoryName()))
end
data.categories = categories
if args.checkredlinks then
data.checkredlinks = require(yesno_module)(args.checkredlinks, args.checkredlinks)
end
-- Headword linking
data.nolinkhead = args.nolinkhead
-- Inflected forms
data.inflections = {enable_auto_translit = args.autotrinfl}
local forms = args[3]
local n = forms.maxindex / 2
for i = 1, n + n % 1 do
local infl_part = {
label = forms[i * 2 - 1],
accel = args["faccel-form"][i] and {
form = args["faccel-form"][i],
translit = args["faccel-translit"][i],
lemma = args["faccel-lemma"][i],
lemma_translit = args["faccel-lemma-translit"][i],
gender = args["faccel-gender"][i],
nostore = args["faccel-nostore"][i],
} or nil,
request = args.frequest[i],
enable_auto_translit = args.fautotr[i],
}
local form = {
term = forms[i * 2],
alt = args.falt[i],
genders = args.fg[i],
id = args.fid[i],
lang = args.flang[i],
nolinkinfl = args.fnolink[i],
q = args.fq[i],
qq = args.fqq[i],
l = args.fl[i],
ll = args.fll[i],
refs = args.fref[i],
sc = args.fsc[i],
tr = args.ftr[i],
ts = args.fts[i],
gloss = args.ft[i],
lit = args.flit[i],
pos = args.fpos[i],
ng = args.fng[i],
}
-- If no term or alt is given, then the label is shown alone.
if form.term or form.alt then
insert(infl_part, form)
end
if infl_part.label == "หรือ" then
-- Append to the previous inflection part, if one exists
if #infl_part > 0 and data.inflections[1] then
insert(data.inflections[#data.inflections], form)
end
elseif infl_part.label then
-- Add a new inflection part
insert(data.inflections, infl_part)
end
end
return m_headword.full_headword(data)
end
function export.canonicalize_pos(frame)
local iargs = process_params(frame.args, {
[1] = {required = true},
})
return require(headword_module).canonicalize_pos(iargs[1])
end
return export
dxx5wqhx3f56qcr13xmsicyr8t3vsec
mice
0
38605
5759333
3641046
2026-09-01T02:19:10Z
Octahedron80
267
/* ภาษาอังกฤษ */ นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759333
wikitext
text/x-wiki
{{also/auto}}
== ภาษาลัตเวีย ==
=== คำนาม ===
{{lv-noun|f|5th}}
# {{lb|lv|ภาษาปาก}} [[หมวก]]
# {{lb|lv|ภาษาปาก}} [[หมวกแก๊ป]], [[หมวกปีก]]
# {{lb|lv|ภาษาปาก}} [[อาหาร]], [[เสบียง]]
==== การผันรูป ====
{{lv-decl-noun|mi|e|5th||c|č}}
==== คำพ้องความ ====
* {{l|lv|aube}}
==== ดูเพิ่ม ====
* {{l|lv|cepure|g=f}}
* {{l|lv|platmale|g=f}}
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
จาก{{inh|en|enm|mys}}, {{m|enm|mice}}, {{m|enm|muis}}, {{m|enm|mise}}, {{m|enm|mis}}, จาก{{inh|en|ang|mȳs|t=หนู (พหู.)}}, จากรูปเติม[[อุมเลาท์]]ของ{{inh|en|gem-pro|*mūsiz|t=หนู (พหู.)}}, กรรตุการก/สัมโพธนการก พหูพจน์ของ{{der|en|gem-pro|*mūs|t=หนู}}; เทียบ{{cog|sco|mice}}, {{m|sco|mise}}, {{m|sco|myse}}, {{m|sco|myce|t=หนู (พหู.)}}, {{cog|fy|mûzen|t=หนู (พหู.)}}, {{cog|nl|muizen|t=หนู (พหู.)}}, {{cog|de|Mäuse|t=หนู (พหู.)}}, {{cog|sv|möss|t=หนู (พหู.)}}, {{cog|fo|mýs|t=หนู (พหู.)}}, {{cog|is|mýs|t=หนู (พหู.)}}; ดูเพิ่มที่ {{l|en|mouse}}
=== การออกเสียง ===
* {{enPR|mīs}}, {{IPA|en|/maɪs/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-mice.wav|a=Southern England}}
* {{rhymes|en|aɪs|s=1}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|mouse}}
==== ลูกคำ ====
{{col|en|miceless|miceproof
}}
=== คำกริยา ===
{{en-verb}}
# {{lb|en|เบอร์มิวดา|ส่วนมากจะอยู่ในรูป '''[[micin]]'''}} [[การเสียสมาธิ]]หรือ[[ใจลอย]] (อาจสื่อถึง[[แมว]]ที่กำลังเสียสมาธิเพราะ[[หนู]])
#* {{quote-book|en|title=Bermewjan Vurds|passage=That cat's '''mysin''', he doesn't see the dog coming.|year=1984|author=Peter A. Smith; Fred M. Barritt|publisher=Island Press|translation=แมวตัวนั้นกำลัง'''ใจลอย''' มันมองไม่เห็นสุนัขที่กำลังมาเลย}}
#* {{quote-web|en|archiveurl=https://web.archive.org/web/20221211002210/https://www.royalgazette.com/letters-to-the-editor/article/20151219/bermudian-sayings-always-raise-a-smile/|work=w:The Royal Gazette|passage=A breakfast diner might describe an incident with someone who was "not too tightly wrapped". Or not wanting to waste time on someone who was always "'''micin'''". Another breakfast guest might explode with "what'chu mean?", only to be told half-jokingly, “Bie ... shut yor mouth”.|title=Bermudian sayings always raise a smile|date=2015-12-09|author=Jack Gauntlett|translation=แขกที่มารับประทานอาหารเช้าอาจจะเล่าถึงเหตุการณ์เกี่ยวกับใครบางคนที่ "สติไม่ค่อยดีนัก" หรือไม่อยากเสียเวลากับคนที่เอาแต่ "'''ใจลอย'''" อยู่ตลอดเวลา แขกอีกคนร่วมโต๊ะอาหารเช้าอาจจะโพล่งขึ้นมาด้วยความฉุนเฉียวว่า "หมายความว่ายังไงวะ?" ก่อนจะได้รับคำตอบแบบทีเล่นทีจริงว่า "เฮ้ย... หุบปากไปซะ"}}
=== อ้างอิง ===
* {{R:OED Online|id=90474599}}
=== คำสลับอักษร ===
* {{anagrams|en|a=ceim|ICEM|ICME|cemi|emic}}
bein85cerqxvuz98hp7dqi7gsa653g5
nouns
0
38899
5759308
3641656
2026-09-01T01:57:35Z
Octahedron80
267
/* ภาษาอังกฤษ */ นำเข้าจาก enwikt เก็บกวาด
5759308
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{IPA|en|/naʊnz/|a=RP}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-nouns.wav|a=Southern England}}
* {{rhymes|en|aʊnz|s=1}}
=== คำนาม ===
{{head|en|รูปนาม|head=nouns}}
# {{plural of|en|noun}}
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|noun||s-verb-form}}
ero63xxbdahrpr965suema0glopzhnh
cherries
0
39172
5759328
3636788
2026-09-01T02:14:08Z
Octahedron80
267
/* ภาษาอังกฤษ */ นำเข้าจาก enwikt เก็บกวาด
5759328
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|cherry}}
# {{plural of|en|cherrie}}
=== คำนาม ===
{{en-noun|?}}
# {{lb|en|การขนส่งทางราง|บริติช}} ตัวบ่งชี้ช่องว่างรางรถไฟ
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|cherry||s-verb-form}}
=== คำสลับอักษร ===
* {{anagrams|en|a=ceehirrs|Schreier|Scheirer|Riechers}}
== ภาษาสเปน ==
=== คำนาม ===
{{head|es|รูปนาม}}
# {{plural of|es|cherry}}
9p52o2mjg5nyb0rzha7fqw4ij191mog
5759330
5759328
2026-09-01T02:14:24Z
Octahedron80
267
/* คำนาม */
5759330
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|cherry}}
# {{plural of|en|cherrie}}
=== คำนาม ===
{{en-noun|?}}
# {{lb|en|การขนส่งทางราง|บริเตน}} ตัวบ่งชี้ช่องว่างรางรถไฟ
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|cherry||s-verb-form}}
=== คำสลับอักษร ===
* {{anagrams|en|a=ceehirrs|Schreier|Scheirer|Riechers}}
== ภาษาสเปน ==
=== คำนาม ===
{{head|es|รูปนาม}}
# {{plural of|es|cherry}}
m9d2ni4fg0z7s3sqpymtkargwgqwmvg
5759332
5759330
2026-09-01T02:15:57Z
Octahedron80
267
เรียงลำดับหัวเรื่องภาษา
5759332
wikitext
text/x-wiki
== ภาษาสเปน ==
=== คำนาม ===
{{head|es|รูปนาม}}
# {{plural of|es|cherry}}
== ภาษาอังกฤษ ==
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|cherry}}
# {{plural of|en|cherrie}}
=== คำนาม ===
{{en-noun|?}}
# {{lb|en|การขนส่งทางราง|บริเตน}} ตัวบ่งชี้ช่องว่างรางรถไฟ
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|cherry||s-verb-form}}
=== คำสลับอักษร ===
* {{anagrams|en|a=ceehirrs|Schreier|Scheirer|Riechers}}
6doj4tpxt4hqxysel8nt4363fsm96cs
churches
0
39196
5759309
3636843
2026-09-01T01:57:42Z
Octahedron80
267
/* ภาษาอังกฤษ */ นำเข้าจาก enwikt เก็บกวาด
5759309
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{IPA|en|/ˈt͡ʃɝt͡ʃɪz/|a=GA}}
* {{IPA|en|/ˈtʃɜːt͡ʃɪz/|a=RP}}
* {{audio|en|en-us-churches.ogg|a=US}}
* {{rhymes|en|ɜː(ɹ)t͡ʃɪz|s=2}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|church}}
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|church||s-verb-form}}
idb8lztlyv1d2p3lbvlx3z4smcq93gf
octopuses
0
41374
5759323
3641726
2026-09-01T02:08:59Z
Octahedron80
267
/* ภาษาอังกฤษ */ นำเข้าจาก enwikt เก็บกวาด
5759323
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|octopus}}
#: {{syn|en|octopodes|octopi}} {{q|ดูเพิ่มในคำหลัก}}
==== ดูเพิ่ม ====
* {{l|en|octopi}}
* {{l|en|octopodes}}
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|octopus||s-verb-form}}
=== คำสลับอักษร ===
* {{anagrams|en|a=ceoopsstu|scopes out}}
mg2rppthj9ws24cj0i78fksl9vprmi8
octopi
0
41433
5759324
3641724
2026-09-01T02:11:09Z
Octahedron80
267
/* ภาษาอังกฤษ */ นำเข้าจาก enwikt เก็บกวาด
5759324
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
สร้างขึ้นจากสมมติฐานทั่วไปที่ว่าปัจจัย {{m|la|-us}} ของ {{m+|la|octopus}} เป็นการลงท้ายการรวบคำของ[[ภาคผนวก:Latin second declension|การผันรูปที่สองภาษาละติน]]
=== การออกเสียง ===
* {{IPA|en|/ˈɒktəpaɪ/|/ˈɒktəpiː/|a=RP}}
* {{IPA|en|/ˈɑktəpaɪ/|/ˈɑktəpiː/|a=GenAm}}
* {{rhymes|en|iː|aɪ|s=3}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{lb|en|ไม่เป็นมาตรฐาน|เกินควร}} {{plural of|en|octopus}}
#: {{syn|en|octopuses|octopodes}} {{q|ดูเพิ่มที่คำหลัก}}
#* {{quote-book|en|author=w:Keith Spicer|title=Paris Passions: Watching the French Being Brilliant and Bizarre|publisher=[[w:CreateSpace|BookSurge]]|year=2009|page=43|pageurl=https://archive.org/details/parispassionswat0000spic/page/43/mode/1up|isbn=9781439213926|passage=Cuddling is what an epidemic of lovers are doing all around us on this nippy, dazzling day. Entangled in each other like doting '''octopi''', sweethearts are seizing the day, the hour, the magic minute.|translation=การกอดรัดฟัดเหวี่ยงคือสิ่งที่คู่รักจำนวนมากกำลังทำอยู่รอบตัวเราในวันที่อากาศเย็นสบายและเจิดจ้านี้ คู่รักต่างพัวพันกันและกันราวกับ'''ปลาหมึก'''ที่คลั่งไคล้กัน พวกเขาต่างคว้าวัน ชั่วโมง และนาทีอันมหัศจรรย์นี้ไว้}}
==== หมายเหตุการใช้ ====
รูป {{m|en|octopuses}} และ ''octopi'' ปรากฏว่ามีการใช้งานแพร่หลายพอ ๆ กัน ในขณะที่ {{m|en|octopodes}} นั้นพบน้อยกว่ามาก อย่างไรก็ตาม ''octopi'' ถือเป็นคำไม่เป็นมาตรฐาน ดูการอภิปรายเพิ่มเติมที่ {{m|en|octopus}}
ag174jaqj6l9zsrpwi821ae5d3rgbw3
5759325
5759324
2026-09-01T02:11:44Z
Octahedron80
267
/* คำนาม */
5759325
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
สร้างขึ้นจากสมมติฐานทั่วไปที่ว่าปัจจัย {{m|la|-us}} ของ {{m+|la|octopus}} เป็นการลงท้ายการรวบคำของ[[ภาคผนวก:Latin second declension|การผันรูปที่สองภาษาละติน]]
=== การออกเสียง ===
* {{IPA|en|/ˈɒktəpaɪ/|/ˈɒktəpiː/|a=RP}}
* {{IPA|en|/ˈɑktəpaɪ/|/ˈɑktəpiː/|a=GenAm}}
* {{rhymes|en|iː|aɪ|s=3}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{lb|en|ไม่เป็นมาตรฐาน|แก้ไขเกินเหตุ}} {{plural of|en|octopus}}
#: {{syn|en|octopuses|octopodes}} {{q|ดูเพิ่มที่คำหลัก}}
#* {{quote-book|en|author=w:Keith Spicer|title=Paris Passions: Watching the French Being Brilliant and Bizarre|publisher=[[w:CreateSpace|BookSurge]]|year=2009|page=43|pageurl=https://archive.org/details/parispassionswat0000spic/page/43/mode/1up|isbn=9781439213926|passage=Cuddling is what an epidemic of lovers are doing all around us on this nippy, dazzling day. Entangled in each other like doting '''octopi''', sweethearts are seizing the day, the hour, the magic minute.|translation=การกอดรัดฟัดเหวี่ยงคือสิ่งที่คู่รักจำนวนมากกำลังทำอยู่รอบตัวเราในวันที่อากาศเย็นสบายและเจิดจ้านี้ คู่รักต่างพัวพันกันและกันราวกับ'''ปลาหมึก'''ที่คลั่งไคล้กัน พวกเขาต่างคว้าวัน ชั่วโมง และนาทีอันมหัศจรรย์นี้ไว้}}
==== หมายเหตุการใช้ ====
รูป {{m|en|octopuses}} และ ''octopi'' ปรากฏว่ามีการใช้งานแพร่หลายพอ ๆ กัน ในขณะที่ {{m|en|octopodes}} นั้นพบน้อยกว่ามาก อย่างไรก็ตาม ''octopi'' ถือเป็นคำไม่เป็นมาตรฐาน ดูการอภิปรายเพิ่มเติมที่ {{m|en|octopus}}
1pukprb82zafiq57a5ofha8pf9wfdae
5759326
5759325
2026-09-01T02:12:30Z
Octahedron80
267
/* หมายเหตุการใช้ */
5759326
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
สร้างขึ้นจากสมมติฐานทั่วไปที่ว่าปัจจัย {{m|la|-us}} ของ {{m+|la|octopus}} เป็นการลงท้ายการรวบคำของ[[ภาคผนวก:Latin second declension|การผันรูปที่สองภาษาละติน]]
=== การออกเสียง ===
* {{IPA|en|/ˈɒktəpaɪ/|/ˈɒktəpiː/|a=RP}}
* {{IPA|en|/ˈɑktəpaɪ/|/ˈɑktəpiː/|a=GenAm}}
* {{rhymes|en|iː|aɪ|s=3}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{lb|en|ไม่เป็นมาตรฐาน|แก้ไขเกินเหตุ}} {{plural of|en|octopus}}
#: {{syn|en|octopuses|octopodes}} {{q|ดูเพิ่มที่คำหลัก}}
#* {{quote-book|en|author=w:Keith Spicer|title=Paris Passions: Watching the French Being Brilliant and Bizarre|publisher=[[w:CreateSpace|BookSurge]]|year=2009|page=43|pageurl=https://archive.org/details/parispassionswat0000spic/page/43/mode/1up|isbn=9781439213926|passage=Cuddling is what an epidemic of lovers are doing all around us on this nippy, dazzling day. Entangled in each other like doting '''octopi''', sweethearts are seizing the day, the hour, the magic minute.|translation=การกอดรัดฟัดเหวี่ยงคือสิ่งที่คู่รักจำนวนมากกำลังทำอยู่รอบตัวเราในวันที่อากาศเย็นสบายและเจิดจ้านี้ คู่รักต่างพัวพันกันและกันราวกับ'''ปลาหมึก'''ที่คลั่งไคล้กัน พวกเขาต่างคว้าวัน ชั่วโมง และนาทีอันมหัศจรรย์นี้ไว้}}
==== หมายเหตุการใช้ ====
รูป {{m|en|octopuses}} และ ''octopi'' ปรากฏว่ามีการใช้งานแพร่หลายพอ ๆ กัน ในขณะที่ {{m|en|octopodes}} นั้นพบน้อยกว่ามาก อย่างไรก็ตาม ''octopi'' ถือเป็นคำที่ไม่เป็นมาตรฐาน ดูการอภิปรายเพิ่มเติมที่ {{m|en|octopus}}
6w7zmi9crqbmpe73rdk7nubc6boervs
5759327
5759326
2026-09-01T02:13:06Z
Octahedron80
267
/* คำนาม */
5759327
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
สร้างขึ้นจากสมมติฐานทั่วไปที่ว่าปัจจัย {{m|la|-us}} ของ {{m+|la|octopus}} เป็นการลงท้ายการรวบคำของ[[ภาคผนวก:Latin second declension|การผันรูปที่สองภาษาละติน]]
=== การออกเสียง ===
* {{IPA|en|/ˈɒktəpaɪ/|/ˈɒktəpiː/|a=RP}}
* {{IPA|en|/ˈɑktəpaɪ/|/ˈɑktəpiː/|a=GenAm}}
* {{rhymes|en|iː|aɪ|s=3}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{lb|en|ไม่เป็นมาตรฐาน|แก้ไขเกินเหตุ}} {{plural of|en|octopus}}
#: {{syn|en|octopuses|octopodes}} {{q|ดูเพิ่มที่คำหลัก}}
#* {{quote-book|en|author=w:Keith Spicer|title=Paris Passions: Watching the French Being Brilliant and Bizarre|publisher=[[w:CreateSpace|BookSurge]]|year=2009|page=43|pageurl=https://archive.org/details/parispassionswat0000spic/page/43/mode/1up|isbn=9781439213926|passage=Cuddling is what an epidemic of lovers are doing all around us on this nippy, dazzling day. Entangled in each other like doting '''octopi''', sweethearts are seizing the day, the hour, the magic minute.|translation=การกอดรัดฟัดเหวี่ยงคือสิ่งที่คู่รักจำนวนมากกำลังทำอยู่รอบตัวเราในวันที่อากาศเย็นสบายและเจิดจ้านี้ คู่รักต่างพัวพันกันและกันราวกับ'''หมึกยักษ์'''ที่คลั่งไคล้กัน พวกเขาต่างคว้าวัน ชั่วโมง และนาทีอันมหัศจรรย์นี้ไว้}}
==== หมายเหตุการใช้ ====
รูป {{m|en|octopuses}} และ ''octopi'' ปรากฏว่ามีการใช้งานแพร่หลายพอ ๆ กัน ในขณะที่ {{m|en|octopodes}} นั้นพบน้อยกว่ามาก อย่างไรก็ตาม ''octopi'' ถือเป็นคำที่ไม่เป็นมาตรฐาน ดูการอภิปรายเพิ่มเติมที่ {{m|en|octopus}}
tl4xdvc6l0i9vv5tk71kc039742as6a
ဂျီဩမေတြီ
0
46657
5759443
1411220
2026-09-01T10:11:35Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759443
wikitext
text/x-wiki
== ภาษาพม่า ==
=== รากศัพท์ ===
{{bor+|my|en|geometry}}
=== การออกเสียง ===
* {{my-IPA}}
=== คำนาม ===
{{head|my|คำนาม}}
# {{lb|my|math}} [[เรขาคณิต]]
=== อ้างอิง ===
* {{R:my:MED}}
eab7rnj6krqrx6ci5qxgmymdshd0gff
汉
0
53509
5759363
1815322
2026-09-01T02:59:09Z
Octahedron80
267
/* ภาษาจีน */
5759363
wikitext
text/x-wiki
{{character info}}
== ภาษาร่วม ==
{{stroke order}}
=== อักษรจีน ===
{{Han char|rn=85|rad=水|as=2|sn=5|four=3714|canj=EE|ids=⿰氵又}}
# ชาวจีน
# ภาษาจีน
==== อ้างอิง ====
* {{Han ref|kx=0604.091|dkj=|dj=|hdz=31549.080|uh=6C49}}
== ภาษาจีน ==
{{zh-see|漢}}
fbz6hky6hg8gcl5jrc3ype3guvnbp2l
漢
0
89364
5759364
4904609
2026-09-01T02:59:47Z
Octahedron80
267
/* การออกเสียง */
5759364
wikitext
text/x-wiki
{{character info}}
{{character info|0xFA47}}
{{character info|0xFA9A}}
== ภาษาร่วม ==
=== อักษรจีน ===
{{Han char|rn=85|rad=水|as=11|sn=14|four=3413.4|canj=ETLO|ids=⿰氵𦰩}}
# คนจีน, ภาษาจีน
==== อ้างอิง ====
* {{Han ref|kx=0646.170|dkj=18068|dj=1055.150|hdz=31713.090|uh=6F22}}
== ภาษาจีน ==
{{zh-forms|s=汉|alt=𣾒,㵄,𣶔,𤁉,𭲑}}
=== การออกเสียง ===
{{zh-pron
|m=hàn
|ma=y
|dg=хан3
|c=hon3
|c-t=hon1
|h=pfs=hon;hrs=h:honˇ;gd=hon4;ct=hung4
|j=han3
|md=háng
|mn=hàn
|mn-t=hang3
|px=pt,xy:hang4
|w=sh,sz,cm,cs,cz,dq,hn,hy,jd,jx,ks,sj,xs:5hoe;fy,hz:5haen;hn,nb,tx,yx:5he;cx:1heen;sx:5heen;nb,zs:5hei;jj:5hoen
|w_note=Haining: 5he - new-style; 5hoe - old-style
Ningbo: 5he - general; 5hei - alternative
|w-j=5han,5hoe
|mc=y
|oc=y
|cat=pn,n
}}
8xu99ebn31djv6106scnj0jq501343n
ႁေႃႈ
0
135915
5759372
1893690
2026-09-01T04:04:18Z
Octahedron80
267
/* คำกริยา */
5759372
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทใหญ่ ==
=== การออกเสียง ===
{{shn-pron}}
=== คำกริยา ===
{{shn-verb}}
# [[ขับ]] (รถ)
# [[ขี่]] (ม้า)
q8yfah2v6hbhnzuqfve0zr748poy499
มอดูล:headword/data
828
162970
5759302
5757802
2026-09-01T01:50:32Z
Octahedron80
267
5759302
Scribunto
text/plain
local headword_page_module = "Module:headword/page"
local list_to_set = require("Module:table").listToSet
local data = {}
------ 1. Lists which are converted into sets. ------
--[==[ var:
Large pages where we disable label tracking, red link checking and similar.
]==]
data.large_pages = list_to_set {
-- pages that consistently hit timeouts
"a",
-- pages that sometimes hit timeouts
"A",
"baba",
"de",
"e",
"i",
"lima",
"o",
"u",
"и",
"山",
"子",
"月",
"一",
"人",
}
--[==[ var:
Map from singular to plural, and from plural to itself, for recognized parts of speech with irregular plurals. Most of
these are invariable plurals, e.g. `kanji` is its own plural; but we also have `mora` plural `morae`.
]==]
data.irregular_plurals = list_to_set({
"ชมาโว", --cmavo
"ชเมเน", --cmene
"ฟูฮิฝลา", --fu'ivla
"กิสมู", --gismu
"ฮั้นถื่อ", --Han tu
"ฮันจา", --hanja
"ฮั่นจื้อ", --hanzi
"ยฺหวืดเพ็ง", --jyutping
"คานะ", --kana
"คันจิ", --kanji
"ลุฌโว", --lujvo
"หนังสือวลี", --phrasebook
"พินอิน", --pinyin
"รัฟซี", --rafsi
}, function(_, item)
return item
end)
local irregular_plurals = data.irregular_plurals
-- Irregular non-zero plurals AND any regular plurals where the singular ends in "s",
-- because the module assumes that inputs ending in "s" are plurals. The singular and
-- plural both need to be added, as the module will generate a default plural if
-- the input doesn't match a key in this table.
for sg, pl in next, {
mora = "morae"
} do
irregular_plurals[sg], irregular_plurals[pl] = pl, pl
end
--[==[ var:
Recognized lemmas. If the part of speech in {{tl|head}} is set to one of these or its singular equivalent, the category
'LANG lemmas' will automatically be added. If the part of speech is not a singular or plural lemma or non-lemma form and
is not an abbreviation that expands to a recognized lemma or non-lemma form, the page will be added to various tracking
categories:
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANG]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/pos/POS]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/pos/POS/LANG]]
]==]
data.lemmas = list_to_set{
"คำย่อ", --abbreviations
"อักษรย่อรวมพยางค์", --acronyms
"คำคุณศัพท์", --adjectives
"adnominals",
"adpositions",
"คำกริยาวิเศษณ์", --adverbs
"หน่วยคำเติม", --affixes
"ambipositions",
"คำกำกับนาม", --articles
"หน่วยคำเติมคร่อม", --circumfixes
"circumpositions",
"คำลักษณนาม", --classifiers
"ชมาโว", --cmavo
"cmavo clusters",
"ชเมเน", --cmene
"combining forms",
"คำสันธาน", --conjunctions
"คำลักษณนาม", --counters = classifiers
"ตัวกำหนด", --determiners
"diacritical marks",
"ทวิอักษร", --digraphs
"equative adjectives",
"ฟูฮิฝลา", --fu'ivla
"กิสมู", --gismu
"อักษรจีน", --Han characters
"ฮั้นถื่อ", --Han tu
"ฮันจา", --hanja
"ฮั่นจื้อ", --hanzi
"ideophones",
"สำนวน", --idioms
"อาคม", --infixes
"อักษรย่อ", --initialisms
"เครื่องหมายซ้ำ", --iteration marks
"หน่วยคำเติมเชื่อม", --interfixes
"คำอุทาน", --interjections
"คานะ", --kana
"คันจิ", --kanji
"ตัวอักษร", --letters
"ตัวอักษรควบ", --ligatures
"logograms",
"ลุฌโว", --lujvo
"morae",
"หน่วยคำ", --morphemes
"non-constituents",
"คำนาม", --nouns
"จำนวน", --numbers
"ตัวเลข", --numeral symbols
"เลข", --numerals
"คำอนุภาค", --particles
"วลี", --phrases
"คำปัจฉบท", --postpositions
"วลีปัจฉบท", --postpositional phrases
"predicatives",
"อุปสรรค", --prefixes
"วลีบุพบท", --prepositional phrases
"คำบุพบท", --prepositions
"คำกริยาเติมหน้า", --preverbs
"pronominal adverbs",
"คำสรรพนาม", --pronouns
"คำวิสามานยนาม", --proper nouns
"สุภาษิต", --proverbs
"เครื่องหมายวรรคตอน", --punctuation marks
"relatives",
"ราก", --roots
"ต้นเค้าศัพท์", --stems
"ปัจจัย", --suffixes
"พยางค์", --syllables
"สัญลักษณ์", --symbols
"คำกริยา", --verbs
}
--[==[ var:
Recognized non-lemma forms. If the part of speech in {{tl|head}} is set to one of these or its singular equivalent, the
category 'LANG non-lemma forms' will automatically be added. If the part of speech is not a singular or plural lemma or
non-lemma form and is not an abbreviation that expands to a recognized lemma or non-lemma form, the page will be added
to various tracking categories; see the documentation of `data.lemmas`.
]==]
data.nonlemmas = list_to_set{
"รูปผันรูปกริยาขยายกรรตุวาจก", --active participle forms
"รูปกริยาขยายกรรตุวาจก", --active participles
"รูปกริยาขยายเชิงคุณศัพท์", --adjectival participles
"adjective case forms",
"รูปคุณศัพท์", --adjective forms
"adjective feminine forms",
"รูปคุณศัพท์พหูพจน์", --adjective plural forms
"รูปกริยาวิเศษณ์", --adverb forms
"รูปกริยาขยายเชิงกริยาวิเศษณ์", --adverbial participles
"agent participles",
"รูปกำกับนาม", --article forms
"รูปหน่วยคำเติมคร่อม", --circumfix forms
"combined forms",
"รูปคุณศัพท์ขั้นกว่า", --comparative adjective forms
"คำคุณศัพท์ขั้นกว่า", --comparative adjectives
"รูปกริยาวิเศษณ์ขั้นกว่า", --comparative adverb forms
"คำกริยาวิเศษณ์ขั้นกว่า", --comparative adverbs
"รูปสันธาน", --conjunction forms
"รูปหดย่อ", --contractions
"converbs",
"รูปตัวกำหนดขั้นกว่า", --determiner comparative forms
"รูปตัวกำหนด", --determiner forms
"รูปตัวกำหนดขั้นสุด", --determiner superlative forms
"คำนามบอกความเล็ก", --diminutive nouns
"elative adjectives",
"รูปคุณศัพท์ขั้นเท่า", --equative adjective forms
"คำคุณศัพท์ขั้นเท่า", --equative adjectives
"รูปกริยาขยายอนาคตกาล", --future participles
"รูปกริยาเป็นนาม", --gerunds
"infinitive forms",
"infinitives",
"รูปอุทาน", --interjection forms
"ยฺหวืดเพ็ง", --jyutping
"รูปสะกดผิด", --misspellings
"คำอนุภาคปฏิเสธ", --negative participles
"nominal participles",
"noun case forms",
"noun construct forms",
"รูปนามทวิพจน์", --noun dual forms
"รูปนาม", --noun forms
"รูปนามบอกความน้อย", --noun paucal forms
"รูปนามพหูพจน์", --noun plural forms
"noun possessive forms",
"noun singulative forms",
"รูปผันเลข", --numeral forms
"รูปกริยาขยาย", --participles
"รูปผันรูปกริยาขยาย", --participle forms
"รูปอนุภาค", --particle forms
"รูปกริยาขยายกรรมวาจก", --passive participles
"รูปกริยาขยายกรรตุวาจกอดีตกาล", --past active participles
"past adverbial participles",
"รูปกริยาขยายอดีตกาล", --past participles
"รูปผันรูปกริยาขยายอดีตกาล", --past participle forms
"รูปกริยาขยายกรรมวาจกอดีตกาล", --past passive participles
"perfect active participles",
"perfect participles",
"perfect passive participles",
"พินอิน", --pinyin
"พหูพจน์", --plurals
"รูปปัจฉบท", --postposition forms
"รูปอุปสรรค", --prefix forms
"preposition contractions",
"รูปบุพบท", --preposition forms
"prepositional pronouns",
"รูปกริยาขยายกรรตุวาจกปัจจุบันกาล", --present active participles
"present adverbial participles",
"รูปกริยาขยายปัจจุบันกาล", --present participles
"รูปกริยาขยายกรรมวาจกปัจจุบันกาล", --present passive participles
"preverb forms",
"รูปสรรพนาม", --pronoun forms
"pronoun possessive forms",
"รูปวิสามานยนาม", --proper noun forms
"รูปวิสามานยนามพหูพจน์", --proper noun plural forms
"รัฟซี", --rafsi
"การถอดเป็นอักษรโรมัน", --romanizations
"root forms",
"singulatives",
"รูปปัจจัย", --suffix forms
"รูปคุณศัพท์ขั้นสุด", --superlative adjective forms
"คำคุณศัพท์ขั้นสุด", --superlative adjectives
"รูปกริยาวิเศษณ์ขั้นสุด", --superlative adverb forms
"คำกริยาวิเศษณ์ขั้นสุด", --superlative adverbs
"รูปกริยา", --verb forms
"คำกริยานาม", --verbal nouns
}
--[==[ var:
List of languages that will not have links to separate parts of the headword.
]==]
data.no_multiword_links = list_to_set{
"zh",
}
--[==[ var:
List of languages that will not have `LANG multiword terms` categories added. There are various reasons why languages
are in this list: (a) words are written without spaces between them; (b) syllables are written with spaces between them;
(c) variant reconstructions are notated with a tilde surrounded by spaces; (d) the language is a sign language, where
pagenames are multiword descriptions of the gesture(s) required to make an individual sign; (e) some other weirdnesses.
]==]
data.no_multiword_cat = list_to_set{
-------- Languages without spaces between words (sometimes spaces between phrases) --------
"blt", -- Tai Dam
"ja", -- Japanese
"khb", -- Lü
"km", -- Khmer
"lo", -- Lao
"mnw", -- Mon
"my", -- Burmese
"nan", -- Min Nan (some words in Latin script; hyphens between syllables)
"nan-hbl", -- Hokkien (some words in Latin script; hyphens between syllables)
"nod", -- Northern Thai
"ojp", -- Old Japanese
"shn", -- Shan
"sou", -- Southern Thai
"tdd", -- Tai Nüa
"th", -- Thai
"tts", -- Isan
"twh", -- Tai Dón
"txg", -- Tangut
"zh", -- Chinese (all varieties with Chinese characters)
"zkt", -- Khitan
-------- Languages with spaces between syllables --------
"ahk", -- Akha
"aou", -- A'ou
"atb", -- Zaiwa
"byk", -- Biao
"cdy", -- Chadong
--"duu", -- Drung; not sure
--"hmx-pro", -- Proto-Hmong-Mien
--"hnj", -- Green Hmong; not sure
"huq", -- Tsat
"ium", -- Iu Mien
--"lis", -- Lisu; not sure
"mtq", -- Muong
--"mww", -- White Hmong; not sure
"onb", -- Lingao
--"sit-gkh", -- Gokhy; not sure
--"swi", -- Sui; not sure
"tbq-lol-pro", -- Proto-Loloish
"tdh", -- Thulung
"ukk", -- Muak Sa-aak
"vi", -- Vietnamese
"yig", -- Wusa Nasu
"zng", -- Mang
-------- Languages with ~ with surrounding spaces used to separate variants --------
"mkh-ban-pro", -- Proto-Bahnaric
"sit-pro", -- Proto-Sino-Tibetan; listed above
-------- Other weirdnesses --------
"mul", -- Translingual; gestures, Morse code, etc.
"aot", -- Atong (India); bullet is a letter
-------- All sign languages --------
"ads",
"aed",
"aen",
"afg",
"ase",
"asf",
"asp",
"asq",
"asw",
"bfi",
"bfk",
"bog",
"bqn",
"bqy",
"bvl",
"bzs",
"cds",
"csc",
"csd",
"cse",
"csf",
"csg",
"csl",
"csn",
"csq",
"csr",
"doq",
"dse",
"dsl",
"ecs",
"esl",
"esn",
"eso",
"eth",
"fcs",
"fse",
"fsl",
"fss",
"gds",
"gse",
"gsg",
"gsm",
"gss",
"gus",
"hab",
"haf",
"hds",
"hks",
"hos",
"hps",
"hsh",
"hsl",
"icl",
"iks",
"ils",
"inl",
"ins",
"ise",
"isg",
"isr",
"jcs",
"jhs",
"jls",
"jos",
"jsl",
"jus",
"kgi",
"kvk",
"lbs",
"lls",
"lsl",
"lso",
"lsp",
"lst",
"lsy",
"lws",
"mdl",
"mfs",
"mre",
"msd",
"msr",
"mzc",
"mzg",
"mzy",
"nbs",
"ncs",
"nsi",
"nsl",
"nsp",
"nsr",
"nzs",
"okl",
"pgz",
"pks",
"prl",
"prz",
"psc",
"psd",
"psg",
"psl",
"pso",
"psp",
"psr",
"pys",
"rms",
"rsl",
"rsm",
"sdl",
"sfb",
"sfs",
"sgg",
"sgx",
"slf",
"sls",
"sqk",
"sqs",
"ssp",
"ssr",
"svk",
"swl",
"syy",
"tse",
"tsm",
"tsq",
"tss",
"tsy",
"tza",
"ugn",
"ugy",
"ukl",
"uks",
"vgt",
"vsi",
"vsl",
"vsv",
"xki",
"xml",
"xms",
"ygs",
"ysl",
"zib",
"zsl",
}
--[==[ var:
List of languages where a hyphen is not considered a word separator for the `LANG multiword terms` category. There are
numerous reasons why languages are in this list; by each language should be listed the reason for inclusion.
]==]
data.hyphen_not_multiword_sep = list_to_set{
"akk", -- Akkadian; hyphens between syllables
"akl", -- Aklanon; hyphens for mid-word glottal stops
"ber-pro", -- Proto-Berber; morphemes separated by hyphens
"ceb", -- Cebuano; hyphens for mid-word glottal stops
"cnk", -- Khumi Chin; hyphens used in single words
"cpi", -- Chinese Pidgin English; Chinese-derived words with hyphens between syllables
"de", -- German; too many false positives
"esx-esk-pro", -- hyphen used to separate morphemes
"fi", -- Finnish; hyphen used to separate components in compound words if the final and initial vowels match, respectively
"gd", -- Scottish Gaelic; too many false positives like [[a-chianaibh]], [[a-nìos]], [[an-dè]] and other adverbs in a- and an-
"hil", -- Hiligaynon; hyphens for mid-word glottal stops
"hnn", -- Hanunoo; too many false positives
"ilo", -- Ilocano; hyphens for mid-word glottal stops
"kne", -- Kankanaey; hyphens for mid-word glottal stops
"lcp", -- Western Lawa; dash as syllable joiner
"lwl", -- Eastern Lawa; dash as syllable joiner
"mfa", -- Pattani Malay in Thai script; dash as syllable joiner
"mkh-vie-pro", -- Proto-Vietic; morphemes separated by hyphens
"msb", -- Masbatenyo; too many false positives
"tl", -- Tagalog; too many false positives
"war", -- Waray-Waray; too many false positives
"yo", -- Yoruba; hyphens used to show lengthened nasal vowels
}
--[==[ var:
List of languages that will not have `LANG masculine nouns` and similar categories added. Generally, these languages are
lacking gender but use the gender field for other purposes. (This is a massive hack and should be changed.)
]==]
data.no_gender_cat = list_to_set{
-- Languages without gender but which use the gender field for other purposes
"ja",
"th",
}
--[==[ var:
List of languages where [[Module:headword]] should not attempt to generate a transliteration even if the term is written
in a non-Latin script. FIXME: Notate reasons why each language is in this list.
]==]
data.notranslit = list_to_set{
"ams",
"az",
"bbc",
"bug",
"cdo",
"cia",
"cjm",
"cjy",
"cmn",
"cnp",
"cpi",
"cpx",
"csp",
"czh",
"czo",
"gan",
"hak",
"hnm",
"hsn",
--"ja",
"kzg",
"lad",
"ltc",
"luh",
"lzh",
"mnp",
"ms",
"mul",
"mvi",
"nan",
"nan-dat",
"nan-hbl",
"nan-hlh",
"nan-lnx",
"nan-tws",
"nan-zhe",
"nan-zsh",
"och",
"oj",
"okn",
"ryn",
"rys",
"ryu",
"sh",
"sjc",
"tgt",
--"th",
"tkn",
"tly",
"txg",
"und",
--"vi",
"wuu",
"xug",
"yoi",
"yox",
"yue",
"za",
"zh",
"zhx-sic",
"zhx-tai",
-- ภาษาที่ใช้ Thai อย่างเดียว หรือ Thai/Latin นอกนั้นไปกำหนดใน languages
"th", --ไทย
"bzi", --บีซู
"cbn", --ญัฮกุร
"lcp", --เลอเวือะตะวันตก
"lwl", --เลอเวือะตะวันออก
"nyw", --ญ้อ
"skb", --แสก
"sou", --ปักษ์ใต้
"thm", --ทะวืง
"tts", --อีสาน
"ugo", --กฺ๋อง
"urk", --อูรักลาโวยจ
}
--[==[ var:
Languages where we track all direct uses of {{tl|head}} in place of a language-specific template, such as
{{tl|en-head}}, {{tl|hi-head}}, {{tl|sa-head}}, {{tl|tl-head}}.
]==]
data.track_head_template = list_to_set{
-- "en", -- when the time comes?
"hi",
"sa",
"tl",
}
--[==[ var:
List of script codes for which a script-tagged display title will be added.
]==]
data.toBeTagged = list_to_set{
"Ahom",
"Arab",
"fa-Arab",
"Aran",
"Armi",
"Armn",
"Avst",
"Bali",
"Bamu",
"Batk",
"Beng",
"as-Beng",
"Bopo",
"Brah",
"Brai",
"Bugi",
"Buhd",
"Cakm",
"Cans",
"Cari",
"Cham",
"Cher",
"Copt",
"Cprt",
"Cyrl",
"Cyrs",
"Deva",
"Dsrt",
"Egyd",
"Egyp",
"Ethi",
"Geok",
"Geor",
"Glag",
"Goth",
"Grek",
"Polyt",
"Gujr",
"Guru",
"Hang",
"Hani",
"Hano",
"Hebr",
"Hira",
"Hluw",
"Ital",
"Java",
"Kali",
"Kana",
"Khar",
"Khmr",
"Knda",
"Kthi",
"Lana",
"Laoo",
"Latn",
"Latf",
"Latg",
"pjt-Latn",
"Lepc",
"Limb",
"Linb",
"Lisu",
"Lyci",
"Lydi",
"Mand",
"Mani",
"Marc",
"Merc",
"Mero",
"Mlym",
"Mong",
"mnc-Mong",
"sjo-Mong",
"xwo-Mong",
"Mtei",
"Mymr",
"Narb",
"Nkoo",
"Nshu",
"Ogam",
"Olck",
"Orkh",
"Orya",
"Osma",
"Ougr",
"Palm",
"Phag",
"Phli",
"Phlv",
"Phnx",
"Plrd",
"Prti",
"Rjng",
"Runr",
"Samr",
"Sarb",
"Saur",
"Sgnw",
"Shaw",
"Shrd",
"Sinh",
"Sora",
"Sund",
"Sylo",
"Syrc",
"Tagb",
"Tale",
"Talu",
"Taml",
"Tang",
"Tavt",
"Telu",
"Tfng",
"Tglg",
"Thaa",
"Thai",
"Tibt",
"Ugar",
"Vaii",
"Xpeo",
"Xsux",
"Yiii",
"Zmth",
"Zsym",
"Ipach",
"Music",
"Rumin",
}
--[==[ var:
Parts of speech which will not be categorised in categories like `English terms spelled with É` if the term is the
character in question (e.g. the letter entry for English [[é]]). This contrasts with entries like the French adjective
[[m̂]], which is a one-letter word spelled with the letter.
]==]
data.pos_not_spelled_with_self = list_to_set{
"diacritical marks",
"อักษรจีน", --Han characters
"ฮั้นถื่อ", --Han tu
"ฮันจา", --hanja
"ฮั่นจื้อ", --hanzi
"iteration marks",
"คานะ", --kana
"คันจิ", --kanji
"ตัวอักษร", --letters
"ตัวอักษรควบ", --ligatures
"logograms",
"morae",
"ตัวเลข", --numeral symbols
"เลข", --numerals
"เครื่องหมายวรรคตอน", --punctuation marks
"พยางค์", --syllables
"สัญลักษณ์", --symbols
}
------ 2. Lists not converted into sets. ------
--[==[ var:
List of languages that will default to `sccat` being true, i.e. categories like `LANG POS in SCRIPT script` will
automatically be generated. This can be overridden using {{para|sccat|0}} in {{tl|head}} or setting `sccat` to
{false} in Lua. If the value on the right-hand side is {true}, such categories will be generated for all scripts. If
{false}, no categories will be generated (this is useful for etym languages that override the spec of their parent). If
a list of scripts, such categories will be generated only for the specified scripts. If a list of scripts where the
first element is {"not"}, such categories will be generated for all scripts ''except'' the specified scripts.
]==]
data.default_sccat = {
["af"] = {"not", "Latn"},
["az"] = {"not", "Latn"},
["inc-apa"] = true,
["inc-ash"] = true,
["kfr"] = true,
["ks"] = true,
["mr"] = true,
["mwr"] = true,
["inc-oaw"] = true,
["inc-ohi"] = true,
["omr"] = true,
["inc-opa"] = true,
["phr"] = true,
["pi"] = true,
["pra"] = true,
["sa"] = true,
["skr"] = true,
["sd"] = true,
["yi"] = {"not", "Hebr"},
}
--[==[ var:
Recognized aliases for parts of speech (param 2=). Key is the short form and value is the canonical singular (not
pluralized) form. It is singular so the same table can be used in [[Module:form of]] for the {{para|p}}/{{para|POS}}
param and [[Module:links]] for the pos= param. Note that any part of speech, abbreviated or not, can be suffixed with
`f` to generate the corresponding non-lemma form part of speech, such as `adjf`, `af` or `adjectivef` for
`adjective form`, and `nounf` or `nf` for `noun form`. This expansion happens even when it does not make sense for the
given part of speech (e.g. `pclf` expands to `particle form` and `symf` expands to `symbol form`), and currently also,
at least in [[Module:headword]] (but not [[Module:links]]), even if the part before the `f` is not a recognized part of
speech or abbreviation (hence `nerf` expands to `ner form`).
]==]
data.pos_aliases = {
a = "คำคุณศัพท์",
adj = "คำคุณศัพท์",
adv = "คำกริยาวิเศษณ์",
art = "คำกำกับนาม",
aug = "ตัวบอกความใหญ่",
cls = "คำลักษณนาม",
compadj = "คำคุณศัพท์ขั้นกว่า",
compadv = "คำกริยาวิเศษณ์ขั้นกว่า",
compdet = "comparative determiner",
comppron = "comparative pronoun",
conj = "คำสันธาน",
contr = "รูปหดย่อ",
conv = "converb",
det = "ตัวกำหนด",
dim = "ตัวบอกความเล็ก",
infin = "infinitive", -- not inf, which is ambiguous due to infixes
int = "คำอุทาน",
interj = "คำอุทาน",
intj = "คำอุทาน",
n = "คำนาม",
-- the next two support Algonquian languages; see also vii/vai/vti/vta below
na = "คำนามมีชีวิต",
ni = "คำนามไม่มีชีวิต",
num = "เลข",
part = "รูปกริยาขยาย",
pastpart = "รูปกริยาขยายอดีตกาล",
pastptcp = "รูปกริยาขยายอดีตกาล",
pcl = "คำอนุภาค",
phr = "วลี",
pn = "คำวิสามานยนาม",
postp = "คำปัจฉบท",
pref = "อุปสรรค",
prep = "คำบุพบท",
prepphr = "prepositional phrase",
prespart = "รูปกริยาขยายปัจจุบันกาล",
presptcp = "รูปกริยาขยายปัจจุบันกาล",
pron = "คำสรรพนาม",
prop = "คำวิสามานยนาม",
proper = "คำวิสามานยนาม",
propn = "คำวิสามานยนาม",
ptcp = "รูปกริยาขยาย",
rom = "การถอดเป็นอักษรโรมัน",
roman = "การถอดเป็นอักษรโรมัน",
romanisation = "การถอดเป็นอักษรโรมัน",
romanisations = "การถอดเป็นอักษรโรมัน",
suf = "ปัจจัย",
supadj = "คำคุณศัพท์ขั้นสุด",
supadv = "คำกริยาวิเศษณ์ขั้นสุด",
supdet = "superlative determiner",
suppron = "superlative pronoun",
sym = "สัญลักษณ์",
v = "คำกริยา",
vb = "คำกริยา",
vi = "คำอกรรมกริยา",
vm = "modal verb",
vt = "คำสกรรมกริยา",
-- the next four support Algonquian languages
vii = "คำอกรรมกริยาไม่มีชีวิต",
vai = "คำอกรรมกริยามีชีวิต",
vti = "คำสกรรมกริยาไม่มีชีวิต",
vta = "คำสกรรมกริยามีชีวิต",
}
--[==[ var:
Map of parts of speech for which categories like `German masculine nouns` or `Russian imperfective verbs` will be
generated if the headword is of the appropriate gender/number. The map is used to canonicalize parts of speech for
categorization purposes; specifically, proper nouns categorizes like nouns.
]==]
data.pos_for_gender_number_cat = {
["nouns"] = "nouns",
["proper nouns"] = "nouns",
["suffixes"] = "suffixes",
-- We include verbs because impf and pf are valid "genders".
["verbs"] = "verbs",
}
--[==[ var:
Lower limit for a "long" word in a particular language. Used to categorize terms into e.g.
[[:Category:Long English words]] automatically. Languages with no mapping here do not get categorized.
]==]
data.long_word_thresholds = {
["af"] = 20,
["bg"] = 20,
["cy"] = 25,
["de"] = 20,
["en"] = 25,
["es"] = 20,
["fr"] = 20,
["ka"] = 20,
["sv"] = 20,
["tl"] = 25,
}
------ 3. Page-wide processing (so that it only needs to be done once per page). ------
data.page = require(headword_page_module).process_page()
-- Set some page properties directly on `data` for ease of use.
data.pagename = data.page.pagename
data.encoded_pagename = data.page.encoded_pagename
return data
rfg4yzq5bwizxwzxvnwbqcjfblu3ux3
แม่แบบ:da-noun-infl-base
10
240194
5759298
2200859
2026-09-01T01:37:42Z
Octahedron80
267
5759298
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{inflection-table-top|title=การผันรูปของ {{m|da||{{{sg-indef}}}}}|palette=brown|tall=yes}}
! rowspan="2" | {{#switch:{{{g}}}|c=เพศรวม|n=เพศกลาง|b=เพศใดเพศหนึ่ง {{cln|da|คำนาม★ที่มีหลายเพศ}}}}<br/>
! colspan="2" | เอกพจน์
! colspan="2" | พหูพจน์
|-
! class="secondary" | ไม่ชี้เฉพาะ
! class="secondary" | ชี้เฉพาะ
! class="secondary" | ไม่ชี้เฉพาะ
! class="secondary" | ชี้เฉพาะ
|-
! กรรตุการก
| data-accel-col=1 | <!--
-->{{l-self|da|accel-form=indef{{!}}nom{{!}}s|{{{sg-indef}}}}}
| data-accel-col=2 | <!--
-->{{l-self|da|accel-form=def{{!}}nom{{!}}s|{{{sg-def}}}}}<!--
-->{{#if:{{{sg-def-2|}}}|<br/>{{l-self|da|accel-form=def{{!}}nom{{!}}s|{{{sg-def-2|}}}}}}}
| data-accel-col=3 | <!--
-->{{l-self|da|accel-form=indef{{!}}p|{{{pl-indef}}}}}<!--
-->{{#if:{{{pl-indef-2|}}}|<br/>{{l-self|da|accel-form=indef{{!}}nom{{!}}p|{{{pl-indef-2|}}}}}}}<!--
-->{{#if:{{{pl-indef-3|}}}|<br/>{{l-self|da|accel-form=indef{{!}}nom{{!}}p|{{{pl-indef-3|}}}}}}}
| data-accel-col=4 | <!--
-->{{l-self|da|accel-form=def{{!}}p|{{{pl-def}}}}}<!--
-->{{#if:{{{pl-def-2|}}}|<br/>{{l-self|da|accel-form=def{{!}}nom{{!}}p|{{{pl-def-2|}}}}}}}<!--
-->{{#if:{{{pl-def-3|}}}|<br/>{{l-self|da|accel-form=def{{!}}nom{{!}}p|{{{pl-def-3|}}}}}}}
|-
! สัมพันธการก
| data-accel-col=1 | <!--
-->{{l-self|da|accel-form=indef{{!}}gen{{!}}s|{{{gen-sg-indef}}}}}<!--
-->{{#if:{{{gen-sg-indef-2|}}}|<br/>{{l-self|da|accel-form=indef{{!}}gen{{!}}s|{{{gen-sg-indef-2}}}}}}}<!--
-->{{#if:{{{gen-sg-indef-3|}}}|<br/>{{l-self|da|accel-form=indef{{!}}gen{{!}}s|{{{gen-sg-indef-3}}}}}}}
| data-accel-col=2 | <!--
-->{{l-self|da|accel-form=def{{!}}gen{{!}}s|{{{gen-sg-def}}}}}<!--
-->{{#if:{{{gen-sg-def-2|}}}|<br/>{{l-self|da|accel-form=def{{!}}gen{{!}}s|{{{gen-sg-def-2|}}}}}}}
| data-accel-col=3 | <!--
-->{{l-self|da|accel-form=indef{{!}}gen{{!}}p|{{{gen-pl-indef}}}}}<!--
-->{{#if:{{{gen-pl-indef-2|}}}|<br/>{{l-self|da|accel-form=indef{{!}}gen{{!}}p|{{{gen-pl-indef-2|}}}}}}}
| data-accel-col=4 | <!--
-->{{l-self|da|accel-form=def{{!}}gen{{!}}p|{{{gen-pl-def}}}}}<!--
-->{{#if:{{{gen-pl-def-2|}}}|<br/>{{l-self|da|accel-form=def{{!}}gen{{!}}p|{{{gen-pl-def-2|}}}}}}}<!--
-->{{#if:{{{gen-pl-def-3|}}}|<br/>{{l-self|da|accel-form=def{{!}}gen{{!}}p|{{{gen-pl-def-3|}}}}}}}
{{inflection-table-bottom|notes={{{notes|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
s9kbridach7b9k4v44c37d31bq88olu
แม่แบบ:sk-IPA
10
248746
5759380
1062771
2026-09-01T06:15:10Z
Octahedron80
267
5759380
wikitext
text/x-wiki
{{#invoke:sk-pron|show}}<noinclude>
{{documentation}}
</noinclude>
5nizc9r9kiknkvpf0z5dqe9037tdjit
มอดูล:sk-IPA
828
248747
5759381
2018724
2026-09-01T06:16:27Z
Octahedron80
267
5759381
Scribunto
text/plain
local export = {}
local m_params = require("Module:parameters")
local m_IPA = require("Module:IPA")
local m_syllables = require("Module:syllables")
local m_links = require("Module:links")
local m_script_utils = require("Module:script utilities")
local lang = require("Module:languages").getByCode("sk")
local sc = require("Module:scripts").getByCode("Latn")
local sub = mw.ustring.sub
local gsub = mw.ustring.gsub
local find = mw.ustring.find
local match = mw.ustring.match
local gmatch = mw.ustring.gmatch
local U = require("Module:string/char")
local long = "ː"
local nonsyllabic = U(0x32F) -- inverted breve below
local syllabic = U(0x0329)
local tie = U(0x361) -- combining double inverted breve
local primary_stress = "ˈ"
local secondary_stress = "ˌ"
local data = {
["á"] = "a" .. long,
["ä"] = "ɛɐ" .. nonsyllabic,
["c"] = "t" .. tie .. "s",
["č"] = "t" .. tie .. "ʃ",
["ď"] = "ɟ",
["dz"] = "d" .. tie .. "z",
["dž"] = "d" .. tie .. "ʒ",
["é"] = "e" .. long,
["g"] = "ɡ",
["h"] = "ɦ",
["ch"] = "x",
["í"] = "i" .. long,
["ĺ"] = "l" .. syllabic .. long,
["ľ"] = "ʎ",
["ň"] = "ɲ",
["o"] = "ɔ",
["ó"] = "o" .. long,
["ô"] = "u" .. nonsyllabic .. "o",
["ö"] = "œ",
["q"] = "kv",
["ŕ"] = "r" .. syllabic .. long,
["š"] = "ʃ",
["ť"] = "c",
["ú"] = "u" .. long,
["ü"] = "y",
["w"] = "ʋ", -- most common IPA representation as in "kov"
["x"] = "ks",
["y"] = "i",
["ý"] = "i" .. long,
["ž"] = "ʒ",
["ia"] = "i" .. nonsyllabic .. "a",
["ie"] = "i" .. nonsyllabic .. "e",
["iu"] = "i" .. nonsyllabic .. "u",
["\""] = primary_stress,
["%"] = secondary_stress,
["^"] = syllabic, -- a respelling to force syllabic
}
-- Add data["a"] = "a", data["b"] = "b", etc.
for character in gmatch("abdefijklmnprstuvz ", ".") do
data[character] = character
end
--Define alveolars, front vowels, and palatalized consonants
local alveolars_ortho = { "t", "d", "n", "l"}
local front_vowels_ortho = { "e", "é", "i", "í", "ie", "ia"}
local palatalized_ortho = {
["t"] = "ť",
["d"] = "ď",
["n"] = "ň",
["l"] = "ľ",
}
-- [==[ Phonological rules ]==]
--[[
This is used to replace multiple-character sounds
with numbers, which makes it easier to process them. ]]
local multiple_char = {
"t" .. tie .. "s", "t" .. tie .. "ʃ", "d" .. tie .. "z", "d" .. tie .. "ʒ",
}
local singlechar = {}
for number, character in pairs(multiple_char) do
singlechar[character] = tostring(number)
end
local voiceless = { "p", "t", "c", "k", "f", "s", "ʃ", "x", "1", "2", }
local voiced = { "b", "d", "ɟ", "ɡ", "v", "z", "ʒ", "ɦ", "3", "4", }
local sonorants = { "m", "n", "ɲ", "r", "l", "ʎ", "j", }
local features = {}
local indices = {}
for i, consonant in pairs(voiceless) do
if not features[consonant] then
features[consonant] = {}
end
features[consonant]["voicing"] = false
indices[consonant] = i
end
for i, consonant in pairs (voiced) do
if not features[consonant] then
features[consonant] = {}
end
features[consonant]["voicing"] = true
indices[consonant] = i
end
local function palatalize_orthography(term)
for _, alv in ipairs(alveolars_ortho) do
for _, vow in ipairs(front_vowels_ortho) do
local pattern = alv .. vow
local replacement = palatalized_ortho[alv] .. vow
term = gsub(term, pattern, replacement)
end
end
return term
end
local function devoice_finally(IPA)
local voiced_obstruent = "[" .. table.concat(voiced) .. "]"
local final_voiced_obstruent = match(IPA, voiced_obstruent .. "+$") or match(IPA, voiced_obstruent .. "+%s")
if final_voiced_obstruent then
local replacement = {}
local length = mw.ustring.len(final_voiced_obstruent)
for i = 1, length do
local consonant = sub(final_voiced_obstruent, i, i)
local index = indices[consonant]
local devoiced = voiceless[index]
table.insert(replacement, devoiced)
end
replacement = table.concat(replacement)
-- This will cause problems if the same consonant cluster occurs elsewhere in the term.
IPA = gsub(IPA, final_voiced_obstruent, replacement)
end
return IPA
end
local function syllabicize_sonorants(IPA)
local sonorant = gsub("[" .. table.concat(sonorants) .. "]", "[ɲʎj]", "") -- all except ɲ and ʎ and j
local obstruent = "[" .. table.concat(voiced) .. table.concat(voiceless) .. "]"
local consonant = "[" .. gsub(sonorant .. obstruent, "[%[%]]", "") .. "]"
-- between a consonant and an obstruent
IPA = gsub(IPA, "(" .. consonant .. sonorant .. ")(" .. obstruent .. ")", "%1" .. syllabic .. "%2")
-- at the beginning of a word before an obstruent
IPA = gsub(IPA, "^(" .. sonorant .. ")(" .. obstruent .. ")", "%1" .. syllabic .. "%2")
-- at the end of a word after an obstruent
IPA = gsub(IPA, "(" .. obstruent .. sonorant .. ")$", "%1" .. syllabic)
return IPA
end
local function add_stress(IPA)
local syllable_count = m_syllables.getVowels(IPA, lang)
if not syllable_count then
-- words like “čln” or “v” contain no designated vowels, yet they are
-- valid Slovak words
-- error("Could not count syllables of " .. IPA)
syllable_count = 1
end
if syllable_count > 1 and not find(IPA, " ") then
IPA = primary_stress .. IPA
end
return IPA
end
local function apply_rules(IPA)
-- Replace multiple-character units with numbers.
for sound, character in pairs(singlechar) do
IPA = gsub(IPA, sound, character)
end
IPA = devoice_finally(IPA)
IPA = syllabicize_sonorants(IPA)
IPA = add_stress(IPA)
-- Change double to single consonants.
local consonant = "[" .. table.concat(sonorants) .. table.concat(voiceless) .. table.concat(voiced) .. "]"
IPA = gsub(IPA, "(" .. consonant .. ")%1", "%1")
-- Replace numbers with multiple-character units.
for sound, character in pairs(singlechar) do
IPA = gsub(IPA, character, sound)
end
return IPA
end
function export.toIPA(term)
term = palatalize_orthography(term)
local IPA = {}
local transcription = mw.ustring.lower(term)
local working_string = transcription
while mw.ustring.len(working_string) > 0 do
local IPA_letter
local letter = sub(working_string, 1, 1)
local twoletters = sub(working_string, 1, 2) or ""
if data[twoletters] then
IPA_letter = data[twoletters]
working_string = sub(working_string, 3)
else
IPA_letter = data[letter] or error('The letter "' .. tostring(letter) .. '" is not a member of the Slovak alphabet.')
working_string = sub(working_string, 2)
end
table.insert(IPA, IPA_letter)
end
IPA = table.concat(IPA)
IPA = apply_rules(IPA)
return IPA, transcription
end
function export.show(frame)
local params = {
[1] = {template_default = "príklad"},
pagename = true,
}
local args = m_params.process(frame:getParent().args, params)
local term = args[1] or args.pagename or mw.loadData("Module:headword/data").pagename
local IPA = export.toIPA(term)
IPA = "[" .. IPA .. "]"
IPA = m_IPA.format_IPA_full { lang = lang, items = {{ pron = IPA }} }
return IPA
end
function export.example(frame)
local params = {
[1] = { required = true },
["term"] = {}
}
local args = m_params.process(frame.args, params)
local term = args["term"] or args[1]
local transcribable = args[1]
local IPA, transcribable = export.toIPA(transcribable)
IPA = "[" .. IPA .. "]"
IPA = m_IPA.format_IPA_full { lang = lang, items = {{ pron = IPA }} }
link = m_links.full_link( { term = term, lang = lang, sc = sc }, "term" )
return link .. ( term ~= transcribable and ( " (" .. m_script_utils.tag_text(transcribable, lang, nil, "term") .. ") — " ) or " — " ) .. IPA
end
return export
eavh1fgne5jrv7pd5ktzgi4u75ale90
ห้อ
0
282238
5759371
1903721
2026-09-01T04:03:32Z
Octahedron80
267
/* รากศัพท์ 1 */
5759371
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ฮ่อ}}
=== รากศัพท์ 1 ===
ร่วมเชื้อสายกับ{{cog|shn|ႁေႃႈ}}
เทียบ{{cog|nan-tws|飛|tr=hui1|t=บิน}} (ในคำ {{m|nan-tws|飛馳||วิ่งด้วยความเร็วเต็มที่}})
==== คำกริยา ====
{{th-verb|-}}
# [[วิ่ง]][[เต็มเหยียด]], วิ่ง[[เต็มที่]] (ใช้แก่ม้า)
# {{lb|th|ปาก}} [[รีบ]][[ไป]]
#: {{ux|th|ห้อไปรับลูกที่โรงเรียน}}
=== รากศัพท์ 2 ===
==== คำกริยา ====
{{th-verb|-}}
# [[ระบม]][[เพราะ]][[ถูก]][[กระทบ]][[อย่าง]][[แรง]] [[มัก]][[ใช้]][[คู่]][[กับ]][[คำ]] [[เลือด]] [[เป็น]] ห้อเลือด
okyahbm8fxbeos4mdjt2vh64fzkhnus
5759373
5759371
2026-09-01T04:04:49Z
Octahedron80
267
/* รากศัพท์ 1 */
5759373
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ฮ่อ}}
=== รากศัพท์ 1 ===
ร่วมเชื้อสายกับ{{cog|shn|ႁေႃႈ||ขับ; ขี่}}
เทียบ{{cog|nan-tws|飛|tr=hui1|t=บิน}} (ในคำ {{m|nan-tws|飛馳||วิ่งด้วยความเร็วเต็มที่}})
==== คำกริยา ====
{{th-verb|-}}
# [[วิ่ง]][[เต็มเหยียด]], วิ่ง[[เต็มที่]] (ใช้แก่ม้า)
# {{lb|th|ปาก}} [[รีบ]][[ไป]]
#: {{ux|th|ห้อไปรับลูกที่โรงเรียน}}
=== รากศัพท์ 2 ===
==== คำกริยา ====
{{th-verb|-}}
# [[ระบม]][[เพราะ]][[ถูก]][[กระทบ]][[อย่าง]][[แรง]] [[มัก]][[ใช้]][[คู่]][[กับ]][[คำ]] [[เลือด]] [[เป็น]] ห้อเลือด
fqt4iexz76wibvecka79u3gyy00dnfu
5759374
5759373
2026-09-01T04:05:06Z
Octahedron80
267
/* รากศัพท์ 1 */
5759374
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ฮ่อ}}
=== รากศัพท์ 1 ===
ร่วมเชื้อสายกับ{{cog|shn|ႁေႃႈ||ขับ (รถ); ขี่ (ม้า)}}
เทียบ{{cog|nan-tws|飛|tr=hui1|t=บิน}} (ในคำ {{m|nan-tws|飛馳||วิ่งด้วยความเร็วเต็มที่}})
==== คำกริยา ====
{{th-verb|-}}
# [[วิ่ง]][[เต็มเหยียด]], วิ่ง[[เต็มที่]] (ใช้แก่ม้า)
# {{lb|th|ปาก}} [[รีบ]][[ไป]]
#: {{ux|th|ห้อไปรับลูกที่โรงเรียน}}
=== รากศัพท์ 2 ===
==== คำกริยา ====
{{th-verb|-}}
# [[ระบม]][[เพราะ]][[ถูก]][[กระทบ]][[อย่าง]][[แรง]] [[มัก]][[ใช้]][[คู่]][[กับ]][[คำ]] [[เลือด]] [[เป็น]] ห้อเลือด
h8ly5tw04kz5561woxji4ry4zpbaukw
5759375
5759374
2026-09-01T04:07:04Z
Octahedron80
267
/* คำกริยา */
5759375
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== การออกเสียง ===
{{th-pron|ฮ่อ}}
=== รากศัพท์ 1 ===
ร่วมเชื้อสายกับ{{cog|shn|ႁေႃႈ||ขับ (รถ); ขี่ (ม้า)}}
เทียบ{{cog|nan-tws|飛|tr=hui1|t=บิน}} (ในคำ {{m|nan-tws|飛馳||วิ่งด้วยความเร็วเต็มที่}})
==== คำกริยา ====
{{th-verb|-}}
# [[วิ่ง]][[เต็มเหยียด]], วิ่ง[[เต็มที่]] (ใช้แก่ม้า อนุโลมถึงรถด้วย)
# {{lb|th|ปาก}} [[รีบ]][[ไป]]
#: {{ux|th|ห้อไปรับลูกที่โรงเรียน}}
=== รากศัพท์ 2 ===
==== คำกริยา ====
{{th-verb|-}}
# [[ระบม]][[เพราะ]][[ถูก]][[กระทบ]][[อย่าง]][[แรง]] [[มัก]][[ใช้]][[คู่]][[กับ]][[คำ]] [[เลือด]] [[เป็น]] ห้อเลือด
pgoqot8g7b2littkxr82vvk0dbmpkpf
เซาะ
0
284441
5759376
5032260
2026-09-01T04:57:20Z
~2026-47622-27
19461
/* รากศัพท์ */
5759376
wikitext
text/x-wiki
{{also/auto}}
== ภาษาไทย ==
=== รากศัพท์ ===
{{rfe|th}}เขมร ច្រោះ 1 กัดเซาะ 2 กรอง(น้ำให้ใส)
=== การออกเสียง ===
{{th-pron}}
=== คำนาม ===
{{th-noun}}
# {{lb|th|ล้า}} [[ซอก]][[เขา]][[เล็ก]] ๆ [[ที่]][[น้ำ]]เซาะ[[ให้]][[เป็น]][[ทาง]][[ลง]][[มา]]
=== คำกริยา ===
{{th-verb}}
# [[ทำ]][[ให้]][[กร่อน]][[หรือ]][[ร่อยหรอ]][[เข้า]][[ไป]][[ที]][[ละ]][[น้อย]]
#: {{ux|th|นํ้า'''เซาะ'''ตลิ่ง}}
#: {{ux|th|'''เซาะ'''รูให้กว้าง}}
== ภาษาคำเมือง ==
=== การออกเสียง ===
* {{IPA|nod|/sɔʔ˦˥/|a=เชียงใหม่}}
=== คำกริยา ===
{{nod-verb}}
# {{lb|nod|สกรรม}} {{alternative form of|nod|ᨪᩰᩬᩡ}}
== ภาษาเลอเวือะตะวันตก ==
=== รากศัพท์ ===
{{inh+|lcp|mkh-pal-pro|*cɔːʔ}}; เทียบ{{cog|km|ច}}
=== การออกเสียง ===
* {{IPA|lcp|/sɔʔ/}}
=== คำนาม ===
{{head|lcp|คำนาม}}
# [[หมา]]
qinnrcx4i12khxbklwaq0q9cdj1kbpe
แม่แบบ:da-conj
10
288453
5759299
1198143
2026-09-01T01:40:05Z
Octahedron80
267
5759299
wikitext
text/x-wiki
{{#invoke:checkparams|warn}}<!-- Validate template parameters
-->{{inflection-box-top|title=การผันรูปของ {{m|da||{{{{{{2}}}|{{pagename}}}}}}}}}
{{inflection-table-top|palette=brown|title=-}}
! !! กรรตุวาจก !! กรรมวาจก
|-
! รูปกริยากลาง
| {{l-self|da|accel-form=act{{!}}inf|{{#if:{{{2|}}}|{{{2}}}|{{pagename}}}}}}
| {{#ifeq:{{{9}}}|-|—|{{l-self|da|accel-form=pass{{!}}inf|{{#if:{{{9|}}}|{{{9}}}|{{{1}}}{{#if:{{{dc|}}}|{{#invoke:string/templates|pos|{{{1}}}|-1}}}}es}}}}}}<!--
-->{{#if:{{{pass2|}}}|<br/>{{l-self|da|accel-form=pass{{!}}inf|{{{pass2}}}}}}}
|-
! ปัจจุบันกาล
| {{l-self|da|accel-form=pres{{!}}act|{{#switch:{{{3}}}|r={{{1}}}r|er={{{1}}}{{#if:{{{dc|}}}|{{#invoke:string/templates|pos|{{{1}}}|-1}}}}er|#default={{{3}}}}}}}<!--
-->{{#if:{{{pres2|}}}|<br/>{{l-self|da|accel-form=pres{{!}}act|{{{pres2}}}}}}}
| {{#ifeq:{{{9}}}|-|—|{{l-self|da|accel-form=pres{{!}}pass|{{#if:{{{9|}}}|{{{9}}}|{{{1}}}{{#if:{{{dc|}}}|{{#invoke:string/templates|pos|{{{1}}}|-1}}}}es}}}}}}<!--
-->{{#if:{{{pass2|}}}|<br/>{{l-self|da|accel-form=pres{{!}}pass|{{{pass2}}}}}}}
|-
! อดีตกาล
| {{l-self|da|accel-form=past{{!}}act|{{#switch:{{{4}}}|te={{{1}}}te|ede={{{1}}}{{#if:{{{dc|}}}|{{#invoke:string/templates|pos|{{{1}}}|-1}}}}ede|#default={{{4}}}}}}}<!--
-->{{#if:{{{past2|}}}|<br/>{{l-self|da|accel-form=past{{!}}act|{{{past2}}}}}}}
| {{#ifeq:{{{10}}}|-|—|{{l-self|da|accel-form=past{{!}}pass|{{#if:{{{10|}}}|{{{10}}}|{{#switch:{{{4}}}|te={{{1}}}te|ede={{{1}}}{{#if:{{{dc|}}}|{{#invoke:string/templates|pos|{{{1}}}|-1}}}}ede|#default={{{4}}}}}s}}}}}}<!--
-->{{#if:{{{pass-past2|}}}|<br/>{{l-self|da|accel-form=past{{!}}pass|{{{pass-past2}}}}}}}
|-
! มาลาสั่ง
| {{l-self|da|accel-form=imp{{!}}act|{{{1}}}}}<!--
-->{{#if:{{{imp-2|}}}|<br/>{{l-self|da|accel-form=imp{{!}}act|{{{imp-2}}}}}}}
| —
{{inflection-table-bottom}}
{{inflection-table-top|palette=brown|title=-}}
! !! รูปกริยาขยาย
|-
! ปัจจุบันกาล
| {{l-self|da|accel-form=pres{{!}}part|{{#if:{{{7|}}}|{{{7}}}|{{{1}}}{{#if:{{{dc|}}}|{{#invoke:string/templates|pos|{{{1}}}|-1}}}}ende}}}}<!--
-->{{#if:{{{pres-part2|}}}|<br/>{{l-self|da|accel-form=pres{{!}}part|{{{pres-part2}}}}}}}
|-
! อดีตกาล
| ({{#switch:{{{5}}}|h|have={{l-self|da|have//havde}}|v|være={{l-self|da|er//var}}|hv|vh={{l-self|da|have//havde//er//var}}|{{{5}}}}}) {{l-self|da|accel-form=past{{!}}part|{{#switch:{{{6}}}|t={{{1}}}t|et={{{1}}}{{#if:{{{dc|}}}|{{#invoke:string/templates|pos|{{{1}}}|-1}}}}et|{{{6}}}}}}}<!--
-->{{#if:{{{past-part2|}}}|<br/>({{#switch:{{{5}}}|h|have={{l-self|da|have//havde}}|v|være={{l-self|da|er//var}}|hv|vh={{l-self|da|have//havde//er//var}}|{{{5}}}}}) {{l-self|da|accel-form=past{{!}}part|{{{past-part2}}}}}}}
|-
! รูปกริยาเป็นนาม
| {{#ifeq:{{{8}}}|-|—|{{l-self|da|accel-form=ger|{{#if:{{{8|}}}|{{{8}}}|{{{1}}}{{#if:{{{dc|}}}|{{#invoke:string/templates|pos|{{{1}}}|-1}}}}en}}}}}}<!--
-->{{#if:{{{gerund2|}}}|<br/>{{l-self|da|accel-form=ger|{{{gerund2}}}}}}}
{{inflection-table-bottom}}
{{inflection-box-bottom}}<noinclude>{{documentation}}</noinclude>
1u17872e5cyajegph2idmnowvt6vsbo
แม่แบบ:en-noun/documentation
10
298471
5759351
1503475
2026-09-01T02:41:58Z
Octahedron80
267
5759351
wikitext
text/x-wiki
{{documentation subpage}}
{{uses lua|Module:en-headword}}
This is the standard [[Wiktionary:Inflection templates|inflection template]] for English [[common noun]]s hereinafter referred to simply as ''nouns''. For the standard inflection template for English [[proper noun]]s see {{tl|en-proper noun}}. For [[taxonomic]] proper nouns see {{tl|taxlink}} and {{tl|taxfmt}}.
{{isAccelerated}}
==Quick guide==
{| class="wikitable"
|+Template parameters for Template:en-noun
! scope="col"|Code
! scope="col"|Result
! scope="col"|Notes
|-
|scope="row"| {{demo|<nowiki>{{en-noun}}</nowiki>|fmt=0}} ''or'' {{demo|<nowiki>{{en-noun|+}}</nowiki>|fmt=0}} ''or'' {{demo2c|<nowiki>{{en-noun|s|pagename=noun}}</nowiki>}}
|
|-
|scope="row"| {{demo|<nowiki>{{en-noun}}</nowiki>|fmt=0}} ''or'' {{demo|<nowiki>{{en-noun|+}}</nowiki>|fmt=0}} ''or'' {{demo2c|<nowiki>{{en-noun|es|pagename=church}}</nowiki>}}
|-
|scope="row"| {{demo|<nowiki>{{en-noun}}</nowiki>|fmt=0}} ''or'' {{demo2c|<nowiki>{{en-noun|+|pagename=belfry}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|++|pagename=quiz}}</nowiki>}}
| doubles the final consonant before {{m|en|-es}} if the term ends in "s" or "z"
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|ies|pagename=Uy}}</nowiki>}}
| only needed in rare cases as a manual override
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|*|pagename=sheep}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|-|pagename=awe}}</nowiki>}}
|
|-
|scope="row"| {{demo|<nowiki>{{en-noun|-|+}}</nowiki>|fmt=0}} ''or'' {{demo2c|<nowiki>{{en-noun|-|s|pagename=rain}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|-|+|pagename=greenery}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|~|pagename=beer}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|!|pagename=abligurition}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|?|pagename=tuchus}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|+|seraphim|pagename=seraph}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|+|treen<l:obsolete>|pagename=tree}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|nolink=1|pagename=mai tai}}</nowiki>}}
| words separated by space(s) are not English
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|head=[[south|South]] [[American]]|pagename=South American}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-noun|p|pagename=property rights}}</nowiki>}}
|
|-
|scope="row"| {{demo2c|<nowiki>{{en-proper noun|sp|the=1|head=[[Faroe]] [[island|Islands]]|pagename=Faroe Islands}}</nowiki>}}
| term construed as singular or plural
|-
|scope="row"| {{demo2c|<nowiki>{{en-prop|head=[[European]] {{U|union}}|def=1|abbr=EU|pagename=European Union}}</nowiki>}}
| abbreviation
|}
==Extended guide==
Use this template to show the inflection line of an English singular noun.
This template shows the noun in bold (optionally linking its components) and its plural inflections, if any.
{{temp|en-noun}}
{{temp|en-noun|+}}
{{temp|en-noun|s}}
{{temp|en-noun|es}}
{{temp|en-noun|...}}
{{temp|en-noun|...|...}}
If the term has [[uncountable]] senses, the template can indicate whether the term is sometimes or never countable. Specifying <code>-</code> as the first parameter indicates that a term is uncountable, and no plural is shown by default. If it may occasionally be used as countable, specify the plural form after it.
{{temp|en-noun|-}}
{{temp|en-noun|-|+}}
{{temp|en-noun|-|...}}
Specifying <code>~</code> instead indicates that the term is used more or less equally as countable and as uncountable, and uses the default plural.
{{temp|en-noun|~}}
{{temp|en-noun|~|...}}
In entries for English plural-only nouns, use {{temp|en-noun|p}}:
{{temp|en-noun|p}} <!-- Most plural entries format the headword/inflection line like this and show the singular in the definition line. -->
===Plural parameters===
The default plural is formed as follows:
# If the noun ends in ''-s'', ''-x'', ''-z'', ''-sh'' or ''-ch'', add ''-es''.
# If the noun ends in ''-y'' preceded by a consonant (any letter other than ''a'', ''e'', ''i'', ''o'' or ''u''), change the ''-y'' to ''-i'' and add ''-es''.
# Otherwise, add ''-s''.
If the noun forms its plural according to these rules, no parameters are necessary. E.g. on "[[cherry]]":
:<code>===Noun===</code>
:<code><nowiki>{{en-noun}}</nowiki></code>
The above code displays as follows:
:<b><big>Noun</big></b>
:<span class="infl-inline">'''cherry''' (''plural'' '''[[cherries]]''')</span>
If the noun forms its plural in any other way, specify it explicity, e.g. on "[[erratum]]" and "[[mouse]]":
{{demo|<nowiki>{{en-noun|errata|pagename=erratum}}</nowiki>}}
{{demo|<nowiki>{{en-noun|mice|pagename=mouse}}</nowiki>}}
If the noun is identical in the plural, but still countable, use <code>*</code>, e.g. on "[[Abkhaz]]":
{{demo|<nowiki>{{en-noun|*|pagename=Abkhaz}}</nowiki>}}
To explicitly request the default plural, use <code>+</code>. This is not necessary if the word only has one plural, but it is useful if the noun has multiple plurals, e.g. on "[[octopus]]":
{{demo|<nowiki>{{en-noun|+|octopi|octopodes|pagename=octopus}}</nowiki>}}
If the noun is uncountable, use <code>-</code>, e.g. on "[[awe]]":
{{demo|<nowiki>{{en-noun|-|pagename=awe}}</nowiki>}}
If the noun is usually uncountable, use <code>-</code> followed by an explicit plural, e.g. on "[[reality]]":
{{demo|<nowiki>{{en-noun|-|+|pagename=reality}}</nowiki>}}
If the noun is either countable or uncountable, use <code>~</code>, e.g. on "[[beer]]" and "[[geometry]]":
{{demo|<nowiki>{{en-noun|~|pagename=beer}}</nowiki>}}
{{demo|<nowiki>{{en-noun|~|pagename=geometry}}</nowiki>}}
If you want to qualify a plural, use an inline modifier:
{{demo|<nowiki>{{en-noun|+|treen<l:obsolete>|pagename=tree}}</nowiki>}}
===Other parameters===
; {{para|head}}, {{para|head2}}, ...
: Override the headword display; used to add links to individual words in a multiword term.
; {{para|def|1}} ''or'' {{para|the|1}}
: Specify that the term is normally preceded the definite article ''the''. When given, ''the'' will appear at the beginning of the headword.
; {{para|def|~}} ''or'' {{para|the|~}}
: Specify that the term is optionally preceded the definite article ''the''. When given, two headwords will be generated, one with ''the'' and one without.
; {{para|id}}
: Sense ID for linking to this headword. See {{tl|senseid}} for more information.
; {{para|nolink|1}}, {{para|splithyph|1}}, {{para|nosplithyph|1}}, {{para|hyphspace|1}}
: Control how multiword terms are linked. See [[Module:en-headword/documentation]] for more information.
; {{para|nosuffix|1}}
: Prevent terms beginning with a hyphen from being interpreted as suffixes. See [[Module:en-headword/documentation#Suffix handling]] for more information.
; {{para|nomultiwordcat|1}}
: Prevent multiword terms (those with spaces or with hyphens in the middle) from being added to [[:Category:English multiword terms]].
; {{para|pagename}}
: Override the page name used to compute default values of various sorts. Useful when testing, for documentation pages, etc.
; {{para|sort}}
: Sort key. Rarely needs to be specified, as it is normally automatically generated.
; {{para|abbr}}
: Abbreviation.
===Pluralia tantum===
If the word is a [[plurale tantum]] (always or usually used in the plural only, such as {{m|en|scissors}} or {{m|en|cattle}}), then use {{para|1|p}}.
In addition to the parameters documented above, such terms support the following parameters:
; {{para|sg}}
: Specify the singular version(s) of plurale tantum nouns that are occasionally found in the singular, e.g. {{m|en|dreadlocks}}, {{m|en|corn flakes}}, {{m|en|earmuffs}}, etc. Separate multiple values with a comma (with no space following).
; {{para|attr}}
: Specify the attributive version(s) of the nouns, i.e. the form used when modifying another noun. Examples are {{m|en|pants}} with {{para|attr|pant}}; {{m|en|boxer shorts}} with {{para|attr|boxer-short,boxer short}}; etc. Separate multiple values with a comma (with no space following).
For example, for {{m|en|boxer shorts}}, use {{tl|en-noun|p|attr=boxer-short,boxer short}}.
If you want to qualify a singular or attributive form, use inline modifiers.
===Autosplitting===
{{tl|en-noun}}, as with all English headword-line templates, implements a semi-intelligent, customized algorithm for automatically splitting and linking the components of a multiword term. See [[Module:en-headword/documentation#Autosplitting]] for more information. See Link modifications below for ways of using the deep intelligence of the module.
===Suffix handling===
{{tl|en-noun}}, as with all English headword-line templates, will normally interpret a term beginning with a hyphen as a suffix and handle it specially. See [[Module:en-headword/documentation#Suffix handling]] for more information.
===Link modifications===
{{tl|en-noun}}, as with all English headword-line templates, has a special mechanism for overriding the default linking behavior of individual terms in a multiword expression without having to repeat the entire expression. See [[Module:en-headword/documentation#Link modifications]] for more information.
{{hwcat}}
q8vm6rjolpgbdsx4n7hfqgsst34svma
มอดูล:sk-headword
828
427553
5759383
5677112
2026-09-01T06:18:50Z
Octahedron80
267
5759383
Scribunto
text/plain
local export = {}
local pos_functions = {}
local rsubn = mw.ustring.gsub
local lang = require("Module:languages").getByCode("sk")
local langname = --[[lang:getCanonicalName()]] lang:getCategoryName()
local suffix_categories = {
["คำคุณศัพท์"] = true,
["คำกริยาวิเศษณ์"] = true,
["คำนาม"] = true,
["คำกริยา"] = true,
["วลีบุพบท"] = true,
}
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
local function track(page)
require("Module:debug").track("sk-headword/" .. page)
return true
end
local function glossary_link(entry, text)
text = text or entry
return "[[ภาคผนวก:อภิธานศัพท์#" .. entry .. "|" .. text .. "]]"
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
-- หมวดหมู่เป็นภาษาไทย
local poscat_th = require("Module:th-utilities").th_pos(poscat)
local params = {
["head"] = {list = true},
["nolinkhead"] = {type = "boolean"},
["pagename"] = {}, -- for testing
["sort"] = {}, -- FIXME, needed?
}
if pos_functions[poscat_th] then
for key, val in pairs(pos_functions[poscat_th].params) do
params[key] = val
end
end
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local pagename = args.pagename or mw.title.getCurrentTitle().text
local heads = args.head
if pos_functions[poscat_th] and pos_functions[poscat_th].param1_is_head and args[1] then
table.insert(heads, 1, args[1])
end
local data = {
lang = lang,
pos_category = poscat_th,
categories = {},
heads = heads,
genders = {},
inflections = {},
categories = {},
pagename = pagename,
sort_key = args.sort,
}
if pagename:find("^%-") and suffix_categories[poscat_th] then
data.pos_category = "ปัจจัย"
local singular_poscat = --[[poscat:gsub("s$", "")]] poscat_th
table.insert(data.categories, "ปัจจัยสร้าง" .. singular_poscat .. langname)
end
if pos_functions[poscat_th] then
pos_functions[poscat_th].func(args, data)
end
return require("Module:headword").full_headword(data)
end
local listToSet = require("Module:table/listToSet")
local allowed_genders = listToSet {
"m", "m-an", "m-in", "f", "n", "mf", "mf-an", "mf-in", "mfbysense", "mfbysense-an", "mfbysense-in",
"m-p", "m-an-p", "m-in-p", "f-p", "n-p", "mf-p", "mf-an-p", "mf-in-p", "mfbysense-p", "mfbysense-an-p", "mfbysense-in-p",
"?",
}
local allowed_decl_patterns = listToSet {
"chlap", "dievča", "dub", "gazdiná", "hrdina", "kosť", "mesto", "srdce", "stroj", "ulica", "vysvedčenie", "žena",
-- In use but not in the Appendix
"dlaň", "idea", "kuli", "pani",
}
local function get_noun_pos(is_proper)
return {
params = {
["indecl"] = {type = "boolean"},
[1] = {alias_of = "g"},
["g"] = {list = true},
["gen"] = {list = true},
["genqual"] = {list = true, allow_holes = true},
["genpl"] = {list = true},
["genplqual"] = {list = true, allow_holes = true},
["pl"] = {list = true},
["plqual"] = {list = true, allow_holes = true},
["decl"] = {list = true},
["declqual"] = {list = true, allow_holes = true},
["f"] = {list = true},
["fqual"] = {list = true, allow_holes = true},
["m"] = {list = true},
["mqual"] = {list = true, allow_holes = true},
["dim"] = {list = true},
["dimqual"] = {list = true, allow_holes = true},
["pej"] = {list = true},
["pejqual"] = {list = true, allow_holes = true},
["aug"] = {list = true},
["augqual"] = {list = true, allow_holes = true},
["adj"] = {list = true},
["adjqual"] = {list = true, allow_holes = true},
["dem"] = {list = true},
["demqual"] = {list = true, allow_holes = true},
["fdem"] = {list = true},
["fdemqual"] = {list = true, allow_holes = true},
},
func = function(args, data)
-- Gather genders
data.genders = args.g
-- Validate genders
for _, g in ipairs(data.genders) do
if not allowed_genders[g] then
error("Unrecognized " .. langname .. " gender: " .. g)
end
end
-- Validate declension patterns
for _, decl in ipairs(args.decl) do
if not allowed_decl_patterns[decl] then
error("Unrecognized " .. langname .. " declension pattern: " .. decl)
end
end
local function process_inflection(label, infls, quals, frob)
infls.label = label
for i, infl in ipairs(infls) do
if frob then
infl = frob(infl)
end
if quals[i] then
infls[i] = {term = infl, q = {quals[i]}}
end
end
if #infls > 0 then
table.insert(data.inflections, infls)
end
end
if args.indecl then
table.insert(data.inflections, {label = glossary_link("ผันรูปไม่ได้")})
end
-- Process all inflections.
process_inflection("สัมพันธการกเอกพจน์", args["gen"], args["genqual"])
process_inflection("กรรตุการกพหูพจน์", args["pl"], args["plqual"])
process_inflection("สัมพันธการกพหูพจน์", args["genpl"], args["genplqual"])
process_inflection("แบบการผันรูปของ", args["decl"], args["declqual"], function(decl)
return ("[[ภาคผนวก:แบบการผันรูป%s %s|%s]]"):format(langname, decl, decl)
end)
process_inflection("เพศหญิง", args["f"], args["fqual"])
process_inflection("เพศชาย", args["m"], args["mqual"])
process_inflection("ตัวบอกความเล็ก", args["dim"], args["dimqual"])
process_inflection("pejorative", args["pej"], args["pejqual"])
process_inflection("ตัวบอกความใหญ่", args["aug"], args["augqual"])
process_inflection("คำคุณศัพท์สัมพันธ์", args["adj"], args["adjqual"])
process_inflection("คำประชานาม", args["dem"], args["demqual"])
process_inflection("คำประชานามหญิง", args["fdem"], args["fdemqual"])
end
}
end
pos_functions["คำนาม"] = get_noun_pos(false)
pos_functions["คำวิสามานยนาม"] = get_noun_pos(true)
return export
67ahzthrmt1df3sijkwt5b2i9g6ijtv
มอดูล:labels/data/lang/en
828
427793
5759331
5757817
2026-09-01T02:15:33Z
Octahedron80
267
5759331
Scribunto
text/plain
local labels = {}
------------------------------------ North America ------------------------------------
labels["อเมริกาเหนือ"] = {
aliases = {"North America", "North American"},
display = "[[Canada]], [[American English|US]]",
regional_categories = {"แคนาดา", "American"},
}
labels["caricature Black"] = {
display = "caricatures of Black speech",
def = "any of various caricatures of Black speech by non-Black writers",
aliases = {"caricature black", "a caricature of Black speech", "caricatures of Black speech"},
plain_categories = "Caricatures of Black English",
form_of_display = "a caricature of Black"
-- for use in T:pronunciation spelling of. use in T:altform and T:altspell is not intended and looks bad.
}
------------- Canada -------------
labels["แคนาดา"] = {
aliases = {"CA", "Canada", "Canadian", "CanE", "Canadian English"},
Wikipedia = "Canadian English",
regional_categories = "แคนาดา",
parent = "rawposcat:North American English,เครือจักรภพ",
}
labels["Acadia"] = {
region = "colonial [[Acadia]]",
aliases = {"Acadian"},
Wikipedia = true,
regional_categories = "Acadian",
parent = "แคนาดา",
}
labels["Alberta"] = {
Wikipedia = true,
regional_categories = true,
parent = "Canadian Prairies",
}
labels["Atlantic Canada"] = {
Wikipedia = "Atlantic Canadian English",
regional_categories = "Atlantic Canadian",
parent = "แคนาดา",
}
labels["British Columbia"] = {
Wikipedia = true,
regional_categories = true,
parent = "แคนาดา",
}
labels["Canadian Prairies"] = {
the = true,
Wikipedia = true,
regional_categories = true,
parent = "แคนาดา",
}
labels["Labrador"] = {
Wikipedia = true,
regional_categories = true,
parent = "Atlantic Canada",
}
labels["Manitoba"] = {
Wikipedia = true,
regional_categories = true,
parent = "Canadian Prairies",
}
labels["Multicultural Toronto English"] = {
def = "the {{w|multiethnolect|multi-ethnic dialect}} of {{catlink|Canadian English}} used in the {{w|Greater Toronto Area}}, particularly among young non-white working-class speakers",
aliases = {"MTE"},
display = "MTE",
Wikipedia = true,
plain_categories = true,
parent = "Ontario",
}
labels["New Brunswick"] = {
Wikipedia = "Atlantic Canadian English",
regional_categories = true,
parent = "Atlantic Canada",
}
labels["Newfoundland"] = {
Wikipedia = "Newfoundland English",
regional_categories = true,
parent = "Atlantic Canada",
}
labels["Northwest Territories"] = {
region = "the [[Northwest Territories]] of [[Canada]]",
Wikipedia = true,
regional_categories = true,
parent = "แคนาดา",
}
labels["Northwestern Ontario"] = {
aliases = {"northwestern Ontario", "Northwest Ontario", "northwest Ontario"},
Wikipedia = true,
regional_categories = true,
parent = "Ontario",
}
labels["Nova Scotia"] = {
Wikipedia = "Atlantic Canadian English",
regional_categories = true,
parent = "Atlantic Canada",
}
labels["Nunavut"] = {
Wikipedia = true,
regional_categories = true,
parent = "แคนาดา",
}
labels["Ontario"] = {
Wikipedia = true,
regional_categories = true,
parent = "แคนาดา",
}
labels["Prince Edward Island"] = {
Wikipedia = true,
regional_categories = true,
parent = "Atlantic Canada",
}
labels["Quebec"] = {
aliases = {"Québec"},
Wikipedia = "Quebec English",
regional_categories = true,
parent = "แคนาดา",
}
labels["Saskatchewan"] = {
Wikipedia = true,
regional_categories = true,
parent = "Canadian Prairies",
}
labels["Yukon"] = {
Wikipedia = true,
regional_categories = true,
parent = "แคนาดา",
}
------------- US -------------
labels["สหรัฐอเมริกา"] = {
region = "สหรัฐอเมริกา",
aliases = {"สหรัฐ", "อเมริกา", "อเมริกัน", "US", "U.S.", "United States", "United States of America", "USA", "US English", "U.S. English", "America", "American", "American English"},
Wikipedia = "American English",
regional_categories = "สหรัฐอเมริกา",
parent = "rawposcat:North American English",
}
labels["African-American Vernacular"] = {
def = "the variety of [[English]] spoken, especially in urban communities, by most working-class and some middle-class [[African-American]]s",
addl = "It is a [[sociolect]] with significantly different grammatical characteristics from {{w|Standard English}}, especially in {{w|tense-aspect}} and [[negation]] constructions. Many African-American communities maintain [[diglossia]] between African-American Vernacular English (AAVE) and Standard English.",
aliases = {"AAVE", "African American Vernacular", "African American Vernacular English", "African-American Vernacular English", "BVE"},
Wikipedia = "African-American Vernacular English",
regional_categories = true,
parent = "African-American",
}
labels["African-American"] = {
prep = "by",
region = "[[African-American]]s in the [[United States]]",
aliases = {"AA", "African-American English", "African American", "African American English", "AAE"},
Wikipedia = "African-American English",
regional_categories = true,
parent = "สหรัฐอเมริกา",
}
labels["Alabama"] = {
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตอนใต้",
}
labels["Alaska"] = {
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันตกเฉียงเหนือ",
}
labels["Appalachia"] = {
aliases = {"Appalachian"},
Wikipedia = "Appalachian English",
regional_categories = "Appalachian",
parent = "สหรัฐอเมริกา",
}
labels["Arizona"] = {
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันตกเฉียงใต้",
}
labels["Arkansas"] = {
Wikipedia = true,
regional_categories = "Arkansan",
parent = "South Midland US",
}
labels["บอลทิมอร์"] = {
aliases = {"Baltimore"},
Wikipedia = "Baltimore accent",
regional_categories = true,
parent = "แมริแลนด์",
}
labels["Boston"] = {
Wikipedia = "Boston accent",
regional_categories = true,
parent = "แมสซาชูเซตส์",
}
labels["Cajun"] = {
prep = "by",
region = "[[Cajun]]s in {{w|Acadiana|Southern Louisiana}}",
Wikipedia = "Cajun English",
regional_categories = true,
parent = "ลุยเซียนา",
}
labels["California"] = {
Wikipedia = "California English",
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันตก",
}
labels["Chicago"] = {
Wikipedia = {"Inland Northern American English", true},
regional_categories = true,
parent = "Illinois",
}
labels["Cincinnati"] = {
Wikipedia = "Midland American English#Cincinnati",
regional_categories = true,
parent = "Ohio,Kentucky",
}
labels["Colorado"] = {
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันตกเฉียงใต้",
}
labels["Connecticut"] = {
Wikipedia = true,
regional_categories = true,
parent = "นิวอิงแลนด์",
}
labels["District of Columbia"] = {
region = "Washington, D.C.",
aliases = {"DC", "Washington, DC"},
Wikipedia = true,
regional_categories = "DC",
parent = "Mid-Atlantic US",
}
labels["Florida"] = {
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตอนใต้",
}
labels["Georgia (US)"] = {
region = "the state of [[Georgia]] in the [[United States]]",
display = "Georgia",
Wikipedia = "Georgia (U.S. state)",
regional_categories = true,
parent = "สหรัฐอเมริกาตอนใต้",
}
labels["Hawaii"] = {
Wikipedia = true,
regional_categories = "Hawaiian",
parent = "สหรัฐอเมริกาตะวันตก",
}
labels["Illinois"] = {
Wikipedia = true,
regional_categories = true,
parent = "Midland US,สหรัฐอเมริกาตอนเหนือ",
}
labels["Indiana"] = {
Wikipedia = true,
regional_categories = true,
parent = "Midland US,สหรัฐอเมริกาตอนเหนือ",
}
labels["Kentucky"] = {
Wikipedia = true,
regional_categories = true,
parent = "South Midland US",
}
labels["ลุยเซียนา"] = {
aliases = {"Louisiana"},
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตอนใต้",
}
labels["Maine"] = {
Wikipedia = "Maine accent",
regional_categories = true,
parent = "นิวอิงแลนด์",
}
labels["แมริแลนด์"] = {
aliases = {"Maryland", "แมรีแลนด์"},
Wikipedia = true,
regional_categories = true,
parent = "Mid-Atlantic US",
}
labels["แมสซาชูเซตส์"] = {
aliases = {"Massachusetts"},
Wikipedia = true,
regional_categories = true,
parent = "นิวอิงแลนด์",
}
labels["Michigan"] = {
Wikipedia = true,
regional_categories = true,
parent = "Upper Midwestern US",
}
labels["Mid-Atlantic US"] = {
region = "the [[Mid-Atlantic]] United States",
Wikipedia = "Mid-Atlantic American English",
regional_categories = true,
parent = "สหรัฐอเมริกา",
}
labels["Midland US"] = {
region = "the American [[Midland]]",
Wikipedia = "Midland American English",
regional_categories = true,
parent = "Midwestern US",
}
labels["Midwestern US"] = {
region = "the [[Midwest]] of the [[United States]]",
aliases = {"Midwest US"},
Wikipedia = "Midwestern American English",
regional_categories = true,
parent = "สหรัฐอเมริกา",
}
labels["Mississippi"] = {
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตอนใต้",
}
labels["Missouri"] = {
Wikipedia = true,
regional_categories = true,
parent = "Midland US",
}
labels["นิวอิงแลนด์"] = {
aliases = {"New England"},
Wikipedia = "ภาษาอังกฤษแบบนิวอิงแลนด์",
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันออกเฉียงเหนือ",
}
labels["New Jersey"] = {
Wikipedia = "New Jersey English",
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันออกเฉียงเหนือ",
}
labels["New Mexico"] = {
Wikipedia = "Western American English#New Mexico",
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันตกเฉียงใต้",
}
labels["นิวออร์ลีนส์"] = {
aliases = {"New Orleans"},
Wikipedia = "New Orleans English",
regional_categories = true,
parent = "ลุยเซียนา",
}
labels["นครนิวยอร์ก"] = {
aliases = {"นิวยอร์กซิตี", "New York City", "NYC"},
Wikipedia = "New York City English",
regional_categories = true,
parent = "นิวยอร์ก",
}
labels["นิวยอร์ก"] = {
region = "the [[United States]] state of [[New York]]",
aliases = {"New York", "NY"},
Wikipedia = "New York English (disambiguation)",
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันออกเฉียงเหนือ",
}
labels["North Carolina"] = {
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตอนใต้",
}
-- can be split off if enough entries in it arise; group with Midland US for now
labels["North Midland US"] = {
aliases = {"Northern Midland US"},
Wikipedia = "Midland American English",
regional_categories = "Midland US",
}
labels["สหรัฐอเมริกาตะวันออกเฉียงเหนือ"] = {
region = "สหรัฐอเมริกาตะวันออกเฉียงเหนือ",
aliases = {"Northeastern US", "Northeast US"},
Wikipedia = {"Northern American English#Northeastern American English"},
regional_categories = true,
parent = "สหรัฐอเมริกาตอนเหนือ",
}
-- can be split off if enough entries in it arise; group with California for now
labels["Northern California"] = {
Wikipedia = "California English",
regional_categories = "California",
}
labels["สหรัฐอเมริกาตะวันตกเฉียงเหนือ"] = {
region = "สหรัฐอเมริกาตะวันตกเฉียงเหนือ",
aliases = {"Northwestern US", "Northwest US", "Pacific Northwest"},
Wikipedia = {"Pacific Northwest English", "Northwestern United States"},
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันตก",
}
labels["Ohio"] = {
Wikipedia = true,
regional_categories = true,
parent = "Midland US,สหรัฐอเมริกาตอนเหนือ",
}
labels["Oklahoma"] = {
Wikipedia = true,
regional_categories = true,
parent = "South Midland US",
}
labels["Pennsylvania Dutch English"] = {
prep = "by",
region = "{{w|Pennsylvania Dutch}} people in south-central [[Pennsylvania]]",
Wikipedia = true,
plain_categories = true,
parent = "เพนซิลเวเนีย",
}
labels["เพนซิลเวเนีย"] = {
aliases = {"Pennsylvania"},
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันออกเฉียงเหนือ",
}
-- can be split off if enough entries in it arise; group with Pennsylvania for now
labels["ฟิลาเดลเฟีย"] = {
aliases = {"Philadelphia"},
Wikipedia = "Philadelphia English",
regional_categories = true,
parent = "เพนซิลเวเนีย,Mid-Atlantic US",
}
-- can be split off if enough entries in it arise; group with Western Pennsylvania for now
labels["Pittsburgh"] = {
Wikipedia = "Western Pennsylvania English",
regional_categories = "Western Pennsylvania",
parent = "เพนซิลเวเนีย",
}
labels["Rhode Island"] = {
Wikipedia = true,
regional_categories = true,
parent = "นิวอิงแลนด์",
}
labels["South Carolina"] = {
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตอนใต้",
}
-- can be split off if enough entries in it arise; group with Midland US for now
labels["South Midland US"] = {
aliases = {"Southern Midland US"},
Wikipedia = "Midland American English",
regional_categories = "Midland US",
}
-- can be split off if enough entries in it arise; group with California for now
labels["Southern California"] = {
Wikipedia = "California English",
regional_categories = "California",
}
-- ไม่สามารถใช้ว่า สหรัฐอเมริกาใต้
labels["สหรัฐอเมริกาตอนใต้"] = {
region = "สหรัฐอเมริกาตอนใต้",
aliases = {"Southern US", "Southern American English", "southern US", "US South"},
Wikipedia = "Southern American English",
regional_categories = true,
parent = "สหรัฐอเมริกา",
}
labels["สหรัฐอเมริกาตะวันตกเฉียงใต้"] = {
region = "สหรัฐอเมริกาตะวันตกเฉียงใต้",
aliases = {"Southwestern US", "southwestern US", "Southwest US", "southwest US"},
Wikipedia = {"Western American English", "Southwestern United States"},
regional_categories = true,
parent = "สหรัฐอเมริกาตะวันตก",
}
labels["St. Louis"] = {
Wikipedia = "St. Louis dialect",
regional_categories = true,
parent = "Missouri,Illinois",
}
labels["Texas"] = {
Wikipedia = "Texan English",
regional_categories = true,
parent = "สหรัฐอเมริกาตอนใต้,สหรัฐอเมริกาตะวันตกเฉียงใต้",
}
labels["Upper Midwestern US"] = {
region = "the {{w|Upper Midwest}} of the [[United States]]",
aliases = {"Upper Midwest US"},
Wikipedia = {"North-Central American English", "Upper Midwest"},
regional_categories = true,
parent = "Midwestern US,สหรัฐอเมริกาตอนเหนือ",
}
labels["Vermont"] = {
Wikipedia = {"ภาษาอังกฤษแบบนิวอิงแลนด์", "Vermont"},
regional_categories = true,
parent = "นิวอิงแลนด์",
}
labels["Virginia"] = {
Wikipedia = true,
regional_categories = true,
parent = "สหรัฐอเมริกาตอนใต้",
}
labels["Western Pennsylvania"] = {
aliases = {"Western Pennsylvania English"},
Wikipedia = "Western Pennsylvania English",
regional_categories = true,
parent = "เพนซิลเวเนีย",
}
labels["สหรัฐอเมริกาตะวันตก"] = {
region = "สหรัฐอเมริกาตะวันตก",
aliases = {"Western US", "western US"},
Wikipedia = {"Western American English", "Western United States"},
regional_categories = true,
parent = "สหรัฐอเมริกา",
}
labels["Wisconsin"] = {
Wikipedia = true,
regional_categories = true,
parent = "Upper Midwestern US",
}
------------------------------------ Australia and New Zealand ------------------------------------
labels["Australian Aboriginal"] = {
prep = "by",
region = "[[Aboriginal]] people in [[Australia]]",
aliases = {"Australian Aboriginal English", "Australian aboriginal"},
Wikipedia = "Australian Aboriginal English",
regional_categories = true,
parent = "ออสเตรเลีย",
}
labels["ออสเตรเลีย"] = {
aliases = {"Australia", "Australian", "AU", "AuE", "Aus", "AusE", "General Australian", "ออสเตรเลียทั่วไป"},
Wikipedia = "Australian English",
accent_Wikipedia = "Australian English phonology",
accent_display = "ออสเตรเลีย",
regional_categories = "ออสเตรเลีย",
parent = "โอเชียเนีย,เครือจักรภพ",
}
labels["Canberra"] = {
region = "the [[Australian Capital Territory]] ([[Canberra]])",
Wikipedia = {"Variation in Australian English#Regional variation", true},
regional_categories = true,
parent = "ออสเตรเลีย",
}
labels["New South Wales"] = {
aliases = {"NSW"},
Wikipedia = {"Variation in Australian English#Regional variation", true},
regional_categories = true,
parent = "ออสเตรเลีย",
}
labels["นิวซีแลนด์"] = {
aliases = {"NZ", "New Zealand"},
Wikipedia = "New Zealand English",
accent_Wikipedia = "New Zealand English phonology",
regional_categories = true,
parent = "โอเชียเนีย,เครือจักรภพ",
}
labels["Northern Territory"] = {
aliases = {"NT"},
Wikipedia = {"Variation in Australian English#Regional variation", true},
regional_categories = true,
parent = "ออสเตรเลีย",
}
-- ไม่สามารถใช้ว่า สหรัฐอเมริกาเหนือ
labels["สหรัฐอเมริกาตอนเหนือ"] = {
region = "สหรัฐอเมริกาตอนเหนือ",
aliases = {"Northern US", "Northern American English", "northern US", "US North"},
Wikipedia = "Northern American English",
regional_categories = true,
parent = "สหรัฐอเมริกา",
}
labels["Queensland"] = {
Wikipedia = {"Variation in Australian English#Regional variation", true},
regional_categories = true,
parent = "ออสเตรเลีย",
}
labels["South Australia"] = {
Wikipedia = "South Australian English",
regional_categories = "South Australian",
parent = "ออสเตรเลีย",
}
labels["Tasmania"] = {
Wikipedia = {"Variation in Australian English#Regional variation", true},
regional_categories = "Tasmanian",
parent = "ออสเตรเลีย",
}
labels["Victoria"] = {
Wikipedia = {"Variation in Australian English#Regional variation", "Victoria (state)"},
regional_categories = true,
parent = "ออสเตรเลีย",
}
labels["Western Australia"] = {
Wikipedia = "Western Australian English",
regional_categories = "Western Australian",
parent = "ออสเตรเลีย",
}
------------------------------------ Ireland ------------------------------------
labels["Cork"] = {
Wikipedia = {"South-West Irish English", "Cork (city)"},
regional_categories = "Munster",
}
labels["Dublin"] = {
Wikipedia = {"Dublin English", "Dublin", "DE"},
regional_categories = true,
parent = "ไอร์แลนด์",
}
labels["ไอร์แลนด์"] = {
aliases = {"ไอริช", "Ireland", "Irish", "IE"},
Wikipedia = "Hiberno-English",
regional_categories = "ไอร์แลนด์",
parent = "ยุโรป",
}
labels["Munster"] = {
Wikipedia = {"South-West Irish English", "Munster"},
regional_categories = true,
parent = "ไอร์แลนด์",
}
------------------------------------ United Kingdom ------------------------------------
labels["บริเตน"] = {
region = "บริเตนใหญ่",
addl = "Not to be confused with [[:Category:British English forms|British spellings]], a spelling system used in some English-speaking countries of the world.",
aliases = {"บริติช", "บริเตนใหญ่", "British", "Britain", "Great Britain"},
Wikipedia = "British English",
regional_categories = true,
parent = "ยุโรป,เครือจักรภพ",
country = "สหราชอาณาจักร",
}
labels["สหราชอาณาจักร"] = {
aliases = {"UK", "United Kingdom"},
Wikipedia = "British English",
regional_categories = "บริเตน",
}
labels["Antrim"] = {
Wikipedia = "County Antrim",
regional_categories = "ไอร์แลนด์เหนือ",
}
labels["Bedfordshire"] = {
Wikipedia = "Bedfordshire dialect",
regional_categories = true,
parent = "อังกฤษใต้",
}
labels["Berkshire"] = {
Wikipedia = true,
regional_categories = true,
parent = "อังกฤษใต้",
}
labels["Birmingham"] = {
Wikipedia = "Brummie dialect",
regional_categories = true,
parent = "West Midlands",
}
labels["Bristol"] = {
region = "[[Bristol]], [[England]]",
aliases = {"Bristolian"},
Wikipedia = "Bristolian dialect",
regional_categories = "Bristolian",
parent = "West Country",
}
labels["Caithness"] = {
Wikipedia = true,
regional_categories = true,
parent = "สกอตแลนด์",
}
labels["Cambridge University"] = {
prep = "at",
region = "{{w|Cambridge University}} in [[Cambridge]]",
aliases = {"University of Cambridge", "Cantab"},
Wikipedia = "University of Cambridge",
regional_categories = true,
parent = "East Anglia",
othercat = "en:Universities",
}
labels["Channel Islands"] = {
the = true,
Wikipedia = "Channel Island English",
regional_categories = true,
parent = "ยุโรป,เครือจักรภพ",
}
labels["Cockney"] = {
prep = "by",
region = "working-class [[Londoner]]s, especially in the [[East End]]",
Wikipedia = "Cockney#Speech",
regional_categories = true,
parent = "London",
}
labels["Cornwall"] = {
aliases = {"Cornish"},
Wikipedia = "Cornish dialect",
regional_categories = "Cornish",
parent = "West Country",
}
labels["Cumbria"] = {
aliases = {"Cumbrian"},
Wikipedia = "Cumbrian dialect",
regional_categories = "Cumbrian",
parent = "อังกฤษเหนือ",
}
labels["Derbyshire"] = {
region = "[[Derbyshire]], which is geographically in the East Midlands but whose dialect is sometimes classified as West Midlands",
Wikipedia = "Derbyshire dialect",
regional_categories = true,
parent = "East Midlands,West Midlands",
}
labels["Devon"] = {
aliases = {"Devonshire"},
Wikipedia = {"West Country English", true},
regional_categories = "Devonian",
parent = "West Country",
}
labels["Dorset"] = {
Wikipedia = "Dorset dialect",
regional_categories = true,
parent = "West Country",
}
labels["Dundee"] = {
Wikipedia = true,
regional_categories = true,
parent = "สกอตแลนด์",
}
labels["Durham University"] = {
prep = "at",
region = "{{w|Durham University}} in [[Durham]]",
Wikipedia = true,
regional_categories = true,
parent = "Durham",
othercat = "en:Universities",
}
labels["Durham"] = {
Wikipedia = {"Pitmatic", "County Durham"},
regional_categories = true,
parent = "นอร์ทัมเบรีย",
}
labels["East Anglia"] = {
Wikipedia = "East Anglian English",
regional_categories = "East Anglian",
parent = "อังกฤษ",
}
labels["East Midlands"] = {
region = "the [[East Midlands]] of [[England]]",
Wikipedia = "East Midlands English",
regional_categories = true,
parent = "Midlands",
}
labels["อังกฤษ"] = {
aliases = {"England", "English"},
Wikipedia = "English language in England",
regional_categories = "อังกฤษ",
parent = "บริเตน",
}
labels["อังกฤษและเวลส์"] = {
aliases = {"England and Wales", "E&W"},
Wikipedia = true,
regional_categories = {"อังกฤษ", "เวลส์"},
}
labels["Essex"] = {
Wikipedia = "Essex dialect",
regional_categories = true,
parent = "อังกฤษใต้",
}
labels["Exmoor"] = {
Wikipedia = true,
regional_categories = {"Devonian", "Somerset"},
}
labels["Geordie"] = {
region = "Tyneside",
aliases = {"Tyneside"},
Wikipedia = true,
regional_categories = true,
parent = "นอร์ทัมเบรีย",
}
labels["Gloucestershire"] = {
Wikipedia = {"West Country English", true},
regional_categories = true,
parent = "West Country",
}
labels["Guernsey"] = {
prep = "on",
Wikipedia = "Channel Island English#Guernsey English",
regional_categories = true,
parent = "Channel Islands",
}
labels["Hartlepool"] = {
Wikipedia = "Smoggie",
regional_categories = "Teesside",
}
labels["Herefordshire"] = {
Wikipedia = true,
regional_categories = true,
parent = "West Country",
}
labels["Isle of Man"] = {
prep = "on",
the = true,
aliases = {"Manx"},
Wikipedia = "Manx English",
regional_categories = "Manx",
parent = "บริเตน",
}
labels["Isle of Wight"] = {
prep = "on",
the = true,
Wikipedia = true,
regional_categories = true,
parent = "อังกฤษใต้",
}
labels["เจอร์ซีย์"] = {
--prep = "on",
aliases = {"Jersey"},
Wikipedia = "Channel Island English#Jersey English",
regional_categories = true,
parent = "Channel Islands",
}
labels["เคนต์"] = {
aliases = {"Kent", "Kentish"},
Wikipedia = "Kentish dialect",
regional_categories = "เคนต์",
parent = "อังกฤษใต้",
}
labels["Lancashire"] = {
Wikipedia = "Lancashire dialect",
regional_categories = true,
parent = "อังกฤษเหนือ",
}
labels["Lewis"] = {
prep = "on",
region = "the [[Isle of Lewis]]",
aliases = {"Isle of Lewis"},
Wikipedia = "Isle of Lewis",
regional_categories = true,
parent = "สกอตแลนด์",
}
labels["Lincolnshire"] = {
Wikipedia = "Lincolnshire dialect",
regional_categories = true,
parent = "East Midlands",
}
labels["ลิเวอร์พูล"] = {
region = "the {{w|Liverpool City Region}}, comprising the [[metropolitan county]] of [[Merseyside]] and the [[Cheshire]] [[unitary authority]] of [[Halton]]",
aliases = {"สเกาส์", "Liverpool", "Scouse"},
Wikipedia = "Scouse",
regional_categories = "ลิเวอร์พูล",
parent = "อังกฤษเหนือ",
}
labels["ลอนดอน"] = {
aliases = {"London"},
Wikipedia = "Estuary English",
regional_categories = true,
parent = "อังกฤษใต้",
}
labels["แมนเชสเตอร์"] = {
aliases = {"แมนคิวเนียน", "Manchester", "Mancunian"},
Wikipedia = "Manchester dialect",
regional_categories = "แมนเชสเตอร์",
parent = "อังกฤษเหนือ",
}
labels["Mid-Ulster"] = {
region = "central [[Ulster]]",
aliases = {"Mid-Ulster English"},
Wikipedia = "Mid-Ulster English",
regional_categories = true,
parent = "Ulster,ไอร์แลนด์เหนือ",
}
labels["Midlands"] = {
region = "the [[Midlands]] of [[England]]",
aliases = {"English Midlands", "South Midlands"},
Wikipedia = "Midlands English",
regional_categories = true,
parent = "อังกฤษ",
}
labels["Multicultural London English"] = {
prep = "by",
region = "young, working-class people in multicultural parts of [[London]]",
aliases = {"MLE"},
display = "MLE",
Wikipedia = true,
plain_categories = true,
parent = "London",
}
labels["Norfolk"] = {
Wikipedia = "Norfolk dialect",
regional_categories = true,
parent = "East Anglia",
}
labels["North Wales"] = {
Wikipedia = {"Welsh English", true},
regional_categories = true,
parent = "เวลส์",
}
labels["อังกฤษเหนือ"] = {
aliases = {"Northern England", "northern England", "North England", "north England"},
Wikipedia = "English language in Northern England",
regional_categories = true,
parent = "อังกฤษ",
}
labels["ไอร์แลนด์เหนือ"] = {
aliases = {"Northern Ireland", "Northern Irish", "NI"},
Wikipedia = "Ulster English",
regional_categories = "ไอร์แลนด์เหนือ",
parent = "Ulster",
}
labels["Northern Isles"] = {
display = "[[w:Orkney|Orkney]], [[w:Shetland|Shetland]]",
regional_categories = {"Orkney", "Shetland"},
}
labels["นอร์ทัมเบรีย"] = {
aliases = {"Northumbria", "Northumbrian", "Northeast England", "North-East England", "North East England"},
Wikipedia = {"Northumbrian dialect", "Northumbria (modern)"},
regional_categories = "นอร์ทัมเบรีย",
parent = "อังกฤษเหนือ",
}
labels["Nottinghamshire"] = {
Wikipedia = "Nottinghamshire dialect",
regional_categories = true,
parent = "East Midlands",
}
labels["Orkney"] = {
prep = "on",
aliases = {"Orcadian"},
Wikipedia = {true, "Highland English"},
regional_categories = true,
parent = "สกอตแลนด์",
}
labels["Oxbridge"] = {
Wikipedia = true,
regional_categories = {"Cambridge University", "Oxford University"},
}
labels["Oxford City"] = {
region = "the city of [[Oxford]] in [[England]]",
Wikipedia = true,
regional_categories = "Oxford",
parent = "Oxfordshire",
}
labels["Oxford University"] = {
prep = "at",
aliases = {"University of Oxford", "Oxon"},
Wikipedia = "University of Oxford",
regional_categories = true,
parent = "Oxford City",
othercat = "en:Universities",
}
labels["Oxfordshire"] = {
Wikipedia = true,
regional_categories = true,
parent = "อังกฤษใต้",
}
labels["Potteries"] = {
region = "Stoke-on-Trent",
Wikipedia = "Potteries dialect",
regional_categories = true,
parent = "West Midlands",
}
labels["สกอตแลนด์"] = {
aliases = {"Scotland", "Scottish", "Scottish English"},
Wikipedia = "Scottish English",
regional_categories = "สกอตแลนด์",
parent = "บริเตน",
}
labels["Shetland"] = {
region = "the [[Shetland Islands]]",
aliases = {"Shetland Islands", "Shetlands"},
Wikipedia = {true, "Highland English"},
regional_categories = true,
parent = "สกอตแลนด์",
}
labels["Shropshire"] = {
Wikipedia = true,
regional_categories = true,
parent = "West Midlands",
}
labels["Somerset"] = {
Wikipedia = {"West Country English", true},
regional_categories = true,
parent = "West Country",
}
-- eventually maybe break this out into its own category
labels["South Midlands"] = {
Wikipedia = {"Midlands English", "South Midlands"},
regional_categories = "Midlands",
}
labels["South Wales"] = {
Wikipedia = {"Welsh English", true},
regional_categories = true,
parent = "เวลส์",
}
labels["อังกฤษใต้"] = {
aliases = {"Southern England", "southern England", "South England", "south England", "Southern English"},
Wikipedia = "English in southern England",
regional_categories = true,
parent = "อังกฤษ",
}
labels["Suffolk"] = {
Wikipedia = "Suffolk dialect",
regional_categories = true,
parent = "East Anglia",
}
labels["Sussex"] = {
Wikipedia = "Sussex dialect",
regional_categories = true,
parent = "อังกฤษใต้",
}
labels["Teesside"] = {
Wikipedia = "Smoggie",
regional_categories = true,
parent = "นอร์ทัมเบรีย",
}
-- Tyneside: see Geordie
labels["Ulster"] = {
Wikipedia = "Ulster English",
regional_categories = true,
parent = "ไอร์แลนด์",
}
labels["เวลส์"] = {
aliases = {"Wales", "Welsh"},
Wikipedia = "Welsh English",
regional_categories = "เวลส์",
parent = "บริเตน",
}
labels["Wearside"] = {
Wikipedia = {"Mackem", true},
regional_categories = true,
parent = "นอร์ทัมเบรีย",
}
labels["West Country"] = {
the = true,
aliases = {"West England", "west England"},
Wikipedia = "West Country English",
regional_categories = true,
parent = "อังกฤษ",
}
-- can be split off if enough entries in it arise; group with Cumbria for now
labels["West Cumbria"] = {
Wikipedia = "Cumbrian dialect",
regional_categories = "Cumbrian",
}
labels["West Midlands"] = {
region = "the [[West Midlands]] of [[England]]",
Wikipedia = "West Midlands English",
regional_categories = true,
parent = "Midlands",
}
labels["Wiltshire"] = {
Wikipedia = {"West Country English", true},
regional_categories = true,
parent = "West Country",
}
labels["Yorkshire"] = {
Wikipedia = "Yorkshire dialect",
regional_categories = true,
parent = "อังกฤษเหนือ",
}
------------------------------------ World ------------------------------------
labels["Afghanistan"] = {
Wikipedia = true,
regional_categories = "Afghan",
parent = "เอเชียใต้",
}
labels["แอฟริกา"] = {
aliases = {"Africa", "African"},
Wikipedia = "African English",
regional_categories = "แอฟริกา",
parent = true,
}
labels["Antarctica"] = {
Wikipedia = "Antarctic English",
regional_categories = "Antarctic",
parent = true,
}
labels["เอเชีย"] = {
aliases = {"Asia", "Asian"},
Wikipedia = "Asian English",
regional_categories = "เอเชีย",
parent = true,
}
labels["Bahamas"] = {
the = true,
Wikipedia = "Bahamian English",
regional_categories = "Bahaman",
parent = "Caribbean",
}
labels["Bangladesh"] = {
Wikipedia = "Bangladeshi English",
regional_categories = "Bangladeshi",
parent = "เอเชียใต้,เครือจักรภพ",
}
labels["Barbados"] = {
Wikipedia = "English in Barbados",
regional_categories = "Barbadian",
parent = "Caribbean",
}
labels["Belize"] = {
Wikipedia = "Belizean English",
regional_categories = "Belizean",
parent = "Caribbean,Central America",
}
labels["Benglish"] = {
def = "[[Benglish]], an English-based [[creole]] incorporating many [[Bengali]] words; used informally in [[Bangladesh]] and [[West Bengal]]",
aliases = {"Banglish"},
Wikipedia = true,
plain_categories = true,
parent = "Bangladesh,West Bengal",
}
labels["Bermuda"] = {
Wikipedia = "Bermudian English",
regional_categories = "Bermudian",
parent = "Caribbean,rawposcat:North American English,บริเตน",
}
labels["Botswana"] = {
Wikipedia = "Botswana English",
regional_categories = "Botswanan",
parent = "แอฟริกา",
}
labels["British India"] = {
fulldef = "Anglo-Indian terms or senses in English as used formerly by Britishers in {{w|British India}}",
Wikipedia = "British Indian English",
regional_categories = true,
parent = "เอเชียใต้,บริเตน",
othercat = "English terms with historical senses",
}
labels["British Pakistani"] = {
prep = "by",
region = "{{w|British Pakistanis}}, i.e. [[British]] citizens of [[Pakistani]] origin",
Wikipedia = "British Pakistanis",
regional_categories = true,
parent = "เอเชียใต้,บริเตน",
}
labels["Brunei"] = {
Wikipedia = "Brunei English",
regional_categories = "Bruneian",
parent = "เอเชียตะวันออกเฉียงใต้",
}
labels["Caribbean"] = {
the = true,
aliases = {"West Indies"},
Wikipedia = "Caribbean English",
regional_categories = true,
parent = true,
}
labels["Cebu"] = {
Wikipedia = true,
regional_categories = true,
parent = "ฟิลิปปินส์",
}
labels["Central America"] = {
Wikipedia = true,
regional_categories = "Central American",
parent = "rawposcat:North American English",
}
labels["Ceylon"] = {
Wikipedia = true,
regional_categories = "Sri Lankan",
}
labels["จีน"] = {
aliases = {"China"},
Wikipedia = true,
regional_categories = "จีน",
parent = "เอเชียตะวันออก",
}
labels["Chinese Filipino"] = {
verb = "used",
prep = "by",
region = "Chinese Filipinos",
aliases = {"Chinese-Filipino"}, -- Sociolect subset to Philippine English
-- may also see "Hokaglish" in Wikipedia, although Hokaglish is the codeswitching form with a Hokkien or Tagalog base, just like Philippine English to "Conyo" (English-based) and "Taglish" (Tagalog-based), whereas this is the English variant itself subset to Philippine English.
Wikipedia = "Chinese Filipino#Language",
regional_categories = true,
parent = "ฟิลิปปินส์",
}
labels["ชิงลิช"] = {
aliases = {"Chinglish"},
def = "[[English]] that has been influenced by [[Chinese]]",
Wikipedia = true,
plain_categories = true,
parent = "จีน",
}
labels["เครือจักรภพ"] = {
aliases = {"Commonwealth"},
region = "the [[Commonwealth of Nations]]",
Wikipedia = "English in the Commonwealth of Nations",
regional_categories = true,
parent = true,
}
labels["Cuba"] = {
Wikipedia = true,
regional_categories = "Cuban",
parent = "Caribbean",
}
labels["East Africa"] = {
Wikipedia = true,
regional_categories = "East African",
parent = "แอฟริกา",
}
labels["เอเชียตะวันออก"] = {
aliases = {"East Asia"},
Wikipedia = true,
regional_categories = "เอเชียตะวันออก",
parent = "เอเชีย",
}
labels["Egypt"] = {
Wikipedia = true,
regional_categories = "Egyptian",
parent = "แอฟริกา,Middle East",
}
labels["ยุโรป"] = {
aliases = {"Europe", "European"},
Wikipedia = "English language in Europe",
regional_categories = "ยุโรป",
parent = true,
}
labels["Fiji"] = {
Wikipedia = "Fijian English",
regional_categories = "Fijian",
parent = "โอเชียเนีย,เครือจักรภพ",
}
labels["Ghana"] = {
Wikipedia = "Ghanaian English",
regional_categories = "Ghanaian",
parent = "West Africa",
}
labels["Guyana"] = {
Wikipedia = {"Guyanese English", "Guyana"},
regional_categories = "Guyanese",
parent = "Caribbean,อเมริกาใต้",
}
labels["ฮิงลิช"] = {
aliases = {"Hinglish"},
def = "[[Hinglish]], an English-based [[creole]] incorporating many [[Hindi]] words; used informally in [[India]]",
Wikipedia = true,
plain_categories = true,
parent = "อินเดีย",
}
labels["ฮ่องกง"] = {
aliases = {"Hong Kong", "HK"},
Wikipedia = "Hong Kong English",
regional_categories = true,
parent = "จีน",
}
labels["Hungary"] = {
Wikipedia = true,
regional_categories = "Hungarian",
parent = "ยุโรป",
}
labels["อินเดีย"] = {
aliases = {"India", "Indian", "Indian English", "InE"},
Wikipedia = "Indian English",
regional_categories = "อินเดีย",
parent = "เอเชียใต้,เครือจักรภพ",
}
labels["Indonesia"] = {
Wikipedia = "Indonesian English",
regional_categories = "Indonesian",
parent = "เอเชียตะวันออกเฉียงใต้",
}
labels["Israel"] = {
Wikipedia = "Israeli English",
regional_categories = "Israeli",
parent = "Middle East",
}
labels["Japan"] = {
Wikipedia = true,
regional_categories = "Japanese",
parent = "เอเชียตะวันออก",
}
labels["Jamaica"] = {
aliases = {"Jamaican English", "Jamaican"},
Wikipedia = "Jamaican English",
regional_categories = "Jamaican",
parent = "Caribbean,เครือจักรภพ",
}
labels["Kenya"] = {
Wikipedia = "Kenyan English",
regional_categories = "Kenyan",
parent = "East Africa",
}
labels["Liberia"] = {
Wikipedia = "Liberian English",
regional_categories = "Liberian",
parent = "West Africa",
}
labels["Libya"] = {
Wikipedia = true,
regional_categories = "Libyan",
parent = "แอฟริกา",
}
labels["มาเก๊า"] = {
aliases = {"Macau"},
Wikipedia = true,
regional_categories = "มาเก๊า",
parent = "จีน",
}
labels["จีนแผ่นดินใหญ่"] = {
aliases = {"Mainland China", "Mainland", "mainland", "mainland China"},
Wikipedia = true,
regional_categories = true,
parent = "จีน",
}
labels["Malaysia"] = {
aliases = {"Malaysian"},
Wikipedia = "Malaysian English",
regional_categories = "Malaysian",
parent = "เอเชียตะวันออกเฉียงใต้,เครือจักรภพ",
}
labels["Malta"] = {
Wikipedia = "Maltese English",
regional_categories = "Maltese",
parent = "ยุโรป",
}
labels["Manglish"] = {
def = "[[Manglish]], an English-based [[creole]] incorporating [[Malay]], [[Chinese]], and [[Tamil]] words; used informally in [[Malaysia]]",
Wikipedia = true,
plain_categories = true,
parent = "Malaysia",
}
labels["Mexico"] = {
Wikipedia = {"Mexican English", "Mexico"},
regional_categories = "Mexican",
parent = "rawposcat:North American English",
}
labels["Middle East"] = {
the = true,
Wikipedia = true,
regional_categories = "Middle Eastern",
parent = true,
}
labels["Myanmar"] = {
aliases = {"Burma"},
Wikipedia = "Myanmar English",
regional_categories = true,
parent = "เอเชียตะวันออกเฉียงใต้",
}
labels["Namibia"] = {
Wikipedia = "Namibian English",
regional_categories = "Namibian",
parent = "Africa",
}
labels["Natal"] = {
Wikipedia = "KwaZulu-Natal",
regional_categories = true,
parent = "South Africa",
}
labels["Nepal"] = {
Wikipedia = "Nepalese English",
regional_categories = "Nepali",
parent = "เอเชียใต้,เครือจักรภพ",
}
labels["Nigeria"] = {
aliases = {"Nigerian"},
Wikipedia = "Nigerian English",
regional_categories = "Nigerian",
parent = "West Africa",
}
labels["North India"] = {
Wikipedia = true,
regional_categories = "North Indian",
parent = "อินเดีย",
}
labels["โอเชียเนีย"] = {
aliases = {"Oceania"},
Wikipedia = "Oceanian English",
regional_categories = "โอเชียเนีย",
parent = true,
}
labels["Pakistan"] = {
aliases = {"Pakistani"},
Wikipedia = "Pakistani English",
regional_categories = "Pakistani",
parent = "เอเชียใต้,เครือจักรภพ",
}
labels["Palestine"] = {
Wikipedia = true,
regional_categories = "Palestinian",
parent = "Middle East",
}
labels["Papua New Guinea"] = {
Wikipedia = "Papua New Guinean English",
regional_categories = "Papua New Guinean",
parent = "โอเชียเนีย,เครือจักรภพ",
}
labels["ฟิลิปปินส์"] = {
the = true,
aliases = {"Philippines", "Philippine", "Philippine English"},
Wikipedia = "Philippine English",
regional_categories = "ฟิลิปปินส์",
parent = "เอเชียตะวันออกเฉียงใต้",
}
labels["Réunion"] = {
Wikipedia = true,
regional_categories = true,
parent = "แอฟริกา",
}
labels["Rhodesia"] = {
region = "the historical state of [[Rhodesia]]",
Wikipedia = "Zimbabwean English",
regional_categories = "Rhodesian",
parent = "แอฟริกา",
}
labels["Rwanda"] = {
Wikipedia = true,
regional_categories = "Rwandan",
parent = "แอฟริกา",
}
labels["สิงคโปร์"] = {
aliases = {"Singapore", "SG", "Singaporean"},
Wikipedia = "Singapore English",
regional_categories = true,
parent = "เอเชียตะวันออกเฉียงใต้,เครือจักรภพ",
}
labels["ซิงลิช"] = {
aliases = {"Singlish"},
def = "[[Singlish]], an English-based [[creole]] incorporating many words of [[Chinese]], [[Malay]] and [[Indian]] origin; used informally in [[Singapore]]",
Wikipedia = true,
plain_categories = true,
parent = "สิงคโปร์",
}
labels["Solomon Islands"] = {
the = true,
Wikipedia = "Solomon Islands English",
regional_categories = true,
parent = "โอเชียเนีย",
}
labels["South Africa"] = {
aliases = {"South African", "South African English", "ZA"},
Wikipedia = "South African English",
accent_Wikipedia = "South African English phonology",
accent_display = "General South African",
regional_categories = "South African",
parent = "แอฟริกา,เครือจักรภพ",
}
labels["อเมริกาใต้"] = {
aliases = {"South America", "South American"},
Wikipedia = "South American English",
regional_categories = "อเมริกาใต้",
parent = true,
}
labels["เอเชียใต้"] = {
aliases = {"Indic", "South Asia"},
Wikipedia = "South Asian English",
regional_categories = "เอเชียใต้",
parent = "เอเชีย",
}
labels["South India"] = {
Wikipedia = true,
regional_categories = "South Indian",
parent = "อินเดีย",
}
labels["South Korea"] = {
Wikipedia = "Korean English",
regional_categories = "South Korean",
parent = "เอเชียตะวันออก",
}
labels["เอเชียตะวันออกเฉียงใต้"] = {
aliases = {"Southeast Asia", "Southeast Asian"},
Wikipedia = "Southeast Asian English",
regional_categories = "เอเชียตะวันออกเฉียงใต้",
parent = "เอเชีย",
}
labels["Sri Lanka"] = {
Wikipedia = "Sri Lankan English",
regional_categories = "Sri Lankan",
parent = "เอเชียใต้,เครือจักรภพ",
}
labels["ไต้หวัน"] = {
aliases = {"Taiwan", "Taiwanese"},
Wikipedia = true,
regional_categories = true,
parent = "เอเชียตะวันออก",
}
labels["Tanzania"] = {
Wikipedia = true,
regional_categories = "Tanzanian",
parent = "East Africa",
}
labels["ไทย"] = {
aliases = {"ทิงลิช", "Thailand", "Thai"},
Wikipedia = "ทิงลิช",
regional_categories = true,
parent = "เอเชียตะวันออกเฉียงใต้",
}
labels["Trinidad and Tobago"] = {
aliases = {"Trinidad", "Tobago", "Trinidadian"},
Wikipedia = "Trinidadian and Tobagonian English",
regional_categories = true,
parent = "Caribbean",
}
labels["Uganda"] = {
Wikipedia = "Ugandan English",
regional_categories = "Ugandan",
parent = "แอฟริกา",
}
labels["Vanuatu"] = {
Wikipedia = "Languages of Vanuatu#English and French",
regional_categories = true,
parent = "โอเชียเนีย",
}
labels["Vietnam"] = {
Wikipedia = "Vietglish",
regional_categories = "Vietnamese",
parent = "เอเชียตะวันออกเฉียงใต้",
}
labels["West Africa"] = {
aliases = {"West African"},
Wikipedia = true,
regional_categories = "West African",
parent = "แอฟริกา",
}
labels["West Bengal"] = {
Wikipedia = true,
regional_categories = true,
parent = "อินเดีย",
}
labels["Zimbabwe"] = {
Wikipedia = "Zimbabwean English",
regional_categories = true,
parent = "แอฟริกา",
}
------------------------------------ non-regional ------------------------------------
labels["อังกฤษใหม่ช่วงต้น"] = {
prep = "from",
region = "the late 15th to the mid-17th centuries",
noreg = true,
nolink = true,
aliases = {"Early Modern", "Early Modern English", "EME"},
Wikipedia = "Early Modern English",
regional_categories = true,
parent = true,
}
labels["อังกฤษใหม่ช่วงปลาย"] = {
prep = "from",
region = "the mid-17th to the end of the 19th centuries",
noreg = true,
nolink = true,
aliases = {"Late Modern", "Late Modern English", "LME"},
Wikipedia = "Late Modern English",
regional_categories = true,
parent = true,
}
labels["Polari"] = {
def = "a form of cant slang used in [[Britain]] by some actors, circus and fairground showmen, professional wrestlers, merchant navy sailors, criminals, prostitutes, and the gay subculture",
noreg = true,
country = "สหราชอาณาจักร",
Wikipedia = true,
plain_categories = true,
othercat = "British slang,English cant,English gay slang",
parent = true,
}
-- Thieves' Cant is English-only, for other languages, use "criminal slang"
labels["thieves' cant"] = {
fulldef = "A secret language formerly used by thieves, beggars and hustlers of various kinds in [[Great Britain]] and to a lesser extent in other English-speaking countries.",
noreg = true,
aliases = {"Thieves' Cant", "Thieves' cant", "thieves cant", "thieves'", "thieves"},
Wikipedia = true,
-- FIXME: Currently pos_categories aren't recognized.
-- pos_categories = "Thieves' Cant",
plain_categories = "English Thieves' Cant",
parent = true,
othercat = "English cant",
}
------------------------------------ English-specific qualifier labels ------------------------------------
labels["attributive"] = {
display = "[[Appendix:English nouns#Attributive|attributive]]",
}
labels["attributively"] = {
display = "[[Appendix:English nouns#Attributive|attributively]]",
}
------------------------------------ supporting [[Template:standard spelling of]] et al. ------------------------------------
labels["รูปสะกดอเมริกา"] = {
aliases = {"American spelling", "American form", "US spelling", "US form", "รูปอเมริกา", "รูปอเมริกัน", "รูปสหรัฐ", "รูปสหรัฐอเมริกา"},
--form_of_display = "US",
display = "รูปสะกด[[w:ภาษาอังกฤษแบบอเมริกา|อเมริกา]]",
--Wikipedia = "American and British English spelling differences",
plain_categories = "American English forms",
}
labels["รูปสะกด -ise"] = {
aliases = {
"ise", "-ise", "ise form", "-ise form", "ise spelling", "-ise spelling", "isation", "-isation", "isation form", "-isation form", "isation spelling", "-isation spelling",
"ise-form" -- backwards compatability
},
display = "รูปสะกด[[w:ภาษาอังกฤษแบบบริเตน|บริเตน]]ไม่ใช่[[w:รูปสะกดออกซฟอร์ด|ออกซฟอร์ด]]",
plain_categories = "British English forms",
}
labels["รูปสะกด -ize"] = {
aliases = {
"ize", "-ize", "ize form", "-ize form", "ize spelling", "-ize spelling", "ization", "-ization", "ization form", "-ization form", "ization spelling", "-ization spelling",
"ize-form" -- backwards compatability
},
display = "รูปสะกด[[w:ภาษาอังกฤษแบบอเมริกา|อเมริกา]] และ[[w:ภาษาอังกฤษแบบบริเตน|บริเตน]][[w:รูปสะกดออกซฟอร์ด|ออกซฟอร์ด]]",
plain_categories = {"American English forms", "Oxford spellings"},
}
labels["รูปสะกดแคนาดา"] = {
aliases = {"Canadian spelling", "Canadian form", "รูปแคนาดา"},
display = "รูปสะกด[[w:ภาษาอังกฤษแบบแคนาดา|แคนาดา]]",
--Wikipedia = "ภาษาอังกฤษแบบแคนาดา",
plain_categories = "Canadian English forms",
}
labels["รูปสะกดบริเตน"] = {
aliases = {"British spelling", "British form", "Commonwealth spelling", "Commonwealth form", "UK spelling", "UK form", "รูปบริเตน", "รูปบริติช", "รูปสหราชอาณาจักร"},
display = "รูปสะกด[[w:ภาษาอังกฤษแบบบริเตน|บริเตน]]",
--Wikipedia = "American and British English spelling differences",
plain_categories = "British English forms",
}
labels["รูปสะกดออสเตรเลีย"] = {
aliases = {"Australian spelling", "Australian form", "รูปออสเตรเลีย"},
display = "รูปสะกด[[w:ภาษาอังกฤษแบบออสเตรเลีย|ออสเตรเลีย]]",
--Wikipedia = "ภาษาอังกฤษแบบออสเตรเลีย",
plain_categories = "Australian English forms",
}
labels["รูปสะกดบริเตนไม่ใช่ออกซฟอร์ด"] = {
aliases = {"non-Oxford British spelling", "Non-Oxford British spelling", "non-Oxford", "Non-Oxford", "not Oxford", "Not Oxford", "ไม่ใช่ออกซฟอร์ด", "ไม่ใช่ออกซ์ฟอร์ด"},
display = "รูปสะกด[[w:ภาษาอังกฤษแบบบริเตน|บริเตน]]ไม่ใช่[[w:รูปสะกดออกซฟอร์ด|ออกซฟอร์ด]]",
plain_categories = "British English forms",
}
labels["รูปสะกดบริเตนออกซฟอร์ด"] = {
aliases = {"Oxford British spelling", "Oxford", "en-GB-oxendict", "ออกซฟอร์ด", "ออกซ์ฟอร์ด"},
display = "รูปสะกด[[w:ภาษาอังกฤษแบบบริเตน|บริเตน]][[w:รูปสะกดออกซฟอร์ด|ออกซฟอร์ด]]",
plain_categories = "Oxford spellings",
}
------------------------------------ supporting [[Template:inflection of]] ------------------------------------
-- This is added to an inflection line when something like {{infl of|en|make||th-form}} is used. Specifically, the form-of
-- tag 'th-form' is a shortcut for '3-th|s|spres|ind' (see [[Module:form of/lang-data/en]]); the tag '3-th' displays as
-- "third-person" (see [[Module:form of/lang-data/en]]) and attaches the following label (see [[Module:form of/cats]]).
labels["archaic third singular"] = {
display = "archaic",
Wikipedia = "English verbs#Archaic forms",
pos_categories = "archaic third-person singular forms",
}
-- This is added to an inflection line when something like {{infl of|en|make||st-form}} is used. See above.
labels["archaic second singular present"] = {
display = "archaic",
Wikipedia = "English verbs#Archaic forms",
pos_categories = "second-person singular forms",
}
-- This is added to an inflection line when something like {{infl of|en|make||st-past-form}} is used. See above.
labels["archaic second singular past"] = {
display = "archaic",
Wikipedia = "English verbs#Archaic forms",
pos_categories = "second-person singular past tense forms",
}
------------------------------------ accent qualifiers ------------------------------------
-- Generate the inverse of a sound change. In general, we should do this for sound changes that are either
-- extremely common (e.g. 'cot-caught') or dominant ('horse-hoarse', 'wine-whine') or are at least locally
-- dominant (e.g. 'cheer-chair'). The idea is that when presenting the pronunciation of an area with a locally
-- dominant pronunciation, we may want to also present the alternative pronunciation lacking the change, as long
-- as it is found at least somewhere in the area. Hence, for New Zealand, which typically has the cheer-chair
-- merger, we might might to present the non-merger pronunciation as well; but for a change like card-cord that
-- is recessive everywhere, it's unlikely we'll need to specifically highlight the inverse pronunciation (which
-- would be the standard, already covered elsewhere), and we can save memory and time by omitting the label.
local function generate_non(key, display)
if not labels[key] then
error(("Internal error: No label definition for key '%s'"):format(key))
end
local labval = mw.clone(labels[key])
labels["non-" .. key] = labval
if labval.aliases then
for i, alias in ipairs(labval.aliases) do
labval.aliases[i] = "non-" .. alias
end
end
if not display then
display = labval.display or key
if display:find("ing$") or display:find("[st]ion$") then
-- e.g. "Canadian raising", "t-glottalization"
display = "ไม่" .. display
else
-- e.g. "cot-caught merger"
display = "ไม่" .. display
end
end
labval.display = display
end
labels["Anglicised"] = {
aliases = {"Anglicized"},
Wikipedia = "Anglicisation#Anglicisation of non-English-language vocabulary and names",
}
labels["Canadian raising"] = {
aliases = {"North American raising"},
Wikipedia = true,
}
generate_non("Canadian raising")
labels["Canadian Shift"] = {
aliases = {"Canadian Vowel Shift", "Canadian shift", "Canadian vowel shift"},
Wikipedia = true,
display = "Canadian Vowel Shift",
}
generate_non("Canadian Shift")
labels["card-cord"] = {
Wikipedia = "Card-cord merger",
display = "รวมเสียง ''card''–''cord''",
}
labels["cheer-chair"] = {
aliases = {"near-square"},
Wikipedia = "near-square merger",
display = "รวมเสียง ''cheer''–''chair''",
}
generate_non("cheer-chair")
labels["cot-caught"] = {
aliases = {"caught-cot"},
Wikipedia = "Cot–caught merger",
display = "รวมเสียง ''cot''–''caught''",
}
generate_non("cot-caught")
labels["cure-fir"] = {
aliases = {"cure-nurse"},
Wikipedia = "Cure-nurse merger",
display = "รวมเสียง ''cure''–''fir''",
}
generate_non("cure-fir")
labels["dough-door"] = {
Wikipedia = "Dough-door merger",
display = "รวมเสียง ''dough''–''door''",
}
generate_non("dough-door")
labels["Estuary English"] = {
Wikipedia = true,
}
labels["fair-fur"] = {
aliases = {"square-nurse"},
Wikipedia = "Square-nurse merger",
display = "รวมเสียง ''fair''–''fur''",
}
generate_non("fair-fur")
labels["father-bother"] = {
Wikipedia = "Father–bother merger",
display = "รวมเสียง ''father''-''bother''",
}
generate_non("father-bother")
labels["fern-fir-fur"] = {
aliases = {"nurse merger"},
Wikipedia = "Fern-fir-fur merger",
display = "รวมเสียง ''fern''–''fir''–''fur''",
}
generate_non("fern-fir-fur")
labels["flapping"] = {
Wikipedia = true,
}
generate_non("flapping")
labels["foot-goose"] = {
Wikipedia = "Foot-goose merger",
display = "รวมเสียง ''foot''-''goose''",
}
-- Most labels of the form 'foo-bar' are mergers. Since this is rather a split, include the word "split"
-- for clarity.
labels["foot-strut split"] = {
Wikipedia = "Phonological history of English close back vowels#FOOT–STRUT split",
display = "''foot''-''strut'' split",
}
generate_non("foot-strut split")
labels["g-dropping"] = {
aliases = {"g dropping"},
Wikipedia = "G-dropping",
display = "ทิ้งเสียง ''g''",
}
generate_non("g-dropping")
labels["อเมริกาทั่วไป"] = {
aliases = {"General American", "GenAm", "GA"},
Wikipedia = "ภาษาอังกฤษแบบอเมริกาทั่วไป",
}
labels["glottalized"] = {
aliases = {"glottalization", "glottalised", "glottalisation"},
Wikipedia = "Phonological_history_of_English_consonant_clusters#Glottalization",
}
labels["goose split"] = {
-- Phonemic split in some Southeastern England English variants.
Wikipedia = "English-language_vowel_changes_before_historic_/l/#Goose_split",
display = "''goose'' split",
}
labels["gulf-golf"] = {
Wikipedia = "English-language vowel changes before historic /l/#Gulf-golf merger",
display = "รวมเสียง ''gulf''-''golf''",
}
labels["h-dropping"] = {
Wikipedia = "H-dropping",
display = "ทิ้งเสียง ''h''",
}
generate_non("h-dropping")
labels["happy-tensing"] = {
aliases = {"happy tensing"},
Wikipedia = "Happy tensing",
display = "''happy''-tensing",
}
generate_non("happy-tensing")
labels["horse-hoarse"] = {
Wikipedia = "horse–hoarse merger",
display = "รวมเสียง ''horse''–''hoarse''",
}
generate_non("horse-hoarse")
labels["hurry-furry"] = {
Wikipedia = "hurry-furry merger",
display = "รวมเสียง ''hurry''–''furry''",
}
generate_non("hurry-furry")
labels["Inland Northern US"] = {
aliases = {"Great Lakes", "Inland Northern", "Inland North", "Inland Northern American", "Inland Northern American English", "Inland Northern English", "Northern Cities Vowel Shift", "US Inland North", "northern cities vowel shift"},
Wikipedia = "Inland Northern American English",
display = "Inland Northern American",
}
labels["intrusive r"] = {
Wikipedia = "Intrusive r",
display = "intrusive ''r''",
}
generate_non("intrusive r", "without intrusive ''r''")
labels["l-vocalization"] = {
aliases = {"l-vocalisation"},
Wikipedia = "L-vocalization#Modern English",
display = "''l''-vocalization",
}
generate_non("l-vocalization")
labels["Latinate"] = {
Wikipedia = "Latin#Phonology",
}
labels["lot-cloth split"] = {
Wikipedia = true,
display = "''lot''–''cloth'' split",
}
generate_non("lot-cloth split")
labels["Mary-marry-merry"] = {
aliases = {"Mmmm"},
Wikipedia = "Mary–marry–merry merger",
display = "รวมเสียง ''Mary''–''marry''–''merry''",
}
generate_non("Mary-marry-merry")
table.insert(labels["non-Mary-marry-merry"].aliases, "nMmmm")
labels["nt-flapping"] = {
Wikipedia = "Flapping#Distribution",
display = "''nt''-flapping",
}
generate_non("nt-flapping")
labels["paw-poor"] = {
Wikipedia = "Paw–pour merger",
display = "รวมเสียง ''paw''–''poor''",
}
labels["pin-pen"] = {
aliases = {"pen-pin"},
Wikipedia = "pin–pen merger",
display = "รวมเสียง ''pin''–''pen''",
}
labels["pour-poor"] = {
aliases = {"poor-pour", "cure-force"},
Wikipedia = "Cure–force merger",
display = "รวมเสียง ''pour''–''poor''",
}
generate_non("pour-poor")
labels["r-dissimilation"] = {
Wikipedia = "Dissimilation",
display = "''r''-dissimilation",
}
labels["สำเนียงมี [r]"] = {
aliases = {"rhotic"},
Wikipedia = "Rhoticity in English",
}
labels["สำเนียงไม่มี [r]"] = {
aliases = {"non-rhotic", "nonrhotic"},
Wikipedia = "Rhoticity in English",
}
labels["Received Pronunciation"] = {
aliases = {"RP"},
Wikipedia = true,
}
labels["show-sure"] = {
Wikipedia = "Show-sure merger",
display = "รวมเสียง ''show''–''sure''",
}
labels["Standard Southern British English"] = {
aliases = {"SSB", "SSBE", "Standard Southern British"},
Wikipedia = "Standard Southern British",
display = "Standard Southern British",
}
labels["stressed"] = {
Wikipedia = "Stress and vowel reduction in English#Weak and strong forms of function words",
display = "stressed form",
}
labels["t-glottalization"] = {
aliases = {"t-glottaling", "t-glottalisation"},
Wikipedia = "T-glottalization",
display = "''t''-glottalization",
}
generate_non("t-glottalization")
labels["th-fronting"] = {
Wikipedia = true,
display = "''th''-fronting",
}
labels["th-stopping"] = {
Wikipedia = true,
display = "''th''-stopping",
}
labels["trap-bath split"] = {
Wikipedia = true,
display = "''trap''–''bath'' split",
}
generate_non("trap-bath split")
labels["unstressed"] = {
Wikipedia = "Stress and vowel reduction in English#Weak and strong forms of function words",
display = "unstressed form",
}
labels["weak vowel"] = {
aliases = {"weak vowel merger"},
Wikipedia = "Weak vowel merger",
display = "weak vowel merger",
}
generate_non("weak vowel", "weak vowel distinction")
labels["wine-whine"] = {
Wikipedia = "wine–whine merger",
display = "รวมเสียง ''wine''–''whine''",
}
generate_non("wine-whine")
labels["yod-coalescence"] = {
aliases = {"yod coalescence"},
Wikipedia = true,
}
labels["yod-dropping"] = {
aliases = {"yod dropping"},
Wikipedia = true,
}
labels["æ-tensing"] = {
aliases = {"ae-tensing"},
Wikipedia = true,
}
generate_non("æ-tensing")
return require("Module:labels").finalize_data(labels)
e36l6kovmrupvlmp2hxru2ip5smoapf
Mice
0
532605
5759360
5160357
2026-09-01T02:53:09Z
Octahedron80
267
/* ภาษาเยอรมัน */ นำเข้าจาก enwikt เก็บกวาด
5759360
wikitext
text/x-wiki
{{also/auto}}
== ภาษาเยอรมัน ==
=== การออกเสียง ===
* {{audio|de|De-Mice.ogg|a=<<Germany>> (<<Berlin>>)}}
=== คำนาม ===
{{head|de|รูปนาม|g=f}}
# {{inflection of|de|Mouse||nom//acc//gen|p}}
hgakoi0e5r977cxit8fpfyae1xuo8ey
แม่แบบ:fro-adj
10
1729472
5759300
5686607
2026-09-01T01:42:23Z
Octahedron80
267
5759300
wikitext
text/x-wiki
{{#invoke:checkparams|warn}}<!-- Validate template parameters
--><!--
When 1=?, don't display any inflection at all
-->{{#ifeq:{{{1|}}}|?|{{head|fro|คำคุณศัพท์|g={{{g|}}}|head={{{head|}}}|var={{{var|}}}}}|<!--
Otherwise, do this
-->{{head|fro|คำคุณศัพท์|head={{{head|}}}|var={{{var|}}}|g={{{g|m}}}|เพศหญิง|{{#ifeq:{{{1|}}}|mf|{{pagename}}|{{{1|{{{f|{{pagename}}e}}}}}}}}<!--
-->|{{#if:{{{f2|}}}|หรือ}}<!--
-->|{{#if:{{{f2|}}}|{{{f2|}}}}}<!--
-->|{{#if:{{{comp|}}}|ขั้นกว่า}}<!--
-->|{{#if:{{{comp|}}}|{{{comp|}}}}}<!--
-->|{{#if:{{{sup|}}}|ขั้นสุด}}<!--
-->|{{#if:{{{sup|}}}|{{{sup|}}}}}<!--
-->}}<!--
-->}}<noinclude><!--
-->{{documentation}}</noinclude>
9tono5del51e2nrspbqovr9kccclblc
แม่แบบ:RQ:Dickens David Copperfield
10
2303005
5759313
5659355
2026-09-01T02:01:55Z
Octahedron80
267
5759313
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = w:Charles Dickens
|chapter = {{#switch:{{{chapter|{{{1|
{{#if:{{{page|}}}{{{pageref|}}}{{{2|}}}
| {{#switch:{{{page|}}}{{{pageref|}}}{{{2|}}}
| 46|59|88|111|122|143|154|211|240|308|314|334|346|367|379|428|443|525|541|556|564|569|600|609|615|621=
| {{#if:{{R2A|{{{page|}}}{{{pageref|}}}{{{2|}}}|no_error=1}}
| Preface
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<10
| I
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<21
| II
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<33
| III
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<46
| IV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<59
| V
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<65
| VI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<78
| VII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<88
| VIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<97
| IX
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<111
| X
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<122
| XI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<129
| XII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<143
| XIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<154
| XIV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<161
| XV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<176
| XVI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<188
| XVII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<193
| XVIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<205
| XIX
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<211
| XX
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<225
| XXI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<240
| XXII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<251
| XXIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<257
| XXIV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<271
| XXV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<283
| XXVI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<289
| XXVII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<303
| XXVIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<308
| XXIX
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<314
| XXX
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<321
| XXXI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<334
| XXXII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<346
| XXXIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<353
| XXXIV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<367
| XXXV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<379
| XXXVI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<385
| XXXVII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<397
| XXXVIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<411
| XXXIX
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<417
| XL
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<428
| XLI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<443
| XLII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<449
| XLIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<460
| XLIV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<471
| XLV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<481
| XLVI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<489
| XLVII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<497
| XLVIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<506
| XLIX
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<513
| L
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<525
| LI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<541
| LII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<545
| LIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<556
| LIV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<564
| LV
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<569
| LVI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<577
| LVII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<582
| LVIII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<594
| LIX
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<600
| LX
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<609
| LXI
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<615
| LXII
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<621
| LXIII
| LXIV
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}}}}}
| I = I am Born
| II = I Observe
| III = I have a Change
| IV = I Fall into Disgrace
| V = I am Sent Away from Home
| VI = I Enlarge My Circle of Acquaintance
| VII = My ‘First Half’ at Salem House
| VIII = My Holidays. Especially One Happy Afternoon.
| IX = I have a Memorable Birthday
| X = I Become Neglected, and am Provided for
| XI = I Begin Life on My Own Account, and Don’t Like It
| XII = Liking Life on My Own Account No Better, I Form a Great Resolution
| XIII = The Sequel of My Resolution
| XIV = My Aunt Makes Up Her Mind about Me
| XV = I Make another Beginning
| XVI = I am a New Boy in More Senses than One
| XVII = Somebody Turns Up
| XVIII = A Retrospect
| XIX = I Look about Me, and Make a Discovery
| XX = Steerforth’s Home
| XXI = Little Em’ly
| XXII = Some Old Scenes, and Some New People
| XXIII = I Corroborate Mr. Dick, and Choose a Profession
| XXIV = My First Dissipation
| XXV = Good and Bad Angels
| XXVI = I Fall into Captivity
| XXVII = Tommy Traddles
| XXVIII = Mr. Micawber’s Gauntlet
| XXIX = I Visit Steerforth at His Home, Again
| XXX = A Loss
| XXXI = A Greater Loss
| XXXII = The Beginning of a Long Journey
| XXXIII = Blissful
| XXXIV = My Aunt Astonishes Me
| XXXV = Depression
| XXXVI = Enthusiasm
| XXXVII = A Little Cold Water
| XXXVIII = A Dissolution of Partnership
| XXXIX = Wickfield and Heep
| XL = The Wanderer
| XLI = Dora’s Aunts
| XLII = Mischief
| XLIII = Another Retrospect
| XLIV = Our Housekeeping
| XLV = Mr. Dick Fulfils My Aunt’s Prediction
| XLVI = Intelligence
| XLVII = Martha
| XLVIII = Domestic
| XLIX = I am Involved in Mystery
| L = Mr. Peggotty’s Dream Comes True
| LI = The Beginning of a Longer Journey
| LII = I assist at an Explosion
| LIII = Another Retrospect
| LIV = Mr. Micawber’s Transactions
| LV = Tempest
| LVI = The New Wound, and the Old
| LVII = The Emigrants
| LVIII = Absence
| LIX = Return
| LX = Agnes
| LXI = I am Shown Two Interesting Penitents
| LXII = A Light Shines on My Way
| LXIII = A Visitor
| LXIV = A Last Retrospect
| {{{chapter|{{{1|}}}}}}
}}
|title = [[w:David Copperfield|The Personal History of David Copperfield]]
|location = London
|publisher = [[w:Bradbury and Evans|Bradbury & Evans]],{{nb...|11, Bouverie Street.}}
|month = {{#if:{{{page|}}}{{{pageref|}}}{{{2|}}}
| {{#if:{{R2A|{{{page|}}}{{{pageref|}}}{{{2|}}}|no_error=1}}
| October
| May – '''1850''' November
}}
| May – '''1850''' November
}}
|year = {{#if:{{{page|}}}{{{pageref|}}}{{{2|}}}
| {{#if:{{R2A|{{{page|}}}{{{pageref|}}}{{{2|}}}|no_error=1}}
| 1850
| 1849
}}
| 1849
}}
|year_published = {{#if:{{{page|}}}{{{pageref|}}}{{{2|}}}
| {{#if:{{R2A|{{{page|}}}{{{pageref|}}}{{{2|}}}|no_error=1}}||1850}}
| 1850
}}
|pageparam = 2
|pageurl = https://archive.org/details/personalhistor00dick/page/{{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}>183|{{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<201|n{{#expr:{{{page|{{{pageref|{{{2}}}}}}}}}+47}}|{{{page|{{{pageref|{{{2}}}}}}}}}}}|{{#ifeq:{{{page|}}}{{{pageref|}}}{{{2|}}}|1
| n24
| {{{page|{{{pageref|{{{2}}}}}}}}}
}}}}/mode/1up
|oclc = 558196156
|textparam = 3
|t={{{t|}}}
|translation={{{translation|}}}
|allowparams = chapter,1,pageref,t,translation
}}<noinclude>{{documentation}}</noinclude>
hope8c7zm7rw0xdk4df7dt4yb3j7p8g
แม่แบบ:RQ:London Strength of the Strong
10
2305503
5759314
5661916
2026-09-01T02:02:09Z
Octahedron80
267
5759314
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = Jack London
|authorlink = Jack London
|chapter = {{{chapter|{{maintenance line|please specify story}}}}}
|title = The Strength of the Strong
|location = New York
|publisher = MacMillan
|year = 1914
|oclc =
|pageurl = https://archive.org/details/cu31924021764653/page/{{{page|}}}/mode/1up
|url = https://www.gutenberg.org/cache/epub/1075/pg1075-images.html
|textparam = 3
|footer = {{#if:{{{footer|}}}|{{small|{{{footer}}}}}}}
|t={{{t|}}}
|translation={{{translation|}}}
|propagateparams = page,pages
|allowparams = chapter,t,translation
}}<noinclude>{{documentation}}</noinclude>
3v7r132vli8gk61jpcf23uq4xvbl3kv
แม่แบบ:RQ:New International Version
10
2306222
5759315
5662635
2026-09-01T02:02:18Z
Octahedron80
267
5759315
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = [[w:Biblica|Biblica]]
|title = [[w:New International Version|Holy Bible: New International Version]]
|location = Grand Rapids, Mich.
|publisher = [[w:Zondervan|Zondervan]]
|year = 2011
|section = {{#if:{{{book|}}}{{{1|}}}
| {{#switch:{{{book|{{{1|}}}}}}
| Genesis = [[w:Book of Genesis|Genesis]]
| Exodus = [[w:Book of Exodus|Exodus]]
| Leviticus = [[w:Book of Leviticus|Leviticus]]
| Numbers = [[w:Book of Numbers|Numbers]]
| Deuteronomy = [[w:Book of Deuteronomy|Deuteronomy]]
| Joshua = [[w:Book of Joshua|Joshua]]
| Judges = [[w:Book of Judges|Judges]]
| Ruth = [[w:Book of Ruth|Ruth]]
| 1 Samuel = [[w:Books of Samuel|1 Samuel]]
| 2 Samuel = [[w:Books of Samuel|2 Samuel]]
| 1 Kings = [[w:Books of Kings|1 Kings]]
| 2 Kings = [[w:Books of Kings|2 Kings]]
| 1 Chronicles = [[w:Books of Chronicles|1 Chronicles]]
| 2 Chronicles = [[w:Books of Chronicles|2 Chronicles]]
| Ezra = [[w:Book of Ezra|Ezra]]
| Nehemiah = [[w:Book of Nehemiah|Nehemiah]]
| Esther = [[w:Book of Esther|Esther]]
| Job = [[w:Book of Job|JIob]]
| Psalms = [[w:Psalms|Psalms]]
| Proverbs = [[w:Book of Proverbs|Proverbs]]
| Ecclesiastes = [[w:Ecclesiastes|Ecclesiastes]]
| Song of Songs = [[w:Song of Songs|Song of Songs]]
| Isaiah = [[w:Book of Isaiah|Isaiah]]
| Jeremiah = [[w:Book of Jeremiah|Jeremiah]]
| Lamentations = [[w:Book of Lamentations|Lamentations]]
| Ezekiel = [[w:Book of Ezekiel|Ezekiel]]
| Daniel = [[w:Book of Daniel|Daniel]]
| Hosea = [[w:Book of Hosea|Hosea]]
| Joel = [[w:Book of Joel|Joel]]
| Amos = [[w:Book of Amos|Amos]]
| Obadiah = [[w:Book of Obadiah|Obadiah]]
| Jonah = [[w:Book of Jonah|Jonah]]
| Micah = [[w:Book of Micah|Micah]]
| Nahum = [[w:Book of Nahum|Nahum]]
| Habakkuk = [[w:Book of Habakkuk|Habakkuk]]
| Zephaniah = [[w:Book of Zephaniah|Zephaniah]]
| Haggai = [[w:Book of Haggai|Haggai]]
| Zechariah = [[w:Book of Zechariah|Zechariah]]
| Malachi = [[w:Book of Malachi|Malachí]]
| Matthew = [[w:Gospel of Matthew|Matthew]]
| Mark = [[w:Gospel of Mark|Mark]]
| Luke = [[w:Gospel of Luke|Luke]]
| John = [[w:Gospel of John|John]]
| Acts = [[w:Acts of the Apostles|Acts]]
| Romans = [[w:Epistle to the Romans|Romans]]
| 1 Corinthians = [[w:First Epistle to the Corinthians|1 Corinthians]]
| 2 Corinthians = [[w:Second Epistle to the Corinthians|2 Corinthians]]
| Galatians = [[w:Epistle to the Galatians|Galatians]]
| Ephesians = [[w:Epistle to the Ephesians|Ephesians]]
| Philippians = [[w:Epistle to the Philippians|Philippians]]
| Colossians = [[w:Epistle to the Colossians|Colossians]]
| 1 Thessalonians = [[w:First Epistle to the Thessalonians|1 Thessalonians]]
| 2 Thessalonians = [[w:Second Epistle to the Thessalonians|2 Thessalonians]]
| 1 Timothy = [[w:First Epistle to Timothy|1 Timothy]]
| 2 Timothy = [[w:Second Epistle to Timothy|2 Timothy]]
| Titus = [[w:Epistle to Titus|Titus]]
| Philemon = [[w:Epistle to Philemon|Philemon]]
| Hebrews = [[w:Epistle to the Hebrews|Hebrews]]
| James = [[w:Epistle of James|James]]
| 1 Peter = [[w:First Epistle of Peter|1 Peter]]
| 2 Peter = [[w:Second Epistle of Peter|2 Peter]]
| 1 John = [[w:First Epistle of John|1 Iohn]]
| 2 John = [[w:Second Epistle of John|2 Iohn]]
| 3 John = [[w:Third Epistle of John|3 Iohn]]
| Jude = [[w:Epistle of Jude|Jude]]
| Revelation = [[w:Book of Revelation|Revelation]]
}} {{#if:{{{chapter|}}}{{{2|}}}
| [https://www.biblegateway.com/passage/?search={{urlencode:{{{book|{{{1|}}}}}} {{{chapter|{{{2|1}}}}}}}}&version=NIV {{{chapter|{{{2|}}}}}}:{{#if:{{{verse|}}}{{{verses|}}}{{{3|}}}
| {{{verse|{{{verses|{{{3|}}}}}}}}}
| {{maintenance line|please specify the verse(s)}}
}}]
| {{maintenance line|please specify the chapter{{#if:{{{verse|}}}{{{3|}}}|| and verse(s)}}}}
}}
| {{maintenance line|please specify the book of the Bible}}
}}
|isbn = 978-0-310-43437-5
|textparam = 4
|footer = {{#if:{{{footer|}}}|{{small|{{{footer}}}}}}}
|t={{{t|}}}
|translation={{{translation|}}}
|allowparams = book,1,chapter,2,verse,verses,3,t,translation
}}<noinclude>{{documentation}}</noinclude>
qriszkfisrpc9c10z28a2q2n6vvewut
แม่แบบ:RQ:Stevenson Dynamiter
10
2308264
5759316
5664683
2026-09-01T02:02:31Z
Octahedron80
267
5759316
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = w:Robert Louis Stevenson; [[w:Fanny Stevenson|Fanny Van de Grift Stevenson]]
|chapter = {{#if:{{{chapter|}}}{{{story|}}}{{{1|}}}
| {{#invoke:string/templates|replace|{{{chapter|{{{story|{{{1|}}}}}}}}}|'|’}}
| {{maintenance line|please specify the story}}
}}
|title = [[w:More New Arabian Nights: The Dynamiter|More New Arabian Nights: The Dynamiter]]
|location = London
|publisher = [[w:Longman|Longmans, Green, and Co.]]
|year = 1885
|pageparam = 2
|pageurl = https://archive.org/details/dynamiter00stev/page/{{#if:{{num|{{{page|}}}{{{pageref|}}}{{{2|}}}}}
| {{{page|{{{pageref|{{{2|}}}}}}}}}
| n{{#expr:{{R2A|{{{page|{{{pageref|{{{2|}}}}}}}}}}}+3}}
}}/mode/1up
|oclc = 459069717
|t={{{t|}}}
|translation={{{translation|}}}
|textparam = 3
|allowparams = chapter,story,1,pageref,t,translation
}}<noinclude>{{documentation}}</noinclude>
1p18g2ko4hdqr6vu5quovd1ahcp9p8d
แม่แบบ:RQ:Swift Gulliver's Travels
10
2308392
5759414
5664811
2026-09-01T07:04:36Z
Octahedron80
267
5759414
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = {{#if:{{{page|}}}{{{pageref|}}}{{{2|}}}
| {{#if:{{R2A|{{{page|}}}{{{pageref|}}}{{{2|}}}|no_error=1}}
| Richard Sympson [pseudonym]
| [[[w:Jonathan Swift|Jonathan Swift]]]
}}
| [[[w:Jonathan Swift|Jonathan Swift]]]
}}
|chapter = {{#if:{{{page|}}}{{{pageref|}}}{{{2|}}}
| {{#switch:{{{part|{{{1|}}}}}}
| I = {{#if:{{R2A|{{{page|}}}{{{pageref|}}}{{{2|}}}|no_error=1}}
| The Publisher to the Reader
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<25
| The Author Gives Some Account of Himself and Family, His First Inducements to Travel.{{nb...|He is Shipwrecked, and Swims for His Life, Gets Safe on Shoar in the Country of ''Lilliput'', is Made a Prisoner, and Carried up the Country.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<47
| The Emperor of ''Lilliput'', Attended by Several of the Nobility, Come to See the Author in His Confinement.{{nb...|The Emperor’s Person and Habit Describ’d. Learned Men Appointed to Teach the Author Their Language. He Gains Favour by His Mild Disposition. His Pockets are Searched, and His Sword and Pistols Taken from Him.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<65
| The Author Diverts the Emperor and His Nobility of Both Sexes in a Very Uncommon Manner.{{nb...|The Diversions of the Court of ''Lilliput'' Described. The Author has His Liberty Granted Him upon Certain Conditions.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<77
| ''Mildendo'', the Metropolis of ''Lilliput'', Described, together with the Emperor’s Palace.{{nb...|A Conversation between the Author and a Principal Secretary Concerning the Affairs of that Empire: The Author’s Offers to Serve the Emperor in His Wars.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<92
| The Author by an Extraordinary Stratagem Prevents an Invasion.{{nb...|A High Title of Honour is Conferred upon Him. Embassadors Arrive from the Emperor of ''Blefuscu'', and Sue for Peace. The Empress’s Apartment on Fire by an Accident; the Author Instrumental in Saving the Rest of the Palace.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<115
| Of the Inhabitants of ''Lilliput'';{{nb...|Their Learning, Laws, and Customs, the Manner of Educating Their Children. The Author’s Way of Living in that Country. His Vindication of a Great Lady.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<134
| The Author being Informed of a Design to Accuse Him of High-Treason, Makes His Escape to ''Blefuscu''.{{nb...|His Reception there.}}
| The Author, by a Lucky Accident, Finds Means to Leave ''Blefuscu''; and, after Some Difficulties, Returns Safe to his Native Country.
}}
}}
}}
}}
}}
}}
}}
}}
| II = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<177
| A Great Storm Described, the Long-Boat Sent to Fetch Water, the Author Goes with It to Discover the Country.{{nb...|He is Left on Shore, is Seized by One of the Natives, and Carried to a Farmer’s House. His Reception there, with Several Accidents that Happened there. A Description of the Inhabitants.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<191
| A Description of the Farmer’s Daughter.{{nb...|The Author Carried to a Market-Town and then to the Metropolis. The Particulars of His Journey.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<215
| The Author Sent for to Court.{{nb...|The Queen Buys Him of His Master the Farmer, and Presents Him to the King. He Disputes with His Majesty’s Great Scholars. An Apartment at Court Provided for the Author. He is in High Favour with the Queen. He Stands up for the Honour of His Own Country. His Quarrels with the Queen’s Dwarf.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<226
| The Country Described.{{nb...|A Proposal for Correcting Modern Maps. The King’s Palace, and Some Account of the Metropolis. The Author’s Way of Travelling. The Chief Temple Described.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<249
| Several Adventures that Happened to the Author.{{nb...|The Execution of a Criminal. The Author Shews His Skill in Navigation.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<269
| Several Contrivances of the Author to Please the King and Queen.{{nb...|He Shews His Skill in Musick. The King Enquires into the State of ''Europe'', which the Author Relates to Him. The King’s Observations thereon.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<284
| The Author’s Love of His Country.{{nb...|He Makes a Proposal of Much Advantage to the King, which is Rejected. The King’s Great Ignorance in Politicks. The Learning of that Country Very Imperfect and Confined. Their Laws, and Military Affairs, and Parties in the State.}}
| The King and Queen Make a Progress to the Frontiers. The Author Attends Them. The Manner in which He Leaves the Country Very Particularly Related. He Returns to ''England''.
}}
}}
}}
}}
}}
}}
}}
| III = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<15
| The Author Sets out on His Third Voyage; is taken by Pyrates.{{nb...|The Malice of a ''Dutchman''. His Arrival at an Island. He is Received into ''Laputa''.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<35
| The Humours and Dispositions of the ''Laputians'' Described.{{nb...|An Account of Their Learning. Of the King and His Court. The Author’s Reception There. The Inhabitants Subject to Fears and Disquietudes. An Account of the Women.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<48
| A Phænomenon Solved by Modern Philosophy and Astronomy.{{nb...|The ''Laputians'' Great Improvements in the Latter. The King’s Method of Suppressing Insurrections.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<62
| The Author Leaves ''Laputa'', is Conveyed to ''Balnibarbi'', Arrives at the Metropolis.{{nb...|A Description of the Metropolis, and the Country Adjoining. The Author Hospitably Received by a Great Lord. His Conversation with that Lord.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<80
| The Author Permitted to See the Grand Academy of ''Lagado''.{{nb...|The Academy Largely Described. The Arts wherein the Professors Employ Themselves.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<94
| A Further Account of the Academy.{{nb...|The Author Proposes Some Improvements which are Honourably Received.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<104
| The Author Leaves ''Lagado'', Arrives at ''Maldonada''.{{nb...|No Ship Ready. He Takes a Short Voyage to ''Glubbdubdrib''. His Reception by the Governor.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<118
| A Further Account of ''Glubbdubdrib''.{{nb...|Antient and Modern History Corrected.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<127
| The Author’s Return to ''Maldonada''.{{nb...|Sails to the Kingdom of ''Luggnagg''. The Author Confined. He is Sent for to Court. The Manner of His Admittance. The King’s Great Lenity to His Subjects.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<47
| The ''Luggnaggians'' Commended.{{nb...|A Particular Description of the ''Struldbruggs'', with Many Conversations between the Author and Some Eminent Persons upon that Subject.}}
| The Author Leaves ''Luggnagg'', and Sails to ''Japan''. From thence He Returns in a ''Dutch'' Ship to ''Amsterdam'', and from ''Amsterdam'' to ''England''.
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
| IV = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<172
| The Author Sets out as Captain of a Ship.{{nb...|His Men Conspire against Him, Confine Him a Long Time to His Cabbin, Set Him on Shore in an Unknown Land. He Travels up in the Country. The ''Yahoos'' a Strange Sort of Animal Described. The Author Meets two ''Houyhnhnms''.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<187
| The Author Conducted by a ''Houyhnhnm'' to His House.{{nb...|The House Described. The Author’s Reception. The Food of the ''Houyhnhnms''. The Author in Distress for Want of Meat, is at Last Relieved. His Manner of Feeding in this Country.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<201
| The Author Studious to Learn the Language, the ''Houyhnhnm'' His Master Assists in Teaching Him.{{nb...|The Language Described. Several ''Houyhnhnms'' of Quality Come out of Curiosity to See the Author. He Gives His Master a Short Account of His Voyage.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<214
| The ''Houyhnhnms'' Notion of Truth and Falshood.{{nb...|The Author’s Discourse Disapproved by His Master. The Author Gives a More Particular Account Himself, and the Accidents of His Voyage.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<234
| The Author at His Master’s Command Informs Him of the State of ''England''.{{nb...|The Causes of War among the Princes of ''Europe''. The Author Begins to Explain the ''English'' Constitution.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<252
| A Continuation of the State of ''England''; so Well Governed by a Queen as to Need no First Minister.{{nb...|The Character of Such an One in Some ''European'' Courts.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<271
| The Author’s Great Love of His Native Country.{{nb...|His Master’s Observations upon the Constitution and Administration of ''England'', as Described by the Author, with Parallel Cases and Comparisons. His Master’s Observations upon Human Nature.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<286
| The Author Relates Several Particulars of the ''Yahoos''.{{nb...|The Great Virtues of the ''Houyhnhnms''. The Education and Exercises of Their Youth. Their General Assembly.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<299
| A Grand Debate at the General Assembly of the ''Houyhnhnms'', and How It was Determined.{{nb...|The Learning of the ''Houyhnhnms''. Their Buildings. Their Manner of Burials. The Defectiveness of Their Language.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<318
| The Author’s Oeconomy and Happy Life among the ''Houyhnhnms''.{{nb...|His Great Improvement in Virtue, by Conversing with Them. Their Conversations. The Author has Notice Given Him by His Master that He Must Depart from the Country. He Falls into a Swoon for Grief, but Submits. He Contrives and Finishes a Canoo, by the Help of a Fellow-Servant, and Puts to Sea at a Venture.}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<338
| The Author’s Dangerous Voyage.{{nb...|He Arrives at ''New-Holland'', Hoping to Settle There. Is Wounded with an Arrow by One of the Natives. Is Seized and Carried by Force into a ''Portugueze'' Ship. The Great Civilities of the Captain. The Author Arrives at ''England''.}}
| The Author’s Veracity. His Design in Publishing this Work.{{nb...|His Censure of Those Travellers who Swerve from the Truth. The Author Clears Himself from any Sinister Ends in Writing. An Objection Answered. The Method of Planting Colonies. His Native Country Commended. The Right of the Crown to Those Countries Described by the Author is Justified. The Difficulty of Conquering Them. The Author Takes His Last Leave of the Reader: Proposeth His Manner of Living for the Future, Gives Good Advice, and Concludes.}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
|mainauthor = {{#if:{{{page|}}}{{{pageref|}}}{{{2|}}}
| {{#if:{{R2A|{{{page|}}}{{{pageref|}}}{{{2|}}}|no_error=1}}
| [[[w:Jonathan Swift|Jonathan Swift]]]
}}
}}
|title = Travels into Several Remote Nations of the World. {{...|In Four Parts. By Lemuel Gulliver, First a Surgeon, and then a Captain of Several Ships}} {{noitalic|[}}[[w:Gulliver's Travels|Gulliver’s Travels]]{{noitalic|]}}
|location = London
|publisher = {{...|Printed for}} [[w:Benjamin Motte|Benj[amin] Motte]],{{nb...|at the Middle Temple-Gate in Fleet-street}}
|date = 28 October 1726
|volume = {{#switch:{{{part|}}}{{{1|}}}
| I|II = I
| III|IV = II
}}
|section = {{#switch:{{{part|}}}{{{1|}}}
| I = part I (A Voyage to Lilliput)
| II = part II (A Voyage to Brobdingnag)
| III = part III (A Voyage to Laputa, Balnibarbi, Glubbdubdribb, Luggnagg, and Japan)
| IV = part IV (A Voyage to the Houyhnhnms)
| {{maintenance line|<nowiki>please specify |part=I to IV</nowiki>}}
}}
|page = {{#switch:{{{page|}}}{{{2|}}}
| 176|177|178|179|180|213|216|217|220|221|224|225 = [{{{page|{{{2|}}}}}}]
| {{{page|{{{2|}}}}}}
}}
|pageurl = https://archive.org/details/travelsintosever0{{#switch:{{{part|}}}{{{1|}}}
| I|II = 1
| III|IV = 2
}}swif/page/{{#ifeq:{{{part|}}}{{{1|}}}|II
| {{#switch:{{{page|}}}{{{pageref|}}}{{{2|}}}
| 175 = n204
| 176 = 176
| 177 = n206
| 178 = n207
| 179 = n208
| 180 = n209
| {{{page|{{{pageref|{{{2|}}}}}}}}}
}}
| {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{2|}}}}}<!--if page number is a Roman numeral, assume it is from "The Publisher to the Reader"-->
| {{{page|{{{pageref|{{{2|}}}}}}}}}
| n{{#expr:{{R2A|{{{page|{{{pageref|{{{2|}}}}}}}}}}}+7}}
}}
}}/mode/1up
|oclc = 995220039
|t={{{t|}}}
|translation={{{translation|}}}
|textparam = 3
|propagateparams = pages
|allowparams = part,1,page,2,pageref,t,translation
}}<noinclude>{{documentation}}</noinclude>
4acruj28gqq8v65jprgpjogf6ajwovw
แม่แบบ:da-noun-infl-unc-base
10
2358155
5759293
2026-09-01T01:32:32Z
Octahedron80
267
นำเข้าจาก enwikt
5759293
wikitext
text/x-wiki
{{#invoke:checkparams|error|gen-sg-indef-3,pl-indef-2,pl-def-3,pl-indef,gen-pl-indef-2,gen-pl-def,gen-pl-def-2,gen-pl-def-3,pl-indef-3,gen-pl-indef,pl-def-2,pl-def}}<!-- Validate template parameters
-->{{inflection-table-top|title=การผันรูปของ {{m|da||{{{sg-indef}}}}}|palette=brown|tall=yes}}
! rowspan="2" | {{#switch:{{{g}}}|c=เพศรวม|n=เพศกลาง|b=เพศใดเพศหนึ่ง {{cln|da|คำนาม★ที่มีหลายเพศ}}}}<br/>
! colspan="2" | เอกพจน์
|-
! class="secondary" | ไม่ชี้เฉพาะ
! class="secondary" | ชี้เฉพาะ
|-
! กรรตุการก
| data-accel-col=1 | <!--
-->{{l-self|da|accel-form=indef{{!}}nom{{{!}}}s|{{{sg-indef}}}}}
| data-accel-col=2 | <!--
-->{{l-self|da|accel-form=def{{!}}nom{{{!}}}s|{{{sg-def}}}}}<!--
-->{{#if:{{{sg-def-2|}}}|<br/>{{l-self|da|accel-form=def{{!}}nom{{{!}}}s|{{{sg-def-2|}}}}}}}
|-
! สัมพันธการก
| data-accel-col=1 | <!--
-->{{l-self|da|accel-form=indef{{!}}gen{{!}}s|{{{gen-sg-indef}}}}}<!--
-->{{#if:{{{gen-sg-indef-2|}}}|<br/>{{l-self|da|accel-form=indef{{!}}gen{{!}}s|{{{gen-sg-indef-2}}}}}}}
| data-accel-col=2 | <!--
-->{{l-self|da|accel-form=def{{!}}gen{{!}}s|{{{gen-sg-def}}}}}<!--
-->{{#if:{{{gen-sg-def-2|}}}|<br/>{{l-self|da|accel-form=def{{!}}gen{{!}}s|{{{gen-sg-def-2|}}}}}}}
{{inflection-table-bottom|notes={{{notes|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
bsk7c8gzkz6ebdf3kkz7ixe0p7vt6ac
แม่แบบ:da-noun-infl-pl-base
10
2358156
5759294
2026-09-01T01:34:17Z
Octahedron80
267
นำเข้าจาก enwikt
5759294
wikitext
text/x-wiki
{{inflection-table-top|title=การผันรูปของ {{m|da||{{{sg-indef}}}}}|palette=brown|tall=yes}}
! rowspan="2" | {{#switch:{{{g}}}|c=เพศรวม|n=เพศกลาง|b=เพศใดเพศหนึ่ง {{cln|da|คำนาม★ที่มีหลายเพศ}}}}<br/>
! colspan="2" | พหูพจน์
|-
! class="secondary" | ไม่ชี้เฉพาะ
! class="secondary" | ชี้เฉพาะ
|-
! กรรตุการก
| data-accel-col=1 | <!--
-->{{l-self|da|accel-form=indef{{!}}nom{{!}}p|{{{pl-indef}}}}}
| data-accel-col=2 | <!--
-->{{l-self|da|accel-form=def{{!}}nom{{!}}p|{{{pl-def}}}}}<!--
-->{{#if:{{{pl-def-2|}}}|<br/>{{l-self|da|accel-form=def{{!}}nom{{!}}p|{{{pl-def-2|}}}}}}}
|-
! สัมพันธการก
| data-accel-col=1 | <!--
-->{{l-self|da|accel-form=indef{{!}}gen{{!}}p|{{{gen-pl-indef}}}}}<!--
-->{{#if:{{{gen-pl-indef-2|}}}|<br/>{{l-self|da|accel-form=indef{{!}}gen{{!}}p|{{{gen-pl-indef-2}}}}}}}
| data-accel-col=2 | <!--
-->{{l-self|da|accel-form=def{{!}}gen{{!}}p|{{{gen-pl-def}}}}}<!--
-->{{#if:{{{gen-pl-def-2|}}}|<br/>{{l-self|da|accel-form=def{{!}}gen{{!}}p|{{{gen-pl-def-2|}}}}}}}
{{inflection-table-bottom|notes={{{notes|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
5bslhfqrz5ibvtki7vj4env1o44w60o
tævs
0
2358157
5759295
2026-09-01T01:35:33Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759295
wikitext
text/x-wiki
== ภาษาเดนมาร์ก ==
=== คำนาม ===
{{head|da|รูปนาม}}
# {{inflection of|da|tæv||indef|gen|p}}
6eirjud5yk24gglyg1f0vwoa352neg9
tævene
0
2358158
5759296
2026-09-01T01:35:51Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759296
wikitext
text/x-wiki
== ภาษาเดนมาร์ก ==
=== คำนาม ===
{{head|da|รูปนาม}}
# {{inflection of|da|tæv||def|nom|p}}
82zg3hdpgrf9089wio9r9zeap7y1cs2
tævenes
0
2358159
5759297
2026-09-01T01:36:03Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759297
wikitext
text/x-wiki
== ภาษาเดนมาร์ก ==
=== คำนาม ===
{{head|da|รูปนาม}}
# {{inflection of|da|tæv||def|gen|p}}
l9qryenb7lkthvu5cjt530jxpwkjwvl
rains
0
2358160
5759303
2026-09-01T01:54:55Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759303
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{IPA|en|/ɹeɪnz/}}
* {{audio|en|en-us-rains.ogg|a=US|q=female voice}}
* {{audio|en|LL-Q1860 (eng)-Back ache-rains.wav|a=UK|q=male voice}}
* {{rhymes|en|eɪnz|s=1}}
* {{homophones|en|reigns|reins}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|rain}}
=== คำนาม ===
{{en-noun|p}}
# [[ฤดูฝน]]; [[มรสุม]]
#: {{ux|en|The '''rains''' came early this year.|translation='''ฤดูฝน'''ปีนี้มาเร็วกว่าปกติ}}
#* {{quote-book|en|year=1889|year_published=1899|author={{w|Rudyard Kipling}}|title={{w|Under the Deodars}}|chapter=The Education of Otis Yeere|location= Boston|publisher=The Greenock Press|page=29|text=The soil spawned humanity, as it bred frogs in the '''Rains''', and the gap of the sickness of one season was filled to overflowing by the fecundity of the next.|translation=ผืนดินผลิตมนุษย์ขึ้นมา ราวกับที่มันเพาะพันธุ์กบในช่วง'''ฤดูฝน''' และช่องว่างแห่งความเจ็บป่วยของฤดูกาลหนึ่งก็ถูกเติมเต็มจนล้นด้วยความอุดมสมบูรณ์ของฤดูกาลถัดมา}}
==== ลูกคำ ====
{{col|en|plum rains
}}
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|rain||s-verb-form}}
=== คำสลับอักษร ===
* {{anagrams|en|a=ainrs|Nairs|Nasir|Risan|arnis|naris|nasri|ranis|sarin|siRNA|sirna}}
hoi02fkd75plvkj2w3y2jdoo6nxn9yx
beers
0
2358161
5759304
2026-09-01T01:55:52Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759304
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{IPA|en|/bɪə(ɹ)z/|a=UK}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-beers.wav|a=Southern England}}
* {{IPA|en|/bɪɚz/|/biɹz/|/bɪɹz/|a=US}}
* {{rhymes|en|ɪə(ɹ)z|s=1}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|beer}}
#: {{usex|en|I brought four '''beers''' to the game with me.|translation=ฉันเอาเบียร์สี่กระป๋องไปดูเกมด้วย}}
#: {{usex|en|My favorite local '''beers''' are Rugged Pine and Nimbostratus.|translation=เบียร์ท้องถิ่นแก้วโปรดของฉันคือรักกี้ดไพน์และนิมโบสตรัสตัส}}
==== หมายเหตุการใช้ ====
''[[beer]]'' เป็นได้ทั้งคำนามนับได้และนับไม่ได้ รูปพหูพจน์ใช้หมายถึงปริมาณเครื่องดื่มเบียร์ที่เสิร์ฟเป็นแก้วหรือขวด หรือหมายถึงเบียร์ประเภทต่าง ๆ ดูเพิ่มที่ [[beer]]
=== คำสลับอักษร ===
* {{anagrams|en|a=beers|Brees|Erbes|Reebs|brees|reebs}}
h37o6jg44vprx3ozadns7czvxm67m9a
brees
0
2358162
5759305
2026-09-01T01:56:36Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759305
wikitext
text/x-wiki
== ภาษากาลิเซีย ==
=== คำกริยา ===
{{head|gl|รูปกริยา}}
# {{gl-verb form of|brear}}
== ภาษาสเปน ==
=== คำกริยา ===
{{head|es|รูปกริยา}}
# {{es-verb form of|brear}}
== ภาษาอังกฤษ ==
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|bree}}
=== คำสลับอักษร ===
* {{anagrams|en|a=beers|Erbes|Reebs|be-ers|beers|reebs}}
hu0fs3z65y2rriujbh7cdbbz8i0i0n7
belfries
0
2358163
5759306
2026-09-01T01:57:02Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759306
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{IPA|en|/ˈbɛlfɹiz/}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|belfry}}
=== คำสลับอักษร ===
* {{anagrams|en|a=beefilrs|félibres}}
mlic0lbbar6f44szuk0ojic8gdhft6l
félibres
0
2358164
5759307
2026-09-01T01:57:11Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759307
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== คำนาม ===
{{head|fr|รูปนาม|g=m-p}}
# {{plural of|fr|félibre}}
== ภาษาอังกฤษ ==
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|félibre}}
=== คำสลับอักษร ===
* {{anagrams|en|a=beefilrs|belfries}}
30aljnhr6d2p1c0ru5asleudrcjclin
destroying angel
0
2358165
5759311
2026-09-01T02:00:47Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759311
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
[[ไฟล์:Destroying Angel 02.jpg|thumb|[[European destroying angel|European '''destroying angel''']] ({{taxfmt|Amanita virosa|species}})]]
=== รากศัพท์ ===
เห็ดเหล่านี้อาจได้ชื่อมาจากรูปลักษณ์สีขาวที่คล้ายกับเทวดา {{rfe|en}}
=== คำนาม ===
{{en-noun}}
# [[เห็ด]][[พิษ]][[ร้ายแรง]]ในสกุล {{taxfmt|Amanita|genus}} ซึ่งมีอยู่ 4 ชนิด ได้แก่: {{taxlink|Amanita bisporigera|species}}, {{taxlink|Amanita ocreata|species}}, {{taxlink|Amanita verna|species}} และ {{taxfmt|Amanita virosa|species}}
#: {{syn|en|angel of death|death angel}}
#* {{quote-journal|en-GB|author=Richard Eshelman|title=Experience: I nearly died after eating wild mushrooms|work=The Guardian|date=2010-11-13|url=https://www.theguardian.com/lifeandstyle/2010/nov/13/nearly-died-eating-wild-mushrooms|issn=0261-3077|author2=Sophie Haydock|passage=The doctors ran some tests and confirmed I'd eaten the '''destroying angel'''. I was the third person that year to be admitted after eating one. The two before me hadn't survived.|translation=แพทย์ตรวจทางห้องปฏิบัติการและยืนยันว่าฉันกินเห็ด'''เดสทรอยอิงแองเจิล'''เข้าไป ฉันเป็นคนที่สามในปีนั้นที่ถูกนำตัวส่งโรงพยาบาลหลังจากกินมันเข้าไป สองคนก่อนหน้าฉันไม่รอดชีวิต}}
#* {{quote-journal|en-US|author=Helen Macdonald|title=Sex, Death and Mushrooms|work=The New York Times|date=2015-11-06|url=https://www.nytimes.com/2015/11/08/magazine/sex-death-and-mushrooms.html|issn=0362-4331|passage=You might survive if you eat a '''destroying angel''' or death cap, but you’ll probably need a liver transplant.|translation=คุณอาจรอดชีวิตหากกินเห็ด'''เดสทรอยอิงแองเจิล'''หรือเห็ดเดธแคปเข้าไป แต่คุณคงจะต้องปลูกถ่ายตับอย่างแน่นอน}}
# {{lb|en|คัมภีร์ไบเบิล}} ใน[[คัมภีร์]][[ฮีบรู]], [[ทูตสวรรค์]]หรือสิ่งมีชีวิตที่[[พระเจ้า]]ส่งมาในหลายโอกาสเพื่อ[[ลงโทษ]][[ศัตรู]]
#* {{RQ:Dickens David Copperfield|chapter=4|passage=Again, I wonder with a sudden fear whether it is likely that our good old clergyman can be wrong, and Mr. and Miss Murdstone right, and that all the angels in Heaven can be '''destroying angels'''.|translation=ฉันนึกสงสัยขึ้นมาด้วยความหวาดกลัวอย่างกะทันหันว่า เป็นไปได้ไหมที่บาทหลวงผู้ชราแสนดีของเราจะทำผิด และนายกับนางสาวมอร์ดสโตนจะทำถูก และเหล่าเทวดาทั้งหมดในสรวงสวรรค์จะเป็น'''เทวดาผู้ทำลายล้าง'''}}
#* {{RQ:Stevenson Dynamiter|page=23|chapter=Story of the Destroying Angel|passage=It was terrible, indeed; but so was death, the universal law. And even if the talk should wax still bolder, full of ominous silences and nods, and I should hear named in a whisper the '''Destroying Angels''', how was a child to understand these mysteries.|translation=มันช่างน่ากลัวเสียจริง แต่ความตายซึ่งเป็นกฎสากลก็เช่นกัน และแม้ว่าการสนทนาจะยิ่งกล้าหาญมากขึ้น เต็มไปด้วยความเงียบงันที่ลางร้ายและการพยักหน้า และฉันได้ยินชื่อของ'''เทวดาผู้ทำลายล้าง'''ถูกเอ่ยขึ้นด้วยเสียงกระซิบ เด็กคนหนึ่งจะเข้าใจความลับเหล่านี้ได้อย่างไร}}
#* {{RQ:London Strength of the Strong|chapter=The Unparalleled Invasion|passage=Hundred-ton guns were toys compared with the micro-organic projectiles hurled from the laboratories, the messengers of death, the '''destroying angels''' that stalked through the empire of a billion souls.|translation=ปืนร้อยตันเป็นเพียงของเล่นเมื่อเทียบกับกระสุนจุลินทรีย์ที่ถูกยิงออกมาจากห้องปฏิบัติการ ซึ่งเป็นทูตแห่งความตาย เป็น'''เทวดาผู้ทำลายล้าง'''ที่ย่างกรายผ่านอาณาจักรที่มีวิญญาณนับพันล้านดวง}}
#* {{RQ:New International Version|Psalm|78|49|passage=He unleashed against them his hot anger, his wrath, indignation and hostility— a band of '''destroying angels'''.|translation=พระองค์ทรงปล่อยความกริ้วอันร้อนรุ่ม พระพิโรธ ความขุ่นเคือง และความเกลียดชังใส่พวกเขา นั่นคือเหล่า'''ทูตสวรรค์ผู้ทำลายล้าง'''กลุ่มหนึ่ง}}
==== คำลูกกลุ่ม ====
* [[eastern]] [[North American]] destroying angel ({{taxlink|Amanita bisporigera|species}})
* [[western]] North American destroying angel ({{taxlink|Amanita ocreata|species}})
* {{l|en|spring destroying angel}}, {{l|en|fool's mushroom}} ({{taxlink|Amanita verna|species}})
* {{l|en|European destroying angel}} ({{taxfmt|Amanita virosa|species}})
=== อ้างอิง ===
* {{pedia}}
* {{pedia|destroying angel (Bible)}}
* {{specieslite|Amanita bisporigera}}
* {{specieslite|Amanita ocreata}}
* {{specieslite|Amanita verna}}
* {{specieslite|Amanita virosa}}
* {{comcatlite|Amanita bisporigera}}
* {{comcatlite|Amanita ocreata}}
* {{comcatlite|Amanita verna}}
* {{comcatlite|Amanita virosa}}
{{C|en|Euagarics}}
fmxrgjhlm7kro31apq8a7x4hmdi63v2
5759312
5759311
2026-09-01T02:01:05Z
Octahedron80
267
/* คำนาม */
5759312
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
[[ไฟล์:Destroying Angel 02.jpg|thumb|[[European destroying angel|European '''destroying angel''']] ({{taxfmt|Amanita virosa|species}})]]
=== รากศัพท์ ===
เห็ดเหล่านี้อาจได้ชื่อมาจากรูปลักษณ์สีขาวที่คล้ายกับเทวดา {{rfe|en}}
=== คำนาม ===
{{en-noun}}
# [[เห็ด]][[พิษ]][[ร้ายแรง]]ในสกุล {{taxfmt|Amanita|genus}} ซึ่งมีอยู่ 4 ชนิด ได้แก่: {{taxlink|Amanita bisporigera|species}}, {{taxlink|Amanita ocreata|species}}, {{taxlink|Amanita verna|species}} และ {{taxfmt|Amanita virosa|species}}
#: {{syn|en|angel of death|death angel}}
#* {{quote-journal|en-GB|author=Richard Eshelman|title=Experience: I nearly died after eating wild mushrooms|work=The Guardian|date=2010-11-13|url=https://www.theguardian.com/lifeandstyle/2010/nov/13/nearly-died-eating-wild-mushrooms|issn=0261-3077|author2=Sophie Haydock|passage=The doctors ran some tests and confirmed I'd eaten the '''destroying angel'''. I was the third person that year to be admitted after eating one. The two before me hadn't survived.|translation=แพทย์ตรวจทางห้องปฏิบัติการและยืนยันว่าฉันกินเห็ด'''เดสทรอยอิงแองเจิล'''เข้าไป ฉันเป็นคนที่สามในปีนั้นที่ถูกนำตัวส่งโรงพยาบาลหลังจากกินมันเข้าไป สองคนก่อนหน้าฉันไม่รอดชีวิต}}
#* {{quote-journal|en-US|author=Helen Macdonald|title=Sex, Death and Mushrooms|work=The New York Times|date=2015-11-06|url=https://www.nytimes.com/2015/11/08/magazine/sex-death-and-mushrooms.html|issn=0362-4331|passage=You might survive if you eat a '''destroying angel''' or death cap, but you’ll probably need a liver transplant.|translation=คุณอาจรอดชีวิตหากกินเห็ด'''เดสทรอยอิงแองเจิล'''หรือเห็ดเดธแคปเข้าไป แต่คุณคงจะต้องปลูกถ่ายตับอย่างแน่นอน}}
# {{lb|en|ไบเบิล}} ใน[[คัมภีร์]][[ฮีบรู]], [[ทูตสวรรค์]]หรือสิ่งมีชีวิตที่[[พระเจ้า]]ส่งมาในหลายโอกาสเพื่อ[[ลงโทษ]][[ศัตรู]]
#* {{RQ:Dickens David Copperfield|chapter=4|passage=Again, I wonder with a sudden fear whether it is likely that our good old clergyman can be wrong, and Mr. and Miss Murdstone right, and that all the angels in Heaven can be '''destroying angels'''.|translation=ฉันนึกสงสัยขึ้นมาด้วยความหวาดกลัวอย่างกะทันหันว่า เป็นไปได้ไหมที่บาทหลวงผู้ชราแสนดีของเราจะทำผิด และนายกับนางสาวมอร์ดสโตนจะทำถูก และเหล่าเทวดาทั้งหมดในสรวงสวรรค์จะเป็น'''เทวดาผู้ทำลายล้าง'''}}
#* {{RQ:Stevenson Dynamiter|page=23|chapter=Story of the Destroying Angel|passage=It was terrible, indeed; but so was death, the universal law. And even if the talk should wax still bolder, full of ominous silences and nods, and I should hear named in a whisper the '''Destroying Angels''', how was a child to understand these mysteries.|translation=มันช่างน่ากลัวเสียจริง แต่ความตายซึ่งเป็นกฎสากลก็เช่นกัน และแม้ว่าการสนทนาจะยิ่งกล้าหาญมากขึ้น เต็มไปด้วยความเงียบงันที่ลางร้ายและการพยักหน้า และฉันได้ยินชื่อของ'''เทวดาผู้ทำลายล้าง'''ถูกเอ่ยขึ้นด้วยเสียงกระซิบ เด็กคนหนึ่งจะเข้าใจความลับเหล่านี้ได้อย่างไร}}
#* {{RQ:London Strength of the Strong|chapter=The Unparalleled Invasion|passage=Hundred-ton guns were toys compared with the micro-organic projectiles hurled from the laboratories, the messengers of death, the '''destroying angels''' that stalked through the empire of a billion souls.|translation=ปืนร้อยตันเป็นเพียงของเล่นเมื่อเทียบกับกระสุนจุลินทรีย์ที่ถูกยิงออกมาจากห้องปฏิบัติการ ซึ่งเป็นทูตแห่งความตาย เป็น'''เทวดาผู้ทำลายล้าง'''ที่ย่างกรายผ่านอาณาจักรที่มีวิญญาณนับพันล้านดวง}}
#* {{RQ:New International Version|Psalm|78|49|passage=He unleashed against them his hot anger, his wrath, indignation and hostility— a band of '''destroying angels'''.|translation=พระองค์ทรงปล่อยความกริ้วอันร้อนรุ่ม พระพิโรธ ความขุ่นเคือง และความเกลียดชังใส่พวกเขา นั่นคือเหล่า'''ทูตสวรรค์ผู้ทำลายล้าง'''กลุ่มหนึ่ง}}
==== คำลูกกลุ่ม ====
* [[eastern]] [[North American]] destroying angel ({{taxlink|Amanita bisporigera|species}})
* [[western]] North American destroying angel ({{taxlink|Amanita ocreata|species}})
* {{l|en|spring destroying angel}}, {{l|en|fool's mushroom}} ({{taxlink|Amanita verna|species}})
* {{l|en|European destroying angel}} ({{taxfmt|Amanita virosa|species}})
=== อ้างอิง ===
* {{pedia}}
* {{pedia|destroying angel (Bible)}}
* {{specieslite|Amanita bisporigera}}
* {{specieslite|Amanita ocreata}}
* {{specieslite|Amanita verna}}
* {{specieslite|Amanita virosa}}
* {{comcatlite|Amanita bisporigera}}
* {{comcatlite|Amanita ocreata}}
* {{comcatlite|Amanita verna}}
* {{comcatlite|Amanita virosa}}
{{C|en|Euagarics}}
0uigjeu4nfnaq9su2ejfwv6rvp3ogyi
5759317
5759312
2026-09-01T02:03:16Z
Octahedron80
267
/* อ้างอิง */
5759317
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
[[ไฟล์:Destroying Angel 02.jpg|thumb|[[European destroying angel|European '''destroying angel''']] ({{taxfmt|Amanita virosa|species}})]]
=== รากศัพท์ ===
เห็ดเหล่านี้อาจได้ชื่อมาจากรูปลักษณ์สีขาวที่คล้ายกับเทวดา {{rfe|en}}
=== คำนาม ===
{{en-noun}}
# [[เห็ด]][[พิษ]][[ร้ายแรง]]ในสกุล {{taxfmt|Amanita|genus}} ซึ่งมีอยู่ 4 ชนิด ได้แก่: {{taxlink|Amanita bisporigera|species}}, {{taxlink|Amanita ocreata|species}}, {{taxlink|Amanita verna|species}} และ {{taxfmt|Amanita virosa|species}}
#: {{syn|en|angel of death|death angel}}
#* {{quote-journal|en-GB|author=Richard Eshelman|title=Experience: I nearly died after eating wild mushrooms|work=The Guardian|date=2010-11-13|url=https://www.theguardian.com/lifeandstyle/2010/nov/13/nearly-died-eating-wild-mushrooms|issn=0261-3077|author2=Sophie Haydock|passage=The doctors ran some tests and confirmed I'd eaten the '''destroying angel'''. I was the third person that year to be admitted after eating one. The two before me hadn't survived.|translation=แพทย์ตรวจทางห้องปฏิบัติการและยืนยันว่าฉันกินเห็ด'''เดสทรอยอิงแองเจิล'''เข้าไป ฉันเป็นคนที่สามในปีนั้นที่ถูกนำตัวส่งโรงพยาบาลหลังจากกินมันเข้าไป สองคนก่อนหน้าฉันไม่รอดชีวิต}}
#* {{quote-journal|en-US|author=Helen Macdonald|title=Sex, Death and Mushrooms|work=The New York Times|date=2015-11-06|url=https://www.nytimes.com/2015/11/08/magazine/sex-death-and-mushrooms.html|issn=0362-4331|passage=You might survive if you eat a '''destroying angel''' or death cap, but you’ll probably need a liver transplant.|translation=คุณอาจรอดชีวิตหากกินเห็ด'''เดสทรอยอิงแองเจิล'''หรือเห็ดเดธแคปเข้าไป แต่คุณคงจะต้องปลูกถ่ายตับอย่างแน่นอน}}
# {{lb|en|ไบเบิล}} ใน[[คัมภีร์]][[ฮีบรู]], [[ทูตสวรรค์]]หรือสิ่งมีชีวิตที่[[พระเจ้า]]ส่งมาในหลายโอกาสเพื่อ[[ลงโทษ]][[ศัตรู]]
#* {{RQ:Dickens David Copperfield|chapter=4|passage=Again, I wonder with a sudden fear whether it is likely that our good old clergyman can be wrong, and Mr. and Miss Murdstone right, and that all the angels in Heaven can be '''destroying angels'''.|translation=ฉันนึกสงสัยขึ้นมาด้วยความหวาดกลัวอย่างกะทันหันว่า เป็นไปได้ไหมที่บาทหลวงผู้ชราแสนดีของเราจะทำผิด และนายกับนางสาวมอร์ดสโตนจะทำถูก และเหล่าเทวดาทั้งหมดในสรวงสวรรค์จะเป็น'''เทวดาผู้ทำลายล้าง'''}}
#* {{RQ:Stevenson Dynamiter|page=23|chapter=Story of the Destroying Angel|passage=It was terrible, indeed; but so was death, the universal law. And even if the talk should wax still bolder, full of ominous silences and nods, and I should hear named in a whisper the '''Destroying Angels''', how was a child to understand these mysteries.|translation=มันช่างน่ากลัวเสียจริง แต่ความตายซึ่งเป็นกฎสากลก็เช่นกัน และแม้ว่าการสนทนาจะยิ่งกล้าหาญมากขึ้น เต็มไปด้วยความเงียบงันที่ลางร้ายและการพยักหน้า และฉันได้ยินชื่อของ'''เทวดาผู้ทำลายล้าง'''ถูกเอ่ยขึ้นด้วยเสียงกระซิบ เด็กคนหนึ่งจะเข้าใจความลับเหล่านี้ได้อย่างไร}}
#* {{RQ:London Strength of the Strong|chapter=The Unparalleled Invasion|passage=Hundred-ton guns were toys compared with the micro-organic projectiles hurled from the laboratories, the messengers of death, the '''destroying angels''' that stalked through the empire of a billion souls.|translation=ปืนร้อยตันเป็นเพียงของเล่นเมื่อเทียบกับกระสุนจุลินทรีย์ที่ถูกยิงออกมาจากห้องปฏิบัติการ ซึ่งเป็นทูตแห่งความตาย เป็น'''เทวดาผู้ทำลายล้าง'''ที่ย่างกรายผ่านอาณาจักรที่มีวิญญาณนับพันล้านดวง}}
#* {{RQ:New International Version|Psalm|78|49|passage=He unleashed against them his hot anger, his wrath, indignation and hostility— a band of '''destroying angels'''.|translation=พระองค์ทรงปล่อยความกริ้วอันร้อนรุ่ม พระพิโรธ ความขุ่นเคือง และความเกลียดชังใส่พวกเขา นั่นคือเหล่า'''ทูตสวรรค์ผู้ทำลายล้าง'''กลุ่มหนึ่ง}}
==== คำลูกกลุ่ม ====
* [[eastern]] [[North American]] destroying angel ({{taxlink|Amanita bisporigera|species}})
* [[western]] North American destroying angel ({{taxlink|Amanita ocreata|species}})
* {{l|en|spring destroying angel}}, {{l|en|fool's mushroom}} ({{taxlink|Amanita verna|species}})
* {{l|en|European destroying angel}} ({{taxfmt|Amanita virosa|species}})
=== อ้างอิง ===
* {{pedia|lang=en}}
* {{pedia|destroying angel (Bible)|lang=en}}
* {{specieslite|Amanita bisporigera}}
* {{specieslite|Amanita ocreata}}
* {{specieslite|Amanita verna}}
* {{specieslite|Amanita virosa}}
* {{comcatlite|Amanita bisporigera}}
* {{comcatlite|Amanita ocreata}}
* {{comcatlite|Amanita verna}}
* {{comcatlite|Amanita virosa}}
{{C|en|Euagarics}}
gkl87kxok6kxy0mbytot3nyxv38810o
chainman
0
2358166
5759318
2026-09-01T02:05:48Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759318
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{ety|en|:af|chain|-man|text=+|tree=1}}
=== คำนาม ===
{{en-noun|chainmen}}
# {{lb|en|การรังวัด}} ผู้ที่ใช้[[โซ่]]หรือ[[สายวัด]]
#* {{quote-book|en|year=2023|author={{w|Richard Flanagan}}|title=Question 7|publisher=Knopf|page=8|passage=It was the '''chainman''''s job to drag the twenty-two-yard chain with its hundred links with which the world was measured.|translation=มันคือหน้าที่ของ'''คนใช้โซ่'''ที่จะต้องลากโซ่ความยาว 22 หลาที่มีห่วงร้อยอยู่หนึ่งร้อยห่วง ซึ่งใช้สำหรับใช้วัดโลกใบนี้}}
==== คำเกี่ยวข้อง ====
* [[rodman]]
=== คำสลับอักษร ===
* {{anagrams|en|a=aachimnn|Chinaman|chinaman}}
{{cln|en|2-syllable words}}
dg0metknzrjqfjqc1m4pxhaanetuolt
greenery
0
2358167
5759319
2026-09-01T02:07:07Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759319
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{ety|en|:af|green|-ery|text=+|tree=1}}
=== การออกเสียง ===
* {{IPA|en|/ˈɡɹiːnəɹi/}}
* {{audio|en|En-au-greenery.ogg|a=AU}}
* {{rhymes|en|iːnəɹi|s=3}}
=== คำนาม ===
{{wp}}
{{en-noun|-|+}}
# [[ใบไม้]]หรือ[[พืชพันธุ์]]สี[[เขียว]]
# ใบไม้หรือพืชพันธุ์ที่ใช้สำหรับ[[ประดับ]][[ตกแต่ง]]
# {{lb|en|สแลง}} [[กัญชา]]
#: {{syn|en|อรรถาภิธาน:marijuana}}
==== ลูกคำ ====
{{col|en|evergreenery
|greenery-yallery
}}
==== ดูเพิ่ม ====
* {{l|en|vegetation}}
{{topics|en|พฤกษศาสตร์}}
o4hc3mrd73ky5yjdm498145zcbq53rr
5759320
5759319
2026-09-01T02:07:21Z
Octahedron80
267
/* คำนาม */
5759320
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{ety|en|:af|green|-ery|text=+|tree=1}}
=== การออกเสียง ===
* {{IPA|en|/ˈɡɹiːnəɹi/}}
* {{audio|en|En-au-greenery.ogg|a=AU}}
* {{rhymes|en|iːnəɹi|s=3}}
=== คำนาม ===
{{wp|en:}}
{{en-noun|-|+}}
# [[ใบไม้]]หรือ[[พืชพันธุ์]]สี[[เขียว]]
# ใบไม้หรือพืชพันธุ์ที่ใช้สำหรับ[[ประดับ]][[ตกแต่ง]]
# {{lb|en|สแลง}} [[กัญชา]]
#: {{syn|en|อรรถาภิธาน:marijuana}}
==== ลูกคำ ====
{{col|en|evergreenery
|greenery-yallery
}}
==== ดูเพิ่ม ====
* {{l|en|vegetation}}
{{topics|en|พฤกษศาสตร์}}
kcu2p7hd69e1cfbvqubjkcu1383wgyd
octopodes
0
2358168
5759322
2026-09-01T02:08:32Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759322
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== คำนาม ===
{{head|fr|รูปนาม|g=m|g2=f}}
# {{plural of|fr|octopode}}
== ภาษาละติน ==
=== การออกเสียง ===
* {{la-IPA|octōpodēs}}
=== คำนาม ===
{{head|la|รูปนาม|head=octōpodēs}}
# {{inflection of|la|octōpūs||nom//acc//voc|p}}
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{IPA|en|nocount=1|/ɒkˈtəʊpədiːz/|/ɒkˈtɒpədiːz/|/ˈɒktəˌpəʊdz/}}
* {{rhymes|en|iːz|s=3}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{lb|en|rare}} {{plural of|en|octopus}}
#: {{syn|en|octopuses|octopi}} {{q|ดูเพิ่มในคำหลัก}}
# {{lb|en|rare}} {{plural of|en|octopode}}
{{cln|en|3-syllable words|4-syllable words}}
2ene84zwuikghux2btnn84jpfaaqgse
mices
0
2358169
5759334
2026-09-01T02:19:48Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759334
wikitext
text/x-wiki
== ภาษาละติน ==
=== คำกริยา ===
{{head|la|รูปกริยา|head=micēs}}
# {{inflection of|la|micō||2|s|pres|actv|subj}}
== ภาษาลัตเวีย ==
=== คำนาม ===
{{head|lv|รูปนาม|g=f}}
# {{inflection of|lv|mice||gen|s|;|nom//acc//voc|p}}
== ภาษาสเปน ==
=== คำนาม ===
{{head|es|รูปนาม|g=m-p}}
# {{plural of|es|miz}}
1n5mo4h1js5n6v22imiq4hu3cx8xw2o
5759337
5759334
2026-09-01T02:21:06Z
Octahedron80
267
5759337
wikitext
text/x-wiki
== ภาษาละติน ==
=== คำกริยา ===
{{head|la|รูปกริยา|head=micēs}}
# {{inflection of|la|micō||2|s|pres|actv|subj}}
== ภาษาลัตเวีย ==
=== คำนาม ===
{{head|lv|รูปนาม|g=f}}
# {{inflection of|lv|mice||gen|s|;|nom//acc//voc|p}}
== ภาษาสเปน ==
=== คำนาม ===
{{head|es|รูปนาม|g=m-p}}
# {{plural of|es|miz}}
== ภาษาอังกฤษ ==
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|mice||s-verb-form}}
55fhkpgw9dx5z98ubhzod6j7im136k5
5759343
5759337
2026-09-01T02:29:19Z
Octahedron80
267
/* ภาษาอังกฤษ */
5759343
wikitext
text/x-wiki
== ภาษาละติน ==
=== คำกริยา ===
{{head|la|รูปกริยา|head=micēs}}
# {{inflection of|la|micō||2|s|pres|actv|subj}}
== ภาษาลัตเวีย ==
=== คำนาม ===
{{head|lv|รูปนาม|g=f}}
# {{inflection of|lv|mice||gen|s|;|nom//acc//voc|p}}
== ภาษาสเปน ==
=== คำนาม ===
{{head|es|รูปนาม|g=m-p}}
# {{plural of|es|miz}}
== ภาษาอังกฤษ ==
=== การออกเสียง ===
{{rfp|en}}
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|mice||s-verb-form}}
6u3varwhu28pxwctxydbscabgr3bfcz
micing
0
2358170
5759335
2026-09-01T02:19:53Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759335
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{IPA|en|/ˈmaɪ.kɪŋ/}}
* {{rhymes|en|aɪkɪŋ|s=2}}
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|mic||ing-form}}
#: {{ux|en|She was '''micing''' up for the interview.}}
snem2nqglzozs2i7dlz5ohlwj3ho58s
5759339
5759335
2026-09-01T02:25:35Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759339
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ 1 ===
==== การออกเสียง ====
* {{IPA|en|/ˈmaɪ.kɪŋ/}}
* {{rhymes|en|aɪkɪŋ|s=2}}
==== คำกริยา ====
{{head|en|รูปกริยา}}
# {{inflection of|en|mic||ing-form}}
#: {{ux|en|She was '''micing''' up for the interview.}}
=== รากศัพท์ 2 ===
==== คำกริยา ====
{{head|en|รูปกริยา}}
# {{inflection of|en|mice||ing-form}}
hbnidfjeij1mxlalhzh9nh4tp9jodbq
5759341
5759339
2026-09-01T02:28:15Z
Octahedron80
267
/* รากศัพท์ 2 */
5759341
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ 1 ===
==== การออกเสียง ====
* {{IPA|en|/ˈmaɪ.kɪŋ/}}
* {{rhymes|en|aɪkɪŋ|s=2}}
==== คำกริยา ====
{{head|en|รูปกริยา}}
# {{inflection of|en|mic||ing-form}}
#: {{ux|en|She was '''micing''' up for the interview.}}
=== รากศัพท์ 2 ===
==== การออกเสียง ====
{{rfp|en}}
==== คำกริยา ====
{{head|en|รูปกริยา}}
# {{inflection of|en|mice||ing-form}}
mbgitzrbnlzof1cylunrsp8cawf2nuu
5759344
5759341
2026-09-01T02:30:16Z
Octahedron80
267
/* คำกริยา */
5759344
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ 1 ===
==== การออกเสียง ====
* {{IPA|en|/ˈmaɪ.kɪŋ/}}
* {{rhymes|en|aɪkɪŋ|s=2}}
==== คำกริยา ====
{{head|en|รูปกริยา}}
# {{inflection of|en|mic||ing-form}}
#: {{ux|en|She was '''micing''' up for the interview.|translation=เธอกำลังติดไมโครโฟนเพื่อเตรียมตัวสำหรับการสัมภาษณ์}}
=== รากศัพท์ 2 ===
==== การออกเสียง ====
{{rfp|en}}
==== คำกริยา ====
{{head|en|รูปกริยา}}
# {{inflection of|en|mice||ing-form}}
ic7epc17l19svjyhkxxn3dhspyl250r
miced
0
2358171
5759336
2026-09-01T02:19:57Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759336
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{IPA|en|/maɪkt/}}
* {{rhymes|en|aɪkt|s=1}}
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|mic||ed-form}}
=== คำสลับอักษร ===
* {{anagrams|en|a=cdeim|Medic|decim|demic|medic}}
0p1k0quuz0niookwr6ugsleq11zu2px
5759340
5759336
2026-09-01T02:26:11Z
Octahedron80
267
/* ภาษาอังกฤษ */ นำเข้าจาก enwikt เก็บกวาด
5759340
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ 1 ===
==== การออกเสียง ====
* {{IPA|en|/maɪkt/}}
* {{rhymes|en|aɪkt|s=1}}
==== คำกริยา ====
{{head|en|รูปกริยา}}
# {{inflection of|en|mic||ed-form}}
=== รากศัพท์ 2 ===
==== คำกริยา ====
{{head|en|รูปกริยา}}
# {{inflection of|en|mice||ed-form}}
=== คำสลับอักษร ===
* {{anagrams|en|a=cdeim|Medic|decim|demic|medic}}
3vyqtsj6ya6n89nn9ywx2p5hpbl78t4
5759342
5759340
2026-09-01T02:28:25Z
Octahedron80
267
/* รากศัพท์ 2 */
5759342
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ 1 ===
==== การออกเสียง ====
* {{IPA|en|/maɪkt/}}
* {{rhymes|en|aɪkt|s=1}}
==== คำกริยา ====
{{head|en|รูปกริยา}}
# {{inflection of|en|mic||ed-form}}
=== รากศัพท์ 2 ===
==== การออกเสียง ====
{{rfp|en}}
==== คำกริยา ====
{{head|en|รูปกริยา}}
# {{inflection of|en|mice||ed-form}}
=== คำสลับอักษร ===
* {{anagrams|en|a=cdeim|Medic|decim|demic|medic}}
5bavwj2zadd36sv3nil5xujmvesi4of
minces
0
2358172
5759338
2026-09-01T02:21:53Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759338
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== การออกเสียง ===
* {{audio|fr|LL-Q150 (fra)-WikiLucas00-minces.wav|a=<<France>> (<<Lyon>>)}}
=== คำคุณศัพท์ ===
{{head|fr|รูปคุณศัพท์}}
# {{plural of|fr|mince}}
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{IPA|en|/ˈmɪnsɪz/}}
* {{rhymes|en|ɪnsɪz|s=2}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|mince}}
=== คำกริยา ===
{{head|en|รูปกริยา}}
# {{inflection of|en|mince||s-verb-form}}
=== คำสลับอักษร ===
* {{anagrams|en|a=ceimns|cis men|cismen|cnemis|mnesic}}
rjnxuqgqif821gob8lw2pfedmfvran0
realities
0
2358173
5759345
2026-09-01T02:33:57Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759345
wikitext
text/x-wiki
== ภาษาโปรตุเกส ==
=== คำนาม ===
{{head|pt|รูปนาม}}
# {{plural of|pt|reality}}
== ภาษาสเปน ==
=== คำนาม ===
{{head|es|รูปนาม}}
# {{plural of|es|reality}}
{{C|es|ประเภทสื่อ}}
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{audio|en|en-us-realities.ogg|a=US}}
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|reality}}
#* {{quote-journal|en|date=2012-03
|author=William E. Carter; Merri Sue Carter
|title=The British Longitude Act Reconsidered
|volume=100|issue=2|page=87
|magazine=w:American Scientist
|url=http://www.americanscientist.org/issues/pub/the-british-longitude-act-reconsidered
|passage=But was it responsible governance to pass the Longitude Act without other efforts to protect British seamen? Or might it have been subterfuge—a disingenuous attempt to shift attention away from the '''realities''' of their life at sea.|translation=แต่มันคือการปกครองที่มีความรับผิดชอบแล้วหรือ ที่ผ่านพระราชบัญญัติลองจิจูดโดยไม่มีความพยายามอื่น ๆ ในการปกป้องกะลาสีเรือชาวอังกฤษ หรือมันอาจจะเป็นอุบาย—ความพยายามอันไม่จริงใจที่จะเบี่ยงเบนความสนใจไปจาก[[ความเป็นจริง]]ของชีวิตพวกเขาในทะเล}}
=== คำสลับอักษร ===
* {{anagrams|en|a=aeeiilrst|Israelite|resiliate}}
naglquqf9i2ch553dw2lv0071su73f3
geometries
0
2358174
5759346
2026-09-01T02:34:29Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759346
wikitext
text/x-wiki
== ภาษากาตาลา ==
=== คำนาม ===
{{head|ca|รูปนาม}}
# {{plural of|ca|geometria}}
== ภาษาอังกฤษ ==
=== คำนาม ===
{{head|en|รูปนาม}}
# {{plural of|en|geometry}}
=== คำสลับอักษร ===
* {{anagrams|en|a=eeegimorst|geometrise}}
d57z9uxyyia2l92z31ioyz3xn672jne
geometrise
0
2358175
5759347
2026-09-01T02:34:40Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759347
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== คำกริยา ===
{{en-verb}}
# {{alternative form of|en|geometrize}}
=== คำสลับอักษร ===
* {{anagrams|en|a=eeegimorst|geometries}}
ns8iiikabvu994dhmug4hqv5b6nu9fr
geometrize
0
2358176
5759348
2026-09-01T02:36:41Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759348
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{etymon|en|:af|geometry|-ize|tree=1|text=+}}
=== คำกริยา ===
{{en-verb}}
# {{lb|en|อกรรมกิริยา}} [[ใช้]]หรือ[[ประยุกต์]]ใช้[[เรขาคณิต]]
#* {{quote-book|en|
year=1780|
author=T. Fuller|
title=Exanthematologia|
page=xiv|
text=I do believe with all my Heart, that Nature doth Geometrize in all her Works.|
translation=ฉันเชื่อด้วยสุดหัวใจว่า ธรรมชาติใช้หลักเรขาคณิตในผลงานทั้งหมดของนาง}}
# {{lb|en|สกรรมกิริยา}} [[แปลง]]ให้อยู่ในรูปทางเรขาคณิต หรือ[[พิจารณา]]โดยใช้[[หลักการ]]ทางเรขาคณิต
#* {{quote-book|en|
title=A Student's Guide to Einstein's Major Papers|
date=Jan 19, 2012|
author=Robert E Kennedy|
page=222|
pageurl=https://books.google.com/books?id=bpPA1F2Ebs4C&pg=PA222&dq=geometrize&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwiHi_Ckr8KFAxWfv4kEHYLNBAk4ChDoAXoECAcQAg#v=onepage&q=geometrize&f=false|
text=If the special theory had unified electricity and magnetism, and if the general theory had '''geometrized''' gravity, should one not try next to unify and '''geometrize''' electromagnetism and gravity?|
translation=หากทฤษฎีสัมพัทธภาพพิเศษได้รวมเอาไฟฟ้าและแม่เหล็กเข้าด้วยกัน และหากทฤษฎีสัมพัทธภาพทั่วไปได้[[ทำให้แรงโน้มถ่วงอยู่ในรูปเรขาคณิต|ทำให้แรงโน้มถ่วงมีลักษณะทางเรขาคณิต]]แล้ว เราจะไม่ควรลองพยายามรวมและทำให้แม่เหล็กไฟฟ้ากับแรงโน้มถ่วงมีลักษณะทางเรขาคณิตเข้าด้วยกันต่อหรอ}}
==== ลูกคำ ====
{{col|en|geometrizable}}
6r5kowoi45k36rsjkburjk6pp96lff9
5759349
5759348
2026-09-01T02:37:00Z
Octahedron80
267
/* คำกริยา */
5759349
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{etymon|en|:af|geometry|-ize|tree=1|text=+}}
=== คำกริยา ===
{{en-verb}}
# {{lb|en|อกรรมกิริยา}} [[ใช้]]หรือ[[ประยุกต์]]ใช้[[เรขาคณิต]]
#* {{quote-book|en|
year=1780|
author=T. Fuller|
title=Exanthematologia|
page=xiv|
text=I do believe with all my Heart, that Nature doth Geometrize in all her Works.|
translation=ฉันเชื่อด้วยสุดหัวใจว่า ธรรมชาติใช้หลักเรขาคณิตในผลงานทั้งหมดของนาง}}
# {{lb|en|สกรรมกิริยา}} [[แปลง]]ให้อยู่ในรูปทางเรขาคณิต หรือ[[พิจารณา]]โดยใช้[[หลักการ]]ทางเรขาคณิต
#* {{quote-book|en|
title=A Student's Guide to Einstein's Major Papers|
date=Jan 19, 2012|
author=Robert E Kennedy|
page=222|
pageurl=https://books.google.com/books?id=bpPA1F2Ebs4C&pg=PA222&dq=geometrize&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwiHi_Ckr8KFAxWfv4kEHYLNBAk4ChDoAXoECAcQAg#v=onepage&q=geometrize&f=false|
text=If the special theory had unified electricity and magnetism, and if the general theory had '''geometrized''' gravity, should one not try next to unify and '''geometrize''' electromagnetism and gravity?|
translation=หากทฤษฎีสัมพัทธภาพพิเศษได้รวมเอาไฟฟ้าและแม่เหล็กเข้าด้วยกัน และหากทฤษฎีสัมพัทธภาพทั่วไปได้ทำให้แรงโน้มถ่วงมีลักษณะทางเรขาคณิตแล้ว เราจะไม่ควรลองพยายามรวมและทำให้แม่เหล็กไฟฟ้ากับแรงโน้มถ่วงมีลักษณะทางเรขาคณิตเข้าด้วยกันต่อหรอ}}
==== ลูกคำ ====
{{col|en|geometrizable}}
g7643iyyx3vyrztipmqzzel2thgvujb
5759350
5759349
2026-09-01T02:37:22Z
Octahedron80
267
/* คำกริยา */
5759350
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{etymon|en|:af|geometry|-ize|tree=1|text=+}}
=== คำกริยา ===
{{en-verb}}
# {{lb|en|อกรรมกริยา}} [[ใช้]]หรือ[[ประยุกต์]]ใช้[[เรขาคณิต]]
#* {{quote-book|en|
year=1780|
author=T. Fuller|
title=Exanthematologia|
page=xiv|
text=I do believe with all my Heart, that Nature doth Geometrize in all her Works.|
translation=ฉันเชื่อด้วยสุดหัวใจว่า ธรรมชาติใช้หลักเรขาคณิตในผลงานทั้งหมดของนาง}}
# {{lb|en|สกรรมกริยา}} [[แปลง]]ให้อยู่ในรูปทางเรขาคณิต หรือ[[พิจารณา]]โดยใช้[[หลักการ]]ทางเรขาคณิต
#* {{quote-book|en|
title=A Student's Guide to Einstein's Major Papers|
date=Jan 19, 2012|
author=Robert E Kennedy|
page=222|
pageurl=https://books.google.com/books?id=bpPA1F2Ebs4C&pg=PA222&dq=geometrize&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwiHi_Ckr8KFAxWfv4kEHYLNBAk4ChDoAXoECAcQAg#v=onepage&q=geometrize&f=false|
text=If the special theory had unified electricity and magnetism, and if the general theory had '''geometrized''' gravity, should one not try next to unify and '''geometrize''' electromagnetism and gravity?|
translation=หากทฤษฎีสัมพัทธภาพพิเศษได้รวมเอาไฟฟ้าและแม่เหล็กเข้าด้วยกัน และหากทฤษฎีสัมพัทธภาพทั่วไปได้ทำให้แรงโน้มถ่วงมีลักษณะทางเรขาคณิตแล้ว เราจะไม่ควรลองพยายามรวมและทำให้แม่เหล็กไฟฟ้ากับแรงโน้มถ่วงมีลักษณะทางเรขาคณิตเข้าด้วยกันต่อหรอ}}
==== ลูกคำ ====
{{col|en|geometrizable}}
bfixpcqb8s7rh6v33di3u0lhoaw6sbz
earmuffs
0
2358177
5759352
2026-09-01T02:43:58Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759352
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== การออกเสียง ===
* {{audio|en|en-us-earmuffs.ogg|a=US}}
=== คำนาม ===
{{en-noun|p|sg=earmuff}}
{{wp|lang=en}}
# [[อุปกรณ์]]ที่มีลักษณะคล้าย[[หูฟัง]] ออกแบบมาเพื่อ[[ครอบ]][[หู]]ของบุคคลสำหรับ[[ป้องกัน]][[ความหนาวเย็น]]หรือ[[เสียงรบกวน]] ประกอบด้วย[[สายคาด]][[ศีรษะ]]ทำจาก[[เทอร์โมพลาสติก]]หรือ[[โลหะ]] ซึ่งคาดไว้เหนือศีรษะ และมีแผ่น[[เบาะรอง]]ที่ปลายแต่ละข้างเพื่อครอบใบหู
=== ดูเพิ่ม ===
* {{l|en|earplug}}
3x4kbn22c7fcj0w6v9nlfqbyz0ckejp
corn flakes
0
2358178
5759353
2026-09-01T02:44:19Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759353
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== คำนาม ===
{{en-noun|p|sg=corn flake}}
# {{alternative spelling of|en|cornflakes}}
=== อ้างอิง ===
* {{pedia|corn flakes}}
* {{R:American Heritage 2000|corn flakes}}
* {{R:Dictionary.com|corn flakes}}
=== คำสลับอักษร ===
* {{anagrams|en|a=acefklnors|cloak ferns}}
tn76avwzqwas6b731umpokhnaqgzkko
Mäuse
0
2358179
5759354
2026-09-01T02:48:30Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759354
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
=== การออกเสียง ===
* {{IPA|de|/ˈmɔi̯zə/}}
* {{audio|de|De-Mäuse2.ogg|a=<<Germany>> (<<Berlin>>)}}
* {{audio|de|De-Mäuse.ogg|a=Germany}}
* {{audio|de|De-at-Mäuse.ogg|a=Austria}}
=== คำนาม ===
{{head|de|รูปนาม|g=f-p}}
# {{inflection of|de|Maus||nom//acc//gen|p|t=mouse}}
=== คำนาม ===
{{de-noun|fp}}
# {{lb|de|slang}} [[เงินตรา]]<!--, [[dough]] {{gloss|money}} -->
#: {{syn|de|อรรถาภิธาน:Geld}}
#: {{syn|de|Kohle|[[Kröte]]n}}
==== การผันรูป ====
{{de-ndecl|fp}}
qo63fp36cd7cu4yvwg05ee1wwklix63
5759355
5759354
2026-09-01T02:48:41Z
Octahedron80
267
/* คำนาม */
5759355
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
=== การออกเสียง ===
* {{IPA|de|/ˈmɔi̯zə/}}
* {{audio|de|De-Mäuse2.ogg|a=<<Germany>> (<<Berlin>>)}}
* {{audio|de|De-Mäuse.ogg|a=Germany}}
* {{audio|de|De-at-Mäuse.ogg|a=Austria}}
=== คำนาม ===
{{head|de|รูปนาม|g=f-p}}
# {{inflection of|de|Maus||nom//acc//gen|p|t=หนู}}
=== คำนาม ===
{{de-noun|fp}}
# {{lb|de|slang}} [[เงินตรา]]<!--, [[dough]] {{gloss|money}} -->
#: {{syn|de|อรรถาภิธาน:Geld}}
#: {{syn|de|Kohle|[[Kröte]]n}}
==== การผันรูป ====
{{de-ndecl|fp}}
7w15lb97sztqzaq5wdm0y1d4nnvpli2
muizen
0
2358180
5759356
2026-09-01T02:49:04Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759356
wikitext
text/x-wiki
== ภาษาดัตช์ ==
=== การออกเสียง ===
* {{audio|nl|Nl-muizen.ogg}}
* {{rhymes|nl|œy̯zən|s=2}}
=== คำนาม ===
{{head|nl|รูปนาม}}
# {{plural of|nl|muis}}
38v1cak9ubjbn73n7e6az5ao098tyri
mûzen
0
2358181
5759357
2026-09-01T02:49:12Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759357
wikitext
text/x-wiki
== ภาษาฟรีเชียตะวันตก ==
=== คำนาม ===
{{head|fy|รูปนาม}}
# {{plural of|fy|mûs}}
9ta20fsxuu1ds4b79fewrp3m686qnqe
mýs
0
2358182
5759358
2026-09-01T02:49:19Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759358
wikitext
text/x-wiki
== ภาษาไอซ์แลนด์ ==
=== คำนาม ===
{{head|is|รูปนาม}}
# {{inflection of|is|mús||indef|nom|pl}}
# {{inflection of|is|mús||indef|acc|pl}}
36qxwke6rievjjjkpe347ssyzztxji8
myce
0
2358183
5759359
2026-09-01T02:50:03Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759359
wikitext
text/x-wiki
== ภาษาอังกฤษกลาง ==
=== คำกริยา ===
{{head|enm|คำกริยา|var=1}}
# {{alternative form of|enm|mincen}}
cz3p78a9d4oujxsnnfas0nxgvuk6x55
geometria
0
2358184
5759378
2026-09-01T06:12:59Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759378
wikitext
text/x-wiki
== ภาษากาตาลา ==
=== รากศัพท์ ===
{{bor+|ca|la|geōmetria}}, จาก{{der|ca|grc|-}}
=== การออกเสียง ===
* {{ca-IPA}}
* {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-geometria.wav|a=Catalonia}}
=== คำนาม ===
{{ca-noun|f}}
# [[เรขาคณิต]]
==== คำเกี่ยวข้อง ====
* {{l|ca|geomètric}}
=== อ่านเพิ่ม ===
* {{R:ca:IEC2}}
* {{R:ca:GDLC}}
* {{R:ca:DNV}}
* {{R:ca:DCVB}}
== ภาษากาลิเซีย ==
=== คำนาม ===
{{gl-reinteg-noun|f}}
# {{gl-reinteg sp|xeometría}}
=== อ่านเพิ่ม ===
* {{R:gl:Estraviz}}
== ภาษาโปรตุเกส ==
=== รากศัพท์ ===
{{bor+|pt|la|geometria}}, จาก{{der|pt|grc|-}}
=== การออกเสียง ===
{{pt-IPA}}
=== คำนาม ===
{{pt-noun|f}}
# {{lb|pt|mathematics}} [[เรขาคณิต]]
=== อ่านเพิ่ม ===
* {{R:pt:Aulete}}
* {{R:pt:DAN}}
* {{R:pt:Priberam}}
== ภาษาโปแลนด์ ==
{{wp|pl:}}
=== รากศัพท์ ===
{{ety|pl|:lbor|la:geōmetria|text=+|tree=1}} {{surf|pl|geo-|-metria}}
=== การออกเสียง ===
{{pl-pr|a=Pl-geometria.ogg}}
=== คำนาม ===
{{pl-noun|f|adj=geometryczny}}
# {{lb|pl|geometry}} [[เรขาคณิต]]
==== การผันรูป ====
{{pl-decl-noun-f|tantum=s}}
=== อ่านเพิ่ม ===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
== ภาษาฟินแลนด์ ==
{{wp|fi:}}
=== รากศัพท์ ===
{{internationalism|fi}} (ดูที่ {{cog|en|geometry}}), แรกสุดจาก{{der|fi|la|geōmetria}}, จาก{{der|fi|grc|-}}
=== การออกเสียง ===
{{fi-pronunciation|geo-metria}}
=== คำนาม ===
{{fi-noun}}
# [[เรขาคณิต]]
==== การผันรูป ====
{{fi-decl-kulkija|geometri|a}}
==== ลูกคำ ====
{{col|fi|title=compounds
|avaruusgeometria
|differentiaaligeometria
|fraktaaligeometria
|molekyyligeometria
|tasogeometria
}}
=== อ่านเพิ่ม ===
* {{R:fi:KTSK|accessdate=2023-07-02}}
{{cln|fi|terms suffixed with -metria}}
{{C|fi|เรขาคณิต|คณิตศาสตร์}}
== ภาษาละติน ==
{{wp|la:}}
=== รากศัพท์ ===
{{etymon|la|title=geōmetria|:der|grc:γεωμετρῐ́ᾱ}}
จาก{{der|la|grc|γεωμετρία||เรขาคณิต, การรังวัดที่ดิน}}, จาก{{m|grc|γεωμετρέω||ฝึกฝนหรือเชี่ยวชาญในเรขาคณิต, วัด, รังวัดที่ดิน}}, ผันรูปย้อนกลับจาก {{m|grc|γεωμέτρης||ผู้รังวัดที่ดิน}}, จาก{{m|grc|γῆ||ดิน, ที่ดิน, ประเทศ}} + {{m|grc|μετρέω||วัด, นับ}} หรือ {{m|grc|-μετρία||การวัด}}, จาก{{m|grc|μέτρον||หน่วยวัด}}
=== การออกเสียง ===
* {{la-IPA|geōmetria}}
=== คำนาม ===
{{la-noun|geōmetria<1>}}
# {{lb|la|mathematics}} [[เรขาคณิต]]
==== การผันรูป ====
{{la-ndecl|geōmetria<1>}}
==== คำเกี่ยวข้อง ====
* {{l|la|geōmetrēs}}
* {{l|la|geōmetricus}}
==== คำสืบทอด ====
* {{desc|ast|xeometría}}
* {{desc|ca|geometria}}
* {{desc|en|geometry}}
* {{desc|eo|geometrio}}
* {{desc|gl|xeometría}}
* {{desc|hu|geometria}}
* {{desc|it|geometria}}
* {{desc|scn|giumitrìa}}
* {{desc|es|geometría}}
* {{desc|pl|geometria}}
* {{desc|pt|geometria}}
* {{desc|sk|geometria}}
=== อ้างอิง ===
* {{R:la:L&S}}
* {{R:la:Elementary Lewis}}
* {{R:la:M&A}}
{{cln|la|terms prefixed with geo-|terms suffixed with -metria}}
{{c|la|คณิตศาสตร์|เรขาคณิต|Surveying}}
== ภาษาสโลวัก ==
=== รากศัพท์ ===
จาก{{der|sk|la|geometria}}, จาก{{der|sk|grc|-}}
=== การออกเสียง ===
* {{sk-IPA|t=loan|r=1|h=1}}
=== คำนาม ===
{{sk-noun|f|adj=geometrický}}
# [[เรขาคณิต]]
==== การผันรูป ====
{{sk-ndecl|f|n=sg}}
=== อ่านเพิ่ม ===
* {{R:sk:SDK}}
{{C|sk|เรขาคณิต}}
== ภาษาอิตาลี ==
{{wp|it:}}
=== รากศัพท์ ===
จาก{{der|it|la|geōmetria}}, จาก{{der|it|grc|γεωμετρία||เรขาคณิต, การรังวัดที่ดิน}}, จาก{{m|grc|γεωμετρέω||ฝึกฝนหรือเชี่ยวชาญในเรขาคณิต, วัด, รังวัดที่ดิน}}, จาก{{m|grc|γαία||ดิน, ที่ดิน, ประเทศ}} + {{m|grc|μετρέω||วัด, นับ}}
=== การออกเสียง ===
{{it-pr|geometrìa|giometrìa<pre:{{q|proscribed}}><rhyme:->}}
=== คำนาม ===
{{it-noun|f}}
# [[เรขาคณิต]]
# [[โครงสร้าง]]
#: {{syn|it|struttura}}
==== ลูกคำ ====
* {{l|it|geometrico}}
=== อ่านเพิ่ม ===
* {{R:it:Treccani}}
=== คำสลับอักษร ===
* {{anagrams|it|a=aeegimort|agiteremo|eterogami|geotermia|megaterio}}
{{C|it|เรขาคณิต}}
== ภาษาอุตซิตา ==
=== การออกเสียง ===
* {{audio|oc|LL-Q14185 (oci)-Davidgrosclaude-geometria.wav|a=Béarn}}
* {{audio|oc|LL-Q942602-Davidgrosclaude-geometria.wav|a=Languedocien}}
{{rfp|oc}}
=== คำนาม ===
{{oc-noun|f}}
# [[เรขาคณิต]]
==== คำเกี่ยวข้อง ====
* {{l|oc|geometric}}
== ภาษาเอสเปรันโต ==
=== รากศัพท์ ===
{{ety|eo|:af|geometrio<t:geometry>|-a<pos:adjectival suffix>|text=+|tree=1}}
=== การออกเสียง ===
{{eo-pr|a=LL-Q143 (epo)-Lepticed7-geometria.wav}}
=== คำคุณศัพท์ ===
{{eo-head}}
# เชิง[[เรขาคณิต]]
=== อ่านเพิ่ม ===
* {{R:eo:PIV 2020}}
* {{R:eo:ReVo}}
== ภาษาฮังการี ==
{{swp|hu:}}
=== รากศัพท์ ===
{{bor+|hu|la|geometria}}, จาก{{der|hu|grc|γεωμετρία||เรขาคณิต, การรังวัดที่ดิน}}<ref>{{R:TotfalusiEty 2005}}</ref>
=== การออกเสียง ===
* {{hu-IPA}}
* {{hyphenation|hu|ge|o|met|ria}}
* {{rhymes|hu|jɒ|s=5}}
=== คำนาม ===
{{hu-noun|-|pl=geometriák}}
# [[เรขาคณิต]]
#: {{syn|hu|mértan}}
==== การผันรูป ====
{{hu-infl-nom|geometriá|o}}{{hu-pos-tok|geometriá}}
==== ลูกคำ ====
{{col4|hu
|geometriai
}}
{{col4|hu|title=Compound words
|differenciálgeometria
|geometriakönyv
|geometriaóra
|geometriatanár
}}
{{col3|hu|title=Expressions
|ábrázoló geometria
|affin geometria
|algebrai geometria
|analitikus geometria
|euklideszi geometria
|gömbi geometria
|nemeuklideszi geometria
}}
=== อ้างอิง ===
{{reflist}}
=== อ่านเพิ่ม ===
* {{R:ErtSz}}
{{topics|hu|เรขาคณิต}}
anaia4wndevxom1flw60nyhh67b4fcs
geometrias
0
2358185
5759379
2026-09-01T06:13:22Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759379
wikitext
text/x-wiki
== ภาษาโปรตุเกส ==
=== คำนาม ===
{{head|pt|รูปนาม}}
# {{plural of|pt|geometria}}
== ภาษาละติน ==
=== คำนาม ===
{{head|la|รูปนาม|head=geōmetriās}}
# {{inflection of|la|geōmetria||acc|p}}
4n5xtvohefozr3p6hu8jz849w52v1h4
มอดูล:sk-pron
828
2358186
5759382
2026-09-01T06:17:01Z
Octahedron80
267
สร้างหน้าด้วย "local export = {} -- ============================================================================= -- [[ DATA TABLES ]] -- ============================================================================= -- [[ 1. Phonological Sets ]] -- local diphthongs_set = { ["ia"]=true, ["ie"]=true, ["iu"]=true, ["ô"]=true } local bigraphs_set = { ["ch"]=true, ["dz"]=true, ["dž"]=true } -- Combined Vowels (Short & Long + Foreign) local vowels_set = { ["a"]=t..."
5759382
Scribunto
text/plain
local export = {}
-- =============================================================================
-- [[ DATA TABLES ]]
-- =============================================================================
-- [[ 1. Phonological Sets ]] --
local diphthongs_set = {
["ia"]=true, ["ie"]=true, ["iu"]=true, ["ô"]=true
}
local bigraphs_set = {
["ch"]=true, ["dz"]=true, ["dž"]=true
}
-- Combined Vowels (Short & Long + Foreign)
local vowels_set = {
["a"]=true, ["e"]=true, ["i"]=true, ["o"]=true, ["u"]=true, ["y"]=true,
["ä"]=true, ["ö"]=true, ["ü"]=true,
["á"]=true, ["é"]=true, ["í"]=true, ["ó"]=true, ["ú"]=true, ["ý"]=true,
["ő"]=true, ["ű"]=true
}
-- Voicing & Sonorants
local sonorants = {
['m']=true, ['n']=true, ['ň']=true, ['l']=true, ['ľ']=true, ['ĺ']=true,
['r']=true, ['ŕ']=true, ['j']=true, ['v']=true
}
local voiced_paired = {
['b']=true, ['d']=true, ['ď']=true, ['g']=true, ['dz']=true,
['dž']=true, ['h']=true, ['z']=true, ['ž']=true, ['w']=true
}
local voiceless_paired = {
['p']=true, ['t']=true, ['ť']=true, ['k']=true, ['c']=true,
['č']=true, ['ch']=true, ['s']=true, ['š']=true, ['f']=true
}
local voicing_map = {
-- Voiced to Voiceless
['b']='p', ['d']='t', ['ď']='ť', ['g']='k', ['dz']='c', ['dž']='č',
['h']='ch', ['w']='f', ['z']='s', ['ž']='š',
-- Voiceless to Voiced
['p']='b', ['t']='d', ['ť']='ď', ['k']='g', ['c']='dz', ['č']='dž',
['ch']='h', ['f']='w', ['s']='z', ['š']='ž'
}
-- [[ 2. Assimilation & Encoding ]] --
local dental_mergers = {
['z']='dzdz', ['dz']='dzdz', ['s']='cc', ['c']='cc',
['ž']='dždž', ['dž']='dždž', ['š']='čč', ['č']='čč'
}
-- Mergers: Encodes t.s -> 15, d.z -> 26, etc.
local c1_enc = {['t']=1, ['d']=2, ['ť']=3, ['ď']=4}
local c2_enc = {
['c']=1, ['dz']=2, ['č']=3, ['dž']=4, ['s']=5, ['z']=6, ['š']=7, ['ž']=8
}
-- Decoding: Used by IPA renderer to convert "15" -> t.ts
local c1_dec = { 't', 'd', 'c', 'ɟ' }
local c2_dec = { 't͡s', 'd͡z', 't͡ʃ', 'd͡ʒ', 's', 'z', 'ʃ', 'ʒ' }
-- [[ 3. Morphological & Lexical Exceptions ]] --
local prefixes = {
['pod']=true, ['ob']=true, ['od']=true, ['ráz']=true, ['roz']=true,
['bez']=true, ['ab']=true, ['vz']=true, ['pred']=true, ['nad']=true
}
local prepositions_set = {
["bez"]=true, ["cez"]=true, ["do"]=true, ["k"]=true, ["ku"]=true,
["na"]=true, ["nad"]=true, ["o"]=true, ["od"]=true, ["po"]=true,
["pod"]=true, ["pre"]=true, ["pred"]=true, ["pri"]=true, ["s"]=true,
["so"]=true, ["u"]=true, ["v"]=true, ["vo"]=true, ["z"]=true,
["za"]=true, ["zo"]=true
}
local clitics = {
["byť"]=true, ["som"]=true, ["si"]=true, ["je"]=true, ["sme"]=true,
["ste"]=true, ["sú"]=true, ["bol"]=true, ["mi"]=true, ["ti"]=true,
["mu"]=true, ["jej"]=true, ["ma"]=true, ["ťa"]=true, ["sa"]=true,
["ho"]=true, ["ju"]=true, ["nám"]=true, ["vám"]=true, ["im"]=true,
["nás"]=true, ["vás"]=true, ["ich"]=true, ["ten"]=true, ["tá"]=true,
["to"]=true, ["on"]=true, ["a"]=true, ["i"]=true, ["aj"]=true,
["že"]=true, ["keď"]=true, ["až"]=true, ["len"]=true, ["či"]=true,
["kde"]=true, ["ba"]=true, ["ak"]=true, ["už"]=true, ["by"]=true
}
local preposition_blockers = {
['mnou']=true, ['mne']=true, ['tebou']=true, ['ňou']=true,
['ním']=true, ['nami']=true, ['vami']=true, ['nimi']=true,
['tebe']=true, ['nemu']=true, ['nej']=true, ['nám']=true,
['vám']=true, ['nim']=true
}
-- [[ 4. IPA Output Maps ]] --
local ipa_map = {
-- Vowels
['a']='a', ['á']='aː', ['ä']='æ', ['e']='e', ['é']='eː',
['i']='i', ['í']='iː', ['o']='ɔ', ['ó']='ɔː', ['ô']='u̯ɔ',
['u']='u', ['ú']='uː', ['y']='i', ['ý']='iː', ['ö']='ø',
['ő']='øː', ['ü']='y', ['ű']='yː',
-- Consonants
['b']='b', ['c']='t͡s', ['č']='t͡ʃ', ['d']='d', ['ď']='ɟ',
['g']='ɡ', ['h']='ɦ', ['j']='j', ['k']='k', ['l']='l',
['ľ']='ʎ', ['m']='m', ['n']='n', ['ň']='ɲ', ['p']='p',
['r']='r', ['ř']='r̝', ['ŕ']='r̩ː', ['ĺ']='l̩ː', ['s']='s',
['š']='ʃ', ['t']='t', ['ť']='c', ['z']='z', ['ž']='ʒ',
['x']='x',
-- Special
['v']='v', ['w']='w', ['F']='F', ['f']='f', ['ů']='ů', ["'"]='ˈ',
-- Digraphs/Multigraphs
['dz']='d͡z', ['dž']='d͡ʒ', ['ch']='x', ['dzdz']='d͡zː', ['dždž']='d͡ʒː',
['ia']='ɪ̯a', ['ie']='ɪ̯e', ['iu']='ɪ̯u'
}
local variant_map = {
["H"]={"ɣ","ɦ"}, ["W"]={"ʋ","v"}, ["U"]={"u̯","ʋ"},
["J"]={"ɪ̯","j"}, ["N"]={"n","n̠"}
}
-- Module-level state variables
local IS_MO_VARIANT = false
local NAMESPACE = ""
local PAGENAME = ""
local LOAN = 0
local HARD_SUFFIX = 0
local AS_IMP = 0
-- =============================================================================
-- [[ HELPER FUNCTIONS ]]
-- =============================================================================
function get_voiced_counterpart(char) return voicing_map[char] end
-- Tokenizer (Preserves digraphs)
function get_graphemes(word)
local units = {}
local len = mw.ustring.len(word)
local i = 1
local is_loan = (LOAN == 1)
while i <= len do
local two_char = mw.ustring.sub(word, i, i + 1)
if bigraphs_set[two_char] or (diphthongs_set[two_char] and not is_loan) then
table.insert(units, two_char)
i = i + 2
else
table.insert(units, mw.ustring.sub(word, i, i))
i = i + 1
end
end
return units
end
-- Resolve Cluster (Contact Assimilation Logic)
function resolve_cluster(c1, c2, is_boundary)
-- GUARD: v/f complex logic
if c1 == 'v' or c1 == 'f' then return nil end
-- 1. SPECIAL: <h> or <ch> logic
if c1 == 'ch' or c1 == 'h' then
if (voiced_paired[c2] or sonorants[c2]) and is_boundary then return 'H' .. c2 end
end
-- 2. Standard Assimilation
local c1_new = c1
if (voiceless_paired[c1] and (voiced_paired[c2] or (is_boundary and (sonorants[c2] or vowels_set[c2]))))
or (voiced_paired[c1] and voiceless_paired[c2]) then
c1_new = voicing_map[c1] or c1
end
-- 3. Mergers & Gemination
if c1_enc[c1_new] and dental_mergers[c2] then
if is_boundary then
local d1, d2 = c1_enc[c1_new], c2_enc[c2]
if d1 and d2 then return d1 .. d2 end
end
return dental_mergers[c2]
end
if c1_new ~= c1 then return c1_new .. c2 end
return nil
end
function apply_assimilation(tokens, i, j, is_boundary)
if IS_MO_VARIANT and i == #tokens - 3 then return end
local res = resolve_cluster(tokens[i], tokens[j], is_boundary)
if res then
local res_tokens = get_graphemes(res)
if #res_tokens == 2 then
tokens[i] = res_tokens[1]; tokens[j] = res_tokens[2]
elseif #res_tokens == 1 then
tokens[i] = res_tokens[1]; tokens[j] = ""
end
end
end
-- Syllable Splitter
function split_into_syllables(word)
local units = get_graphemes(word)
local nuc, syl, len = {}, {}, #units
-- Helper: Check if index k is a Nucleus
local function is_nuc(k)
local u = units[k]; if not u then return false end
if diphthongs_set[u] or vowels_set[u] then return true end
if not (u=='r' or u=='l' or u=='ŕ' or u=='ĺ') then return false end
-- Check neighbors (skipping non-phonemic chars)
local function v(i, d)
while i>0 and i<=len do
local t=units[i]
if vowels_set[t] or diphthongs_set[t] then return true end
if t~="'" and t~="-" and t~=" " and t~="_" then return false end
i=i+d
end
end
return not (v(k-1, -1) or v(k+1, 1))
end
for i=1,len do if is_nuc(i) then table.insert(nuc, i) end end
if #nuc==0 then return {table.concat(units)} end
local start = 1
for k = 1, #nuc - 1 do
local curr, next_n = nuc[k], nuc[k+1]
local split = curr -- Default: Split after vowel (V-CV)
local c_cnt, first_c = 0, nil
for j = curr + 1, next_n - 1 do
local c = units[j]
if c=="-" or c==" " then split=j; c_cnt=-1; break -- 1. Hard Boundary
elseif c=="'" then split=j-1; c_cnt=-1; break -- 2. Stress Boundary
elseif c~="." then c_cnt=c_cnt+1; first_c = first_c or j end
end
if c_cnt >= 2 then split = first_c end -- 3. Cluster Rule (VC-CV)
table.insert(syl, table.concat(units, "", start, split))
start = split + 1
end
table.insert(syl, table.concat(units, "", start))
return syl
end
-- [[ Core IPA Transformation Logic ]] --
local function ipa_transform_worker(word)
-- 1. Preprocess: Strip punctuation but map boundaries
local bound, idx = {}, 0
word = mw.ustring.gsub(word, ".", function(c)
if c == "-" or c == "." then bound[idx] = true; return "" end
idx = idx + 1
end) -- Returns cleaned word, populates 'bound'
local sub = mw.ustring.sub
local w_len, res, i = idx, {}, 1
local function is_C(c)
return not c or c == "" or (not vowels_set[c] and not diphthongs_set[c])
end
while i <= w_len do
local c1 = sub(word, i, i)
if c1 == "+" then
i = i + 1
else
local nxt = sub(word, i+1, i+1)
local c2_raw = (nxt == "+") and sub(word, i+2, i+2) or nxt
local c2, c4 = c1 .. c2_raw, sub(word, i, i+3)
local jump = (nxt == "+") and 1 or 0
local sym, step, raw = nil, 1, c1
if c4 == "dzdz" or c4 == "dždž" then
sym, step, raw = ipa_map[c4], 4, c4
elseif (c1 == c2_raw or c2 == "čš") and ipa_map[c1] and not vowels_set[c1] then
sym, step, raw = ipa_map[c1] .. "ː", 2 + jump, c1
elseif (ipa_map[c2] and not diphthongs_set[c2])
or (diphthongs_set[c2] and (LOAN~=1 or jump>0) and not bound[i]) then
sym, step, raw = ipa_map[c2], 2 + jump, c2 -- treat as diphthong only if native or explicitly marked with +
else
sym = ipa_map[c1] or c1
end
if sym then
if (raw=='r' or raw=='l') and is_C(i>1 and sub(word,i-1,i-1)) and is_C(sub(word,i+step,i+step)) then
sym = sym .. '̩' -- mark liquid as syllabic if sandwiched between non-vowels
end
table.insert(res, sym)
end
i = i + step
end
end
local out = table.concat(res)
-- Post-processing for loanword endings (-ovan-)
if LOAN == 1 then
local sfx = mw.ustring.match(word, ".*ovan(.+)$")
if sfx then
local m = ipa_map
local fix = {
["ie"]=m["ie"], ["ia"]=m["ia"], ["iu"]=m["iu"],
["í"]=m["í"], ["ím"]=m["í"]..(m["m"] or 'm'),
["iam"]=m["ia"]..(m["m"] or 'm'), ["iach"]=m["ia"]..(m["x"] or 'x'),
["iami"]=m["ia"]..(m["m"] or 'm')..(m["i"] or 'i')
}
if fix[sfx] then
local bad = (m["n"] or 'n') .. sfx:gsub(".", function(c) return m[c] or c end)
out = mw.ustring.gsub(out, bad:gsub("[%p]", "%%%0") .. "$", (m['ň'] or 'ɲ') .. fix[sfx]) -- correct [n] to [ň] before soft vowels in loan suffixes
end
end
end
return out
end
-- [[ 2. STAGE 2: PHONETIC RESOLVER ]] --
function resolve_phonetic_base(base_text)
local res = {}
local len = mw.ustring.len(base_text)
local i = 1
-- Map for standard phonetic realization
local map = { ['v']='ʋ', ['w']='v', ['F']='v', ['f']='f', ['ů']='u̯', ['I']='ɪ̯' }
local sub = mw.ustring.sub -- Local ref
while i <= len do
local c = sub(base_text, i, i)
local symbol = map[c] or c
local next_c = (i < len) and sub(base_text, i+1, i+1) or ""
local next_resolved = map[next_c] or next_c
-- Apply FULL Nasal Assimilation
if c == 'm' then
if next_resolved == 'f' or next_resolved == 'v' or next_resolved == 'ʋ' then symbol = 'ɱ' end
elseif c == 'n' then
if next_resolved == 'k' or next_resolved == 'ɡ' then symbol = 'ŋ'
elseif next_resolved == 's' or next_resolved == 'z' or next_resolved == 'ʃ' or next_resolved == 'ʒ' then symbol = 'N'
elseif next_resolved == 'x' then symbol = 'ɰ̃'
elseif next_resolved == 'p' or next_resolved == 'b' then symbol = 'm' end
end
table.insert(res, symbol)
i = i + 1
end
return table.concat(res)
end
-- [[ 3. FINAL GENERATION ]] --
local function expand_variants(txt)
local find, sub, gsub = mw.ustring.find, mw.ustring.sub, mw.ustring.gsub
-- 1. Digits: Binary Branch (All-Split vs All-Merged)
if find(txt, "%d[ˈ%s_]*%d") then
local res = {}
for m = 1, 2 do
local s = gsub(txt, "(%d)([ˈ%s_]*)(%d)", function(d1, sep, d2)
d1, d2 = tonumber(d1), tonumber(d2)
if m == 1 then -- Split (Unassimilated)
local f = ((d1+d2)%2==1) and (d1 + (d2%2==0 and 1 or -1)) or d1
return (c1_dec[f] or "") .. sep .. (c2_dec[d2] or "")
else -- Merged (Assimilated)
local c = c2_dec[d2>4 and d2-4 or d2] or ""
-- If stressed: Unreleased + Short (t̚ ˈt͡s). If not: Long (t͡sː)
return find(sep, "ˈ") and (sub(c,1,1).."̚ ˈ"..c) or (c.."ː")
end
end)
for _, v in ipairs(expand_variants(s)) do table.insert(res, v) end
end
return res
end
-- 2. Letters: Recursive Expansion (HWUJN)
local s, e, k = find(txt, "([HWUJN])")
if not s then return {txt} end -- Base case
local res, h, t = {}, sub(txt, 1, s-1), sub(txt, e+1)
for _, r in ipairs(variant_map[k]) do
for _, sub in ipairs(expand_variants(h..r..t)) do table.insert(res, sub) end
end
return res
end
local function format_ipa_output(res, frame)
local distinct = table.concat(res.high) ~= table.concat(res.low)
local args = { "sk", "/" .. res.phonemic .. "/" }
local function add(list, tag)
for i, ipa in ipairs(list) do
local qs = {}
if distinct and tag and i == 1 then table.insert(qs, tag) end
if mw.ustring.find(ipa, "ɦ ?ˈ?ɦ") then table.insert(qs, "rare") end
local q = #qs > 0 and "<q:" .. table.concat(qs, ", ") .. ">" or ""
table.insert(args, "[" .. ipa .. "]" .. q)
end
end
add(res.high, "high register")
if distinct then add(res.low, "common") end
return frame:expandTemplate{ title = "IPA", args = args }
end
local function get_ipa_nuclei(ipa)
local s = mw.ustring.gsub(ipa, "[/ %[%]ˈ%.]", "")
local nuclei, skip, sub = {}, 0, mw.ustring.sub
mw.ustring.gsub(s, "()([rluɪaæeiɔuøy])", function(p, c)
if p < skip then return end
local nuc, len = nil, 1
local nxt = sub(s, p+1, p+1)
if (c=="r" or c=="l") and nxt=="̩" then
len = (sub(s, p+2, p+2)=="ː") and 3 or 2
nuc = sub(s, p, p+len-1)
elseif (c=="u" or c=="ɪ") and nxt=="̯" then
len = 3; nuc = sub(s, p, p+2)
elseif mw.ustring.find(c, "[aæeiɔuøy]") then
if sub(s, p+1, p+2) == "u̯" then len = 3; nuc = sub(s, p, p+2)
else len = (nxt=="ː") and 2 or 1; nuc = sub(s, p, p+len-1) end
end
if nuc then table.insert(nuclei, {ipa=nuc, s=p, e=p+len-1}); skip = p+len end
end)
return nuclei, s
end
local function format_rhymes(frame, nuclei, s)
local c = #nuclei
if c == 0 then return "" end
local rhyme = mw.ustring.sub(s, (c > 1 and nuclei[c-1] or nuclei[1]).s)
return "\n*" .. frame:expandTemplate{title="rhymes", args={"sk", rhyme, s=c}}
end
local function format_hyphenation(word, ipa, frame, respelling, nuclei)
if #nuclei <= 1 then return "" end
local sub, find, lower, len = mw.ustring.sub, mw.ustring.find, mw.ustring.lower, mw.ustring.len
local w_lower = lower(word)
-- 1. Parse Respelling (Boundaries & Forbidden Nuclei)
local forced, forbidden, idx, last = {}, {}, 0, ""
if respelling then
local clean_check = mw.ustring.gsub(lower(respelling), "[%.%-%+]", "")
if clean_check == w_lower then
for i = 1, len(respelling) do
local c = sub(respelling, i, i)
if c == "+" then
if last ~= "i" and last ~= "í" then forbidden[idx + 1] = true end
elseif c:match("[%.%-]") then
if idx > 0 then forced[idx] = true end
else
idx = idx + 1; last = lower(c)
end
end
end
end
local map = {
['a']='a', ['aː']='á', ['æ']='ä', ['e']='e', ['eː']='é',
['i']='[iy]', ['iː']='[íý]', ['o']='o', ['oː']='ó', ['ɔ']='o', ['ɔː']='ó',
['u']='u', ['uː']='ú', ['u̯ɔ']='ô', ['ɔu̯']='ou',
['ø']='ö', ['øː']='ő', ['y']='ü', ['yː']='ű',
['ɪ̯a']='ia', ['ɪ̯e']='ie', ['ɪ̯u']='iu',
['r̩']='r', ['r̩ː']='ŕ', ['l̩']='l', ['l̩ː']='ĺ'
}
-- Helper: Find next valid nucleus (skips forbidden off-glides)
local function get_nuc(pat, start)
while true do
local s, e = find(w_lower, pat, start)
if not s or not forbidden[s] then return s, e end
start = s + 1
end
end
local args, pos = {"sk"}, 1
local seg_start = 1
for i = 1, #nuclei do
local s, e = get_nuc(map[nuclei[i].ipa] or ".", pos)
if not s then return "" end
if i < #nuclei then
local s2, _ = get_nuc(map[nuclei[i+1].ipa] or ".", e + 1)
if not s2 then return "" end
-- Default: Split before last consonant (V-CV) or between consonants (VC-CV)
local clust = sub(w_lower, e+1, s2-1)
-- If cluster has space, DO NOT split.
if find(clust, " ") then
pos = e + 1
else
local c_len = len(clust)
local off = 0
if c_len >= 2 then
local dig = sub(clust, 1, 2)
off = (dig == "ch" or dig == "dz" or dig == "dž") and (c_len > 2 and 2 or 0) or 1
end
for k = e, s2 - 1 do
if forced[k] then off = k - e; break end
end
table.insert(args, sub(word, seg_start, e + off))
seg_start = e + off + 1
pos = e + off + 1
end
else
table.insert(args, sub(word, seg_start))
end
end
return "\n*" .. frame:expandTemplate{title="hyph", args=args}
end
-- =============================================================================
-- [[ PROCESSING STEPS ]]
-- =============================================================================
function step_foreign_graphemes(word)
word = mw.ustring.lower(word)
word = mw.ustring.gsub(word, "ů", "ú")
word = mw.ustring.gsub(word, "x", "ks")
word = mw.ustring.gsub(word, "w", "v")
word = mw.ustring.gsub(word, "qu", "kv")
word = mw.ustring.gsub(word, "[,']", "")
return word
end
function step_softening(w)
if LOAN == 1 then return w end
local soft = {['d']='ď',['t']='ť',['n']='ň',['l']='ľ'}
local sub = mw.ustring.sub
local res = {}
for i = 1, mw.ustring.len(w) do
local c = sub(w, i, i)
local s = false
if soft[c] then
local n1 = sub(w, i+1, i+1)
local n2 = sub(w, i+1, i+2)
if n2=="ia" or n2=="ie" or n2=="iu" then
s = true
elseif n1=="i" or n1=="í" or n1=="e" then
s = true
if HARD_SUFFIX == 1 then
local function E(k)
local x = sub(w,k,k); return x=="" or x==" "
end
local n3 = sub(w, i+1, i+3)
if (n1=="i" or n1=="í" or n1=="e") and E(i+2) then s = false
elseif n2=="ej" and E(i+3) then s = false
elseif (n3=="eho" or n3=="emu") and E(i+4) then s = false
end
end
end
end
table.insert(res, s and soft[c] or c)
end
return table.concat(res)
end
function step_prosody(word)
-- 1. Merge Prepositions
word = mw.ustring.gsub(word, "%f[%a](%a+) +", function(w)
return prepositions_set[mw.ustring.lower(w)] and (w .. "_") or nil
end)
-- 2. Add Stress
return mw.ustring.gsub(word, "%S+", function(w)
local raw = mw.ustring.lower(mw.ustring.gsub(w, "_", ""))
-- Exclusions: Clitics OR Starts with hyphen OR Single letter OR No syllabic nucleus
if clitics[raw]
or mw.ustring.sub(w, 1, 1) == "-"
or mw.ustring.sub(w, -1) == "-"
or mw.ustring.len(w) == 1
or not mw.ustring.find(raw, "[aáäeéiíoóuúyýöőüűôrŕlĺ]") then
return w
end
return "'" .. w
end)
end
function step_simplification(word)
local patterns = { "s[tť]s[tk]", "[pd][tz]sk", "[tďdz]st", "[ztd]šť", "[zdt]sk", "ptč" }
local function resolve(w)
local c1 = mw.ustring.sub(w, 1, 1)
if c1 == "s" then return c1 .. mw.ustring.sub(w, 4)
elseif c1 == "p" then return c1 .. mw.ustring.sub(w, 3)
else
w = mw.ustring.gsub(w, "z", "")
if mw.ustring.len(w) <= 2 then return w end
local c2 = mw.ustring.sub(w, 2, 2)
local head = (c2 == "s") and "c" or "č"
return head .. mw.ustring.sub(w, 3)
end
end
for _, pat in ipairs(patterns) do
word = mw.ustring.gsub(word, pat, resolve)
end
return word
end
function step_assimilation(word)
-- [[ 1. Pre-processing & Morphological Exceptions ]] --
word = mw.ustring.gsub(word, "('[nv]ášmu)(%f[%A])", function(match)
return mw.ustring.gsub(match, "š", "ž")
end)
-- 2. sme -> zme (Only if surrounded by boundaries)
if mw.ustring.find(word, "sme") then
word = mw.ustring.gsub(mw.ustring.gsub(word, "^sme$", "zme"), "^sme(%s)", "zme%1")
word = mw.ustring.gsub(mw.ustring.gsub(word, "(%s)sme$", "%1zme"), "(%s)sme(%s)", "%1zme%2")
end
-- A. Prefix "eks-" (eks- + vowel/voiced -> egz-)
local v_set = "[aeiouyáéíóúýäôglmnňrjvzhdbžg]"
word = mw.ustring.gsub(word, "^('?)eks("..v_set..")", "%1egz%2")
word = mw.ustring.gsub(word, "([%s_])('?)eks("..v_set..")", "%1%2egz%3")
word = mw.ustring.gsub(word, "^('?)dis("..v_set..")", "%1diz%2")
word = mw.ustring.gsub(word, "([%s_])('?)dis("..v_set..")", "%1%diz%3")
-- B. Preposition Vocalization (so/ku -> zo/gu)
word = mw.ustring.gsub(word, "([%s'])([sk][ou])(_)([^%s%._]+)", function(before, prep, sep, next_w)
if not preposition_blockers[next_w] then
local voiced = (prep == "so") and "zo" or "gu"
return before .. voiced .. sep .. next_w
end
end)
-- C. Imperative Suffix "-me" (Voice preceding consonant)
if AS_IMP == 1 then
word = mw.ustring.gsub(word, "([ptsťkfcčš])me", function(c)
return (voicing_map[c] or c) .. "me"
end)
end
-- [[ 2. Main Assimilation Logic ]] --
local tokens = get_graphemes(word)
local len = #tokens
local str = table.concat(tokens)
-- Check for "-mo" variant trigger
if mw.ustring.find(word, "[ptsčškcfx]%.mo%f[%A]") or mw.ustring.find(word, "ch%.mo%f[%A]") then
IS_MO_VARIANT = true
end
-- Helpers
local function prev_C(k)
while k >= 1 do local t=tokens[k]; if t~="'" and t~="_" and t~=" " and t~="-" and t~="." then return k end k=k-1 end
end
local function is_bound(k)
return k<1 or k>len or tokens[k]==" " or tokens[k]=="_" or tokens[k]=="-"
end
local function prev_bound(k)
local l, k = 0, k-1 -- Start checking before current index
while k-l >= 1 do
local t = tokens[k-l]
if t=="'" or t=="_" or t==" " or t=="-" then break end
l = l + 1
end
return l
end
-- Init State
local simple = not mw.ustring.find(str, "[ %-_]")
local w_offset = (simple and tokens[1] == "'") and 1 or 0
-- p_len = Exact count of characters before 'i'
local p_len = simple and (len - w_offset - 1) or prev_bound(len)
-- Reverse Loop (Regressive Assimilation)
for i = len, 2, -1 do
-- Reset state if we crossed a word boundary
if not simple and is_bound(i+1) then p_len = prev_bound(i) end
local is_prefix = false
-- A. Prefix Check
if p_len >= 2 and p_len <= 4 then
local sub = table.concat(tokens, "", i - p_len, i - 1)
if prefixes[sub] then
apply_assimilation(tokens, i - 1, i, true)
is_prefix = true
end
end
-- B. General Assimilation (If not prefix)
if not is_prefix then
local tgt = prev_C(i-1)
if tgt then
local is_opt = false
for k = tgt + 1, i - 1 do
if tokens[k]==" " or tokens[k]=="-" or tokens[k]=="_" then is_opt = true; break end
end
-- Handles both Devoicing (standard) and Voicing (at boundaries)
apply_assimilation(tokens, tgt, i, is_opt)
end
end
p_len = p_len - 1
end
return table.concat(tokens)
end
function step_v_f_j_realization(word)
word = mw.ustring.gsub(mw.ustring.gsub(word, "anje[lľ]", "aňɪ̯el"), "_", "")
word = mw.ustring.gsub(mw.ustring.gsub(word, "%+u", "ů"), "%+i", "I")
local syllables = split_into_syllables(word)
local res_syls = {}
local function is_nuc(c)
return vowels_set[c] or diphthongs_set[c] or c=='r' or c=='l' or c=='ŕ' or c=='ĺ'
end
for s_i, syl in ipairs(syllables) do
local s_len, res = mw.ustring.len(syl), {}
local nuc_i = nil
for k = 1, s_len do
if is_nuc(mw.ustring.sub(syl, k, k)) then nuc_i = k; break end
end
for c_i = 1, s_len do
local c = mw.ustring.sub(syl, c_i, c_i)
local out = c
if c ~= "'" and c ~= "." and c ~= "-" then
local function peek(dir, count)
count = count or 1
local k, si = c_i, s_i
while count > 0 do
k = k + dir
if k < 1 then si = si - 1; if not syllables[si] then return nil end; k = mw.ustring.len(syllables[si])
elseif k > mw.ustring.len(syllables[si]) then si = si + 1; if not syllables[si] then return nil end; k = 1 end
local t = mw.ustring.sub(syllables[si], k, k)
if t ~= "'" and t ~= "." and t ~= "-" then count = count - 1; if count == 0 then return t end end
end
end
-- 2. DETECT POSITIONS (Ignore ' and .)
local is_onset = (mw.ustring.gsub(mw.ustring.sub(syl, 1, c_i-1), "['%.%-]", "") == "")
local is_coda = nuc_i and (c_i > nuc_i)
local prev, nxt = peek(-1), peek(1)
if c == 'u' then
if prev == 'o' and (not nxt or nxt == ' ') then out = "ů" end
elseif c == 'v' then
if is_coda and prev and is_nuc(prev) then
local is_u_prev = (prev == 'u' or prev == 'ú')
local is_amb_next = (nxt and (nxt=='n' or nxt=='ň' or nxt=='l' or nxt=='ľ' or nxt=='r'))
out = (is_u_prev or is_amb_next) and "U" or "ů"
else
local prev_syl_clean = (s_i > 1) and mw.ustring.gsub(syllables[s_i-1], "['%.%-]", "") or ""
local prev_nuc = (s_i > 1) and is_nuc(mw.ustring.sub(prev_syl_clean, -1))
local next_is_vn = (nxt and (nxt == 'n' or nxt == 'ň'))
if is_onset and (s_i == 1 or prev_nuc) and next_is_vn then
out = "W"
else
local next_is_z = (nxt == 'z')
local after_z = next_is_z and peek(1, 2) -- Peek 2 steps ahead
local vz_unv = (next_is_z and after_z and voiceless_paired[after_z])
if vz_unv or (nxt and voiceless_paired[nxt]) then out = "f"
elseif nxt and voiced_paired[nxt] and not sonorants[nxt] then out = "w"
else out = "v" end
end
end
elseif c == 'f' then
if is_coda and nxt and (voiced_paired[nxt] or sonorants[nxt]) then out = "F" end
elseif c == 'j' then
local prev_is_iy = (prev == 'i' or prev == 'í' or prev == 'y' or prev == 'ý')
if is_onset then out = "j"
elseif not vowels_set[prev] or prev_is_iy then out = "J"
else out = "I" end
end
end
table.insert(res, out)
end
table.insert(res_syls, table.concat(res))
end
return table.concat(res_syls)
end
function step_final_devoicing(word)
local tokens = get_graphemes(word)
local i = #tokens
while i > 0 do
local c = tokens[i]
if voiced_paired[c] then tokens[i] = voicing_map[c]; i = i - 1
elseif voiceless_paired[c] then i = i - 1
else break end
end
return table.concat(tokens)
end
function generate_all_transcriptions(word, original_word)
local gsub = mw.ustring.gsub
-- A. Base IPA
local base_ipa = ipa_transform_worker(word)
-- B. Phonemic
local phonemic = gsub(gsub(base_ipa, "ˈ", ""), "[vwFůWU]", "v")
phonemic = gsub(gsub(phonemic, "J", "j"), "H", "ɦ")
phonemic = gsub(gsub(phonemic, "ä", "æ"), "ľ", "ʎ")
phonemic = gsub(phonemic, "I", "j")
-- Decode Dental Clusters
phonemic = gsub(phonemic, "(%d['%s_]*%d)", function(k)
local d1, sep, d2 = mw.ustring.match(k, "(%d)(['%s_]*)(%d)")
d1, d2 = tonumber(d1), tonumber(d2)
local d1_fix = ((d1+d2)%2==1) and (d1 + (d2%2==0 and 1 or -1)) or d1
return (c1_dec[d1_fix] or "") .. sep .. (c2_dec[d2] or "")
end)
-- C. Phonetic Base
local phonetic_base = resolve_phonetic_base(base_ipa)
local roots = { phonetic_base }
-- D. Handle "-mo" Variant
if IS_MO_VARIANT and original_word then
local c = mw.ustring.sub(original_word, -4, -4) -- grab the consonant immediately preceding the ".mo" suffix
local c_voiced = voicing_map[c]
if c_voiced then
local ipa_voiceless = (ipa_map[c] or c)
local ipa_voiced = (ipa_map[c_voiced] or c_voiced)
local pattern = mw.ustring.gsub(ipa_voiceless, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") .. "mɔ$" -- escape IPA chars for regex and target the end of string
local new_root, count = mw.ustring.gsub(phonetic_base, pattern, ipa_voiced .. "mɔ")
if count > 0 then
table.insert(roots, new_root)
end
end
end
-- E. Expand Variants
local bases_expanded = {}
for _, root in ipairs(roots) do
local expansions = expand_variants(root)
for _, e in ipairs(expansions) do table.insert(bases_expanded, e) end
end
-- F. Generate Registers
local high_res, low_res = {}, {}
for _, ipa in ipairs(bases_expanded) do
table.insert(high_res, (gsub(ipa, "æ", "ɛɐ̯")))
local l = gsub(gsub(gsub(ipa, "æ", "e"), "ʎ", "l"), "l ?ˈ?l", "lː")
table.insert(low_res, (gsub(l, "n([fvʋ])", "ɱ%1")))
end
return {
phonemic = phonemic,
high = high_res,
low = low_res
}
end
-- =============================================================================
-- [[ MAIN EXPORT ]]
-- =============================================================================
function export.show(frame)
local args = frame:getParent().args
local title = mw.title.getCurrentTitle()
local t = args["t"] or ""
NAMESPACE = title.nsText
PAGENAME = (NAMESPACE == "") and title.text or (args["pagename"] or "Pagename not specified")
LOAN = mw.ustring.find(t, "loan") and 1 or 0
HARD_SUFFIX = mw.ustring.find(t, "adj") and 1 or 0
AS_IMP = mw.ustring.find(t, "imp") and 1 or 0
IS_MO_VARIANT = false
local word = (args["1"] ~= nil) and args["1"] or PAGENAME
local original_word = word
local manual_hard = (args["1"] ~= nil and mw.ustring.find(args["1"], "[DTNL]"))
-- Display Switches
local show_rhymes = (args["r"] ~= "0")
and not mw.ustring.find(word, "^%-")
and not mw.ustring.find(word, "%-$")
local show_hyph = (args["h"] ~= "0")
local audio = args["a"] or false
local audio_accent = args["aa"] or ""
-- Pipeline
if not manual_hard then word = step_foreign_graphemes(word) end
word = step_softening(word)
if manual_hard then word = step_foreign_graphemes(word) end
word = step_prosody(word)
word = step_simplification(word)
word = step_assimilation(word)
word = step_v_f_j_realization(word)
word = step_final_devoicing(word)
local final = generate_all_transcriptions(word, original_word)
local nuclei, clean_ipa = get_ipa_nuclei(final.phonemic)
local out = format_ipa_output(final, frame)
if audio then out = out .. "\n*" .. frame:expandTemplate{title="audio", args={"sk", audio, a=audio_accent}} end
if show_rhymes then out = out .. format_rhymes(frame, nuclei, clean_ipa) end
if show_hyph then out = out .. format_hyphenation(PAGENAME, final.phonemic, frame, original_word, nuclei) end
return out
end
return export
p4wcksootvr1sqe6t0yod2ele6evhs5
geometrie
0
2358187
5759384
2026-09-01T06:20:25Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759384
wikitext
text/x-wiki
== ภาษาเช็ก ==
=== การออกเสียง ===
* {{cs-IPA}}
=== คำนาม ===
{{cs-noun|f}}
# [[เรขาคณิต]]
==== การผันรูป ====
{{cs-ndecl|f}}
==== ลูกคำ ====
{{col|cs|euklidovská geometrie|neeuklidovská geometrie|fraktální geometrie}}
==== คำเกี่ยวข้อง ====
* ดูที่ {{l|cs|metr}}
{{col|cs|geometrický|geometr}}
=== อ่านเพิ่ม ===
* {{R:cs:PSJC}}
* {{R:cs:SSJC}}
* {{R:cs:IJP}}
== ภาษาดัตช์ ==
{{wp|nl:}}
=== รากศัพท์ ===
จาก{{inh|nl|dum|geometrie}}, จาก{{der|nl|fro|geometrie}}, จาก{{der|nl|la|geōmetria}}, จาก{{der|nl|grc|γεωμετρία}}
=== การออกเสียง ===
* {{IPA|nl|/ˌɣeː.oː.meːˈtri/}}
* {{audio|nl|Nl-geometrie.ogg}}
* {{hyphenation|nl|geo|me|trie}}
* {{rhymes|nl|i}}
=== คำนาม ===
{{nl-noun|f|-|-}}
# [[เรขาคณิต]] {{defdate|from 17th c.}}
==== คำพ้องความ ====
* {{l|nl|meetkunde}}
* {{l|nl|meetkunst}}
==== ลูกคำ ====
* {{l|nl|geometrisch}}
== ภาษาฝรั่งเศสกลาง ==
=== คำนาม ===
{{frm-noun|f|-}}
# [[เรขาคณิต]]
== ภาษาฝรั่งเศสเก่า ==
=== คำนาม ===
{{fro-noun|f|-}}
# [[เรขาคณิต]]
== ภาษาโรมาเนีย ==
{{wp|ro:}}
=== รูปแบบอื่น ===
* {{alt|ro|ӂеометрие||new cyrl}}
=== รากศัพท์ ===
{{bor+|ro|fr|géométrie}}, จาก{{der|ro|la|geometria}}; เทียบเท่า {{affix|ro|geo-|-metrie}}
=== การออกเสียง ===
* {{IPA|ro|/d͡ʒe.o.meˈtri.e/}}
* {{rhyme|ro|ie|s=5}}
* {{hyph|ro|ge|o|me|tri|e}}
=== คำนาม ===
{{ro-noun|f|-}}
# [[เรขาคณิต]]
==== การผันรูป ====
{{ro-noun-f-ie|geometri|n=sg}}
=== อ่านเพิ่ม ===
* {{R:DEX}}
{{C|ro|เรขาคณิต}}
== ภาษาอิตาลี ==
=== คำนาม ===
{{head|it|รูปนาม|g=f}}
# {{plural of|it|geometria}}
=== คำสลับอักษร ===
* {{anagrams|it|a=eeegimort|geotermie}}
== ภาษาเอสเปรันโต ==
=== รากศัพท์ ===
{{ety|eo|:af|geometrio|-e|text=+|tree=1}}
=== การออกเสียง ===
{{eo-pr}}
=== คำกริยาวิเศษณ์ ===
{{eo-head}}
# โดยทาง[[เรขาคณิต]]
t2teqaviraq0viv0glwrtrqm8licosr
géométrie
0
2358188
5759385
2026-09-01T06:22:05Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759385
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
{{wp|fr:}}
[[ไฟล์:Woman teaching geometry.jpg|thumb|Une femme qui enseigne la '''géométrie'''.|250px]]
=== รากศัพท์ ===
จาก{{affix|fr|géo-|-métrie}}, จาก{{uder|fr|grc|γεωμετρία||เรขาคณิต, การรังวัดที่ดิน}}, จาก{{m|grc|γεωμετρέω||ฝึกฝนหรือเชี่ยวชาญในเรขาคณิต, วัด, รังวัดที่ดิน}}, จาก{{m|grc|γαία||ดิน, ที่ดิน, ประเทศ}} + {{m|grc|μετρέω||วัด, นับ}}
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-géométrie.ogg|a=Paris}}
* {{audio|fr|LL-Q150 (fra)-DSwissK-géométrie.wav|a=<<Switzerland>> (<<Valais>>)}}
* {{audio|fr|LL-Q150 (fra)-GrandCelinien-géométrie.wav|a=<<France>> (<<Paris>>)}}
* {{audio|fr|LL-Q150 (fra)-LoquaxFR-géométrie.wav|a=<<France>> (<<Vosges>>)}}
* {{audio|fr|LL-Q150 (fra)-Poslovitch-géométrie.wav|a=<<France>> (<<Vosges>>)}}
* {{homophones|fr|géométries}}
* {{hyphenation|fr|gé|o|mé|trie}}
=== คำนาม ===
{{fr-noun|f}}
# {{lb|fr|mathematics}} [[เรขาคณิต]]
#: {{coi|fr|géométrie euclidienne}}
#: {{coi|fr|géométrie différentielle}}
#: {{coi|fr|géométrie projective}}
#: {{coi|fr|géométrie algébrique}}
#: {{coi|fr|géométrie sphérique}}
#: {{coi|fr|géométrie hyperbolique}}
#: {{coi|fr|géométrie synthétique}}
#: {{coi|fr|géométrie elliptique}}
#: {{coi|fr|géométrie analytique}}
#: {{coi|fr|géométrie symplectique}}
#: {{coi|fr|géométrie métrique}}
==== Holonyms ====
* {{l|fr|mathématiques}}
==== ลูกคำ ====
* {{l|fr|à géométrie variable}}
* {{l|fr|géométrique}}
* {{l|fr|géométriser}}
=== อ่านเพิ่ม ===
* {{R:fr:TLFi}}
{{C|fr|เรขาคณิต}}
snceqjlg38je84axncldh62g5q2doz5
5759391
5759385
2026-09-01T06:28:06Z
Octahedron80
267
/* คำนาม */
5759391
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
{{wp|fr:}}
[[ไฟล์:Woman teaching geometry.jpg|thumb|Une femme qui enseigne la '''géométrie'''.|250px]]
=== รากศัพท์ ===
จาก{{affix|fr|géo-|-métrie}}, จาก{{uder|fr|grc|γεωμετρία||เรขาคณิต, การรังวัดที่ดิน}}, จาก{{m|grc|γεωμετρέω||ฝึกฝนหรือเชี่ยวชาญในเรขาคณิต, วัด, รังวัดที่ดิน}}, จาก{{m|grc|γαία||ดิน, ที่ดิน, ประเทศ}} + {{m|grc|μετρέω||วัด, นับ}}
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|Fr-géométrie.ogg|a=Paris}}
* {{audio|fr|LL-Q150 (fra)-DSwissK-géométrie.wav|a=<<Switzerland>> (<<Valais>>)}}
* {{audio|fr|LL-Q150 (fra)-GrandCelinien-géométrie.wav|a=<<France>> (<<Paris>>)}}
* {{audio|fr|LL-Q150 (fra)-LoquaxFR-géométrie.wav|a=<<France>> (<<Vosges>>)}}
* {{audio|fr|LL-Q150 (fra)-Poslovitch-géométrie.wav|a=<<France>> (<<Vosges>>)}}
* {{homophones|fr|géométries}}
* {{hyphenation|fr|gé|o|mé|trie}}
=== คำนาม ===
{{fr-noun|f}}
# {{lb|fr|คณิตศาสตร์}} [[เรขาคณิต]]
#: {{coi|fr|géométrie euclidienne|เรขาคณิตแบบยุคลิด}}
#: {{coi|fr|géométrie différentielle|เรขาคณิตเชิงอนุพันธ์}}
#: {{coi|fr|géométrie projective|เรขาคณิตเชิงภาพฉาย}}
#: {{coi|fr|géométrie algébrique|เรขาคณิตเชิงพีชคณิต}}
#: {{coi|fr|géométrie sphérique|เรขาคณิตทรงกลม}}
#: {{coi|fr|géométrie hyperbolique|เรขาคณิตเชิงไฮเพอร์โบลา}}
#: {{coi|fr|géométrie synthétique|เรขาคณิตสังเคราะห์}}
#: {{coi|fr|géométrie elliptique|เรขาคณิตอิลลิปติก}}
#: {{coi|fr|géométrie analytique|เรขาคณิตวิเคราะห์}}
#: {{coi|fr|géométrie symplectique|เรขาคณิตซิมเพลกติก}}
#: {{coi|fr|géométrie métrique|เรขาคณิตอิงระยะทาง}}
==== Holonyms ====
* {{l|fr|mathématiques}}
==== ลูกคำ ====
* {{l|fr|à géométrie variable}}
* {{l|fr|géométrique}}
* {{l|fr|géométriser}}
=== อ่านเพิ่ม ===
* {{R:fr:TLFi}}
{{C|fr|เรขาคณิต}}
g6qqdm6ydaq47rtvfw6x1vgg3hp91ho
géométries
0
2358189
5759386
2026-09-01T06:22:24Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759386
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-Lyokoï-géométries.wav|a=<<France>> (<<Lyon>>)}}
* {{homophones|fr|géométrie}}
* {{hyphenation|fr|gé|o|mé|tries}}
=== คำนาม ===
{{head|fr|รูปนาม|g=f}}
# {{plural of|fr|géométrie}}
=== คำสลับอักษร ===
* {{l|fr|géométrise}}, {{l|fr|géométrisé}}
ez9myf28pdam1f1w8rxoemloctoztoi
géométrisé
0
2358190
5759387
2026-09-01T06:22:34Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759387
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== รูปกริยาขยาย ===
{{fr-past participle}}
# {{past participle of|fr|géométriser}}
=== อ่านเพิ่ม ===
* {{R:fr:TLFi}}
=== คำสลับอักษร ===
* {{l|fr|géométries}}
c1xz5pd51ckrh07rry2svrf6ekkiku5
géométrisée
0
2358191
5759388
2026-09-01T06:22:45Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759388
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== รูปกริยาขยาย ===
{{head|fr|รูปผันรูปกริยาขยายอดีตกาล|g=f-s}}
# {{feminine singular of|fr|géométrisé}}
lfr9hty2uza1l5kwqypc63fo6whgt2c
géométrisés
0
2358192
5759389
2026-09-01T06:22:49Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759389
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== รูปกริยาขยาย ===
{{head|fr|รูปผันรูปกริยาขยายอดีตกาล|g=m-p}}
# {{masculine plural of|fr|géométrisé}}
rhi7cx9f20wtajddw0cjftg75flef6r
géométrisées
0
2358193
5759390
2026-09-01T06:22:51Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759390
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== รูปกริยาขยาย ===
{{head|fr|รูปผันรูปกริยาขยายอดีตกาล|g=f-p}}
# {{feminine plural of|fr|géométrisé}}
7i8jlc0wj78p3n49k3p6dl5jtwz6xr0
géométrique
0
2358194
5759392
2026-09-01T06:29:48Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759392
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== รากศัพท์ ===
{{ety|fr|:af|géométrie|-ique}}
จาก{{affix|fr|géométrie|-ique}}
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-LoquaxFR-géométrique.wav|a=<<France>> (<<Vosges>>)}}
* {{audio|fr|LL-Q150 (fra)-Poslovitch-géométrique.wav|a=<<France>> (<<Vosges>>)}}
=== คำคุณศัพท์ ===
{{fr-adj}}
# เชิง[[เรขาคณิต]]
==== ลูกคำ ====
* {{l|fr|lieu géométrique}}
* {{l|fr|moyenne géométrique}}
=== อ่านเพิ่ม ===
* {{R:fr:TLFi}}
le2llifmwmnevmsmcp2xjf8flkxy2fb
géométriques
0
2358195
5759393
2026-09-01T06:29:58Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759393
wikitext
text/x-wiki
== ภาษาฝรั่งเศส ==
=== การออกเสียง ===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-Lyokoï-géométriques.wav|a=<<France>> (<<Lyon>>)}}
=== คำคุณศัพท์ ===
{{head|fr|รูปคุณศัพท์}}
# {{plural of|fr|géométrique}}
nm7qefbvz3fb3qzgxyt98141827ckfu
มอดูล:cs-noun
828
2358196
5759394
2026-09-01T06:43:39Z
Octahedron80
267
สร้างหน้าด้วย "local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of case/number. Example slot names for nouns are "gen_s" (genitive singular) and "voc_p" (vocative plural). Each slot is filled with zero or more forms. -- "form" = The declined Czech form representing the value of a given slot. -- "lemma" = The dictionary form of a given Czech term. Generally the nominative masculine si..."
5759394
Scribunto
text/plain
local export = {}
--[=[
Authorship: Ben Wing <benwing2>
]=]
--[=[
TERMINOLOGY:
-- "slot" = A particular combination of case/number.
Example slot names for nouns are "gen_s" (genitive singular) and
"voc_p" (vocative plural). Each slot is filled with zero or more forms.
-- "form" = The declined Czech form representing the value of a given slot.
-- "lemma" = The dictionary form of a given Czech term. Generally the nominative
masculine singular, but may occasionally be another form if the nominative
masculine singular is missing.
]=]
--[=[
FIXME:
1. Finish synthesize_singular_lemma(). [DONE]
2. Implement feminines in -ea, -oa/-ua, -ia, -oe. [DONE]
3. Implement "mixed" masculine nouns in -l, -n, -t (each different, also inanimate vs. animate). [DONE]
4. Allow 'stem:' override after vowel-final words like [[centurio]]. [DONE using decllemma:]
5. Support masculine foreign nouns in -us/-os/-es. [DONE]
6. Support masculine foreign nouns in -ius/-etc. [DONE]
7. Support masculine foreign nouns in unpronounced final -e (e.g. [[software]]). [DONE]
8. Support neuter foreign nouns in -um/-on. [DONE]
9. Support neuter foreign nouns in -ium/-ion. [DONE]
10. Support paired body parts, e.g. [[ruka]], [[noha]], [[oko]], [[ucho]], [[koleno]], [[rameno]]. [WON'T DO;
JUST SEPARATE THE MEANINGS AND GIVE THEM DIFFERENT DECLENSIONS]
11. Support masculine nouns in -e/ě that are neuter in the plural. [DONE]
12. Correctly handle -e vs. -ě, e.g. soft neuters have both [[kutě]] and [[poledne]]. [DONE]
13. Always use specified lemma in nom_pl and maybe acc_pl when plurale tantum. [DONE]
14. Support feminine nouns in -ca/-ča/-ša/-ža. [DONE]
15. Support feminine nouns in -ja/-ňa. [DONE]
16. Support mixed i-stem feminine nouns. [DONE]
17. Support "c as k" feminine nouns like [[ayahuasca]].
18. Support 'declgender'. [DONE]
19. Support pronouns with clitics. [DONE]
20. Singular-only and plural-only terms should not have number in accelerator form. [DONE]
21. Support [[úterý]] (like neuters in -í). [DONE]
22. Support feminines in -i ([[máti]], [[pramáti]]). [DONE]
23. Support foreign nouns in -ie ([[zombie]], [[hippie]], [[yuppie]]). [DONE]
24. Support foreign nouns in -í ([[muftí]], [[qádí]]). [DONE]
25. Support manual declensions. [DONE]
26. Support numerals. [DONE]
27. Allow for reducible spec in pluralia tantum and dereduce accordingly; also automatically assign reducibility
if singular stem ends in -Ck or -Cc. [DONE]
28. Use `pos` value in all categories.
29. Support determiners [[kolik]], [[tolik]], [[několik]], [[mnoho]]. [DONE]
30. Support a '.velar' indicator for foreign names whose pronunciation but not spelling ends in a velar: [[Remarque]],
[[Braque]], [[Mike]], [[Drake]], [[Jake]] with vocative 'Remarquu', 'Braquu', 'Mikeu', 'Drakeu', 'Jakeu'. In
general we need more thought around such foreign names; essentially, for names in a silent e, sometimes the -e
is dropped in all oblique forms (e.g. [[Shakespeare]], [[Pierre]], [[Barrande]], [[La Fontaine]], [[Braque]],
[[Remarque]] with gen sg 'Shakespeara', 'Pierra', Barranda', 'La Fontaina', 'Braqua', 'Remarqua') and sometimes
it's kept in all oblique forms except those ending in an -e, where -ee is avoided (e.g. [[Pete]], [[Gable]],
[[Jake]], [[White]], [[Byrne]], [[Mike]], [[Drake]] with gen sg 'Petea', 'Gablea' etc. and voc sg 'Pete', 'Gable'
but 'Jakeu', 'Mikeu'). Sometimes there are doublets, e.g. [[Hubble]] and [[Hume]] have gen sg 'Hubbla/Hubblea'
(where the second form is used among astronomers in a technical sense and the first form may be more popular)
and 'Huma/Humea'. We already have a '.foreign' indicator that when applied to a noun ending in -e drops the -e
in oblique forms e.g. for [[software]]. We may need to combine this with an explicit indicator of hard, soft or
velar as there will be names with silent -e and preceding soft consonant e.g. [[Bruce]], [[Coleridge]]. Note
that when the -e is kept it is still dropped before front vowels, hence dat sg 'Bruci'/Bruceovi'. Need some
investigation in IJP and cswikt. [.velar DONE]
31. Support 'declnumber'. [DONE]
32. Support foreign nouns in -ee ([[Yankee]]). [DONE]
]=]
local lang = require("Module:languages").getByCode("cs")
local m_table = require("Module:table")
local m_links = require("Module:links")
local m_string_utilities = require("Module:string utilities")
local iut = require("Module:inflection utilities")
local put = require("Module:parse utilities")
local m_para = require("Module:parameters")
local com = require("Module:cs-common")
local en_utilities_module = "Module:en-utilities"
local u = mw.ustring.char
local rsplit = mw.text.split
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rgmatch = mw.ustring.gmatch
local rsubn = mw.ustring.gsub
local ulen = mw.ustring.len
local usub = mw.ustring.sub
local uupper = mw.ustring.upper
local ulower = mw.ustring.lower
local force_cat = false -- set to true to make categories appear in non-mainspace pages, for testing
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
-- version of rsubn() that returns a 2nd argument boolean indicating whether
-- a substitution was made.
local function rsubb(term, foo, bar)
local retval, nsubs = rsubn(term, foo, bar)
return retval, nsubs > 0
end
local function track(track_id)
require("Module:debug/track")("cs-noun/" .. track_id)
return true
end
local output_noun_slots = {
nom_s = "nom|s",
nom_s_linked = "nom|s",
gen_s = "gen|s",
gen_s_linked = "gen|s",
clitic_gen_s = "clitic|gen|s",
dat_s = "dat|s",
clitic_dat_s = "clitic|dat|s",
acc_s = "acc|s",
clitic_acc_s = "clitic|acc|s",
voc_s = "voc|s",
loc_s = "loc|s",
ins_s = "ins|s",
nom_p = "nom|p",
nom_p_linked = "nom|p",
gen_p = "gen|p",
dat_p = "dat|p",
acc_p = "acc|p",
voc_p = "voc|p",
loc_p = "loc|p",
ins_p = "ins|p",
}
local function get_output_noun_slots(alternant_multiword_spec)
-- FIXME: To save memory we modify the table in-place. This won't work if we ever end up with multiple calls to
-- this module in the same Lua invocation, and we would need to clone the table.
if alternant_multiword_spec.actual_number ~= "both" then
for slot, accel_form in pairs(output_noun_slots) do
output_noun_slots[slot] = accel_form:gsub("|[sp]$", "")
end
end
return output_noun_slots
end
local potential_lemma_slots = {"nom_s", "nom_p", "gen_s"}
local cases = {
nom = true,
gen = true,
dat = true,
acc = true,
voc = true,
loc = true,
ins = true,
}
local clitic_cases = {
gen = true,
dat = true,
acc = true,
}
local function dereduce(base, stem)
local dereduced_stem = com.dereduce(base, stem)
if not dereduced_stem then
error("Unable to dereduce stem '" .. stem .. "'")
end
return dereduced_stem
end
--[=[
Maybe modify the stem and/or ending in certain special cases:
1. Final -e in vocative singular triggers first palatalization of the stem in some cases (e.g. hard masc).
2. Endings beginning with ě, i, í trigger second palatalization, as does -e in the loc_s.
NOTE: Correctly handling -e vs. -ě and -tdn/-ťďň alternations is tricky. We have to deal with the following:
1. Soft-stem and t-stem neuters can have either -e or -ě. With coronals we have both [[poledne]] "noon" with /n/ and
[[kutě]] "bed" with /ť/. We also have soft-stem neuter [[Labe]] with /b/ vs. t-stem neuter [[hříbě]] with /bj/.
2. Underlying palatal coronals maintain their nature before back vowels and when not followed by a vowel, e.g. [[štěně]]
"puppy" becomes 'štěňata' in the nom/acc/voc plural and [[přítelkyně]] "girlfriend" becomes 'přítelkyň' in the gen
plural, but underlying palatal labials become non-palatal, e.g. [[hříbě]] "foal" becomes 'hříbata' in the nom/acc/voc
plural.
3. There are at least four types of endings beginning with '-e':
a. "maintaining" endings, e.g. instrumental singular '-em', which do not change the nature of the consonant, e.g.
[[zákon]] "law" becomes 'zákonem' while [[vězeň]] "prisoner" becomes 'vězeněm';
b. "palatalizing" endings, e.g. locative singular '-e', which palatalizes t/d/n (and more generally applies the
Slavic second palatalization, e.g. k -> c, r -> ř), e.g. [[žena]] "woman" becomes 'ženě';
c. "depalatalizing" endings, e.g. feminine i-stem dative plural '-em', which actively depalatalize ť/ď/ň, e.g.
[[oběť]] "sacrifice, victim" becomes 'obětem';
d. vocative singular '-e' of hard-stem masculines, which applies the Slavic first palatalization in some
circumstances (e.g. k -> č, Cr -> Cř, sometimes c -> č).
The way we handle this as follows:
1. We maintain the underlying stems always in their "pronounced" form, i.e. if the last consonant is pronounced ť/ď/ň
we maintain the stem in that form, but if pronounced t/d/n, we use those consonants. Hence neuter [[poledne]] "noon"
has stem 'poledn-' but neuter [[štěně]] "puppy" has stem 'štěň'. If the stem ends in labial + /j/, we use a special
TEMP_SOFT_LABIAL character after the labial (rather than 'j', in case of stems that actually have a written 'j' in
them such as [[banjo]]).
2. We signal types (a), (b) and (c) above using respectively 'e', 'ě' and 'E'. Type (d) uses 'e' and sets
`base.palatalize_voc`.
3. In combine_stem_ending(), we convert the stem back to the written form before adding the ending. If the ending begins
with -e, this may entail converting -e to -ě, and in all cases -E is converted to -e. "Converting to the written
form" converts ť/ď/ň to plain equivalents and deletes TEMP_SOFT_LABIAL before -e, converting -e to -ě with such
consonants. The same conversions happen before other front consonants -ě/-é/-i/-í, which don't allow ť/ď/ň to
precede, and in all cases with TEMP_SOFT_LABIAL, which is not an actual consonant.
4. If the ending is specified using -ě, this is maintained after plain coronals and labials in combine_stem_ending(),
and converted to -e in other cases.
5. Applying the first and second palatalization happens below in apply_special_cases().
]=]
local function apply_special_cases(base, slot, stem, ending)
local palatalize_voc
if base.c_as_k and rfind(ending, "^[aouyáóúůý]") then
local k_stem = rsub(stem, "c$", "k")
stem = {stem, k_stem}
elseif slot == "voc_s" and ending == "e" and base.palatalize_voc and not base["-velar"] then
-- Don't palatalize words like [[hadíth]] with silent -h.
local palstem = com.apply_first_palatalization(stem)
-- According to IJP, nouns ending in -Cr palatalize in the vocative, but those in -Vr don't. In reality,
-- though, it's more complex. It appears that animate nouns in -Cr tend to palatalize but inanimate nouns
-- do it optionally. Specifics:
-- -- Inanimate nouns with optional palatalization (ř listed second): [[alabastr]], [[amfiteátr]], [[barometr]],
-- [[centilitr]], [[centrimetr]], [[decilitr]], [[decimetr]], [[Dněstr]], [[filtr]], [[galvanometr]],
-- [[hektolitr]], [[kalorimetr]], [[litr]], [[lustr]], [[manometr]], [[manšestr]], [[metr]] (NOTE: is both
-- animate and inanimate), [[mikrometr]], [[miliampérmetr]], [[mililitr]], [[nanometr]], [[orchestr]],
-- [[parametr]], [[piastr]], [[půllitr]], [[radiometr]], [[registr]], [[rotmistr]], [[semestr]], [[skútr]],
-- [[spirometr]], [[svetr]], [[šutr]], [[tachometr]], [[titr]], [[vítr]] (NOTE: has í-ě alternation),
-- [[voltmetr]]; [[bagr]], [[bunkr]], [[cedr]], [[Dněpr]], [[fofr]], [[habr]] (NOTE: ř listed first), [[hadr]]
-- (NOTE: ř listed first), [[hamr]], [[kafr]], [[kepr]], [[kopr]], [[koriandr]], [[krekr]], [[kufr]],
-- [[Kypr]], [[lágr]], [[lógr]], [[manévr]], [[masakr]], [[okr]], [[oleandr]], [[pulovr]], [[šlágr]],
-- [[vichr]] (NOTE: ř listed first), [[žánr]]
--
-- -- Inanimate nouns that don't palatalize: [[ampérmetr]], [[anemometr]], [[sfygmomanometr]], [[sfygmometr]];
-- [[dodekaedr]], [[Hamr]], [[ikozaedr]], [[kvádr]], [[sandr]], [[torr]]
--
-- -- Animate nouns that palatalize: [[arbitr]], [[bratr]], [[ekonometr]], [[foniatr]], [[fotr]], [[geometr]],
-- [[kmotr]], [[lotr]], [[magistr]], [[metr]] (NOTE: is both animate and inanimate), [[ministr]], [[mistr]],
-- [[pediatr]], [[Petr]], [[psychiatr]], [[purkmistr]], [[setr]], [[šamstr]]; [[bobr]], [[fajnšmekr]],
-- [[humr]], [[hypochondr]], [[kapr]], [[lídr]], [[negr]], [[obr]], [[salamandr]], [[sólokapr]], [[švagr]],
-- [[tygr]], [[zlobr]], [[zubr]]
--
-- -- Animate nouns with optional palatalization (ř listed first): [[Silvestr]]; [[Alexandr]], [[snajpr]]
--
-- Note the inconsistencies, e.g. [[sfygmomanometr]] and [[ampérmetr]] don't palatalize but [[manometr]] and
-- [[miliampérmetr]] do it optionally. In reality, inanimate vocatives are extremely rare so this may not be the
-- final word.
if base.animacy == "inan" and rfind(stem, com.cons_c .. "r$") and not rfind(stem, "rr$") then
-- optional r -> ř
stem = {stem, palstem}
else
stem = palstem
end
elseif rfind(ending, "^[ěií]") or slot == "loc_s" and ending == "e" then
if rfind(stem, "ck$") and rfind(base.lemma, "ck$") then
-- IJP says nouns in -ck (back, comeback, crack, deadlock, hatchback, hattrick, joystick, paperback, quarterback,
-- rock, soundtrack, track, truck) simplify the resulting -cc ending in the loc_p to -c. Similarly [[quarterback]]
-- has nom_pl 'quarterbaci, quarterbackove'. We need to check the lemma as well because nouns in -cek don't do this.
stem = rsub(stem, "ck$", "k")
end
if base.velar then
-- [[petanque]] /petank/ -> loc pl 'petancích'.
stem = rsub(stem, "gu$", "g")
stem = rsub(stem, "qu$", "k")
end
-- loc_s of hard masculines is sometimes -e/ě; the user might indicate this as -e, which we should handle
-- correctly
stem = com.apply_second_palatalization(stem)
end
return stem, ending
end
local function skip_slot(number, slot)
return number == "sg" and rfind(slot, "_p$") or
number == "pl" and rfind(slot, "_s$")
end
-- Basic function to combine stem(s) and ending(s) and insert the result into the appropriate slot. `stems` is either
-- the `stems` object passed into the declension functions (containing the various stems; see below) or a string to
-- override the stem. (NOTE: If you pass a string in as `stems`, you should pass the value of `stems.footnotes` as the
-- value of `footnotes` as it will be lost otherwise. If you need to supply your own footnote in addition, use
-- iut.combine_footnotes() to combine any user-specified footnote(s) with your footnote(s).) `endings` is either a
-- string specifying a single ending or a list of endings. If `endings` is nil, no forms are inserted. If an ending is
-- "-", the value of `stems` is ignored and the lemma is used instead as the stem; this is important in case the user
-- used `decllemma:` to specify a declension lemma different from the actual lemma, or specified '.foreign' (which has
-- a similar effect).
local function add(base, slot, stems, endings, footnotes)
if not endings then
return
end
-- Call skip_slot() based on the declined number; if the actual number is different, we correct this in
-- decline_noun() at the end.
if skip_slot(base.number, slot) then
return
end
local stems_footnotes = type(stems) == "table" and stems.footnotes or nil
footnotes = iut.combine_footnotes(iut.combine_footnotes(base.footnotes, stems_footnotes), footnotes)
if type(endings) == "string" then
endings = {endings}
end
for _, ending in ipairs(endings) do
-- Compute the stem. If ending is "-", use the lemma regardless. Otherwise if `stems` is a string, use it.
-- Otherwise `stems` is an object containing four stems (vowel-vs-non-vowel cross regular-vs-oblique);
-- compute the appropriate stem based on the slot and whether the ending begins with a vowel.
local stem
if ending == "-" then
stem = base.actual_lemma
ending = ""
elseif type(stems) == "string" then
stem = stems
else
local is_vowel_ending = rfind(ending, "^" .. com.vowel_c)
if stems.oblique_slots == "all" or
(stems.oblique_slots == "gen_p" or stems.oblique_slots == "all-oblique") and slot == "gen_p" or
stems.oblique_slots == "all-oblique" and (slot == "ins_s" or slot == "dat_p" or slot == "loc_p" or slot == "ins_p") then
if is_vowel_ending then
stem = stems.oblique_vowel_stem
else
stem = stems.oblique_nonvowel_stem
end
elseif is_vowel_ending then
stem = stems.vowel_stem
else
stem = stems.nonvowel_stem
end
end
-- Maybe apply the first or second Slavic palatalization.
stem, ending = apply_special_cases(base, slot, stem, ending)
ending = iut.combine_form_and_footnotes(ending, footnotes)
local function combine_stem_ending(stem, ending)
return com.combine_stem_ending(base, slot, stem, ending)
end
iut.add_forms(base.forms, slot, stem, ending, combine_stem_ending)
end
end
local function process_slot_overrides(base, do_slot)
for slot, overrides in pairs(base.overrides) do
-- Call skip_slot() based on the declined number; if the actual number is different, we correct this in
-- decline_noun() at the end.
if skip_slot(base.number, slot) then
error("Override specified for invalid slot '" .. slot .. "' due to '" .. base.number .. "' number restriction")
end
if do_slot(slot) then
base.slot_overridden[slot] = true
base.forms[slot] = nil
for _, override in ipairs(overrides) do
for _, value in ipairs(override.values) do
local form = value.form
local combined_notes = iut.combine_footnotes(base.footnotes, value.footnotes)
if override.full then
if form ~= "" then
iut.insert_form(base.forms, slot, {form = form, footnotes = combined_notes})
end
else
-- Convert a null ending to "-" in the acc/voc sg slots so that e.g. [[Kerberos]] declared as
-- <m.sg.foreign.gena:u.acc-:a> works correctly and generates accusative 'Kerberos/Kerbera' not
-- #'Kerber/Kerbera'.
if (slot == "acc_s" or slot == "voc_s") and form == "" then
form = "-"
end
for _, stems in ipairs(base.stem_sets) do
add(base, slot, stems, form, combined_notes)
end
end
end
end
end
end
end
local function add_decl(base, stems,
gen_s, dat_s, acc_s, voc_s, loc_s, ins_s,
nom_p, gen_p, dat_p, acc_p, loc_p, ins_p, footnotes
)
add(base, "nom_s", stems, "-", footnotes)
add(base, "gen_s", stems, gen_s, footnotes)
add(base, "dat_s", stems, dat_s, footnotes)
add(base, "acc_s", stems, acc_s, footnotes)
add(base, "voc_s", stems, voc_s, footnotes)
add(base, "loc_s", stems, loc_s, footnotes)
add(base, "ins_s", stems, ins_s, footnotes)
if base.number == "pl" then
-- If this is a plurale tantum noun and we're processing the nominative plural, use the user-specified lemma
-- rather than generating the plural from the synthesized singular, which may not match the specified lemma
-- (e.g. [[tvargle]] "Olomouc cheese" using <m.pl.mixed> would try to generate 'tvargle/tvargly', and [[peníze]]
-- "money" using <m.pl.#ě.genpl-> would try to generate 'peněze').
local acc_p_like_nom = m_table.deepEquals(nom_p, acc_p)
nom_p = "-"
if acc_p_like_nom then
acc_p = "-"
end
end
add(base, "nom_p", stems, nom_p, footnotes)
add(base, "gen_p", stems, gen_p, footnotes)
add(base, "dat_p", stems, dat_p, footnotes)
add(base, "acc_p", stems, acc_p, footnotes)
add(base, "loc_p", stems, loc_p, footnotes)
add(base, "ins_p", stems, ins_p, footnotes)
end
local function add_sg_decl(base, stems,
gen_s, dat_s, acc_s, voc_s, loc_s, ins_s, footnotes
)
add_decl(base, stems, gen_s, dat_s, acc_s, voc_s, loc_s, ins_s,
nil, nil, nil, nil, nil, nil, footnotes)
end
local function add_pl_only_decl(base, stems,
gen_p, dat_p, acc_p, loc_p, ins_p, footnotes
)
add_decl(base, stems, nil, nil, nil, nil, nil, nil,
"-", gen_p, dat_p, acc_p, loc_p, ins_p, footnotes)
end
local function add_sg_decl_with_clitic(base, stems,
gen_s, clitic_gen_s, dat_s, clitic_dat_s, acc_s, clitic_acc_s, voc_s, loc_s, ins_s, footnotes, no_nom_s
)
if not no_nom_s then
add(base, "nom_s", stems, "-", footnotes)
end
add(base, "gen_s", stems, gen_s, footnotes)
add(base, "clitic_gen_s", stems, clitic_gen_s, footnotes)
add(base, "dat_s", stems, dat_s, footnotes)
add(base, "clitic_dat_s", stems, clitic_dat_s, footnotes)
add(base, "acc_s", stems, acc_s, footnotes)
add(base, "clitic_acc_s", stems, clitic_acc_s, footnotes)
add(base, "voc_s", stems, voc_s, footnotes)
add(base, "loc_s", stems, loc_s, footnotes)
add(base, "ins_s", stems, ins_s, footnotes)
end
local function handle_derived_slots_and_overrides(base)
local function is_non_derived_slot(slot)
return slot ~= "voc_p" and slot ~= "acc_s" and slot ~= "clitic_acc_s"
end
local function is_derived_slot(slot)
return not is_non_derived_slot(slot)
end
base.slot_overridden = {}
-- Handle overrides for the non-derived slots. Do this before generating the derived
-- slots so overrides of the source slots (e.g. nom_p) propagate to the derived slots.
process_slot_overrides(base, is_non_derived_slot)
-- Generate the remaining slots that are derived from other slots.
if not base.pron and not base.det then
-- Pronouns don't have a vocative (singular or plural).
iut.insert_forms(base.forms, "voc_p", base.forms.nom_p)
end
if not base.forms.acc_s and not base.slot_overridden.acc_s then
iut.insert_forms(base.forms, "acc_s", base.forms[base.animacy == "inan" and "nom_s" or "gen_s"])
end
if not base.forms.clitic_acc_s and not base.slot_overridden.clitic_acc_s then
iut.insert_forms(base.forms, "clitic_acc_s", base.forms[base.animacy == "inan" and "nom_s" or "clitic_gen_s"])
end
-- Handle overrides for derived slots, to allow them to be overridden.
process_slot_overrides(base, is_derived_slot)
-- Compute linked versions of potential lemma slots, for use in {{cs-noun}}.
-- We substitute the original lemma (before removing links) for forms that
-- are the same as the lemma, if the original lemma has links.
for _, slot in ipairs(potential_lemma_slots) do
iut.insert_forms(base.forms, slot .. "_linked", iut.map_forms(base.forms[slot], function(form)
if form == base.orig_lemma_no_links and rfind(base.orig_lemma, "%[%[") then
return base.orig_lemma
else
return form
end
end))
end
end
-- Table mapping declension types to functions to decline the noun. The function takes two arguments, `base` and
-- `stems`; the latter specifies the computed stems (vowel vs. non-vowel, singular vs. plural) and whether the noun
-- is reducible and/or has vowel alternations in the stem. Most of the specifics of determining which stem to use
-- and how to modify it for the given ending are handled in add_decl(); the declension functions just need to generate
-- the appropriate endings.
local decls = {}
-- Table specifying additional properties for declension types. Every declension type must have such a table, which
-- specifies which category or categories to add and what annotation to show in the title bar of the declension table.
--
-- * Only the `cat` property of this table is mandatory; there is also a `desc` property to specify the annotation, but
-- this can be omitted and the annotation will then be computed from the `cat` property. The `cat` property is either
-- a string, a list of strings or a function (of two arguments, `base` and `stems` as above) returning a string or
-- list of strings. The string can contain the keywords GENDER to substitute the gender (and animacy for masculine
-- nouns) and POS (to substitute the pluralized part of speech). The keyword GENPOS is equivalent to 'GENDER POS'. If
-- no keyword is present, ' GENPOS' is added onto the end. If only GENDER is present, ' POS' is added onto the end.
-- In all cases, the language name is added onto the beginning to form the full category name.
-- * The `desc` property is of the same form as the `cat` property and specifies the annotation to display in the title
-- bar (which may have the same format as the category minus the part of speech, or may be abbreviated). The value
-- may not be a list of strings, as only one annotation is displayed. If omitted, it is derived from the category
-- spec(s) by taking the last category (if more than one is given) and removing ' POS' before keyword substitution.
local declprops = {}
-- Return the default masculine animate nominative plural ending(s) given `base` and `stems`. This is called for hard
-- and soft masculines ending in a consonant, but not for nouns ending in a vowel, which have their own defaults
-- (particularly nouns in -a, where -ista/-ita/-asta behave differently from other nouns in -a).
local function default_masc_animate_nom_pl(base, stems)
return
-- [monosyllabic words: Dánové, Irové, králové, mágové, Rusové, sokové, synové, špehové, zběhové, zeťové, manové, danové
-- (but Žid → Židé, Čech → Češi).] -- There are too many exceptions to this to make a special rule. It is better to use
-- the overall default of -i and require that cases with -ove, -ove/-i, -i/-ove, etc. use overrides.
-- com.is_monosyllabic(base.lemma) and "ové" or
-- reducible terms in -Cek; order of -ové vs. -i sometimes varies:
-- [[fracek]] (ové/i), [[klacek]] (i/ové), [[macek]] (ové/i), [[nácek]] (i/ové), [[prcek]] (ové/i), [[racek]] (ové/i);
-- [[bazilišek]] (i/ové), [[černoušek]] (i/ové), [[drahoušek]] (ové/i), [[fanoušek]] (i/ové), [[františek]] (an/inan,
-- ends in -i/-y but not -ové), [[koloušek]] (-i only), [[kulíšek]] (i/ové), [[oříšek]] (i/ové), [[papoušek]] (-i only),
-- [[prášek]] (i/ové), [[šašek]] (i/ové).
-- make sure to check `stems` as we don't want to include non-reducible words in -Cek (but do want to include
-- [[quarterback]], with -i/-ové)
rfind(stems.vowel_stem, "^" .. com.lowercase_c .. ".*" .. com.cons_c .. "k$") and {"i", "ové"} or
-- [[stoik]], [[neurotik]], [[logik]], [[fyzik]], etc.
rfind(base.lemma, "^" .. com.lowercase_c .. ".ik$") and {"i", "ové"} or
-- barmani, gentlemani, jazzmani, kameramani, narkomani, ombudsmani, pivotmani, rekordmani, showmani, supermani, toxikomani
rfind(base.lemma, "^" .. com.lowercase_c .. ".*man$") and "i" or
-- terms ending in -an after a palatal or a consonant that doesn't change when palatalized, i.e. labial or l (but -man
-- forms -mani unless in a proper noun): Brňan → Brňané, křesťan → křesťané, měšťan → měšťané, Moravan → Moravané,
-- občan → občané, ostrovan → ostrované, Pražan → Pražané, Slovan → Slované, svatebčan → svatebčané, venkovan → venkované,
-- Australan → Australané; also s, because there are many demonyms in -san e.g. [[Andalusan]], [[Barbadosan]], [[Oděsan]],
-- and few proper nouns in -san; similarly z because of [[Belizan]], [[Gazan]], [[Kavkazan]], etc.; also w, which isn't a
-- normal consonant in Czech but occurs in [[Glasgowan]] and [[Zimbabwan]]; NOTE: a few misc words like [[pohan]] also
-- work this way but need manual overrides
rfind(base.lemma, "[" .. com.inherently_soft .. com.labial .. "wlsz]an$") and {"é", "i"} or -- most now can also take -i
-- proper names: Baťové, Novákové, Petrové, Tomášové, Vláďové; exclude demonyms (but include surnames)
rfind(base.lemma, "^" .. com.uppercase_c) and (base.surname or not rfind(base.lemma, "[eě]c$")) and "ové" or
-- demonyms: [[Albánec]], [[Gruzínec]], [[Izraelec]], [[Korejec]], [[Libyjec]], [[Litevec]], [[Němec]], [[Portugalec]]
rfind(base.lemma, "^" .. com.uppercase_c .. ".*[eě]c$") and "i" or
-- From here on down, we're dealing only with lowercase terms.
-- buditelé, budovatelé, čekatelé, činitelé, hostitelé, jmenovatelé, pisatelé, ručitelé, velitelé, živitelé
rfind(base.lemma, ".*tel$") and "é" or
-- nouns in -j: čaroděj → čarodějové, lokaj → lokajové, patricij → patricijové, plebej → plebejové, šohaj → šohajové, žokej → žokejové
-- nouns in -l: apoštol → apoštolové, břídil → břídilové, fňukal → fňukalové, hýřil → hýřilové, kutil → kutilové,
-- loudal → loudalové, mazal → mazalové, škrabal → škrabalové, škudlil → škudlilové, vyvrhel → vyvrhelové, žvanil → žvanilové
-- (we excluded those in -tel above)
rfind(base.lemma, ".*[jl]$") and "ové" or
-- archeolog → archeologové, biolog → biologové, geolog → geologové, meteorolog → meteorologové
rfind(base.lemma, ".*log$") and "ové" or
-- dramaturg → dramaturgové, chirurg → chirurgové
rfind(base.lemma, ".*urg$") and "ové" or
-- fotograf → fotografové, geograf → geografové, lexikograf → lexikografové
rfind(base.lemma, ".*graf$") and "ové" or
-- bibliofil → bibliofilové, germanofil → germanofilové
rfind(base.lemma, ".*fil$") and "ové" or
-- rusofob → rusofobové
rfind(base.lemma, ".*fob$") and "ové" or
-- agronom → agronomové, ekonom → ekonomové
rfind(base.lemma, ".*nom$") and "ové" or
"i"
end
decls["hard-m"] = function(base, stems)
-- Nouns ending in hard -c, e.g. [[hec]] "joke", [[kibuc]] "kibbutz", don't palatalize.
base.palatalize_voc = not rfind(stems.vowel_stem, "c$")
base.hard_c = true
local velar = base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$")
-- See [https://prirucka.ujc.cas.cz/en/?id=360] on declension of toponyms.
local toponym = base.animacy == "inan" and rfind(base.lemma, "^" .. com.uppercase_c)
-- Some toponyms take -a in the genitive singular, e.g. toponyms in -ín ([[Zlín]], [[Jičín]], [[Berlín]]);
-- -ýn ([[Hostýn]], [[Londýn]]); -ov ([[Havířov]]); and -ev ([[Bezdrev]]), as do some others, e.g. domestic
-- [[Beroun]], [[Brandýs]], [[Náchod]], [[Tábor]] and foreign [[Betlém]] "Bethlehem", [[Egypt]],
-- [[Jeruzalém]] "Jerusalem", [[Milán]] "Milan", [[Řím]] "Rome", [[Rýn]] "Rhine". Also some transferred from
-- common nouns e.g. ([[Nový]]) [[Kostel]], ([[Starý]]) [[Rybník]].
local toponym_gen_a = toponym and (rfind(base.lemma, "[íý]n$") or rfind(base.lemma, "[oe]v$"))
-- Toponyms in -ík (Mělník, Braník, Rakovník, Lipník) seem to fluctuate between gen -a and -u. Also some in
-- ‑štejn, ‑berg, ‑perk, ‑burk, ‑purk (Rabštejn, Heidelberg, Kašperk, Hamburk, Prešpurk) and some others:
-- Zbiroh, Kamýk, Příbor, Zábřeh, Žebrák, Praděd.
local toponym_gen_a_u = toponym and rfind(base.lemma, "ík$")
-- Toponyms that take -a in the genitive singular tend to take -ě in the locative singular; so do those in
-- -štejn (Rabštejn), -hrad (Petrohrad), -grad (Volgograd).
local toponym_loc_e = toponym and (toponym_gen_a or rfind(base.lemma, "štejn$") or rfind(base.lemma, "[gh]rad$"))
-- Toponyms in -ík seem to fluctuate between loc -ě and -u.
local toponym_loc_e_u = toponym_gen_a_u
-- Inanimate gen_s in -a other than toponyms in -ín/-ýn/-ev/-ov (e.g. [[zákon]] "law", [[oběd]] "lunch", [[kostel]] "church",
-- [[dnešek]] "today", [[leden]] "January", [[trujúhelník]] "triangle") needs to be given manually, using '<gena>'.
local gen_s = toponym_gen_a and "a" or toponym_gen_a_u and {"a", "u"} or base.animacy == "inan" and "u" or "a"
-- Animates with dat_s only in -u (e.g. [[člověk]] "person", [[Bůh]] "God") need to give this manually,
-- using '<datu>'.
local dat_s = base.animacy == "inan" and "u" or base.surname and "ovi" or {"ovi", "u"}
-- Inanimates with loc_s in -e/ě other than certain toponyms (see above) need to give this manually, using <locě>, but
-- it will trigger the second palatalization automatically.
local loc_s = toponym_loc_e and "ě" or toponym_loc_e_u and {"ě", "u"} or dat_s
-- Velar-stem animates with voc_s in -e (e.g. [[Bůh]] "God", voc_s 'Bože'; [[člověk]] "person", voc_s 'člověče')
-- need to give this manually using <voce>; it will trigger the first palatalization automatically.
local voc_s = velar and "u" or "e" -- 'e' will trigger first palatalization in apply_special_cases()
-- Nom_p in -i will trigger second palatalization in apply_special_cases().
local nom_p = base.animacy == "inan" and "y" or default_masc_animate_nom_pl(base, stems)
-- Per IJP and Janda and Townsend:
-- * loc_p in -ích is currently the default for velars but not otherwise; it will automatically trigger the second
-- palatalization (e.g. [[práh]] "threshold", loc_p 'prazích'). Otherwise, -ích needs to be given manually using
-- <locplích>, e.g. [[les]] "forest"; [[hotel]] "hotel"; likewise for loc_p in -ách (e.g. [[plech]]
-- "metal plate"), using <locplách>.
-- * Inanimate hard nouns in -c normally have -ech: [[hec]] "joke", [[tác]] "tray", [[truc]], [[kec]], [[frc]],
-- [[flanc]], [[kibuc]] "kibbutz", [[pokec]] "chat".
-- In the IJP tables, inanimate reducible nouns in -ček (and most in -cek, although there are many fewer; also some
-- in -žek, but in this case it's too inconsistent to make the default) regularly have both -ích and -ách in the
-- locative plural, while similar animate nouns only have -ích. This applies even to nouns like [[háček]] and
-- [[koníček]] that can be either animate or inanimate. Make sure to exclude nouns in -ck such as [[comeback]] and
-- [[joystick]], which have only -ích.
local loc_p =
base.animacy == "inan" and rfind(base.lemma, "[cč]ek$") and rfind(stems.vowel_stem, "[cč]k$") and {"ích", "ách"} or
velar and "ích" or "ech"
add_decl(base, stems, gen_s, dat_s, nil, voc_s, loc_s, "em",
-- loc_p in -ích not after velar stems (e.g. [[les]] "forest"; [[hotel]] "hotel") needs to be given manually
-- using <locplích>; it will automatically trigger the second palatalization; loc_p in -ách (e.g. [[plech]]
-- "metal plate") also needs to be given manually using <locplách>
nom_p, "ů", "ům", "y", loc_p, "y")
end
declprops["hard-m"] = {
desc = function(base, stems)
if base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$") then
return "velar GENDER"
else
return "hard GENDER"
end
end,
cat = function(base, stems)
if base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$") then
return "velar-stem"
else
return "hard"
end
end
}
decls["semisoft-m"] = function(base, stems)
-- Examples:
-- * Animate in -ius: génius, nuncius, nonius (breed of horse), notárius, ordinárius, patricius, primárius,
-- pronuncius, various names
-- * Animate in -eus: farizeus, basileus, pygmeus ([[skarabeus]] inflects hard in the plural), various names
-- * Inanimate in -ius: nonius (measuring device), rádius, sestercius
-- NOTE: Inanimate nouns in -eus (nukleus, choreus) inflect hard in the plural
local dat_s = base.animacy == "inan" and "u" or base.surname and "ovi" or {"ovi", "u"}
local loc_s = dat_s
local nom_p = base.animacy == "inan" and "e" or "ové"
add_decl(base, stems, "a", dat_s, nil, "e", loc_s, "em",
nom_p, "ů", "ům", "e", "ích", "i")
end
declprops["semisoft-m"] = {
cat = "semisoft"
}
decls["soft-m"] = function(base, stems)
base.palatalize_voc = true
-- animates with dat_s only in -i need to give this manually, using '<dati>'
local dat_s = base.animacy == "inan" and "i" or base.surname and "ovi" or {"ovi", "i"}
local loc_s = dat_s
-- Per IJP, the vast majority of soft masculine animates take -i in the voc_s, but those in -ec/-ěc take -e with first
-- palatalization to -če, e.g. [[otec]] "father", [[lovec]] "hunter", [[blbec]] "fool, idiot", [[horolezec]]
-- "mountaineer", [[znalec]] "expert", [[chlapec]] "boy", [[nadšenec]] "enthusiast", [[luněc]] (type of bird).
-- Demonyms but not surnames ending in -ec but beginning with a capital letter take either -e or -i (only the former
-- triggers the first palatalization). Examples: [[Portugalec]], [[Slovinec]] "Slovenian", [[Japonec]], [[Vietnamec]].
-- Not [[Kadlec]] (surname).
local voc_s = base.animacy == "an" and rfind(base.lemma, "[eě]c$") and stems.reducible and
(not base.surname and rfind(base.lemma, "^" .. com.uppercase_c) and {"e", "i"} or "e") or "i"
local nom_p = base.animacy == "inan" and "e" or default_masc_animate_nom_pl(base, stems)
-- nouns with loc_p in -ech (e.g. [[cíl]] "goal") need to give this manually, using <locplech>
add_decl(base, stems, "e", dat_s, nil, voc_s, loc_s, "em",
nom_p, "ů", "ům", "e", "ích", "i")
end
declprops["soft-m"] = {
cat = "soft"
}
decls["mixed-m"] = function(base, stems)
-- NOTE: IJP tends to list the soft endings first, but per their section on this
-- (https://prirucka.ujc.cas.cz/en/?id=220), the hard endings tend to predominate in modern use, so we list them
-- first.
if base.animacy == "an" then
if rfind(base.lemma, "l$") then
-- [[anděl]] "angel", [[manžel]] "husband", [[strašpytel]] "coward"; 'strašpytel' has a different declension
-- from the other two, with more soft forms. [[manžel]] has plural in -é or -ové and needs an override.
local dat_s = base.surname and "ovi" or {"ovi", "u"}
local loc_s = dat_s
add_decl(base, stems, "a", dat_s, nil, "i", loc_s, "em",
"é", "ů", "ům", {"y", "e"}, {"ech", "ích"}, {"y", "i"})
else
-- -s/-z: rorýs, platýs, pilous, markýz, všekaz, stávkokaz, penězokaz, listokaz, dřevokaz, zrnokaz, boss.
-- Others recently moving towards this declension: primas, karas, kalous, konipas, ibis, chabrus, chuďas,
-- kakabus, kliďas, kandrdas, morous, vágus.
-- Some names: Alois, Mánes.
-- Both hard and soft endings throughout. Most have -i and -ové in the nominative plural.
local dat_s = base.surname and "ovi" or {"u", "i", "ovi"}
local loc_s = dat_s
add_decl(base, stems, {"a", "e"}, dat_s, nil, {"e", "i"}, loc_s, "em",
{"i", "ové"}, "ů", "ům", {"y", "e"}, {"ech", "ích"}, {"y", "i"})
end
else
-- Given in IJP: burel, hnědel, chmel, krevel, kužel, námel, plevel, tmel, zádrhel, apríl, artikul, koukol, rubl,
-- úběl, plus reducible nouns cumel, chrchel, [[kotel]] "cauldron", sopel, uhel. Also [[městys]]. Many of them are listed in the
-- IJP tables with only hard or with fewer soft forms, so need to be investigated individually.
if rfind(base.lemma, "[ls]$") then
add_decl(base, stems, {"u", "e"}, {"u", "i"}, nil, {"e", "i"}, {"u", "e", "i"}, "em",
{"y", "e"}, "ů", "ům", {"y", "e"}, {"ech", "ích"}, {"y", "i"})
else
-- -n/-t; hard in the plural: hřeben, ječmen, [[kámen]] "stone", kmen, kořen, křemen, plamen,
-- [[pramen]] "source", [[řemen]] "strap", den, týden, [[loket]] "elbow".
-- There may be deviations (e.g. soft plural forms for [[den]]), so need to be investigated individually.
add_decl(base, stems, {"u", "e"}, {"u", "i"}, nil, "i", {"u", "i"}, "em",
"y", "ů", "ům", "y", "ech", "y")
end
end
end
declprops["mixed-m"] = {
cat = "mixed"
}
decls["a-m"] = function(base, stems)
-- husita → husité, izraelita → izraelité, jezuita → jezuité, kosmopolita → kosmopolité, táborita → táborité
-- fašista → fašisté, filatelista → filatelisté, fotbalista → fotbalisté, kapitalista → kapitalisté,
-- marxista → marxisté, šachista → šachisté, terorista → teroristé. NOTE: most these words actually appear in
-- the IJP tables with -é/-i, so we go accordingly.
--
-- gymnasta → gymnasté, fantasta → fantasté; also chiliasta, orgiasta, scholiasta, entuziasta, dynasta, ochlasta,
-- sarkasta, vymasta; NOTE: Only 'gymnasta' actually given with just -é; 'fantasta' with -ové/-é, 'dynasta' and
-- 'ochlasta' with just -ové, vymasta not in IJP (no plural given in SSJC), and the rest with -é/-i. So we go
-- accordingly.
local it_ist = rfind(stems.vowel_stem, "is?t$") or rfind(stems.vowel_stem, "ast$")
-- Velar nouns (e.g. [[sluha]] "servant") have -ích in the loc_p (which triggers the second palatalization)
-- instead of -ech. Nouns whose stem ends in a soft consonant ([[rikša]], [[paša]], [[bača]], [[mahárádža]],
-- [[paňáca]], etc.) behave likewise.
-- FIXME: [[pária]] "pariah", [[Maria]] etc.
local loc_p =
(base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$") or rfind(stems.vowel_stem, com.inherently_soft_c .. "$")) and
"ích" or "ech"
add_decl(base, stems, "y", "ovi", "u", "o", "ovi", "ou",
it_ist and {"é", "i"} or "ové", "ů", "ům", "y", loc_p, "y")
end
declprops["a-m"] = {
cat = "GENPOS in -a"
}
decls["e-m"] = function(base, stems)
-- [[zachránce]] "savior"; [[soudce]] "judge"; etc.
-- At least two inanimates: [[průvodce]] "guide, guidebook; computing wizard"; [[správce]] "manager (software program), configuration program"
local dat_s = base.animacy == "inan" and "i" or base.surname and "ovi" or {"ovi", "i"}
local loc_s = dat_s
add_decl(base, stems, "e", dat_s, nil, "-", loc_s, "em",
-- nouns with -ové as well (e.g. [[soudce]] "judge") will need to specify that manually, e.g. <nompli:ové>
base.animacy == "inan" and "e" or "i", "ů", "ům", "e", "ích", "i")
end
declprops["e-m"] = {
cat = "GENPOS in -e"
}
decls["i-m"] = function(base, stems)
-- [[kivi]] "kiwi (bird)"; [[kuli]] "coolie"; [[lori]] "lory, lorikeet (bird)" (loc_pl 'loriech/loriích/lorich');
-- [[vini]] "parrot of the genus Vini"; [[yetti]]/[[yeti]] "yeti". other examples: [[aguti]], [[efendi]], [[hadži]],
-- [[pekari]], [[regenschori]], [[yetti]]/[[yeti]].
--
-- [[grizzly]]/[[grizly]] "grizzly bear"; [[pony]] "pony"; [[husky]] "husky"; [[dandy]] "dandy"; [[Billy]] "billy".
--
-- NOTE: Some nouns in -y are regular soft stems, e.g. [[gay]] "gay person"; [[gray]] "gray (unit of absorbed
-- radiation)"; [[Nagy]] (surname).
--
-- NOTE: The stem ends in -i/-y.
add_decl(base, stems, "ho", "mu", nil, "-", "m", "m",
-- ins_pl 'kivii/kivimi'
{"ové", ""}, {"ů", "ch"}, {"ům", "m"}, {"e", ""}, {"ích", "ch"}, {"i", "mi"})
end
declprops["i-m"] = {
cat = "GENPOS in -i/-y"
}
decls["í-m"] = function(base, stems)
-- [[kádí]] "qadi (Islamic judge)", [[mahdí]] "Mahdi (Islamic prophet)", [[muftí]] "mufti (Islamic scholar)",
-- [[sipáhí]] "sipahi (Algerian cavalryman in the French army)"
--
-- No obvious examples in -ý, but the support is there.
--
-- NOTE: The stem ends in -í/-ý.
add_decl(base, stems, "ho", "mu", nil, "-", "m", "m",
{"ové", ""}, {"ů", "ch"}, {"ům", "m"}, {"e", ""}, "ích", "mi")
end
declprops["í-m"] = {
cat = "GENPOS in -í/-ý"
}
decls["ie-m"] = function(base, stems)
-- [[zombie]] "zombie" (also fem/neut), [[hippie]] "hippie", [[yuppie]] "yuppie", [[rowdie]] "rowdy/hooligan"
--
-- NOTE: The stem ends in -i (not -ie, because of the plural).
add_decl(base, stems, "eho", "emu", nil, "-", "em", "em",
{"ové", "es"}, {"ů", "es"}, {"ům", "es"}, {"e", "es"}, {"ích", "es"}, {"i", "es"})
end
declprops["ie-m"] = {
cat = "GENPOS in -ie"
}
decls["ee-m"] = function(base, stems)
-- [[Yankee]] "Yankee"
--
-- NOTE: The stem ends in -ee.
add_decl(base, stems, "ho", "mu", nil, "-", "m", "m",
"ové", "ů", "ům", "e", "ích", "i")
end
declprops["ee-m"] = {
cat = "GENPOS in -ee"
}
decls["o-m"] = function(base, stems)
-- [[kápo]] "head, leader"; [[lamželezo]] "strongman"; [[torero]] "bullfighter"; [[žako]] "African gray parrot";
-- [[dingo]] "dingo"; [[kakapo]] "kakapo" (given in Wiktionary with dat_s/loc_s in -ovi only not -ovi/-u; probably
-- wrong but not in IJP); [[maestro]] "maestro"; [[Bruno]] "Bruno", [[Hugo]] "Hugo"; [[Ivo]] "Yves" (these names
-- are singular-only per IJP); [[Kvido]] "Guido, Guy" (per IJP has accusative in -a or -ona); [[Oto]] "Otto" (per
-- IJP also declinable like virile -a masculines; singular-only); [[Kuřátko]] (a surname; how declined?);
-- [[Picasso]] (surname; how declined?); [[Pluto]] "Pluto (God)", also "Pluto (planet)", which is inanimate;
-- [[Samo]]/[[Sámo]] "Samo (7th century Slavic ruler)" (dat_s/loc_s only in -ovi, needs override); [[Tomio]]
-- "Tomio (Japanese male given name)" (how declined?); [[nemakačenko]] "idler, loafer" (given in Wiktionary with
-- dat_s/loc_s in -ovi only, as for [[kakapo]]); [[nefachčenko]] "idler, loafer"; note also [[gadžo]] "gadjo",
-- which has a unique declension.
--
-- Velar nouns ([[žako]], [[dingo]], etc.) have -ích in the loc_p (which triggers the second palatalization)
-- instead of -ech.
local velar = base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$")
-- inanimates e.g. [[Pluto]] (planet) have -u only, like for normal hard masculines.
local dat_s = base.animacy == "inan" and "u" or base.surname and "ovi"or {"ovi", "u"}
local loc_s = dat_s
local loc_p = velar and "ích" or "ech"
add_decl(base, stems, "a", dat_s, nil, "-", loc_s, "em",
"ové", "ů", "ům", "y", loc_p, "y")
end
declprops["o-m"] = {
cat = "GENPOS in -o"
}
decls["u-m"] = function(base, stems)
-- [[emu]] "emu", [[guru]] "guru", [[kakadu]] "cockatoo", [[marabu]] "marabou" (declined the same way)
-- [[Osamu]] "Osamu (Japanese male given name)" [how declined?]
-- [[Višnu]] "Vishnu" (declined like [[guru]] but singular-only)
-- [[budižkničemu]] "good-for-nothing, ne'er-do-well" (indeclinable in the singular, declinable as masculine hard stem
-- budižkničemové etc. in the plural, declinable as feminine hard stem budižkničemy etc. in the plural when feminine).
--
-- NOTE: The stem ends in -u.
add_decl(base, stems, "a", "ovi", nil, "-", "ovi", "em",
"ové", "ů", "ům", "y", "ech", "y")
end
declprops["u-m"] = {
cat = "GENPOS in -u"
}
decls["tstem-m"] = function(base, stems)
-- E.g. [[kníže]] "prince", [[hrabě]] "earl", [[markrabě]] "margrave".
add_decl(base, stems, "ete", "eti", "ete", "-", "eti", "etem",
"ata", "at", "atům", "ata", "atech", "aty")
end
declprops["tstem-m"] = {
cat = "t-stem"
}
decls["hard-f"] = function(base, stems)
base.no_palatalize_c = true
if base.c_as_k then
-- forms like 'ayahuascy' are allowed.
base.hard_c = true
end
-- [[skica]] "sketch", [[gejša]] "geisha", [[rikša]] "rickshaw (vehicle)"; [[arakača]], [[čača]], [[čiča]] (drink),
-- [[dača]] "dacha", [[gutaperča]] "guttapercha", [[viskača]]; [[babča]], [[číča]], [[káča]], [[mamča]], [[úča]].
-- Also appears to apply to ď (e.g. [[Naďa]]) and ť, as well as certain words with stems in -ň and -j (e.g. [[doňa]],
-- and personal names such as [[Táňa]] and [[Darja]]), which normally have a mixed declension.
local soft_cons = rfind(base.vowel_stem, "[cčšžďťjň]$") and not base.c_as_k
local dat_s = soft_cons and {"ě", "i"} or "ě"
local loc_s = dat_s
add_decl(base, stems, "y", dat_s, "u", "o", loc_s, "ou",
"y", "", "ám", "y", "ách", "ami")
end
declprops["hard-f"] = {
cat = "hard"
}
decls["soft-f"] = function(base, stems)
-- This also includes feminines in -ie, e.g. [[belarie]], [[signorie]], [[uncie]], and feminines in -oe, e.g.
-- [[kánoe]], [[aloe]] and medical terms like [[dyspnoe]], [[apnoe]], [[hemoptoe]], [[kalanchoe]].
-- Nouns in -ice like [[ulice]] "street" have null genitive plural e.g. 'ulic'; nouns in -yně e.g. [[přítelkyně]]
-- "girlfriend" have gen pl 'přítelkyň' or 'přítelkyní' with two possible endings; otherwise -í. (Alternation between
-- -ň and -n and between -e and -ě handled automatically by combine_stem_ending().)
local gen_p = rfind(base.lemma, "ice$") and "" or rfind(base.lemma, "yně$") and {"", "í"} or "í"
-- Vocative really ends in -e, not just a copy of the nominative; cf. [[sinfonia]], which is soft-f except for
-- the nominative and has -e in the vocative singular.
add_decl(base, stems, "e", "i", "i", "e", "i", "í",
"e", gen_p, "ím", "e", "ích", "emi")
end
declprops["soft-f"] = {
cat = "soft"
}
decls["mixed-f"] = function(base, stems)
-- Lowercase nouns in -ňa (e.g. bárišňa/báryšňa, doňa, dueňa, piraňa, vikuňa) and -ja (e.g. maracuja, papája, sója).
-- Also non-personal proper nouns in -ňa (e.g. [[Keňa]] "Kenya") and -ja (e.g. [[Troja]]/[[Trója]] "Troy",
-- [[Amudarja]] "Amu Darya"). Does not appear to apply to personal proper nouns (e.g. [[Táňa]] "Tanya", [[Darja]] "Daria"),
-- which usually decline like [[gejša]], [[dača]], [[skica]]).
add_decl(base, stems, {"i", "e"}, {"e", "i"}, "u", "o", {"e", "i"}, "ou",
{"i", "e"}, {"", "í"}, {"ám", "ím"}, {"i", "e"}, {"ách", "ích"}, {"ami", "emi"})
end
declprops["mixed-f"] = {
cat = "mixed"
}
decls["cons-f"] = function(base, stems)
-- e.g. [[dlaň]] "palm (of the hand)"
add_decl(base, stems, "e", "i", "-", "i", "i", "í",
"e", "í", "ím", "e", "ích", "emi")
end
declprops["cons-f"] = {
cat = "soft zero-ending"
}
decls["istem-f"] = function(base, stems)
add_decl(base, stems, "i", "i", "-", "i", "i", "í",
-- See above under apply_special_cases(); -E causes depalatalization of ť/ď/ň.
"i", "í", "Em", "i", "Ech", "mi")
end
declprops["istem-f"] = {
cat = "i-stem"
}
decls["mixed-istem-f"] = function(base, stems)
local gen_s, nom_p, dat_p, loc_p, ins_p
-- Use of ě vs E below is intentional. Contrast [[oběť]] dat pl 'obětem' (depalatalizing) with [[nit]] ins pl
-- 'nitěmi' (palatalizing). See comment above under apply_special_cases().
if base.mixedistem == "pěst" then
-- pěst, past, mast, lest [reducible; ins pl 'lstmi'], pelest, propust, plst, oběť, zeď [reducible; ins pl
-- 'zdmi'], paměť [ins pl 'pamětmi/paměťmi]
gen_s, nom_p, dat_p, loc_p, ins_p = "i", "i", {"ím", "Em"}, {"ích", "Ech"}, "mi"
elseif base.mixedistem == "moc" then
-- moc, nemoc, pomoc, velmoc; NOTE: pravomoc has -i/-e alternation in gen_s, nom_p
gen_s, nom_p, dat_p, loc_p, ins_p = "i", "i", {"Em", "ím"}, {"Ech", "ích"}, "ěmi"
elseif base.mixedistem == "myš" then
-- myš, veš [reducible, ins pl vešmi], hruď, měď, pleť, spleť, směs, smrt, step, odpověď [ins pl 'odpověď'mi/odpovědmi'], šeď,
-- závěť [ins pl 'závěťmi/závětmi'], plsť [ins pl 'plstmi']
gen_s, nom_p, dat_p, loc_p, ins_p = "i", "i", "ím", "ích", "mi"
elseif base.mixedistem == "noc" then
-- lež [reducible], noc, mosaz, rez [reducible], ves [reducible], mysl, sůl, běl, žluť
gen_s, nom_p, dat_p, loc_p, ins_p = "i", "i", "ím", "ích", "ěmi"
elseif base.mixedistem == "žluč" then
-- žluč, moč, modř, čeleď, kapraď, záď, žerď, čtvrť/čtvrt, drť, huť, chuť, nit, pečeť, závrať, pouť, stať, ocel
gen_s, nom_p, dat_p, loc_p, ins_p = {"i", "ě"}, {"i", "ě"}, "ím", "ích", "ěmi"
elseif base.mixedistem == "loď" then
-- loď, suť
gen_s, nom_p, dat_p, loc_p, ins_p = {"i", "ě"}, {"i", "ě"}, "ím", "ích", {"ěmi", "mi"}
else
error(("Unrecognized value '%s' for 'mixedistem', should be one of 'pěst', 'moc', 'myš', 'noc', 'žluč' or 'loď'"):
format(base.mixedistem))
end
add_decl(base, stems, gen_s, "i", "-", "i", "i", "í",
nom_p, "í", dat_p, nom_p, loc_p, ins_p)
end
declprops["mixed-istem-f"] = {
-- Include subtype in the table description but not in the category to avoid too many categories.
desc = function(base, stems)
return ("mixed i-stem [type '%s'] GENDER"):format(base.mixedistem)
end,
cat = function(base, stems)
return {"mixed i-stem", ("mixed i-stem GENPOS (type '%s')"):format(base.mixedistem)}
end,
}
decls["i-f"] = function(base, stems)
-- [[máti]] "mother" (singular-only), [[pramáti]] "foremother"; very similar to the 'noc' mixed i-stem type
add_decl(base, stems, "i", "i", "-", "i", "i", "í",
"i", "í", "ím", "i", "ích", "ěmi")
end
declprops["i-f"] = {
cat = "GENPOS in -i"
}
decls["ea-f"] = function(base, stems)
-- Stem ends in -e.
if base.tech then
-- diarea, gonorea, chorea, nauzea, paleogea, seborea, trachea
add_decl(base, stems, "y", "i", "u", "o", "i", "ou",
"y", "í", {"ám", "ím"}, "y", {"ách", "ích"}, "ami")
elseif base.persname then
-- Medea, Andrea, etc.
add_decl(base, stems, {"y", "je", "ji"}, {"e", "je", "ji"}, "u", "o", {"e", "je", "ji"}, "ou",
-- this is a guess, based on the same as below; plural of personal names not attested in IJP
{"y", "je"}, "jí", {"ám", "jím"}, {"y", "je"}, {"ách", "jích"}, {"ami", "jemi"})
else
-- idea, odysea ("wandering pilgrimage"), orchidea, palea, spirea
-- proper names Galilea, Judea, Caesarea, Korea, Odyssea ("epic poem")
add_decl(base, stems, {"y", "je"}, "ji", "u", "o", "ji", {"ou", "jí"},
{"y", "je"}, "jí", {"ám", "jím"}, {"y", "je"}, {"ách", "jích"}, {"ami", "jemi"})
end
end
declprops["ea-f"] = {
cat = function(base, stems)
if base.tech then
return {"GENPOS in -ea", "technical GENPOS in -ea"}
else
return "GENPOS in -ea"
end
end
}
decls["oa-f"] = function(base, stems)
-- Stem ends in -o/-u.
-- stoa, kongrua; proper names Samoa, Managua, Nikaragua, Capua
add_decl(base, stems, "y", "i", "u", "o", "i", "ou",
"y", "í", "ám", "y", "ách", "ami")
end
declprops["oa-f"] = {
cat = "GENPOS in -oa/-ua"
}
decls["ia-f"] = function(base, stems)
-- Stem ends in -i.
-- belaria, signoria, uncia; paranoia, sinfonia;
-- proper names Alexandria, Alexia, Livia, Monrovia, Olympia, Sofia
-- Identical to soft declension except for nom sg.
decls["soft-f"](base, stems)
end
declprops["ia-f"] = {
cat = "GENPOS in -ia"
}
decls["hard-n"] = function(base, stems)
local velar = base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$")
-- NOTE: Per IJP it appears the meaning of the preceding preposition makes a difference: 'o' = "about" takes
-- '-u' or '-ě', while 'na/v' = "in, on" normally takes '-ě'.
local loc_s =
-- Exceptions: [[mléko]] "milk" ('mléku' or 'mléce'), [[břicho]] "belly" ('břiše' or (less often) 'břichu'),
-- [[roucho]] ('na rouchu' or 'v rouše'; why the difference in preposition?).
velar and "u" or
-- IJP says nouns in -dlo take only -e but the declension tables show otherwise. It appears -u is possible
-- but significantly less common. Other nouns in -lo usually take just -e ([[čelo]] "forehead",
-- [[kolo]] "wheel", [[křeslo]] "armchair", [[máslo]] "butter", [[peklo]] "hell", [[sklo]] "glass",
-- [[světlo]] "light", [[tělo]] "body"; but [[číslo]] "number' with -e/-u; [[zlo]] "evil" and [[kouzlo]] "spell"
-- with -u/-e).
rfind(base.lemma, "dlo$") and {"ě", "u"} or
rfind(base.lemma, "lo$") and "ě" or
(rfind(base.lemma, "[sc]tvo$") or rfind(base.lemma, "ivo$")) and "u" or
-- Per IJP: Borrowed words and abstracts take -u (e.g. [[banjo]]/[[bendžo]]/[[benžo]] "banjo", [[depo]] "depot",
-- [[chladno]] "cold", [[mokro]] "damp, dampness", [[právo]] "law, right", [[šeru]] "twilight?",
-- [[temno]] "dark, darkness", [[tempo]] "rate, tempo", [[ticho]] "quiet, silence", [[vedro]] "heat") and others
-- often take -ě/-u. Formerly we defaulted to -ě/-u but it seems better to default to just -u, similarly to hard
-- masculines.
-- {"ě", "u"}
"u"
local loc_p =
-- Note, lemmas in -isko also have mixed-reducible as default, handled in determine_default_reducible().
-- Note also, ending -ích triggers the second palatalization.
rfind(base.lemma, "isko$") and {"ích", "ách"} or
-- Diminutives in -ko, -čko, -tko; also [[lýtko]], [[děcko]], [[vrátka]], [[dvířka]], [[jho]], [[roucho]],
-- [[tango]], [[mango]], [[sucho]], [[blaho]], [[víko]], [[echo]], [[embargo]], [[largo]], [[jericho]] (from
-- IJP). Also foreign nouns in -kum: [[antibiotikum]], [[narkotikum]], [[afrodiziakum]], [[analgetikum]], etc.
-- [[jablko]] "apple" has '-ách' or '-ích' and needs an override; likewise for [[vojsko]] "troop"; [[riziko]]
-- "risk" normally has '-ích' and needs and override.
velar and "ách" or
"ech"
add_decl(base, stems, "a", "u", "-", "-", loc_s, "em",
"a", "", "ům", "a", loc_p, "y")
-- FIXME: paired body parts e.g. [[rameno]] "shoulder" (gen_p/loc_p 'ramenou/ramen'), [[koleno]] "knee"
-- (gen_p/loc_p 'kolenou/kolen'), [[prsa]] "chest, breasts" (plurale tantum; gen_p/loc_p 'prsou').
-- FIXME: Nouns with both neuter and feminine forms in the plural, e.g. [[lýtko]] "calf (of the leg)",
-- [[bedro]] "hip", [[vrátka]] "gate".
end
declprops["hard-n"] = {
desc = function(base, stems)
if base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$") then
return "velar GENDER"
else
return "hard GENDER"
end
end,
cat = function(base, stems)
if base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$") then
return "velar-stem"
else
return "hard"
end
end
}
decls["semisoft-n"] = function(base, stems)
-- Examples:
-- * In -ao: [[kakao]] "cacao", [[makao]] "Macao (gambling card game, see Wikipedia)", [[curaçao]] "curaçao (liqueur)"
-- (IJP gives gen pl 'curaç' but ASSC [https://slovnikcestiny.cz/heslo/cura%C3%A7ao/0/9967] says 'curaçí' as expected),
-- [[farao]] "faro (card game)"; also [[Makao]], [[Pathet Lao]], but these are sg-only
-- * In -eo: [[stereo]], [[rodeo]], [[video]], [[solideo]]; also [[Borneo]], [[Montevideo]], but these are sg-only
-- * In -io: [[rádio]] "radio", [[gramorádio]], [[studio]], [[scenário]], [[trio]], [[ážio]] (also spelled [[agio]]),
-- [[disážio]], [[folio]], [[vibrio]]; also [[arpeggio]], [[adagio]], [[capriccio]], [[solfeggio]] although
-- pronounced the Italian way without /i/; also [[Ohio]], [[Ontario]], [[Tokio]], but these are sg-only
-- * In -uo: only [[duo]]
-- * In -yo: only [[embryo]]
-- * In -eum: [[muzeum]], [[lyceum]], [[linoleum]], [[ileum]], etc.
-- * In -ium: [[atrium]] "atrium", most chemical elements, etc.
-- * In -uum: [[individuum]], [[kontinuum]], [[premenstruum]], [[residuum]], [[vakuum]]/[[vacuum]]
-- * In -yum: only [[baryum]] "barium" (none others in SSJC)
-- * In -ion: [[enkómion]] "encomium", [[eufonion]] (variant of [[eufonium]]), [[amnion]], [[ganglion]], [[gymnasion]],
-- [[scholion]], [[kritérion]] (rare for [[kritérium]]), [[onomatopoion]] (variant of [[onomatopoie]]),
-- [[symposion]], [[synedrion]]; also [[Byzantion]], but this is sg-only; most words in -ion are masculine
-- Hard in the singular, mostly soft in the plural. Those in -eo and -uo have alternative hard endings in the
-- dat/loc/ins pl, but not those in -eum or -uum. Those in -ao have only hard endings except in the gen pl. (There are
-- apparently no neuters in -eon; those in -eon or -yon e.g. [[akordeon]], [[neon]], [[nukleon]], [[karyon]], [[Lyon]]
-- are masculine.)
local dat_p, loc_p, ins_p
if rfind(base.actual_lemma, "ao$") then
dat_p, loc_p, ins_p = "ům", "ech", "y"
elseif rfind(base.actual_lemma, "[eu]o$") then
dat_p, loc_p, ins_p = {"ím", "ům"}, {"ích", "ech"}, {"i", "y"}
else
dat_p, loc_p, ins_p = "ím", "ích", "i"
end
add_decl(base, stems, "a", "u", "-", "-", "u", "em",
"a", "í", dat_p, "a", loc_p, ins_p)
end
declprops["semisoft-n"] = {
cat = "semisoft"
}
decls["soft-n"] = function(base, stems)
-- Examples: [[moře]] "sea", [[slunce]] "sun", [[srdce]] "heart", [[citoslovce]] "interjection",
-- [[dopoledne]] "late morning", [[odpoledne]] "afternoon", [[hoře]] "sorrow, grief" (archaic or literary),
-- [[inhalace]] "inhalation", [[kafe]] "coffee", [[kanape]] "sofa", [[kutě]] "bed", [[Labe]] "Elbe (singular only)",
-- [[líce]] "cheek", [[lože]] "bed", [[nebe]] "sky; heaven", [[ovoce]] "fruit", [[pole]] "field", [[poledne]]
-- "noon", [[příslovce]] "adverb", [[pukrle]] "curtsey" (also t-n), [[vejce]] "egg" (NOTE: gen pl 'vajec').
--
-- Many nouns in -iště, with null genitive plural.
local gen_p = rfind(base.vowel_stem, "išť$") and "" or "í"
add_decl(base, stems, "e", "i", "-", "-", "i", "em",
"e", gen_p, "ím", "e", "ích", "i")
-- NOTE: Some neuter words in -e indeclinable, e.g. [[Belize]], [[Chile]], [[garde]] "chaperone", [[karaoke]],
-- [[karate]], [[re]] "double raise (card games)", [[ukulele]], [[Zimbabwe]], [[zombie]] (pl. 'zombie' or
-- 'zombies')
-- some nearly indeclinable, e.g. [[finále]], [[chucpe]]; see mostly-indecl below
end
declprops["soft-n"] = {
cat = "soft"
}
decls["í-n"] = function(base, stems)
-- [[nábřeží]] "waterfront" and a zillion others; also [[úterý]] "Tuesday".
-- NOTE: The stem ends in -í/-ý.
add_decl(base, stems, "", "", "-", "-", "", "m",
"", "", "m", "", "ch", "mi")
end
declprops["í-n"] = {
cat = "GENPOS in -í/-ý"
}
decls["n-n"] = function(base, stems)
-- E.g. [[břemeno]] "burden" (also [[břímě]], use 'decllemma:'); [[písmeno]] "letter"; [[plemeno]] "breed";
-- [[rameno]] "shoulder" (also [[rámě]], use 'decllemma:'); [[semeno]] "seed" (also [[sémě]], [[símě]], use
-- 'decllemma:'); [[temeno]] "crown (of the head)"; [[vemeno]] "udder"
add_decl(base, stems, {"a", "e"}, {"i", "u"}, "-", "-", {"ě", "i", "u"}, "em",
"a", "", "ům", "a", "ech", "y")
end
declprops["n-n"] = {
cat = "n-stem"
}
decls["tstem-n"] = function(base, stems)
-- E.g. [[batole]] "toddler", [[čuně]] "pig", [[daňče]] "fallow deer fawn", [[děvče]] "girl", [[ďouče]] "girl"
-- (dialectal), [[dítě]] "child" (NOTE: feminine in the plural [[děti]], declined as a feminine i-stem), [[dvojče]]
-- "twin", [[hádě]] "young snake", [[house]] "gosling", [[hříbě]] "foal" (pl. hříbata), [[jehně]] "lamb", [[kavče]]
-- "young jackdaw; chough", [[káče]] "duckling", [[káně]] "buzzard chick" (NOTE: also feminine meaning "buzzard"),
-- [[klíště]] "tick", [[kose]] "blackbird chick" (rare), [[kuře]] "chick (young chicken)", [[kůzle]]
-- "kid (young goat)", [[lišče]] "fox cub", [[lvíče]] "lion cub", [[medvídě]] "bear cub", [[mládě]] "baby animal",
-- [[morče]] "guinea pig", [[mrně]] "toddler", [[nemluvně]] "infant", [[novorozeně]] "newborn", [[orle]] "eaglet",
-- [[osle]] "donkey foal", [[pachole]] "boy (obsolete); page, squire", [[páže]] "page, squire", [[podsvinče]]
-- "suckling pig", [[prase]] "pig", [[prtě]] "toddler", [[ptáče]] "chick (young bird)",
-- [[robě]] "baby, small child", [[saranče]] "locust" (NOTE: also feminine), [[sele]] "piglet",
-- [[slůně]] "baby elephant", [[škvrně]] "toddler", [[štěně]] "puppy", [[tele]] "calf", [[velbloudě]] "camel colt",
-- [[vlče]] "wolf cub", [[vnouče]] "grandchild", [[vyžle]] "small hunting dog; slender person",
-- [[zvíře]] "animal, beast".
--
-- Some referring to inanimates, e.g. [[doupě]] "lair" (pl. doupata), [[koště]]/[[chvoště]] "broom", [[paraple]]
-- "umbrella", [[poupě]] "bud", [[pukrle]] "curtsey" (also soft-n), [[rajče]] "tomato", [[šuple]] "drawer",
-- [[varle]] "testicle", [[vole]] "craw (of a bird); goiter".
add_decl(base, stems, "ete", "eti", "-", "-", "eti", "etem",
"ata", "at", "atům", "ata", "atech", "aty")
end
declprops["tstem-n"] = {
cat = "t-stem"
}
decls["ma-n"] = function(base, stems)
-- E.g. [[drama]] "drama", [[dogma]] "dogma", [[aneurysma]]/[[aneuryzma]] "aneurysm", [[dilema]] "dilemma",
-- [[gumma]] "gumma" (non-cancerous syphilitic growth), [[klima]] "climate", [[kóma]] "coma", [[lemma]] "lemma",
-- [[melisma]] "melisma", [[paradigma]] "paradigm", [[plasma]]/[[plazma]] "plasma [partly ionized gas]"
-- (note [[plasma]]/[[plazma]] "blood plasma" is feminine), [[revma]] "rheumatism", [[schéma]] "schema, diagram",
-- [[schisma]]/[[schizma]] "schism", [[smegma]] "smegma", [[sofisma]]/[[sofizma]] "sophism", [[sperma]] "sperm",
-- [[stigma]] "stigma", [[téma]] "theme", [[trauma]] "trauma", [[trilema]] "trilemma", [[zeugma]] "zeugma".
add_decl(base, stems, "atu", "atu", "-", "-", "atu", "atem",
"ata", "at", "atům", "ata", "atech", "aty")
end
declprops["ma-n"] = {
cat = "ma-stem"
}
decls["adj"] = function(base, stems)
local props = {}
local propspec = table.concat(props, ".")
if propspec ~= "" then
propspec = "<" .. propspec .. ">"
end
local adj_alternant_multiword_spec = require("Module:cs-adjective").do_generate_forms({base.lemma .. propspec})
local function copy(from_slot, to_slot)
base.forms[to_slot] = adj_alternant_multiword_spec.forms[from_slot]
end
if base.number ~= "pl" then
if base.gender == "m" then
copy("nom_m", "nom_s")
copy("gen_mn", "gen_s")
copy("dat_mn", "dat_s")
copy("loc_mn", "loc_s")
copy("ins_mn", "ins_s")
elseif base.gender == "f" then
copy("nom_f", "nom_s")
copy("gen_f", "gen_s")
copy("dat_f", "dat_s")
copy("acc_f", "acc_s")
copy("loc_f", "loc_s")
copy("ins_f", "ins_s")
else
copy("nom_n", "nom_s")
copy("gen_mn", "gen_s")
copy("dat_mn", "dat_s")
copy("acc_n", "acc_s")
copy("loc_mn", "loc_s")
copy("ins_mn", "ins_s")
end
if not base.forms.voc_s then
iut.insert_forms(base.forms, "voc_s", base.forms.nom_s)
end
end
if base.number ~= "sg" then
if base.gender == "m" then
if base.animacy == "an" then
copy("nom_mp_an", "nom_p")
else
copy("nom_fp", "nom_p")
end
copy("acc_mfp", "acc_p")
elseif base.gender == "f" then
copy("nom_fp", "nom_p")
copy("acc_mfp", "acc_p")
else
copy("nom_np", "nom_p")
copy("acc_np", "acc_p")
end
copy("gen_p", "gen_p")
copy("dat_p", "dat_p")
copy("ins_p", "ins_p")
copy("loc_p", "loc_p")
end
end
local function get_stemtype(base)
if rfind(base.lemma, "ý$") then
return "hard"
elseif rfind(base.lemma, "í$") then
return "soft"
else
return "possessive"
end
end
declprops["adj"] = {
cat = function(base, stems)
return {"adjectival POS", get_stemtype(base) .. " GENDER adjectival POS"}
end,
}
decls["mostly-indecl"] = function(base, stems)
-- Several neuters: E.g. [[finále]] "final (sports)", [[čtvrtfinále]] "quarterfinal", [[chucpe]] "chutzpah",
-- [[penále]] "fine, penalty", [[promile]] "" (NOTE: loc pl also promilech), [[rande]] "rendezvous", [[semifinále]]
-- "semifinal", [[skóre]] "score".
-- At least one masculine animate: [[kamikaze]]/[[kamikadze]], where IJP says only -m in the ins sg.
local ins_s = base.gender == "m" and "m" or {"-", "m"}
add_decl(base, stems, "-", "-", "-", "-", "-", ins_s,
"-", "-", "-", "-", "-", "-")
end
declprops["mostly-indecl"] = {
cat = "mostly indeclinable"
}
decls["indecl"] = function(base, stems)
-- Indeclinable. Note that fully indeclinable nouns should not have a table at all rather than one all of whose forms
-- are the same; but having an indeclinable declension is useful for nouns that may or may not be indeclinable, e.g.
-- [[desatero]] "group of ten" or the plural of [[peso]], which may be indeclinable 'pesos'.
add_decl(base, stems, "-", "-", "-", "-", "-", "-",
"-", "-", "-", "-", "-", "-")
end
declprops["indecl"] = {
cat = function(base, stems)
if base.adj then
return {"adjectival POS", "indeclinable adjectival POS", "indeclinable GENDER adjectival POS"}
else
return {"indeclinable POS", "indeclinable GENPOS"}
end
end
}
decls["manual"] = function(base, stems)
-- Anything declined manually using overrides. We don't set any declensions except the nom_s (or nom_p if plurale
-- tantum).
add(base, base.number == "pl" and "nom_p" or "nom_s", stems, "-")
end
declprops["manual"] = {
desc = "GENDER",
cat = {},
}
local function set_pron_defaults(base)
if base.gender or base.lemma ~= "ona" and base.number or base.animacy then
error("Can't specify gender, number or animacy for pronouns")
end
local function pron_props()
-- Return values are GENDER, NUMBER, ANIMACY, HAS_CLITIC.
if base.lemma == "kdo" then
return "none", "sg", "an", false
elseif base.lemma == "co" then
return "none", "sg", "inan", false
elseif base.lemma == "já" or base.lemma == "ty" then
return "none", "sg", "an", true
elseif base.lemma == "my" or base.lemma == "vy" then
return "none", "pl", "an", false
elseif base.lemma == "on" then
return "m", "sg", "none", true
elseif base.lemma == "ono" then
return "n", "sg", "inan", true
elseif base.lemma == "oni" then
return "m", "pl", "an", false
elseif base.lemma == "ony" then
return "none", "pl", "none", false
elseif base.lemma == "ona" then
if base.number ~= "sg" and base.number ~= "pl" then
error("Must specify '.sg' or '.pl' with lemma 'ona'")
end
if base.number == "sg" then
return "f", "sg", "none", false
else
return "n", "pl", "inan", false
end
elseif base.lemma == "sebe" then
return "none", "none", "none", true
else
error(("Unrecognized pronoun '%s'"):format(base.lemma))
end
end
local gender, number, animacy, has_clitic = pron_props()
base.gender = gender
base.actual_gender = gender
base.number = number
base.actual_number = number
base.animacy = animacy
base.actual_animacy = animacy
base.has_clitic = has_clitic
end
local function determine_pronoun_stems(base)
if base.stem_sets then
error("Reducible and vowel alternation specs cannot be given with pronouns")
end
base.stem_sets = {{reducible = false, vowel_stem = "", nonvowel_stem = ""}}
base.decl = "pron"
end
decls["pron"] = function(base, stems)
local after_prep_footnote = "[after a preposition]"
local dual_footnote = "[when referring to dual nouns, e.g. [[oči]], [[ruce]]]"
local animate_footnote = "[animate]"
if base.lemma == "kdo" then
add_decl(base, stems, "koho", "komu", nil, nil, "kom", "kým")
elseif base.lemma == "co" then
add_decl(base, stems, "čeho", "čemu", nil, nil, "čem", "čím")
elseif base.lemma == "já" then
add_sg_decl_with_clitic(base, stems, "mne", "mě", "mně", "mi", nil, nil, nil, "mně", "mnou")
elseif base.lemma == "ty" then
add_sg_decl_with_clitic(base, stems, "tebe", "tě", "tobě", "ti", nil, nil, nil, "tobě", "tebou")
elseif base.lemma == "my" then
add_pl_only_decl(base, stems, "nás", "nám", "nás", "nás", "námi")
add_pl_only_decl(base, stems, nil, nil, nil, nil, "náma", dual_footnote)
elseif base.lemma == "vy" then
add_pl_only_decl(base, stems, "vás", "vám", "vás", "vás", "vámi")
add_pl_only_decl(base, stems, nil, nil, nil, nil, "váma", dual_footnote)
elseif base.lemma == "on" or base.lemma == "ono" then
local acc_s = base.lemma == "on" and "jej" or {"jej", "je"}
local clitic_acc_s = base.lemma == "on" and {"jej", "ho"} or {"jej", "ho", "je"}
local prep_acc_s = base.lemma == "on" and "něj" or {"něj", "ně"}
local prep_clitic_acc_s = base.lemma == "on" and "-ň" or nil
add_sg_decl_with_clitic(base, stems, {"jeho", "jej"}, {"ho", "jej"}, "jemu", "mu", acc_s, clitic_acc_s, nil, nil, "jím")
add_sg_decl_with_clitic(base, stems, {"něho", "něj"}, nil, "němu", nil, prep_acc_s, prep_clitic_acc_s, nil, "něm", "ním",
after_prep_footnote)
if base.lemma == "on" then
add_sg_decl_with_clitic(base, stems, nil, nil, nil, nil, "jeho", nil, nil, nil, nil,
animate_footnote)
add_sg_decl_with_clitic(base, stems, nil, nil, nil, nil, "něho", nil, nil, nil, nil,
after_prep_footnote and animate_footnote)
end
elseif base.lemma == "ona" and base.number == "sg" then
add_sg_decl(base, stems, "jí", "jí", "ji", nil, nil, "jí")
add_sg_decl(base, stems, "ní", "ní", "ni", nil, "ní", "ní", after_prep_footnote)
elseif base.lemma == "oni" or base.lemma == "ony" or base.lemma == "ona" then
add_pl_only_decl(base, stems, "jich", "jim", "je", nil, "jimi")
add_pl_only_decl(base, stems, "nich", "nim", "ně", "nich", "nimi", after_prep_footnote)
add_pl_only_decl(base, stems, nil, nil, nil, nil, "jima", dual_footnote)
add_pl_only_decl(base, stems, nil, nil, nil, nil, "nima", dual_footnote)
elseif base.lemma == "sebe" then
-- Underlyingly we handle [[sebe]]'s slots as singular.
add_sg_decl_with_clitic(base, stems, "sebe", "sebe", "sobě", "si", "sebe", "se", nil, "sobě", "sebou",
nil, "no nom_s")
else
error(("Internal error: Unrecognized pronoun lemma '%s'"):format(base.lemma))
end
end
declprops["pron"] = {
desc = "GENDER pronoun",
cat = {},
}
local function set_num_defaults(base)
if base.gender or base.number or base.animacy then
error("Can't specify gender, number or animacy for numeral")
end
local function num_props()
-- Return values are GENDER, NUMBER, ANIMACY, HAS_CLITIC.
return "none", "pl", "none", false
end
local gender, number, animacy, has_clitic = num_props()
base.gender = gender
base.actual_gender = gender
base.number = number
base.actual_number = number
base.animacy = animacy
base.actual_animacy = animacy
base.has_clitic = has_clitic
end
local function determine_numeral_stems(base)
if base.stem_sets then
error("Reducible and vowel alternation specs cannot be given with numerals")
end
local stem = rmatch(base.lemma, "^(.*)" .. com.vowel_c .. "$") or base.lemma
base.stem_sets = {{reducible = false, vowel_stem = stem, nonvowel_stem = stem}}
base.decl = "num"
end
decls["num"] = function(base, stems)
local after_prep_footnote = "[after a preposition]"
if base.lemma == "devět" then
add_pl_only_decl(base, "", "devíti", "devíti", "-", "devíti", "devíti", stems.footnotes)
elseif base.lemma == "sta" or base.lemma == "stě" or base.lemma == "set" then
add_pl_only_decl(base, "", "set", "stům", "-", "stech", "sty", stems.footnotes)
elseif rfind(base.lemma, "[cs]et$") then
-- [[deset]] and all numbers ending in -cet ([[dvacet]], [[třicet]], [[čtyřicet]] and inverted compound
-- numerals such as [[pětadvacet]] "25" and [[dvaatřicet]] "32")
local begin = rmatch(base.lemma, "^(.*)et$")
add_pl_only_decl(base, stems, "i", "i", "-", "i", "i")
add_pl_only_decl(base, begin, "íti", "íti", "-", "íti", "íti", stems.footnotes)
else
add_pl_only_decl(base, stems, "i", "i", "-", "i", "i")
end
end
declprops["num"] = {
desc = "GENDER numeral",
cat = {},
}
local function set_det_defaults(base)
if base.gender or base.number or base.animacy then
error("Can't specify gender, number or animacy for determiner")
end
local function det_props()
-- Return values are GENDER, NUMBER, ANIMACY, HAS_CLITIC.
return "none", "none", "none", false
end
local gender, number, animacy, has_clitic = det_props()
base.gender = gender
base.actual_gender = gender
base.number = number
base.actual_number = number
base.animacy = animacy
base.actual_animacy = animacy
base.has_clitic = has_clitic
end
local function determine_determiner_stems(base)
if base.stem_sets then
error("Reducible and vowel alternation specs cannot be given with determiners")
end
local stem = rmatch(base.lemma, "^(.*)" .. com.vowel_c .. "$") or base.lemma
base.stem_sets = {{reducible = false, vowel_stem = stem, nonvowel_stem = stem}}
base.decl = "det"
end
decls["det"] = function(base, stems)
add_sg_decl(base, stems, "a", "a", "-", nil, "a", "a")
end
declprops["det"] = {
desc = "GENDER determiner",
cat = {},
}
local function fetch_footnotes(separated_group)
local footnotes
for j = 2, #separated_group - 1, 2 do
if separated_group[j + 1] ~= "" then
error("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'")
end
if not footnotes then
footnotes = {}
end
table.insert(footnotes, separated_group[j])
end
return footnotes
end
--[=[
Parse a single override spec (e.g. 'nomplé:ové' or 'ins:autodráhou:autodrahou[rare]') and return
two values: the slot(s) the override applies to, and an object describing the override spec.
The input is actually a list where the footnotes have been separated out; for example,
given the spec 'inspl:čobotami:čobotámi[rare]:čobitmi[archaic]', the input will be a list
{"inspl:čobotami:čobotámi", "[rare]", ":čobitmi", "[archaic]", ""}. The object returned
for 'ins:autodráhou:autodrahou[rare]' looks like this:
{
full = true,
values = {
{
form = "autodráhou"
},
{
form = "autodrahou",
footnotes = {"[rare]"}
}
}
}
The object returned for 'nomplé:ové' looks like this:
{
values = {
{
form = "é",
},
{
form = "ové",
}
}
}
]=]
local function parse_override(segments)
local retval = {values = {}}
local part = segments[1]
local slots = {}
while true do
local case = usub(part, 1, 3)
if cases[case] then
-- ok
else
error(("Unrecognized case '%s' in override: '%s'"):format(case, table.concat(segments)))
end
part = usub(part, 4)
local slot
if rfind(part, "^pl") then
part = usub(part, 3)
slot = case .. "_p"
elseif rfind(part, "^cl") then
-- No plural clitic cases at this point.
part = usub(part, 3)
if clitic_cases[case] then
slot = "clitic_" .. case .. "_s"
else
error(("Unrecognized clitic case '%s' in override: '%s'"):format(case, table.concat(segments)))
end
else
slot = case .. "_s"
end
table.insert(slots, slot)
if rfind(part, "^%+") then
part = usub(part, 2)
else
break
end
end
if rfind(part, "^:") then
retval.full = true
part = usub(part, 2)
end
segments[1] = part
local colon_separated_groups = put.split_alternating_runs_and_strip_spaces(segments, ":")
for i, colon_separated_group in ipairs(colon_separated_groups) do
local value = {}
local form = colon_separated_group[1]
if form == "" then
error(("Use - to indicate an empty ending for slot%s '%s': '%s'"):format(#slots > 1 and "s" or "", table.concat(slots), table.concat(segments)))
elseif form == "-" then
value.form = ""
else
value.form = form
end
value.footnotes = fetch_footnotes(colon_separated_group)
table.insert(retval.values, value)
end
return slots, retval
end
--[=[
Parse an indicator spec (text consisting of angle brackets and zero or more
dot-separated indicators within them). Return value is an object of the form
{
overrides = {
SLOT = {OVERRIDE, OVERRIDE, ...}, -- as returned by parse_override()
...
},
forms = {}, -- forms for a single spec alternant; see `forms` below
footnotes = {"FOOTNOTE", "FOOTNOTE", ...}, -- may be missing
stems = { -- may be missing
{
reducible = TRUE_OR_FALSE,
footnotes = {"FOOTNOTE", "FOOTNOTE", ...}, -- may be missing
-- The following fields are filled in by determine_stems()
vowel_stem = "STEM",
nonvowel_stem = "STEM",
oblique_slots = one of {nil, "gen_p", "all", "all-oblique"},
oblique_vowel_stem = "STEM" or nil (only needs to be set if oblique_slots is non-nil),
oblique_nonvowel_stem = "STEM" or nil (only needs to be set if oblique_slots is non-nil),
},
...
},
gender = "GENDER", -- "m", "f", "n"
number = "NUMBER", -- "sg", "pl"; may be missing
animacy = "ANIMACY", -- "inan", "an"; may be missing
hard = true, -- may be missing
soft = true, -- may be missing
mixed = true, -- may be missing
surname = true, -- may be missing
istem = true, -- may be missing
["-istem"] = true, -- may be missing
tstem = true, -- may be missing
nstem = true, -- may be missing
tech = true, -- may be missing
foreign = true, -- may be missing
mostlyindecl = true, -- may be missing
indecl = true, -- may be missing
manual = true, -- may be missing
adj = true, -- may be missing
decllemma = "DECLENSION-LEMMA", -- may be missing
declgender = "DECLENSION-GENDER", -- may be missing
declnumber = "DECLENSION-NUMBER", -- may be missing
-- The following additional fields are added by other functions:
orig_lemma = "ORIGINAL-LEMMA", -- as given by the user
orig_lemma_no_links = "ORIGINAL-LEMMA-NO-LINKS", -- links removed
lemma = "LEMMA", -- `orig_lemma_no_links`, converted to singular form if plural and lowercase if all-uppercase
forms = {
SLOT = {
{
form = "FORM",
footnotes = {"FOOTNOTE", "FOOTNOTE", ...} -- may be missing
},
...
},
...
},
decl = "DECL", -- declension, e.g. "hard-m"
vowel_stem = "VOWEL-STEM", -- derived from vowel-ending lemmas
nonvowel_stem = "NONVOWEL-STEM", -- derived from non-vowel-ending lemmas
}
]=]
local function parse_indicator_spec(angle_bracket_spec)
local inside = rmatch(angle_bracket_spec, "^<(.*)>$")
assert(inside)
local base = {overrides = {}, forms = {}}
if inside ~= "" then
local segments = put.parse_balanced_segment_run(inside, "[", "]")
local dot_separated_groups = put.split_alternating_runs_and_strip_spaces(segments, "%.")
for i, dot_separated_group in ipairs(dot_separated_groups) do
local part = dot_separated_group[1]
local case_prefix = usub(part, 1, 3)
if cases[case_prefix] then
local slots, override = parse_override(dot_separated_group)
for _, slot in ipairs(slots) do
if base.overrides[slot] then
error(("Two overrides specified for slot '%s'"):format(slot))
else
base.overrides[slot] = {override}
end
end
elseif part == "" then
if #dot_separated_group == 1 then
error("Blank indicator: '" .. inside .. "'")
end
base.footnotes = fetch_footnotes(dot_separated_group)
elseif rfind(part, "^[-*#ě]*$") or rfind(part, "^[-*#ě]*,") then
if base.stem_sets then
error("Can't specify reducible/vowel-alternant indicator twice: '" .. inside .. "'")
end
local comma_separated_groups = put.split_alternating_runs_and_strip_spaces(dot_separated_group, ",")
local stem_sets = {}
for i, comma_separated_group in ipairs(comma_separated_groups) do
local pattern = comma_separated_group[1]
local orig_pattern = pattern
local reducible, vowelalt, oblique_slots
if pattern == "-" then
-- default reducible, no vowel alt
else
local before, after
before, reducible, after = rmatch(pattern, "^(.-)(%-?%*)(.-)$")
if before then
pattern = before .. after
reducible = reducible == "*"
end
if pattern ~= "" then
if not rfind(pattern, "^##?ě?$") then
error("Unrecognized vowel-alternation pattern '" .. pattern .. "', should be one of #, ##, #ě or ##ě: '" .. inside .. "'")
end
if pattern == "#ě" or pattern == "##ě" then
vowelalt = "quant-ě"
else
vowelalt = "quant"
end
-- `oblique_slots` will be later changed to "all" if the lemma ends in a consonant.
if pattern == "##" or pattern == "##ě" then
oblique_slots = "all-oblique"
else
oblique_slots = "gen_p"
end
end
end
table.insert(stem_sets, {
reducible = reducible,
vowelalt = vowelalt,
oblique_slots = oblique_slots,
footnotes = fetch_footnotes(comma_separated_group)
})
end
base.stem_sets = stem_sets
elseif #dot_separated_group > 1 then
error("Footnotes only allowed with slot overrides, reducible or vowel alternation specs or by themselves: '" .. table.concat(dot_separated_group) .. "'")
elseif part == "m" or part == "f" or part == "n" then
if base.gender then
error("Can't specify gender twice: '" .. inside .. "'")
end
base.gender = part
elseif part == "sg" or part == "pl" then
if base.number then
error("Can't specify number twice: '" .. inside .. "'")
end
base.number = part
elseif part == "an" or part == "inan" then
if base.animacy then
error("Can't specify animacy twice: '" .. inside .. "'")
end
base.animacy = part
elseif part == "hard" or part == "soft" or part == "mixed" or part == "surname" or part == "istem" or
part == "-istem" or part == "tstem" or part == "nstem" or part == "tech" or part == "foreign" or
part == "mostlyindecl" or part == "indecl" or part == "pron" or part == "det" or part == "num" or
-- Use 'velar' with words like [[petanque]] and [[Braque]] that end with a pronounced velar (and hence are declined
-- like velars) but not with a spelled velar; use '-velar' with words like [[hadíth]] that end with a spelled but
-- silent velar.
part == "collapse_ee" or part == "persname" or part == "c_as_k" or part == "velar" or part == "-velar" then
if base[part] then
error("Can't specify '" .. part .. "' twice: '" .. inside .. "'")
end
base[part] = true
-- Allow 'hard' to signal that -y is allowed after -c, as in hard masculine nouns such as [[hec]]
-- "joke", and also feminines in -ca where the c is pronounced as /k/, e.g. [[ayahuasca]], [[pororoca]],
-- [[Petrarca]], [[Mallorca]], [[Casablanca]]. (Contrast [[mangalica]], [[Kusturica]], [[Bjelica]],
-- where the c is pronounced as /ts/ and -y is disallowed.)
if part == "hard" then
base.hard_c = true
end
elseif part == "+" then
if base.adj then
error("Can't specify '+' twice: '" .. inside .. "'")
end
base.adj = true
elseif part == "!" then
if base.manual then
error("Can't specify '!' twice: '" .. inside .. "'")
end
base.manual = true
elseif rfind(part, "^mixedistem:") then
if base.mixedistem then
error("Can't specify 'mixedistem:' twice: '" .. inside .. "'")
end
base.mixedistem = rsub(part, "^mixedistem:", "")
elseif rfind(part, "^decllemma:") then
if base.decllemma then
error("Can't specify 'decllemma:' twice: '" .. inside .. "'")
end
base.decllemma = rsub(part, "^decllemma:", "")
elseif rfind(part, "^declgender:") then
if base.declgender then
error("Can't specify 'declgender:' twice: '" .. inside .. "'")
end
base.declgender = rsub(part, "^declgender:", "")
elseif rfind(part, "^declnumber:") then
if base.declnumber then
error("Can't specify 'declnumber:' twice: '" .. inside .. "'")
end
base.declnumber = rsub(part, "^declnumber:", "")
else
error("Unrecognized indicator '" .. part .. "': '" .. inside .. "'")
end
end
end
return base
end
local function is_regular_noun(base)
return not base.adj and not base.pron and not base.det and not base.num
end
local function process_declnumber(base)
base.actual_number = base.number
if base.declnumber then
if base.declnumber == "sg" or base.declnumber == "pl" then
base.number = base.declnumber
else
error(("Unrecognized value '%s' for 'declnumber', should be 'sg' or 'pl'"):format(base.declnumber))
end
end
end
local function set_defaults_and_check_bad_indicators(base)
-- Set default values.
local regular_noun = is_regular_noun(base)
if base.pron then
set_pron_defaults(base)
elseif base.det then
set_det_defaults(base)
elseif base.num then
set_num_defaults(base)
elseif not base.adj then
if not base.gender then
if base.manual then
base.gender = "none"
else
error("For nouns, gender must be specified")
end
end
base.number = base.number or "both"
process_declnumber(base)
base.animacy = base.animacy or "inan"
base.actual_gender = base.gender
base.actual_animacy = base.animacy
if base.declgender then
if base.declgender == "m-an" then
base.gender = "m"
base.animacy = "an"
elseif base.declgender == "m-in" then
base.gender = "m"
base.animacy = "inan"
elseif base.declgender == "f" or base.declgender == "n" then
base.gender = base.declgender
else
error(("Unrecognized value '%s' for 'declgender', should be 'm-an', 'm-in', 'f' or 'n'"):format(base.declgender))
end
end
end
-- Check for bad indicator combinations.
if (base.hard and 1 or 0) + (base.soft and 1 or 0) + (base.mixed and 1 or 0) > 1 then
error("At most one of 'hard', 'soft' and 'mixed' can be specified")
end
if base.istem and base["-istem"] then
error("'istem' and '-istem' cannot be specified together")
end
if (base.istem or base["-istem"]) then
if base.gender ~= "f" then
error("'istem' and '-istem' can only be specified with the feminine gender")
end
if not regular_noun then
error("'istem' and '-istem' can only be specified with regular nouns")
end
end
if base.declgender and not regular_noun then
error("'declgender' can only be specified with regular nouns")
end
end
local function set_all_defaults_and_check_bad_indicators(alternant_multiword_spec)
local is_multiword = #alternant_multiword_spec.alternant_or_word_specs > 1
iut.map_word_specs(alternant_multiword_spec, function(base)
set_defaults_and_check_bad_indicators(base)
base.multiword = is_multiword -- FIXME: not currently used; consider deleting
alternant_multiword_spec.has_clitic = alternant_multiword_spec.has_clitic or base.has_clitic
if base.pron then
alternant_multiword_spec.saw_pron = true
else
alternant_multiword_spec.saw_non_pron = true
end
if base.det then
alternant_multiword_spec.saw_det = true
else
alternant_multiword_spec.saw_non_det = true
end
if base.num then
alternant_multiword_spec.saw_num = true
else
alternant_multiword_spec.saw_non_num = true
end
end)
end
local function undo_second_palatalization(base, word, is_adjective)
local function try(from, to)
local stem = rmatch(word, "^(.*)" .. from .. "$")
if stem then
return stem .. to
end
return nil
end
return is_adjective and try("št", "sk") or
is_adjective and try("čt", "ck") or
try("c", "k") or -- FIXME, this could be wrong and c correct
try("ř", "r") or
try("z", "h") or -- FIXME, this could be wrong and z or g correct
try("š", "ch") or
word
end
-- For a plural-only lemma, synthesize a likely singular lemma. It doesn't have to be
-- theoretically correct as long as it generates all the correct plural forms.
local function synthesize_singular_lemma(base)
if not base.stem_sets then
base.stem_sets = {{}}
end
local lemma_determined
-- Loop over all stem sets in case the user specified multiple ones (e.g. '*,-*'). If we try to reconstruct
-- different lemmas for different stem sets, we'll throw an error below.
for _, stems in ipairs(base.stem_sets) do
local stem, lemma
while true do
if base.indecl then
-- If specified as indeclinable, leave it alone; e.g. 'pesos' indeclinable plural of [[peso]].
lemma = base.lemma
break
elseif base.gender == "m" then
if base.animacy == "an" then
stem = rmatch(base.lemma, "^(.*)i$")
if stem then
if base.soft then
-- [[Blíženci]] "Gemini"
-- Since the nominative singular has no ending.
lemma = com.convert_paired_plain_to_palatal(stem, ending)
else
lemma = undo_second_palatalization(base, stem)
end
else
stem = rmatch(base.lemma, "^(.*)ové$") or rmatch(base.lemma, "^(.*)é$")
if stem then
-- [[manželé]] "married couple", [[Velšané]] "Welsh people"
lemma = stem
else
error(("Animate masculine plural-only lemma '%s' should end in -i, -ové or -é"):format(base.lemma))
end
end
else
stem = rmatch(base.lemma, "^(.*)y$")
if stem then
-- [[droby]] "giblets"; [[tvarůžky]] "Olomouc cheese"; [[alimenty]] "alimony"; etc.
lemma = stem
else
local ending
stem, ending = rmatch(base.lemma, "^(.*)([eě])$")
if stem then
-- [[peníze]] "money", [[tvargle]] "Olomouc cheese" (mixed declension), [[údaje]] "data",
-- [[Lazce]] (a village), [[lováče]] "money", [[Krkonoše]] "Giant Mountains", [[kříže]] "clubs"
lemma = com.convert_paired_plain_to_palatal(stem, ending)
if not base.mixed then
base.soft = true
end
else
error(("Inanimate masculine plural-only lemma '%s' should end in -y, -e or -ě"):format(base.lemma))
end
end
end
if stems.reducible == nil then
if rfind(lemma, com.cons_c .. "[ck]$") and not com.is_monosyllabic(base.lemma) then
stems.reducible = true
end
if stems.reducible then
lemma = dereduce(base, lemma)
end
end
break
elseif base.gender == "f" then
stem = rmatch(base.lemma, "^(.*)y$")
if stem then
lemma = stem .. "a"
break
end
stem = rmatch(base.lemma, "^(.*)[eě]$")
if stem then
-- Singular like the plural. Cons-stem feminines like [[dlaň]] "palm (of the hand)" have identical
-- plurals to soft-stem feminines like [[růže]] (modulo e/ě differences), so we don't need to
-- reconstruct the former type.
lemma = base.lemma
break
end
stem = rmatch(base.lemma, "^(.*)i$")
if stem then
-- i-stems.
lemma = stem
base.istem = true
break
end
error(("Feminine plural-only lemma '%s' should end in -y, -ě, -e or -i"):format(base.lemma))
elseif base.gender == "n" then
-- -ata nouns like [[slůně]] "baby elephant" nom pl 'slůňata' are declined in the plural same as if
-- the singular were 'slůňato' so we don't have to worry about them.
stem = rmatch(base.lemma, "^(.*)a$")
if stem then
lemma = stem .. "o"
break
end
stem = rmatch(base.lemma, "^(.*)[eěí]$")
if stem then
-- singular lemma also in -e, -ě or -í; e.g. [[věčná loviště]] "[[happy hunting ground]]"
lemma = base.lemma
break
end
error(("Neuter plural-only lemma '%s' should end in -a, -í, -ě or -e"):format(base.lemma))
else
error(("Internal error: Unrecognized gender '%s'"):format(base.gender))
end
end
if lemma_determined and lemma_determined ~= lemma then
error(("Attempt to set two different singular lemmas '%s' and '%s'"):format(lemma_determined, lemma))
end
lemma_determined = lemma
end
base.lemma = lemma_determined
end
-- For an adjectival lemma, synthesize the masc singular form.
local function synthesize_adj_lemma(base)
local stem
if base.indecl then
base.decl = "indecl"
stem = base.lemma
else
local gender, number
local function sub_ov(stem)
stem = stem:gsub("ov$", "ův")
return stem
end
while true do
if base.number == "pl" then
if base.gender == "m" then
stem = rmatch(base.lemma, "^(.*)í$")
if stem then
if base.soft then
-- nothing to do
else
if base.animacy ~= "an" then
error(("Masculine plural-only adjectival lemma '%s' ending in -í can only be animate unless '.soft' is specified"):
format(base.lemma))
end
base.lemma = undo_second_palatalization(base, stem, "is adjective") .. "ý"
end
break
end
stem = rmatch(base.lemma, "^(.*)é$")
if stem then
if base.animacy == "an" then
error(("Masculine plural-only adjectival lemma '%s' ending in -é must be inanimate"):
format(base.lemma))
end
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*ov)i$") or rmatch(base.lemma, "^(.*in)i$")
if stem then
if base.animacy ~= "an" then
error(("Masculine plural-only possessive adjectival lemma '%s' ending in -i must be animate"):
format(base.lemma))
end
base.lemma = sub_ov(stem)
break
end
stem = rmatch(base.lemma, "^(.*ov)y$") or rmatch(base.lemma, "^(.*in)y$")
if stem then
if base.animacy == "an" then
error(("Masculine plural-only possessive adjectival lemma '%s' ending in -y must be inanimate"):
format(base.lemma))
end
base.lemma = sub_ov(stem)
break
end
if base.animacy == "an" then
error(("Animate masculine plural-only adjectival lemma '%s' should end in -í, -ovi or -ini"):
format(base.lemma))
elseif base.soft then
error(("Soft masculine plural-only adjectival lemma '%s' should end in -í"):format(base.lemma))
else
error(("Inanimate masculine plural-only adjectival lemma '%s' should end in -é, -ovy or -iny"):
format(base.lemma))
end
elseif base.gender == "f" then
stem = rmatch(base.lemma, "^(.*)é$") -- hard adjective
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)í$") -- soft adjective
if stem then
break
end
stem = rmatch(base.lemma, "^(.*ov)y$") or rmatch(base.lemma, "^(.*in)y$") -- possessive adjective
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Feminine plural-only adjectival lemma '%s' should end in -é, -í, -ovy or -iny"):format(base.lemma))
else
stem = rmatch(base.lemma, "^(.*)á$") -- hard adjective
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)í$") -- soft adjective
if stem then
break
end
stem = rmatch(base.lemma, "^(.*ov)a$") or rmatch(base.lemma, "^(.*in)a$") -- possessive adjective
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Neuter plural-only adjectival lemma '%s' should end in -á, -í, -ova or -ina"):format(base.lemma))
end
else
if base.gender == "m" then
stem = rmatch(base.lemma, "^(.*)[ýí]$") or rmatch(base.lemma, "^(.*)ův$") or rmatch(base.lemma, "^(.*)in$")
if stem then
break
end
error(("Masculine adjectival lemma '%s' should end in -ý, -í, -ův or -in"):format(base.lemma))
elseif base.gender == "f" then
stem = rmatch(base.lemma, "^(.*)á$")
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)í$")
if stem then
break
end
stem = rmatch(base.lemma, "^(.*ov)a$") or rmatch(base.lemma, "^(.*in)a$")
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Feminine adjectival lemma '%s' should end in -á, -í, -ova or -ina"):format(base.lemma))
else
stem = rmatch(base.lemma, "^(.*)é$")
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)í$")
if stem then
break
end
stem = rmatch(base.lemma, "^(.*ov)o$") or rmatch(base.lemma, "^(.*in)o$")
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Neuter adjectival lemma '%s' should end in -é, -í, -ovo or -ino"):format(base.lemma))
end
end
end
base.decl = "adj"
end
-- Now set the stem sets if not given.
-- Now set the stem sets if not given.
if not base.stem_sets then
base.stem_sets = {{reducible = false}}
end
for _, stems in ipairs(base.stem_sets) do
-- Set the stems.
stems.vowel_stem = stem
stems.nonvowel_stem = stem
end
end
-- Determine the declension based on the lemma, gender and number. The declension is set in base.decl. In the process,
-- we set either base.vowel_stem (if the lemma ends in a vowel) or base.nonvowel_stem (if the lemma does not end in a
-- vowel), which is used by determine_stems(). In some cases (specifically with certain foreign nouns), we set
-- base.lemma to a new value; this is as if the user specified 'decllemma:'.
local function determine_declension(base)
if base.mostlyindecl then
base.decl = "mostly-indecl"
base.nonvowel_stem = base.lemma
return
end
if base.indecl then
base.decl = "indecl"
base.nonvowel_stem = base.lemma
return
end
-- Determine declension
stem = rmatch(base.lemma, "^(.*)a$")
if stem then
if base.gender == "m" then
if base.animacy ~= "an" then
error("Masculine lemma in -a must be animate")
end
base.decl = "a-m"
elseif base.gender == "f" then
if base.hard then
-- e.g. [[doňa]], which seems not to have soft alternates as [[piraňa]] does (despite IJP; but see the note at the
-- bottom)
base.decl = "hard-f"
elseif rfind(stem, "e$") then
-- [[idea]], [[diarea]] (subtype '.tech'), [[Korea]], etc.
base.decl = "ea-f"
elseif rfind(stem, "i$") then
-- [[signoria]], [[sinfonia]], [[paranoia]], etc.
base.decl = "ia-f"
elseif rfind(stem, "[ou]$") then
-- [[stoa]], [[kongrua]], [[Samoa]], [[Nikaragua]], etc.
base.decl = "oa-f"
elseif not base.persname and rfind(stem, "^.*[ňj]$") or base.mixed then
-- [[maracuja]], [[papája]], [[sója]]; [[piraňa]] etc. Also [[Keňa]], [[Troja]]/[[Trója]], [[Amudarja]].
-- Not [[Táňa]], [[Darja]], which decline like [[gejša]], [[skica]], etc. (subtype of hard feminines).
base.decl = "mixed-f"
else
base.decl = "hard-f"
end
elseif base.gender == "n" then
if rfind(stem, "m$") then
base.decl = "ma-n"
else
error("Lemma ending in -a and neuter must end in -ma")
end
end
base.vowel_stem = stem
return
end
local ending
stem, ending = rmatch(base.lemma, "^(.*)([eě])$")
if stem then
if ending == "ě" then
stem = com.convert_paired_plain_to_palatal(stem)
end
if base.gender == "m" then
if base.foreign then
-- [[software]] and similar English-derived nouns with silent -e; set the lemma here as if decllemma: were given
base.lemma = stem
base.nonvowel_stem = stem
base.decl = "hard-m"
return
end
if base.hard then
-- -e be damned; e.g. [[Sofokles]] with hard stem 'Sofokle-' (genitive 'Sofoklea', dative 'Sofokleovi', etc.)
base.nonvowel_stem = base.lemma
base.decl = "hard-m"
return
end
if base.tstem then
if base.animacy ~= "an" then
error("T-stem masculine lemma in -e must be animate")
end
base.decl = "tstem-m"
elseif rfind(stem, "i$") then
-- [[zombie]], [[hippie]], [[yuppie]], [[rowdie]]
base.decl = "ie-m"
elseif rfind(stem, "e$") then
-- [[Yankee]]
base.nonvowel_stem = base.lemma
base.decl = "ee-m"
return
else
base.decl = "e-m"
end
elseif base.gender == "f" then
base.decl = "soft-f"
else
if base.tstem then
base.decl = "tstem-n"
else
base.decl = "soft-n"
end
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*)o$")
if stem then
if base.gender == "m" then
-- Cf. [[maestro]] m.
base.decl = "o-m"
elseif base.gender == "f" then
-- [[zoo]]; [[Žemaitsko]]?
error("Feminine nouns in -o are indeclinable; use '.indecl' if needed")
elseif base.nstem then
base.decl = "n-n"
elseif base.hard then
base.decl = "hard-n"
elseif rfind(stem, "[aeiuy]$") then
-- These have gen pl in -í and often other soft plural endings.
base.decl = "semisoft-n"
else
base.decl = "hard-n"
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*[iy])$")
if stem then
if base.gender == "m" then
if base.soft then
-- [[gay]] "gay man", [[gray]] "gray (scientific unit)", [[Nagy]] (surname)
base.decl = "soft-m"
else
-- Cf. [[kivi]] "kiwi (bird)", [[husky]] "kusky", etc.
base.decl = "i-m"
end
elseif base.gender == "f" then
if base.soft then
-- [[Uruguay]], [[Paraguay]]
base.decl = "soft-f"
else
-- [[máti]], [[pramáti]]; note also indeclinable [[tsunami]]/[[cunami]], [[okapi]]
base.decl = "i-f"
if stem:find("i$") then
stem = stem:gsub("i$", "")
else
error("Feminine nouns in -y are either soft or indeclinable; use '.soft' or '.indecl' as needed")
end
end
else
error("Neuter nouns in -i are indeclinable; use '.indecl' if needed")
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*u)$")
if stem then
if base.gender == "m" then
-- Cf. [[emu]], [[guru]], etc.
base.decl = "u-m"
elseif base.gender == "f" then
-- Only one I know is [[budižkničemu]], which is indeclinable in the singular and declines in the plural as
-- if written 'budižkničema'.
error("Feminine nouns in -u are indeclinable; use '.indecl' if needed")
else
error("Neuter nouns in -u are indeclinable; use '.indecl' if needed")
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*[íý])$")
if stem then
if base.gender == "m" then
base.decl = "í-m"
elseif base.gender == "f" then
-- FIXME: Do any exist? If not, update this message.
error("Support for non-adjectival non-indeclinable feminine nouns in -í/-ý not yet implemented")
else
base.decl = "í-n"
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*" .. com.cons_c .. ")$")
if stem then
if base.gender == "m" then
if base.foreign then
-- [[komunismus]] "communism", [[kosmos]] "cosmos", [[hádes]] "Hades"
stem = rmatch(base.lemma, "^(.*)[ueoaéá]s$")
if not stem then
error("Unrecognized masculine foreign ending, should be -us, -es, -os, -as, -és or -ás")
end
if not base.hard and (rfind(stem, "[ei]$") and base.animacy == "an" or
rfind(stem, "i$") and base.animacy == "inan") then
-- [[genius]], [[basileus]], [[rádius]]; not [[nukleus]], [[choreus]] (inanimate); not
-- [[skarabeus]] (animate), which should specify 'hard'
base.decl = "semisoft-m"
else
base.decl = "hard-m"
end
-- set the lemma here as if decllemma: were given
base.lemma = stem
elseif base.hard then
base.decl = "hard-m"
elseif base.soft then
base.decl = "soft-m"
elseif base.mixed then
base.decl = "mixed-m"
elseif rfind(base.lemma, com.inherently_soft_c .. "$") or rfind(base.lemma, "tel$") then
base.decl = "soft-m"
else
base.decl = "hard-m"
end
elseif base.gender == "f" then
if base.mixedistem then
base.decl = "mixed-istem-f"
elseif base.istem then
base.decl = "istem-f"
elseif base["-istem"] then
base.decl = "cons-f"
elseif rfind(base.lemma, "st$") then
-- Numerous abstracts in -ost; also [[kost]], [[část]], [[srst]], [[bolest]]
base.decl = "istem-f"
else
base.decl = "cons-f"
end
elseif base.gender == "n" then
if base.foreign then
stem = rmatch(base.lemma, "^(.*)um$") or rmatch(base.lemma, "^(.*)on$")
if not stem then
error("Unrecognized neuter foreign ending, should be -um or -on")
end
if base.hard then
base.decl = "hard-n"
elseif rfind(stem, "[eiuy]$") then
base.decl = "semisoft-n"
else
base.decl = "hard-n"
end
-- set the lemma here as if decllemma: were given
base.lemma = stem .. "o"
base.vowel_stem = stem
return
else
error("Neuter nouns ending in a consonant should use '.foreign' or '.decllemma:...'")
end
end
base.nonvowel_stem = stem
return
end
error("Unrecognized ending for lemma: '" .. base.lemma .. "'")
end
-- Determine the default value for the 'reducible' flag.
local function determine_default_reducible(base)
-- Nouns in vowels other than -a/o as well as masculine nouns ending in all vowels don't have null endings so not
-- reducible. Note, we are never called on adjectival nouns.
if rfind(base.lemma, "[iyuíeě]$") or base.gender == "m" and rfind(base.lemma, "[ao]$") or base.tstem then
base.default_reducible = false
return
end
local stem
stem = rmatch(base.lemma, "^(.*" .. com.cons_c .. ")$")
if stem then
-- When analyzing existing manual declensions in -ec and -ek, 290 were reducible vs. 23 non-reducible. Of these
-- 23, 15 were monosyllabic (and none of the 290 reducible nouns were monosyllabic) -- and two of these were
-- actually reducible but irregularly: [[švec]] "shoemaker" (gen sg 'ševce') and [[žnec]] "reaper (person)"
-- (gen sg. 'žence'). Of the remaining 8 multisyllabic non-reducible words, two were actually reducible but
-- irregularly: [[stařec]] "old man" (gen sg 'starce') and [[tkadlec]] "weaver" (gen sg 'tkalce'). The remaining
-- six consisted of 5 compounds of monosyllabic words: [[dotek]], [[oblek]], [[kramflek]], [[pucflek]],
-- [[pokec]], plus [[česnek]], which should be reducible but would lead to an impossible consonant cluster.
if base.gender == "m" and rfind(stem, "[eě][ck]$") and not com.is_monosyllabic(stem) then
base.default_reducible = true
elseif base.gender == "f" and rfind(stem, "[eě]ň$") then
-- [[pochodeň]] "torch", [[píseň]] "leather", [[žeň]] "harvest"; not [[reveň]] "rhubarb" or [[dřeň]] "pulp",
-- which need an override.
base.default_reducible = true
else
base.default_reducible = false
end
return
end
if base.number == "sg" then
base.default_reducible = false
return
end
if rfind(base.lemma, "isko$") then
-- e.g. [[středisko]]
base.default_reducible = "mixed"
return
end
stem = rmatch(base.lemma, "^(.*)" .. com.vowel_c .. "$")
if not stem then
error(("Internal error: Something wrong, lemma '%s' doesn't end in consonant or vowel"):format(base.lemma))
end
-- Substitute 'ch' with a single character to make the following code simpler.
stem = stem:gsub("ch", com.TEMP_CH)
if rfind(stem, com.cons_c .. "[lr]" .. com.cons_c .. "$") then
-- [[vrba]], [[vlha]]; not reducible. (But note [[jablko]], reducible; needs override.)
base.default_reducible = false
elseif not base.foreign and (rfind(stem, com.cons_c .. "[bkhlrmnv]$") or base.c_as_k and rfind(stem, com.cons_c .. "c$")) then
-- [[ayahuasca]] has gen pl 'ayahuasek'
base.default_reducible = true
elseif base.foreign and rfind(stem, com.cons_c .. "r$") then
-- Foreign nouns in -CCum seem generally non-reducible in the gen pl except for those in -Crum like [[centrum]],
-- Examples: [[album]], [[verbum]], [[signum]], [[interregnum]], [[sternum]]. [[infernum]] has gen pl 'infern/inferen'.
base.default_reducible = true
else
base.default_reducible = false
end
end
-- Determine the stems to use for each stem set: vowel and nonvowel stems, for singular
-- and plural. We assume that one of base.vowel_stem or base.nonvowel_stem has been
-- set in determine_declension(), depending on whether the lemma ends in
-- a vowel. We construct all the rest given the reducibility, vowel alternation spec and
-- any explicit stems given. We store the determined stems inside of the stem-set objects
-- in `base.stem_sets`, meaning that if the user gave multiple reducible or vowel-alternation
-- patterns, we will compute multiple sets of stems. The reason is that the stems may vary
-- depending on the reducibility and vowel alternation.
local function determine_stems(base)
if not base.stem_sets then
base.stem_sets = {{}}
end
-- Set default reducible and check for default mixed reducible, which needs to be expanded into two entries.
local default_mixed_reducible = false
for _, stems in ipairs(base.stem_sets) do
if stems.reducible == nil then
stems.reducible = base.default_reducible
end
if stems.reducible == "mixed" then
default_mixed_reducible = true
end
end
if default_mixed_reducible then
local new_stem_sets = {}
for _, stems in ipairs(base.stem_sets) do
if stems.reducible == "mixed" then
local non_reducible_copy = m_table.shallowCopy(stems)
non_reducible_copy.reducible = false
stems.reducible = true
table.insert(new_stem_sets, stems)
table.insert(new_stem_sets, non_reducible_copy)
else
table.insert(new_stem_sets, stems)
end
end
base.stem_sets = new_stem_sets
end
-- Now determine all the stems for each stem set.
for _, stems in ipairs(base.stem_sets) do
local lemma_is_vowel_stem = not not base.vowel_stem
if base.vowel_stem then
stems.vowel_stem = base.vowel_stem
stems.nonvowel_stem = stems.vowel_stem
-- Apply vowel alternation first in cases like jádro -> jader; apply_vowel_alternation() will throw an error
-- if the vowel being modified isn't the last vowel in the stem.
stems.oblique_nonvowel_stem = com.apply_vowel_alternation(stems.vowelalt, stems.nonvowel_stem)
if stems.reducible then
stems.nonvowel_stem = dereduce(base, stems.nonvowel_stem)
stems.oblique_nonvowel_stem = dereduce(base, stems.oblique_nonvowel_stem)
end
else
stems.nonvowel_stem = base.nonvowel_stem
-- The user specified #, #ě, ## or ##ě and we're dealing with a term like masculine [[bůh]] or feminine
-- [[sůl]] that ends in a consonant. In this case, all slots except the nom_s and maybe acc_s have vowel
-- alternation.
if stems.oblique_slots then
stems.oblique_slots = "all"
end
stems.oblique_nonvowel_stem = com.apply_vowel_alternation(stems.vowelalt, stems.nonvowel_stem)
if stems.reducible then
stems.vowel_stem = com.reduce(base.nonvowel_stem)
if not stems.vowel_stem then
error("Unable to reduce stem '" .. base.nonvowel_stem .. "'")
end
else
stems.vowel_stem = base.nonvowel_stem
end
end
stems.oblique_vowel_stem = com.apply_vowel_alternation(stems.vowelalt, stems.vowel_stem)
end
end
local function detect_indicator_spec(base)
if base.pron then
determine_pronoun_stems(base)
elseif base.det then
determine_determiner_stems(base)
elseif base.num then
determine_numeral_stems(base)
elseif base.adj then
process_declnumber(base)
synthesize_adj_lemma(base)
elseif base.manual then
if base.stem_sets then
-- FIXME, maybe this should be allowed?
error("Reducible and vowel alternation specs cannot be given with manual declensions")
end
base.stem_sets = {{reducible = false, vowel_stem = "", nonvowel_stem = ""}}
base.decl = "manual"
else
if base.number == "pl" then
synthesize_singular_lemma(base)
end
determine_declension(base)
determine_default_reducible(base)
determine_stems(base)
end
end
local function detect_all_indicator_specs(alternant_multiword_spec)
-- Keep track of all genders seen in the singular and plural so we can determine whether to add the term to
-- [[:Category:Czech nouns that change gender in the plural]].
alternant_multiword_spec.sg_genders = {}
alternant_multiword_spec.pl_genders = {}
iut.map_word_specs(alternant_multiword_spec, function(base)
detect_indicator_spec(base)
if base.number ~= "pl" then
alternant_multiword_spec.sg_genders[base.actual_gender] = true
end
if base.number ~= "sg" then
-- All t-stem masculines are neuter in the plural.
local plgender
if base.decl == "tstem-m" then
plgender = "n"
else
plgender = base.actual_gender
end
alternant_multiword_spec.pl_genders[plgender] = true
end
end)
if (alternant_multiword_spec.saw_pron and 1 or 0) + (alternant_multiword_spec.saw_det and 1 or 0) + (alternant_multiword_spec.saw_num and 1 or 0) > 1 then
error("Can't combine pronouns, determiners and/or numerals")
end
end
local propagate_multiword_properties
local function propagate_alternant_properties(alternant_spec, property, mixed_value, nouns_only)
local seen_property
for _, multiword_spec in ipairs(alternant_spec.alternants) do
propagate_multiword_properties(multiword_spec, property, mixed_value, nouns_only)
if seen_property == nil then
seen_property = multiword_spec[property]
elseif multiword_spec[property] and seen_property ~= multiword_spec[property] then
seen_property = mixed_value
end
end
alternant_spec[property] = seen_property
end
propagate_multiword_properties = function(multiword_spec, property, mixed_value, nouns_only)
local seen_property = nil
local last_seen_nounal_pos = 0
local word_specs = multiword_spec.alternant_or_word_specs or multiword_spec.word_specs
for i = 1, #word_specs do
local is_nounal
if word_specs[i].alternants then
propagate_alternant_properties(word_specs[i], property, mixed_value)
is_nounal = not not word_specs[i][property]
elseif nouns_only then
is_nounal = is_regular_noun(word_specs[i])
else
is_nounal = not not word_specs[i][property]
end
if is_nounal then
if not word_specs[i][property] then
error("Internal error: noun-type word spec without " .. property .. " set")
end
for j = last_seen_nounal_pos + 1, i - 1 do
word_specs[j][property] = word_specs[j][property] or word_specs[i][property]
end
last_seen_nounal_pos = i
if seen_property == nil then
seen_property = word_specs[i][property]
elseif seen_property ~= word_specs[i][property] then
seen_property = mixed_value
end
end
end
if last_seen_nounal_pos > 0 then
for i = last_seen_nounal_pos + 1, #word_specs do
word_specs[i][property] = word_specs[i][property] or word_specs[last_seen_nounal_pos][property]
end
end
multiword_spec[property] = seen_property
end
local function propagate_properties_downward(alternant_multiword_spec, property, default_propval)
local function set_and_fetch(obj, default)
local retval
if obj[property] then
retval = obj[property]
else
obj[property] = default
retval = default
end
if not obj["actual_" .. property] then
obj["actual_" .. property] = retval
end
return retval
end
local propval1 = set_and_fetch(alternant_multiword_spec, default_propval)
for _, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do
local propval2 = set_and_fetch(alternant_or_word_spec, propval1)
if alternant_or_word_spec.alternants then
for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do
local propval3 = set_and_fetch(multiword_spec, propval2)
for _, word_spec in ipairs(multiword_spec.word_specs) do
local propval4 = set_and_fetch(word_spec, propval3)
if propval4 == "mixed" then
-- FIXME, use clearer error message.
error("Attempt to assign mixed " .. property .. " to word")
end
set_and_fetch(word_spec, propval4)
end
end
else
if propval2 == "mixed" then
-- FIXME, use clearer error message.
error("Attempt to assign mixed " .. property .. " to word")
end
set_and_fetch(alternant_or_word_spec, propval2)
end
end
end
--[=[
Propagate `property` (one of "animacy", "gender" or "number") from nouns to adjacent
adjectives. We proceed as follows:
1. We assume the properties in question are already set on all nouns. This should happen in
set_defaults_and_check_bad_indicators().
2. We first propagate properties upwards and sideways. We recurse downwards from the top. When we encounter a multiword
spec, we proceed left to right looking for a noun. When we find a noun, we fetch its property (recursing if the noun
is an alternant), and propagate it to any adjectives to its left, up to the next noun to the left. When we have
processed the last noun, we also propagate its property value to any adjectives to the right (to handle e.g.
[[anděl strážný]] "guardian angel", where the adjective [[strážný]] should inherit the 'masculine' and 'animate'
properties of [[anděl]]). Finally, we set the property value for the multiword spec itself by combining all the
non-nil properties of the individual elements. If all non-nil properties have the same value, the result is that
value, otherwise it is `mixed_value` (which is "mixed" for animacy and gender, but "both" for number).
3. When we encounter an alternant spec in this process, we recursively process each alternant (which is a multiword
spec) using the previous step, and combine any non-nil properties we encounter the same way as for multiword specs.
4. The effect of steps 2 and 3 is to set the property of each alternant and multiword spec based on its children or its
neighbors.
]=]
local function propagate_properties(alternant_multiword_spec, property, default_propval, mixed_value)
propagate_multiword_properties(alternant_multiword_spec, property, mixed_value, "nouns only")
propagate_multiword_properties(alternant_multiword_spec, property, mixed_value, false)
propagate_properties_downward(alternant_multiword_spec, property, default_propval)
end
local function determine_noun_status(alternant_multiword_spec)
for i, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do
if alternant_or_word_spec.alternants then
local is_noun = false
for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do
for j, word_spec in ipairs(multiword_spec.word_specs) do
if is_regular_noun(word_spec) then
multiword_spec.first_noun = j
is_noun = true
break
end
end
end
if is_noun then
alternant_multiword_spec.first_noun = i
end
elseif is_regular_noun(alternant_or_word_spec) then
alternant_multiword_spec.first_noun = i
return
end
end
end
-- Set the part of speech based on properties of the individual words.
local function set_pos(alternant_multiword_spec)
if alternant_multiword_spec.args.pos then
alternant_multiword_spec.pos = alternant_multiword_spec.args.pos
elseif alternant_multiword_spec.saw_pron and not alternant_multiword_spec.saw_non_pron then
alternant_multiword_spec.pos = "pronoun"
elseif alternant_multiword_spec.saw_det and not alternant_multiword_spec.saw_non_det then
alternant_multiword_spec.pos = "determiner"
elseif alternant_multiword_spec.saw_num and not alternant_multiword_spec.saw_non_num then
alternant_multiword_spec.pos = "numeral"
else
alternant_multiword_spec.pos = "noun"
end
alternant_multiword_spec.plpos = require(en_utilities_module).pluralize(alternant_multiword_spec.pos)
end
local function normalize_all_lemmas(alternant_multiword_spec, pagename)
iut.map_word_specs(alternant_multiword_spec, function(base)
if base.lemma == "" then
base.lemma = pagename
end
base.orig_lemma = base.lemma
base.orig_lemma_no_links = m_links.remove_links(base.lemma)
local lemma = base.orig_lemma_no_links
-- If the lemma is all-uppercase, lowercase it but note this, so that later in combine_stem_ending() we convert it
-- back to uppercase. This allows us to handle all-uppercase acronyms without a lot of extra complexity.
-- FIXME: This may not make sense at all.
if uupper(lemma) == lemma then
base.all_uppercase = true
lemma = ulower(lemma)
end
base.actual_lemma = lemma
base.lemma = base.decllemma or lemma
end)
end
local function decline_noun(base)
for _, stems in ipairs(base.stem_sets) do
if not decls[base.decl] then
error("Internal error: Unrecognized declension type '" .. base.decl .. "'")
end
decls[base.decl](base, stems)
end
handle_derived_slots_and_overrides(base)
local function copy(from_slot, to_slot)
base.forms[to_slot] = base.forms[from_slot]
end
if base.actual_number ~= base.number then
local source_num = base.number == "sg" and "_s" or "_p"
local dest_num = base.number == "sg" and "_p" or "_s"
for case, _ in pairs(cases) do
copy(case .. source_num, case .. dest_num)
copy("nom" .. source_num .. "_linked", "nom" .. dest_num .. "_linked")
end
if base.actual_number ~= "both" then
local erase_num = base.actual_number == "sg" and "_p" or "_s"
for case, _ in pairs(cases) do
base.forms[case .. erase_num] = nil
end
base.forms["nom" .. erase_num .. "_linked"] = nil
end
end
end
local function get_variants(form)
return nil
--[=[
FIXME
return
form:find(com.VAR1) and "var1" or
form:find(com.VAR2) and "var2" or
form:find(com.VAR3) and "var3" or
nil
]=]
end
-- Compute the categories to add the noun to, as well as the annotation to display in the
-- declension title bar. We combine the code to do these functions as both categories and
-- title bar contain similar information.
local function compute_categories_and_annotation(alternant_multiword_spec)
local all_cats = {}
local function insert(cattype)
m_table.insertIfNot(all_cats, "Czech " .. cattype)
end
if alternant_multiword_spec.pos == "noun" then
if alternant_multiword_spec.actual_number == "sg" then
insert("uncountable nouns")
elseif alternant_multiword_spec.actual_number == "pl" then
insert("pluralia tantum")
end
end
local annotation
local annparts = {}
local decldescs = {}
local vowelalts = {}
local foreign = {}
local irregs = {}
local stemspecs = {}
local reducible = nil
local function get_genanim(gender, animacy)
local gender_code_to_desc = {
m = "masculine",
f = "feminine",
n = "neuter",
none = nil,
}
local animacy_code_to_desc = {
an = "animate",
inan = "inanimate",
none = nil,
}
local descs = {}
table.insert(descs, gender_code_to_desc[gender])
if gender ~= "f" and gender ~= "n" then
-- masculine or "none" (e.g. certain pronouns and numerals)
table.insert(descs, animacy_code_to_desc[animacy])
end
return table.concat(descs, " ")
end
local function trim(text)
text = text:gsub(" +", " ")
return mw.text.trim(text)
end
local function do_word_spec(base)
local actual_genanim = get_genanim(base.actual_gender, base.actual_animacy)
local declined_genanim = get_genanim(base.gender, base.animacy)
local genanim
if actual_genanim ~= declined_genanim then
genanim = ("%s (declined as %s)"):format(actual_genanim, declined_genanim)
insert("nouns with actual gender different from declined gender")
else
genanim = actual_genanim
end
if base.actual_gender == "m" then
-- Insert a category for 'Czech masculine animate nouns' or 'Czech masculine inanimate nouns'; the base categories
-- [[:Category:Czech masculine nouns]], [[:Czech animate nouns]] are auto-inserted.
insert(actual_genanim .. " " .. alternant_multiword_spec.plpos)
end
for _, stems in ipairs(base.stem_sets) do
local props = declprops[base.decl]
local cats = props.cat
if type(cats) == "function" then
cats = cats(base, stems)
end
if type(cats) == "string" then
cats = {cats}
end
local default_desc
for i, cat in ipairs(cats) do
if not cat:find("GENDER") and not cat:find("GENPOS") and not cat:find("POS") then
cat = cat .. " GENPOS"
end
cat = cat:gsub("GENPOS", "GENDER POS")
if not cat:find("POS") then
cat = cat .. " POS"
end
if i == #cats then
default_desc = cat:gsub(" POS", "")
end
cat = cat:gsub("GENDER", actual_genanim)
cat = cat:gsub("POS", alternant_multiword_spec.plpos)
-- Need to trim `cat` because actual_genanim may be an empty string.
insert(trim(cat))
end
local desc = props.desc
if type(desc) == "function" then
desc = desc(base, stems)
end
desc = desc or default_desc
desc = desc:gsub("GENDER", genanim)
-- Need to trim `desc` because genanim may be an empty string.
m_table.insertIfNot(decldescs, trim(desc))
local vowelalt
if stems.vowelalt == "quant" then
vowelalt = "quant-alt"
insert("nouns with quantitative vowel alternation")
elseif stems.vowelalt == "quant-ě" then
vowelalt = "í-ě-alt"
insert("nouns with í-ě alternation")
end
if vowelalt then
m_table.insertIfNot(vowelalts, vowelalt)
end
if reducible == nil then
reducible = stems.reducible
elseif reducible ~= stems.reducible then
reducible = "mixed"
end
if stems.reducible then
insert("nouns with reducible stem")
end
if base.foreign then
m_table.insertIfNot(foreign, "foreign")
if not base.decllemma then
-- NOTE: there are nouns that use both 'foreign' and 'decllemma', e.g. [[Zeus]].
insert("nouns with regular foreign declension")
end
end
-- User-specified 'decllemma:' indicates irregular stem. Don't consider foreign nouns in -us/-os/-es, -um/-on or
-- silent -e (e.g. [[software]]) where this ending is simply dropped in oblique and plural forms as irregular;
-- there are too many of these and they are already categorized above as 'nouns with regular foreign declension'.
if base.decllemma then
m_table.insertIfNot(irregs, "irreg-stem")
insert("nouns with irregular stem")
end
m_table.insertIfNot(stemspecs, stems.vowel_stem)
end
end
local key_entry = alternant_multiword_spec.first_noun or 1
if #alternant_multiword_spec.alternant_or_word_specs >= key_entry then
local alternant_or_word_spec = alternant_multiword_spec.alternant_or_word_specs[key_entry]
if alternant_or_word_spec.alternants then
for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do
key_entry = multiword_spec.first_noun or 1
if #multiword_spec.word_specs >= key_entry then
do_word_spec(multiword_spec.word_specs[key_entry])
end
end
else
do_word_spec(alternant_or_word_spec)
end
end
if alternant_multiword_spec.actual_number == "sg" or alternant_multiword_spec.actual_number == "pl" then
-- not "both" or "none" (for [[sebe]])
table.insert(annparts, alternant_multiword_spec.actual_number == "sg" and "sg-only" or "pl-only")
end
if #decldescs == 0 then
table.insert(annparts, "indecl")
else
table.insert(annparts, table.concat(decldescs, " // "))
end
if #vowelalts > 0 then
table.insert(annparts, table.concat(vowelalts, "/"))
end
if reducible == "mixed" then
table.insert(annparts, "mixed-reducible")
elseif reducible then
table.insert(annparts, "reducible")
end
if #foreign > 0 then
table.insert(annparts, table.concat(foreign, " // "))
end
if #irregs > 0 then
table.insert(annparts, table.concat(irregs, " // "))
end
alternant_multiword_spec.annotation = table.concat(annparts, " ")
if #stemspecs > 1 then
insert("nouns with multiple stems")
end
if alternant_multiword_spec.actual_number == "both" and not m_table.deepEquals(alternant_multiword_spec.sg_genders, alternant_multiword_spec.pl_genders) then
insert("nouns that change gender in the plural")
end
alternant_multiword_spec.categories = all_cats
end
local function show_forms(alternant_multiword_spec)
local lemmas = {}
for _, slot in ipairs(potential_lemma_slots) do
if alternant_multiword_spec.forms[slot] then
for _, formobj in ipairs(alternant_multiword_spec.forms[slot]) do
-- FIXME, now can support footnotes as qualifiers in headwords?
table.insert(lemmas, formobj.form)
end
break
end
end
local props = {
lemmas = lemmas,
slot_table = alternant_multiword_spec.output_noun_slots,
lang = lang,
canonicalize = function(form)
-- return com.remove_variant_codes(form)
return form
end,
}
iut.show_forms(alternant_multiword_spec.forms, props)
end
local function make_table(alternant_multiword_spec)
local forms = alternant_multiword_spec.forms
local function template_prelude(min_width)
return rsub([=[
<div>
<div class="NavFrame" style="max-width:MINWIDTHem">
<div class="NavHead" style="background:var(--wikt-palette-lighterblue, #ebf4ff);">{title}{annotation}</div>
<div class="NavContent" style="overflow:auto">
{\op}| style="min-width:MINWIDTHem" class="inflection-table inflection"
|- class="rowgroup"
]=], "MINWIDTH", min_width)
end
local function template_postlude()
return [=[
|{\cl}{notes_clause}</div></div></div>]=]
end
local table_spec_both = template_prelude("45") .. [=[
! style="width:33%;background:var(--wikt-palette-lightblue, #d9ebff);" |
! style="background:var(--wikt-palette-lightblue, #d9ebff);" | singular
! style="background:var(--wikt-palette-lightblue, #d9ebff);" | plural
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|nominative
| {nom_s}
| {nom_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|genitive
| {gen_s}
| {gen_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|dative
| {dat_s}
| {dat_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|accusative
| {acc_s}
| {acc_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|vocative
| {voc_s}
| {voc_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|locative
| {loc_s}
| {loc_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|instrumental
| {ins_s}
| {ins_p}
]=] .. template_postlude()
local function get_table_spec_one_number(number, numcode)
local table_spec_one_number = [=[
! style="width:33%;background:var(--wikt-palette-lightblue, #d9ebff);" |
! style="background:var(--wikt-palette-lightblue, #d9ebff);" | NUMBER
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|nominative
| {nom_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|genitive
| {gen_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|dative
| {dat_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|accusative
| {acc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|vocative
| {voc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|locative
| {loc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|instrumental
| {ins_CODE}
]=]
return template_prelude("30") .. table_spec_one_number:gsub("NUMBER", number):gsub("CODE", numcode) ..
template_postlude()
end
local function get_table_spec_one_number_clitic(number, numcode)
local table_spec_one_number_clitic = [=[
! rowspan=2 style="width:33%;background:var(--wikt-palette-lightblue, #d9ebff);"|
! colspan=2 style="background:var(--wikt-palette-lightblue, #d9ebff);" | NUMBER
|-
! style="width:33%;background:var(--wikt-palette-lightblue, #d9ebff);" | stressed
! style="background:var(--wikt-palette-lightblue, #d9ebff);" | clitic
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|nominative
| colspan=2 | {nom_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|genitive
| {gen_CODE}
| {clitic_gen_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|dative
| {dat_CODE}
| {clitic_dat_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|accusative
| {acc_CODE}
| {clitic_acc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|vocative
| colspan=2 | {voc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|locative
| colspan=2 | {loc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|instrumental
| colspan=2 | {ins_CODE}
]=]
return template_prelude("40") .. table_spec_one_number_clitic:gsub("NUMBER", number):gsub("CODE", numcode) ..
template_postlude()
end
local notes_template = [=[
<div style="width:100%;text-align:left;background:var(--wikt-palette-lightblue, #d9ebff);">
<div style="display:inline-block;text-align:left;padding-left:1em;padding-right:1em">
{footnote}
</div></div>
]=]
if alternant_multiword_spec.title then
forms.title = alternant_multiword_spec.title
else
forms.title = 'Declension of <i lang="cs">' .. forms.lemma .. '</i>'
end
local annotation = alternant_multiword_spec.annotation
if annotation == "" then
forms.annotation = ""
else
forms.annotation = " (<span style=\"font-size: smaller;\">" .. annotation .. "</span>)"
end
local number, numcode
if alternant_multiword_spec.actual_number == "sg" then
number, numcode = "singular", "s"
elseif alternant_multiword_spec.actual_number == "pl" then
number, numcode = "plural", "p"
elseif alternant_multiword_spec.actual_number == "none" then -- used for [[sebe]]
number, numcode = "", "s"
end
local table_spec =
alternant_multiword_spec.actual_number == "both" and table_spec_both or
alternant_multiword_spec.has_clitic and get_table_spec_one_number_clitic(number, numcode) or
get_table_spec_one_number(number, numcode)
forms.notes_clause = forms.footnote ~= "" and
m_string_utilities.format(notes_template, forms) or ""
return m_string_utilities.format(table_spec, forms)
end
local function compute_headword_genders(alternant_multiword_spec)
local genders = {}
local number
if alternant_multiword_spec.actual_number == "pl" then
number = "-p"
else
number = ""
end
iut.map_word_specs(alternant_multiword_spec, function(base)
local animacy = base.animacy
if animacy == "inan" then
animacy = "in"
end
m_table.insertIfNot(genders, base.gender .. "-" .. animacy .. number)
end)
return genders
end
-- Externally callable function to parse and decline a noun given user-specified arguments.
-- Return value is ALTERNANT_MULTIWORD_SPEC, an object where the declined forms are in
-- `ALTERNANT_MULTIWORD_SPEC.forms` for each slot. If there are no values for a slot, the
-- slot key will be missing. The value for a given slot is a list of objects
-- {form=FORM, footnotes=FOOTNOTES}.
function export.do_generate_forms(parent_args, from_headword)
local params = {
[1] = {required = true, template_default = "bůh<m.an.#.voce>"},
title = true,
pagename = true,
json = {type = "boolean"},
pos = true,
}
if from_headword then
params["head"] = {list = true}
params["lemma"] = {list = true}
params["g"] = {list = true}
params["f"] = {list = true}
params["m"] = {list = true}
params["adj"] = {list = true}
params["dim"] = {list = true}
params["id"] = {}
end
local args = m_para.process(parent_args, params)
local parse_props = {
parse_indicator_spec = parse_indicator_spec,
angle_brackets_omittable = true,
allow_blank_lemma = true,
}
local alternant_multiword_spec = iut.parse_inflected_text(args[1], parse_props)
alternant_multiword_spec.title = args.title
alternant_multiword_spec.args = args
local pagename = args.pagename or from_headword and args.head[1] or mw.loadData("Module:headword/data").pagename
normalize_all_lemmas(alternant_multiword_spec, pagename)
set_all_defaults_and_check_bad_indicators(alternant_multiword_spec)
-- These need to happen before detect_all_indicator_specs() so that adjectives get their genders and numbers set
-- appropriately, which are needed to correctly synthesize the adjective lemma.
propagate_properties(alternant_multiword_spec, "animacy", "inan", "mixed")
propagate_properties(alternant_multiword_spec, "number", "both", "both")
-- FIXME, the default value (third param) used to be 'm' with a comment indicating that this applied only to
-- plural adjectives, where it didn't matter; but in Czech, plural adjectives are distinguished for gender and
-- animacy. Make sure 'mixed' works.
propagate_properties(alternant_multiword_spec, "gender", "mixed", "mixed")
detect_all_indicator_specs(alternant_multiword_spec)
-- Propagate 'actual_number' after calling detect_all_indicator_specs(), which sets 'actual_number' for adjectives.
propagate_properties(alternant_multiword_spec, "actual_number", "both", "both")
determine_noun_status(alternant_multiword_spec)
set_pos(alternant_multiword_spec)
alternant_multiword_spec.output_noun_slots = get_output_noun_slots(alternant_multiword_spec)
local inflect_props = {
skip_slot = function(slot)
return skip_slot(alternant_multiword_spec.actual_number, slot)
end,
slot_table = alternant_multiword_spec.output_noun_slots,
get_variants = get_variants,
inflect_word_spec = decline_noun,
}
iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props)
compute_categories_and_annotation(alternant_multiword_spec)
alternant_multiword_spec.genders = compute_headword_genders(alternant_multiword_spec)
if args.json then
alternant_multiword_spec.args = nil
return require("Module:JSON").toJSON(alternant_multiword_spec)
end
return alternant_multiword_spec
end
-- Entry point for {{cs-ndecl}}. Template-callable function to parse and decline a noun given
-- user-specified arguments and generate a displayable table of the declined forms.
function export.show(frame)
local parent_args = frame:getParent().args
local alternant_multiword_spec = export.do_generate_forms(parent_args)
if type(alternant_multiword_spec) == "string" then
-- JSON return value
return alternant_multiword_spec
end
show_forms(alternant_multiword_spec)
return make_table(alternant_multiword_spec) ..
require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat)
end
return export
as1bm0psb9k523gxvznvatg80so9otl
5759397
5759394
2026-09-01T06:50:09Z
Octahedron80
267
5759397
Scribunto
text/plain
local export = {}
--[=[
Authorship: Ben Wing <benwing2>
]=]
--[=[
TERMINOLOGY:
-- "slot" = A particular combination of case/number.
Example slot names for nouns are "gen_s" (genitive singular) and
"voc_p" (vocative plural). Each slot is filled with zero or more forms.
-- "form" = The declined Czech form representing the value of a given slot.
-- "lemma" = The dictionary form of a given Czech term. Generally the nominative
masculine singular, but may occasionally be another form if the nominative
masculine singular is missing.
]=]
--[=[
FIXME:
1. Finish synthesize_singular_lemma(). [DONE]
2. Implement feminines in -ea, -oa/-ua, -ia, -oe. [DONE]
3. Implement "mixed" masculine nouns in -l, -n, -t (each different, also inanimate vs. animate). [DONE]
4. Allow 'stem:' override after vowel-final words like [[centurio]]. [DONE using decllemma:]
5. Support masculine foreign nouns in -us/-os/-es. [DONE]
6. Support masculine foreign nouns in -ius/-etc. [DONE]
7. Support masculine foreign nouns in unpronounced final -e (e.g. [[software]]). [DONE]
8. Support neuter foreign nouns in -um/-on. [DONE]
9. Support neuter foreign nouns in -ium/-ion. [DONE]
10. Support paired body parts, e.g. [[ruka]], [[noha]], [[oko]], [[ucho]], [[koleno]], [[rameno]]. [WON'T DO;
JUST SEPARATE THE MEANINGS AND GIVE THEM DIFFERENT DECLENSIONS]
11. Support masculine nouns in -e/ě that are neuter in the plural. [DONE]
12. Correctly handle -e vs. -ě, e.g. soft neuters have both [[kutě]] and [[poledne]]. [DONE]
13. Always use specified lemma in nom_pl and maybe acc_pl when plurale tantum. [DONE]
14. Support feminine nouns in -ca/-ča/-ša/-ža. [DONE]
15. Support feminine nouns in -ja/-ňa. [DONE]
16. Support mixed i-stem feminine nouns. [DONE]
17. Support "c as k" feminine nouns like [[ayahuasca]].
18. Support 'declgender'. [DONE]
19. Support pronouns with clitics. [DONE]
20. Singular-only and plural-only terms should not have number in accelerator form. [DONE]
21. Support [[úterý]] (like neuters in -í). [DONE]
22. Support feminines in -i ([[máti]], [[pramáti]]). [DONE]
23. Support foreign nouns in -ie ([[zombie]], [[hippie]], [[yuppie]]). [DONE]
24. Support foreign nouns in -í ([[muftí]], [[qádí]]). [DONE]
25. Support manual declensions. [DONE]
26. Support numerals. [DONE]
27. Allow for reducible spec in pluralia tantum and dereduce accordingly; also automatically assign reducibility
if singular stem ends in -Ck or -Cc. [DONE]
28. Use `pos` value in all categories.
29. Support determiners [[kolik]], [[tolik]], [[několik]], [[mnoho]]. [DONE]
30. Support a '.velar' indicator for foreign names whose pronunciation but not spelling ends in a velar: [[Remarque]],
[[Braque]], [[Mike]], [[Drake]], [[Jake]] with vocative 'Remarquu', 'Braquu', 'Mikeu', 'Drakeu', 'Jakeu'. In
general we need more thought around such foreign names; essentially, for names in a silent e, sometimes the -e
is dropped in all oblique forms (e.g. [[Shakespeare]], [[Pierre]], [[Barrande]], [[La Fontaine]], [[Braque]],
[[Remarque]] with gen sg 'Shakespeara', 'Pierra', Barranda', 'La Fontaina', 'Braqua', 'Remarqua') and sometimes
it's kept in all oblique forms except those ending in an -e, where -ee is avoided (e.g. [[Pete]], [[Gable]],
[[Jake]], [[White]], [[Byrne]], [[Mike]], [[Drake]] with gen sg 'Petea', 'Gablea' etc. and voc sg 'Pete', 'Gable'
but 'Jakeu', 'Mikeu'). Sometimes there are doublets, e.g. [[Hubble]] and [[Hume]] have gen sg 'Hubbla/Hubblea'
(where the second form is used among astronomers in a technical sense and the first form may be more popular)
and 'Huma/Humea'. We already have a '.foreign' indicator that when applied to a noun ending in -e drops the -e
in oblique forms e.g. for [[software]]. We may need to combine this with an explicit indicator of hard, soft or
velar as there will be names with silent -e and preceding soft consonant e.g. [[Bruce]], [[Coleridge]]. Note
that when the -e is kept it is still dropped before front vowels, hence dat sg 'Bruci'/Bruceovi'. Need some
investigation in IJP and cswikt. [.velar DONE]
31. Support 'declnumber'. [DONE]
32. Support foreign nouns in -ee ([[Yankee]]). [DONE]
]=]
local lang = require("Module:languages").getByCode("cs")
local m_table = require("Module:table")
local m_links = require("Module:links")
local m_string_utilities = require("Module:string utilities")
local iut = require("Module:inflection utilities")
local put = require("Module:parse utilities")
local m_para = require("Module:parameters")
local com = require("Module:cs-common")
local en_utilities_module = "Module:en-utilities"
local u = mw.ustring.char
local rsplit = mw.text.split
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rgmatch = mw.ustring.gmatch
local rsubn = mw.ustring.gsub
local ulen = mw.ustring.len
local usub = mw.ustring.sub
local uupper = mw.ustring.upper
local ulower = mw.ustring.lower
local force_cat = false -- set to true to make categories appear in non-mainspace pages, for testing
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
-- version of rsubn() that returns a 2nd argument boolean indicating whether
-- a substitution was made.
local function rsubb(term, foo, bar)
local retval, nsubs = rsubn(term, foo, bar)
return retval, nsubs > 0
end
local function track(track_id)
require("Module:debug/track")("cs-noun/" .. track_id)
return true
end
local output_noun_slots = {
nom_s = "nom|s",
nom_s_linked = "nom|s",
gen_s = "gen|s",
gen_s_linked = "gen|s",
clitic_gen_s = "clitic|gen|s",
dat_s = "dat|s",
clitic_dat_s = "clitic|dat|s",
acc_s = "acc|s",
clitic_acc_s = "clitic|acc|s",
voc_s = "voc|s",
loc_s = "loc|s",
ins_s = "ins|s",
nom_p = "nom|p",
nom_p_linked = "nom|p",
gen_p = "gen|p",
dat_p = "dat|p",
acc_p = "acc|p",
voc_p = "voc|p",
loc_p = "loc|p",
ins_p = "ins|p",
}
local function get_output_noun_slots(alternant_multiword_spec)
-- FIXME: To save memory we modify the table in-place. This won't work if we ever end up with multiple calls to
-- this module in the same Lua invocation, and we would need to clone the table.
if alternant_multiword_spec.actual_number ~= "both" then
for slot, accel_form in pairs(output_noun_slots) do
output_noun_slots[slot] = accel_form:gsub("|[sp]$", "")
end
end
return output_noun_slots
end
local potential_lemma_slots = {"nom_s", "nom_p", "gen_s"}
local cases = {
nom = true,
gen = true,
dat = true,
acc = true,
voc = true,
loc = true,
ins = true,
}
local clitic_cases = {
gen = true,
dat = true,
acc = true,
}
local function dereduce(base, stem)
local dereduced_stem = com.dereduce(base, stem)
if not dereduced_stem then
error("Unable to dereduce stem '" .. stem .. "'")
end
return dereduced_stem
end
--[=[
Maybe modify the stem and/or ending in certain special cases:
1. Final -e in vocative singular triggers first palatalization of the stem in some cases (e.g. hard masc).
2. Endings beginning with ě, i, í trigger second palatalization, as does -e in the loc_s.
NOTE: Correctly handling -e vs. -ě and -tdn/-ťďň alternations is tricky. We have to deal with the following:
1. Soft-stem and t-stem neuters can have either -e or -ě. With coronals we have both [[poledne]] "noon" with /n/ and
[[kutě]] "bed" with /ť/. We also have soft-stem neuter [[Labe]] with /b/ vs. t-stem neuter [[hříbě]] with /bj/.
2. Underlying palatal coronals maintain their nature before back vowels and when not followed by a vowel, e.g. [[štěně]]
"puppy" becomes 'štěňata' in the nom/acc/voc plural and [[přítelkyně]] "girlfriend" becomes 'přítelkyň' in the gen
plural, but underlying palatal labials become non-palatal, e.g. [[hříbě]] "foal" becomes 'hříbata' in the nom/acc/voc
plural.
3. There are at least four types of endings beginning with '-e':
a. "maintaining" endings, e.g. instrumental singular '-em', which do not change the nature of the consonant, e.g.
[[zákon]] "law" becomes 'zákonem' while [[vězeň]] "prisoner" becomes 'vězeněm';
b. "palatalizing" endings, e.g. locative singular '-e', which palatalizes t/d/n (and more generally applies the
Slavic second palatalization, e.g. k -> c, r -> ř), e.g. [[žena]] "woman" becomes 'ženě';
c. "depalatalizing" endings, e.g. feminine i-stem dative plural '-em', which actively depalatalize ť/ď/ň, e.g.
[[oběť]] "sacrifice, victim" becomes 'obětem';
d. vocative singular '-e' of hard-stem masculines, which applies the Slavic first palatalization in some
circumstances (e.g. k -> č, Cr -> Cř, sometimes c -> č).
The way we handle this as follows:
1. We maintain the underlying stems always in their "pronounced" form, i.e. if the last consonant is pronounced ť/ď/ň
we maintain the stem in that form, but if pronounced t/d/n, we use those consonants. Hence neuter [[poledne]] "noon"
has stem 'poledn-' but neuter [[štěně]] "puppy" has stem 'štěň'. If the stem ends in labial + /j/, we use a special
TEMP_SOFT_LABIAL character after the labial (rather than 'j', in case of stems that actually have a written 'j' in
them such as [[banjo]]).
2. We signal types (a), (b) and (c) above using respectively 'e', 'ě' and 'E'. Type (d) uses 'e' and sets
`base.palatalize_voc`.
3. In combine_stem_ending(), we convert the stem back to the written form before adding the ending. If the ending begins
with -e, this may entail converting -e to -ě, and in all cases -E is converted to -e. "Converting to the written
form" converts ť/ď/ň to plain equivalents and deletes TEMP_SOFT_LABIAL before -e, converting -e to -ě with such
consonants. The same conversions happen before other front consonants -ě/-é/-i/-í, which don't allow ť/ď/ň to
precede, and in all cases with TEMP_SOFT_LABIAL, which is not an actual consonant.
4. If the ending is specified using -ě, this is maintained after plain coronals and labials in combine_stem_ending(),
and converted to -e in other cases.
5. Applying the first and second palatalization happens below in apply_special_cases().
]=]
local function apply_special_cases(base, slot, stem, ending)
local palatalize_voc
if base.c_as_k and rfind(ending, "^[aouyáóúůý]") then
local k_stem = rsub(stem, "c$", "k")
stem = {stem, k_stem}
elseif slot == "voc_s" and ending == "e" and base.palatalize_voc and not base["-velar"] then
-- Don't palatalize words like [[hadíth]] with silent -h.
local palstem = com.apply_first_palatalization(stem)
-- According to IJP, nouns ending in -Cr palatalize in the vocative, but those in -Vr don't. In reality,
-- though, it's more complex. It appears that animate nouns in -Cr tend to palatalize but inanimate nouns
-- do it optionally. Specifics:
-- -- Inanimate nouns with optional palatalization (ř listed second): [[alabastr]], [[amfiteátr]], [[barometr]],
-- [[centilitr]], [[centrimetr]], [[decilitr]], [[decimetr]], [[Dněstr]], [[filtr]], [[galvanometr]],
-- [[hektolitr]], [[kalorimetr]], [[litr]], [[lustr]], [[manometr]], [[manšestr]], [[metr]] (NOTE: is both
-- animate and inanimate), [[mikrometr]], [[miliampérmetr]], [[mililitr]], [[nanometr]], [[orchestr]],
-- [[parametr]], [[piastr]], [[půllitr]], [[radiometr]], [[registr]], [[rotmistr]], [[semestr]], [[skútr]],
-- [[spirometr]], [[svetr]], [[šutr]], [[tachometr]], [[titr]], [[vítr]] (NOTE: has í-ě alternation),
-- [[voltmetr]]; [[bagr]], [[bunkr]], [[cedr]], [[Dněpr]], [[fofr]], [[habr]] (NOTE: ř listed first), [[hadr]]
-- (NOTE: ř listed first), [[hamr]], [[kafr]], [[kepr]], [[kopr]], [[koriandr]], [[krekr]], [[kufr]],
-- [[Kypr]], [[lágr]], [[lógr]], [[manévr]], [[masakr]], [[okr]], [[oleandr]], [[pulovr]], [[šlágr]],
-- [[vichr]] (NOTE: ř listed first), [[žánr]]
--
-- -- Inanimate nouns that don't palatalize: [[ampérmetr]], [[anemometr]], [[sfygmomanometr]], [[sfygmometr]];
-- [[dodekaedr]], [[Hamr]], [[ikozaedr]], [[kvádr]], [[sandr]], [[torr]]
--
-- -- Animate nouns that palatalize: [[arbitr]], [[bratr]], [[ekonometr]], [[foniatr]], [[fotr]], [[geometr]],
-- [[kmotr]], [[lotr]], [[magistr]], [[metr]] (NOTE: is both animate and inanimate), [[ministr]], [[mistr]],
-- [[pediatr]], [[Petr]], [[psychiatr]], [[purkmistr]], [[setr]], [[šamstr]]; [[bobr]], [[fajnšmekr]],
-- [[humr]], [[hypochondr]], [[kapr]], [[lídr]], [[negr]], [[obr]], [[salamandr]], [[sólokapr]], [[švagr]],
-- [[tygr]], [[zlobr]], [[zubr]]
--
-- -- Animate nouns with optional palatalization (ř listed first): [[Silvestr]]; [[Alexandr]], [[snajpr]]
--
-- Note the inconsistencies, e.g. [[sfygmomanometr]] and [[ampérmetr]] don't palatalize but [[manometr]] and
-- [[miliampérmetr]] do it optionally. In reality, inanimate vocatives are extremely rare so this may not be the
-- final word.
if base.animacy == "inan" and rfind(stem, com.cons_c .. "r$") and not rfind(stem, "rr$") then
-- optional r -> ř
stem = {stem, palstem}
else
stem = palstem
end
elseif rfind(ending, "^[ěií]") or slot == "loc_s" and ending == "e" then
if rfind(stem, "ck$") and rfind(base.lemma, "ck$") then
-- IJP says nouns in -ck (back, comeback, crack, deadlock, hatchback, hattrick, joystick, paperback, quarterback,
-- rock, soundtrack, track, truck) simplify the resulting -cc ending in the loc_p to -c. Similarly [[quarterback]]
-- has nom_pl 'quarterbaci, quarterbackove'. We need to check the lemma as well because nouns in -cek don't do this.
stem = rsub(stem, "ck$", "k")
end
if base.velar then
-- [[petanque]] /petank/ -> loc pl 'petancích'.
stem = rsub(stem, "gu$", "g")
stem = rsub(stem, "qu$", "k")
end
-- loc_s of hard masculines is sometimes -e/ě; the user might indicate this as -e, which we should handle
-- correctly
stem = com.apply_second_palatalization(stem)
end
return stem, ending
end
local function skip_slot(number, slot)
return number == "sg" and rfind(slot, "_p$") or
number == "pl" and rfind(slot, "_s$")
end
-- Basic function to combine stem(s) and ending(s) and insert the result into the appropriate slot. `stems` is either
-- the `stems` object passed into the declension functions (containing the various stems; see below) or a string to
-- override the stem. (NOTE: If you pass a string in as `stems`, you should pass the value of `stems.footnotes` as the
-- value of `footnotes` as it will be lost otherwise. If you need to supply your own footnote in addition, use
-- iut.combine_footnotes() to combine any user-specified footnote(s) with your footnote(s).) `endings` is either a
-- string specifying a single ending or a list of endings. If `endings` is nil, no forms are inserted. If an ending is
-- "-", the value of `stems` is ignored and the lemma is used instead as the stem; this is important in case the user
-- used `decllemma:` to specify a declension lemma different from the actual lemma, or specified '.foreign' (which has
-- a similar effect).
local function add(base, slot, stems, endings, footnotes)
if not endings then
return
end
-- Call skip_slot() based on the declined number; if the actual number is different, we correct this in
-- decline_noun() at the end.
if skip_slot(base.number, slot) then
return
end
local stems_footnotes = type(stems) == "table" and stems.footnotes or nil
footnotes = iut.combine_footnotes(iut.combine_footnotes(base.footnotes, stems_footnotes), footnotes)
if type(endings) == "string" then
endings = {endings}
end
for _, ending in ipairs(endings) do
-- Compute the stem. If ending is "-", use the lemma regardless. Otherwise if `stems` is a string, use it.
-- Otherwise `stems` is an object containing four stems (vowel-vs-non-vowel cross regular-vs-oblique);
-- compute the appropriate stem based on the slot and whether the ending begins with a vowel.
local stem
if ending == "-" then
stem = base.actual_lemma
ending = ""
elseif type(stems) == "string" then
stem = stems
else
local is_vowel_ending = rfind(ending, "^" .. com.vowel_c)
if stems.oblique_slots == "all" or
(stems.oblique_slots == "gen_p" or stems.oblique_slots == "all-oblique") and slot == "gen_p" or
stems.oblique_slots == "all-oblique" and (slot == "ins_s" or slot == "dat_p" or slot == "loc_p" or slot == "ins_p") then
if is_vowel_ending then
stem = stems.oblique_vowel_stem
else
stem = stems.oblique_nonvowel_stem
end
elseif is_vowel_ending then
stem = stems.vowel_stem
else
stem = stems.nonvowel_stem
end
end
-- Maybe apply the first or second Slavic palatalization.
stem, ending = apply_special_cases(base, slot, stem, ending)
ending = iut.combine_form_and_footnotes(ending, footnotes)
local function combine_stem_ending(stem, ending)
return com.combine_stem_ending(base, slot, stem, ending)
end
iut.add_forms(base.forms, slot, stem, ending, combine_stem_ending)
end
end
local function process_slot_overrides(base, do_slot)
for slot, overrides in pairs(base.overrides) do
-- Call skip_slot() based on the declined number; if the actual number is different, we correct this in
-- decline_noun() at the end.
if skip_slot(base.number, slot) then
error("Override specified for invalid slot '" .. slot .. "' due to '" .. base.number .. "' number restriction")
end
if do_slot(slot) then
base.slot_overridden[slot] = true
base.forms[slot] = nil
for _, override in ipairs(overrides) do
for _, value in ipairs(override.values) do
local form = value.form
local combined_notes = iut.combine_footnotes(base.footnotes, value.footnotes)
if override.full then
if form ~= "" then
iut.insert_form(base.forms, slot, {form = form, footnotes = combined_notes})
end
else
-- Convert a null ending to "-" in the acc/voc sg slots so that e.g. [[Kerberos]] declared as
-- <m.sg.foreign.gena:u.acc-:a> works correctly and generates accusative 'Kerberos/Kerbera' not
-- #'Kerber/Kerbera'.
if (slot == "acc_s" or slot == "voc_s") and form == "" then
form = "-"
end
for _, stems in ipairs(base.stem_sets) do
add(base, slot, stems, form, combined_notes)
end
end
end
end
end
end
end
local function add_decl(base, stems,
gen_s, dat_s, acc_s, voc_s, loc_s, ins_s,
nom_p, gen_p, dat_p, acc_p, loc_p, ins_p, footnotes
)
add(base, "nom_s", stems, "-", footnotes)
add(base, "gen_s", stems, gen_s, footnotes)
add(base, "dat_s", stems, dat_s, footnotes)
add(base, "acc_s", stems, acc_s, footnotes)
add(base, "voc_s", stems, voc_s, footnotes)
add(base, "loc_s", stems, loc_s, footnotes)
add(base, "ins_s", stems, ins_s, footnotes)
if base.number == "pl" then
-- If this is a plurale tantum noun and we're processing the nominative plural, use the user-specified lemma
-- rather than generating the plural from the synthesized singular, which may not match the specified lemma
-- (e.g. [[tvargle]] "Olomouc cheese" using <m.pl.mixed> would try to generate 'tvargle/tvargly', and [[peníze]]
-- "money" using <m.pl.#ě.genpl-> would try to generate 'peněze').
local acc_p_like_nom = m_table.deepEquals(nom_p, acc_p)
nom_p = "-"
if acc_p_like_nom then
acc_p = "-"
end
end
add(base, "nom_p", stems, nom_p, footnotes)
add(base, "gen_p", stems, gen_p, footnotes)
add(base, "dat_p", stems, dat_p, footnotes)
add(base, "acc_p", stems, acc_p, footnotes)
add(base, "loc_p", stems, loc_p, footnotes)
add(base, "ins_p", stems, ins_p, footnotes)
end
local function add_sg_decl(base, stems,
gen_s, dat_s, acc_s, voc_s, loc_s, ins_s, footnotes
)
add_decl(base, stems, gen_s, dat_s, acc_s, voc_s, loc_s, ins_s,
nil, nil, nil, nil, nil, nil, footnotes)
end
local function add_pl_only_decl(base, stems,
gen_p, dat_p, acc_p, loc_p, ins_p, footnotes
)
add_decl(base, stems, nil, nil, nil, nil, nil, nil,
"-", gen_p, dat_p, acc_p, loc_p, ins_p, footnotes)
end
local function add_sg_decl_with_clitic(base, stems,
gen_s, clitic_gen_s, dat_s, clitic_dat_s, acc_s, clitic_acc_s, voc_s, loc_s, ins_s, footnotes, no_nom_s
)
if not no_nom_s then
add(base, "nom_s", stems, "-", footnotes)
end
add(base, "gen_s", stems, gen_s, footnotes)
add(base, "clitic_gen_s", stems, clitic_gen_s, footnotes)
add(base, "dat_s", stems, dat_s, footnotes)
add(base, "clitic_dat_s", stems, clitic_dat_s, footnotes)
add(base, "acc_s", stems, acc_s, footnotes)
add(base, "clitic_acc_s", stems, clitic_acc_s, footnotes)
add(base, "voc_s", stems, voc_s, footnotes)
add(base, "loc_s", stems, loc_s, footnotes)
add(base, "ins_s", stems, ins_s, footnotes)
end
local function handle_derived_slots_and_overrides(base)
local function is_non_derived_slot(slot)
return slot ~= "voc_p" and slot ~= "acc_s" and slot ~= "clitic_acc_s"
end
local function is_derived_slot(slot)
return not is_non_derived_slot(slot)
end
base.slot_overridden = {}
-- Handle overrides for the non-derived slots. Do this before generating the derived
-- slots so overrides of the source slots (e.g. nom_p) propagate to the derived slots.
process_slot_overrides(base, is_non_derived_slot)
-- Generate the remaining slots that are derived from other slots.
if not base.pron and not base.det then
-- Pronouns don't have a vocative (singular or plural).
iut.insert_forms(base.forms, "voc_p", base.forms.nom_p)
end
if not base.forms.acc_s and not base.slot_overridden.acc_s then
iut.insert_forms(base.forms, "acc_s", base.forms[base.animacy == "inan" and "nom_s" or "gen_s"])
end
if not base.forms.clitic_acc_s and not base.slot_overridden.clitic_acc_s then
iut.insert_forms(base.forms, "clitic_acc_s", base.forms[base.animacy == "inan" and "nom_s" or "clitic_gen_s"])
end
-- Handle overrides for derived slots, to allow them to be overridden.
process_slot_overrides(base, is_derived_slot)
-- Compute linked versions of potential lemma slots, for use in {{cs-noun}}.
-- We substitute the original lemma (before removing links) for forms that
-- are the same as the lemma, if the original lemma has links.
for _, slot in ipairs(potential_lemma_slots) do
iut.insert_forms(base.forms, slot .. "_linked", iut.map_forms(base.forms[slot], function(form)
if form == base.orig_lemma_no_links and rfind(base.orig_lemma, "%[%[") then
return base.orig_lemma
else
return form
end
end))
end
end
-- Table mapping declension types to functions to decline the noun. The function takes two arguments, `base` and
-- `stems`; the latter specifies the computed stems (vowel vs. non-vowel, singular vs. plural) and whether the noun
-- is reducible and/or has vowel alternations in the stem. Most of the specifics of determining which stem to use
-- and how to modify it for the given ending are handled in add_decl(); the declension functions just need to generate
-- the appropriate endings.
local decls = {}
-- Table specifying additional properties for declension types. Every declension type must have such a table, which
-- specifies which category or categories to add and what annotation to show in the title bar of the declension table.
--
-- * Only the `cat` property of this table is mandatory; there is also a `desc` property to specify the annotation, but
-- this can be omitted and the annotation will then be computed from the `cat` property. The `cat` property is either
-- a string, a list of strings or a function (of two arguments, `base` and `stems` as above) returning a string or
-- list of strings. The string can contain the keywords GENDER to substitute the gender (and animacy for masculine
-- nouns) and POS (to substitute the pluralized part of speech). The keyword GENPOS is equivalent to 'GENDER POS'. If
-- no keyword is present, ' GENPOS' is added onto the end. If only GENDER is present, ' POS' is added onto the end.
-- In all cases, the language name is added onto the beginning to form the full category name.
-- * The `desc` property is of the same form as the `cat` property and specifies the annotation to display in the title
-- bar (which may have the same format as the category minus the part of speech, or may be abbreviated). The value
-- may not be a list of strings, as only one annotation is displayed. If omitted, it is derived from the category
-- spec(s) by taking the last category (if more than one is given) and removing ' POS' before keyword substitution.
local declprops = {}
-- Return the default masculine animate nominative plural ending(s) given `base` and `stems`. This is called for hard
-- and soft masculines ending in a consonant, but not for nouns ending in a vowel, which have their own defaults
-- (particularly nouns in -a, where -ista/-ita/-asta behave differently from other nouns in -a).
local function default_masc_animate_nom_pl(base, stems)
return
-- [monosyllabic words: Dánové, Irové, králové, mágové, Rusové, sokové, synové, špehové, zběhové, zeťové, manové, danové
-- (but Žid → Židé, Čech → Češi).] -- There are too many exceptions to this to make a special rule. It is better to use
-- the overall default of -i and require that cases with -ove, -ove/-i, -i/-ove, etc. use overrides.
-- com.is_monosyllabic(base.lemma) and "ové" or
-- reducible terms in -Cek; order of -ové vs. -i sometimes varies:
-- [[fracek]] (ové/i), [[klacek]] (i/ové), [[macek]] (ové/i), [[nácek]] (i/ové), [[prcek]] (ové/i), [[racek]] (ové/i);
-- [[bazilišek]] (i/ové), [[černoušek]] (i/ové), [[drahoušek]] (ové/i), [[fanoušek]] (i/ové), [[františek]] (an/inan,
-- ends in -i/-y but not -ové), [[koloušek]] (-i only), [[kulíšek]] (i/ové), [[oříšek]] (i/ové), [[papoušek]] (-i only),
-- [[prášek]] (i/ové), [[šašek]] (i/ové).
-- make sure to check `stems` as we don't want to include non-reducible words in -Cek (but do want to include
-- [[quarterback]], with -i/-ové)
rfind(stems.vowel_stem, "^" .. com.lowercase_c .. ".*" .. com.cons_c .. "k$") and {"i", "ové"} or
-- [[stoik]], [[neurotik]], [[logik]], [[fyzik]], etc.
rfind(base.lemma, "^" .. com.lowercase_c .. ".ik$") and {"i", "ové"} or
-- barmani, gentlemani, jazzmani, kameramani, narkomani, ombudsmani, pivotmani, rekordmani, showmani, supermani, toxikomani
rfind(base.lemma, "^" .. com.lowercase_c .. ".*man$") and "i" or
-- terms ending in -an after a palatal or a consonant that doesn't change when palatalized, i.e. labial or l (but -man
-- forms -mani unless in a proper noun): Brňan → Brňané, křesťan → křesťané, měšťan → měšťané, Moravan → Moravané,
-- občan → občané, ostrovan → ostrované, Pražan → Pražané, Slovan → Slované, svatebčan → svatebčané, venkovan → venkované,
-- Australan → Australané; also s, because there are many demonyms in -san e.g. [[Andalusan]], [[Barbadosan]], [[Oděsan]],
-- and few proper nouns in -san; similarly z because of [[Belizan]], [[Gazan]], [[Kavkazan]], etc.; also w, which isn't a
-- normal consonant in Czech but occurs in [[Glasgowan]] and [[Zimbabwan]]; NOTE: a few misc words like [[pohan]] also
-- work this way but need manual overrides
rfind(base.lemma, "[" .. com.inherently_soft .. com.labial .. "wlsz]an$") and {"é", "i"} or -- most now can also take -i
-- proper names: Baťové, Novákové, Petrové, Tomášové, Vláďové; exclude demonyms (but include surnames)
rfind(base.lemma, "^" .. com.uppercase_c) and (base.surname or not rfind(base.lemma, "[eě]c$")) and "ové" or
-- demonyms: [[Albánec]], [[Gruzínec]], [[Izraelec]], [[Korejec]], [[Libyjec]], [[Litevec]], [[Němec]], [[Portugalec]]
rfind(base.lemma, "^" .. com.uppercase_c .. ".*[eě]c$") and "i" or
-- From here on down, we're dealing only with lowercase terms.
-- buditelé, budovatelé, čekatelé, činitelé, hostitelé, jmenovatelé, pisatelé, ručitelé, velitelé, živitelé
rfind(base.lemma, ".*tel$") and "é" or
-- nouns in -j: čaroděj → čarodějové, lokaj → lokajové, patricij → patricijové, plebej → plebejové, šohaj → šohajové, žokej → žokejové
-- nouns in -l: apoštol → apoštolové, břídil → břídilové, fňukal → fňukalové, hýřil → hýřilové, kutil → kutilové,
-- loudal → loudalové, mazal → mazalové, škrabal → škrabalové, škudlil → škudlilové, vyvrhel → vyvrhelové, žvanil → žvanilové
-- (we excluded those in -tel above)
rfind(base.lemma, ".*[jl]$") and "ové" or
-- archeolog → archeologové, biolog → biologové, geolog → geologové, meteorolog → meteorologové
rfind(base.lemma, ".*log$") and "ové" or
-- dramaturg → dramaturgové, chirurg → chirurgové
rfind(base.lemma, ".*urg$") and "ové" or
-- fotograf → fotografové, geograf → geografové, lexikograf → lexikografové
rfind(base.lemma, ".*graf$") and "ové" or
-- bibliofil → bibliofilové, germanofil → germanofilové
rfind(base.lemma, ".*fil$") and "ové" or
-- rusofob → rusofobové
rfind(base.lemma, ".*fob$") and "ové" or
-- agronom → agronomové, ekonom → ekonomové
rfind(base.lemma, ".*nom$") and "ové" or
"i"
end
decls["hard-m"] = function(base, stems)
-- Nouns ending in hard -c, e.g. [[hec]] "joke", [[kibuc]] "kibbutz", don't palatalize.
base.palatalize_voc = not rfind(stems.vowel_stem, "c$")
base.hard_c = true
local velar = base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$")
-- See [https://prirucka.ujc.cas.cz/en/?id=360] on declension of toponyms.
local toponym = base.animacy == "inan" and rfind(base.lemma, "^" .. com.uppercase_c)
-- Some toponyms take -a in the genitive singular, e.g. toponyms in -ín ([[Zlín]], [[Jičín]], [[Berlín]]);
-- -ýn ([[Hostýn]], [[Londýn]]); -ov ([[Havířov]]); and -ev ([[Bezdrev]]), as do some others, e.g. domestic
-- [[Beroun]], [[Brandýs]], [[Náchod]], [[Tábor]] and foreign [[Betlém]] "Bethlehem", [[Egypt]],
-- [[Jeruzalém]] "Jerusalem", [[Milán]] "Milan", [[Řím]] "Rome", [[Rýn]] "Rhine". Also some transferred from
-- common nouns e.g. ([[Nový]]) [[Kostel]], ([[Starý]]) [[Rybník]].
local toponym_gen_a = toponym and (rfind(base.lemma, "[íý]n$") or rfind(base.lemma, "[oe]v$"))
-- Toponyms in -ík (Mělník, Braník, Rakovník, Lipník) seem to fluctuate between gen -a and -u. Also some in
-- ‑štejn, ‑berg, ‑perk, ‑burk, ‑purk (Rabštejn, Heidelberg, Kašperk, Hamburk, Prešpurk) and some others:
-- Zbiroh, Kamýk, Příbor, Zábřeh, Žebrák, Praděd.
local toponym_gen_a_u = toponym and rfind(base.lemma, "ík$")
-- Toponyms that take -a in the genitive singular tend to take -ě in the locative singular; so do those in
-- -štejn (Rabštejn), -hrad (Petrohrad), -grad (Volgograd).
local toponym_loc_e = toponym and (toponym_gen_a or rfind(base.lemma, "štejn$") or rfind(base.lemma, "[gh]rad$"))
-- Toponyms in -ík seem to fluctuate between loc -ě and -u.
local toponym_loc_e_u = toponym_gen_a_u
-- Inanimate gen_s in -a other than toponyms in -ín/-ýn/-ev/-ov (e.g. [[zákon]] "law", [[oběd]] "lunch", [[kostel]] "church",
-- [[dnešek]] "today", [[leden]] "January", [[trujúhelník]] "triangle") needs to be given manually, using '<gena>'.
local gen_s = toponym_gen_a and "a" or toponym_gen_a_u and {"a", "u"} or base.animacy == "inan" and "u" or "a"
-- Animates with dat_s only in -u (e.g. [[člověk]] "person", [[Bůh]] "God") need to give this manually,
-- using '<datu>'.
local dat_s = base.animacy == "inan" and "u" or base.surname and "ovi" or {"ovi", "u"}
-- Inanimates with loc_s in -e/ě other than certain toponyms (see above) need to give this manually, using <locě>, but
-- it will trigger the second palatalization automatically.
local loc_s = toponym_loc_e and "ě" or toponym_loc_e_u and {"ě", "u"} or dat_s
-- Velar-stem animates with voc_s in -e (e.g. [[Bůh]] "God", voc_s 'Bože'; [[člověk]] "person", voc_s 'člověče')
-- need to give this manually using <voce>; it will trigger the first palatalization automatically.
local voc_s = velar and "u" or "e" -- 'e' will trigger first palatalization in apply_special_cases()
-- Nom_p in -i will trigger second palatalization in apply_special_cases().
local nom_p = base.animacy == "inan" and "y" or default_masc_animate_nom_pl(base, stems)
-- Per IJP and Janda and Townsend:
-- * loc_p in -ích is currently the default for velars but not otherwise; it will automatically trigger the second
-- palatalization (e.g. [[práh]] "threshold", loc_p 'prazích'). Otherwise, -ích needs to be given manually using
-- <locplích>, e.g. [[les]] "forest"; [[hotel]] "hotel"; likewise for loc_p in -ách (e.g. [[plech]]
-- "metal plate"), using <locplách>.
-- * Inanimate hard nouns in -c normally have -ech: [[hec]] "joke", [[tác]] "tray", [[truc]], [[kec]], [[frc]],
-- [[flanc]], [[kibuc]] "kibbutz", [[pokec]] "chat".
-- In the IJP tables, inanimate reducible nouns in -ček (and most in -cek, although there are many fewer; also some
-- in -žek, but in this case it's too inconsistent to make the default) regularly have both -ích and -ách in the
-- locative plural, while similar animate nouns only have -ích. This applies even to nouns like [[háček]] and
-- [[koníček]] that can be either animate or inanimate. Make sure to exclude nouns in -ck such as [[comeback]] and
-- [[joystick]], which have only -ích.
local loc_p =
base.animacy == "inan" and rfind(base.lemma, "[cč]ek$") and rfind(stems.vowel_stem, "[cč]k$") and {"ích", "ách"} or
velar and "ích" or "ech"
add_decl(base, stems, gen_s, dat_s, nil, voc_s, loc_s, "em",
-- loc_p in -ích not after velar stems (e.g. [[les]] "forest"; [[hotel]] "hotel") needs to be given manually
-- using <locplích>; it will automatically trigger the second palatalization; loc_p in -ách (e.g. [[plech]]
-- "metal plate") also needs to be given manually using <locplách>
nom_p, "ů", "ům", "y", loc_p, "y")
end
declprops["hard-m"] = {
desc = function(base, stems)
if base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$") then
return "velar GENDER"
else
return "hard GENDER"
end
end,
cat = function(base, stems)
if base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$") then
return "velar-stem"
else
return "hard"
end
end
}
decls["semisoft-m"] = function(base, stems)
-- Examples:
-- * Animate in -ius: génius, nuncius, nonius (breed of horse), notárius, ordinárius, patricius, primárius,
-- pronuncius, various names
-- * Animate in -eus: farizeus, basileus, pygmeus ([[skarabeus]] inflects hard in the plural), various names
-- * Inanimate in -ius: nonius (measuring device), rádius, sestercius
-- NOTE: Inanimate nouns in -eus (nukleus, choreus) inflect hard in the plural
local dat_s = base.animacy == "inan" and "u" or base.surname and "ovi" or {"ovi", "u"}
local loc_s = dat_s
local nom_p = base.animacy == "inan" and "e" or "ové"
add_decl(base, stems, "a", dat_s, nil, "e", loc_s, "em",
nom_p, "ů", "ům", "e", "ích", "i")
end
declprops["semisoft-m"] = {
cat = "semisoft"
}
decls["soft-m"] = function(base, stems)
base.palatalize_voc = true
-- animates with dat_s only in -i need to give this manually, using '<dati>'
local dat_s = base.animacy == "inan" and "i" or base.surname and "ovi" or {"ovi", "i"}
local loc_s = dat_s
-- Per IJP, the vast majority of soft masculine animates take -i in the voc_s, but those in -ec/-ěc take -e with first
-- palatalization to -če, e.g. [[otec]] "father", [[lovec]] "hunter", [[blbec]] "fool, idiot", [[horolezec]]
-- "mountaineer", [[znalec]] "expert", [[chlapec]] "boy", [[nadšenec]] "enthusiast", [[luněc]] (type of bird).
-- Demonyms but not surnames ending in -ec but beginning with a capital letter take either -e or -i (only the former
-- triggers the first palatalization). Examples: [[Portugalec]], [[Slovinec]] "Slovenian", [[Japonec]], [[Vietnamec]].
-- Not [[Kadlec]] (surname).
local voc_s = base.animacy == "an" and rfind(base.lemma, "[eě]c$") and stems.reducible and
(not base.surname and rfind(base.lemma, "^" .. com.uppercase_c) and {"e", "i"} or "e") or "i"
local nom_p = base.animacy == "inan" and "e" or default_masc_animate_nom_pl(base, stems)
-- nouns with loc_p in -ech (e.g. [[cíl]] "goal") need to give this manually, using <locplech>
add_decl(base, stems, "e", dat_s, nil, voc_s, loc_s, "em",
nom_p, "ů", "ům", "e", "ích", "i")
end
declprops["soft-m"] = {
cat = "soft"
}
decls["mixed-m"] = function(base, stems)
-- NOTE: IJP tends to list the soft endings first, but per their section on this
-- (https://prirucka.ujc.cas.cz/en/?id=220), the hard endings tend to predominate in modern use, so we list them
-- first.
if base.animacy == "an" then
if rfind(base.lemma, "l$") then
-- [[anděl]] "angel", [[manžel]] "husband", [[strašpytel]] "coward"; 'strašpytel' has a different declension
-- from the other two, with more soft forms. [[manžel]] has plural in -é or -ové and needs an override.
local dat_s = base.surname and "ovi" or {"ovi", "u"}
local loc_s = dat_s
add_decl(base, stems, "a", dat_s, nil, "i", loc_s, "em",
"é", "ů", "ům", {"y", "e"}, {"ech", "ích"}, {"y", "i"})
else
-- -s/-z: rorýs, platýs, pilous, markýz, všekaz, stávkokaz, penězokaz, listokaz, dřevokaz, zrnokaz, boss.
-- Others recently moving towards this declension: primas, karas, kalous, konipas, ibis, chabrus, chuďas,
-- kakabus, kliďas, kandrdas, morous, vágus.
-- Some names: Alois, Mánes.
-- Both hard and soft endings throughout. Most have -i and -ové in the nominative plural.
local dat_s = base.surname and "ovi" or {"u", "i", "ovi"}
local loc_s = dat_s
add_decl(base, stems, {"a", "e"}, dat_s, nil, {"e", "i"}, loc_s, "em",
{"i", "ové"}, "ů", "ům", {"y", "e"}, {"ech", "ích"}, {"y", "i"})
end
else
-- Given in IJP: burel, hnědel, chmel, krevel, kužel, námel, plevel, tmel, zádrhel, apríl, artikul, koukol, rubl,
-- úběl, plus reducible nouns cumel, chrchel, [[kotel]] "cauldron", sopel, uhel. Also [[městys]]. Many of them are listed in the
-- IJP tables with only hard or with fewer soft forms, so need to be investigated individually.
if rfind(base.lemma, "[ls]$") then
add_decl(base, stems, {"u", "e"}, {"u", "i"}, nil, {"e", "i"}, {"u", "e", "i"}, "em",
{"y", "e"}, "ů", "ům", {"y", "e"}, {"ech", "ích"}, {"y", "i"})
else
-- -n/-t; hard in the plural: hřeben, ječmen, [[kámen]] "stone", kmen, kořen, křemen, plamen,
-- [[pramen]] "source", [[řemen]] "strap", den, týden, [[loket]] "elbow".
-- There may be deviations (e.g. soft plural forms for [[den]]), so need to be investigated individually.
add_decl(base, stems, {"u", "e"}, {"u", "i"}, nil, "i", {"u", "i"}, "em",
"y", "ů", "ům", "y", "ech", "y")
end
end
end
declprops["mixed-m"] = {
cat = "mixed"
}
decls["a-m"] = function(base, stems)
-- husita → husité, izraelita → izraelité, jezuita → jezuité, kosmopolita → kosmopolité, táborita → táborité
-- fašista → fašisté, filatelista → filatelisté, fotbalista → fotbalisté, kapitalista → kapitalisté,
-- marxista → marxisté, šachista → šachisté, terorista → teroristé. NOTE: most these words actually appear in
-- the IJP tables with -é/-i, so we go accordingly.
--
-- gymnasta → gymnasté, fantasta → fantasté; also chiliasta, orgiasta, scholiasta, entuziasta, dynasta, ochlasta,
-- sarkasta, vymasta; NOTE: Only 'gymnasta' actually given with just -é; 'fantasta' with -ové/-é, 'dynasta' and
-- 'ochlasta' with just -ové, vymasta not in IJP (no plural given in SSJC), and the rest with -é/-i. So we go
-- accordingly.
local it_ist = rfind(stems.vowel_stem, "is?t$") or rfind(stems.vowel_stem, "ast$")
-- Velar nouns (e.g. [[sluha]] "servant") have -ích in the loc_p (which triggers the second palatalization)
-- instead of -ech. Nouns whose stem ends in a soft consonant ([[rikša]], [[paša]], [[bača]], [[mahárádža]],
-- [[paňáca]], etc.) behave likewise.
-- FIXME: [[pária]] "pariah", [[Maria]] etc.
local loc_p =
(base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$") or rfind(stems.vowel_stem, com.inherently_soft_c .. "$")) and
"ích" or "ech"
add_decl(base, stems, "y", "ovi", "u", "o", "ovi", "ou",
it_ist and {"é", "i"} or "ové", "ů", "ům", "y", loc_p, "y")
end
declprops["a-m"] = {
cat = "GENPOS in -a"
}
decls["e-m"] = function(base, stems)
-- [[zachránce]] "savior"; [[soudce]] "judge"; etc.
-- At least two inanimates: [[průvodce]] "guide, guidebook; computing wizard"; [[správce]] "manager (software program), configuration program"
local dat_s = base.animacy == "inan" and "i" or base.surname and "ovi" or {"ovi", "i"}
local loc_s = dat_s
add_decl(base, stems, "e", dat_s, nil, "-", loc_s, "em",
-- nouns with -ové as well (e.g. [[soudce]] "judge") will need to specify that manually, e.g. <nompli:ové>
base.animacy == "inan" and "e" or "i", "ů", "ům", "e", "ích", "i")
end
declprops["e-m"] = {
cat = "GENPOS in -e"
}
decls["i-m"] = function(base, stems)
-- [[kivi]] "kiwi (bird)"; [[kuli]] "coolie"; [[lori]] "lory, lorikeet (bird)" (loc_pl 'loriech/loriích/lorich');
-- [[vini]] "parrot of the genus Vini"; [[yetti]]/[[yeti]] "yeti". other examples: [[aguti]], [[efendi]], [[hadži]],
-- [[pekari]], [[regenschori]], [[yetti]]/[[yeti]].
--
-- [[grizzly]]/[[grizly]] "grizzly bear"; [[pony]] "pony"; [[husky]] "husky"; [[dandy]] "dandy"; [[Billy]] "billy".
--
-- NOTE: Some nouns in -y are regular soft stems, e.g. [[gay]] "gay person"; [[gray]] "gray (unit of absorbed
-- radiation)"; [[Nagy]] (surname).
--
-- NOTE: The stem ends in -i/-y.
add_decl(base, stems, "ho", "mu", nil, "-", "m", "m",
-- ins_pl 'kivii/kivimi'
{"ové", ""}, {"ů", "ch"}, {"ům", "m"}, {"e", ""}, {"ích", "ch"}, {"i", "mi"})
end
declprops["i-m"] = {
cat = "GENPOS in -i/-y"
}
decls["í-m"] = function(base, stems)
-- [[kádí]] "qadi (Islamic judge)", [[mahdí]] "Mahdi (Islamic prophet)", [[muftí]] "mufti (Islamic scholar)",
-- [[sipáhí]] "sipahi (Algerian cavalryman in the French army)"
--
-- No obvious examples in -ý, but the support is there.
--
-- NOTE: The stem ends in -í/-ý.
add_decl(base, stems, "ho", "mu", nil, "-", "m", "m",
{"ové", ""}, {"ů", "ch"}, {"ům", "m"}, {"e", ""}, "ích", "mi")
end
declprops["í-m"] = {
cat = "GENPOS in -í/-ý"
}
decls["ie-m"] = function(base, stems)
-- [[zombie]] "zombie" (also fem/neut), [[hippie]] "hippie", [[yuppie]] "yuppie", [[rowdie]] "rowdy/hooligan"
--
-- NOTE: The stem ends in -i (not -ie, because of the plural).
add_decl(base, stems, "eho", "emu", nil, "-", "em", "em",
{"ové", "es"}, {"ů", "es"}, {"ům", "es"}, {"e", "es"}, {"ích", "es"}, {"i", "es"})
end
declprops["ie-m"] = {
cat = "GENPOS in -ie"
}
decls["ee-m"] = function(base, stems)
-- [[Yankee]] "Yankee"
--
-- NOTE: The stem ends in -ee.
add_decl(base, stems, "ho", "mu", nil, "-", "m", "m",
"ové", "ů", "ům", "e", "ích", "i")
end
declprops["ee-m"] = {
cat = "GENPOS in -ee"
}
decls["o-m"] = function(base, stems)
-- [[kápo]] "head, leader"; [[lamželezo]] "strongman"; [[torero]] "bullfighter"; [[žako]] "African gray parrot";
-- [[dingo]] "dingo"; [[kakapo]] "kakapo" (given in Wiktionary with dat_s/loc_s in -ovi only not -ovi/-u; probably
-- wrong but not in IJP); [[maestro]] "maestro"; [[Bruno]] "Bruno", [[Hugo]] "Hugo"; [[Ivo]] "Yves" (these names
-- are singular-only per IJP); [[Kvido]] "Guido, Guy" (per IJP has accusative in -a or -ona); [[Oto]] "Otto" (per
-- IJP also declinable like virile -a masculines; singular-only); [[Kuřátko]] (a surname; how declined?);
-- [[Picasso]] (surname; how declined?); [[Pluto]] "Pluto (God)", also "Pluto (planet)", which is inanimate;
-- [[Samo]]/[[Sámo]] "Samo (7th century Slavic ruler)" (dat_s/loc_s only in -ovi, needs override); [[Tomio]]
-- "Tomio (Japanese male given name)" (how declined?); [[nemakačenko]] "idler, loafer" (given in Wiktionary with
-- dat_s/loc_s in -ovi only, as for [[kakapo]]); [[nefachčenko]] "idler, loafer"; note also [[gadžo]] "gadjo",
-- which has a unique declension.
--
-- Velar nouns ([[žako]], [[dingo]], etc.) have -ích in the loc_p (which triggers the second palatalization)
-- instead of -ech.
local velar = base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$")
-- inanimates e.g. [[Pluto]] (planet) have -u only, like for normal hard masculines.
local dat_s = base.animacy == "inan" and "u" or base.surname and "ovi"or {"ovi", "u"}
local loc_s = dat_s
local loc_p = velar and "ích" or "ech"
add_decl(base, stems, "a", dat_s, nil, "-", loc_s, "em",
"ové", "ů", "ům", "y", loc_p, "y")
end
declprops["o-m"] = {
cat = "GENPOS in -o"
}
decls["u-m"] = function(base, stems)
-- [[emu]] "emu", [[guru]] "guru", [[kakadu]] "cockatoo", [[marabu]] "marabou" (declined the same way)
-- [[Osamu]] "Osamu (Japanese male given name)" [how declined?]
-- [[Višnu]] "Vishnu" (declined like [[guru]] but singular-only)
-- [[budižkničemu]] "good-for-nothing, ne'er-do-well" (indeclinable in the singular, declinable as masculine hard stem
-- budižkničemové etc. in the plural, declinable as feminine hard stem budižkničemy etc. in the plural when feminine).
--
-- NOTE: The stem ends in -u.
add_decl(base, stems, "a", "ovi", nil, "-", "ovi", "em",
"ové", "ů", "ům", "y", "ech", "y")
end
declprops["u-m"] = {
cat = "GENPOS in -u"
}
decls["tstem-m"] = function(base, stems)
-- E.g. [[kníže]] "prince", [[hrabě]] "earl", [[markrabě]] "margrave".
add_decl(base, stems, "ete", "eti", "ete", "-", "eti", "etem",
"ata", "at", "atům", "ata", "atech", "aty")
end
declprops["tstem-m"] = {
cat = "t-stem"
}
decls["hard-f"] = function(base, stems)
base.no_palatalize_c = true
if base.c_as_k then
-- forms like 'ayahuascy' are allowed.
base.hard_c = true
end
-- [[skica]] "sketch", [[gejša]] "geisha", [[rikša]] "rickshaw (vehicle)"; [[arakača]], [[čača]], [[čiča]] (drink),
-- [[dača]] "dacha", [[gutaperča]] "guttapercha", [[viskača]]; [[babča]], [[číča]], [[káča]], [[mamča]], [[úča]].
-- Also appears to apply to ď (e.g. [[Naďa]]) and ť, as well as certain words with stems in -ň and -j (e.g. [[doňa]],
-- and personal names such as [[Táňa]] and [[Darja]]), which normally have a mixed declension.
local soft_cons = rfind(base.vowel_stem, "[cčšžďťjň]$") and not base.c_as_k
local dat_s = soft_cons and {"ě", "i"} or "ě"
local loc_s = dat_s
add_decl(base, stems, "y", dat_s, "u", "o", loc_s, "ou",
"y", "", "ám", "y", "ách", "ami")
end
declprops["hard-f"] = {
cat = "hard"
}
decls["soft-f"] = function(base, stems)
-- This also includes feminines in -ie, e.g. [[belarie]], [[signorie]], [[uncie]], and feminines in -oe, e.g.
-- [[kánoe]], [[aloe]] and medical terms like [[dyspnoe]], [[apnoe]], [[hemoptoe]], [[kalanchoe]].
-- Nouns in -ice like [[ulice]] "street" have null genitive plural e.g. 'ulic'; nouns in -yně e.g. [[přítelkyně]]
-- "girlfriend" have gen pl 'přítelkyň' or 'přítelkyní' with two possible endings; otherwise -í. (Alternation between
-- -ň and -n and between -e and -ě handled automatically by combine_stem_ending().)
local gen_p = rfind(base.lemma, "ice$") and "" or rfind(base.lemma, "yně$") and {"", "í"} or "í"
-- Vocative really ends in -e, not just a copy of the nominative; cf. [[sinfonia]], which is soft-f except for
-- the nominative and has -e in the vocative singular.
add_decl(base, stems, "e", "i", "i", "e", "i", "í",
"e", gen_p, "ím", "e", "ích", "emi")
end
declprops["soft-f"] = {
cat = "soft"
}
decls["mixed-f"] = function(base, stems)
-- Lowercase nouns in -ňa (e.g. bárišňa/báryšňa, doňa, dueňa, piraňa, vikuňa) and -ja (e.g. maracuja, papája, sója).
-- Also non-personal proper nouns in -ňa (e.g. [[Keňa]] "Kenya") and -ja (e.g. [[Troja]]/[[Trója]] "Troy",
-- [[Amudarja]] "Amu Darya"). Does not appear to apply to personal proper nouns (e.g. [[Táňa]] "Tanya", [[Darja]] "Daria"),
-- which usually decline like [[gejša]], [[dača]], [[skica]]).
add_decl(base, stems, {"i", "e"}, {"e", "i"}, "u", "o", {"e", "i"}, "ou",
{"i", "e"}, {"", "í"}, {"ám", "ím"}, {"i", "e"}, {"ách", "ích"}, {"ami", "emi"})
end
declprops["mixed-f"] = {
cat = "mixed"
}
decls["cons-f"] = function(base, stems)
-- e.g. [[dlaň]] "palm (of the hand)"
add_decl(base, stems, "e", "i", "-", "i", "i", "í",
"e", "í", "ím", "e", "ích", "emi")
end
declprops["cons-f"] = {
cat = "soft zero-ending"
}
decls["istem-f"] = function(base, stems)
add_decl(base, stems, "i", "i", "-", "i", "i", "í",
-- See above under apply_special_cases(); -E causes depalatalization of ť/ď/ň.
"i", "í", "Em", "i", "Ech", "mi")
end
declprops["istem-f"] = {
cat = "i-stem"
}
decls["mixed-istem-f"] = function(base, stems)
local gen_s, nom_p, dat_p, loc_p, ins_p
-- Use of ě vs E below is intentional. Contrast [[oběť]] dat pl 'obětem' (depalatalizing) with [[nit]] ins pl
-- 'nitěmi' (palatalizing). See comment above under apply_special_cases().
if base.mixedistem == "pěst" then
-- pěst, past, mast, lest [reducible; ins pl 'lstmi'], pelest, propust, plst, oběť, zeď [reducible; ins pl
-- 'zdmi'], paměť [ins pl 'pamětmi/paměťmi]
gen_s, nom_p, dat_p, loc_p, ins_p = "i", "i", {"ím", "Em"}, {"ích", "Ech"}, "mi"
elseif base.mixedistem == "moc" then
-- moc, nemoc, pomoc, velmoc; NOTE: pravomoc has -i/-e alternation in gen_s, nom_p
gen_s, nom_p, dat_p, loc_p, ins_p = "i", "i", {"Em", "ím"}, {"Ech", "ích"}, "ěmi"
elseif base.mixedistem == "myš" then
-- myš, veš [reducible, ins pl vešmi], hruď, měď, pleť, spleť, směs, smrt, step, odpověď [ins pl 'odpověď'mi/odpovědmi'], šeď,
-- závěť [ins pl 'závěťmi/závětmi'], plsť [ins pl 'plstmi']
gen_s, nom_p, dat_p, loc_p, ins_p = "i", "i", "ím", "ích", "mi"
elseif base.mixedistem == "noc" then
-- lež [reducible], noc, mosaz, rez [reducible], ves [reducible], mysl, sůl, běl, žluť
gen_s, nom_p, dat_p, loc_p, ins_p = "i", "i", "ím", "ích", "ěmi"
elseif base.mixedistem == "žluč" then
-- žluč, moč, modř, čeleď, kapraď, záď, žerď, čtvrť/čtvrt, drť, huť, chuť, nit, pečeť, závrať, pouť, stať, ocel
gen_s, nom_p, dat_p, loc_p, ins_p = {"i", "ě"}, {"i", "ě"}, "ím", "ích", "ěmi"
elseif base.mixedistem == "loď" then
-- loď, suť
gen_s, nom_p, dat_p, loc_p, ins_p = {"i", "ě"}, {"i", "ě"}, "ím", "ích", {"ěmi", "mi"}
else
error(("Unrecognized value '%s' for 'mixedistem', should be one of 'pěst', 'moc', 'myš', 'noc', 'žluč' or 'loď'"):
format(base.mixedistem))
end
add_decl(base, stems, gen_s, "i", "-", "i", "i", "í",
nom_p, "í", dat_p, nom_p, loc_p, ins_p)
end
declprops["mixed-istem-f"] = {
-- Include subtype in the table description but not in the category to avoid too many categories.
desc = function(base, stems)
return ("mixed i-stem [type '%s'] GENDER"):format(base.mixedistem)
end,
cat = function(base, stems)
return {"mixed i-stem", ("mixed i-stem GENPOS (type '%s')"):format(base.mixedistem)}
end,
}
decls["i-f"] = function(base, stems)
-- [[máti]] "mother" (singular-only), [[pramáti]] "foremother"; very similar to the 'noc' mixed i-stem type
add_decl(base, stems, "i", "i", "-", "i", "i", "í",
"i", "í", "ím", "i", "ích", "ěmi")
end
declprops["i-f"] = {
cat = "GENPOS in -i"
}
decls["ea-f"] = function(base, stems)
-- Stem ends in -e.
if base.tech then
-- diarea, gonorea, chorea, nauzea, paleogea, seborea, trachea
add_decl(base, stems, "y", "i", "u", "o", "i", "ou",
"y", "í", {"ám", "ím"}, "y", {"ách", "ích"}, "ami")
elseif base.persname then
-- Medea, Andrea, etc.
add_decl(base, stems, {"y", "je", "ji"}, {"e", "je", "ji"}, "u", "o", {"e", "je", "ji"}, "ou",
-- this is a guess, based on the same as below; plural of personal names not attested in IJP
{"y", "je"}, "jí", {"ám", "jím"}, {"y", "je"}, {"ách", "jích"}, {"ami", "jemi"})
else
-- idea, odysea ("wandering pilgrimage"), orchidea, palea, spirea
-- proper names Galilea, Judea, Caesarea, Korea, Odyssea ("epic poem")
add_decl(base, stems, {"y", "je"}, "ji", "u", "o", "ji", {"ou", "jí"},
{"y", "je"}, "jí", {"ám", "jím"}, {"y", "je"}, {"ách", "jích"}, {"ami", "jemi"})
end
end
declprops["ea-f"] = {
cat = function(base, stems)
if base.tech then
return {"GENPOS in -ea", "technical GENPOS in -ea"}
else
return "GENPOS in -ea"
end
end
}
decls["oa-f"] = function(base, stems)
-- Stem ends in -o/-u.
-- stoa, kongrua; proper names Samoa, Managua, Nikaragua, Capua
add_decl(base, stems, "y", "i", "u", "o", "i", "ou",
"y", "í", "ám", "y", "ách", "ami")
end
declprops["oa-f"] = {
cat = "GENPOS in -oa/-ua"
}
decls["ia-f"] = function(base, stems)
-- Stem ends in -i.
-- belaria, signoria, uncia; paranoia, sinfonia;
-- proper names Alexandria, Alexia, Livia, Monrovia, Olympia, Sofia
-- Identical to soft declension except for nom sg.
decls["soft-f"](base, stems)
end
declprops["ia-f"] = {
cat = "GENPOS in -ia"
}
decls["hard-n"] = function(base, stems)
local velar = base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$")
-- NOTE: Per IJP it appears the meaning of the preceding preposition makes a difference: 'o' = "about" takes
-- '-u' or '-ě', while 'na/v' = "in, on" normally takes '-ě'.
local loc_s =
-- Exceptions: [[mléko]] "milk" ('mléku' or 'mléce'), [[břicho]] "belly" ('břiše' or (less often) 'břichu'),
-- [[roucho]] ('na rouchu' or 'v rouše'; why the difference in preposition?).
velar and "u" or
-- IJP says nouns in -dlo take only -e but the declension tables show otherwise. It appears -u is possible
-- but significantly less common. Other nouns in -lo usually take just -e ([[čelo]] "forehead",
-- [[kolo]] "wheel", [[křeslo]] "armchair", [[máslo]] "butter", [[peklo]] "hell", [[sklo]] "glass",
-- [[světlo]] "light", [[tělo]] "body"; but [[číslo]] "number' with -e/-u; [[zlo]] "evil" and [[kouzlo]] "spell"
-- with -u/-e).
rfind(base.lemma, "dlo$") and {"ě", "u"} or
rfind(base.lemma, "lo$") and "ě" or
(rfind(base.lemma, "[sc]tvo$") or rfind(base.lemma, "ivo$")) and "u" or
-- Per IJP: Borrowed words and abstracts take -u (e.g. [[banjo]]/[[bendžo]]/[[benžo]] "banjo", [[depo]] "depot",
-- [[chladno]] "cold", [[mokro]] "damp, dampness", [[právo]] "law, right", [[šeru]] "twilight?",
-- [[temno]] "dark, darkness", [[tempo]] "rate, tempo", [[ticho]] "quiet, silence", [[vedro]] "heat") and others
-- often take -ě/-u. Formerly we defaulted to -ě/-u but it seems better to default to just -u, similarly to hard
-- masculines.
-- {"ě", "u"}
"u"
local loc_p =
-- Note, lemmas in -isko also have mixed-reducible as default, handled in determine_default_reducible().
-- Note also, ending -ích triggers the second palatalization.
rfind(base.lemma, "isko$") and {"ích", "ách"} or
-- Diminutives in -ko, -čko, -tko; also [[lýtko]], [[děcko]], [[vrátka]], [[dvířka]], [[jho]], [[roucho]],
-- [[tango]], [[mango]], [[sucho]], [[blaho]], [[víko]], [[echo]], [[embargo]], [[largo]], [[jericho]] (from
-- IJP). Also foreign nouns in -kum: [[antibiotikum]], [[narkotikum]], [[afrodiziakum]], [[analgetikum]], etc.
-- [[jablko]] "apple" has '-ách' or '-ích' and needs an override; likewise for [[vojsko]] "troop"; [[riziko]]
-- "risk" normally has '-ích' and needs and override.
velar and "ách" or
"ech"
add_decl(base, stems, "a", "u", "-", "-", loc_s, "em",
"a", "", "ům", "a", loc_p, "y")
-- FIXME: paired body parts e.g. [[rameno]] "shoulder" (gen_p/loc_p 'ramenou/ramen'), [[koleno]] "knee"
-- (gen_p/loc_p 'kolenou/kolen'), [[prsa]] "chest, breasts" (plurale tantum; gen_p/loc_p 'prsou').
-- FIXME: Nouns with both neuter and feminine forms in the plural, e.g. [[lýtko]] "calf (of the leg)",
-- [[bedro]] "hip", [[vrátka]] "gate".
end
declprops["hard-n"] = {
desc = function(base, stems)
if base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$") then
return "velar GENDER"
else
return "hard GENDER"
end
end,
cat = function(base, stems)
if base.velar or not base["-velar"] and rfind(stems.vowel_stem, com.velar_c .. "$") then
return "velar-stem"
else
return "hard"
end
end
}
decls["semisoft-n"] = function(base, stems)
-- Examples:
-- * In -ao: [[kakao]] "cacao", [[makao]] "Macao (gambling card game, see Wikipedia)", [[curaçao]] "curaçao (liqueur)"
-- (IJP gives gen pl 'curaç' but ASSC [https://slovnikcestiny.cz/heslo/cura%C3%A7ao/0/9967] says 'curaçí' as expected),
-- [[farao]] "faro (card game)"; also [[Makao]], [[Pathet Lao]], but these are sg-only
-- * In -eo: [[stereo]], [[rodeo]], [[video]], [[solideo]]; also [[Borneo]], [[Montevideo]], but these are sg-only
-- * In -io: [[rádio]] "radio", [[gramorádio]], [[studio]], [[scenário]], [[trio]], [[ážio]] (also spelled [[agio]]),
-- [[disážio]], [[folio]], [[vibrio]]; also [[arpeggio]], [[adagio]], [[capriccio]], [[solfeggio]] although
-- pronounced the Italian way without /i/; also [[Ohio]], [[Ontario]], [[Tokio]], but these are sg-only
-- * In -uo: only [[duo]]
-- * In -yo: only [[embryo]]
-- * In -eum: [[muzeum]], [[lyceum]], [[linoleum]], [[ileum]], etc.
-- * In -ium: [[atrium]] "atrium", most chemical elements, etc.
-- * In -uum: [[individuum]], [[kontinuum]], [[premenstruum]], [[residuum]], [[vakuum]]/[[vacuum]]
-- * In -yum: only [[baryum]] "barium" (none others in SSJC)
-- * In -ion: [[enkómion]] "encomium", [[eufonion]] (variant of [[eufonium]]), [[amnion]], [[ganglion]], [[gymnasion]],
-- [[scholion]], [[kritérion]] (rare for [[kritérium]]), [[onomatopoion]] (variant of [[onomatopoie]]),
-- [[symposion]], [[synedrion]]; also [[Byzantion]], but this is sg-only; most words in -ion are masculine
-- Hard in the singular, mostly soft in the plural. Those in -eo and -uo have alternative hard endings in the
-- dat/loc/ins pl, but not those in -eum or -uum. Those in -ao have only hard endings except in the gen pl. (There are
-- apparently no neuters in -eon; those in -eon or -yon e.g. [[akordeon]], [[neon]], [[nukleon]], [[karyon]], [[Lyon]]
-- are masculine.)
local dat_p, loc_p, ins_p
if rfind(base.actual_lemma, "ao$") then
dat_p, loc_p, ins_p = "ům", "ech", "y"
elseif rfind(base.actual_lemma, "[eu]o$") then
dat_p, loc_p, ins_p = {"ím", "ům"}, {"ích", "ech"}, {"i", "y"}
else
dat_p, loc_p, ins_p = "ím", "ích", "i"
end
add_decl(base, stems, "a", "u", "-", "-", "u", "em",
"a", "í", dat_p, "a", loc_p, ins_p)
end
declprops["semisoft-n"] = {
cat = "semisoft"
}
decls["soft-n"] = function(base, stems)
-- Examples: [[moře]] "sea", [[slunce]] "sun", [[srdce]] "heart", [[citoslovce]] "interjection",
-- [[dopoledne]] "late morning", [[odpoledne]] "afternoon", [[hoře]] "sorrow, grief" (archaic or literary),
-- [[inhalace]] "inhalation", [[kafe]] "coffee", [[kanape]] "sofa", [[kutě]] "bed", [[Labe]] "Elbe (singular only)",
-- [[líce]] "cheek", [[lože]] "bed", [[nebe]] "sky; heaven", [[ovoce]] "fruit", [[pole]] "field", [[poledne]]
-- "noon", [[příslovce]] "adverb", [[pukrle]] "curtsey" (also t-n), [[vejce]] "egg" (NOTE: gen pl 'vajec').
--
-- Many nouns in -iště, with null genitive plural.
local gen_p = rfind(base.vowel_stem, "išť$") and "" or "í"
add_decl(base, stems, "e", "i", "-", "-", "i", "em",
"e", gen_p, "ím", "e", "ích", "i")
-- NOTE: Some neuter words in -e indeclinable, e.g. [[Belize]], [[Chile]], [[garde]] "chaperone", [[karaoke]],
-- [[karate]], [[re]] "double raise (card games)", [[ukulele]], [[Zimbabwe]], [[zombie]] (pl. 'zombie' or
-- 'zombies')
-- some nearly indeclinable, e.g. [[finále]], [[chucpe]]; see mostly-indecl below
end
declprops["soft-n"] = {
cat = "soft"
}
decls["í-n"] = function(base, stems)
-- [[nábřeží]] "waterfront" and a zillion others; also [[úterý]] "Tuesday".
-- NOTE: The stem ends in -í/-ý.
add_decl(base, stems, "", "", "-", "-", "", "m",
"", "", "m", "", "ch", "mi")
end
declprops["í-n"] = {
cat = "GENPOS in -í/-ý"
}
decls["n-n"] = function(base, stems)
-- E.g. [[břemeno]] "burden" (also [[břímě]], use 'decllemma:'); [[písmeno]] "letter"; [[plemeno]] "breed";
-- [[rameno]] "shoulder" (also [[rámě]], use 'decllemma:'); [[semeno]] "seed" (also [[sémě]], [[símě]], use
-- 'decllemma:'); [[temeno]] "crown (of the head)"; [[vemeno]] "udder"
add_decl(base, stems, {"a", "e"}, {"i", "u"}, "-", "-", {"ě", "i", "u"}, "em",
"a", "", "ům", "a", "ech", "y")
end
declprops["n-n"] = {
cat = "n-stem"
}
decls["tstem-n"] = function(base, stems)
-- E.g. [[batole]] "toddler", [[čuně]] "pig", [[daňče]] "fallow deer fawn", [[děvče]] "girl", [[ďouče]] "girl"
-- (dialectal), [[dítě]] "child" (NOTE: feminine in the plural [[děti]], declined as a feminine i-stem), [[dvojče]]
-- "twin", [[hádě]] "young snake", [[house]] "gosling", [[hříbě]] "foal" (pl. hříbata), [[jehně]] "lamb", [[kavče]]
-- "young jackdaw; chough", [[káče]] "duckling", [[káně]] "buzzard chick" (NOTE: also feminine meaning "buzzard"),
-- [[klíště]] "tick", [[kose]] "blackbird chick" (rare), [[kuře]] "chick (young chicken)", [[kůzle]]
-- "kid (young goat)", [[lišče]] "fox cub", [[lvíče]] "lion cub", [[medvídě]] "bear cub", [[mládě]] "baby animal",
-- [[morče]] "guinea pig", [[mrně]] "toddler", [[nemluvně]] "infant", [[novorozeně]] "newborn", [[orle]] "eaglet",
-- [[osle]] "donkey foal", [[pachole]] "boy (obsolete); page, squire", [[páže]] "page, squire", [[podsvinče]]
-- "suckling pig", [[prase]] "pig", [[prtě]] "toddler", [[ptáče]] "chick (young bird)",
-- [[robě]] "baby, small child", [[saranče]] "locust" (NOTE: also feminine), [[sele]] "piglet",
-- [[slůně]] "baby elephant", [[škvrně]] "toddler", [[štěně]] "puppy", [[tele]] "calf", [[velbloudě]] "camel colt",
-- [[vlče]] "wolf cub", [[vnouče]] "grandchild", [[vyžle]] "small hunting dog; slender person",
-- [[zvíře]] "animal, beast".
--
-- Some referring to inanimates, e.g. [[doupě]] "lair" (pl. doupata), [[koště]]/[[chvoště]] "broom", [[paraple]]
-- "umbrella", [[poupě]] "bud", [[pukrle]] "curtsey" (also soft-n), [[rajče]] "tomato", [[šuple]] "drawer",
-- [[varle]] "testicle", [[vole]] "craw (of a bird); goiter".
add_decl(base, stems, "ete", "eti", "-", "-", "eti", "etem",
"ata", "at", "atům", "ata", "atech", "aty")
end
declprops["tstem-n"] = {
cat = "t-stem"
}
decls["ma-n"] = function(base, stems)
-- E.g. [[drama]] "drama", [[dogma]] "dogma", [[aneurysma]]/[[aneuryzma]] "aneurysm", [[dilema]] "dilemma",
-- [[gumma]] "gumma" (non-cancerous syphilitic growth), [[klima]] "climate", [[kóma]] "coma", [[lemma]] "lemma",
-- [[melisma]] "melisma", [[paradigma]] "paradigm", [[plasma]]/[[plazma]] "plasma [partly ionized gas]"
-- (note [[plasma]]/[[plazma]] "blood plasma" is feminine), [[revma]] "rheumatism", [[schéma]] "schema, diagram",
-- [[schisma]]/[[schizma]] "schism", [[smegma]] "smegma", [[sofisma]]/[[sofizma]] "sophism", [[sperma]] "sperm",
-- [[stigma]] "stigma", [[téma]] "theme", [[trauma]] "trauma", [[trilema]] "trilemma", [[zeugma]] "zeugma".
add_decl(base, stems, "atu", "atu", "-", "-", "atu", "atem",
"ata", "at", "atům", "ata", "atech", "aty")
end
declprops["ma-n"] = {
cat = "ma-stem"
}
decls["adj"] = function(base, stems)
local props = {}
local propspec = table.concat(props, ".")
if propspec ~= "" then
propspec = "<" .. propspec .. ">"
end
local adj_alternant_multiword_spec = require("Module:cs-adjective").do_generate_forms({base.lemma .. propspec})
local function copy(from_slot, to_slot)
base.forms[to_slot] = adj_alternant_multiword_spec.forms[from_slot]
end
if base.number ~= "pl" then
if base.gender == "m" then
copy("nom_m", "nom_s")
copy("gen_mn", "gen_s")
copy("dat_mn", "dat_s")
copy("loc_mn", "loc_s")
copy("ins_mn", "ins_s")
elseif base.gender == "f" then
copy("nom_f", "nom_s")
copy("gen_f", "gen_s")
copy("dat_f", "dat_s")
copy("acc_f", "acc_s")
copy("loc_f", "loc_s")
copy("ins_f", "ins_s")
else
copy("nom_n", "nom_s")
copy("gen_mn", "gen_s")
copy("dat_mn", "dat_s")
copy("acc_n", "acc_s")
copy("loc_mn", "loc_s")
copy("ins_mn", "ins_s")
end
if not base.forms.voc_s then
iut.insert_forms(base.forms, "voc_s", base.forms.nom_s)
end
end
if base.number ~= "sg" then
if base.gender == "m" then
if base.animacy == "an" then
copy("nom_mp_an", "nom_p")
else
copy("nom_fp", "nom_p")
end
copy("acc_mfp", "acc_p")
elseif base.gender == "f" then
copy("nom_fp", "nom_p")
copy("acc_mfp", "acc_p")
else
copy("nom_np", "nom_p")
copy("acc_np", "acc_p")
end
copy("gen_p", "gen_p")
copy("dat_p", "dat_p")
copy("ins_p", "ins_p")
copy("loc_p", "loc_p")
end
end
local function get_stemtype(base)
if rfind(base.lemma, "ý$") then
return "hard"
elseif rfind(base.lemma, "í$") then
return "soft"
else
return "possessive"
end
end
declprops["adj"] = {
cat = function(base, stems)
return {"adjectival POS", get_stemtype(base) .. " GENDER adjectival POS"}
end,
}
decls["mostly-indecl"] = function(base, stems)
-- Several neuters: E.g. [[finále]] "final (sports)", [[čtvrtfinále]] "quarterfinal", [[chucpe]] "chutzpah",
-- [[penále]] "fine, penalty", [[promile]] "" (NOTE: loc pl also promilech), [[rande]] "rendezvous", [[semifinále]]
-- "semifinal", [[skóre]] "score".
-- At least one masculine animate: [[kamikaze]]/[[kamikadze]], where IJP says only -m in the ins sg.
local ins_s = base.gender == "m" and "m" or {"-", "m"}
add_decl(base, stems, "-", "-", "-", "-", "-", ins_s,
"-", "-", "-", "-", "-", "-")
end
declprops["mostly-indecl"] = {
cat = "mostly indeclinable"
}
decls["indecl"] = function(base, stems)
-- Indeclinable. Note that fully indeclinable nouns should not have a table at all rather than one all of whose forms
-- are the same; but having an indeclinable declension is useful for nouns that may or may not be indeclinable, e.g.
-- [[desatero]] "group of ten" or the plural of [[peso]], which may be indeclinable 'pesos'.
add_decl(base, stems, "-", "-", "-", "-", "-", "-",
"-", "-", "-", "-", "-", "-")
end
declprops["indecl"] = {
cat = function(base, stems)
if base.adj then
return {"adjectival POS", "indeclinable adjectival POS", "indeclinable GENDER adjectival POS"}
else
return {"indeclinable POS", "indeclinable GENPOS"}
end
end
}
decls["manual"] = function(base, stems)
-- Anything declined manually using overrides. We don't set any declensions except the nom_s (or nom_p if plurale
-- tantum).
add(base, base.number == "pl" and "nom_p" or "nom_s", stems, "-")
end
declprops["manual"] = {
desc = "GENDER",
cat = {},
}
local function set_pron_defaults(base)
if base.gender or base.lemma ~= "ona" and base.number or base.animacy then
error("Can't specify gender, number or animacy for pronouns")
end
local function pron_props()
-- Return values are GENDER, NUMBER, ANIMACY, HAS_CLITIC.
if base.lemma == "kdo" then
return "none", "sg", "an", false
elseif base.lemma == "co" then
return "none", "sg", "inan", false
elseif base.lemma == "já" or base.lemma == "ty" then
return "none", "sg", "an", true
elseif base.lemma == "my" or base.lemma == "vy" then
return "none", "pl", "an", false
elseif base.lemma == "on" then
return "m", "sg", "none", true
elseif base.lemma == "ono" then
return "n", "sg", "inan", true
elseif base.lemma == "oni" then
return "m", "pl", "an", false
elseif base.lemma == "ony" then
return "none", "pl", "none", false
elseif base.lemma == "ona" then
if base.number ~= "sg" and base.number ~= "pl" then
error("Must specify '.sg' or '.pl' with lemma 'ona'")
end
if base.number == "sg" then
return "f", "sg", "none", false
else
return "n", "pl", "inan", false
end
elseif base.lemma == "sebe" then
return "none", "none", "none", true
else
error(("Unrecognized pronoun '%s'"):format(base.lemma))
end
end
local gender, number, animacy, has_clitic = pron_props()
base.gender = gender
base.actual_gender = gender
base.number = number
base.actual_number = number
base.animacy = animacy
base.actual_animacy = animacy
base.has_clitic = has_clitic
end
local function determine_pronoun_stems(base)
if base.stem_sets then
error("Reducible and vowel alternation specs cannot be given with pronouns")
end
base.stem_sets = {{reducible = false, vowel_stem = "", nonvowel_stem = ""}}
base.decl = "pron"
end
decls["pron"] = function(base, stems)
local after_prep_footnote = "[after a preposition]"
local dual_footnote = "[when referring to dual nouns, e.g. [[oči]], [[ruce]]]"
local animate_footnote = "[animate]"
if base.lemma == "kdo" then
add_decl(base, stems, "koho", "komu", nil, nil, "kom", "kým")
elseif base.lemma == "co" then
add_decl(base, stems, "čeho", "čemu", nil, nil, "čem", "čím")
elseif base.lemma == "já" then
add_sg_decl_with_clitic(base, stems, "mne", "mě", "mně", "mi", nil, nil, nil, "mně", "mnou")
elseif base.lemma == "ty" then
add_sg_decl_with_clitic(base, stems, "tebe", "tě", "tobě", "ti", nil, nil, nil, "tobě", "tebou")
elseif base.lemma == "my" then
add_pl_only_decl(base, stems, "nás", "nám", "nás", "nás", "námi")
add_pl_only_decl(base, stems, nil, nil, nil, nil, "náma", dual_footnote)
elseif base.lemma == "vy" then
add_pl_only_decl(base, stems, "vás", "vám", "vás", "vás", "vámi")
add_pl_only_decl(base, stems, nil, nil, nil, nil, "váma", dual_footnote)
elseif base.lemma == "on" or base.lemma == "ono" then
local acc_s = base.lemma == "on" and "jej" or {"jej", "je"}
local clitic_acc_s = base.lemma == "on" and {"jej", "ho"} or {"jej", "ho", "je"}
local prep_acc_s = base.lemma == "on" and "něj" or {"něj", "ně"}
local prep_clitic_acc_s = base.lemma == "on" and "-ň" or nil
add_sg_decl_with_clitic(base, stems, {"jeho", "jej"}, {"ho", "jej"}, "jemu", "mu", acc_s, clitic_acc_s, nil, nil, "jím")
add_sg_decl_with_clitic(base, stems, {"něho", "něj"}, nil, "němu", nil, prep_acc_s, prep_clitic_acc_s, nil, "něm", "ním",
after_prep_footnote)
if base.lemma == "on" then
add_sg_decl_with_clitic(base, stems, nil, nil, nil, nil, "jeho", nil, nil, nil, nil,
animate_footnote)
add_sg_decl_with_clitic(base, stems, nil, nil, nil, nil, "něho", nil, nil, nil, nil,
after_prep_footnote and animate_footnote)
end
elseif base.lemma == "ona" and base.number == "sg" then
add_sg_decl(base, stems, "jí", "jí", "ji", nil, nil, "jí")
add_sg_decl(base, stems, "ní", "ní", "ni", nil, "ní", "ní", after_prep_footnote)
elseif base.lemma == "oni" or base.lemma == "ony" or base.lemma == "ona" then
add_pl_only_decl(base, stems, "jich", "jim", "je", nil, "jimi")
add_pl_only_decl(base, stems, "nich", "nim", "ně", "nich", "nimi", after_prep_footnote)
add_pl_only_decl(base, stems, nil, nil, nil, nil, "jima", dual_footnote)
add_pl_only_decl(base, stems, nil, nil, nil, nil, "nima", dual_footnote)
elseif base.lemma == "sebe" then
-- Underlyingly we handle [[sebe]]'s slots as singular.
add_sg_decl_with_clitic(base, stems, "sebe", "sebe", "sobě", "si", "sebe", "se", nil, "sobě", "sebou",
nil, "no nom_s")
else
error(("Internal error: Unrecognized pronoun lemma '%s'"):format(base.lemma))
end
end
declprops["pron"] = {
desc = "GENDER pronoun",
cat = {},
}
local function set_num_defaults(base)
if base.gender or base.number or base.animacy then
error("Can't specify gender, number or animacy for numeral")
end
local function num_props()
-- Return values are GENDER, NUMBER, ANIMACY, HAS_CLITIC.
return "none", "pl", "none", false
end
local gender, number, animacy, has_clitic = num_props()
base.gender = gender
base.actual_gender = gender
base.number = number
base.actual_number = number
base.animacy = animacy
base.actual_animacy = animacy
base.has_clitic = has_clitic
end
local function determine_numeral_stems(base)
if base.stem_sets then
error("Reducible and vowel alternation specs cannot be given with numerals")
end
local stem = rmatch(base.lemma, "^(.*)" .. com.vowel_c .. "$") or base.lemma
base.stem_sets = {{reducible = false, vowel_stem = stem, nonvowel_stem = stem}}
base.decl = "num"
end
decls["num"] = function(base, stems)
local after_prep_footnote = "[after a preposition]"
if base.lemma == "devět" then
add_pl_only_decl(base, "", "devíti", "devíti", "-", "devíti", "devíti", stems.footnotes)
elseif base.lemma == "sta" or base.lemma == "stě" or base.lemma == "set" then
add_pl_only_decl(base, "", "set", "stům", "-", "stech", "sty", stems.footnotes)
elseif rfind(base.lemma, "[cs]et$") then
-- [[deset]] and all numbers ending in -cet ([[dvacet]], [[třicet]], [[čtyřicet]] and inverted compound
-- numerals such as [[pětadvacet]] "25" and [[dvaatřicet]] "32")
local begin = rmatch(base.lemma, "^(.*)et$")
add_pl_only_decl(base, stems, "i", "i", "-", "i", "i")
add_pl_only_decl(base, begin, "íti", "íti", "-", "íti", "íti", stems.footnotes)
else
add_pl_only_decl(base, stems, "i", "i", "-", "i", "i")
end
end
declprops["num"] = {
desc = "GENDER numeral",
cat = {},
}
local function set_det_defaults(base)
if base.gender or base.number or base.animacy then
error("Can't specify gender, number or animacy for determiner")
end
local function det_props()
-- Return values are GENDER, NUMBER, ANIMACY, HAS_CLITIC.
return "none", "none", "none", false
end
local gender, number, animacy, has_clitic = det_props()
base.gender = gender
base.actual_gender = gender
base.number = number
base.actual_number = number
base.animacy = animacy
base.actual_animacy = animacy
base.has_clitic = has_clitic
end
local function determine_determiner_stems(base)
if base.stem_sets then
error("Reducible and vowel alternation specs cannot be given with determiners")
end
local stem = rmatch(base.lemma, "^(.*)" .. com.vowel_c .. "$") or base.lemma
base.stem_sets = {{reducible = false, vowel_stem = stem, nonvowel_stem = stem}}
base.decl = "det"
end
decls["det"] = function(base, stems)
add_sg_decl(base, stems, "a", "a", "-", nil, "a", "a")
end
declprops["det"] = {
desc = "GENDER determiner",
cat = {},
}
local function fetch_footnotes(separated_group)
local footnotes
for j = 2, #separated_group - 1, 2 do
if separated_group[j + 1] ~= "" then
error("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'")
end
if not footnotes then
footnotes = {}
end
table.insert(footnotes, separated_group[j])
end
return footnotes
end
--[=[
Parse a single override spec (e.g. 'nomplé:ové' or 'ins:autodráhou:autodrahou[rare]') and return
two values: the slot(s) the override applies to, and an object describing the override spec.
The input is actually a list where the footnotes have been separated out; for example,
given the spec 'inspl:čobotami:čobotámi[rare]:čobitmi[archaic]', the input will be a list
{"inspl:čobotami:čobotámi", "[rare]", ":čobitmi", "[archaic]", ""}. The object returned
for 'ins:autodráhou:autodrahou[rare]' looks like this:
{
full = true,
values = {
{
form = "autodráhou"
},
{
form = "autodrahou",
footnotes = {"[rare]"}
}
}
}
The object returned for 'nomplé:ové' looks like this:
{
values = {
{
form = "é",
},
{
form = "ové",
}
}
}
]=]
local function parse_override(segments)
local retval = {values = {}}
local part = segments[1]
local slots = {}
while true do
local case = usub(part, 1, 3)
if cases[case] then
-- ok
else
error(("Unrecognized case '%s' in override: '%s'"):format(case, table.concat(segments)))
end
part = usub(part, 4)
local slot
if rfind(part, "^pl") then
part = usub(part, 3)
slot = case .. "_p"
elseif rfind(part, "^cl") then
-- No plural clitic cases at this point.
part = usub(part, 3)
if clitic_cases[case] then
slot = "clitic_" .. case .. "_s"
else
error(("Unrecognized clitic case '%s' in override: '%s'"):format(case, table.concat(segments)))
end
else
slot = case .. "_s"
end
table.insert(slots, slot)
if rfind(part, "^%+") then
part = usub(part, 2)
else
break
end
end
if rfind(part, "^:") then
retval.full = true
part = usub(part, 2)
end
segments[1] = part
local colon_separated_groups = put.split_alternating_runs_and_strip_spaces(segments, ":")
for i, colon_separated_group in ipairs(colon_separated_groups) do
local value = {}
local form = colon_separated_group[1]
if form == "" then
error(("Use - to indicate an empty ending for slot%s '%s': '%s'"):format(#slots > 1 and "s" or "", table.concat(slots), table.concat(segments)))
elseif form == "-" then
value.form = ""
else
value.form = form
end
value.footnotes = fetch_footnotes(colon_separated_group)
table.insert(retval.values, value)
end
return slots, retval
end
--[=[
Parse an indicator spec (text consisting of angle brackets and zero or more
dot-separated indicators within them). Return value is an object of the form
{
overrides = {
SLOT = {OVERRIDE, OVERRIDE, ...}, -- as returned by parse_override()
...
},
forms = {}, -- forms for a single spec alternant; see `forms` below
footnotes = {"FOOTNOTE", "FOOTNOTE", ...}, -- may be missing
stems = { -- may be missing
{
reducible = TRUE_OR_FALSE,
footnotes = {"FOOTNOTE", "FOOTNOTE", ...}, -- may be missing
-- The following fields are filled in by determine_stems()
vowel_stem = "STEM",
nonvowel_stem = "STEM",
oblique_slots = one of {nil, "gen_p", "all", "all-oblique"},
oblique_vowel_stem = "STEM" or nil (only needs to be set if oblique_slots is non-nil),
oblique_nonvowel_stem = "STEM" or nil (only needs to be set if oblique_slots is non-nil),
},
...
},
gender = "GENDER", -- "m", "f", "n"
number = "NUMBER", -- "sg", "pl"; may be missing
animacy = "ANIMACY", -- "inan", "an"; may be missing
hard = true, -- may be missing
soft = true, -- may be missing
mixed = true, -- may be missing
surname = true, -- may be missing
istem = true, -- may be missing
["-istem"] = true, -- may be missing
tstem = true, -- may be missing
nstem = true, -- may be missing
tech = true, -- may be missing
foreign = true, -- may be missing
mostlyindecl = true, -- may be missing
indecl = true, -- may be missing
manual = true, -- may be missing
adj = true, -- may be missing
decllemma = "DECLENSION-LEMMA", -- may be missing
declgender = "DECLENSION-GENDER", -- may be missing
declnumber = "DECLENSION-NUMBER", -- may be missing
-- The following additional fields are added by other functions:
orig_lemma = "ORIGINAL-LEMMA", -- as given by the user
orig_lemma_no_links = "ORIGINAL-LEMMA-NO-LINKS", -- links removed
lemma = "LEMMA", -- `orig_lemma_no_links`, converted to singular form if plural and lowercase if all-uppercase
forms = {
SLOT = {
{
form = "FORM",
footnotes = {"FOOTNOTE", "FOOTNOTE", ...} -- may be missing
},
...
},
...
},
decl = "DECL", -- declension, e.g. "hard-m"
vowel_stem = "VOWEL-STEM", -- derived from vowel-ending lemmas
nonvowel_stem = "NONVOWEL-STEM", -- derived from non-vowel-ending lemmas
}
]=]
local function parse_indicator_spec(angle_bracket_spec)
local inside = rmatch(angle_bracket_spec, "^<(.*)>$")
assert(inside)
local base = {overrides = {}, forms = {}}
if inside ~= "" then
local segments = put.parse_balanced_segment_run(inside, "[", "]")
local dot_separated_groups = put.split_alternating_runs_and_strip_spaces(segments, "%.")
for i, dot_separated_group in ipairs(dot_separated_groups) do
local part = dot_separated_group[1]
local case_prefix = usub(part, 1, 3)
if cases[case_prefix] then
local slots, override = parse_override(dot_separated_group)
for _, slot in ipairs(slots) do
if base.overrides[slot] then
error(("Two overrides specified for slot '%s'"):format(slot))
else
base.overrides[slot] = {override}
end
end
elseif part == "" then
if #dot_separated_group == 1 then
error("Blank indicator: '" .. inside .. "'")
end
base.footnotes = fetch_footnotes(dot_separated_group)
elseif rfind(part, "^[-*#ě]*$") or rfind(part, "^[-*#ě]*,") then
if base.stem_sets then
error("Can't specify reducible/vowel-alternant indicator twice: '" .. inside .. "'")
end
local comma_separated_groups = put.split_alternating_runs_and_strip_spaces(dot_separated_group, ",")
local stem_sets = {}
for i, comma_separated_group in ipairs(comma_separated_groups) do
local pattern = comma_separated_group[1]
local orig_pattern = pattern
local reducible, vowelalt, oblique_slots
if pattern == "-" then
-- default reducible, no vowel alt
else
local before, after
before, reducible, after = rmatch(pattern, "^(.-)(%-?%*)(.-)$")
if before then
pattern = before .. after
reducible = reducible == "*"
end
if pattern ~= "" then
if not rfind(pattern, "^##?ě?$") then
error("Unrecognized vowel-alternation pattern '" .. pattern .. "', should be one of #, ##, #ě or ##ě: '" .. inside .. "'")
end
if pattern == "#ě" or pattern == "##ě" then
vowelalt = "quant-ě"
else
vowelalt = "quant"
end
-- `oblique_slots` will be later changed to "all" if the lemma ends in a consonant.
if pattern == "##" or pattern == "##ě" then
oblique_slots = "all-oblique"
else
oblique_slots = "gen_p"
end
end
end
table.insert(stem_sets, {
reducible = reducible,
vowelalt = vowelalt,
oblique_slots = oblique_slots,
footnotes = fetch_footnotes(comma_separated_group)
})
end
base.stem_sets = stem_sets
elseif #dot_separated_group > 1 then
error("Footnotes only allowed with slot overrides, reducible or vowel alternation specs or by themselves: '" .. table.concat(dot_separated_group) .. "'")
elseif part == "m" or part == "f" or part == "n" then
if base.gender then
error("Can't specify gender twice: '" .. inside .. "'")
end
base.gender = part
elseif part == "sg" or part == "pl" then
if base.number then
error("Can't specify number twice: '" .. inside .. "'")
end
base.number = part
elseif part == "an" or part == "inan" then
if base.animacy then
error("Can't specify animacy twice: '" .. inside .. "'")
end
base.animacy = part
elseif part == "hard" or part == "soft" or part == "mixed" or part == "surname" or part == "istem" or
part == "-istem" or part == "tstem" or part == "nstem" or part == "tech" or part == "foreign" or
part == "mostlyindecl" or part == "indecl" or part == "pron" or part == "det" or part == "num" or
-- Use 'velar' with words like [[petanque]] and [[Braque]] that end with a pronounced velar (and hence are declined
-- like velars) but not with a spelled velar; use '-velar' with words like [[hadíth]] that end with a spelled but
-- silent velar.
part == "collapse_ee" or part == "persname" or part == "c_as_k" or part == "velar" or part == "-velar" then
if base[part] then
error("Can't specify '" .. part .. "' twice: '" .. inside .. "'")
end
base[part] = true
-- Allow 'hard' to signal that -y is allowed after -c, as in hard masculine nouns such as [[hec]]
-- "joke", and also feminines in -ca where the c is pronounced as /k/, e.g. [[ayahuasca]], [[pororoca]],
-- [[Petrarca]], [[Mallorca]], [[Casablanca]]. (Contrast [[mangalica]], [[Kusturica]], [[Bjelica]],
-- where the c is pronounced as /ts/ and -y is disallowed.)
if part == "hard" then
base.hard_c = true
end
elseif part == "+" then
if base.adj then
error("Can't specify '+' twice: '" .. inside .. "'")
end
base.adj = true
elseif part == "!" then
if base.manual then
error("Can't specify '!' twice: '" .. inside .. "'")
end
base.manual = true
elseif rfind(part, "^mixedistem:") then
if base.mixedistem then
error("Can't specify 'mixedistem:' twice: '" .. inside .. "'")
end
base.mixedistem = rsub(part, "^mixedistem:", "")
elseif rfind(part, "^decllemma:") then
if base.decllemma then
error("Can't specify 'decllemma:' twice: '" .. inside .. "'")
end
base.decllemma = rsub(part, "^decllemma:", "")
elseif rfind(part, "^declgender:") then
if base.declgender then
error("Can't specify 'declgender:' twice: '" .. inside .. "'")
end
base.declgender = rsub(part, "^declgender:", "")
elseif rfind(part, "^declnumber:") then
if base.declnumber then
error("Can't specify 'declnumber:' twice: '" .. inside .. "'")
end
base.declnumber = rsub(part, "^declnumber:", "")
else
error("Unrecognized indicator '" .. part .. "': '" .. inside .. "'")
end
end
end
return base
end
local function is_regular_noun(base)
return not base.adj and not base.pron and not base.det and not base.num
end
local function process_declnumber(base)
base.actual_number = base.number
if base.declnumber then
if base.declnumber == "sg" or base.declnumber == "pl" then
base.number = base.declnumber
else
error(("Unrecognized value '%s' for 'declnumber', should be 'sg' or 'pl'"):format(base.declnumber))
end
end
end
local function set_defaults_and_check_bad_indicators(base)
-- Set default values.
local regular_noun = is_regular_noun(base)
if base.pron then
set_pron_defaults(base)
elseif base.det then
set_det_defaults(base)
elseif base.num then
set_num_defaults(base)
elseif not base.adj then
if not base.gender then
if base.manual then
base.gender = "none"
else
error("For nouns, gender must be specified")
end
end
base.number = base.number or "both"
process_declnumber(base)
base.animacy = base.animacy or "inan"
base.actual_gender = base.gender
base.actual_animacy = base.animacy
if base.declgender then
if base.declgender == "m-an" then
base.gender = "m"
base.animacy = "an"
elseif base.declgender == "m-in" then
base.gender = "m"
base.animacy = "inan"
elseif base.declgender == "f" or base.declgender == "n" then
base.gender = base.declgender
else
error(("Unrecognized value '%s' for 'declgender', should be 'm-an', 'm-in', 'f' or 'n'"):format(base.declgender))
end
end
end
-- Check for bad indicator combinations.
if (base.hard and 1 or 0) + (base.soft and 1 or 0) + (base.mixed and 1 or 0) > 1 then
error("At most one of 'hard', 'soft' and 'mixed' can be specified")
end
if base.istem and base["-istem"] then
error("'istem' and '-istem' cannot be specified together")
end
if (base.istem or base["-istem"]) then
if base.gender ~= "f" then
error("'istem' and '-istem' can only be specified with the feminine gender")
end
if not regular_noun then
error("'istem' and '-istem' can only be specified with regular nouns")
end
end
if base.declgender and not regular_noun then
error("'declgender' can only be specified with regular nouns")
end
end
local function set_all_defaults_and_check_bad_indicators(alternant_multiword_spec)
local is_multiword = #alternant_multiword_spec.alternant_or_word_specs > 1
iut.map_word_specs(alternant_multiword_spec, function(base)
set_defaults_and_check_bad_indicators(base)
base.multiword = is_multiword -- FIXME: not currently used; consider deleting
alternant_multiword_spec.has_clitic = alternant_multiword_spec.has_clitic or base.has_clitic
if base.pron then
alternant_multiword_spec.saw_pron = true
else
alternant_multiword_spec.saw_non_pron = true
end
if base.det then
alternant_multiword_spec.saw_det = true
else
alternant_multiword_spec.saw_non_det = true
end
if base.num then
alternant_multiword_spec.saw_num = true
else
alternant_multiword_spec.saw_non_num = true
end
end)
end
local function undo_second_palatalization(base, word, is_adjective)
local function try(from, to)
local stem = rmatch(word, "^(.*)" .. from .. "$")
if stem then
return stem .. to
end
return nil
end
return is_adjective and try("št", "sk") or
is_adjective and try("čt", "ck") or
try("c", "k") or -- FIXME, this could be wrong and c correct
try("ř", "r") or
try("z", "h") or -- FIXME, this could be wrong and z or g correct
try("š", "ch") or
word
end
-- For a plural-only lemma, synthesize a likely singular lemma. It doesn't have to be
-- theoretically correct as long as it generates all the correct plural forms.
local function synthesize_singular_lemma(base)
if not base.stem_sets then
base.stem_sets = {{}}
end
local lemma_determined
-- Loop over all stem sets in case the user specified multiple ones (e.g. '*,-*'). If we try to reconstruct
-- different lemmas for different stem sets, we'll throw an error below.
for _, stems in ipairs(base.stem_sets) do
local stem, lemma
while true do
if base.indecl then
-- If specified as indeclinable, leave it alone; e.g. 'pesos' indeclinable plural of [[peso]].
lemma = base.lemma
break
elseif base.gender == "m" then
if base.animacy == "an" then
stem = rmatch(base.lemma, "^(.*)i$")
if stem then
if base.soft then
-- [[Blíženci]] "Gemini"
-- Since the nominative singular has no ending.
lemma = com.convert_paired_plain_to_palatal(stem, ending)
else
lemma = undo_second_palatalization(base, stem)
end
else
stem = rmatch(base.lemma, "^(.*)ové$") or rmatch(base.lemma, "^(.*)é$")
if stem then
-- [[manželé]] "married couple", [[Velšané]] "Welsh people"
lemma = stem
else
error(("Animate masculine plural-only lemma '%s' should end in -i, -ové or -é"):format(base.lemma))
end
end
else
stem = rmatch(base.lemma, "^(.*)y$")
if stem then
-- [[droby]] "giblets"; [[tvarůžky]] "Olomouc cheese"; [[alimenty]] "alimony"; etc.
lemma = stem
else
local ending
stem, ending = rmatch(base.lemma, "^(.*)([eě])$")
if stem then
-- [[peníze]] "money", [[tvargle]] "Olomouc cheese" (mixed declension), [[údaje]] "data",
-- [[Lazce]] (a village), [[lováče]] "money", [[Krkonoše]] "Giant Mountains", [[kříže]] "clubs"
lemma = com.convert_paired_plain_to_palatal(stem, ending)
if not base.mixed then
base.soft = true
end
else
error(("Inanimate masculine plural-only lemma '%s' should end in -y, -e or -ě"):format(base.lemma))
end
end
end
if stems.reducible == nil then
if rfind(lemma, com.cons_c .. "[ck]$") and not com.is_monosyllabic(base.lemma) then
stems.reducible = true
end
if stems.reducible then
lemma = dereduce(base, lemma)
end
end
break
elseif base.gender == "f" then
stem = rmatch(base.lemma, "^(.*)y$")
if stem then
lemma = stem .. "a"
break
end
stem = rmatch(base.lemma, "^(.*)[eě]$")
if stem then
-- Singular like the plural. Cons-stem feminines like [[dlaň]] "palm (of the hand)" have identical
-- plurals to soft-stem feminines like [[růže]] (modulo e/ě differences), so we don't need to
-- reconstruct the former type.
lemma = base.lemma
break
end
stem = rmatch(base.lemma, "^(.*)i$")
if stem then
-- i-stems.
lemma = stem
base.istem = true
break
end
error(("Feminine plural-only lemma '%s' should end in -y, -ě, -e or -i"):format(base.lemma))
elseif base.gender == "n" then
-- -ata nouns like [[slůně]] "baby elephant" nom pl 'slůňata' are declined in the plural same as if
-- the singular were 'slůňato' so we don't have to worry about them.
stem = rmatch(base.lemma, "^(.*)a$")
if stem then
lemma = stem .. "o"
break
end
stem = rmatch(base.lemma, "^(.*)[eěí]$")
if stem then
-- singular lemma also in -e, -ě or -í; e.g. [[věčná loviště]] "[[happy hunting ground]]"
lemma = base.lemma
break
end
error(("Neuter plural-only lemma '%s' should end in -a, -í, -ě or -e"):format(base.lemma))
else
error(("Internal error: Unrecognized gender '%s'"):format(base.gender))
end
end
if lemma_determined and lemma_determined ~= lemma then
error(("Attempt to set two different singular lemmas '%s' and '%s'"):format(lemma_determined, lemma))
end
lemma_determined = lemma
end
base.lemma = lemma_determined
end
-- For an adjectival lemma, synthesize the masc singular form.
local function synthesize_adj_lemma(base)
local stem
if base.indecl then
base.decl = "indecl"
stem = base.lemma
else
local gender, number
local function sub_ov(stem)
stem = stem:gsub("ov$", "ův")
return stem
end
while true do
if base.number == "pl" then
if base.gender == "m" then
stem = rmatch(base.lemma, "^(.*)í$")
if stem then
if base.soft then
-- nothing to do
else
if base.animacy ~= "an" then
error(("Masculine plural-only adjectival lemma '%s' ending in -í can only be animate unless '.soft' is specified"):
format(base.lemma))
end
base.lemma = undo_second_palatalization(base, stem, "is adjective") .. "ý"
end
break
end
stem = rmatch(base.lemma, "^(.*)é$")
if stem then
if base.animacy == "an" then
error(("Masculine plural-only adjectival lemma '%s' ending in -é must be inanimate"):
format(base.lemma))
end
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*ov)i$") or rmatch(base.lemma, "^(.*in)i$")
if stem then
if base.animacy ~= "an" then
error(("Masculine plural-only possessive adjectival lemma '%s' ending in -i must be animate"):
format(base.lemma))
end
base.lemma = sub_ov(stem)
break
end
stem = rmatch(base.lemma, "^(.*ov)y$") or rmatch(base.lemma, "^(.*in)y$")
if stem then
if base.animacy == "an" then
error(("Masculine plural-only possessive adjectival lemma '%s' ending in -y must be inanimate"):
format(base.lemma))
end
base.lemma = sub_ov(stem)
break
end
if base.animacy == "an" then
error(("Animate masculine plural-only adjectival lemma '%s' should end in -í, -ovi or -ini"):
format(base.lemma))
elseif base.soft then
error(("Soft masculine plural-only adjectival lemma '%s' should end in -í"):format(base.lemma))
else
error(("Inanimate masculine plural-only adjectival lemma '%s' should end in -é, -ovy or -iny"):
format(base.lemma))
end
elseif base.gender == "f" then
stem = rmatch(base.lemma, "^(.*)é$") -- hard adjective
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)í$") -- soft adjective
if stem then
break
end
stem = rmatch(base.lemma, "^(.*ov)y$") or rmatch(base.lemma, "^(.*in)y$") -- possessive adjective
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Feminine plural-only adjectival lemma '%s' should end in -é, -í, -ovy or -iny"):format(base.lemma))
else
stem = rmatch(base.lemma, "^(.*)á$") -- hard adjective
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)í$") -- soft adjective
if stem then
break
end
stem = rmatch(base.lemma, "^(.*ov)a$") or rmatch(base.lemma, "^(.*in)a$") -- possessive adjective
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Neuter plural-only adjectival lemma '%s' should end in -á, -í, -ova or -ina"):format(base.lemma))
end
else
if base.gender == "m" then
stem = rmatch(base.lemma, "^(.*)[ýí]$") or rmatch(base.lemma, "^(.*)ův$") or rmatch(base.lemma, "^(.*)in$")
if stem then
break
end
error(("Masculine adjectival lemma '%s' should end in -ý, -í, -ův or -in"):format(base.lemma))
elseif base.gender == "f" then
stem = rmatch(base.lemma, "^(.*)á$")
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)í$")
if stem then
break
end
stem = rmatch(base.lemma, "^(.*ov)a$") or rmatch(base.lemma, "^(.*in)a$")
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Feminine adjectival lemma '%s' should end in -á, -í, -ova or -ina"):format(base.lemma))
else
stem = rmatch(base.lemma, "^(.*)é$")
if stem then
base.lemma = stem .. "ý"
break
end
stem = rmatch(base.lemma, "^(.*)í$")
if stem then
break
end
stem = rmatch(base.lemma, "^(.*ov)o$") or rmatch(base.lemma, "^(.*in)o$")
if stem then
base.lemma = sub_ov(stem)
break
end
error(("Neuter adjectival lemma '%s' should end in -é, -í, -ovo or -ino"):format(base.lemma))
end
end
end
base.decl = "adj"
end
-- Now set the stem sets if not given.
-- Now set the stem sets if not given.
if not base.stem_sets then
base.stem_sets = {{reducible = false}}
end
for _, stems in ipairs(base.stem_sets) do
-- Set the stems.
stems.vowel_stem = stem
stems.nonvowel_stem = stem
end
end
-- Determine the declension based on the lemma, gender and number. The declension is set in base.decl. In the process,
-- we set either base.vowel_stem (if the lemma ends in a vowel) or base.nonvowel_stem (if the lemma does not end in a
-- vowel), which is used by determine_stems(). In some cases (specifically with certain foreign nouns), we set
-- base.lemma to a new value; this is as if the user specified 'decllemma:'.
local function determine_declension(base)
if base.mostlyindecl then
base.decl = "mostly-indecl"
base.nonvowel_stem = base.lemma
return
end
if base.indecl then
base.decl = "indecl"
base.nonvowel_stem = base.lemma
return
end
-- Determine declension
stem = rmatch(base.lemma, "^(.*)a$")
if stem then
if base.gender == "m" then
if base.animacy ~= "an" then
error("Masculine lemma in -a must be animate")
end
base.decl = "a-m"
elseif base.gender == "f" then
if base.hard then
-- e.g. [[doňa]], which seems not to have soft alternates as [[piraňa]] does (despite IJP; but see the note at the
-- bottom)
base.decl = "hard-f"
elseif rfind(stem, "e$") then
-- [[idea]], [[diarea]] (subtype '.tech'), [[Korea]], etc.
base.decl = "ea-f"
elseif rfind(stem, "i$") then
-- [[signoria]], [[sinfonia]], [[paranoia]], etc.
base.decl = "ia-f"
elseif rfind(stem, "[ou]$") then
-- [[stoa]], [[kongrua]], [[Samoa]], [[Nikaragua]], etc.
base.decl = "oa-f"
elseif not base.persname and rfind(stem, "^.*[ňj]$") or base.mixed then
-- [[maracuja]], [[papája]], [[sója]]; [[piraňa]] etc. Also [[Keňa]], [[Troja]]/[[Trója]], [[Amudarja]].
-- Not [[Táňa]], [[Darja]], which decline like [[gejša]], [[skica]], etc. (subtype of hard feminines).
base.decl = "mixed-f"
else
base.decl = "hard-f"
end
elseif base.gender == "n" then
if rfind(stem, "m$") then
base.decl = "ma-n"
else
error("Lemma ending in -a and neuter must end in -ma")
end
end
base.vowel_stem = stem
return
end
local ending
stem, ending = rmatch(base.lemma, "^(.*)([eě])$")
if stem then
if ending == "ě" then
stem = com.convert_paired_plain_to_palatal(stem)
end
if base.gender == "m" then
if base.foreign then
-- [[software]] and similar English-derived nouns with silent -e; set the lemma here as if decllemma: were given
base.lemma = stem
base.nonvowel_stem = stem
base.decl = "hard-m"
return
end
if base.hard then
-- -e be damned; e.g. [[Sofokles]] with hard stem 'Sofokle-' (genitive 'Sofoklea', dative 'Sofokleovi', etc.)
base.nonvowel_stem = base.lemma
base.decl = "hard-m"
return
end
if base.tstem then
if base.animacy ~= "an" then
error("T-stem masculine lemma in -e must be animate")
end
base.decl = "tstem-m"
elseif rfind(stem, "i$") then
-- [[zombie]], [[hippie]], [[yuppie]], [[rowdie]]
base.decl = "ie-m"
elseif rfind(stem, "e$") then
-- [[Yankee]]
base.nonvowel_stem = base.lemma
base.decl = "ee-m"
return
else
base.decl = "e-m"
end
elseif base.gender == "f" then
base.decl = "soft-f"
else
if base.tstem then
base.decl = "tstem-n"
else
base.decl = "soft-n"
end
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*)o$")
if stem then
if base.gender == "m" then
-- Cf. [[maestro]] m.
base.decl = "o-m"
elseif base.gender == "f" then
-- [[zoo]]; [[Žemaitsko]]?
error("Feminine nouns in -o are indeclinable; use '.indecl' if needed")
elseif base.nstem then
base.decl = "n-n"
elseif base.hard then
base.decl = "hard-n"
elseif rfind(stem, "[aeiuy]$") then
-- These have gen pl in -í and often other soft plural endings.
base.decl = "semisoft-n"
else
base.decl = "hard-n"
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*[iy])$")
if stem then
if base.gender == "m" then
if base.soft then
-- [[gay]] "gay man", [[gray]] "gray (scientific unit)", [[Nagy]] (surname)
base.decl = "soft-m"
else
-- Cf. [[kivi]] "kiwi (bird)", [[husky]] "kusky", etc.
base.decl = "i-m"
end
elseif base.gender == "f" then
if base.soft then
-- [[Uruguay]], [[Paraguay]]
base.decl = "soft-f"
else
-- [[máti]], [[pramáti]]; note also indeclinable [[tsunami]]/[[cunami]], [[okapi]]
base.decl = "i-f"
if stem:find("i$") then
stem = stem:gsub("i$", "")
else
error("Feminine nouns in -y are either soft or indeclinable; use '.soft' or '.indecl' as needed")
end
end
else
error("Neuter nouns in -i are indeclinable; use '.indecl' if needed")
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*u)$")
if stem then
if base.gender == "m" then
-- Cf. [[emu]], [[guru]], etc.
base.decl = "u-m"
elseif base.gender == "f" then
-- Only one I know is [[budižkničemu]], which is indeclinable in the singular and declines in the plural as
-- if written 'budižkničema'.
error("Feminine nouns in -u are indeclinable; use '.indecl' if needed")
else
error("Neuter nouns in -u are indeclinable; use '.indecl' if needed")
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*[íý])$")
if stem then
if base.gender == "m" then
base.decl = "í-m"
elseif base.gender == "f" then
-- FIXME: Do any exist? If not, update this message.
error("Support for non-adjectival non-indeclinable feminine nouns in -í/-ý not yet implemented")
else
base.decl = "í-n"
end
base.vowel_stem = stem
return
end
stem = rmatch(base.lemma, "^(.*" .. com.cons_c .. ")$")
if stem then
if base.gender == "m" then
if base.foreign then
-- [[komunismus]] "communism", [[kosmos]] "cosmos", [[hádes]] "Hades"
stem = rmatch(base.lemma, "^(.*)[ueoaéá]s$")
if not stem then
error("Unrecognized masculine foreign ending, should be -us, -es, -os, -as, -és or -ás")
end
if not base.hard and (rfind(stem, "[ei]$") and base.animacy == "an" or
rfind(stem, "i$") and base.animacy == "inan") then
-- [[genius]], [[basileus]], [[rádius]]; not [[nukleus]], [[choreus]] (inanimate); not
-- [[skarabeus]] (animate), which should specify 'hard'
base.decl = "semisoft-m"
else
base.decl = "hard-m"
end
-- set the lemma here as if decllemma: were given
base.lemma = stem
elseif base.hard then
base.decl = "hard-m"
elseif base.soft then
base.decl = "soft-m"
elseif base.mixed then
base.decl = "mixed-m"
elseif rfind(base.lemma, com.inherently_soft_c .. "$") or rfind(base.lemma, "tel$") then
base.decl = "soft-m"
else
base.decl = "hard-m"
end
elseif base.gender == "f" then
if base.mixedistem then
base.decl = "mixed-istem-f"
elseif base.istem then
base.decl = "istem-f"
elseif base["-istem"] then
base.decl = "cons-f"
elseif rfind(base.lemma, "st$") then
-- Numerous abstracts in -ost; also [[kost]], [[část]], [[srst]], [[bolest]]
base.decl = "istem-f"
else
base.decl = "cons-f"
end
elseif base.gender == "n" then
if base.foreign then
stem = rmatch(base.lemma, "^(.*)um$") or rmatch(base.lemma, "^(.*)on$")
if not stem then
error("Unrecognized neuter foreign ending, should be -um or -on")
end
if base.hard then
base.decl = "hard-n"
elseif rfind(stem, "[eiuy]$") then
base.decl = "semisoft-n"
else
base.decl = "hard-n"
end
-- set the lemma here as if decllemma: were given
base.lemma = stem .. "o"
base.vowel_stem = stem
return
else
error("Neuter nouns ending in a consonant should use '.foreign' or '.decllemma:...'")
end
end
base.nonvowel_stem = stem
return
end
error("Unrecognized ending for lemma: '" .. base.lemma .. "'")
end
-- Determine the default value for the 'reducible' flag.
local function determine_default_reducible(base)
-- Nouns in vowels other than -a/o as well as masculine nouns ending in all vowels don't have null endings so not
-- reducible. Note, we are never called on adjectival nouns.
if rfind(base.lemma, "[iyuíeě]$") or base.gender == "m" and rfind(base.lemma, "[ao]$") or base.tstem then
base.default_reducible = false
return
end
local stem
stem = rmatch(base.lemma, "^(.*" .. com.cons_c .. ")$")
if stem then
-- When analyzing existing manual declensions in -ec and -ek, 290 were reducible vs. 23 non-reducible. Of these
-- 23, 15 were monosyllabic (and none of the 290 reducible nouns were monosyllabic) -- and two of these were
-- actually reducible but irregularly: [[švec]] "shoemaker" (gen sg 'ševce') and [[žnec]] "reaper (person)"
-- (gen sg. 'žence'). Of the remaining 8 multisyllabic non-reducible words, two were actually reducible but
-- irregularly: [[stařec]] "old man" (gen sg 'starce') and [[tkadlec]] "weaver" (gen sg 'tkalce'). The remaining
-- six consisted of 5 compounds of monosyllabic words: [[dotek]], [[oblek]], [[kramflek]], [[pucflek]],
-- [[pokec]], plus [[česnek]], which should be reducible but would lead to an impossible consonant cluster.
if base.gender == "m" and rfind(stem, "[eě][ck]$") and not com.is_monosyllabic(stem) then
base.default_reducible = true
elseif base.gender == "f" and rfind(stem, "[eě]ň$") then
-- [[pochodeň]] "torch", [[píseň]] "leather", [[žeň]] "harvest"; not [[reveň]] "rhubarb" or [[dřeň]] "pulp",
-- which need an override.
base.default_reducible = true
else
base.default_reducible = false
end
return
end
if base.number == "sg" then
base.default_reducible = false
return
end
if rfind(base.lemma, "isko$") then
-- e.g. [[středisko]]
base.default_reducible = "mixed"
return
end
stem = rmatch(base.lemma, "^(.*)" .. com.vowel_c .. "$")
if not stem then
error(("Internal error: Something wrong, lemma '%s' doesn't end in consonant or vowel"):format(base.lemma))
end
-- Substitute 'ch' with a single character to make the following code simpler.
stem = stem:gsub("ch", com.TEMP_CH)
if rfind(stem, com.cons_c .. "[lr]" .. com.cons_c .. "$") then
-- [[vrba]], [[vlha]]; not reducible. (But note [[jablko]], reducible; needs override.)
base.default_reducible = false
elseif not base.foreign and (rfind(stem, com.cons_c .. "[bkhlrmnv]$") or base.c_as_k and rfind(stem, com.cons_c .. "c$")) then
-- [[ayahuasca]] has gen pl 'ayahuasek'
base.default_reducible = true
elseif base.foreign and rfind(stem, com.cons_c .. "r$") then
-- Foreign nouns in -CCum seem generally non-reducible in the gen pl except for those in -Crum like [[centrum]],
-- Examples: [[album]], [[verbum]], [[signum]], [[interregnum]], [[sternum]]. [[infernum]] has gen pl 'infern/inferen'.
base.default_reducible = true
else
base.default_reducible = false
end
end
-- Determine the stems to use for each stem set: vowel and nonvowel stems, for singular
-- and plural. We assume that one of base.vowel_stem or base.nonvowel_stem has been
-- set in determine_declension(), depending on whether the lemma ends in
-- a vowel. We construct all the rest given the reducibility, vowel alternation spec and
-- any explicit stems given. We store the determined stems inside of the stem-set objects
-- in `base.stem_sets`, meaning that if the user gave multiple reducible or vowel-alternation
-- patterns, we will compute multiple sets of stems. The reason is that the stems may vary
-- depending on the reducibility and vowel alternation.
local function determine_stems(base)
if not base.stem_sets then
base.stem_sets = {{}}
end
-- Set default reducible and check for default mixed reducible, which needs to be expanded into two entries.
local default_mixed_reducible = false
for _, stems in ipairs(base.stem_sets) do
if stems.reducible == nil then
stems.reducible = base.default_reducible
end
if stems.reducible == "mixed" then
default_mixed_reducible = true
end
end
if default_mixed_reducible then
local new_stem_sets = {}
for _, stems in ipairs(base.stem_sets) do
if stems.reducible == "mixed" then
local non_reducible_copy = m_table.shallowCopy(stems)
non_reducible_copy.reducible = false
stems.reducible = true
table.insert(new_stem_sets, stems)
table.insert(new_stem_sets, non_reducible_copy)
else
table.insert(new_stem_sets, stems)
end
end
base.stem_sets = new_stem_sets
end
-- Now determine all the stems for each stem set.
for _, stems in ipairs(base.stem_sets) do
local lemma_is_vowel_stem = not not base.vowel_stem
if base.vowel_stem then
stems.vowel_stem = base.vowel_stem
stems.nonvowel_stem = stems.vowel_stem
-- Apply vowel alternation first in cases like jádro -> jader; apply_vowel_alternation() will throw an error
-- if the vowel being modified isn't the last vowel in the stem.
stems.oblique_nonvowel_stem = com.apply_vowel_alternation(stems.vowelalt, stems.nonvowel_stem)
if stems.reducible then
stems.nonvowel_stem = dereduce(base, stems.nonvowel_stem)
stems.oblique_nonvowel_stem = dereduce(base, stems.oblique_nonvowel_stem)
end
else
stems.nonvowel_stem = base.nonvowel_stem
-- The user specified #, #ě, ## or ##ě and we're dealing with a term like masculine [[bůh]] or feminine
-- [[sůl]] that ends in a consonant. In this case, all slots except the nom_s and maybe acc_s have vowel
-- alternation.
if stems.oblique_slots then
stems.oblique_slots = "all"
end
stems.oblique_nonvowel_stem = com.apply_vowel_alternation(stems.vowelalt, stems.nonvowel_stem)
if stems.reducible then
stems.vowel_stem = com.reduce(base.nonvowel_stem)
if not stems.vowel_stem then
error("Unable to reduce stem '" .. base.nonvowel_stem .. "'")
end
else
stems.vowel_stem = base.nonvowel_stem
end
end
stems.oblique_vowel_stem = com.apply_vowel_alternation(stems.vowelalt, stems.vowel_stem)
end
end
local function detect_indicator_spec(base)
if base.pron then
determine_pronoun_stems(base)
elseif base.det then
determine_determiner_stems(base)
elseif base.num then
determine_numeral_stems(base)
elseif base.adj then
process_declnumber(base)
synthesize_adj_lemma(base)
elseif base.manual then
if base.stem_sets then
-- FIXME, maybe this should be allowed?
error("Reducible and vowel alternation specs cannot be given with manual declensions")
end
base.stem_sets = {{reducible = false, vowel_stem = "", nonvowel_stem = ""}}
base.decl = "manual"
else
if base.number == "pl" then
synthesize_singular_lemma(base)
end
determine_declension(base)
determine_default_reducible(base)
determine_stems(base)
end
end
local function detect_all_indicator_specs(alternant_multiword_spec)
-- Keep track of all genders seen in the singular and plural so we can determine whether to add the term to
-- [[:Category:Czech nouns that change gender in the plural]].
alternant_multiword_spec.sg_genders = {}
alternant_multiword_spec.pl_genders = {}
iut.map_word_specs(alternant_multiword_spec, function(base)
detect_indicator_spec(base)
if base.number ~= "pl" then
alternant_multiword_spec.sg_genders[base.actual_gender] = true
end
if base.number ~= "sg" then
-- All t-stem masculines are neuter in the plural.
local plgender
if base.decl == "tstem-m" then
plgender = "n"
else
plgender = base.actual_gender
end
alternant_multiword_spec.pl_genders[plgender] = true
end
end)
if (alternant_multiword_spec.saw_pron and 1 or 0) + (alternant_multiword_spec.saw_det and 1 or 0) + (alternant_multiword_spec.saw_num and 1 or 0) > 1 then
error("Can't combine pronouns, determiners and/or numerals")
end
end
local propagate_multiword_properties
local function propagate_alternant_properties(alternant_spec, property, mixed_value, nouns_only)
local seen_property
for _, multiword_spec in ipairs(alternant_spec.alternants) do
propagate_multiword_properties(multiword_spec, property, mixed_value, nouns_only)
if seen_property == nil then
seen_property = multiword_spec[property]
elseif multiword_spec[property] and seen_property ~= multiword_spec[property] then
seen_property = mixed_value
end
end
alternant_spec[property] = seen_property
end
propagate_multiword_properties = function(multiword_spec, property, mixed_value, nouns_only)
local seen_property = nil
local last_seen_nounal_pos = 0
local word_specs = multiword_spec.alternant_or_word_specs or multiword_spec.word_specs
for i = 1, #word_specs do
local is_nounal
if word_specs[i].alternants then
propagate_alternant_properties(word_specs[i], property, mixed_value)
is_nounal = not not word_specs[i][property]
elseif nouns_only then
is_nounal = is_regular_noun(word_specs[i])
else
is_nounal = not not word_specs[i][property]
end
if is_nounal then
if not word_specs[i][property] then
error("Internal error: noun-type word spec without " .. property .. " set")
end
for j = last_seen_nounal_pos + 1, i - 1 do
word_specs[j][property] = word_specs[j][property] or word_specs[i][property]
end
last_seen_nounal_pos = i
if seen_property == nil then
seen_property = word_specs[i][property]
elseif seen_property ~= word_specs[i][property] then
seen_property = mixed_value
end
end
end
if last_seen_nounal_pos > 0 then
for i = last_seen_nounal_pos + 1, #word_specs do
word_specs[i][property] = word_specs[i][property] or word_specs[last_seen_nounal_pos][property]
end
end
multiword_spec[property] = seen_property
end
local function propagate_properties_downward(alternant_multiword_spec, property, default_propval)
local function set_and_fetch(obj, default)
local retval
if obj[property] then
retval = obj[property]
else
obj[property] = default
retval = default
end
if not obj["actual_" .. property] then
obj["actual_" .. property] = retval
end
return retval
end
local propval1 = set_and_fetch(alternant_multiword_spec, default_propval)
for _, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do
local propval2 = set_and_fetch(alternant_or_word_spec, propval1)
if alternant_or_word_spec.alternants then
for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do
local propval3 = set_and_fetch(multiword_spec, propval2)
for _, word_spec in ipairs(multiword_spec.word_specs) do
local propval4 = set_and_fetch(word_spec, propval3)
if propval4 == "mixed" then
-- FIXME, use clearer error message.
error("Attempt to assign mixed " .. property .. " to word")
end
set_and_fetch(word_spec, propval4)
end
end
else
if propval2 == "mixed" then
-- FIXME, use clearer error message.
error("Attempt to assign mixed " .. property .. " to word")
end
set_and_fetch(alternant_or_word_spec, propval2)
end
end
end
--[=[
Propagate `property` (one of "animacy", "gender" or "number") from nouns to adjacent
adjectives. We proceed as follows:
1. We assume the properties in question are already set on all nouns. This should happen in
set_defaults_and_check_bad_indicators().
2. We first propagate properties upwards and sideways. We recurse downwards from the top. When we encounter a multiword
spec, we proceed left to right looking for a noun. When we find a noun, we fetch its property (recursing if the noun
is an alternant), and propagate it to any adjectives to its left, up to the next noun to the left. When we have
processed the last noun, we also propagate its property value to any adjectives to the right (to handle e.g.
[[anděl strážný]] "guardian angel", where the adjective [[strážný]] should inherit the 'masculine' and 'animate'
properties of [[anděl]]). Finally, we set the property value for the multiword spec itself by combining all the
non-nil properties of the individual elements. If all non-nil properties have the same value, the result is that
value, otherwise it is `mixed_value` (which is "mixed" for animacy and gender, but "both" for number).
3. When we encounter an alternant spec in this process, we recursively process each alternant (which is a multiword
spec) using the previous step, and combine any non-nil properties we encounter the same way as for multiword specs.
4. The effect of steps 2 and 3 is to set the property of each alternant and multiword spec based on its children or its
neighbors.
]=]
local function propagate_properties(alternant_multiword_spec, property, default_propval, mixed_value)
propagate_multiword_properties(alternant_multiword_spec, property, mixed_value, "nouns only")
propagate_multiword_properties(alternant_multiword_spec, property, mixed_value, false)
propagate_properties_downward(alternant_multiword_spec, property, default_propval)
end
local function determine_noun_status(alternant_multiword_spec)
for i, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do
if alternant_or_word_spec.alternants then
local is_noun = false
for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do
for j, word_spec in ipairs(multiword_spec.word_specs) do
if is_regular_noun(word_spec) then
multiword_spec.first_noun = j
is_noun = true
break
end
end
end
if is_noun then
alternant_multiword_spec.first_noun = i
end
elseif is_regular_noun(alternant_or_word_spec) then
alternant_multiword_spec.first_noun = i
return
end
end
end
-- Set the part of speech based on properties of the individual words.
local function set_pos(alternant_multiword_spec)
if alternant_multiword_spec.args.pos then
alternant_multiword_spec.pos = alternant_multiword_spec.args.pos
elseif alternant_multiword_spec.saw_pron and not alternant_multiword_spec.saw_non_pron then
alternant_multiword_spec.pos = "pronoun"
elseif alternant_multiword_spec.saw_det and not alternant_multiword_spec.saw_non_det then
alternant_multiword_spec.pos = "determiner"
elseif alternant_multiword_spec.saw_num and not alternant_multiword_spec.saw_non_num then
alternant_multiword_spec.pos = "numeral"
else
alternant_multiword_spec.pos = "noun"
end
alternant_multiword_spec.plpos = require(en_utilities_module).pluralize(alternant_multiword_spec.pos)
end
local function normalize_all_lemmas(alternant_multiword_spec, pagename)
iut.map_word_specs(alternant_multiword_spec, function(base)
if base.lemma == "" then
base.lemma = pagename
end
base.orig_lemma = base.lemma
base.orig_lemma_no_links = m_links.remove_links(base.lemma)
local lemma = base.orig_lemma_no_links
-- If the lemma is all-uppercase, lowercase it but note this, so that later in combine_stem_ending() we convert it
-- back to uppercase. This allows us to handle all-uppercase acronyms without a lot of extra complexity.
-- FIXME: This may not make sense at all.
if uupper(lemma) == lemma then
base.all_uppercase = true
lemma = ulower(lemma)
end
base.actual_lemma = lemma
base.lemma = base.decllemma or lemma
end)
end
local function decline_noun(base)
for _, stems in ipairs(base.stem_sets) do
if not decls[base.decl] then
error("Internal error: Unrecognized declension type '" .. base.decl .. "'")
end
decls[base.decl](base, stems)
end
handle_derived_slots_and_overrides(base)
local function copy(from_slot, to_slot)
base.forms[to_slot] = base.forms[from_slot]
end
if base.actual_number ~= base.number then
local source_num = base.number == "sg" and "_s" or "_p"
local dest_num = base.number == "sg" and "_p" or "_s"
for case, _ in pairs(cases) do
copy(case .. source_num, case .. dest_num)
copy("nom" .. source_num .. "_linked", "nom" .. dest_num .. "_linked")
end
if base.actual_number ~= "both" then
local erase_num = base.actual_number == "sg" and "_p" or "_s"
for case, _ in pairs(cases) do
base.forms[case .. erase_num] = nil
end
base.forms["nom" .. erase_num .. "_linked"] = nil
end
end
end
local function get_variants(form)
return nil
--[=[
FIXME
return
form:find(com.VAR1) and "var1" or
form:find(com.VAR2) and "var2" or
form:find(com.VAR3) and "var3" or
nil
]=]
end
-- Compute the categories to add the noun to, as well as the annotation to display in the
-- declension title bar. We combine the code to do these functions as both categories and
-- title bar contain similar information.
local function compute_categories_and_annotation(alternant_multiword_spec)
local all_cats = {}
local function insert(cattype)
m_table.insertIfNot(all_cats, "Czech " .. cattype)
end
if alternant_multiword_spec.pos == "noun" then
if alternant_multiword_spec.actual_number == "sg" then
insert("uncountable nouns")
elseif alternant_multiword_spec.actual_number == "pl" then
insert("pluralia tantum")
end
end
local annotation
local annparts = {}
local decldescs = {}
local vowelalts = {}
local foreign = {}
local irregs = {}
local stemspecs = {}
local reducible = nil
local function get_genanim(gender, animacy)
local gender_code_to_desc = {
m = "masculine",
f = "feminine",
n = "neuter",
none = nil,
}
local animacy_code_to_desc = {
an = "animate",
inan = "inanimate",
none = nil,
}
local descs = {}
table.insert(descs, gender_code_to_desc[gender])
if gender ~= "f" and gender ~= "n" then
-- masculine or "none" (e.g. certain pronouns and numerals)
table.insert(descs, animacy_code_to_desc[animacy])
end
return table.concat(descs, " ")
end
local function trim(text)
text = text:gsub(" +", " ")
return mw.text.trim(text)
end
local function do_word_spec(base)
local actual_genanim = get_genanim(base.actual_gender, base.actual_animacy)
local declined_genanim = get_genanim(base.gender, base.animacy)
local genanim
if actual_genanim ~= declined_genanim then
genanim = ("%s (declined as %s)"):format(actual_genanim, declined_genanim)
insert("nouns with actual gender different from declined gender")
else
genanim = actual_genanim
end
if base.actual_gender == "m" then
-- Insert a category for 'Czech masculine animate nouns' or 'Czech masculine inanimate nouns'; the base categories
-- [[:Category:Czech masculine nouns]], [[:Czech animate nouns]] are auto-inserted.
insert(actual_genanim .. " " .. alternant_multiword_spec.plpos)
end
for _, stems in ipairs(base.stem_sets) do
local props = declprops[base.decl]
local cats = props.cat
if type(cats) == "function" then
cats = cats(base, stems)
end
if type(cats) == "string" then
cats = {cats}
end
local default_desc
for i, cat in ipairs(cats) do
if not cat:find("GENDER") and not cat:find("GENPOS") and not cat:find("POS") then
cat = cat .. " GENPOS"
end
cat = cat:gsub("GENPOS", "GENDER POS")
if not cat:find("POS") then
cat = cat .. " POS"
end
if i == #cats then
default_desc = cat:gsub(" POS", "")
end
cat = cat:gsub("GENDER", actual_genanim)
cat = cat:gsub("POS", alternant_multiword_spec.plpos)
-- Need to trim `cat` because actual_genanim may be an empty string.
insert(trim(cat))
end
local desc = props.desc
if type(desc) == "function" then
desc = desc(base, stems)
end
desc = desc or default_desc
desc = desc:gsub("GENDER", genanim)
-- Need to trim `desc` because genanim may be an empty string.
m_table.insertIfNot(decldescs, trim(desc))
local vowelalt
if stems.vowelalt == "quant" then
vowelalt = "quant-alt"
insert("nouns with quantitative vowel alternation")
elseif stems.vowelalt == "quant-ě" then
vowelalt = "í-ě-alt"
insert("nouns with í-ě alternation")
end
if vowelalt then
m_table.insertIfNot(vowelalts, vowelalt)
end
if reducible == nil then
reducible = stems.reducible
elseif reducible ~= stems.reducible then
reducible = "mixed"
end
if stems.reducible then
insert("nouns with reducible stem")
end
if base.foreign then
m_table.insertIfNot(foreign, "foreign")
if not base.decllemma then
-- NOTE: there are nouns that use both 'foreign' and 'decllemma', e.g. [[Zeus]].
insert("nouns with regular foreign declension")
end
end
-- User-specified 'decllemma:' indicates irregular stem. Don't consider foreign nouns in -us/-os/-es, -um/-on or
-- silent -e (e.g. [[software]]) where this ending is simply dropped in oblique and plural forms as irregular;
-- there are too many of these and they are already categorized above as 'nouns with regular foreign declension'.
if base.decllemma then
m_table.insertIfNot(irregs, "irreg-stem")
insert("nouns with irregular stem")
end
m_table.insertIfNot(stemspecs, stems.vowel_stem)
end
end
local key_entry = alternant_multiword_spec.first_noun or 1
if #alternant_multiword_spec.alternant_or_word_specs >= key_entry then
local alternant_or_word_spec = alternant_multiword_spec.alternant_or_word_specs[key_entry]
if alternant_or_word_spec.alternants then
for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do
key_entry = multiword_spec.first_noun or 1
if #multiword_spec.word_specs >= key_entry then
do_word_spec(multiword_spec.word_specs[key_entry])
end
end
else
do_word_spec(alternant_or_word_spec)
end
end
if alternant_multiword_spec.actual_number == "sg" or alternant_multiword_spec.actual_number == "pl" then
-- not "both" or "none" (for [[sebe]])
table.insert(annparts, alternant_multiword_spec.actual_number == "sg" and "sg-only" or "pl-only")
end
if #decldescs == 0 then
table.insert(annparts, "indecl")
else
table.insert(annparts, table.concat(decldescs, " // "))
end
if #vowelalts > 0 then
table.insert(annparts, table.concat(vowelalts, "/"))
end
if reducible == "mixed" then
table.insert(annparts, "mixed-reducible")
elseif reducible then
table.insert(annparts, "reducible")
end
if #foreign > 0 then
table.insert(annparts, table.concat(foreign, " // "))
end
if #irregs > 0 then
table.insert(annparts, table.concat(irregs, " // "))
end
alternant_multiword_spec.annotation = table.concat(annparts, " ")
if #stemspecs > 1 then
insert("nouns with multiple stems")
end
if alternant_multiword_spec.actual_number == "both" and not m_table.deepEquals(alternant_multiword_spec.sg_genders, alternant_multiword_spec.pl_genders) then
insert("nouns that change gender in the plural")
end
alternant_multiword_spec.categories = all_cats
end
local function show_forms(alternant_multiword_spec)
local lemmas = {}
for _, slot in ipairs(potential_lemma_slots) do
if alternant_multiword_spec.forms[slot] then
for _, formobj in ipairs(alternant_multiword_spec.forms[slot]) do
-- FIXME, now can support footnotes as qualifiers in headwords?
table.insert(lemmas, formobj.form)
end
break
end
end
local props = {
lemmas = lemmas,
slot_table = alternant_multiword_spec.output_noun_slots,
lang = lang,
canonicalize = function(form)
-- return com.remove_variant_codes(form)
return form
end,
}
iut.show_forms(alternant_multiword_spec.forms, props)
end
local function make_table(alternant_multiword_spec)
local forms = alternant_multiword_spec.forms
local function template_prelude(min_width)
return rsub([=[
<div>
<div class="NavFrame" style="max-width:MINWIDTHem">
<div class="NavHead" style="background:var(--wikt-palette-lighterblue, #ebf4ff);">{title}{annotation}</div>
<div class="NavContent" style="overflow:auto">
{\op}| style="min-width:MINWIDTHem" class="inflection-table inflection"
|- class="rowgroup"
]=], "MINWIDTH", min_width)
end
local function template_postlude()
return [=[
|{\cl}{notes_clause}</div></div></div>]=]
end
local table_spec_both = template_prelude("45") .. [=[
! style="width:33%;background:var(--wikt-palette-lightblue, #d9ebff);" |
! style="background:var(--wikt-palette-lightblue, #d9ebff);" | เอกพจน์
! style="background:var(--wikt-palette-lightblue, #d9ebff);" | พหูพจน์
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|กรรตุการก
| {nom_s}
| {nom_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|สัมพันธการก
| {gen_s}
| {gen_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|สัมปทานการก
| {dat_s}
| {dat_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|กรรมการก
| {acc_s}
| {acc_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|สัมโพธนการก
| {voc_s}
| {voc_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|อธิกรณการก
| {loc_s}
| {loc_p}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|กรณการก
| {ins_s}
| {ins_p}
]=] .. template_postlude()
local function get_table_spec_one_number(number, numcode)
local table_spec_one_number = [=[
! style="width:33%;background:var(--wikt-palette-lightblue, #d9ebff);" |
! style="background:var(--wikt-palette-lightblue, #d9ebff);" | NUMBER
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|กรรตุการก
| {nom_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|สัมพันธการก
| {gen_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|สัมปทานการก
| {dat_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|กรรมการก
| {acc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|สัมโพธนการก
| {voc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|อธิกรณการก
| {loc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|กรณการก
| {ins_CODE}
]=]
return template_prelude("30") .. table_spec_one_number:gsub("NUMBER", number):gsub("CODE", numcode) ..
template_postlude()
end
local function get_table_spec_one_number_clitic(number, numcode)
local table_spec_one_number_clitic = [=[
! rowspan=2 style="width:33%;background:var(--wikt-palette-lightblue, #d9ebff);"|
! colspan=2 style="background:var(--wikt-palette-lightblue, #d9ebff);" | NUMBER
|-
! style="width:33%;background:var(--wikt-palette-lightblue, #d9ebff);" | รูปเน้น
! style="background:var(--wikt-palette-lightblue, #d9ebff);" | รูปติด
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|กรรตุการก
| colspan=2 | {nom_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|สัมพันธการก
| {gen_CODE}
| {clitic_gen_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|สัมปทานการก
| {dat_CODE}
| {clitic_dat_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|กรรมการก
| {acc_CODE}
| {clitic_acc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|สัมโพธนการก
| colspan=2 | {voc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|อธิกรณการก
| colspan=2 | {loc_CODE}
|-
!style="background:var(--wikt-palette-lighterblue, #ebf4ff);"|กรณการก
| colspan=2 | {ins_CODE}
]=]
return template_prelude("40") .. table_spec_one_number_clitic:gsub("NUMBER", number):gsub("CODE", numcode) ..
template_postlude()
end
local notes_template = [=[
<div style="width:100%;text-align:left;background:var(--wikt-palette-lightblue, #d9ebff);">
<div style="display:inline-block;text-align:left;padding-left:1em;padding-right:1em">
{footnote}
</div></div>
]=]
if alternant_multiword_spec.title then
forms.title = alternant_multiword_spec.title
else
forms.title = 'การผันรูปของ <i lang="cs">' .. forms.lemma .. '</i>'
end
local annotation = alternant_multiword_spec.annotation
if annotation == "" then
forms.annotation = ""
else
forms.annotation = " (<span style=\"font-size: smaller;\">" .. annotation .. "</span>)"
end
local number, numcode
if alternant_multiword_spec.actual_number == "sg" then
number, numcode = "เอกพจน์", "s"
elseif alternant_multiword_spec.actual_number == "pl" then
number, numcode = "พหูพจน์", "p"
elseif alternant_multiword_spec.actual_number == "none" then -- used for [[sebe]]
number, numcode = "", "s"
end
local table_spec =
alternant_multiword_spec.actual_number == "both" and table_spec_both or
alternant_multiword_spec.has_clitic and get_table_spec_one_number_clitic(number, numcode) or
get_table_spec_one_number(number, numcode)
forms.notes_clause = forms.footnote ~= "" and
m_string_utilities.format(notes_template, forms) or ""
return m_string_utilities.format(table_spec, forms)
end
local function compute_headword_genders(alternant_multiword_spec)
local genders = {}
local number
if alternant_multiword_spec.actual_number == "pl" then
number = "-p"
else
number = ""
end
iut.map_word_specs(alternant_multiword_spec, function(base)
local animacy = base.animacy
if animacy == "inan" then
animacy = "in"
end
m_table.insertIfNot(genders, base.gender .. "-" .. animacy .. number)
end)
return genders
end
-- Externally callable function to parse and decline a noun given user-specified arguments.
-- Return value is ALTERNANT_MULTIWORD_SPEC, an object where the declined forms are in
-- `ALTERNANT_MULTIWORD_SPEC.forms` for each slot. If there are no values for a slot, the
-- slot key will be missing. The value for a given slot is a list of objects
-- {form=FORM, footnotes=FOOTNOTES}.
function export.do_generate_forms(parent_args, from_headword)
local params = {
[1] = {required = true, template_default = "bůh<m.an.#.voce>"},
title = true,
pagename = true,
json = {type = "boolean"},
pos = true,
}
if from_headword then
params["head"] = {list = true}
params["lemma"] = {list = true}
params["g"] = {list = true}
params["f"] = {list = true}
params["m"] = {list = true}
params["adj"] = {list = true}
params["dim"] = {list = true}
params["id"] = {}
end
local args = m_para.process(parent_args, params)
local parse_props = {
parse_indicator_spec = parse_indicator_spec,
angle_brackets_omittable = true,
allow_blank_lemma = true,
}
local alternant_multiword_spec = iut.parse_inflected_text(args[1], parse_props)
alternant_multiword_spec.title = args.title
alternant_multiword_spec.args = args
local pagename = args.pagename or from_headword and args.head[1] or mw.loadData("Module:headword/data").pagename
normalize_all_lemmas(alternant_multiword_spec, pagename)
set_all_defaults_and_check_bad_indicators(alternant_multiword_spec)
-- These need to happen before detect_all_indicator_specs() so that adjectives get their genders and numbers set
-- appropriately, which are needed to correctly synthesize the adjective lemma.
propagate_properties(alternant_multiword_spec, "animacy", "inan", "mixed")
propagate_properties(alternant_multiword_spec, "number", "both", "both")
-- FIXME, the default value (third param) used to be 'm' with a comment indicating that this applied only to
-- plural adjectives, where it didn't matter; but in Czech, plural adjectives are distinguished for gender and
-- animacy. Make sure 'mixed' works.
propagate_properties(alternant_multiword_spec, "gender", "mixed", "mixed")
detect_all_indicator_specs(alternant_multiword_spec)
-- Propagate 'actual_number' after calling detect_all_indicator_specs(), which sets 'actual_number' for adjectives.
propagate_properties(alternant_multiword_spec, "actual_number", "both", "both")
determine_noun_status(alternant_multiword_spec)
set_pos(alternant_multiword_spec)
alternant_multiword_spec.output_noun_slots = get_output_noun_slots(alternant_multiword_spec)
local inflect_props = {
skip_slot = function(slot)
return skip_slot(alternant_multiword_spec.actual_number, slot)
end,
slot_table = alternant_multiword_spec.output_noun_slots,
get_variants = get_variants,
inflect_word_spec = decline_noun,
}
iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props)
compute_categories_and_annotation(alternant_multiword_spec)
alternant_multiword_spec.genders = compute_headword_genders(alternant_multiword_spec)
if args.json then
alternant_multiword_spec.args = nil
return require("Module:JSON").toJSON(alternant_multiword_spec)
end
return alternant_multiword_spec
end
-- Entry point for {{cs-ndecl}}. Template-callable function to parse and decline a noun given
-- user-specified arguments and generate a displayable table of the declined forms.
function export.show(frame)
local parent_args = frame:getParent().args
local alternant_multiword_spec = export.do_generate_forms(parent_args)
if type(alternant_multiword_spec) == "string" then
-- JSON return value
return alternant_multiword_spec
end
show_forms(alternant_multiword_spec)
return make_table(alternant_multiword_spec) ..
require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat)
end
return export
s57uckcx23tzqtggtxfffa61o08q4ez
แม่แบบ:cs-ndecl
10
2358197
5759395
2026-09-01T06:45:20Z
Octahedron80
267
นำเข้าจาก enwikt
5759395
wikitext
text/x-wiki
{{#invoke:cs-noun|show}}<noinclude>{{tcat|ndecl:ndecl}}{{documentation}}</noinclude>
583p7m81kt3fyifolp6ee8c65n4qkv8
มอดูล:cs-common
828
2358198
5759396
2026-09-01T06:45:41Z
Octahedron80
267
สร้างหน้าด้วย "local export = {} local lang = require("Module:languages").getByCode("cs") local m_links = require("Module:links") local m_table = require("Module:table") local m_string_utilities = require("Module:string utilities") local u = mw.ustring.char local rsplit = mw.text.split local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsubn = mw.ustring.gsub local ulen = mw.ustring.len local uupper = mw.ustring.upper -- version of rsubn() that..."
5759396
Scribunto
text/plain
local export = {}
local lang = require("Module:languages").getByCode("cs")
local m_links = require("Module:links")
local m_table = require("Module:table")
local m_string_utilities = require("Module:string utilities")
local u = mw.ustring.char
local rsplit = mw.text.split
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rsubn = mw.ustring.gsub
local ulen = mw.ustring.len
local uupper = mw.ustring.upper
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
-- version of rsubn() that returns a 2nd argument boolean indicating whether
-- a substitution was made.
local function rsubb(term, foo, bar)
local retval, nsubs = rsubn(term, foo, bar)
return retval, nsubs > 0
end
export.TEMP_CH = u(0xFFF0) -- used to substitute ch temporarily in the default-reducible code
export.TEMP_SOFT_LABIAL = u(0xFFF1) -- used to indicate that a labial consonant is soft and needs ě
local lc_vowel = "aeiouyáéíóúýěů"
local uc_vowel = uupper(lc_vowel)
export.vowel = lc_vowel .. uc_vowel
export.vowel_c = "[" .. export.vowel .. "]"
export.non_vowel_c = "[^" .. export.vowel .. "]"
-- Consonants that can never form a syllabic nucleus.
local lc_non_syllabic_cons = "bcdfghjkmnpqstvwxzčňšžďť" .. export.TEMP_CH .. export.TEMP_SOFT_LABIAL
local uc_non_syllabic_cons = uupper(lc_non_syllabic_cons)
export.non_syllabic_cons = lc_non_syllabic_cons .. uc_non_syllabic_cons
export.non_syllabic_cons_c = "[" .. export.non_syllabic_cons .. "]"
local lc_syllabic_cons = "lrř"
local uc_syllabic_cons = uupper(lc_syllabic_cons)
local lc_cons = lc_non_syllabic_cons .. lc_syllabic_cons
local uc_cons = uupper(lc_cons)
export.cons = lc_cons .. uc_cons
export.cons_c = "[" .. export.cons .. "]"
export.lowercase = lc_vowel .. lc_cons
export.lowercase_c = "[" .. export.lowercase .. "]"
export.uppercase = uc_vowel .. uc_cons
export.uppercase_c = "[" .. export.uppercase .. "]"
local lc_velar = "kgh"
local uc_velar = uupper(lc_velar)
export.velar = lc_velar .. uc_velar
export.velar_c = "[" .. export.velar .. "]"
local lc_plain_labial = "mpbfvw"
local lc_labial = lc_plain_labial .. export.TEMP_SOFT_LABIAL
local uc_plain_labial = uupper(lc_plain_labial)
local uc_labial = uupper(lc_labial)
export.plain_labial = lc_plain_labial .. uc_plain_labial
export.labial = lc_labial .. uc_labial
export.labial_c = "[" .. export.labial .. "]"
local lc_paired_palatal = "ňďť"
local uc_paired_palatal = uupper(lc_paired_palatal)
export.paired_palatal = lc_paired_palatal .. uc_paired_palatal
local lc_paired_plain = "ndt"
local uc_paired_plain = uupper(lc_paired_plain)
export.paired_plain = lc_paired_plain .. uc_paired_plain
export.paired_palatal_to_plain = {
["ň"] = "n",
["Ň"] = "N",
["ť"] = "t",
["Ť"] = "T",
["ď"] = "d",
["Ď"] = "D",
}
export.paired_plain_to_palatal = {}
for k, v in pairs(export.paired_palatal_to_plain) do
export.paired_plain_to_palatal[v] = k
end
export.paired_palatal_to_plain[export.TEMP_SOFT_LABIAL] = ""
for labial in mw.ustring.gmatch(export.plain_labial, ".") do
export.paired_plain_to_palatal[labial] = labial .. export.TEMP_SOFT_LABIAL
end
local lc_followable_by_e_hacek = lc_paired_plain .. lc_plain_labial
local uc_followable_by_e_hacek = uc_paired_plain .. uc_plain_labial
export.followable_by_e_hacek = lc_followable_by_e_hacek .. uc_followable_by_e_hacek
export.followable_by_e_hacek_c = "[" .. export.followable_by_e_hacek .. "]"
local lc_inherently_soft_not_c = "čjřšžťďň" -- c is sometimes hard
local uc_inherently_soft_not_c = uupper(lc_inherently_soft_not_c)
export.inherently_soft_not_c = lc_inherently_soft_not_c .. uc_inherently_soft_not_c
export.inherently_soft_not_c_c = "[" .. export.inherently_soft_not_c .. "]"
export.inherently_soft = export.inherently_soft_not_c .. "cC"
export.inherently_soft_c = "[" .. export.inherently_soft .. "]"
-- Return true if `word` is monosyllabic. Beware of words like [[čtvrtek]], [[plný]] and [[třmen]], which aren't
-- monosyllabic but have only one vowel, and contrariwise words like [[brouk]], which are monosyllabic but have
-- two vowels.
function export.is_monosyllabic(word)
-- Treat ou as a single vowel.
word = word:gsub("ou", "ů")
word = word:gsub("ay$", "aj")
-- Convert all vowels to 'e'.
word = rsub(word, export.vowel_c, "e")
-- All consonants next to a vowel are non-syllabic; convert to 't'.
word = rsub(word, export.cons_c .. "e", "te")
word = rsub(word, "e" .. export.cons_c, "et")
-- Convert all remaining non-syllabic consonants to 't'.
word = rsub(word, export.non_syllabic_cons_c, "t")
-- At this point, what remains is 't', 'e', or a syllabic consonant. Count the latter two types.
word = word:gsub("t", "")
return ulen(word) <= 1
end
function export.apply_vowel_alternation(alt, stem)
local modstem, origvowel
if alt == "quant" or alt == "quant-ě" then
-- [[sníh]] "snow", gen sg. [[sněhu]]
-- [[míra]] "snow", gen pl. [[měr]]
-- [[hůl]] "cane", gen sg. [[hole]]
-- [[práce]] "work", ins sg. [[prací]]
modstem = rsub(stem, "(.)([íůáé])(" .. export.cons_c .. "*)$",
function(pre, vowel, post)
origvowel = vowel
if vowel == "í" then
if alt == "quant-ě" then
if rfind(pre, "[" .. export.followable_by_e_hacek .. "]$") then
return pre .. "ě" .. post
else
return pre .. "e" .. post
end
else
return pre .. "i" .. post
end
elseif vowel == "ů" then
return pre .. "o" .. post
elseif vowel == "é" then
return pre .. "e" .. post
else
return pre .. "a" .. post
end
end
)
-- [[houba]] "mushroom", gen pl. [[hub]]
modstem = rsub(modstem, "ou(" .. export.cons_c .. "*)$", "u%1")
if modstem == stem then
error("Indicator '" .. alt .. "' can't be applied because stem '" .. stem .. "' doesn't have an í, ů, ou, á or é as its last vowel")
end
else
return stem, nil
end
return modstem, origvowel
end
local function make_try(word)
return function(from, to)
local stem = rmatch(word, "^(.*)" .. from .. "$")
if stem then
return stem .. to
end
return nil
end
end
function export.iotate(stem)
-- FIXME! This is based off of page 14 of Janda and Townsend but needs reviewing with verbs.
local try = make_try(word)
return
try("st", "št") or
try("zd", "žd") or
try("t", "c") or
try("d", "z") or
try("s", "š") or
try("z", "ž") or
try("r", "ř") or
try("ch", "š") or
try("[kc]", "č") or
try("[hg]", "ž") or
word
end
function export.apply_first_palatalization(word, is_adjective)
-- -rr doesn't palatalize (e.g. [[torr]] voc_s 'torre') but otherwise -Cr normally does.
if rfind(word, "rr$") then
return word
end
local stem = rmatch(word, "^(.*" .. export.cons_c .. ")r$")
if stem then
return stem .. "ř"
end
local try = make_try(word)
return
try("ch", "š") or
try("[hg]", "ž") or
is_adjective and try("sk", "št") or
is_adjective and try("ck", "čt") or
try("[kc]", "č") or
word
end
function export.apply_second_palatalization(word, is_adjective)
local try = make_try(word)
return
try("ch", "š") or
try("[hg]", "z") or
try("rr", "ř") or
try("r", "ř") or
is_adjective and try("sk", "št") or
is_adjective and try("ck", "čt") or
try("k", "c") or
word
end
function export.reduce(word)
local pre, letter, vowel, post = rmatch(word, "^(.*)([" .. export.cons .. "y%-])([eě])(" .. export.cons_c .. "+)$")
if not pre then
return nil
end
if vowel == "ě" and rfind(letter, "[" .. export.paired_plain .. "]") then
letter = export.paired_plain_to_palatal[letter]
end
return pre .. letter .. post
end
function export.dereduce(base, stem)
local pre, letter, post = rmatch(stem, "^(.*)(" .. export.cons_c .. ")(" .. export.cons_c .. ")$")
if not pre then
return nil
end
local epvowel
if rfind(letter, "[" .. export.paired_palatal .. "]") then
letter = export.paired_palatal_to_plain[letter]
epvowel = "ě"
else
epvowel = "e"
end
if base.c_as_k and post == "c" then
-- [[ayahuasca]] dereduces to gen pl 'ayahuasek'
post = "k"
end
return pre .. letter .. epvowel .. post
end
function export.convert_paired_plain_to_palatal(stem, ending)
if ending and not rfind(ending, "^[ěií]") then
return stem
end
local stembegin, lastchar = rmatch(stem, "^(.*)([" .. export.followable_by_e_hacek .. "])$")
if lastchar then
return stembegin .. export.paired_plain_to_palatal[lastchar]
else
return stem
end
end
function export.convert_paired_palatal_to_plain(stem, ending)
-- For stems that alternate between n/t/d and ň/ť/ď, we always maintain the stem in the latter format and convert
-- to the corresponding plain as needed, with e -> ě. Likewise, stems ending in /bj/ /vj/ etc. use TEMP_SOFT_LABIAL.
if ending and not rfind(ending, "^[Eeěií]") then
stem = stem:gsub(export.TEMP_SOFT_LABIAL, "")
return stem, ending
end
local stembegin, lastchar = rmatch(stem, "^(.*)([" .. export.paired_palatal .. export.TEMP_SOFT_LABIAL .. "])$")
if lastchar then
ending = ending and rsub(ending, "^e", "ě") or nil
stem = stembegin .. export.paired_palatal_to_plain[lastchar]
end
-- 'E' has served its purpose of preventing the e -> ě conversion after a paired palatal (i.e. it depalatalizes
-- paired palatals).
ending = ending and rsub(ending, "^E", "e") or nil
return stem, ending
end
function export.combine_stem_ending(base, slot, stem, ending)
if stem == "?" then
return "?"
else
-- There are occasional occurrences of soft-only consonants at the end of the stem in hard paradigms, e.g.
-- [[banjo]] "banjo", [[gadžo]] "gadjo (non-Romani)", [[Miša]] "Misha, Mike", [[paša]] "pasha". These force a
-- following y to turn into i. Things are tricky with -c; [[hec]] "joke" (hard masculine) has ins_pl 'hecy',
-- but [[paňáca]] "jester, fop" has ins_pl 'paňáci'. We have to set a flag to indicate whether to allow y after
-- c. This needs to proceed depalatalization of paired palatal consonants in the case of e.g. [[říďa]]
-- "principal, headmaster", with instrumental plural 'řídi' (říďy -> říďi -> řídi).
if rfind(ending, "^y") and (rfind(stem, export.inherently_soft_not_c_c .. "$") or
not base.hard_c and rfind(stem, "[cC]$")) then
ending = rsub(ending, "^y", "i")
end
-- Convert ňe and ňě -> ně. Convert nE and ňE -> ne. Convert ňi and ni -> ni.
stem, ending = export.convert_paired_palatal_to_plain(stem, ending)
-- We specify endings with -e/ě using ě, but some consonants cannot be followed by ě; convert to plain e.
if rfind(ending, "^ě") and not rfind(stem, export.followable_by_e_hacek_c .. "$") then
ending = rsub(ending, "^ě", "e")
end
if base.all_uppercase then
stem = uupper(stem)
end
if base.collapse_ee and rfind(ending, "^e") and rfind(stem, "e$") then
-- Two e's should maybe collapse to one; occurs in [[Sofokles]] stem 'Sofokle-' voc 'Sofokle' not '#Sofoklee'; also
-- in terms like [[Pete]], [[Mike]], [[Gable]] with silent -e that's kept in the stem except before an ending in -e.
-- But not in [[Prométheus]], with voc. 'Prométhee'.
return stem:gsub("e$", "") .. ending
else
return stem .. ending
end
end
end
return export
r36qr864imj55c3vi6kwxzlpqpslff1
geometriaj
0
2358199
5759398
2026-09-01T06:52:05Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759398
wikitext
text/x-wiki
== ภาษาเอสเปรันโต ==
=== คำคุณศัพท์ ===
{{eo-head}}
# {{eo-form of|geometri|aj}}
kntkv1tguae1uzakzaz4wnhrzhmy8qd
geometriajn
0
2358200
5759399
2026-09-01T06:52:09Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759399
wikitext
text/x-wiki
== ภาษาเอสเปรันโต ==
=== คำคุณศัพท์ ===
{{eo-head}}
# {{eo-form of|geometri|ajn}}
7m3v0bs96sc517eo55ae20l03t657bo
geometriák
0
2358201
5759400
2026-09-01T06:52:20Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759400
wikitext
text/x-wiki
== ภาษาฮังการี ==
=== รากศัพท์ ===
{{affix|hu|geometria|-k|nocat=y}}
=== การออกเสียง ===
* {{hu-IPA}}
* {{hyphenation|hu|ge|o|met|ri|ák}}
=== คำนาม ===
{{head|hu|รูปนาม}}
# {{inflection of|hu|geometria||nom|p}}
g2si9ty9hwqqib9r7jg5ffp1cb82s5q
mértan
0
2358202
5759401
2026-09-01T06:52:59Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759401
wikitext
text/x-wiki
== ภาษาฮังการี ==
{{swp|hu:}}
=== รากศัพท์ ===
จาก{{compound|hu|mér|tan|t1=วัด|t2=ทฤษฎี|pos=คำนาม}} {{hu-langref}}<ref>{{R:TotfalusiNagyEty 2001}}</ref>
=== การออกเสียง ===
* {{hu-IPA}}
* {{hyphenation|hu|mér|tan}}
* {{rhymes|hu|ɒn|s=2}}
=== คำนาม ===
{{hu-noun|ok}}
# [[เรขาคณิต]]
#: {{syn|hu|geometria}}
==== การผันรูป ====
{{hu-infl-nom|mértano|o|-}}{{hu-pos-otok|mértan||ai}}
==== ลูกคำ ====
{{col4|hu
|mértani
}}
{{col4|hu|title=Compound words
|mértankönyv
|mértanlecke
|mértanóra
|mértantanár
|síkmértan
|szögmértan
|térmértan
|testmértan
}}
=== อ้างอิง ===
{{reflist}}
=== อ่านเพิ่ม ===
* {{R:ErtSz}}
{{topics|hu|เรขาคณิต}}
jnx5kq7ro5b858gxoqs8hbrmmgpvqid
5759403
5759401
2026-09-01T06:54:00Z
Octahedron80
267
/* รากศัพท์ */
5759403
wikitext
text/x-wiki
== ภาษาฮังการี ==
{{swp|hu:}}
=== รากศัพท์ ===
จาก{{compound|hu|mér|tan|t1=วัด|t2=ทฤษฎี|pos=คำนาม}}; {{hu-langref}}<ref>{{R:TotfalusiNagyEty 2001}}</ref>
=== การออกเสียง ===
* {{hu-IPA}}
* {{hyphenation|hu|mér|tan}}
* {{rhymes|hu|ɒn|s=2}}
=== คำนาม ===
{{hu-noun|ok}}
# [[เรขาคณิต]]
#: {{syn|hu|geometria}}
==== การผันรูป ====
{{hu-infl-nom|mértano|o|-}}{{hu-pos-otok|mértan||ai}}
==== ลูกคำ ====
{{col4|hu
|mértani
}}
{{col4|hu|title=Compound words
|mértankönyv
|mértanlecke
|mértanóra
|mértantanár
|síkmértan
|szögmértan
|térmértan
|testmértan
}}
=== อ้างอิง ===
{{reflist}}
=== อ่านเพิ่ม ===
* {{R:ErtSz}}
{{topics|hu|เรขาคณิต}}
ht3pkaj4c05eesvuwhyuu69lz6enldf
mértanok
0
2358203
5759402
2026-09-01T06:53:29Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759402
wikitext
text/x-wiki
== ภาษาฮังการี ==
=== รากศัพท์ ===
{{affix|hu|mértan|-ok|pos2=ปัจจัยพหูพจน์|nocat=y}}
=== การออกเสียง ===
* {{hu-IPA}}
* {{hyphenation|hu|mér|ta|nok}}
=== คำนาม ===
{{head|hu|รูปนาม}}
# {{inflection of|hu|mértan||nom|p}}
6o5jtg2nko8pzl3hbhwddafvdy4mltz
geomètric
0
2358204
5759404
2026-09-01T06:54:31Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759404
wikitext
text/x-wiki
== ภาษากาตาลา ==
=== รากศัพท์ ===
{{ety|ca|:bor|la:geōmētricus}}
{{bor+|ca|la|geōmētricus}}.
=== การออกเสียง ===
* {{audio|ca|LL-Q7026 (cat)-Marvives-geomètric.wav|a=Barcelona}}
=== คำคุณศัพท์ ===
{{ca-adj}}
# เชิง[[เรขาคณิต]]
==== ลูกคำ ====
* {{l|ca|geomètricament}}
==== คำเกี่ยวข้อง ====
* {{l|ca|geometria}}
=== อ่านเพิ่ม ===
* {{R:ca:IEC2}}
* {{R:ca:GDLC}}
* {{R:ca:DNV}}
* {{R:ca:DCVB}}
5xa8ggznht822o1knje02ukkfk3h18j
5759405
5759404
2026-09-01T06:54:38Z
Octahedron80
267
/* รากศัพท์ */
5759405
wikitext
text/x-wiki
== ภาษากาตาลา ==
=== รากศัพท์ ===
{{ety|ca|:bor|la:geōmētricus}}
{{bor+|ca|la|geōmētricus}}
=== การออกเสียง ===
* {{audio|ca|LL-Q7026 (cat)-Marvives-geomètric.wav|a=Barcelona}}
=== คำคุณศัพท์ ===
{{ca-adj}}
# เชิง[[เรขาคณิต]]
==== ลูกคำ ====
* {{l|ca|geomètricament}}
==== คำเกี่ยวข้อง ====
* {{l|ca|geometria}}
=== อ่านเพิ่ม ===
* {{R:ca:IEC2}}
* {{R:ca:GDLC}}
* {{R:ca:DNV}}
* {{R:ca:DCVB}}
9rwzvwkhu7ayxb0tkehfh20b92k2fsk
geomètrica
0
2358205
5759406
2026-09-01T06:54:48Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759406
wikitext
text/x-wiki
== ภาษากาตาลา ==
=== คำคุณศัพท์ ===
{{head|ca|รูปคุณศัพท์}}
# {{feminine singular of|ca|geomètric}}
53tzpd8vvn859u6pgwpn6r2z0ab2tle
geomètrics
0
2358206
5759407
2026-09-01T06:54:52Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759407
wikitext
text/x-wiki
== ภาษากาตาลา ==
=== คำคุณศัพท์ ===
{{head|ca|รูปคุณศัพท์}}
# {{masculine plural of|ca|geomètric}}
ieeecjjt5c61qng41t4blofsmo1xnci
geomètriques
0
2358207
5759408
2026-09-01T06:54:55Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759408
wikitext
text/x-wiki
== ภาษากาตาลา ==
=== คำคุณศัพท์ ===
{{head|ca|รูปคุณศัพท์}}
# {{feminine plural of|ca|geomètric}}
58iw0wwtf0og8opsusat1yny9l6njhz
geometrisch
0
2358208
5759409
2026-09-01T06:56:11Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759409
wikitext
text/x-wiki
== ภาษาดัตช์ ==
=== รากศัพท์ ===
จาก{{suffix|nl|geometrie|isch}}
=== การออกเสียง ===
* {{IPA|nl|/ˌɣeː.oːˈmeː.tris/}}
* {{audio|nl|Nl-geometrisch.ogg}}
* {{hyphenation|nl|geo|me|trisch}}
=== คำคุณศัพท์ ===
{{nl-adj|-}}
# เชิง[[เรขาคณิต]]
#: {{syn|nl|meetkundig}}
==== การผันรูป ====
{{nl-decl-adj||-}}
== ภาษาเยอรมัน ==
=== รากศัพท์ ===
{{suffix|de|Geometrie|isch}} หรือ {{prefix|de|geo|metrisch}}
=== การออกเสียง ===
* {{audio|de|De-geometrisch.ogg|a=<<Germany>> (<<Berlin>>)}}
=== คำคุณศัพท์ ===
{{de-adj}}
# เชิง[[เรขาคณิต]]
==== การผันรูป ====
{{de-adecl}}
=== อ่านเพิ่ม ===
* {{R:de:DWDS}}
* {{R:de:UniLeipzig}}
aveomo9q6us7hgh7amgrbhru9l5zxky
geometrischer
0
2358209
5759410
2026-09-01T06:56:52Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759410
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
=== การออกเสียง ===
* {{audio|de|De-geometrischer.ogg|a=<<Germany>> (<<Berlin>>)}}
=== คำคุณศัพท์ ===
{{head|de|รูปคุณศัพท์}}
# {{de-adj form of|geometrisch}}
3a3sg6gk14h37237simkp7cqx7szi9z
meetkundig
0
2358210
5759411
2026-09-01T06:57:42Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759411
wikitext
text/x-wiki
== ภาษาดัตช์ ==
=== รากศัพท์ ===
จาก{{suffix|nl|meetkunde|ig}}
=== การออกเสียง ===
* {{IPA|nl|/ˌmeːtˈkʏn.dəx/}}
* {{audio|nl|Nl-meetkundig.ogg}}
* {{hyphenation|nl|meet|kun|dig}}
=== คำคุณศัพท์ ===
{{nl-adj|-}}
# เชิง[[เรขาคณิต]] {{defdate|from 17th c.}}
==== การผันรูป ====
{{nl-decl-adj||-}}
==== ลูกคำ ====
* {{l|nl|meetkundige}}
==== คำสืบทอด ====
* {{desc|af|meetkundig}}
== ภาษาอาฟรีกานส์ ==
=== รากศัพท์ ===
จาก{{inh|af|nl|meetkundig}}; เทียบเท่า {{suffix|af|meetkunde|ig}}
=== การออกเสียง ===
* {{IPA|af|/ˌmɪə̯tˈkœn.dəχ/}}
=== คำคุณศัพท์ ===
{{af-adj||-}}
# เชิง[[เรขาคณิต]]
cmxttwj0dzksryvv06mbb6jr5f218dh
Geometrie
0
2358211
5759412
2026-09-01T06:58:43Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759412
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
{{wp|de:}}
=== การออกเสียง ===
* {{IPA|de|/ɡeomeˈtʁiː/}}
* {{audio|de|De-Geometrie.ogg|a=<<Germany>> (<<Berlin>>)}}
=== คำนาม ===
{{de-noun|f}}
# {{lb|de|mathematics}} [[เรขาคณิต]]
==== การผันรูป ====
{{de-ndecl|f}}
=== อ่านเพิ่ม ===
* {{R:de:Duden}}
* {{R:de:DWDS}}
07vcph9jh3u6mc6h8wl47zp8edlnmas
geometrical
0
2358212
5759413
2026-09-01T07:03:55Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759413
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{ety|en|:af|geometric|-al|text=+|tree=1}}
=== การออกเสียง ===
* {{IPA|en|/ˌd͡ʒi.oʊˈmɛt.ɹɪk.əl/|/ˌd͡ʒi.əˈmɛt.ɹɪk.əl/}}
* {{audio|en|LL-Q1860 (eng)-AnotherFriendlyHuman-geometrical.wav|a=US}}
=== คำคุณศัพท์ ===
{{en-adj}}
# เกี่ยวกับหรือเกี่ยวข้องกับ[[เรขาคณิต]]; เชิงเรขาคณิต
#* {{RQ:Swift Gulliver|part=III|page=26|passage=Their Ideas are perpetually converſant in Lines and Figures. If they would, for example, praiſe the Beauty of a Woman, or any other Animal, they deſcribe it by Rhombs, Circles, Parallelograms, Ellipſes, and other '''Geometrical''' Terms, or by Words of Art drawn from Muſick, needleſs here to repeat.|translation=ความคิดของพวกเขาวนเวียนอยู่กับเส้นและรูปทรงอยู่ตลอดเวลา ตัวอย่างเช่น หากพวกเขาต้องการจะสรรเสริญความงามของผู้หญิงหรือสัตว์อื่นใด พวกเขาจะบรรยายมันด้วยรูปสขนมเปียกปูน วงกลม รูปสี่เหลี่ยมด้านขนาน รูปวงรี และคำศัพท์ทางเรขาคณิตอื่น ๆ หรือด้วยคำศัพท์ทางศิลปะที่ดึงมาจากดนตรี ซึ่งไม่จำเป็นต้องกล่าวซ้ำในที่นี้}}
# {{lb|en|ใช้ลวดลาย}} ประกอบด้วย[[เส้น]]และ[[รูปทรง]]ง่าย ๆ
# {{lb|en|ใช้กับบันได}} มี[[ขั้น]][[บันได]]ที่[[รองรับ]]ด้วย[[ผนัง]]เพียงด้านเดียว
==== ลูกคำ ====
{{col|en|ageometrical
|chronogeometrical
|crystallogeometrical
|geometrical pace
|geometrical progression
|hypergeometrical
|metageometrical
|nongeometrical
|ungeometrical
}}
==== คำแปลภาษาอื่น ====
{{trans-see|geometric}}
mcre54cr7nqaevn5bshhzko4rxcelq5
5759415
5759413
2026-09-01T07:05:05Z
Octahedron80
267
/* คำคุณศัพท์ */
5759415
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{ety|en|:af|geometric|-al|text=+|tree=1}}
=== การออกเสียง ===
* {{IPA|en|/ˌd͡ʒi.oʊˈmɛt.ɹɪk.əl/|/ˌd͡ʒi.əˈmɛt.ɹɪk.əl/}}
* {{audio|en|LL-Q1860 (eng)-AnotherFriendlyHuman-geometrical.wav|a=US}}
=== คำคุณศัพท์ ===
{{en-adj}}
# เกี่ยวกับหรือเกี่ยวข้องกับ[[เรขาคณิต]]; เชิงเรขาคณิต
#* {{RQ:Swift Gulliver|part=III|page=26|passage=Their Ideas are perpetually converſant in Lines and Figures. If they would, for example, praiſe the Beauty of a Woman, or any other Animal, they deſcribe it by Rhombs, Circles, Parallelograms, Ellipſes, and other '''Geometrical''' Terms, or by Words of Art drawn from Muſick, needleſs here to repeat.|translation=ความคิดของพวกเขาวนเวียนอยู่กับเส้นและรูปทรงอยู่ตลอดเวลา ตัวอย่างเช่น หากพวกเขาต้องการจะสรรเสริญความงามของผู้หญิงหรือสัตว์อื่นใด พวกเขาจะบรรยายมันด้วยรูปสี่เหลี่ยมขนมเปียกปูน วงกลม รูปสี่เหลี่ยมด้านขนาน รูปวงรี และคำศัพท์ทางเรขาคณิตอื่น ๆ หรือด้วยคำศัพท์ทางศิลปะที่ดึงมาจากดนตรี ซึ่งไม่จำเป็นต้องกล่าวซ้ำในที่นี้}}
# {{lb|en|ใช้ลวดลาย}} ประกอบด้วย[[เส้น]]และ[[รูปทรง]]ง่าย ๆ
# {{lb|en|ใช้กับบันได}} มี[[ขั้น]][[บันได]]ที่[[รองรับ]]ด้วย[[ผนัง]]เพียงด้านเดียว
==== ลูกคำ ====
{{col|en|ageometrical
|chronogeometrical
|crystallogeometrical
|geometrical pace
|geometrical progression
|hypergeometrical
|metageometrical
|nongeometrical
|ungeometrical
}}
==== คำแปลภาษาอื่น ====
{{trans-see|geometric}}
r8b8onyh7ataqzffhnpcwwprfqgel1q
5759416
5759415
2026-09-01T07:05:44Z
Octahedron80
267
/* คำคุณศัพท์ */
5759416
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{ety|en|:af|geometric|-al|text=+|tree=1}}
=== การออกเสียง ===
* {{IPA|en|/ˌd͡ʒi.oʊˈmɛt.ɹɪk.əl/|/ˌd͡ʒi.əˈmɛt.ɹɪk.əl/}}
* {{audio|en|LL-Q1860 (eng)-AnotherFriendlyHuman-geometrical.wav|a=US}}
=== คำคุณศัพท์ ===
{{en-adj}}
# เกี่ยวกับหรือเกี่ยวข้องกับ[[เรขาคณิต]]; เชิงเรขาคณิต
#* {{RQ:Swift Gulliver|part=III|page=26|passage=Their Ideas are perpetually converſant in Lines and Figures. If they would, for example, praiſe the Beauty of a Woman, or any other Animal, they deſcribe it by Rhombs, Circles, Parallelograms, Ellipſes, and other '''Geometrical''' Terms, or by Words of Art drawn from Muſick, needleſs here to repeat.|translation=ความคิดของพวกเขาวนเวียนอยู่กับเส้นและรูปทรงอยู่ตลอดเวลา ตัวอย่างเช่น หากพวกเขาต้องการจะสรรเสริญความงามของผู้หญิงหรือสัตว์อื่นใด พวกเขาจะบรรยายมันด้วยรูปสี่เหลี่ยมขนมเปียกปูน วงกลม รูปสี่เหลี่ยมด้านขนาน รูปวงรี และคำศัพท์ทางเรขาคณิตอื่น ๆ หรือด้วยคำศัพท์ทางศิลปะที่ดึงมาจากดนตรี ซึ่งไม่จำเป็นต้องกล่าวซ้ำในที่นี้}}
# {{lb|en|ใช้กับลวดลาย}} ประกอบด้วย[[เส้น]]และ[[รูปทรง]]ง่าย ๆ
# {{lb|en|ใช้กับบันได}} มี[[ขั้น]][[บันได]]ที่[[รองรับ]]ด้วย[[ผนัง]]เพียงด้านเดียว
==== ลูกคำ ====
{{col|en|ageometrical
|chronogeometrical
|crystallogeometrical
|geometrical pace
|geometrical progression
|hypergeometrical
|metageometrical
|nongeometrical
|ungeometrical
}}
==== คำแปลภาษาอื่น ====
{{trans-see|geometric}}
njvsmp83towufrnwr5zmp8xaucljfh8
geometric
0
2358213
5759417
2026-09-01T07:09:07Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759417
wikitext
text/x-wiki
== ภาษาโรมาเนีย ==
=== รากศัพท์ ===
{{bor+|ro|fr|géométrique}}, จาก{{der|ro|la|geometricus}}; {{surf|ro|geometrie|-ic}}
=== การออกเสียง ===
* {{IPA|ro|/ˌd͡ʒe.oˈme.trik/}}
=== คำคุณศัพท์ ===
{{ro-adj}}
# เชิง[[เรขาคณิต]]
==== การผันรูป ====
{{ro-decl-adj}}
=== อ่านเพิ่ม ===
* {{R:DEX}}
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
จาก{{bor|en|la|geōmetricus}}, จาก{{der|en|grc|γεωμετρικός}}, จาก{{m|grc|γεωμέτρης}}. {{surf|en|geometer|-ic}} หรือ {{affix|en|geo-|-metric}}
=== การออกเสียง ===
* {{IPA|en|/ˌd͡ʒiː.əʊˈmɛt.ɹɪk/|/ˌd͡ʒiː.əˈmɛt.ɹɪk/|a=RP}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-geometric.wav|a=Southern England}}
* {{IPA|en|/ˌd͡ʒi.oʊˈmɛt.ɹɪk/|/ˌd͡ʒi.əˈmɛt.ɹɪk/|a=GA,CA}}
** {{audio|en|LL-Q1860 (eng)-Wodencafe-geometric.wav|a=Texas}}
* {{IPA|en|/ˌd͡ʒiː.əˈmet.ɹɪk/|a=AU}}
* {{IPA|en|/ˌd͡ʒiː.əˈmet.ɹək/|a=NZ}}
=== คำคุณศัพท์ ===
{{en-adj}}
# เกี่ยวกับหรือเกี่ยวข้องกับ[[เรขาคณิต]]; เชิง[[เรขาคณิต]]
#: {{usex|en|The architect used '''geometric''' techniques to design her home.|translation=สถาปนิกใช้เทคนิคทางเรขาคณิตในการออกแบบบ้านของเธอ}}
#* {{RQ:Butler Hudibras|year=1905|1|6|In ''Mathematicks'' he was greater / Than ''{{w|Tycho Brahe}}'', or ''[[w:Erra-Pater|Erra Pater]]'' : / For he, by '''Geometrick''' scale, / Could take the size of ''Pots of Ale'' ; / Resolve by Signs and Tangents streight, / If ''Bread'' or ''Butter'' wanted weight; / And wisely tell what hour o’th’ day / The Clock doth strike, by ''Algebra.''|translation=ในวิชาคณิตศาสตร์เขายิ่งใหญ่กว่าไทโค บราเฮ หรือเออร์รา แพเทอร์: เพราะด้วยสเกลทางเรขาคณิต เขา konnte สามารถวัดขนาดของเหยือกเอลได้; แก้ปัญหาด้วยเครื่องหมายและแทนเจนต์ได้ทันที ว่าขนมปังหรือเนยน้ำหนักขาดไปเท่าใด; และบอกได้อย่างชาญฉลาดว่านาฬิกาตีบอกเวลาชั่วโมงใดของวันด้วยพีชคณิต}}
#* {{quote-journal|en|year=1990|author=Stamos Metzidakis|title=The Utopian Vision of French Criticism|journal=Symposium: A Quarterly Journal in Modern Literatures|volume=44|number=3|doi=10.1080/00397709.1990.10733714|page=195|passage=This does not mean that the French, works, composed by rational minds (''de l’esprit'') are totally devoid of any value or cultural significance. But Madame de Staël obviously prefers what she considers to be the imaginative workings of the German mind to the '''geometric''' and analytical penchants of the French mind.|translation=นี่ไม่ได้หมายความว่าผลงานของฝรั่งเศส ซึ่งประพันธ์ขึ้นโดยจิตใจที่มีเหตุผล (de l’esprit) นั้นปราศจากคุณค่าหรือความสำคัญทางวัฒนธรรมโดยสิ้นเชิง แต่มาดาม เดอ สตอเอล เห็นได้ชัดว่าชอบสิ่งที่เธอมองว่าเป็นกระบวนการทำงานอันเปี่ยมด้วยจินตนาการของจิตใจชาวเยอรมัน มากกว่าความโน้มเอียงเชิงเรขาคณิตและเชิงวิเคราะห์ของจิตใจชาวฝรั่งเศส}}
# [[เพิ่มขึ้น]]หรือ[[ลดลง]]ใน[[อนุกรมเรขาคณิต]]
#: {{cot|en|arithmetic|exponential}}
#: {{usex|en|Bacteria exhibit '''geometric''' increase in numbers when the environment is not limiting.|translation=แบคทีเรียแสดงการเพิ่มขึ้นแบบเรขาคณิตในด้านจำนวนเมื่อสภาพแวดล้อมไม่จำกัด}}
#* {{quote-journal|en|date=1990-04-21|author=w:Flora Lewis|title=Tide Reaching Africa|journal=w:The New York Times|page=23|pageurl=https://timesmachine.nytimes.com/timesmachine/1990/04/21/440690.html?login=email&pageNumber=23|passage=The men around the table were by no means dissidents, but neither can they turn their countries around on their own. Of course, the vast problems in Africa cannot be solved by African policies alone. Poverty breeds poverty by '''geometric''' progression.|translation=บรรดาชายรอบโต๊ะอาหารไม่ได้เป็นผู้เห็นต่างแต่อย่างใด แต่พวกเขาก็ไม่สามารถพลิกฟื้นประเทศของตนได้ด้วยลำพังเช่นกัน แน่นอนว่าปัญหาอันใหญ่หลวงในแอฟริกาไม่สามารถแก้ไขได้ด้วยนโยบายของแอฟริกาเพียงลำพัง ความยากจนย่อมผลิตซ้ำความยากจนด้วยความก้าวหน้า[[แบบเรขาคณิต]]}}
# ซึ่งใช้[[รูปทรง]]ง่าย ๆ เช่น[[วงกลม]], [[สามเหลี่ยม]]{{,}} และ[[เส้น]]ในวัตถุ[[ตกแต่ง]]
#: {{usex|en|The building's profile was strikingly '''geometric'''.|translation=โครงร่างของอาคารมีความโดดเด่นในแบบเรขาคณิตอย่างมาก}}
#* {{quote-journal|en|date=2022 March 23|author=Stefanie Foster|title=Updated designs unveiled for HS2's Euston Station|journal=RAIL|issue=953|page=22|text=A bold '''geometric''' roof design is planned to allow natural light to flood onto the station concourse.|translation=มีการวางแผนการออกแบบหลังคา[[เชิงเรขาคณิต]]ที่โดดเด่นเพื่อให้แสงธรรมชาติส่องเข้ามาท่วมท้นบริเวณโถงผู้โดยสารของสถานี}}
==== คำพ้องความ ====
* {{sense|เชิงเรขาคณิต}} {{l|en|geometrical}}
* {{sense|ซึ่งใช้รูปทรงง่าย ๆ}} {{l|en|geometrical}}
==== ลูกคำ ====
{{col4|en|geometric growth|geometric abstraction
|arithmetic-geometric mean|geometric analysis|geometric isomer|geometric isomerism|geometric lathe|geometric multiplicity|geometric pen|geometric square|geometric topologist|geometric tortoise|arithmetico-geometric
|geometric algorithm
|geometric centroid
|geometric congruence|ageometric|chronogeometric|geomagic square|geometrician|geometricity|geometricization|geometricize|geon|hypergeometric|kinogeometric|macrogeometric|metageometric|microgeometric|morphogeometric|protogeometric|supergeometric|ungeometric
|geometric construction
|geometric correlation
|geometric distribution
|geometric dual graph
|geometric homology
|geometric invariant
|geometric mean
|geometric mean index
|geometric modeling
|geometric probability
|geometric progression
|geometric sequence
|geometric shape
|geometric series
|isogeometric
|nongeometric
|quasigeometric
|semigeometric
}}
==== คำเกี่ยวข้อง ====
* {{l|en|geometer}}
* {{l|en|geometrical}}
* {{l|en|geometrically}}
* {{l|en|geometry}}
== ภาษาอุตซิตา ==
=== รากศัพท์ ===
{{rfe|oc}}
=== การออกเสียง ===
{{rfp|oc}}
=== คำคุณศัพท์ ===
{{oc-adj}}
# เชิง[[เรขาคณิต]]
=== อ่านเพิ่ม ===
* {{R:oc-lan:DGLO|348}}
fq6ggwgrlsay5w1t7hhokj8tp6xcadz
5759418
5759417
2026-09-01T07:10:01Z
Octahedron80
267
/* คำคุณศัพท์ */
5759418
wikitext
text/x-wiki
== ภาษาโรมาเนีย ==
=== รากศัพท์ ===
{{bor+|ro|fr|géométrique}}, จาก{{der|ro|la|geometricus}}; {{surf|ro|geometrie|-ic}}
=== การออกเสียง ===
* {{IPA|ro|/ˌd͡ʒe.oˈme.trik/}}
=== คำคุณศัพท์ ===
{{ro-adj}}
# เชิง[[เรขาคณิต]]
==== การผันรูป ====
{{ro-decl-adj}}
=== อ่านเพิ่ม ===
* {{R:DEX}}
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
จาก{{bor|en|la|geōmetricus}}, จาก{{der|en|grc|γεωμετρικός}}, จาก{{m|grc|γεωμέτρης}}. {{surf|en|geometer|-ic}} หรือ {{affix|en|geo-|-metric}}
=== การออกเสียง ===
* {{IPA|en|/ˌd͡ʒiː.əʊˈmɛt.ɹɪk/|/ˌd͡ʒiː.əˈmɛt.ɹɪk/|a=RP}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-geometric.wav|a=Southern England}}
* {{IPA|en|/ˌd͡ʒi.oʊˈmɛt.ɹɪk/|/ˌd͡ʒi.əˈmɛt.ɹɪk/|a=GA,CA}}
** {{audio|en|LL-Q1860 (eng)-Wodencafe-geometric.wav|a=Texas}}
* {{IPA|en|/ˌd͡ʒiː.əˈmet.ɹɪk/|a=AU}}
* {{IPA|en|/ˌd͡ʒiː.əˈmet.ɹək/|a=NZ}}
=== คำคุณศัพท์ ===
{{en-adj}}
# เกี่ยวกับหรือเกี่ยวข้องกับ[[เรขาคณิต]]; เชิง[[เรขาคณิต]]
#: {{usex|en|The architect used '''geometric''' techniques to design her home.|translation=สถาปนิกใช้เทคนิคทางเรขาคณิตในการออกแบบบ้านของเธอ}}
#* {{RQ:Butler Hudibras|year=1905|1|6|In ''Mathematicks'' he was greater / Than ''{{w|Tycho Brahe}}'', or ''[[w:Erra-Pater|Erra Pater]]'' : / For he, by '''Geometrick''' scale, / Could take the size of ''Pots of Ale'' ; / Resolve by Signs and Tangents streight, / If ''Bread'' or ''Butter'' wanted weight; / And wisely tell what hour o’th’ day / The Clock doth strike, by ''Algebra.''|translation=ในวิชาคณิตศาสตร์เขายิ่งใหญ่กว่าไทโค บราเฮ หรือเออร์รา แพเทอร์: เพราะด้วยสเกลทางเรขาคณิต เขา konnte สามารถวัดขนาดของเหยือกเอลได้; แก้ปัญหาด้วยเครื่องหมายและแทนเจนต์ได้ทันที ว่าขนมปังหรือเนยน้ำหนักขาดไปเท่าใด; และบอกได้อย่างชาญฉลาดว่านาฬิกาตีบอกเวลาชั่วโมงใดของวันด้วยพีชคณิต}}
#* {{quote-journal|en|year=1990|author=Stamos Metzidakis|title=The Utopian Vision of French Criticism|journal=Symposium: A Quarterly Journal in Modern Literatures|volume=44|number=3|doi=10.1080/00397709.1990.10733714|page=195|passage=This does not mean that the French, works, composed by rational minds (''de l’esprit'') are totally devoid of any value or cultural significance. But Madame de Staël obviously prefers what she considers to be the imaginative workings of the German mind to the '''geometric''' and analytical penchants of the French mind.|translation=นี่ไม่ได้หมายความว่าผลงานของฝรั่งเศส ซึ่งประพันธ์ขึ้นโดยจิตใจที่มีเหตุผล (de l’esprit) นั้นปราศจากคุณค่าหรือความสำคัญทางวัฒนธรรมโดยสิ้นเชิง แต่มาดาม เดอ สตอเอล เห็นได้ชัดว่าชอบสิ่งที่เธอมองว่าเป็นกระบวนการทำงานอันเปี่ยมด้วยจินตนาการของจิตใจชาวเยอรมัน มากกว่าความโน้มเอียงเชิงเรขาคณิตและเชิงวิเคราะห์ของจิตใจชาวฝรั่งเศส}}
# [[เพิ่มขึ้น]]หรือ[[ลดลง]]ใน[[อนุกรมเรขาคณิต]]
#: {{cot|en|arithmetic|exponential}}
#: {{usex|en|Bacteria exhibit '''geometric''' increase in numbers when the environment is not limiting.|translation=แบคทีเรียแสดงการเพิ่มขึ้นแบบเรขาคณิตในด้านจำนวนเมื่อสภาพแวดล้อมไม่จำกัด}}
#* {{quote-journal|en|date=1990-04-21|author=w:Flora Lewis|title=Tide Reaching Africa|journal=w:The New York Times|page=23|pageurl=https://timesmachine.nytimes.com/timesmachine/1990/04/21/440690.html?login=email&pageNumber=23|passage=The men around the table were by no means dissidents, but neither can they turn their countries around on their own. Of course, the vast problems in Africa cannot be solved by African policies alone. Poverty breeds poverty by '''geometric''' progression.|translation=บรรดาชายรอบโต๊ะอาหารไม่ได้เป็นผู้เห็นต่างแต่อย่างใด แต่พวกเขาก็ไม่สามารถพลิกฟื้นประเทศของตนได้ด้วยลำพังเช่นกัน แน่นอนว่าปัญหาอันใหญ่หลวงในแอฟริกาไม่สามารถแก้ไขได้ด้วยนโยบายของแอฟริกาเพียงลำพัง ความยากจนย่อมผลิตซ้ำความยากจนด้วยความก้าวหน้าแบบเรขาคณิต}}
# ซึ่งใช้[[รูปทรง]]ง่าย ๆ เช่น[[วงกลม]], [[สามเหลี่ยม]]{{,}} และ[[เส้น]]ในวัตถุ[[ตกแต่ง]]
#: {{usex|en|The building's profile was strikingly '''geometric'''.|translation=โครงร่างของอาคารมีความโดดเด่นในแบบเรขาคณิตอย่างมาก}}
#* {{quote-journal|en|date=2022 March 23|author=Stefanie Foster|title=Updated designs unveiled for HS2's Euston Station|journal=RAIL|issue=953|page=22|text=A bold '''geometric''' roof design is planned to allow natural light to flood onto the station concourse.|translation=มีการวางแผนการออกแบบหลังคาเชิงเรขาคณิตที่โดดเด่นเพื่อให้แสงธรรมชาติส่องเข้ามาท่วมท้นบริเวณโถงผู้โดยสารของสถานี}}
==== คำพ้องความ ====
* {{sense|เชิงเรขาคณิต}} {{l|en|geometrical}}
* {{sense|ซึ่งใช้รูปทรงง่าย ๆ}} {{l|en|geometrical}}
==== ลูกคำ ====
{{col4|en|geometric growth|geometric abstraction
|arithmetic-geometric mean|geometric analysis|geometric isomer|geometric isomerism|geometric lathe|geometric multiplicity|geometric pen|geometric square|geometric topologist|geometric tortoise|arithmetico-geometric
|geometric algorithm
|geometric centroid
|geometric congruence|ageometric|chronogeometric|geomagic square|geometrician|geometricity|geometricization|geometricize|geon|hypergeometric|kinogeometric|macrogeometric|metageometric|microgeometric|morphogeometric|protogeometric|supergeometric|ungeometric
|geometric construction
|geometric correlation
|geometric distribution
|geometric dual graph
|geometric homology
|geometric invariant
|geometric mean
|geometric mean index
|geometric modeling
|geometric probability
|geometric progression
|geometric sequence
|geometric shape
|geometric series
|isogeometric
|nongeometric
|quasigeometric
|semigeometric
}}
==== คำเกี่ยวข้อง ====
* {{l|en|geometer}}
* {{l|en|geometrical}}
* {{l|en|geometrically}}
* {{l|en|geometry}}
== ภาษาอุตซิตา ==
=== รากศัพท์ ===
{{rfe|oc}}
=== การออกเสียง ===
{{rfp|oc}}
=== คำคุณศัพท์ ===
{{oc-adj}}
# เชิง[[เรขาคณิต]]
=== อ่านเพิ่ม ===
* {{R:oc-lan:DGLO|348}}
gx9vx18pr1ri9g0o0bsc95wotlbwmeo
5759421
5759418
2026-09-01T09:43:06Z
Octahedron80
267
/* รากศัพท์ */
5759421
wikitext
text/x-wiki
== ภาษาโรมาเนีย ==
=== รากศัพท์ ===
{{bor+|ro|fr|géométrique}}, จาก{{der|ro|la|geometricus}}; {{surf|ro|geometrie|-ic}}
=== การออกเสียง ===
* {{IPA|ro|/ˌd͡ʒe.oˈme.trik/}}
=== คำคุณศัพท์ ===
{{ro-adj}}
# เชิง[[เรขาคณิต]]
==== การผันรูป ====
{{ro-decl-adj}}
=== อ่านเพิ่ม ===
* {{R:DEX}}
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
จาก{{bor|en|la|geōmetricus}}, จาก{{der|en|grc|γεωμετρικός}}, จาก{{m|grc|γεωμέτρης}}; {{surf|en|geometer|-ic}} หรือ {{affix|en|geo-|-metric}}
=== การออกเสียง ===
* {{IPA|en|/ˌd͡ʒiː.əʊˈmɛt.ɹɪk/|/ˌd͡ʒiː.əˈmɛt.ɹɪk/|a=RP}}
** {{audio|en|LL-Q1860 (eng)-Vealhurl-geometric.wav|a=Southern England}}
* {{IPA|en|/ˌd͡ʒi.oʊˈmɛt.ɹɪk/|/ˌd͡ʒi.əˈmɛt.ɹɪk/|a=GA,CA}}
** {{audio|en|LL-Q1860 (eng)-Wodencafe-geometric.wav|a=Texas}}
* {{IPA|en|/ˌd͡ʒiː.əˈmet.ɹɪk/|a=AU}}
* {{IPA|en|/ˌd͡ʒiː.əˈmet.ɹək/|a=NZ}}
=== คำคุณศัพท์ ===
{{en-adj}}
# เกี่ยวกับหรือเกี่ยวข้องกับ[[เรขาคณิต]]; เชิง[[เรขาคณิต]]
#: {{usex|en|The architect used '''geometric''' techniques to design her home.|translation=สถาปนิกใช้เทคนิคทางเรขาคณิตในการออกแบบบ้านของเธอ}}
#* {{RQ:Butler Hudibras|year=1905|1|6|In ''Mathematicks'' he was greater / Than ''{{w|Tycho Brahe}}'', or ''[[w:Erra-Pater|Erra Pater]]'' : / For he, by '''Geometrick''' scale, / Could take the size of ''Pots of Ale'' ; / Resolve by Signs and Tangents streight, / If ''Bread'' or ''Butter'' wanted weight; / And wisely tell what hour o’th’ day / The Clock doth strike, by ''Algebra.''|translation=ในวิชาคณิตศาสตร์เขายิ่งใหญ่กว่าไทโค บราเฮ หรือเออร์รา แพเทอร์: เพราะด้วยสเกลทางเรขาคณิต เขา konnte สามารถวัดขนาดของเหยือกเอลได้; แก้ปัญหาด้วยเครื่องหมายและแทนเจนต์ได้ทันที ว่าขนมปังหรือเนยน้ำหนักขาดไปเท่าใด; และบอกได้อย่างชาญฉลาดว่านาฬิกาตีบอกเวลาชั่วโมงใดของวันด้วยพีชคณิต}}
#* {{quote-journal|en|year=1990|author=Stamos Metzidakis|title=The Utopian Vision of French Criticism|journal=Symposium: A Quarterly Journal in Modern Literatures|volume=44|number=3|doi=10.1080/00397709.1990.10733714|page=195|passage=This does not mean that the French, works, composed by rational minds (''de l’esprit'') are totally devoid of any value or cultural significance. But Madame de Staël obviously prefers what she considers to be the imaginative workings of the German mind to the '''geometric''' and analytical penchants of the French mind.|translation=นี่ไม่ได้หมายความว่าผลงานของฝรั่งเศส ซึ่งประพันธ์ขึ้นโดยจิตใจที่มีเหตุผล (de l’esprit) นั้นปราศจากคุณค่าหรือความสำคัญทางวัฒนธรรมโดยสิ้นเชิง แต่มาดาม เดอ สตอเอล เห็นได้ชัดว่าชอบสิ่งที่เธอมองว่าเป็นกระบวนการทำงานอันเปี่ยมด้วยจินตนาการของจิตใจชาวเยอรมัน มากกว่าความโน้มเอียงเชิงเรขาคณิตและเชิงวิเคราะห์ของจิตใจชาวฝรั่งเศส}}
# [[เพิ่มขึ้น]]หรือ[[ลดลง]]ใน[[อนุกรมเรขาคณิต]]
#: {{cot|en|arithmetic|exponential}}
#: {{usex|en|Bacteria exhibit '''geometric''' increase in numbers when the environment is not limiting.|translation=แบคทีเรียแสดงการเพิ่มขึ้นแบบเรขาคณิตในด้านจำนวนเมื่อสภาพแวดล้อมไม่จำกัด}}
#* {{quote-journal|en|date=1990-04-21|author=w:Flora Lewis|title=Tide Reaching Africa|journal=w:The New York Times|page=23|pageurl=https://timesmachine.nytimes.com/timesmachine/1990/04/21/440690.html?login=email&pageNumber=23|passage=The men around the table were by no means dissidents, but neither can they turn their countries around on their own. Of course, the vast problems in Africa cannot be solved by African policies alone. Poverty breeds poverty by '''geometric''' progression.|translation=บรรดาชายรอบโต๊ะอาหารไม่ได้เป็นผู้เห็นต่างแต่อย่างใด แต่พวกเขาก็ไม่สามารถพลิกฟื้นประเทศของตนได้ด้วยลำพังเช่นกัน แน่นอนว่าปัญหาอันใหญ่หลวงในแอฟริกาไม่สามารถแก้ไขได้ด้วยนโยบายของแอฟริกาเพียงลำพัง ความยากจนย่อมผลิตซ้ำความยากจนด้วยความก้าวหน้าแบบเรขาคณิต}}
# ซึ่งใช้[[รูปทรง]]ง่าย ๆ เช่น[[วงกลม]], [[สามเหลี่ยม]]{{,}} และ[[เส้น]]ในวัตถุ[[ตกแต่ง]]
#: {{usex|en|The building's profile was strikingly '''geometric'''.|translation=โครงร่างของอาคารมีความโดดเด่นในแบบเรขาคณิตอย่างมาก}}
#* {{quote-journal|en|date=2022 March 23|author=Stefanie Foster|title=Updated designs unveiled for HS2's Euston Station|journal=RAIL|issue=953|page=22|text=A bold '''geometric''' roof design is planned to allow natural light to flood onto the station concourse.|translation=มีการวางแผนการออกแบบหลังคาเชิงเรขาคณิตที่โดดเด่นเพื่อให้แสงธรรมชาติส่องเข้ามาท่วมท้นบริเวณโถงผู้โดยสารของสถานี}}
==== คำพ้องความ ====
* {{sense|เชิงเรขาคณิต}} {{l|en|geometrical}}
* {{sense|ซึ่งใช้รูปทรงง่าย ๆ}} {{l|en|geometrical}}
==== ลูกคำ ====
{{col4|en|geometric growth|geometric abstraction
|arithmetic-geometric mean|geometric analysis|geometric isomer|geometric isomerism|geometric lathe|geometric multiplicity|geometric pen|geometric square|geometric topologist|geometric tortoise|arithmetico-geometric
|geometric algorithm
|geometric centroid
|geometric congruence|ageometric|chronogeometric|geomagic square|geometrician|geometricity|geometricization|geometricize|geon|hypergeometric|kinogeometric|macrogeometric|metageometric|microgeometric|morphogeometric|protogeometric|supergeometric|ungeometric
|geometric construction
|geometric correlation
|geometric distribution
|geometric dual graph
|geometric homology
|geometric invariant
|geometric mean
|geometric mean index
|geometric modeling
|geometric probability
|geometric progression
|geometric sequence
|geometric shape
|geometric series
|isogeometric
|nongeometric
|quasigeometric
|semigeometric
}}
==== คำเกี่ยวข้อง ====
* {{l|en|geometer}}
* {{l|en|geometrical}}
* {{l|en|geometrically}}
* {{l|en|geometry}}
== ภาษาอุตซิตา ==
=== รากศัพท์ ===
{{rfe|oc}}
=== การออกเสียง ===
{{rfp|oc}}
=== คำคุณศัพท์ ===
{{oc-adj}}
# เชิง[[เรขาคณิต]]
=== อ่านเพิ่ม ===
* {{R:oc-lan:DGLO|348}}
ceoqqc6l5lks4hcw2tmp0p25aifdrd1
geometricas
0
2358214
5759419
2026-09-01T07:10:28Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759419
wikitext
text/x-wiki
== ภาษาละติน ==
=== คำคุณศัพท์ ===
{{head|la|รูปคุณศัพท์|head=geōmetricās}}
# {{inflection of|la|geōmetricus||acc|f|p}}
mcoxbbnuwyx6lyoxtmyzv1ijpi3ryk6
geometrica
0
2358215
5759420
2026-09-01T07:10:36Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759420
wikitext
text/x-wiki
== ภาษาละติน ==
=== การออกเสียง ===
* {{la-IPA|ann=1|geōmetrica}}
* {{la-IPA|ann=1|geōmetricā}}
=== คำคุณศัพท์ ===
{{head|la|รูปคุณศัพท์|head=geōmetrica}}
# {{inflection of|la|geōmetricus||nom//voc|f|s|;|nom//acc//voc|n|p}}
=== คำคุณศัพท์ ===
{{head|la|รูปคุณศัพท์|head=geōmetricā}}
# {{inflection of|la|geōmetricus||abl|f|s}}
== ภาษาอิตาลี ==
=== การออกเสียง ===
{{it-pr|^è}}
=== คำคุณศัพท์ ===
{{head|it|รูปคุณศัพท์}}
# {{adj form of|it|geometrico||f|s}}
=== คำสลับอักษร ===
* {{anagrams|it|a=aceegimort|geotermica}}
bqctm4tg62v1eeabf1b9ed74mzbuz73
geometry
0
2358216
5759422
2026-09-01T09:49:39Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759422
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{etymon|en|:inh|enm:gemetry<ety:bor<fro:geometrie<ety:der<la:geōmetria>>>>|tree=1}}
จาก{{inh|en|enm|gemetry}}, {{m|enm|geometrie}}, จาก{{der|en|fro|geometrie}} (คำสมัยใหม่ {{cog|fr|géométrie}}),<ref>{{R:MED|id=MED18350|entry=ǧēmetrī(e|pos=n}}</ref> จาก{{der|en|la|geōmetria}}, จาก{{der|en|grc|γεωμετρία||เรขาคณิต, การรังวัดที่ดิน}}, จาก{{m|grc|γεωμέτρης||นักเรขาคณิต, ผู้รังวัดที่ดิน}}, จาก{{m|grc|γῆ||ดิน, ที่ดิน, ประเทศ}} + {{m|grc|-μετρία||การวัด}}, จาก{{m|grc|μέτρον||หน่วยวัด}}; {{surf|en|geometer|-y|id2=abstract noun}} หรือ {{affix|en|geo-|-metry}}; {{doublet|en|gematria}}; แทนที่คำพื้นถิ่น {{noncog|ang|eorþcræft}}, ซึ่งแปลตรงตัวว่า "''[[งานฝีมือ]]-[[ดิน]]''"
=== การออกเสียง ===
* {{IPA|en|/d͡ʒiːˈɒm.ɪ.tɹi/|/ˈd͡ʒɒm.ɪ.tɹi/|a=RP}}
* {{IPA|en|/d͡ʒiˈɑ.mə.tɹi/|a=GA}}
** {{audio|en|En-us-geometry.ogg|a=US}}
* {{IPA|en|/d͡ʒiːˈɔm.ə.tɹi/|a=AU}}
=== คำนาม ===
{{en-noun|~}}
# {{lb|en|คณิตศาสตร์|นับไม่ได้}} [[เรขาคณิต]]
#* {{quote-book|en|year=1925|translators=David Eugene Smith; Marcia Latham|author=w:René Descartes|chapter=The Geometry of Rene Descartes|title=[1637, La Géométrie]|year_published=2007|publisher=Cosimo Classics|pageurl=https://books.google.com.au/books?id=3CQQh9fWLQgC&pg=PA2&dq=%22geometry%22%7C%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwid2o2y0K7rAhX1zTgGHSJAAQIQ6AEwKXoECFwQAg#v=onepage&q=%22geometry%22%7C%22geometries%22&f=false|page=2
|passage=ANY problem in '''geometry''' can easily be reduced to such terms that a knowledge of the lengths of certain straight lines is sufficient for its construction.|translation=ปัญหาใด ๆ ในเรขาคณิตสามารถลดรูปให้เหลือเงื่อนไขที่ว่า ความรู้เกี่ยวกับความยาวของเส้นตรงบางเส้นนั้นเพียงพอสำหรับการสร้างรูปนั้นขึ้นมาได้อย่างง่ายดาย}}
# {{lb|en|คณิตศาสตร์|มักใช้ในคำประสม|นับได้}} ระบบคณิตศาสตร์ที่จัดการเกี่ยวกับความสัมพันธ์เชิงพื้นที่และถูกสร้างขึ้นบนชุดของ[[สัจพจน์]]ชุดใดชุดหนึ่ง; [[สาขาย่อย]]ของเรขาคณิตที่จัดการเกี่ยวกับระบบดังกล่าว
#* '''1975''' [Addison-Wesley], Eugene F. Krause, ''Taxicab '''Geometry''''', 1986, Dover, [https://books.google.com.au/books?id=IW7ICV0QXWwC&pg=PA64&dq=%22geometry%22%7C%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwid2o2y0K7rAhX1zTgGHSJAAQIQ6AEwAnoECAEQAg#v=onepage&q=%22geometry%22%7C%22geometries%22&f=false page 64],
#*: {{ux|en|Entire new '''geometries''' are also suggested by real-world cities.|translation=เมืองในโลกแห่งความเป็นจริงยังเป็นสิ่งที่เสนอแนะเรขาคณิตรูปแบบใหม่ทั้งหมดอีกด้วย}}
#* {{quote-book|en|year=2004|author=Judith Cederberg|title=A Course in Modern '''Geometries'''|pageurl=https://books.google.com.au/books?id=Fo9tqL99jdMC&pg=PA1&dq=%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwiHr52T3a7rAhXMc30KHVduBqEQ6AEwAnoECAAQAg#v=onepage&q=%22geometries%22&f=false|page=1|publisher=Springer
|passage=Finite '''geometries''' were developed in the late nineteenth century, in part to demonstrate and test the axiomatic properties of ''completeness'', ''consistency'', and ''independence''.|translation=เรขาคณิตจำกัดถูกพัฒนาขึ้นในช่วงปลายคริสต์ศตวรรษที่ 19 ส่วนหนึ่งเพื่อสาธิตและทดสอบคุณสมบัติเชิงสัจพจน์ในด้านความบริบูรณ์ ความสอดคล้อง และความเป็นอิสระ}}
#* {{quote-book|en|year=2006|author=Mark Wagner|title=The '''Geometries''' of Visual Space|publisher=Lawrence Erlbaum Associates|pageurl=https://books.google.com.au/books?id=W73aOGJKdU0C&pg=PR9&dq=%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwiHr52T3a7rAhXMc30KHVduBqEQ6AEwAXoECAMQAg#v=onepage&q=%22geometries%22&f=false|page=ix
|passage=Previous theorists have often tried to test whether visual space is best described by a small set of traditional '''geometries''', such as the Euclidean '''geometry''' most of us studied in High School or the hyperbolic and spherical '''geometries''' introduced by 19<sup>th</sup>-century mathematicians.|translation=นักทฤษฎีก่อนหน้านี้มักจะพยายามทดสอบว่าพื้นที่ทางสายตาอธิบายได้ดีที่สุดด้วยชุดเรขาคณิตดั้งเดิมขนาดเล็กหรือไม่ เช่น เรขาคณิตแบบยุคลิดที่พวกเราส่วนใหญ่เรียนในโรงเรียนมัธยม หรือเรขาคณิตไฮเพอร์โบลิกและเรขาคณิตทรงกลมที่แนะนำโดยนักคณิตศาสตร์ในคริสต์ศตวรรษที่ 19}}
# {{lb|en|นับได้}} คุณลักษณะเชิงพื้นที่ที่ถูกสังเกตหรือระบุไว้ของวัตถุ ฯลฯ
#* {{quote-journal|en|passage=The inset of figure 1 shows the '''geometry''' of the samples. They are 4.6 mm long and 0.4 mm wide.|title=Observation and an Explanation of Breakdown of the Quantum Hall Effect|work=Journal of Research of the National Institute of Standards and Technology|year=1990|author=M. E. Cage|issue=1|volume=95|author2=D. Y. Yu|author3=G. Marullo Reedtz|translation=ภาพแทรกในรูปที่ 1 แสดงรูปทรงสัณฐานของตัวอย่าง โดยตัวอย่างมีความยาว 4.6 มม. และกว้าง 0.4 มม.}}
#* {{quote-text|en|year=2003|author=Matt Welsh|title=Running Linux|page=74|passage=Also, certain SCSI controllers need to be told where to find drive '''geometry''' in order for Linux to recognize the layout of your drive.|translation=นอกจากนี้ คอนโทรลเลอร์ SCSI บางตัวจำเป็นต้องได้รับคำสั่งว่าให้ค้นหาโครงสร้างทางกายภาพของไดรฟ์ได้ที่ไหน เพื่อให้ลินุกซ์สามารถจดจำรูปแบบการจัดวางของไดรฟ์ของคุณได้}}
#* {{quote-journal|en|date=March 14 2018|author=w:Roger Penrose|title='Mind over matter': Stephen Hawking – obituary|titleurl=https://www.theguardian.com/science/2018/mar/14/stephen-hawking-obituary|journal=w:The Guardian
|passage=He was extremely highly regarded, in view of his many greatly impressive, sometimes revolutionary, contributions to the understanding of the physics and the '''geometry''' of the universe.|translation=เขาได้รับการยกย่องอย่างสูงมาก จากการมีส่วนร่วมที่น่าประทับใจอย่างยิ่งและบางครั้งก็พลิกโฉมวงการ ในความเข้าใจเกี่ยวกับฟิสิกส์และโครงสร้างทางเรขาคณิตของเอกภพ}}
# {{lb|en|เรขาคณิตพีชคณิต|นับได้}} วัตถุตาง ๆ ทางคณิตศาสตร์ที่ประกอบด้วยการแทนพื้นที่และความสัมพันธ์เชิงพื้นที่
==== Holonyms ====
* {{l|en|mathematics}}
==== ลูกคำ ====
{{col|en|absolute geometry
|affine differential geometry
|affine geometry
|algebraic geometry
|anabelian geometry
|analytical geometry
|analytic geometry
|arithmetic geometry
|astrogeometry
|birational geometry
|chronogeometry
|combinatorial geometry
|complex geometry
|computational geometry
|conformal geometry
|contact geometry
|descriptive geometry
|differential geometry
|diophantine geometry
|elementary geometry
|elliptic geometry
|Euclidean geometry|variable-geometry Europe
|finite geometry
|fractal geometry
|geoband
|geoboard|elliptical geometry|Lobachevsky-Bolyai-Gauss geometry|neutral geometry
|geometrician
|geometrist
|geometrize
|geometrodynamics
|geometrogenesis
|geometrography
|geometrylike
|geometry of fear
|geometry of numbers
|geometry shader
|heptageometry
|hyperbolic geometry
|hypergeometry
|imaginary geometry
|inversive geometry
|Kerr geometry
|Klein geometry
|macrogeometry
|metageometry
|microgeometry
|morphogeometry
|nanogeometry
|neurogeometry
|noncommutative geometry
|noneuclidean geometry
|non-Euclidean geometry
|ophthalmogeometry
|pangeometry
|plane geometry
|pregeometry
|projective geometry
|Riemannian geometry
|sacred geometry
|spherical geometry
|stereogeometry
|supergeometry
|synthetic geometry
|taxicab geometry
|tropical geometry
|variable geometry
}}
==== คำเกี่ยวข้อง ====
* {{l|en|gematria}}
* {{l|en|geometer}}
* {{l|en|geometric}}
* {{l|en|geometrical}}
=== ดูเพิ่ม ===
* {{l|en|topology}}
=== อ้างอิง ===
{{reflist}}
=== อ่านเพิ่ม ===
* {{pedia|lang=en}}
* {{R:Century}}
* {{R:OneLook}}
* [https://web.archive.org/web/20210515101853/https://encyclopediaofmath.org/wiki/Geometry Geometry] ที่ {{w|Encyclopedia of Mathematics}}
* [http://mathworld.wolfram.com/Geometry.html Geometry] ที่ {{w|Mathworld|Wolfram MathWorld}}
* [http://en.wikibooks.org/wiki/Geometry Geometry] ที่ {{w|Wikibooks}}
gqzayer440zbh8d7b868cvxq0roi31u
5759423
5759422
2026-09-01T09:50:45Z
Octahedron80
267
/* คำนาม */
5759423
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{etymon|en|:inh|enm:gemetry<ety:bor<fro:geometrie<ety:der<la:geōmetria>>>>|tree=1}}
จาก{{inh|en|enm|gemetry}}, {{m|enm|geometrie}}, จาก{{der|en|fro|geometrie}} (คำสมัยใหม่ {{cog|fr|géométrie}}),<ref>{{R:MED|id=MED18350|entry=ǧēmetrī(e|pos=n}}</ref> จาก{{der|en|la|geōmetria}}, จาก{{der|en|grc|γεωμετρία||เรขาคณิต, การรังวัดที่ดิน}}, จาก{{m|grc|γεωμέτρης||นักเรขาคณิต, ผู้รังวัดที่ดิน}}, จาก{{m|grc|γῆ||ดิน, ที่ดิน, ประเทศ}} + {{m|grc|-μετρία||การวัด}}, จาก{{m|grc|μέτρον||หน่วยวัด}}; {{surf|en|geometer|-y|id2=abstract noun}} หรือ {{affix|en|geo-|-metry}}; {{doublet|en|gematria}}; แทนที่คำพื้นถิ่น {{noncog|ang|eorþcræft}}, ซึ่งแปลตรงตัวว่า "''[[งานฝีมือ]]-[[ดิน]]''"
=== การออกเสียง ===
* {{IPA|en|/d͡ʒiːˈɒm.ɪ.tɹi/|/ˈd͡ʒɒm.ɪ.tɹi/|a=RP}}
* {{IPA|en|/d͡ʒiˈɑ.mə.tɹi/|a=GA}}
** {{audio|en|En-us-geometry.ogg|a=US}}
* {{IPA|en|/d͡ʒiːˈɔm.ə.tɹi/|a=AU}}
=== คำนาม ===
{{en-noun|~}}
# {{lb|en|คณิตศาสตร์|นับไม่ได้}} [[เรขาคณิต]]
#* {{quote-book|en|year=1925|translators=David Eugene Smith; Marcia Latham|author=w:René Descartes|chapter=The Geometry of Rene Descartes|title=[1637, La Géométrie]|year_published=2007|publisher=Cosimo Classics|pageurl=https://books.google.com.au/books?id=3CQQh9fWLQgC&pg=PA2&dq=%22geometry%22%7C%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwid2o2y0K7rAhX1zTgGHSJAAQIQ6AEwKXoECFwQAg#v=onepage&q=%22geometry%22%7C%22geometries%22&f=false|page=2
|passage=ANY problem in '''geometry''' can easily be reduced to such terms that a knowledge of the lengths of certain straight lines is sufficient for its construction.|translation=ปัญหาใด ๆ ในเรขาคณิตสามารถลดรูปให้เหลือเงื่อนไขที่ว่า ความรู้เกี่ยวกับความยาวของเส้นตรงบางเส้นนั้นเพียงพอสำหรับการสร้างรูปนั้นขึ้นมาได้อย่างง่ายดาย}}
# {{lb|en|คณิตศาสตร์|มักใช้ในคำประสม|นับได้}} ระบบคณิตศาสตร์ที่จัดการเกี่ยวกับความสัมพันธ์เชิงพื้นที่และถูกสร้างขึ้นบนชุดของ[[สัจพจน์]]ชุดใดชุดหนึ่ง; [[สาขาย่อย]]ของเรขาคณิตที่จัดการเกี่ยวกับระบบดังกล่าว
#* '''1975''' [Addison-Wesley], Eugene F. Krause, ''Taxicab '''Geometry''''', 1986, Dover, [https://books.google.com.au/books?id=IW7ICV0QXWwC&pg=PA64&dq=%22geometry%22%7C%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwid2o2y0K7rAhX1zTgGHSJAAQIQ6AEwAnoECAEQAg#v=onepage&q=%22geometry%22%7C%22geometries%22&f=false page 64],
#*: {{ux|en|Entire new '''geometries''' are also suggested by real-world cities.|translation=เมืองในโลกแห่งความเป็นจริงยังเป็นสิ่งที่เสนอแนะเรขาคณิตรูปแบบใหม่ทั้งหมดอีกด้วย}}
#* {{quote-book|en|year=2004|author=Judith Cederberg|title=A Course in Modern '''Geometries'''|pageurl=https://books.google.com.au/books?id=Fo9tqL99jdMC&pg=PA1&dq=%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwiHr52T3a7rAhXMc30KHVduBqEQ6AEwAnoECAAQAg#v=onepage&q=%22geometries%22&f=false|page=1|publisher=Springer
|passage=Finite '''geometries''' were developed in the late nineteenth century, in part to demonstrate and test the axiomatic properties of ''completeness'', ''consistency'', and ''independence''.|translation=เรขาคณิตจำกัดถูกพัฒนาขึ้นในช่วงปลายคริสต์ศตวรรษที่ 19 ส่วนหนึ่งเพื่อสาธิตและทดสอบคุณสมบัติเชิงสัจพจน์ในด้านความบริบูรณ์ ความสอดคล้อง และความเป็นอิสระ}}
#* {{quote-book|en|year=2006|author=Mark Wagner|title=The '''Geometries''' of Visual Space|publisher=Lawrence Erlbaum Associates|pageurl=https://books.google.com.au/books?id=W73aOGJKdU0C&pg=PR9&dq=%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwiHr52T3a7rAhXMc30KHVduBqEQ6AEwAXoECAMQAg#v=onepage&q=%22geometries%22&f=false|page=ix
|passage=Previous theorists have often tried to test whether visual space is best described by a small set of traditional '''geometries''', such as the Euclidean '''geometry''' most of us studied in High School or the hyperbolic and spherical '''geometries''' introduced by 19<sup>th</sup>-century mathematicians.|translation=นักทฤษฎีก่อนหน้านี้มักจะพยายามทดสอบว่าพื้นที่ทางสายตาอธิบายได้ดีที่สุดด้วยชุดเรขาคณิตดั้งเดิมขนาดเล็กหรือไม่ เช่น เรขาคณิตแบบยุคลิดที่พวกเราส่วนใหญ่เรียนในโรงเรียนมัธยม หรือเรขาคณิตไฮเพอร์โบลิกและเรขาคณิตทรงกลมที่แนะนำโดยนักคณิตศาสตร์ในคริสต์ศตวรรษที่ 19}}
# {{lb|en|นับได้}} คุณลักษณะเชิงพื้นที่ที่ถูกสังเกตหรือระบุไว้ของวัตถุ ฯลฯ
#* {{quote-journal|en|passage=The inset of figure 1 shows the '''geometry''' of the samples. They are 4.6 mm long and 0.4 mm wide.|title=Observation and an Explanation of Breakdown of the Quantum Hall Effect|work=Journal of Research of the National Institute of Standards and Technology|year=1990|author=M. E. Cage|issue=1|volume=95|author2=D. Y. Yu|author3=G. Marullo Reedtz|translation=ภาพแทรกในรูปที่ 1 แสดงรูปทรงสัณฐานของตัวอย่าง โดยตัวอย่างมีความยาว 4.6 มม. และกว้าง 0.4 มม.}}
#* {{quote-text|en|year=2003|author=Matt Welsh|title=Running Linux|page=74|passage=Also, certain SCSI controllers need to be told where to find drive '''geometry''' in order for Linux to recognize the layout of your drive.|translation=นอกจากนี้ คอนโทรลเลอร์ SCSI บางตัวจำเป็นต้องได้รับคำสั่งว่าให้ค้นหาโครงสร้างทางกายภาพของไดรฟ์ได้ที่ไหน เพื่อให้ลินุกซ์สามารถจดจำรูปแบบการจัดวางของไดรฟ์ของคุณได้}}
#* {{quote-journal|en|date=March 14 2018|author=w:Roger Penrose|title='Mind over matter': Stephen Hawking – obituary|titleurl=https://www.theguardian.com/science/2018/mar/14/stephen-hawking-obituary|journal=w:The Guardian
|passage=He was extremely highly regarded, in view of his many greatly impressive, sometimes revolutionary, contributions to the understanding of the physics and the '''geometry''' of the universe.|translation=เขาได้รับการยกย่องอย่างสูงมาก จากการมีส่วนร่วมที่น่าประทับใจอย่างยิ่งและบางครั้งก็พลิกโฉมวงการ ในความเข้าใจเกี่ยวกับฟิสิกส์และโครงสร้างทางเรขาคณิตของเอกภพ}}
# {{lb|en|เรขาคณิตพีชคณิต|นับได้}} วัตถุต่าง ๆ ทางคณิตศาสตร์ที่ประกอบด้วยการแทนพื้นที่และความสัมพันธ์เชิงพื้นที่
==== Holonyms ====
* {{l|en|mathematics}}
==== ลูกคำ ====
{{col|en|absolute geometry
|affine differential geometry
|affine geometry
|algebraic geometry
|anabelian geometry
|analytical geometry
|analytic geometry
|arithmetic geometry
|astrogeometry
|birational geometry
|chronogeometry
|combinatorial geometry
|complex geometry
|computational geometry
|conformal geometry
|contact geometry
|descriptive geometry
|differential geometry
|diophantine geometry
|elementary geometry
|elliptic geometry
|Euclidean geometry|variable-geometry Europe
|finite geometry
|fractal geometry
|geoband
|geoboard|elliptical geometry|Lobachevsky-Bolyai-Gauss geometry|neutral geometry
|geometrician
|geometrist
|geometrize
|geometrodynamics
|geometrogenesis
|geometrography
|geometrylike
|geometry of fear
|geometry of numbers
|geometry shader
|heptageometry
|hyperbolic geometry
|hypergeometry
|imaginary geometry
|inversive geometry
|Kerr geometry
|Klein geometry
|macrogeometry
|metageometry
|microgeometry
|morphogeometry
|nanogeometry
|neurogeometry
|noncommutative geometry
|noneuclidean geometry
|non-Euclidean geometry
|ophthalmogeometry
|pangeometry
|plane geometry
|pregeometry
|projective geometry
|Riemannian geometry
|sacred geometry
|spherical geometry
|stereogeometry
|supergeometry
|synthetic geometry
|taxicab geometry
|tropical geometry
|variable geometry
}}
==== คำเกี่ยวข้อง ====
* {{l|en|gematria}}
* {{l|en|geometer}}
* {{l|en|geometric}}
* {{l|en|geometrical}}
=== ดูเพิ่ม ===
* {{l|en|topology}}
=== อ้างอิง ===
{{reflist}}
=== อ่านเพิ่ม ===
* {{pedia|lang=en}}
* {{R:Century}}
* {{R:OneLook}}
* [https://web.archive.org/web/20210515101853/https://encyclopediaofmath.org/wiki/Geometry Geometry] ที่ {{w|Encyclopedia of Mathematics}}
* [http://mathworld.wolfram.com/Geometry.html Geometry] ที่ {{w|Mathworld|Wolfram MathWorld}}
* [http://en.wikibooks.org/wiki/Geometry Geometry] ที่ {{w|Wikibooks}}
gdptkg56p65lg9dg48fia1xxkwgguie
5759424
5759423
2026-09-01T09:51:53Z
Octahedron80
267
/* คำนาม */
5759424
wikitext
text/x-wiki
== ภาษาอังกฤษ ==
=== รากศัพท์ ===
{{etymon|en|:inh|enm:gemetry<ety:bor<fro:geometrie<ety:der<la:geōmetria>>>>|tree=1}}
จาก{{inh|en|enm|gemetry}}, {{m|enm|geometrie}}, จาก{{der|en|fro|geometrie}} (คำสมัยใหม่ {{cog|fr|géométrie}}),<ref>{{R:MED|id=MED18350|entry=ǧēmetrī(e|pos=n}}</ref> จาก{{der|en|la|geōmetria}}, จาก{{der|en|grc|γεωμετρία||เรขาคณิต, การรังวัดที่ดิน}}, จาก{{m|grc|γεωμέτρης||นักเรขาคณิต, ผู้รังวัดที่ดิน}}, จาก{{m|grc|γῆ||ดิน, ที่ดิน, ประเทศ}} + {{m|grc|-μετρία||การวัด}}, จาก{{m|grc|μέτρον||หน่วยวัด}}; {{surf|en|geometer|-y|id2=abstract noun}} หรือ {{affix|en|geo-|-metry}}; {{doublet|en|gematria}}; แทนที่คำพื้นถิ่น {{noncog|ang|eorþcræft}}, ซึ่งแปลตรงตัวว่า "''[[งานฝีมือ]]-[[ดิน]]''"
=== การออกเสียง ===
* {{IPA|en|/d͡ʒiːˈɒm.ɪ.tɹi/|/ˈd͡ʒɒm.ɪ.tɹi/|a=RP}}
* {{IPA|en|/d͡ʒiˈɑ.mə.tɹi/|a=GA}}
** {{audio|en|En-us-geometry.ogg|a=US}}
* {{IPA|en|/d͡ʒiːˈɔm.ə.tɹi/|a=AU}}
=== คำนาม ===
{{en-noun|~}}
# {{lb|en|คณิตศาสตร์|นับไม่ได้}} [[เรขาคณิต]]
#* {{quote-book|en|year=1925|translators=David Eugene Smith; Marcia Latham|author=w:René Descartes|chapter=The Geometry of Rene Descartes|title=[1637, La Géométrie]|year_published=2007|publisher=Cosimo Classics|pageurl=https://books.google.com.au/books?id=3CQQh9fWLQgC&pg=PA2&dq=%22geometry%22%7C%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwid2o2y0K7rAhX1zTgGHSJAAQIQ6AEwKXoECFwQAg#v=onepage&q=%22geometry%22%7C%22geometries%22&f=false|page=2
|passage=ANY problem in '''geometry''' can easily be reduced to such terms that a knowledge of the lengths of certain straight lines is sufficient for its construction.|translation=ปัญหาใด ๆ ในเรขาคณิตสามารถลดรูปให้เหลือเงื่อนไขที่ว่า ความรู้เกี่ยวกับความยาวของเส้นตรงบางเส้นนั้นเพียงพอสำหรับการสร้างรูปนั้นขึ้นมาได้อย่างง่ายดาย}}
# {{lb|en|คณิตศาสตร์|มักใช้ในคำประสม|นับได้}} ระบบคณิตศาสตร์ที่จัดการเกี่ยวกับความสัมพันธ์เชิงพื้นที่และถูกสร้างขึ้นบนชุดของ[[สัจพจน์]]ชุดใดชุดหนึ่ง; [[สาขาย่อย]]ของเรขาคณิตที่จัดการเกี่ยวกับระบบดังกล่าว
#* '''1975''' [Addison-Wesley], Eugene F. Krause, ''Taxicab '''Geometry''''', 1986, Dover, [https://books.google.com.au/books?id=IW7ICV0QXWwC&pg=PA64&dq=%22geometry%22%7C%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwid2o2y0K7rAhX1zTgGHSJAAQIQ6AEwAnoECAEQAg#v=onepage&q=%22geometry%22%7C%22geometries%22&f=false page 64],
#*: {{ux|en|Entire new '''geometries''' are also suggested by real-world cities.|translation=เมืองในโลกแห่งความเป็นจริงยังเป็นสิ่งที่เสนอแนะเรขาคณิตรูปแบบใหม่ทั้งหมดอีกด้วย}}
#* {{quote-book|en|year=2004|author=Judith Cederberg|title=A Course in Modern '''Geometries'''|pageurl=https://books.google.com.au/books?id=Fo9tqL99jdMC&pg=PA1&dq=%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwiHr52T3a7rAhXMc30KHVduBqEQ6AEwAnoECAAQAg#v=onepage&q=%22geometries%22&f=false|page=1|publisher=Springer
|passage=Finite '''geometries''' were developed in the late nineteenth century, in part to demonstrate and test the axiomatic properties of ''completeness'', ''consistency'', and ''independence''.|translation=เรขาคณิตจำกัดถูกพัฒนาขึ้นในช่วงปลายคริสต์ศตวรรษที่ 19 ส่วนหนึ่งเพื่อสาธิตและทดสอบคุณสมบัติเชิงสัจพจน์ในด้านความบริบูรณ์ ความสอดคล้อง และความเป็นอิสระ}}
#* {{quote-book|en|year=2006|author=Mark Wagner|title=The '''Geometries''' of Visual Space|publisher=Lawrence Erlbaum Associates|pageurl=https://books.google.com.au/books?id=W73aOGJKdU0C&pg=PR9&dq=%22geometries%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwiHr52T3a7rAhXMc30KHVduBqEQ6AEwAXoECAMQAg#v=onepage&q=%22geometries%22&f=false|page=ix
|passage=Previous theorists have often tried to test whether visual space is best described by a small set of traditional '''geometries''', such as the Euclidean '''geometry''' most of us studied in High School or the hyperbolic and spherical '''geometries''' introduced by 19<sup>th</sup>-century mathematicians.|translation=นักทฤษฎีก่อนหน้านี้มักจะพยายามทดสอบว่าพื้นที่ทางสายตาอธิบายได้ดีที่สุดด้วยชุดเรขาคณิตดั้งเดิมขนาดเล็กหรือไม่ เช่น เรขาคณิตแบบยุคลิดที่พวกเราส่วนใหญ่เรียนในโรงเรียนมัธยม หรือเรขาคณิตไฮเพอร์โบลิกและเรขาคณิตทรงกลมที่แนะนำโดยนักคณิตศาสตร์ในคริสต์ศตวรรษที่ 19}}
# {{lb|en|นับได้}} คุณลักษณะเชิงพื้นที่ที่ถูกสังเกตหรือระบุไว้ของวัตถุ ฯลฯ
#* {{quote-journal|en|passage=The inset of figure 1 shows the '''geometry''' of the samples. They are 4.6 mm long and 0.4 mm wide.|title=Observation and an Explanation of Breakdown of the Quantum Hall Effect|work=Journal of Research of the National Institute of Standards and Technology|year=1990|author=M. E. Cage|issue=1|volume=95|author2=D. Y. Yu|author3=G. Marullo Reedtz|translation=ภาพแทรกในรูปที่ 1 แสดงรูปทรงสัณฐานของตัวอย่าง โดยตัวอย่างมีความยาว 4.6 มม. และกว้าง 0.4 มม.}}
#* {{quote-text|en|year=2003|author=Matt Welsh|title=Running Linux|page=74|passage=Also, certain SCSI controllers need to be told where to find drive '''geometry''' in order for Linux to recognize the layout of your drive.|translation=นอกจากนี้ คอนโทรลเลอร์ SCSI บางตัวจำเป็นต้องได้รับคำสั่งว่าให้ค้นหาโครงสร้างทางกายภาพของไดรฟ์ได้ที่ไหน เพื่อให้ลินุกซ์สามารถจดจำรูปแบบการจัดวางของไดรฟ์ของคุณได้}}
#* {{quote-journal|en|date=March 14 2018|author=w:Roger Penrose|title='Mind over matter': Stephen Hawking – obituary|titleurl=https://www.theguardian.com/science/2018/mar/14/stephen-hawking-obituary|journal=w:The Guardian
|passage=He was extremely highly regarded, in view of his many greatly impressive, sometimes revolutionary, contributions to the understanding of the physics and the '''geometry''' of the universe.|translation=เขาได้รับการยกย่องอย่างสูงมาก จากการมีส่วนร่วมที่น่าประทับใจอย่างยิ่งและบางครั้งก็พลิกโฉมวงการ ในความเข้าใจเกี่ยวกับฟิสิกส์และโครงสร้างทางเรขาคณิตของเอกภพ}}
# {{lb|en|เรขาคณิตเชิงพีชคณิต|นับได้}} วัตถุต่าง ๆ ทางคณิตศาสตร์ที่ประกอบด้วยการแทนพื้นที่และความสัมพันธ์เชิงพื้นที่
==== Holonyms ====
* {{l|en|mathematics}}
==== ลูกคำ ====
{{col|en|absolute geometry
|affine differential geometry
|affine geometry
|algebraic geometry
|anabelian geometry
|analytical geometry
|analytic geometry
|arithmetic geometry
|astrogeometry
|birational geometry
|chronogeometry
|combinatorial geometry
|complex geometry
|computational geometry
|conformal geometry
|contact geometry
|descriptive geometry
|differential geometry
|diophantine geometry
|elementary geometry
|elliptic geometry
|Euclidean geometry|variable-geometry Europe
|finite geometry
|fractal geometry
|geoband
|geoboard|elliptical geometry|Lobachevsky-Bolyai-Gauss geometry|neutral geometry
|geometrician
|geometrist
|geometrize
|geometrodynamics
|geometrogenesis
|geometrography
|geometrylike
|geometry of fear
|geometry of numbers
|geometry shader
|heptageometry
|hyperbolic geometry
|hypergeometry
|imaginary geometry
|inversive geometry
|Kerr geometry
|Klein geometry
|macrogeometry
|metageometry
|microgeometry
|morphogeometry
|nanogeometry
|neurogeometry
|noncommutative geometry
|noneuclidean geometry
|non-Euclidean geometry
|ophthalmogeometry
|pangeometry
|plane geometry
|pregeometry
|projective geometry
|Riemannian geometry
|sacred geometry
|spherical geometry
|stereogeometry
|supergeometry
|synthetic geometry
|taxicab geometry
|tropical geometry
|variable geometry
}}
==== คำเกี่ยวข้อง ====
* {{l|en|gematria}}
* {{l|en|geometer}}
* {{l|en|geometric}}
* {{l|en|geometrical}}
=== ดูเพิ่ม ===
* {{l|en|topology}}
=== อ้างอิง ===
{{reflist}}
=== อ่านเพิ่ม ===
* {{pedia|lang=en}}
* {{R:Century}}
* {{R:OneLook}}
* [https://web.archive.org/web/20210515101853/https://encyclopediaofmath.org/wiki/Geometry Geometry] ที่ {{w|Encyclopedia of Mathematics}}
* [http://mathworld.wolfram.com/Geometry.html Geometry] ที่ {{w|Mathworld|Wolfram MathWorld}}
* [http://en.wikibooks.org/wiki/Geometry Geometry] ที่ {{w|Wikibooks}}
1vipvaal5ph09wwl5jdolpmivyjv4bt
meetkunde
0
2358217
5759425
2026-09-01T09:59:36Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759425
wikitext
text/x-wiki
== ภาษาดัตช์ ==
{{wp|nl:}}
=== รากศัพท์ ===
จาก{{suffix|nl|meten|kunde}}, แทนที่คำที่มีก่อนหน้า {{m|nl|meetkunst}}
=== การออกเสียง ===
* {{IPA|nl|/ˈmeːtˌkʏn.də/}}
* {{audio|nl|Nl-meetkunde.ogg}}
* {{hyphenation|nl|meet|kun|de}}
=== คำนาม ===
{{nl-noun|f|-|-}}
# [[เรขาคณิต]] {{defdate|from 17th c.}}
#: {{syn|nl|geometrie|meetkunst|q2=obsolete}}
==== ลูกคำ ====
* {{l|nl|meetkundig}}
* {{l|nl|driehoeksmeetkunde}}
==== คำสืบทอด ====
* {{desc|af|meetkunde}}
* {{desc|id|clq=1|ilmu ukur}}
== ภาษาอาฟรีกานส์ ==
{{wp|af:}}
=== รากศัพท์ ===
จาก{{inh|af|nl|meetkunde}}; เทียบเท่า {{suffix|af|meet|kunde}}
=== การออกเสียง ===
* {{IPA|af|/ˈmɪə̯tˌkœn.də/}}
=== คำนาม ===
{{af-noun|-}}
# [[เรขาคณิต]]
==== ลูกคำ ====
* {{l|af|meetkundig}}
onkx40y0l62uia4g4aoyyjn47to9vyu
5759426
5759425
2026-09-01T09:59:51Z
Octahedron80
267
/* คำนาม */
5759426
wikitext
text/x-wiki
== ภาษาดัตช์ ==
{{wp|nl:}}
=== รากศัพท์ ===
จาก{{suffix|nl|meten|kunde}}, แทนที่คำที่มีก่อนหน้า {{m|nl|meetkunst}}
=== การออกเสียง ===
* {{IPA|nl|/ˈmeːtˌkʏn.də/}}
* {{audio|nl|Nl-meetkunde.ogg}}
* {{hyphenation|nl|meet|kun|de}}
=== คำนาม ===
{{nl-noun|f|-|-}}
# [[เรขาคณิต]] {{defdate|from 17th c.}}
#: {{syn|nl|geometrie|meetkunst|q2=เลิกใช้}}
==== ลูกคำ ====
* {{l|nl|meetkundig}}
* {{l|nl|driehoeksmeetkunde}}
==== คำสืบทอด ====
* {{desc|af|meetkunde}}
* {{desc|id|clq=1|ilmu ukur}}
== ภาษาอาฟรีกานส์ ==
{{wp|af:}}
=== รากศัพท์ ===
จาก{{inh|af|nl|meetkunde}}; เทียบเท่า {{suffix|af|meet|kunde}}
=== การออกเสียง ===
* {{IPA|af|/ˈmɪə̯tˌkœn.də/}}
=== คำนาม ===
{{af-noun|-}}
# [[เรขาคณิต]]
==== ลูกคำ ====
* {{l|af|meetkundig}}
76sqf8wawhm16rwi0gt4d52hmtqumzb
5759427
5759426
2026-09-01T10:00:12Z
Octahedron80
267
/* รากศัพท์ */
5759427
wikitext
text/x-wiki
== ภาษาดัตช์ ==
{{wp|nl:}}
=== รากศัพท์ ===
จาก{{suffix|nl|meten|kunde}}, ใช้แทนที่คำที่มีก่อนหน้า {{m|nl|meetkunst}}
=== การออกเสียง ===
* {{IPA|nl|/ˈmeːtˌkʏn.də/}}
* {{audio|nl|Nl-meetkunde.ogg}}
* {{hyphenation|nl|meet|kun|de}}
=== คำนาม ===
{{nl-noun|f|-|-}}
# [[เรขาคณิต]] {{defdate|from 17th c.}}
#: {{syn|nl|geometrie|meetkunst|q2=เลิกใช้}}
==== ลูกคำ ====
* {{l|nl|meetkundig}}
* {{l|nl|driehoeksmeetkunde}}
==== คำสืบทอด ====
* {{desc|af|meetkunde}}
* {{desc|id|clq=1|ilmu ukur}}
== ภาษาอาฟรีกานส์ ==
{{wp|af:}}
=== รากศัพท์ ===
จาก{{inh|af|nl|meetkunde}}; เทียบเท่า {{suffix|af|meet|kunde}}
=== การออกเสียง ===
* {{IPA|af|/ˈmɪə̯tˌkœn.də/}}
=== คำนาม ===
{{af-noun|-}}
# [[เรขาคณิต]]
==== ลูกคำ ====
* {{l|af|meetkundig}}
7y9mq0pfg3ug98j5w67aiyb4u3mkv2i
gjeometri
0
2358218
5759428
2026-09-01T10:00:50Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759428
wikitext
text/x-wiki
== ภาษาแอลเบเนีย ==
=== คำนาม ===
{{sq-noun|f||gjeometria}}
# [[เรขาคณิต]]
==== การผันรูป ====
{{sq-noun-f-i-unc}}
==== คำเกี่ยวข้อง ====
* {{l|sq|gjeometrik}}
* {{l|sq|gjeometrikisht}}
{{C|sq|เรขาคณิต}}
5957whbjei1z50g7s1lpdt4tjtn8elr
dhemasë
0
2358219
5759429
2026-09-01T10:01:20Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759429
wikitext
text/x-wiki
== ภาษาแอลเบเนีย ==
=== รากศัพท์ ===
{{l|sq|dhe}} + {{l|sq|mas}}
=== คำนาม ===
{{head|sq|คำนาม}}
# [[เรขาคณิต]]
m25q14m28ujdfu5duvv2bokk67rkm3u
هندسة
0
2358220
5759430
2026-09-01T10:03:21Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759430
wikitext
text/x-wiki
== ภาษาอาหรับ ==
=== รากศัพท์ ===
จากคำที่มีก่อนหน้า {{m|ar|هَنْدَزَة}}, จาก{{m|ar|هَنْدَاز}}, ยืมมาจาก{{bor|ar|pal|handʾc-|tr=handāz-}}, {{m|pal|hndʾhtn'|tr=handāxtan|gloss=วางแผน, จัดสรร, คำนวณ, ตัดสิน}}, หรือ {{m|pal|hndʾck'|tr=handāzag|gloss=การวัด, วิธีการ}} (ซึ่งเป็นรากของ {{cog|fa|اندازه|tr=andâza}})
=== การออกเสียง ===
{{ar-pr|هَنْدَسَة}}
=== คำนาม ===
{{ar-noun|هَنْدَسَة|f}}
# [[เรขาคณิต]]
# [[สถาปัตยกรรม]]
# [[วิศวกรรม]]
# {{ar-verbal noun of|هَنْدَسَ|form=Iq}}
==== การผันรูป ====
{{ar-decl-noun|هَنْدَسَة}}
==== ลูกคำ ====
* {{l|ar|هَنْدَسِيّ}}
* {{l|ar|مُهَنْدِس}}
==== คำสืบทอด ====
* {{desc|az|həndəsə|bor=1}}
* {{desc|he|הנדסה|tr=handasa|bor=1}}
* {{desc|ms|handasah|bor=1}}
** {{desc|id|handasah}}
* {{desc|ota|هندسه|tr=hendese|bor=1}}
* {{desctree|fa|هندسه|tr=handase|bor=1}}
==== อ้างอิง ====
* {{R:ar:Steingass}}
* {{R:ar:Wehr-4|هندسة}}
0dnyd947k5yelx8cfk1nm8g9owxld7a
5759431
5759430
2026-09-01T10:03:55Z
Octahedron80
267
/* รากศัพท์ */
5759431
wikitext
text/x-wiki
== ภาษาอาหรับ ==
=== รากศัพท์ ===
จากคำที่มีก่อนหน้า {{m|ar|هَنْدَزَة}}, จาก{{m|ar|هَنْدَاز}}, ยืมมาจาก{{bor|ar|pal|handʾc-|tr=handāz-}}, {{m|pal|hndʾhtn'|tr=handāxtan|gloss=วางแผน, จัดสรร, คำนวณ, ตัดสิน}}, หรือ {{m|pal|hndʾck'|tr=handāzag|gloss=การวัด, วิธีการ}} (ซึ่งเป็นรากของ{{cog|fa|اندازه|tr=andâza}})
=== การออกเสียง ===
{{ar-pr|هَنْدَسَة}}
=== คำนาม ===
{{ar-noun|هَنْدَسَة|f}}
# [[เรขาคณิต]]
# [[สถาปัตยกรรม]]
# [[วิศวกรรม]]
# {{ar-verbal noun of|هَنْدَسَ|form=Iq}}
==== การผันรูป ====
{{ar-decl-noun|هَنْدَسَة}}
==== ลูกคำ ====
* {{l|ar|هَنْدَسِيّ}}
* {{l|ar|مُهَنْدِس}}
==== คำสืบทอด ====
* {{desc|az|həndəsə|bor=1}}
* {{desc|he|הנדסה|tr=handasa|bor=1}}
* {{desc|ms|handasah|bor=1}}
** {{desc|id|handasah}}
* {{desc|ota|هندسه|tr=hendese|bor=1}}
* {{desctree|fa|هندسه|tr=handase|bor=1}}
==== อ้างอิง ====
* {{R:ar:Steingass}}
* {{R:ar:Wehr-4|هندسة}}
rdwulyngurzdkotls1evx4drtoyws0u
երկրաչափություն
0
2358221
5759432
2026-09-01T10:04:36Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759432
wikitext
text/x-wiki
== ภาษาอาร์มีเนีย ==
=== รากศัพท์ ===
จาก{{uder|hy|xcl|երկրաչափութիւն}}
=== การออกเสียง ===
{{hy-IPA}}
* {{audio|hy|LL-Q8785 (hye)-Vahagn Petrosyan-երկրաչափություն.wav|a=Eastern Armenian}}
=== คำนาม ===
{{hy-h|noun|TAO=երկրաչափութիւն}}
# [[เรขาคณิต]]
==== การผันรูป ====
{{hy-noun-ություն}}
==== คำเกี่ยวข้อง ====
{{col|hy|երկիր|չափել}}
{{C|hy|Geometry}}
qs7oy5188yrpvr6za63aetvpwogfbu3
5759433
5759432
2026-09-01T10:04:46Z
Octahedron80
267
5759433
wikitext
text/x-wiki
== ภาษาอาร์มีเนีย ==
=== รากศัพท์ ===
จาก{{uder|hy|xcl|երկրաչափութիւն}}
=== การออกเสียง ===
{{hy-IPA}}
* {{audio|hy|LL-Q8785 (hye)-Vahagn Petrosyan-երկրաչափություն.wav|a=Eastern Armenian}}
=== คำนาม ===
{{hy-h|noun|TAO=երկրաչափութիւն}}
# [[เรขาคณิต]]
==== การผันรูป ====
{{hy-noun-ություն}}
==== คำเกี่ยวข้อง ====
{{col|hy|երկիր|չափել}}
{{C|hy|เรขาคณิต}}
lvw4wxg9vfrp5mgu0i66znnfpu31m9j
জ্যামিতি
0
2358222
5759434
2026-09-01T10:06:05Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759434
wikitext
text/x-wiki
== ภาษาเบงกอล ==
=== รากศัพท์ ===
{{psm|bn|en|geometry}}, จาก{{der|bn|sa|-}} {{com|sa|ज्या|मिति|alt1=জ্যা|alt2=মিতি|t1=สาย|t2=การวัด|nocat=1}}; ดูเพิ่มที่ {{m|bn|ত্রিকোণমিতি||ตรีโกณมิติ}}; ร่วมเชื้อสายกับ{{cog|hi|ज्यामिति}}, {{cog|te|జ్యామితి}}
=== การออกเสียง ===
* {{bn-IPA|জ্যামিতি|জামিতি|জেমিতি}}
=== คำนาม ===
{{bn-noun}}
# {{lb|bn|mathematics}} [[เรขาคณิต]]
{{topics|bn|เรขาคณิต}}
== ภาษาอัสสัม ==
=== รากศัพท์ ===
{{bor+|as|hi|ज्यामिति}}
=== การออกเสียง ===
* {{as-IPA}}
=== คำนาม ===
{{as-noun}}
# {{lb|as|mathematics}} [[เรขาคณิต]]
baubxgfpjljhni1v92nq6ppqwcr8mrv
หมวดหมู่:ศัพท์ภาษาอัสสัมที่รับมาจากภาษาฮินดี
14
2358223
5759435
2026-09-01T10:07:00Z
Octahedron80
267
สร้างหมวดหมู่อัตโนมัติ
5759435
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
หมวดหมู่:ศัพท์ภาษาอัสสัมที่ยืมมาจากภาษาฮินดี
14
2358224
5759436
2026-09-01T10:07:01Z
Octahedron80
267
สร้างหมวดหมู่อัตโนมัติ
5759436
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
xeometría
0
2358225
5759437
2026-09-01T10:07:38Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759437
wikitext
text/x-wiki
== ภาษากาลิเซีย ==
=== รูปแบบอื่น ===
* {{alt|gl|geometria||reinteg}}
=== การออกเสียง ===
{{gl-pr|xėȯmẹtría}}
* {{hyph|gl|xe|o|me|trí|a}}
=== คำนาม ===
{{gl-noun|f|-}}
# [[เรขาคณิต]]
==== คำเกี่ยวข้อง ====
* {{l|gl|xeométrico}}
=== อ่านเพิ่ม ===
* {{R:gl:DRAG}}
{{C|gl|เรขาคณิต}}
== ภาษาอัสตูเรียส ==
{{wp|ast:}}
=== การออกเสียง ===
{{ast-pr}}
=== คำนาม ===
{{ast-noun|f|-}}
# [[เรขาคณิต]]
==== คำเกี่ยวข้อง ====
* {{l|ast|xeométricu}}
=== อ่านเพิ่ม ===
* {{R:ast:DGLA}}
* {{R:ast:DALLA}}
{{C|ast|เรขาคณิต}}
dsf6xztxkkzyrf9mivps8iou74e9tii
həndəsə
0
2358226
5759438
2026-09-01T10:08:25Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759438
wikitext
text/x-wiki
== ภาษาอาเซอร์ไบจาน ==
=== รากศัพท์ ===
จาก{{bor|az|ar|هَنْدَسَة}}; {{root|az|ar|ه ن د س}}
=== การออกเสียง ===
* {{IPA|az|[hændæˈsæ]}}
* {{audio|az|LL-Q9292 (aze)-Allahverdi Verdizade-həndəsə.wav}}
=== คำนาม ===
{{az-noun}}
# [[เรขาคณิต]] {{C|az|เรขาคณิต}}
==== การผันรูป ====
{{az-decl-noun|ə}}
=== อ้างอิง ===
* {{R:az:ADIL}}
8vp9zhknf0zp0ozo3wmjgq3t5cuzpyr
5759439
5759438
2026-09-01T10:08:37Z
Octahedron80
267
/* รากศัพท์ */
5759439
wikitext
text/x-wiki
== ภาษาอาเซอร์ไบจาน ==
=== รากศัพท์ ===
จาก{{bor|az|ar|هَنْدَسَة}} {{root|az|ar|ه ن د س}}
=== การออกเสียง ===
* {{IPA|az|[hændæˈsæ]}}
* {{audio|az|LL-Q9292 (aze)-Allahverdi Verdizade-həndəsə.wav}}
=== คำนาม ===
{{az-noun}}
# [[เรขาคณิต]] {{C|az|เรขาคณิต}}
==== การผันรูป ====
{{az-decl-noun|ə}}
=== อ้างอิง ===
* {{R:az:ADIL}}
9snwevr623yfqsxazeoy6o87342owlf
геаметрыя
0
2358227
5759440
2026-09-01T10:09:46Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759440
wikitext
text/x-wiki
== ภาษาเบลารุส ==
=== รากศัพท์ ===
{{bor+|be|pl|geometria}} หรือรับมาโดยตรงผ่าน{{lbor|be|la|geōmetria|notext=1}}<ref>{{R:be:ESBM}}</ref>
=== การออกเสียง ===
* {{be-IPA|геаме́трыя}}
* {{rhymes|be|etrɨja|s=5}}
* {{hyph|be|ге|амет|рыя}}
=== คำนาม ===
{{be-noun|геаме́трыя<sg>}}
# {{lb|be|math}} [[เรขาคณิต]]
==== การผันรูป ====
{{be-ndecl|геаме́трыя<sg>}}
=== อ้างอิง ===
{{reflist}}
=== อ่านเพิ่ม ===
* {{R:be:Skarnik}}
* {{R:be:slounik.org}}
{{C|be|เรขาคณิต}}
r8buspajclun4p1sivzsgsbol6lrh6r
mentoniezh
0
2358228
5759441
2026-09-01T10:10:21Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759441
wikitext
text/x-wiki
== ภาษาเบรอตง ==
=== รากศัพท์ ===
{{suffix|br|ment|oniezh}}
=== การออกเสียง ===
* {{IPA|br|/mẽntɔ̃ˈniːɛs/}}
=== คำนาม ===
{{br-noun|f}}
# [[เรขาคณิต]]
{{C|br|เรขาคณิต}}
gwfwo3folswkunj4ulba4i9uqvfkfg3
геометрия
0
2358229
5759442
2026-09-01T10:10:57Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759442
wikitext
text/x-wiki
== ภาษาทาจิก ==
=== รากศัพท์ ===
{{ety|tg|:bor|ru:геометрия|text=+|tree=1}}
=== การออกเสียง ===
{{tg-IPA}}
=== คำนาม ===
{{tg-noun}}
# [[เรขาคณิต]]
#: {{syn|tg|ҳандаса}}
==== ลูกคำ ====
* {{l|tg|геометрӣ}}
=== อ่านเพิ่ม ===
* {{R:tg:Vozhaju}}
{{C|tg|เรขาคณิต}}
== ภาษารัสเซีย ==
=== รูปแบบอื่น ===
* {{alt|ru|геоме́трія||ru-PRO}}
=== การออกเสียง ===
* {{ru-IPA|геоме́трия}}
* {{audio|ru|Ru-геометрия.ogg}}
=== คำนาม ===
{{ru-noun+|геоме́трия}}
# {{lb|ru|mathematics}} [[เรขาคณิต]]
==== การผันรูป ====
{{ru-noun-table|геоме́трия}}
==== คำเกี่ยวข้อง ====
* {{l|ru|геометр}}
* {{l|ru|геометри́ческий}}
==== คำสืบทอด ====
* {{desc|tg|геометрия|bor=1}}
* {{desc|uz|geometriya|bor=1}}
=== อ่านเพิ่ม ===
* {{R:ru:BTS}}
7qog9bqnkdtrnutdlgpdw7h97elrecd
ᏗᏎᏍᏗ ᏓᏍᏓᏅᏅ
0
2358230
5759444
2026-09-01T10:12:09Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759444
wikitext
text/x-wiki
== ภาษาเชโรกี ==
=== คำนาม ===
{{head|chr|คำนาม}}
# [[เรขาคณิต]]
jtb6w3r1npvek8lndy7rl8in1ytoav5
幾何
0
2358231
5759445
2026-09-01T10:19:42Z
Octahedron80
267
เก็บกวาด
5759445
wikitext
text/x-wiki
== ภาษาจีน ==
=== รากศัพท์ 1 ===
{{zh-forms|s=几何}}
; เรขาคณิต
: ปรากฏครั้งแรกในงานแปลตำรา {{w|Euclid's Elements|องค์ประกอบของยูคลิด}} โดย {{w|Xu Guangqi}} และ {{w|Matteo Ricci}} ในปี ค.ศ. 1607 ที่มาของคำนี้น่าจะมาจากความหมายของ "กี่" หรือ "เท่าไร" ซึ่งขยายความให้มีความหมายทางคณิตศาสตร์เกี่ยวกับจำนวนและขนาดโดยทั่วไป การนำคำนี้มาใช้เฉพาะในความหมายเรขาคณิตน่าจะเป็นผลมาจากการตีพิมพ์หนังสือเป็นชุด ๆ โดยมีช่วงเวลาห่างกันค่อนข้างนาน เมื่อหนังสือหกเล่มแรกได้รับการตีพิมพ์พร้อมกัน เนื้อหาหลักของงานนั้นเกี่ยวกับเรขาคณิตระนาบ ดังนั้น 幾何 จึงกลายเป็นคำที่หมายถึงเรื่องนั้นโดยเฉพาะ<ref>[https://www.gcoe.lit.nagoya-u.ac.jp/result/pdf/5-1_小川(E).pdf]<!--http://www.doc88.com/p-4923076545695.html--></ref>
==== การออกเสียง ====
{{zh-pron
|m=jǐhé,er=y
|m_note=Erhua-ed pronunciation is only used for the geometry sense
|c=gei2 ho4
|c-t=gei2 ho3
|mn=xm,zz,tw:kí-hô/qz:kí-hô͘/xm,zz:ki-hô/qz:ki-hô͘
|mn-t=gi1 ho5
|mc=3,1
|oc=2,2;1,1
|cat=adv,n
}}
==== คำกริยาวิเศษณ์ ====
{{head|zh|คำกริยาวิเศษณ์}}
# {{lb|zh|literary}} [[เท่าไร]]; มากแค่ไหน
#: {{zh-x|您 女兒 芳齡 幾何?|ลูกสาวของคุณอายุเท่าไหร่? [ราชาศัพท์]|lit=อายุของลูกสาวของคุณมากเท่าไร?}}
===== คำพ้องความ =====
{{zh-dial|多少}}
===== ลูกคำ =====
{{col3|zh|有幾何<tr:jau5 gei2 ho4-2>|無幾何|冇幾何<tr:mou5 gei2 ho4-2>|春秋幾何|相去幾何|俟河之清,人壽幾何}}
==== คำนาม ====
{{head|zh|คำนาม}}
# {{lb|zh|mathematics}} [[เรขาคณิต]] {{defdate|from 1607}}
===== ลูกคำ =====
{{col3|zh|幾何級數|幾何圖形|平面幾何|解析幾何|立體幾何|代數幾何|幾何學|微分幾何|幾何體|幾何光學|辛幾何}}
==== คำสืบทอด ====
{{CJKV||きか|기하|kỉ hà}}
* {{desc|sjo|ᡪᡞᡥᡝ|tr=jihe|bor=1}}
=== รากศัพท์ 2 ===
==== การออกเสียง ====
{{zh-forms|s=几何|alt=幾好}}
{{zh-pron
|c-t=gei2 hau4*
|cat=adv
}}
==== คำกริยาวิเศษณ์ ====
{{head|zh|คำกริยาวิเศษณ์}}
# {{lb|zh|Taishanese}} [[อย่างไร]]
# {{lb|zh|Taishanese}} [[ทำไม]]
===== คำพ้องความ =====
{{zh-dial|怎樣}}
{{zh-dial|為什麼}}
=== อ้างอิง ===
{{reflist}}
{{cat|cmn|Advanced Mandarin}}
{{C|zh|เรขาคณิต}}
== ภาษาญี่ปุ่น ==
=== รากศัพท์ 1 ===
{{ja-kanjitab|き|か|yomi=kanon}}
ย่อมาจาก {{ja-r|幾%何%学|き%か%がく|geometry}}.<ref name="KDJ">{{R:Kokugo Dai Jiten}}</ref><ref name="DJR"/>
ปรากฏหลักฐานครั้งแรกในช่วงต้น{{w|สมัยเมจิ}} ในเอกสารจากปี ค.ศ. 1886<ref name="KDJ"/>
==== การออกเสียง ====
{{ja-pron|きか|acc=1|acc_ref=DJR|acc2=2|acc2_ref=DJR|dev=1|acc2_note={{ja-non-lexical-pitch}}}}
==== คำนาม ====
{{ja-noun|きか}}
# {{defdate|1886}} {{lb|ja|sort=きか|mathematics|colloquial}} {{short for|ja|幾何学|tr=kikagaku|sort=}}: [[เรขาคณิต]]
===== ลูกคำ =====
{{col|ja
|{{ja-r|幾%何 異%性|き%か い%せい}}
|{{ja-r|幾%何 画%法|き%か が%ほう}}
|{{ja-r|幾%何 級%数|き%か きゅう%すう|[[geometric series]], [[geometric progression]]}}
|{{ja-r|幾%何 原%本|^き%か ^げん%ぽん}}
|{{ja-r|幾%何%光%学|き%か%こう%がく}}
|{{ja-r|幾%何 公%理|き%か こう%り}}
|{{ja-r|幾%何 数%列|き%か すう%れつ}}
|{{ja-r|幾%何 中%項|き%か ちゅう%こう}}
|{{ja-r|幾%何 平%均|き%か へい%きん}}
|{{ja-r|幾%何 模%様|き%か も%よう}}
|{{ja-r|位%相 幾%何|い%そう き%か|[[topology]]}}
|{{ja-r|代%数 幾%何|だい%すう き%か|[[algebraic geometry]]}}
|{{ja-r|直%観 幾%何|ちょっ%かん き%か}}
|{{ja-r|微%分 幾%何|び%ぶん き%か|[[differential geometry]]}}
|{{ja-r|ユークリッド幾%何|^ユークリッド き%か|[[Euclidean geometry]]}}
|{{ja-r|リーマン幾%何|^リーマン き%か|[[Riemannian geometry]]}}
|{{ja-r|論%証 幾%何|ろん%しょう き%か}}
}}
=== รากศัพท์ 2 ===
{{ja-kanjitab|yomi=k,i|いく|ばく}}
{{ja-see|幾許}}
==== หมายเหตุการใช้ ====
รูปสะกดคันจิเป็นการ{{obor|ja|zh|sort=いくはく|幾何|nocap=1}}
=== อ้างอิง ===
{{reflist}}
:* {{R:Kanjipedia Kotoba|0001249700}}
== ภาษาเวียดนาม ==
{{vi-hantutab}}
=== คำคุณศัพท์ ===
{{vi-adj|sc=Hani}}
# {{vi-Han form of|kỉ hà|เชิงเรขาคณิต}}
7sdugm1yxmdki69vsu1xcn89bhev1me
5759446
5759445
2026-09-01T10:20:24Z
Octahedron80
267
/* คำกริยาวิเศษณ์ */
5759446
wikitext
text/x-wiki
== ภาษาจีน ==
=== รากศัพท์ 1 ===
{{zh-forms|s=几何}}
; เรขาคณิต
: ปรากฏครั้งแรกในงานแปลตำรา {{w|Euclid's Elements|องค์ประกอบของยูคลิด}} โดย {{w|Xu Guangqi}} และ {{w|Matteo Ricci}} ในปี ค.ศ. 1607 ที่มาของคำนี้น่าจะมาจากความหมายของ "กี่" หรือ "เท่าไร" ซึ่งขยายความให้มีความหมายทางคณิตศาสตร์เกี่ยวกับจำนวนและขนาดโดยทั่วไป การนำคำนี้มาใช้เฉพาะในความหมายเรขาคณิตน่าจะเป็นผลมาจากการตีพิมพ์หนังสือเป็นชุด ๆ โดยมีช่วงเวลาห่างกันค่อนข้างนาน เมื่อหนังสือหกเล่มแรกได้รับการตีพิมพ์พร้อมกัน เนื้อหาหลักของงานนั้นเกี่ยวกับเรขาคณิตระนาบ ดังนั้น 幾何 จึงกลายเป็นคำที่หมายถึงเรื่องนั้นโดยเฉพาะ<ref>[https://www.gcoe.lit.nagoya-u.ac.jp/result/pdf/5-1_小川(E).pdf]<!--http://www.doc88.com/p-4923076545695.html--></ref>
==== การออกเสียง ====
{{zh-pron
|m=jǐhé,er=y
|m_note=Erhua-ed pronunciation is only used for the geometry sense
|c=gei2 ho4
|c-t=gei2 ho3
|mn=xm,zz,tw:kí-hô/qz:kí-hô͘/xm,zz:ki-hô/qz:ki-hô͘
|mn-t=gi1 ho5
|mc=3,1
|oc=2,2;1,1
|cat=adv,n
}}
==== คำกริยาวิเศษณ์ ====
{{head|zh|คำกริยาวิเศษณ์}}
# {{lb|zh|literary}} [[เท่าไร]]; มากแค่ไหน
#: {{zh-x|您 女兒 芳齡 幾何?|ลูกสาวของคุณอายุเท่าไหร่? [ราชาศัพท์]|lit=อายุของลูกสาวของคุณมากเท่าไร?}}
===== คำพ้องความ =====
{{zh-dial|多少}}
===== ลูกคำ =====
{{col3|zh|有幾何<tr:jau5 gei2 ho4-2>|無幾何|冇幾何<tr:mou5 gei2 ho4-2>|春秋幾何|相去幾何|俟河之清,人壽幾何}}
==== คำนาม ====
{{head|zh|คำนาม}}
# {{lb|zh|mathematics}} [[เรขาคณิต]] {{defdate|from 1607}}
===== ลูกคำ =====
{{col3|zh|幾何級數|幾何圖形|平面幾何|解析幾何|立體幾何|代數幾何|幾何學|微分幾何|幾何體|幾何光學|辛幾何}}
==== คำสืบทอด ====
{{CJKV||きか|기하|kỉ hà}}
* {{desc|sjo|ᡪᡞᡥᡝ|tr=jihe|bor=1}}
=== รากศัพท์ 2 ===
==== การออกเสียง ====
{{zh-forms|s=几何|alt=幾好}}
{{zh-pron
|c-t=gei2 hau4*
|cat=adv
}}
==== คำกริยาวิเศษณ์ ====
{{head|zh|คำกริยาวิเศษณ์}}
# {{lb|zh|ห่อยซัน}} [[อย่างไร]]
# {{lb|zh|ห่อยซัน}} [[ทำไม]]
===== คำพ้องความ =====
{{zh-dial|怎樣}}
{{zh-dial|為什麼}}
=== อ้างอิง ===
{{reflist}}
{{cat|cmn|Advanced Mandarin}}
{{C|zh|เรขาคณิต}}
== ภาษาญี่ปุ่น ==
=== รากศัพท์ 1 ===
{{ja-kanjitab|き|か|yomi=kanon}}
ย่อมาจาก {{ja-r|幾%何%学|き%か%がく|geometry}}.<ref name="KDJ">{{R:Kokugo Dai Jiten}}</ref><ref name="DJR"/>
ปรากฏหลักฐานครั้งแรกในช่วงต้น{{w|สมัยเมจิ}} ในเอกสารจากปี ค.ศ. 1886<ref name="KDJ"/>
==== การออกเสียง ====
{{ja-pron|きか|acc=1|acc_ref=DJR|acc2=2|acc2_ref=DJR|dev=1|acc2_note={{ja-non-lexical-pitch}}}}
==== คำนาม ====
{{ja-noun|きか}}
# {{defdate|1886}} {{lb|ja|sort=きか|mathematics|colloquial}} {{short for|ja|幾何学|tr=kikagaku|sort=}}: [[เรขาคณิต]]
===== ลูกคำ =====
{{col|ja
|{{ja-r|幾%何 異%性|き%か い%せい}}
|{{ja-r|幾%何 画%法|き%か が%ほう}}
|{{ja-r|幾%何 級%数|き%か きゅう%すう|[[geometric series]], [[geometric progression]]}}
|{{ja-r|幾%何 原%本|^き%か ^げん%ぽん}}
|{{ja-r|幾%何%光%学|き%か%こう%がく}}
|{{ja-r|幾%何 公%理|き%か こう%り}}
|{{ja-r|幾%何 数%列|き%か すう%れつ}}
|{{ja-r|幾%何 中%項|き%か ちゅう%こう}}
|{{ja-r|幾%何 平%均|き%か へい%きん}}
|{{ja-r|幾%何 模%様|き%か も%よう}}
|{{ja-r|位%相 幾%何|い%そう き%か|[[topology]]}}
|{{ja-r|代%数 幾%何|だい%すう き%か|[[algebraic geometry]]}}
|{{ja-r|直%観 幾%何|ちょっ%かん き%か}}
|{{ja-r|微%分 幾%何|び%ぶん き%か|[[differential geometry]]}}
|{{ja-r|ユークリッド幾%何|^ユークリッド き%か|[[Euclidean geometry]]}}
|{{ja-r|リーマン幾%何|^リーマン き%か|[[Riemannian geometry]]}}
|{{ja-r|論%証 幾%何|ろん%しょう き%か}}
}}
=== รากศัพท์ 2 ===
{{ja-kanjitab|yomi=k,i|いく|ばく}}
{{ja-see|幾許}}
==== หมายเหตุการใช้ ====
รูปสะกดคันจิเป็นการ{{obor|ja|zh|sort=いくはく|幾何|nocap=1}}
=== อ้างอิง ===
{{reflist}}
:* {{R:Kanjipedia Kotoba|0001249700}}
== ภาษาเวียดนาม ==
{{vi-hantutab}}
=== คำคุณศัพท์ ===
{{vi-adj|sc=Hani}}
# {{vi-Han form of|kỉ hà|เชิงเรขาคณิต}}
32p1q24wm7hogwh3an236b0dofazuyj
5759447
5759446
2026-09-01T10:20:43Z
Octahedron80
267
/* รากศัพท์ 1 */
5759447
wikitext
text/x-wiki
== ภาษาจีน ==
=== รากศัพท์ 1 ===
{{zh-forms|s=几何}}
; เรขาคณิต
: ปรากฏครั้งแรกในงานแปลตำรา {{w|Euclid's Elements|องค์ประกอบของยูคลิด}} โดย {{w|Xu Guangqi}} และ {{w|Matteo Ricci}} ในปี ค.ศ. 1607 ที่มาของคำนี้น่าจะมาจากความหมายของ "กี่" หรือ "เท่าไร" ซึ่งขยายความให้มีความหมายทางคณิตศาสตร์เกี่ยวกับจำนวนและขนาดโดยทั่วไป การนำคำนี้มาใช้เฉพาะในความหมายเรขาคณิตน่าจะเป็นผลมาจากการตีพิมพ์หนังสือเป็นชุด ๆ โดยมีช่วงเวลาห่างกันค่อนข้างนาน เมื่อหนังสือหกเล่มแรกได้รับการตีพิมพ์พร้อมกัน เนื้อหาหลักของงานนั้นเกี่ยวกับเรขาคณิตระนาบ ดังนั้น 幾何 จึงกลายเป็นคำที่หมายถึงเรื่องนั้นโดยเฉพาะ<ref>[https://www.gcoe.lit.nagoya-u.ac.jp/result/pdf/5-1_小川(E).pdf]<!--http://www.doc88.com/p-4923076545695.html--></ref>
==== การออกเสียง ====
{{zh-pron
|m=jǐhé,er=y
|m_note=Erhua-ed pronunciation is only used for the geometry sense
|c=gei2 ho4
|c-t=gei2 ho3
|mn=xm,zz,tw:kí-hô/qz:kí-hô͘/xm,zz:ki-hô/qz:ki-hô͘
|mn-t=gi1 ho5
|mc=3,1
|oc=2,2;1,1
|cat=adv,n
}}
==== คำกริยาวิเศษณ์ ====
{{head|zh|คำกริยาวิเศษณ์}}
# {{lb|zh|literary}} [[เท่าไร]]; มากแค่ไหน
#: {{zh-x|您 女兒 芳齡 幾何?|ลูกสาวของคุณอายุเท่าไหร่? [ราชาศัพท์]|lit=อายุของลูกสาวของคุณมากเท่าไร?}}
===== คำพ้องความ =====
{{zh-dial|多少}}
===== ลูกคำ =====
{{col3|zh|有幾何<tr:jau5 gei2 ho4-2>|無幾何|冇幾何<tr:mou5 gei2 ho4-2>|春秋幾何|相去幾何|俟河之清,人壽幾何}}
==== คำนาม ====
{{head|zh|คำนาม}}
# {{lb|zh|mathematics}} [[เรขาคณิต]] {{defdate|from 1607}}
===== ลูกคำ =====
{{col3|zh|幾何級數|幾何圖形|平面幾何|解析幾何|立體幾何|代數幾何|幾何學|微分幾何|幾何體|幾何光學|辛幾何}}
==== คำสืบทอด ====
{{CJKV||きか|기하|kỉ hà}}
* {{desc|sjo|ᡪᡞᡥᡝ|tr=jihe|bor=1}}
=== รากศัพท์ 2 ===
==== การออกเสียง ====
{{zh-forms|s=几何|alt=幾好}}
{{zh-pron
|c-t=gei2 hau4*
|cat=adv
}}
==== คำกริยาวิเศษณ์ ====
{{head|zh|คำกริยาวิเศษณ์}}
# {{lb|zh|ห่อยซัน}} [[อย่างไร]]
# {{lb|zh|ห่อยซัน}} [[ทำไม]]
===== คำพ้องความ =====
{{zh-dial|怎樣}}
{{zh-dial|為什麼}}
=== อ้างอิง ===
{{reflist}}
{{cat|cmn|Advanced Mandarin}}
{{C|zh|เรขาคณิต}}
== ภาษาญี่ปุ่น ==
=== รากศัพท์ 1 ===
{{ja-kanjitab|き|か|yomi=kanon}}
ย่อมาจาก {{ja-r|幾%何%学|き%か%がく|เรขาคณิต}}<ref name="KDJ">{{R:Kokugo Dai Jiten}}</ref><ref name="DJR"/>
ปรากฏหลักฐานครั้งแรกในช่วงต้น{{w|สมัยเมจิ}} ในเอกสารจากปี ค.ศ. 1886<ref name="KDJ"/>
==== การออกเสียง ====
{{ja-pron|きか|acc=1|acc_ref=DJR|acc2=2|acc2_ref=DJR|dev=1|acc2_note={{ja-non-lexical-pitch}}}}
==== คำนาม ====
{{ja-noun|きか}}
# {{defdate|1886}} {{lb|ja|sort=きか|mathematics|colloquial}} {{short for|ja|幾何学|tr=kikagaku|sort=}}: [[เรขาคณิต]]
===== ลูกคำ =====
{{col|ja
|{{ja-r|幾%何 異%性|き%か い%せい}}
|{{ja-r|幾%何 画%法|き%か が%ほう}}
|{{ja-r|幾%何 級%数|き%か きゅう%すう|[[geometric series]], [[geometric progression]]}}
|{{ja-r|幾%何 原%本|^き%か ^げん%ぽん}}
|{{ja-r|幾%何%光%学|き%か%こう%がく}}
|{{ja-r|幾%何 公%理|き%か こう%り}}
|{{ja-r|幾%何 数%列|き%か すう%れつ}}
|{{ja-r|幾%何 中%項|き%か ちゅう%こう}}
|{{ja-r|幾%何 平%均|き%か へい%きん}}
|{{ja-r|幾%何 模%様|き%か も%よう}}
|{{ja-r|位%相 幾%何|い%そう き%か|[[topology]]}}
|{{ja-r|代%数 幾%何|だい%すう き%か|[[algebraic geometry]]}}
|{{ja-r|直%観 幾%何|ちょっ%かん き%か}}
|{{ja-r|微%分 幾%何|び%ぶん き%か|[[differential geometry]]}}
|{{ja-r|ユークリッド幾%何|^ユークリッド き%か|[[Euclidean geometry]]}}
|{{ja-r|リーマン幾%何|^リーマン き%か|[[Riemannian geometry]]}}
|{{ja-r|論%証 幾%何|ろん%しょう き%か}}
}}
=== รากศัพท์ 2 ===
{{ja-kanjitab|yomi=k,i|いく|ばく}}
{{ja-see|幾許}}
==== หมายเหตุการใช้ ====
รูปสะกดคันจิเป็นการ{{obor|ja|zh|sort=いくはく|幾何|nocap=1}}
=== อ้างอิง ===
{{reflist}}
:* {{R:Kanjipedia Kotoba|0001249700}}
== ภาษาเวียดนาม ==
{{vi-hantutab}}
=== คำคุณศัพท์ ===
{{vi-adj|sc=Hani}}
# {{vi-Han form of|kỉ hà|เชิงเรขาคณิต}}
q4co2nszrao3hd66owr803jrgkegi6s
5759450
5759447
2026-09-01T10:25:08Z
Octahedron80
267
/* คำกริยาวิเศษณ์ */
5759450
wikitext
text/x-wiki
== ภาษาจีน ==
=== รากศัพท์ 1 ===
{{zh-forms|s=几何}}
; เรขาคณิต
: ปรากฏครั้งแรกในงานแปลตำรา {{w|Euclid's Elements|องค์ประกอบของยูคลิด}} โดย {{w|Xu Guangqi}} และ {{w|Matteo Ricci}} ในปี ค.ศ. 1607 ที่มาของคำนี้น่าจะมาจากความหมายของ "กี่" หรือ "เท่าไร" ซึ่งขยายความให้มีความหมายทางคณิตศาสตร์เกี่ยวกับจำนวนและขนาดโดยทั่วไป การนำคำนี้มาใช้เฉพาะในความหมายเรขาคณิตน่าจะเป็นผลมาจากการตีพิมพ์หนังสือเป็นชุด ๆ โดยมีช่วงเวลาห่างกันค่อนข้างนาน เมื่อหนังสือหกเล่มแรกได้รับการตีพิมพ์พร้อมกัน เนื้อหาหลักของงานนั้นเกี่ยวกับเรขาคณิตระนาบ ดังนั้น 幾何 จึงกลายเป็นคำที่หมายถึงเรื่องนั้นโดยเฉพาะ<ref>[https://www.gcoe.lit.nagoya-u.ac.jp/result/pdf/5-1_小川(E).pdf]<!--http://www.doc88.com/p-4923076545695.html--></ref>
==== การออกเสียง ====
{{zh-pron
|m=jǐhé,er=y
|m_note=Erhua-ed pronunciation is only used for the geometry sense
|c=gei2 ho4
|c-t=gei2 ho3
|mn=xm,zz,tw:kí-hô/qz:kí-hô͘/xm,zz:ki-hô/qz:ki-hô͘
|mn-t=gi1 ho5
|mc=3,1
|oc=2,2;1,1
|cat=adv,n
}}
==== คำกริยาวิเศษณ์ ====
{{head|zh|คำกริยาวิเศษณ์}}
# {{lb|zh|literary}} [[เท่าไร]]; มากแค่ไหน
#: {{zh-x|您 女兒 芳齡 幾何?|ลูกสาวของคุณอายุเท่าไหร่? [ราชาศัพท์]|lit=อายุของลูกสาวของคุณคือเท่าไร?}}
===== คำพ้องความ =====
{{zh-dial|多少}}
===== ลูกคำ =====
{{col3|zh|有幾何<tr:jau5 gei2 ho4-2>|無幾何|冇幾何<tr:mou5 gei2 ho4-2>|春秋幾何|相去幾何|俟河之清,人壽幾何}}
==== คำนาม ====
{{head|zh|คำนาม}}
# {{lb|zh|mathematics}} [[เรขาคณิต]] {{defdate|from 1607}}
===== ลูกคำ =====
{{col3|zh|幾何級數|幾何圖形|平面幾何|解析幾何|立體幾何|代數幾何|幾何學|微分幾何|幾何體|幾何光學|辛幾何}}
==== คำสืบทอด ====
{{CJKV||きか|기하|kỉ hà}}
* {{desc|sjo|ᡪᡞᡥᡝ|tr=jihe|bor=1}}
=== รากศัพท์ 2 ===
==== การออกเสียง ====
{{zh-forms|s=几何|alt=幾好}}
{{zh-pron
|c-t=gei2 hau4*
|cat=adv
}}
==== คำกริยาวิเศษณ์ ====
{{head|zh|คำกริยาวิเศษณ์}}
# {{lb|zh|ห่อยซัน}} [[อย่างไร]]
# {{lb|zh|ห่อยซัน}} [[ทำไม]]
===== คำพ้องความ =====
{{zh-dial|怎樣}}
{{zh-dial|為什麼}}
=== อ้างอิง ===
{{reflist}}
{{cat|cmn|Advanced Mandarin}}
{{C|zh|เรขาคณิต}}
== ภาษาญี่ปุ่น ==
=== รากศัพท์ 1 ===
{{ja-kanjitab|き|か|yomi=kanon}}
ย่อมาจาก {{ja-r|幾%何%学|き%か%がく|เรขาคณิต}}<ref name="KDJ">{{R:Kokugo Dai Jiten}}</ref><ref name="DJR"/>
ปรากฏหลักฐานครั้งแรกในช่วงต้น{{w|สมัยเมจิ}} ในเอกสารจากปี ค.ศ. 1886<ref name="KDJ"/>
==== การออกเสียง ====
{{ja-pron|きか|acc=1|acc_ref=DJR|acc2=2|acc2_ref=DJR|dev=1|acc2_note={{ja-non-lexical-pitch}}}}
==== คำนาม ====
{{ja-noun|きか}}
# {{defdate|1886}} {{lb|ja|sort=きか|mathematics|colloquial}} {{short for|ja|幾何学|tr=kikagaku|sort=}}: [[เรขาคณิต]]
===== ลูกคำ =====
{{col|ja
|{{ja-r|幾%何 異%性|き%か い%せい}}
|{{ja-r|幾%何 画%法|き%か が%ほう}}
|{{ja-r|幾%何 級%数|き%か きゅう%すう|[[geometric series]], [[geometric progression]]}}
|{{ja-r|幾%何 原%本|^き%か ^げん%ぽん}}
|{{ja-r|幾%何%光%学|き%か%こう%がく}}
|{{ja-r|幾%何 公%理|き%か こう%り}}
|{{ja-r|幾%何 数%列|き%か すう%れつ}}
|{{ja-r|幾%何 中%項|き%か ちゅう%こう}}
|{{ja-r|幾%何 平%均|き%か へい%きん}}
|{{ja-r|幾%何 模%様|き%か も%よう}}
|{{ja-r|位%相 幾%何|い%そう き%か|[[topology]]}}
|{{ja-r|代%数 幾%何|だい%すう き%か|[[algebraic geometry]]}}
|{{ja-r|直%観 幾%何|ちょっ%かん き%か}}
|{{ja-r|微%分 幾%何|び%ぶん き%か|[[differential geometry]]}}
|{{ja-r|ユークリッド幾%何|^ユークリッド き%か|[[Euclidean geometry]]}}
|{{ja-r|リーマン幾%何|^リーマン き%か|[[Riemannian geometry]]}}
|{{ja-r|論%証 幾%何|ろん%しょう き%か}}
}}
=== รากศัพท์ 2 ===
{{ja-kanjitab|yomi=k,i|いく|ばく}}
{{ja-see|幾許}}
==== หมายเหตุการใช้ ====
รูปสะกดคันจิเป็นการ{{obor|ja|zh|sort=いくはく|幾何|nocap=1}}
=== อ้างอิง ===
{{reflist}}
:* {{R:Kanjipedia Kotoba|0001249700}}
== ภาษาเวียดนาม ==
{{vi-hantutab}}
=== คำคุณศัพท์ ===
{{vi-adj|sc=Hani}}
# {{vi-Han form of|kỉ hà|เชิงเรขาคณิต}}
dlsx9m76rhdphcvv7y719dl8wy6yqjq
แม่แบบ:ja-non-lexical-pitch
10
2358232
5759448
2026-09-01T10:22:50Z
Octahedron80
267
นำเข้าจาก enwikt
5759448
wikitext
text/x-wiki
สำเนียงสูงต่ำที่ไม่เกี่ยวข้องกับคำศัพท์ ซึ่งผู้พูดบางคนใช้เพื่อประสานความสอดคล้องระหว่างการเปล่งเสียงและการเน้นเสียงที่เกิดขึ้นพร้อมกัน<!--
--><noinclude>[[Category:Japanese usage templates]]</noinclude>
olma3bwqdbayvmgqu4l84bw8f21zqmn
幾好
0
2358233
5759449
2026-09-01T10:23:38Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759449
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|s=几好}}
=== การออกเสียง ===
{{zh-pron
|c=gei2 hou2
|cat=a
}}
=== คำคุณศัพท์ ===
{{head|zh|คำคุณศัพท์}}
# {{lb|zh|กวางตุ้ง}} [[ไม่เลว]]; [[ค่อนข้าง]][[ดี]]
==== คำพ้องความ ====
{{zh-dial|不錯}}
iz6fe90s6xuo76auqrdouuth94dm7pr
幾何学
0
2358234
5759451
2026-09-01T10:26:26Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759451
wikitext
text/x-wiki
== ภาษาญี่ปุ่น ==
{{ja-kanjitab|yomi=kanon|き|か|がく}}
{{swp|ja:}}
=== รากศัพท์ ===
จาก{{ja-com|幾何|きか|t1=เรขาคณิต|学|-がく|t2=ศาสตร์; วิทยา}}<ref>{{R:Kokugo Dai Jiten}}</ref><ref>{{R:Daijisen}}</ref><ref name="DJR"/>
=== การออกเสียง ===
{{ja-pron|きかがく|acc=2|dev=1|acc_ref=DJR,NHK,SMK5}}
=== คำนาม ===
{{ja-noun|きかがく}}
# [[เรขาคณิต]]
==== ลูกคำ ====
* {{ja-r|幾%何%学%的|き%か%がく%てき|[[geometrical]]}}
=== อ้างอิง ===
{{reflist}}
:* {{R:Kojien}}
{{top|ja|เรขาคณิต}}
4r2jmd22oyp1d5f1t92lny79os28c91
5759452
5759451
2026-09-01T10:26:37Z
Octahedron80
267
/* ลูกคำ */
5759452
wikitext
text/x-wiki
== ภาษาญี่ปุ่น ==
{{ja-kanjitab|yomi=kanon|き|か|がく}}
{{swp|ja:}}
=== รากศัพท์ ===
จาก{{ja-com|幾何|きか|t1=เรขาคณิต|学|-がく|t2=ศาสตร์; วิทยา}}<ref>{{R:Kokugo Dai Jiten}}</ref><ref>{{R:Daijisen}}</ref><ref name="DJR"/>
=== การออกเสียง ===
{{ja-pron|きかがく|acc=2|dev=1|acc_ref=DJR,NHK,SMK5}}
=== คำนาม ===
{{ja-noun|きかがく}}
# [[เรขาคณิต]]
==== ลูกคำ ====
* {{ja-r|幾%何%学%的|き%か%がく%てき|เชิงเรขาคณิต}}
=== อ้างอิง ===
{{reflist}}
:* {{R:Kojien}}
{{top|ja|เรขาคณิต}}
qqdh1xjc35iat3kbyn5hq35ul8w917e
幾何學
0
2358235
5759453
2026-09-01T10:27:08Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759453
wikitext
text/x-wiki
== ภาษาเกาหลี ==
{{ko-hanjatab}}
=== คำนาม ===
{{ko-noun|hj|hangeul=기하학}}
# {{hanja form of|기하학|เรขาคณิต}}
== ภาษาจีน ==
{{zh-forms|s=几何学|type=21}}
{{wp|zh:}}
=== การออกเสียง ===
{{zh-pron
|m=jǐhéxué
|c=gei2 ho4 hok6
|ca=LL-Q9186 (yue)-Justinrleung-幾何學.wav
|mn=xm,zz,tw:kí-hô-ha̍k/xm,zz:ki-hô-ha̍k/qz:ki-hô͘-ha̍k
|cat=n
}}
=== คำนาม ===
{{head|zh|คำนาม}}
# {{lb|zh|math}} [[เรขาคณิต]]
==== ลูกคำ ====
{{col3|zh|幾何學家|代數幾何學|平面幾何學}}
== ภาษาญี่ปุ่น ==
{{ja-kanjitab|き|か|がく|yomi=o}}
{{ja-see|幾何学}}
0p01tckam5a5qn99k1xt88og1u8o9zl
기하학
0
2358236
5759454
2026-09-01T10:27:31Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759454
wikitext
text/x-wiki
== ภาษาเกาหลี ==
=== รากศัพท์ ===
{{ko-etym-sino|幾何|geometry|學|-logy|suffix=y}}
=== การออกเสียง ===
{{ko-IPA}}
=== คำนาม ===
{{ko-noun|hanja=幾何學}}
# [[เรขาคณิต]]
==== ลูกคำ ====
* {{ko-l|기하학적|geometric|幾何學的}}
{{C|ko|เรขาคณิต}}
atoqcemc349o6vy7zg21l34fh8mo7oh
5759455
5759454
2026-09-01T10:27:45Z
Octahedron80
267
/* รากศัพท์ */
5759455
wikitext
text/x-wiki
== ภาษาเกาหลี ==
=== รากศัพท์ ===
{{ko-etym-sino|幾何|เรขาคณิต|學|ศาสตร์, วิทยา|suffix=y}}
=== การออกเสียง ===
{{ko-IPA}}
=== คำนาม ===
{{ko-noun|hanja=幾何學}}
# [[เรขาคณิต]]
==== ลูกคำ ====
* {{ko-l|기하학적|geometric|幾何學的}}
{{C|ko|เรขาคณิต}}
f8rpnwyrjiox1b8i6qaj3yafuuw0lxq
5759456
5759455
2026-09-01T10:27:56Z
Octahedron80
267
/* ลูกคำ */
5759456
wikitext
text/x-wiki
== ภาษาเกาหลี ==
=== รากศัพท์ ===
{{ko-etym-sino|幾何|เรขาคณิต|學|ศาสตร์, วิทยา|suffix=y}}
=== การออกเสียง ===
{{ko-IPA}}
=== คำนาม ===
{{ko-noun|hanja=幾何學}}
# [[เรขาคณิต]]
==== ลูกคำ ====
* {{ko-l|기하학적|เชิงเรขาคณิต|幾何學的}}
{{C|ko|เรขาคณิต}}
k67iav7kp05dfk3spko3vc42ku2sw3z
代數幾何
0
2358237
5759457
2026-09-01T10:28:57Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759457
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|s=代数几何|type=22}}
=== การออกเสียง ===
{{zh-pron
|m=dàishù jǐhé
|c=doi6 sou3 gei2 ho4
|cat=n
}}
=== คำนาม ===
{{head|zh|คำนาม}}
# {{lb|zh|mathematics}} [[เรขาคณิตเชิงพีชคณิต]]
4tzv0tfhpggyybpmz1qajcqsxivshp3
平面幾何
0
2358238
5759458
2026-09-01T10:29:22Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759458
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|s=平面几何|type=22}}
=== การออกเสียง ===
{{zh-pron
|m=píngmiàn jǐhé
|c=ping4 min6-2 gei2 ho4
|cat=n
}}
=== คำนาม ===
{{head|zh|คำนาม}}
# [[เรขาคณิตระนาบ]]
{{C|zh|เรขาคณิต}}
nc53aoanxm4jahzupujdl4u1i849ub3
幾何光學
0
2358239
5759459
2026-09-01T10:30:03Z
Octahedron80
267
นำเข้าจาก enwikt
5759459
wikitext
text/x-wiki
==Chinese==
{{zh-forms|s=几何光学|type=22|geometry; geometrical}}
{{wp|zh:}}
===Pronunciation===
{{zh-pron
|m=jǐhé guāngxué
|c=gei2 ho4 gwong1 hok6
|cat=n
}}
===Noun===
{{head|zh|noun}}
# {{lb|zh|physics}} [[ทัศนศาสตร์เชิงเรขาคณิต]]
{{C|zh|ทัศนศาสตร์}}
4o6d21l6bf69uk5co8kxyc5godkrftg
幾何級數
0
2358240
5759460
2026-09-01T10:31:08Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759460
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|s=几何级数|type=22}}
=== การออกเสียง ===
{{zh-pron
|m=jǐhé jíshù
|c=gei2 ho4 kap1 sou3
|cat=n,adv
}}
=== คำนาม ===
{{head|zh|คำนาม}}
# {{lb|zh|mathematics}} [[อนุกรมเรขาคณิต]]
==== คำพ้องความ ====
* {{zh-l|等比級數}}
=== คำกริยาวิเศษณ์ ===
{{head|zh|คำกริยาวิเศษณ์}}
# {{lb|zh|figuratively}} (เพิ่มขึ้น) อย่าง[[ทวีคูณ]]
qrpvd8yp19m1l7bd1eurd64alaj68w0
幾何圖形
0
2358241
5759461
2026-09-01T10:31:47Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759461
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|s=几何图形|type=22}}
=== การออกเสียง ===
{{zh-pron
|m=jǐhé túxíng
|cat=n
}}
=== คำนาม ===
{{head|zh|คำนาม}}
# [[รูปทรง]][[เรขาคณิต]]
==== คำพ้องความ ====
* {{q|short form}} {{zh-l|圖形}}
{{C|zh|เรขาคณิต}}
4oz21skobcjrfuz1hrfn7fsz3n3vp6d
5759462
5759461
2026-09-01T10:31:58Z
Octahedron80
267
/* คำพ้องความ */
5759462
wikitext
text/x-wiki
== ภาษาจีน ==
{{zh-forms|s=几何图形|type=22}}
=== การออกเสียง ===
{{zh-pron
|m=jǐhé túxíng
|cat=n
}}
=== คำนาม ===
{{head|zh|คำนาม}}
# [[รูปทรง]][[เรขาคณิต]]
==== คำพ้องความ ====
* {{q|รูปสั้น}} {{zh-l|圖形}}
{{C|zh|เรขาคณิต}}
citrz8kxfn06se8pr4mvp19umdb00r6
geometrio
0
2358242
5759463
2026-09-01T10:33:14Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759463
wikitext
text/x-wiki
== ภาษาเอสเปรันโต ==
=== การออกเสียง ===
{{eo-pr|a=LL-Q143 (epo)-Lepticed7-geometrio.wav}}
=== คำนาม ===
{{eo-head}}
# [[เรขาคณิต]]
9acn61stygkce4pdesh749ttek1nvq7
mittausoppi
0
2358243
5759464
2026-09-01T10:33:38Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759464
wikitext
text/x-wiki
== ภาษาฟินแลนด์ ==
=== รากศัพท์ ===
{{affix|fi|mittaus|oppi}}
=== การออกเสียง ===
{{fi-pronunciation|mittaus-oppi}}
=== คำนาม ===
{{fi-noun}} {{tlb|fi|dated}}
# {{synonym of|fi|geometria}}
==== การผันรูป ====
{{fi-decl-risti|mittauso|pp|p|a}}
=== อ่านเพิ่ม ===
* {{R:fi:KTSK|accessdate=2023-07-03}}
sejweqq54l6jll09vbot7ean0gy3018
გეომეტრია
0
2358244
5759465
2026-09-01T10:34:24Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759465
wikitext
text/x-wiki
== ภาษาจอร์เจีย ==
=== รากศัพท์ ===
จาก{{der|ka|grc|γεωμετρία}}
=== การออกเสียง ===
* {{ka-IPA}}
=== คำนาม ===
{{ka-noun|-}}
# [[เรขาคณิต]]
==== การผันรูป ====
{{ka-decl-noun|-}}
eoudhah8ighxqqnvtugueyhgae64mhm
Raumlehre
0
2358245
5759466
2026-09-01T10:34:45Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759466
wikitext
text/x-wiki
== ภาษาเยอรมัน ==
=== รากศัพท์ ===
{{ety|de|:af|Raum|Lehre}}
จาก{{compound|de|Raum|Lehre}}
=== การออกเสียง ===
* {{IPA|de|/ˈʁaʊ̯mleːʁə/}}
* {{audio|de|De-Raumlehre.ogg|a=<<Germany>> (<<Berlin>>)}}
* {{hyphenation|de|Raum|leh|re}}
=== คำนาม ===
{{de-noun|f}}
# [[เรขาคณิต]]
==== การผันรูป ====
{{de-ndecl|f}}
==== อ่านเพิ่ม ====
* {{R:de:Duden}}
iwwdykjhmhm8l58c2weol2dd11itn8h
γεωμετρία
0
2358246
5759467
2026-09-01T10:36:16Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา
5759467
wikitext
text/x-wiki
== ภาษากรีก ==
=== คำนาม ===
{{el-noun|f|γεωμετρίες}}
# {{lb|el|mathematics}} [[เรขาคณิต]]
==== การผันรูป ====
{{el-nF-α-ες-2b|γεωμετρί|γεωμετρι}}
==== คำพ้องความ ====
* {{l|el|γεωμ.}} {{qualifier|คำย่อ}}
==== ดูเพิ่ม ====
{{see|el|μαθηματικά|g=n-p|gloss=คณิตศาสตร์}}
==== อ่านเพิ่ม ====
* {{pedia|lang=el}}
== ภาษากรีกโบราณ ==
=== รูปแบบอื่น ===
* {{alter|grc|γαμετρία||dor}}
* {{alter|grc|γεωμετρίη||ion}}
=== รากศัพท์ ===
{{ety|grc|:af|γεω-<t:ที่ดิน>|-μετρίᾱ<t:การวัด>}}
{{affix|grc|γεω-|t1=ที่ดิน|-μετρίᾱ|t2=การวัด}}
=== การออกเสียง ===
{{grc-IPA|γεωμετρῐ́ᾱ}}
=== คำนาม ===
{{grc-noun|head=γεωμετρῐ́ᾱ|γεωμετρῐ́ᾱς|f|first}}
# {{lb|grc|math}} [[เรขาคณิต]]
# [[การรังวัด]][[ที่ดิน]]
# [[ภาษีที่ดิน]]
==== การผันรูป ====
{{grc-decl|γεωμετρῐ́ᾱ|γεωμετρῐ́ᾱς}}
==== คำเกี่ยวข้อง ====
{{col|grc
|γεωμετρέω
|γεωμέτρης
|γεωμέτρητος
|γεωμετρικός
}}
==== คำสืบทอด ====
* {{desc|el|γεωμετρία}}
* {{desc|arc|גִּימַטְרְיָא|tr=gīmāṭrəyā|bor=1}}
* {{desc|la|geōmetria|bor=1}}
=== อ้างอิง ===
* {{R:grc:LSJ}}
* {{R:grc:Middle Liddell}}
* {{R:grc:DGE}}
* {{R:grc:Bailly|400}}
* {{R:grc:Brill|427}}
* {{R:grc:Woodhouse}}
{{C|grc|เรขาคณิต|Surveying}}
l8kqrck2pzybp1n3s2l1iyc3crr586m
ભૂમિતિ
0
2358247
5759468
2026-09-01T10:37:01Z
Octahedron80
267
นำเข้าจาก enwikt เก็บกวาด
5759468
wikitext
text/x-wiki
== ภาษาคุชราต ==
=== รากศัพท์ ===
จาก{{compound|gu|ભૂ|મિતિ}}
=== คำนาม ===
{{gu-noun|g=f}}
# [[เรขาคณิต]]
7vc6auxfk063niz0w6n4dcshflld5d7
คุยกับผู้ใช้:กุศลิน ผู้มีศิล
3
2358248
5759469
2026-09-01T11:48:04Z
New user message
2698
เพิ่ม[[Template:Welcome|สารต้อนรับ]]ในหน้าคุยของผู้ใช้ใหม่
5759469
wikitext
text/x-wiki
{{Template:Welcome|realName=|name=กุศลิน ผู้มีศิล}}
-- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 18:48, 1 กันยายน 2569 (+07)
s31uxmtigp4deg5b0fxkvuq4uod8enf