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") .. ") &mdash; " ) or " &mdash; " ) .. 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}}}|-|&mdash;|{{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}}}|-|&mdash;|{{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}}}|-|&mdash;|{{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}}}}}}} | &mdash; {{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}}}|-|&mdash;|{{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}}}}}}}}&amp;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|}}}||&#32;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] | &#91;[[w:Jonathan Swift|Jonathan Swift]]&#93; }} | &#91;[[w:Jonathan Swift|Jonathan Swift]]&#93; }} |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}} | &#91;[[w:Jonathan Swift|Jonathan Swift]]&#93; }} }} |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 = &#91;{{{page|{{{2|}}}}}}&#93; | {{{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&nbsp;/ Than ''{{w|Tycho Brahe}}'', or ''[[w:Erra-Pater|Erra Pater]]'' :&nbsp;/ For he, by '''Geometrick''' scale,&nbsp;/ Could take the size of ''Pots of Ale'' ;&nbsp;/ Resolve by Signs and Tangents streight,&nbsp;/ If ''Bread'' or ''Butter'' wanted weight;&nbsp;/ And wisely tell what hour o’th’ day&nbsp;/ 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&nbsp;/ Than ''{{w|Tycho Brahe}}'', or ''[[w:Erra-Pater|Erra Pater]]'' :&nbsp;/ For he, by '''Geometrick''' scale,&nbsp;/ Could take the size of ''Pots of Ale'' ;&nbsp;/ Resolve by Signs and Tangents streight,&nbsp;/ If ''Bread'' or ''Butter'' wanted weight;&nbsp;/ And wisely tell what hour o’th’ day&nbsp;/ 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&nbsp;/ Than ''{{w|Tycho Brahe}}'', or ''[[w:Erra-Pater|Erra Pater]]'' :&nbsp;/ For he, by '''Geometrick''' scale,&nbsp;/ Could take the size of ''Pots of Ale'' ;&nbsp;/ Resolve by Signs and Tangents streight,&nbsp;/ If ''Bread'' or ''Butter'' wanted weight;&nbsp;/ And wisely tell what hour o’th’ day&nbsp;/ 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