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.14 case-sensitive สื่อ พิเศษ พูดคุย ผู้ใช้ คุยกับผู้ใช้ วิกิพจนานุกรม คุยเรื่องวิกิพจนานุกรม ไฟล์ คุยเรื่องไฟล์ มีเดียวิกิ คุยเรื่องมีเดียวิกิ แม่แบบ คุยเรื่องแม่แบบ วิธีใช้ คุยเรื่องวิธีใช้ หมวดหมู่ คุยเรื่องหมวดหมู่ ภาคผนวก คุยเรื่องภาคผนวก ดัชนี คุยเรื่องดัชนี สัมผัส คุยเรื่องสัมผัส อรรถาภิธาน คุยเรื่องอรรถาภิธาน TimedText TimedText talk มอดูล คุยเรื่องมอดูล Event Event talk animal 0 3529 5754500 5688305 2026-08-06T07:53:12Z OctraBot 3198 /* รากศัพท์ */ 5754500 wikitext text/x-wiki {{minitoc}} == ภาษากาตาลา == === รากศัพท์ === {{bor+|ca|la|animal}} === การออกเสียง === * {{ca-IPA}} * {{audio|ca|LL-Q7026 (cat)-Millars-animal.wav|a=Valencia}} * {{rhyme|ca|al|s=3}} * {{hyph|ca|a|ni|mal}} === คำคุณศัพท์ === {{ca-adj}} # [[ที่]][[เกี่ยว]][[กับ]]สัตว์ === คำนาม === {{ca-noun|m}} # [[สัตว์]] ==== ลูกคำ ==== * {{l|ca|animalada}} * {{l|ca|animalitzar|t=ทำให้เป็นสัตว์}} === อ่านเพิ่ม === * {{R:ca:IEC2}} * {{R:ca:GDLC}} * {{R:ca:DNV}} * {{R:ca:DCVB}} {{C|ca|สัตว์}} == ภาษากาปัมปางัน == === รากศัพท์ === {{bor+|pam|es|animal}} === การออกเสียง === * {{pam-IPA}} * {{hyph|pam|a|ni|mal}} === คำนาม === {{pam-noun}} # [[สัตว์]] #: {{syn|pam|ayup}} == ภาษากาลิเซีย == {{wp|gl:}} === รากศัพท์ === {{lbor|gl|la|animal}} === การออกเสียง === {{gl-pr}} * {{hyph|gl|a|ni|mal}} === คำคุณศัพท์ === {{gl-adj}} # [[ที่]][[เกี่ยว]][[กับ]]สัตว์ === คำนาม === {{gl-noun|m}} # [[สัตว์]] === อ่านเพิ่ม === * {{R:gl:DRAG}} * {{R:gl:Estraviz}} {{C|gl|สัตว์}} == ภาษาครีโอลกาบูเวร์ดี == === รากศัพท์ === จาก{{der|kea|pt|animal}} === คำนาม === {{head|kea|คำนาม}} # [[สัตว์ร้าย]] # [[สัตว์]] == ภาษาครีโอลเฮติ == === รากศัพท์ === จาก{{der|ht|fr|animal}}, จาก{{der|ht|la|animal}} === การออกเสียง === * {{IPA|ht|/a.ni.mal/}} === คำนาม === {{head|ht|คำนาม}} # [[สัตว์]] #: {{syn|ht|zannimo}} === อ้างอิง === * {{R:ht:Targète|page=9}} {{C|ht|สัตว์}} == ภาษาเซบัวโน == === รากศัพท์ === {{bor+|ceb|es|animal}}, จาก{{der|ceb|la|animal}}, การใช้เป็นคำนามของรูปคุณศัพท์ {{m|la|animale}}, เพศกลางของ {{m|la|animālis}}, จาก{{m|la|anima|t=ลมหายใจ, วิญญาณ}} === การออกเสียง === * {{ceb-IPA|animál}} * {{hyph|ceb|a|ni|mal}} === คำนาม === {{ceb-noun|animál}} # [[สัตว์]] # {{lb|ceb|derogatory}} [[อันธพาล]] #: {{syn|ceb|banyaga}} # {{lb|ceb|sometimes humurous}} [[คน]][[บ้า]] === คำคุณศัพท์ === {{ceb-adj|animál}} # {{lb|ceb|sometimes|_|humorous}} บ้า # [[น่า]][[ดูถูก]], สมควรได้รับ[[ความดูถูก]] # [[โหดเหี้ยม]]; ปราศจาก[[ความสงสาร]]หรือ[[ความเห็นใจ]]; [[โหดร้าย]], [[ไร้]][[ความปรานี]] === คำอุทาน === {{head|ceb|คำอุทาน|head=animál}} # {{lb|ceb|vulgar}} {{n-g|ใช้เป็นคำแสดงออกถึง[[ความรังเกียจ]] [[ความโกรธ]] ฯลฯ}} == ภาษาตอกปีซิน == === รากศัพท์ === จาก{{inh|tpi|en|animal}} === คำนาม === {{head|tpi|คำนาม}} # [[สัตว์]] {{gloss|ไม่รวมถึงมนุษย์}} #: {{syn|tpi|abus}} #* {{RQ:Buk Baibel|Jenesis|1|25|passage=God i kamapim ol kain kain '''animal''' bilong ples na ol bikpela na liklik '''animal''' bilong bus. God i lukim olgeta dispela samting i gutpela, na em i amamas.}} ==== ลูกคำ ==== * {{l|tpi|dokta bilong ol animal||veterinarian}} == ภาษาตากาล็อก == === รากศัพท์ === {{bor+|tl|es|animal}}, จาก{{der|tl|la|animal}} === การออกเสียง === {{tl-pr|animál}} === คำนาม === {{tl-noun|animál|b=+}} # [[สัตว์ร้าย]]; [[สัตว์ป่า]]; [[สิ่งมีชีวิต]] #: {{syn|tl|halimaw|hayop}} # {{lb|tl|derogatory}} [[คน]][[ที่]][[ดุร้าย]][[เหมือน]]สัตว์; คน[[ไร้]][[มนุษยธรรม]] #: {{syn|tl|hayop|bruto|bestiya}} ==== ลูกคำ ==== {{col3|tl|kaanimalan|pagkaanimal}} ==== คำเกี่ยวข้อง ==== {{col|tl|alma|anima|anime|animadbersiyon|animado|animador|animas|animasyon|animismo|animista|animo|animosidad|inanimado|des-animo|des-animado}} === คำอุทาน === {{tl-head|interjection|animál|b=+}} # สัตว์! #: {{syn|tl|hayop}} === คำสลับอักษร === * {{anagrams|tl|a=aailmn|alamin|Manila}} {{C|tl|สัตว์|บุคคล}} == ภาษาปาเปียเมนตู == === รากศัพท์ === จาก{{der|pap|pt|animal}} และ{{der|pap|es|animal}} === คำนาม === {{head|pap|คำนาม}} # [[สัตว์ร้าย]] # [[สัตว์]] == ภาษาโปรตุเกส == {{wp|pt:}} {{picdic|image=Lightmatter chimp.jpg |detail1= {{picdicimg|pt|image=Eukaryota diversity 2.jpg|link=organismo}} |detail2= {{picdicimg|pt|image=Tiger in the water.jpg|link=mamífero}} {{picdicimg|pt|image=Discus fish.jpg|link=peixe}} {{picdicimg|pt|image=Notophthalmus viridescensPCCA20040816-3983A.jpg|link=anfíbio}} {{picdicimg|pt|image=Tuatara.jpg|link=réptil}} {{picdicimg|pt|image=Cyanocitta cristata FWS.jpg|link=ave}} {{picdicimg|pt|image=Osmia rufa couple (aka).jpg|link=inseto}}}} === รากศัพท์ === {{lbor|pt|la|animal}}; {{doublet|pt|alimária}} === การออกเสียง === {{pt-IPA}} * {{audio|pt|LL-Q5146 (por)-Santamarcanda-animal.wav|a=<<Portugal>> (<<Porto>>)}} * {{rhymes|pt|al|q1=Portugal|aw|q2=Brazil|s=3}} * {{hyphenation|pt|a|ni|mal}} === คำคุณศัพท์ === {{pt-adj|sup=+abs}} # {{lb|pt|biology}} [[ที่]][[เกี่ยว]][[กับ]][[สัตว์]] #* {{quote-book|pt|year=2000|author=Julio S. Inglez de Sousa; et al|title=Enciclopédia agrícola brasileira: E-H|publisher=Editora da Universidade de São Paulo|pageurl=https://books.google.com/books?id=Pydx4Jb_4-EC&pg=PP227&dq=%22animal%22|page=225 |passage=Em anatomia '''animal''' o termo é de uso muito comum, {{...}}|t=The term is very commonly used in '''animal''' anatomy, {{...}}}} # {{lb|pt|derogatory|ใช้กับคน}} [[ดุร้าย]] {{gloss|ไร้สติ, ไร้เหตุผล}} # {{lb|pt|Brazil|colloquial}} [[เท่]]; [[สุดยอด]] #* {{quote-book|pt|year=2015|author=Juliana Rosenthal K.|title=Save the Day|publisher=Buqui|pageurl=https://books.google.com/books?id=CWUACwAAQBAJ&pg=PT52&dq=%22animal%22|page=52 |passage=É, tava '''animal''' mesmo — Bia mal consegue falar.|t=Yeah, it really was '''wild''' — Bia can barely speak.}} === คำนาม === {{pt-noun|m}} # {{lb|pt|biology}} [[สัตว์]] #* {{quote-book|pt|year=2010|author=João José da Costa|title=Fábulas do jeito que só vovô sabia contar|pageurl=http://books.google.com.br/books?id=VEtMBQAAQBAJ&pg=PA38#v=onepage&q&f=false|page=38|publisher=Clube de Autores|text=Quando a flor do abacateiro recebe o pólen de outra flor de abacateiro trazido pelas abelhas, beija-flores, borboletas e outros '''animais''', ela fica polinizada e começa a gerar um fruto, que é o abacate.}} #* {{quote-book|pt|year=2020|author=Petrônio Braz|title=Léxico dos Gerais|publisher=Chiado Books|pageurl=https://books.google.com/books?id=HV3qDwAAQBAJ&pg=PT481&dq=%22animais%22|page=481 |passage=Primatas — '''Animais''' mamíferos, da ordem Primata, que compreende os macacos, antropóides e o homem.|t=Primates — Mammalian '''animals''', of the order Primata, which comprises monkeys/apes, anthropoids and man.}} # {{lb|pt|non-scientific usage}} สัตว์ {{gloss|ไม่รวมถึงมนุษย์, โดยเฉพาะหมายถึงสัตว์มีกระดูกสันหลัง}} #* '''2007''', Daniela Ikawa, ''Valor humano intrínseco e redistribuição social'' in '''2007''', Flávia Piovesan, Daniela Ikawa, ''Direitos Humanos: Fundamento, Proteção e Implementação'', volume 2, Juruá Editora, [https://books.google.com/books?id=tP3eeZRM2icC&pg=PA44&dq=%22animais%22 page 44]: #*: {{quote|pt|Separar os dois grupos — humanos e '''animais''' requereria, dentro dos limites da teoria relativa à dor e ao sofrimento, {{...}}|Separating the two groups — humans and '''animals''' would require, within the limits of the theory relating to pain and suffering, {{...}}}} #: {{syn|pt|besta|bicho}} # {{lb|pt|colloquial}} [[คน]][[โง่]]; คน[[บ้า]]; คน[[ปัญญาอ่อน]] #* {{quote-book|pt|year=1979|author=Wilson Bacelar de Oliveira|title=Os meus fantasmas|publisher=Editora Comunicação|pageurl=https://books.google.com/books?id=gpctAAAAYAAJ&q=%22animal%22|page=490 |passage=Escute aqui, seu '''animal''', então você brigou com o companheiro?|t=Listen up, you '''dumbass''', so you fought with [your] mate?}} #: {{syn|pt|idiota|retardado|burro|imbecil|débil mental|besta}} # {{lb|pt|colloquial}} [[คน]][[ที่]][[ดุร้าย]][[เหมือน]]สัตว์ #* {{quote-book|pt|year=2007|author=Creso Balduíno|title=O verso do ser|publisher=Editora Revan|pageurl=https://books.google.com/books?id=84xlAAAAMAAJ&dq=%22animal%22|page=170 |passage=Josuel é um '''animal''' repulsivo, uma besta humana.|t=Josuel is a repulsive '''beast''', a human beast.}} #: {{syn|pt|monstro}} ==== ลูกคำ ==== {{col|pt |animal de estimação |animalizar |animalzão |animalzinho |animal selvagem |animal doméstico |animal de criação}} === อ่านเพิ่ม === * {{R:pt:Aulete}} * {{R:pt:Priberam}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{bor+|fr|la|animal}}; เทียบคำร่วมรากโบราณ {{doublet|fr|aumaille|notext=1}} และรูปแบบอื่น {{doublet|fr|armaille|notext=1}}, ซึ่งทั้งคู่มาจากพหูพจน์เพศกลางภาษาละติน {{m|la|animālia}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-un animal-fr.ogg|(un animal)}} * {{audio|fr|Fr-animal.ogg}} * {{audio|fr|LL-Q150 (fra)-DSwissK-animal.wav|a=<<Switzerland>> (<<Valais>>)}} * {{audio|fr|LL-Q150 (fra)-GrandCelinien-animal.wav|a=<<France>> (<<Paris>>)}} * {{audio|fr|LL-Q150 (fra)-Lepticed7-animal.wav|a=<<France>> (<<Toulouse>>)}} * {{audio|fr|LL-Q150 (fra)-LoquaxFR-animal.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-Lyokoï-animal.wav|a=<<France>> (<<Lyon>>)}} * {{audio|fr|LL-Q150 (fra)-Mecanautes-animal.wav|a=France}} * {{audio|fr|LL-Q150 (fra)-Opsylac-animal.wav|a=<<France>> (<<Grenoble>>)}} * {{audio|fr|LL-Q150 (fra)-Penegal-animal.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-Poslovitch-animal.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-T. Le Berre-animal.wav|a=<<France>> (<<Hérault>>)}} * {{audio|fr|LL-Q150 (fra)-Touam-animal.wav|a=<<France>> (<<Saint-Étienne>>)}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-animal.wav|a=<<France>> (<<Lyon>>)}} * {{audio|fr|LL-Q150 (fra)-X-Javier-animal.wav|a=<<France>> (<<Massy>>)}} * {{homophones|fr|animale|animales}} === คำนาม === {{fr-noun|m}} # [[สัตว์]] #: {{syn|fr|bête|bestiole}} ==== ลูกคำ ==== {{col3|fr |animal de compagnie |animal domestique |animalerie |droits des animaux |règne animal |reine des animaux |roi des animaux }} ==== คำสืบทอด ==== * {{desc|ht|animal}} === คำคุณศัพท์ === {{fr-adj}} # [[ที่]][[เกี่ยว]][[กับ]]สัตว์ #: {{syn|fr|bestial}} #: {{ant|fr|végétal}} === อ่านเพิ่ม === * {{R:fr:TLFi}} === คำสลับอักษร === * {{l|fr|lamina}} {{C|fr|สัตว์}} == ภาษาฝรั่งเศสกลาง == === คำนาม === {{frm-noun|m|animaux|pl2=animaulx}} # [[สัตว์]] #: {{syn|frm|beste}} == ภาษาโรมานช์ == === รากศัพท์ === {{bor+|rm|la|animal}} === คำนาม === {{rm-noun|m}} # {{lb|rm|Rumantsch Grischun|Sursilvan|Sutsilvan|Surmiran|Vallader}} [[สัตว์]] ==== คำพ้องความ ==== * {{qualifier|Rumantsch Grischun|Sursilvan|Surmiran}} {{l|rm|biestg}} * {{qualifier|Rumantsch Grischun|Sutsilvan}} {{l|rm|bestga}} * {{qualifier|Sursilvan}} {{l|rm|tier}}, {{l|rm|bestia}} * {{qualifier|Puter|Vallader}} {{l|rm|bes-cha}} {{C|rm|สัตว์}} == ภาษาโรมาเนีย == === รูปแบบอื่น === * {{alt|ro|анимал||new cyrl}} === รากศัพท์ === {{bor+|ro|fr|animal}}, จาก{{der|ro|la|animal}}; {{dbt|ro|nămaie}} === การออกเสียง === * {{IPA|ro|/a.niˈmal/}} * {{audio|ro|LL-Q7913 (ron)-Andreea Teodoraa-animal.wav|q=female voice}} * {{rhyme|ro|al|s=3}} * {{hyph|ro|a|ni|mal}} === คำคุณศัพท์ === {{ro-adj|4}} # [[ที่]][[เกี่ยว]][[กับ]][[สัตว์]], ที[[คล้าย]]สัตว์ # [[ดุร้าย]] ==== การผันรูป ==== {{ro-adj-4}} === คำกริยาวิเศษณ์ === {{ro-adv}} # [[อย่าง]]ดุร้าย === คำนาม === {{ro-noun|n|animale}} # [[สัตว์]] ==== การผันรูป ==== {{ro-noun-n}} === อ่านเพิ่ม === * {{R:DEX}} == ภาษาละติน == === รากศัพท์ === {{etymon|la|title=animāl|:nom|animālis|tree=1}} [[substantivation|Substantivation]] of [[apocope|apocopated]] {{m|la|animāle}}, กรรตุการกเพศกลางเอกพจน์ของ {{m|la|animālis||สิ่งมีชีวิต}}; ดูที่ {{affix|la|-al}} === การออกเสียง === * {{la-IPA|animal}} === คำนาม === {{la-noun|animal<3>}} # [[สัตว์]] # [[สิ่งมีชีวิต]] ==== การผันรูป ==== {{la-ndecl|animal<3>}} ==== คำพ้องความ ==== * {{l|la|bestia}} ==== คำเกี่ยวข้อง ==== {{col3 |la|anima |animō |animus }} ==== คำสืบทอด ==== {{top3}} * Balkan Romance: ** {{desc|rup|nãmalj|nãmaljiu}} ** {{desc|ruq|nămal'}} ** {{desc|ro|nămaie}} * {{desc|co|animale}} * {{desc|dlm|animuol|animul}} * {{desc|frp|armalye}} * {{desc|fro|almaille}} ** {{desc|frm|almaille}} *** {{desc|fr|aumaille|armaille}} * {{desc|fur|nemâl}} * {{desc|it|animale}} ** {{desc|mt|annimal|bor=1}} * {{desc|roa-opt|almallo}} ** {{desc|gl|almallo}} ** {{desc|pt|almalho|alimanha|alimária}} * {{desc|rgn|animêl}} * {{desc|scn|armali|armalu}} * {{desc|es|alimaña|almaje}} * {{desc|roa-tar|anemale}} * {{desc|vec|animal|anemal}} Borrowings: * {{desc|an|animal|bor=1}} * {{desc|ast|animal|bor=1}} * {{desc|eu|animalia|bor=1}} * {{desc|cel-bry-pro|*anɨβ̃ėl|bor=1}} ** {{desc|br|aneval}} ** {{desc|cnx|enevalles|g=p}} *** {{desc|kw|eneval}} ** {{desc|wlm|anyueyl}} *** {{desc|cy|anifail}} * {{desc|ca|animal|bor=1}} * {{desc|frp|animal|bor=1}} * {{desc|fur|animâl|bor=1}} * {{desc|gl|animal|bor=1}} * {{desc|io|animalo|bor=1}} {{q|also from various others}} * {{desc|ia|animal|bor=1}} * {{desc|mwl|animal|bor=1}} * {{desc|oc|animal|bor=1}} * {{desc|fro|animal|bor=1}} ** {{desc|frm|animal}} *** {{desc|fr|animal}} **** {{desc|ht|animal}} **** {{desc|ro|animal|bor=1}} ** {{desc|bor=1|enm|animal|animale}} *** {{desc|en|animal}} **** {{desc|ceb|animal|bor=1}} **** {{desc|eo|animalo|bor=1}} {{q|also from French}} **** {{desc|tpi|animal|bor=1}} *** {{desc|sco|ainimal}} ** {{desc|nrf|animâ}} {{qualifier|France}}, {{l|nrf|annima}} {{qualifier|Jersey}} * {{desc|pt|animal|bor=1}} ** {{desc|kea|animal}} ** {{desc|pap|animal}} * {{desc|rm|animal|bor=1}} * {{desc|es|animal|bor=1}} {{bottom}} === อ้างอิง === * {{R:la:L&S}} * {{R:la:Elementary Lewis}} * {{R:la:du Cange}} * {{R:la:Gaffiot}} * {{R:la:M&A}} {{C|la|สัตววิทยา}} == ภาษาสเปน == === รากศัพท์ === {{bor+|es|la|animal}}; ดูเพิ่ม คำร่วมรากที่สืบทอดมา {{doublet|es|alimaña|notext=1}} === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Millars-animal.wav<a:Spain>>}} === คำคุณศัพท์ === {{es-adj}} # [[ที่]][[เกี่ยว]][[กับ]][[สัตว์]] === คำนาม === {{es-noun|m}} # {{lb|es|biology}} [[สัตว์]] ==== ลูกคำ ==== {{col|es |animal de carga |animal de compañía |animal doméstico |animal salvaje |animal terrestre |animalada |animalero |animalesco |animalillo |animalismo |animalista |animalístico |animalito |animalizar |animalmente |animalucho |derechos de los animales |protectora de animales }} ==== คำเกี่ยวข้อง ==== {{col|es |animálculo |animalidad}} === อ่านเพิ่ม === * {{R:es:DRAE}} === คำสลับอักษร === * {{anagrams|es|a=aailmn|lámina|lamina}} {{C|es|สัตว์}} == ภาษาอังกฤษ == === การออกเสียง === * {{IPA|en|/ˈæn.ᵻ.məl/}} ** {{audio|en|en-us-animal.ogg|a=US}} * {{IPA|en|a=Indic|/ˈæ.nɪ.məl/|/ə.nɪ.məl/|[æː.nɪ.mɐl]|[ɐ.nɪ.mɐl]}} * {{rhymes|en|ɪməl|s=3}} * {{hyph|en|an|i|mal}} === รากศัพท์ 1 === {{etymon|en|id=noun|:inh|enm:animal<id:noun>|tree=1}} {{root|en|ine-pro|*h₂enh₁-}} {{picdic|image=Lightmatter chimp.jpg |detail1= {{picdicimg|en|image=Eukaryota diversity 2.jpg|link=organism}} |detail2= {{picdicimg|en|image=Tiger in the water.jpg|link=mammal}} {{picdicimg|en|image=Discus fish.jpg|link=fish}} {{picdicimg|en|image=Notophthalmus viridescensPCCA20040816-3983A.jpg|link=amphibian}} |detail3= {{picdicimg|en|image=Tuatara.jpg|link=reptile}} {{picdicimg|en|image=Cyanocitta cristata FWS.jpg|link=bird}} {{picdicimg|en|image=Osmia rufa couple (aka).jpg|link=insect}} }} จาก{{inh|en|enm|animal}}, จาก{{der|en|fro|animal}}, จาก{{der|en|la|animal}}, การใช้เป็นคำนามของรูปคุณศัพท์ {{m|la|animāle}}, เพศกลางของ {{m|la|animālis}}, จาก{{m|la|anima|t=ลมหายใจ, วิญญาณ}}; แทนที่คำพื้นถิ่นในภาษาอังกฤษกลาง {{m|enm|deor|deor, der|สัตว์}} (ซึ่งเป็นรากของ{{noncog|en|deer}} [สมัยใหม่]; จาก{{cog|ang|dēor|t=สัตว์}}), {{cog|enm|reother|t=สัตว์, วัว}} (ซึ่งเป็นรากของ{{noncog|en|rother}}} [สมัยใหม่]; จาก{{cog|ang|hriþer|hrīþer, hrȳþer|t=วัว}}) ==== คำนาม ==== {{en-noun}} # {{senseid|en|Q729}}<!--any eukaryote of the kingdom Animalia--> {{lb|en|science}} [[สัตว์]], [[สิ่งมีชีวิต]]หลาย[[เซลล์]]ใด ๆ ใน[[อาณาจักร]] {{l|mul|Animalia}} ที่มัก[[เคลื่อนที่]]ได้ โดยที่เซลล์ของสิ่งมีชีวิตเหล่านี้ไม่มี[[ผนังเซลล์]]ที่แข็งแรง (ซึ่งแตกต่างจาก[[พืช]]และ[[เห็ดรา]]) และได้รับ[[พลังงา]]นจาก[[การกิน]]สิ่งมีชีวิตอื่น ๆ เท่านั้น (ซึ่งแตกต่างจากพืชอีกด้วย) #: {{syn|en|creature}} #: {{hypo|en|human|person}} #: {{ux|en|Humans, like other '''animals''', need air to breathe and food to eat.}} #* {{RQ:Browne Pseudodoxia Epidemica|edition=2nd|chapter=Of the Cameleon|page=133|passage=It cannot be denied it [the [[chameleon]]] is (if not the moſt of any) a very abſtemious '''animall''', and ſuch as by reaſon of its frigidity, paucity of bloud, and latitancy in the winter (about which time the obſervations are often made) will long ſubſist without a viſible ſuſtentation.}} # {{senseid|en|any nonhuman member of the kingdom Animalia}} {{lb|en|loosely}} สัตว์, โดยไม่รวมถึง[[มนุษย์]] #: {{syn|en|beast}} #: {{cot|en|human|person}} # {{lb|en|loosely}} สัตว์ชั้นสูง; สัตว์ที่มีความเกี่ยวข้องกับมนุษย์ #: {{usex|en|When he's hungry my toddler opens his mouth like an '''animal''' instead of asking us to feed him.}} ## {{senseid|en|any land-living nonhuman vertebrate}} {{lb|en|colloquial}} สัตว์[[สี่]][[เท้า]]; [[สัตว์มีกระดูกสันหลัง]]ที่ไม่ใช่มนุษย์ ที่อาศัยอยู่บนพื้นดิน ##* {{quote-journal|en|year=2013|month=July-August|author=w:Henry Petroski|title=[http://www.americanscientist.org/issues/pub/2013/4/geothermal-energy Geothermal Energy]|volume=101|issue=4|magazine=w:American Scientist|passage=Ancient nomads, wishing to ward off the evening chill and enjoy a meal around a campfire, had to collect wood and then spend time and effort coaxing the heat of friction out from between sticks to kindle a flame. With more settled people, '''animals''' were harnessed to capstans or caged in treadmills to turn grist into meal.}} ## [[สัตว์เลือดอุ่น]]; [[สัตว์เลี้ยงลูกด้วยน้ำนม]]หรือ[[นก]] ## สัตว์เลี้ยงลูกด้วยน้ำนมที่ไม่ใช่มนุษย์ ##: {{ux|en|I spent my summer studying the '''animals''' and birds of the two islands.}} ##* {{quote-book|en|year=1971|author=Gwen White|title=Antique Toys And Their Background|page=54|text=Birds are as popular as '''animals''' in the toy kingdom, especially pigeons, owls and domestic hens.}} ##* {{RQ:NYT|author=Robert Ito|title=The Makers of ‘BoJack Horseman’ Take Family Matters by the Reins|date=2025-08-21|url=https://www.nytimes.com/2025/08/21/arts/television/long-story-short-raphael-bob-waksberg-lisa-hanawalt-bojack.html|passage=“Long Story Short,” a new animated series from Raphael Bob-Waksberg with art by Lisa Hanawalt, trades the talking '''animals''' for kvetching humans.|archiveurl=https://archive.ph/FJNih|archivedate=2025-08-21}} # {{senseid|en|person who behaves wildly}} {{lb|en|figuratively}} คนที่ทำตัวอย่างสัตว์ป่า; คนดุร้าย โหดร้าย หรือไร้มนุษยธรรม #: {{syn|en|brute|monster|savage}} #: {{ux|en|My students are '''animals'''.}} #* {{quote-song|en|lyricist=w:Finneas O'Connell; w:Billie Eilish O'Connell|title=Bad Guy|artist=Billie Eilish|year=2019|text=Own me, I'll let you play the role<br>I'll be your '''animal'''}} #* {{quote-journal|en-GB|author=Rachel Hall|quotee=Jodie White|title=‘I’ve never seen owt like it’: England fans in Benidorm in high spirits before Euro final|work=The Guardian|date=2024-07-14|url=https://www.theguardian.com/football/article/2024/jul/14/ive-never-seen-owt-like-it-england-fans-in-benidorm-in-high-spirits-before-euro-final|issn=0261-3077|passage=She speculated that things could deteriorate later: “I think they’re scared of the English, which is fair; we are '''animals'''.”}} # {{senseid|en|person of a particular type specified}} {{lb|en|informal}} คนที่มีลักษณะเฉพาะเจาะจง ซึ่งขยายความโดยคำคุณศัพท์ที่ประกอบ #: {{ux|en|He's a political '''animal'''.}} # {{senseid|en|matter or thing}} {{lb|en|informal}} [[เรื่อง]], [[สิ่ง]] #: {{co|en|a whole different '''animal'''|คนละเรื่องเดียวกัน}} #: {{co|en|no such '''animal'''|ไม่มีอะไรแบบนั้น}} ===== คำลูกกลุ่ม ===== * ดูที่ [[อรรถาภิธาน:animal]] ===== ลูกคำ ===== {{col|en|advice animal |ambassador animal |animal activist |animal-assisted therapy |animal black |animal cabinet |animal charcoal |animal companion |animal control officer |animal cracker |animal dentistry |animal dye |animalesque |animal experimentation |animal fat |animal feed|animal African trypanosomiasis|animal coat|animal trypanosomiasis |animal flower |animal food |animal fries |animal heat |animalhood |animal house|animal print|animal hoarding|animal soul|animal starch|animal unit |animal husbandry |animalian |animalicide|robo-animal |animalish |animalism |animalist |animalistic |animalivore |animalivorous|Animal Jammer |animalkind |animal kingdom |animal liberation |animal-like |animally |animal magnetism |animaloid |animal product |animal protein factor |animal registry |animal reminder disgust |animal rights |animal sanctuary |animal science |animal shelter |animal tester |animal testing |animal welfare |animal welfarist |anipal |antianimal |assistance animal |balloon animal |companimal |companion animal |compound animal |draft animal |draught animal |eat like an animal |emotional support animal |exploding animal |farm animal |funny animal |go the entire animal |intensive animal farming |interanimal |intraanimal |koranimal |manimal |microanimal |moss animal |multianimal |nonanimal |pack animal |party animal |planimal |plant-animal |plush animal |political animal |power animal |rare animal |scape-animal |service animal |Set animal |small animal |spirit animal |stock animal |stuffed animal |therapy animal |Typhonian animal |Typhonic animal |wereanimal |wheel animal |wild animal |working animal |zoo animal }} ===== คำเกี่ยวข้อง ===== {{col4 |en|anima |animalcule |mul:Animalia |animalier |animate |animus }} ===== คำสืบทอด ===== {{top3}} * {{desc|bi|anamol}} * {{desc|tpi|animal}} * {{desc|eo|animalo|bor=1}} * {{desc|io|animalo|bor=1}} * {{desc|vo|nim|bor=1}} {{bottom}} === รากศัพท์ 2 === {{etymon|en|id=adjective|:inh|enm:animal<id:adjective>|tree=1}} จาก{{inh|en|enm|animal}}, จาก{{der|en|la|animālis}}, จาก {{m|la|anima|t=ลมหายใจ, วิญญาณ}} หรือ {{m|la|animus}}; เดิมทีคำนี้แตกต่างจากคำนาม แต่ต่อมาได้กลายเป็นคำนามที่ใช้ขยายความ และปัจจุบันแทบแยกไม่ออกแล้ว ==== คำคุณศัพท์ ==== {{en-adj|-}} # ที่เกี่ยวกับสัตว์ #: {{syn|en|beastly|bestial}} #: {{cot|en|vegetal}} #: {{co|en|'''animal''' instincts}} #* {{quote-book|en|author=w:William Cowper|chapter=To the Rev. [[w:William Bull (minister)|William Bull]]|title=Private Correspondence of William Cowper, Esq. with Several of His Most Intimate Friends.{{nb...|Now First Published from the Originals in the Possession of His Kinsman, John Johnson, LL.&nbsp;D. Rector of Yaxham with Welborne in Norfolk.}}|volume=I|location=London|publisher={{...|Printed for}} {{w|Henry Colburn}},{{nb...|New Burlington Street}}, and [[w:Simpkin & Marshall|Simpkin and Marshall]],{{nb...|Stationers’ Hall Court.}}|date=3 June 1783|year_published=1824|page=266|pageurl=https://archive.org/details/privatecorrespon01cowpuoft/page/266/mode/1up|passage=The season has been most unfavourable to '''animal''' life; and I, who am merely '''animal''', have suffered much by it.}} #* {{quote-book|en|author=[[w:William Martin (naturalist)|William Martin]]|title=Outlines of an Attempt to Establish a Knowledge of Extraneous Fossils, on Scientific Principles.{{nb...|In Two Parts.}}|location=Macclesfield, Cheshire|publisher={{...|Printed by}} J. Wilson. Sold by the Author,{{nb...|Buxton}}; J. White,{{nb...|Fleet-Street}}, and [[w:Longman|Longman, Hurst, Rees, and Orme]],{{nb...|London.}}|year=1809|page=141|pageurl=https://archive.org/details/outlinesofattemp00martrich/page/141/mode/1up|passage={{nb...|nospace=1}}—according to Sanssure, Abbé Fortis, Bruckenman, Jameson, Dr. Richardson, &c. &c. both '''animal''' and vegetal remains have been detected in Basalt and Wacke.}} #* {{quote-book|en|author=[[w:Lena, Lady Login|[Lena,] Lady Login]]|chapter=Lucknow|title=Sir John Login and Duleep Singh|location=London|publisher={{w|W. H. Allen & Co.}},{{nb...|13, Waterloo Place, S.W.}}|year=1890|page=78|pageurl=https://archive.org/details/in.ernet.dli.2015.208626/page/n102/mode/1up|passage=The body was covered with soft hair, and though undoubtedly human, it was very '''animal''' in its instincts and ways.}} #* {{quote-book|en|author=[[w:Wilhelm Max Müller|W[ilhelm] Max Müller]]|chapter=[Egyptian Mythology] Worship of Animals and Men|editors=w:Louis Herbert Gray; w:George Foot Moore|title=[[w:The Mythology of All Races|The Mythology of All Races{{nb...|In Thirteen Volumes}}]]|volume=!XII (Egyptian; Indo-Chinese)|location=Boston, Mass.|publisher=Marshall Jones Company|year=1918|page=167|pageurl=https://archive.org/details/in.ernet.dli.2015.282278/page/n188/mode/1up|passage=The unsatisfactory material at our command, however, renders it difficult to determine why we cannot prove a worship of a living incarnation for every deity who is represented on the monuments in a form either wholly or partially '''animal'''. We must wonder why, for example, the sacred hawk or hawks of Horus at Edfu (who never has human form) are scarcely mentioned.}} #* {{RQ:Lawrence England|page=243|passage=He looked down at the tangled wet hair, the wild, bare, '''animal''' shoulders.}} #* {{quote-book|en|author=w:Jeet Thayil|title=[[w:Narcopolis (novel)|Narcopolis]]|location=New York, N.Y.|publisher=[[w:Penguin Group|The Penguin Press]]|year=2012|page=216|pageurl=https://archive.org/details/narcopolisanovel00thay/page/216/mode/1up|isbn=978-1-59420-330-5|passage=I thought: if pain is the thing shared by all living creatures, then I’m no longer human or '''animal''' or vegetal; I am unplugged from the tick of metabolism; I am mineral.}} #* {{quote-book|en|author=Joseph M. Luguya|chapter=Part 1: The Demented Scholar|title=Humans: The Untold Story of Adam and Eve and their Descendants|volume=!one (The Thesis)|location=Silver Spring, Md.|publisher=Original Books|month=August|year=2015|page=46|pageurl=https://archive.org/details/humansuntoldstor0000lugu_k4o6/page/46/mode/1up|isbn=978-1517447847|passage=In any case, the argument the inhabitants of these parts would have advanced as their strongest one against the so-called chastity belt would, of course, have been that living species, whether '''animal''' or vegetative, were made the way they were for an obvious reason.}} # [[ดิบ]], [[เถื่อน]], [[ไร้]][[ข้อจำกัด]][[ทาง]][[สังคม]] #: {{syn|en|animalistic|beastly|bestial|untamed|wild}} #: {{co|en|'''animal''' passions}} #* {{quote-web|en|url=https://www.theatlantic.com/entertainment/archive/2016/08/glory-britney-spears-review-hookups-grace/497486/|title=Britney Spears Finds Grace in the Hook-Up on 'Glory'|work=w:The Atlantic|date=2016-08-26|author=Spencer Kornhaber|passage=But the line also distills pop culture’s big commandment about sex to its '''animal''' essence: If you’re not screwing somebody, you’re nobody.|archiveurl=https://web.archive.org/web/20160929035100/https://www.theatlantic.com/entertainment/archive/2016/08/glory-britney-spears-review-hookups-grace/497486/}} # ที่เกี่ยวกับ[[จิต]]หรือ[[วิญญาณ]]; ที่เกี่ยวกับ[[ความรู้สึก]]หรือ[[ประสาทสัมผัส]] #* {{quote-text|en|year=2003|author=Roy Porter|title=Flesh in the Age of Reason|page=47|publisher=Penguin|year_published=2004 |passage=To explain what activated the flesh, ‘'''animal''' spirits’ were posited, superfine fluids which shuttled between the mind and the vitals, conveying messages and motion.}} # {{lb|en|slang|Ireland}} [[ยอดเยี่ยม]] ===== ลูกคำ ===== {{col3|en |animal–industrial complex |animalize |animally |animalness |animal pole |animal spirits |humanimal |nonanimal |semianimal |superanimal |vegetoanimal }} === ดูเพิ่ม === * [[ภาคผนวก:Animals|Wiktionary appendix of terms relating to animals]] === อ่านเพิ่ม === * {{pedia}} * {{R:Century 1911}} * {{R:OneLook}} * {{R:Keywords 21st}} * {{R:Britannica Dictionary}} * {{R:Ozdic}} * {{R:WordReference Collocations}} === คำสลับอักษร === * {{anagrams|en|a=aailmn|maalin|Almain|lamian|aminal|Manila|lamina|al-Amin|Milana|Alamin|almain|Malian|manila}} {{cln|en|autohyponyms}} {{C|en|สัตว์}} == ภาษาอังกฤษกลาง == === การออกเสียง === * {{IPA|enm|/aniˈmaːl/|/aˈnimal/}} === รากศัพท์ 1 === {{etymon|enm|id=noun|:bor|fro:animal<ety:der<la:animal>>}} {{bor+|enm|fro|animal}}, จาก{{der|enm|la|animal}} ==== รูปแบบอื่น ==== * {{alter|enm|animale}} ==== คำนาม ==== {{enm-noun|animales}} # [[สัตว์]] (รวมถึงมนุษย์) ===== คำสืบทอด ===== * {{desc|en|animal}} {{see desc}} * {{desc|sco|ainimal}} ===== อ้างอิง ===== * {{R:MED Online|entry=animāl |pos=n|id=MED1656|accessdate=2019-01-16}} === รากศัพท์ 2 === {{etymon|enm|id=adjective|:bor|la:animālis}} {{bor+|enm|la|animālis}} ==== รูปแบบอื่น ==== * {{alter|enm|animale|animall|anymal|anymall}} ==== คำคุณศัพท์ ==== {{enm-adj}} # ที่เกี่ยวกับ[[จิต]]หรือ[[วิญญาณ]]ของ[[สิ่งมีชีวิต]] (เช่น [[ความรู้สึก]] หรือ[[ความฉลาด]]) ===== คำสืบทอด ===== * {{desc|en|animal}} ===== อ้างอิง ===== * {{R:MED Online|entry=animāl |pos=adj|id=MED1657|accessdate=2019-01-16}} {{C|enm|สัตว์}} == ภาษาอัสตูเรียส == {{wp|ast:}} === รากศัพท์ === {{bor+|ast|la|animal}} === การออกเสียง === {{ast-pr}} === คำคุณศัพท์ === {{ast-adj-mf|pl=animales}} # [[ที่]][[เกี่ยว]][[กับ]]สัตว์ === คำนาม === {{ast-noun|m|animales}} # [[สัตว์]] === อ่านเพิ่ม === * {{R:ast:DGLA}} * {{R:ast:DALLA}} {{C|ast|สัตว์}} == ภาษาอินเทอร์ลิงกวา == === การออกเสียง === * {{IPA|ia|/a.niˈmal/}} === คำนาม === {{ia-noun|es}} # [[สัตว์]] == ภาษาอีโลกาโน == === รากศัพท์ === {{bor+|ilo|es|animal}} === การออกเสียง === * {{ilo-IPA|animál}} * {{hyph|ilo|a|ni|mal}} === คำนาม === {{ilo-noun|animál}} # [[สัตว์]] #: {{syn|ilo|ayup}} sn8yezkruhcwbkxrek53p9oc29bafjy do 0 7342 5754488 5689955 2026-08-06T07:42:37Z OctraBot 3198 update template use 5754488 wikitext text/x-wiki {{also/auto}} == ภาษาญี่ปุ่น == === การถอดเป็นอักษรโรมัน === {{ja-romaji}} # {{Latn-def|ja|syllable|ど|ド|do}} ==ภาษาโปรตุเกส== ===รูปแบบอื่น=== * {{alter|pt|d'o}} {{qualifier|ล้าสมัย}} ===รากศัพท์=== {{etymon|pt|id=of the|:inh|roa-opt:do<id:of the>}} {{inh+|pt|roa-opt|do}}, จาก {{m|roa-opt|de||ของ, จาก}} + {{m|roa-opt|o||ตัวกำหนด}}; เหมือนกับ{{cog|gl|do}}, {{cog|es|del}}, {{cog|fr|du}} ===การออกเสียง=== {{pt-IPA}} * {{IPA|pt|/dø/|a=Madeira}} * {{hyph|pt|do}} ===รูปหดย่อ=== {{head|pt|รูปหดย่อ|g=m-s|plural|dos|feminine|da|feminine plural|das}} # {{senseid|pt|de o}} {{contraction of|pt|[[de]] [[o]]||ของ, จาก {{q|ใช้กับคำนามที่เป็นเอกพจน์และเพศชาย}}}} == ภาษาอะตง == === รากศัพท์ === {{bor+|aot|hi|दो}} === การออกเสียง === * {{IPA|aot|/do/}} === เลข === {{aot-num|দো}} # [[สอง]] ==== คำพ้องความ ==== * {{l|aot|ni}} * {{l|aot|rongni}} * {{l|aot|tu}} == ภาษาอังกฤษ == ===การออกเสียง=== *{{IPA|en|/ˈdu/}} === คำกริยา === {{en-verb|does|doing|did|done}} (ดู) # [[ทำ]] #: {{ux|en|Why are you '''doing''' this?|คุณทำอย่างนี้ทำไม}} #: {{ux|en|He [[told]] me I shouldn't '''do''' anything.|เขาบอกว่าฉันไม่ควรทำอะไรเลย}} == ภาษาเอสเปรันโต == === การออกเสียง === {{eo-pr}} === รากศัพท์ 1 === ==== คำนาม ==== {{eo-head}} # {{Latn-def|eo|name|D|d}} ===== ดูเพิ่ม ===== * {{รายชื่อ:ชื่อตัวอักษรในอักษรละติน/eo}} === รากศัพท์ 2 === จาก{{der|eo|fr|donc}}, เป็นไปได้ว่าผ่าน[[การกร่อนต้นคำ]]ของ{{der|eo|la|ad}} {{m|la|tunc}} (ดูเพิ่มที่ {{m|fr|adonc}}); เทียบ{{cog|it|dunque}}, {{cog|ro|atunci}}, {{cog|es|entonces}} ==== คำกริยาวิเศษณ์ ==== {{eo-adv}} # [[ดังนั้น]], [[ต่อ]][[จาก]][[นั้น]], [[ฉะนั้น]], [[แท้]][[จริง]][[แล้ว]], [[อย่างไรก็ตาม]] {{Universala Vortaro}} {{eo BRO|1}} 616sk734wszby1shh6kbmq32xy86ry0 estrella 0 11363 5754483 5690322 2026-08-06T07:36:07Z OctraBot 3198 update template use 5754483 wikitext text/x-wiki == ภาษากาตาลา == === รูปแบบอื่น === * {{alt|ca|estrela||Valencian}} === รากศัพท์ === {{bor+|ca|es|estrella}} === การออกเสียง === * {{ca-IPA|ê|cen=é,è|val=astrélla}} * {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-estrella.wav|a=Catalonia}} === คำนาม === {{ca-noun|f}} # [[ดาว]], [[ดาวฤกษ์]] #: {{syn|ca|estel}} ==== ลูกคำ ==== {{col|ca|estrellat}} === อ่านเพิ่ม === * {{R:ca:IEC2}} * {{R:ca:DNV}} * {{R:ca:DCVB}} == ภาษาโปรตุเกส == === รากศัพท์ 1 === ==== คำนาม ==== {{pt-noun|f}} # {{pt-pre-reform|estrela|pt=11|br=43}} #* {{RQ:Vidas Seccas|chapter=Mudança|trans-chapter=A New Home|page=15|text=Saciado, cahiu de papo para cima, olhando as '''estrellas''', que vinham nascendo.|t=Satisfied, he fell belly-up, looking at the '''stars''', which were coming up.}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|estrellar}} == ภาษาเลออน == === รูปแบบอื่น === * {{alter|roa-leo|estreilla}} === รากศัพท์ === {{inh+|roa-leo|la|stēlla}} (อาจรับผ่านภาษาถิ่นที่ยังไม่พิสูจน์ยืนยัน {{inh|roa-leo|la|*strēlla}}) === คำนาม === {{head|roa-leo|คำนาม|g=f}} # [[ดาว]], [[ดาวฤกษ์]] === อ้างอิง === * {{R:roa-leo:DCLLC}} * {{R:roa-leo:Pallabreiru}} == ภาษาสเปน == {{Wikiquote|lang=es}} === การออกเสียง === {{es-pr|+<audio:es-us-estrella.ogg<a:US>>}} === รากศัพท์ 1 === {{etymon|es|:inh|osp:estrella|tree=1}} {{inh+|es|osp|estrella}} (เทียบ{{cog|gl|estrela}}, {{cog|pt|estrela}} และ{{cog|ca|estrella}}), จาก{{inh|es|la|stēlla}} (อาจรับผ่านภาษาถิ่นที่ยังไม่พิสูจน์ยืนยัน {{inh|es|la|*strēlla}}), จาก{{inh|es|itc-pro|*stērolā}}, จาก{{inh|es|ine-pro|*h₂stḗr}} ==== คำนาม ==== {{es-noun|f}} # [[ดาว]], [[ดาวฤกษ์]] #: {{syn|es|astro}} # ดาว (รูปร่าง) # [[ดารา]] (คนมีชื่อเสียงในการแสดง) # {{lb|es|heraldiccharge}} ดาว ([[mullet]]) ===== ลูกคำ ===== {{col|es |anís estrella |buena estrella |Estrella |estrella binaria |estrella de Belén |estrella de carbono |estrella de David |estrella de helio |estrella de la tarde|estrella de los Andes |estrella de mar |estrella de neutrones |estrellado |estrella doble |estrella enana |estrella fija |estrella fugaz |estrella gigante |estrella polar |estrella porno |estrellar<pos:v> |estrella rezagada azul |estrellita<pos:diminutive> |estrellón |ir de estrella<pos:v> |lluvia de estrellas |nacer con estrella<pos:v> |pasto estrella }} ===== คำเกี่ยวข้อง ===== {{col|es |estelar |estrellar }} ===== คำสืบทอด ===== * {{desc|pap|strea}} * {{desc|sc|streglia|bor=1}} {{q|Campidanese}} * {{desc|tl|estrelya|bor=1}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{head|es|รูปกริยา}} # {{es-verb form of|estrellar}} === อ่านเพิ่ม === * {{R:es:DRAE}} {{C|es|ดาราศาสตร์|Stars}} == ภาษาสเปนเก่า == === รูปแบบอื่น === * {{alt|osp|estrela|strela|strella}} === รากศัพท์ === {{etymon|osp|:inh|la:stēlla}} จาก{{inh|osp|la|stēlla}} (อาจรับผ่านภาษาถิ่นที่ยังไม่พิสูจน์ยืนยัน {{inh|osp|la|*strēlla}}), แรกสุดจาก{{inh|osp|ine-pro|*h₂stḗr}} === การออกเสียง === * {{IPA|osp|/esˈtɾeʎa/}} === คำนาม === {{osp-noun|f}} # [[ดาว]], [[ดาวฤกษ์]] #* {{RQ:osp:Fazienda de Ultramar|5va<!-- -->|passage=Sõnaua q̃ el ſol. e la luna. E .xj. '''eſtrellas''' me adorauan. |norm=Sonnava que el sol e la luna, e onze '''estrellas''' me adoravan. |translation=I dreamt that the sun, then the moon, then eleven stars worshiped me.}} #* {{RQ:osp:Fazienda de Ultramar|77vb<!-- -->|passage=alli luego guio el '''eſtrella''' alos tres reyes magos que uinjeron de orient. |norm=allí luego guió el '''estrella''' a los tres Reyes Magos que vinieron de orient. |translation=there the star later guided the Three Wise Men that came from the east.}} ==== ลูกคำ ==== {{col|osp |estrellero<g:m> }} ==== คำสืบทอด ==== * {{desc|lad|estreya}} * {{desc|es|estrella}} {{see desc}} === อ้างอิง === * {{R:osp:VCM|245}} == ภาษาอัสตูเรียส == === รากศัพท์ === {{inh+|ast|la|stēlla}} (อาจรับผ่านภาษาถิ่นที่ยังไม่พิสูจน์ยืนยัน {{inh|ast|la|*strēlla}}) === การออกเสียง === {{ast-pr}} === คำนาม === {{ast-noun|f|estrelles}} # [[ดาว]], [[ดาวฤกษ์]] ==== ลูกคำ ==== {{col|ast|estrellalbu}} === อ่านเพิ่ม === * {{R:ast:DALLA}} * {{R:ast:DGLA}} a9yds8j77j047il7wak99qtysjocsjk 0 11512 5754518 1878248 2026-08-06T08:40:45Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754518 wikitext text/x-wiki {{also/auto}} ==ภาษาสเปน== ===การออกเสียง=== * คำอ่านภาษาไทย: ตู * {{es-IPA}} ==={{หน้าที่|es|สรรพนาม}}=== {{es-pronoun}} # [[คุณ]] (คุ้นเคย) ====ดูเพิ่ม==== {{คำสรรพนามภาษาสเปน}} == ภาษาจีนกลาง == === การออกเสียง === * {{audio|cmn|Zh-tú.ogg}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|凃}} # {{cmn-pinyin of|啙}} # {{cmn-pinyin of|圖|圗|図|图|attn=1}} # {{cmn-pinyin of|塗}} # {{cmn-pinyin of|宊}} # {{cmn-pinyin of|屠}} # {{cmn-pinyin of|峹}} # {{cmn-pinyin of|嵞}} # {{cmn-pinyin of|庩}} # {{cmn-pinyin of|徒}} # {{cmn-pinyin of|怢}} # {{cmn-pinyin of|悂}} # {{cmn-pinyin of|捈}} # {{cmn-pinyin of|揬}} # {{cmn-pinyin of|梌}} # {{cmn-pinyin of|涂}} # {{cmn-pinyin of|湥}} # {{cmn-pinyin of|潳}} # {{cmn-pinyin of|瑹}} # {{cmn-pinyin of|瘏}} # {{cmn-pinyin of|稌}} # {{cmn-pinyin of|突}} # {{cmn-pinyin of|筡}} # {{cmn-pinyin of|腞}} # {{cmn-pinyin of|腯}} # {{cmn-pinyin of|荼}} # {{cmn-pinyin of|菞}} # {{cmn-pinyin of|葖}} # {{cmn-pinyin of|蒤}} # {{cmn-pinyin of|跌}} # {{cmn-pinyin of|跿}} # {{cmn-pinyin of|途}} # {{cmn-pinyin of|酴}} # {{cmn-pinyin of|鈯}} # {{cmn-pinyin of|鍎}} # {{cmn-pinyin of|馟}} # {{cmn-pinyin of|駼}} # {{cmn-pinyin of|鵅}} # {{cmn-pinyin of|鵚}} # {{cmn-pinyin of|鶟}} # {{cmn-pinyin of|鷋}} # {{cmn-pinyin of|鷵}} # {{cmn-pinyin of|鼵}} ssuboo3v9bjcmjdzctszahq8ytrvnp8 5754519 5754518 2026-08-06T08:43:04Z OctraBot 3198 /* ภาษาสเปน */ เก็บกวาด 5754519 wikitext text/x-wiki {{also/auto}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|la|tū}}, จาก{{inh|es|itc-pro|*tū}}, จาก{{inh|es|ine-pro|*túh₂}}; ร่วมเชื้อสายกับ{{cog|en|thou}}, {{cog|pt|tu}}, {{cog|ca|tu}}, {{cog|fr|tu}}, {{cog|it|tu}}, {{cog|ro|tu}} === การออกเสียง === {{es-pr|+<audio:Es-tú.ogg><hmp:tu>}} === คำสรรพนาม === {{head|es|คำสรรพนาม|disjunctive|ti|oblique|te|comitative|contigo|preposed possessive determiner|tu|possessive pronoun/postposed or standalone possessive determiner|tuyo}} # {{lb|es|informal}} [[คุณ]] {{gl|คำสรรพนามบุรุษที่สองเอกพจน์}} #: {{syn|es|vos<q:regional>|usted<q:regional or formal>|vuestra merced<q:archaic>|vusted<q:obsolete>}} ==== หมายเหตุการใช้ ==== * เมื่อมีคำสรรพนามหลายตัวอยู่ในประโยคเดียวกัน ถือว่าไม่สุภาพที่จะพูดคำสรรพนาม {{m|es|yo}} เป็นคำแรก จะต้องพูดเป็นคำสุดท้าย และต้องพูด '''tú''' ตามหลังคำสรรพนามบุรุษที่สาม (รวมถึง {{m|es|ti}} และ {{m|es|mí}} ด้วย) ** {{ux|es|Iremos Rosa, '''tú''' y yo.|inline=1|Rosa, '''you''' and I will go.}} ==== ลูกคำ ==== {{col|es |tutear<pos:v> |tuteo<g:m> |¿tú y cuántos más? |yo que tú |a ti }} ==== คำสืบทอด ==== * {{desc|cbk|tu}} ==== ดูเพิ่ม ==== * {{l|es|usted}} {{es-personal pronouns}} ==== คำอุทาน ==== {{head|es|คำอุทาน}} # {{lb|es|Central America|_|(particularly El Salvador)|Spain}} {{ng|คำหยาบ}} === อ่านเพิ่ม === * {{R:es:DRAE}} * {{R:es:DEA}} == ภาษาจีนกลาง == === การออกเสียง === * {{audio|cmn|Zh-tú.ogg}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|凃}} # {{cmn-pinyin of|啙}} # {{cmn-pinyin of|圖|圗|図|图|attn=1}} # {{cmn-pinyin of|塗}} # {{cmn-pinyin of|宊}} # {{cmn-pinyin of|屠}} # {{cmn-pinyin of|峹}} # {{cmn-pinyin of|嵞}} # {{cmn-pinyin of|庩}} # {{cmn-pinyin of|徒}} # {{cmn-pinyin of|怢}} # {{cmn-pinyin of|悂}} # {{cmn-pinyin of|捈}} # {{cmn-pinyin of|揬}} # {{cmn-pinyin of|梌}} # {{cmn-pinyin of|涂}} # {{cmn-pinyin of|湥}} # {{cmn-pinyin of|潳}} # {{cmn-pinyin of|瑹}} # {{cmn-pinyin of|瘏}} # {{cmn-pinyin of|稌}} # {{cmn-pinyin of|突}} # {{cmn-pinyin of|筡}} # {{cmn-pinyin of|腞}} # {{cmn-pinyin of|腯}} # {{cmn-pinyin of|荼}} # {{cmn-pinyin of|菞}} # {{cmn-pinyin of|葖}} # {{cmn-pinyin of|蒤}} # {{cmn-pinyin of|跌}} # {{cmn-pinyin of|跿}} # {{cmn-pinyin of|途}} # {{cmn-pinyin of|酴}} # {{cmn-pinyin of|鈯}} # {{cmn-pinyin of|鍎}} # {{cmn-pinyin of|馟}} # {{cmn-pinyin of|駼}} # {{cmn-pinyin of|鵅}} # {{cmn-pinyin of|鵚}} # {{cmn-pinyin of|鶟}} # {{cmn-pinyin of|鷋}} # {{cmn-pinyin of|鷵}} # {{cmn-pinyin of|鼵}} tbxuymh24vbgucfb2gr0q5npcgkicv3 5754520 5754519 2026-08-06T08:43:53Z OctraBot 3198 /* คำสรรพนาม */ 5754520 wikitext text/x-wiki {{also/auto}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|la|tū}}, จาก{{inh|es|itc-pro|*tū}}, จาก{{inh|es|ine-pro|*túh₂}}; ร่วมเชื้อสายกับ{{cog|en|thou}}, {{cog|pt|tu}}, {{cog|ca|tu}}, {{cog|fr|tu}}, {{cog|it|tu}}, {{cog|ro|tu}} === การออกเสียง === {{es-pr|+<audio:Es-tú.ogg><hmp:tu>}} === คำสรรพนาม === {{head|es|คำสรรพนาม|disjunctive|ti|oblique|te|comitative|contigo|preposed possessive determiner|tu|possessive pronoun/postposed or standalone possessive determiner|tuyo}} # {{lb|es|informal}} [[คุณ]] {{gl|คำสรรพนามบุรุษที่สองเอกพจน์}} #: {{syn|es|vos<q:เฉพาะภูมิภาค>|usted<q:เฉพาะภูมิภาคหรือทางการ>|vuestra merced<q:โบราณ>|vusted<q:เลิกใช้>}} ==== หมายเหตุการใช้ ==== * เมื่อมีคำสรรพนามหลายตัวอยู่ในประโยคเดียวกัน ถือว่าไม่สุภาพที่จะพูดคำสรรพนาม {{m|es|yo}} เป็นคำแรก จะต้องพูดเป็นคำสุดท้าย และต้องพูด '''tú''' ตามหลังคำสรรพนามบุรุษที่สาม (รวมถึง {{m|es|ti}} และ {{m|es|mí}} ด้วย) ** {{ux|es|Iremos Rosa, '''tú''' y yo.|inline=1|Rosa, '''you''' and I will go.}} ==== ลูกคำ ==== {{col|es |tutear<pos:v> |tuteo<g:m> |¿tú y cuántos más? |yo que tú |a ti }} ==== คำสืบทอด ==== * {{desc|cbk|tu}} ==== ดูเพิ่ม ==== * {{l|es|usted}} {{es-personal pronouns}} ==== คำอุทาน ==== {{head|es|คำอุทาน}} # {{lb|es|Central America|_|(particularly El Salvador)|Spain}} {{ng|คำหยาบ}} === อ่านเพิ่ม === * {{R:es:DRAE}} * {{R:es:DEA}} == ภาษาจีนกลาง == === การออกเสียง === * {{audio|cmn|Zh-tú.ogg}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|凃}} # {{cmn-pinyin of|啙}} # {{cmn-pinyin of|圖|圗|図|图|attn=1}} # {{cmn-pinyin of|塗}} # {{cmn-pinyin of|宊}} # {{cmn-pinyin of|屠}} # {{cmn-pinyin of|峹}} # {{cmn-pinyin of|嵞}} # {{cmn-pinyin of|庩}} # {{cmn-pinyin of|徒}} # {{cmn-pinyin of|怢}} # {{cmn-pinyin of|悂}} # {{cmn-pinyin of|捈}} # {{cmn-pinyin of|揬}} # {{cmn-pinyin of|梌}} # {{cmn-pinyin of|涂}} # {{cmn-pinyin of|湥}} # {{cmn-pinyin of|潳}} # {{cmn-pinyin of|瑹}} # {{cmn-pinyin of|瘏}} # {{cmn-pinyin of|稌}} # {{cmn-pinyin of|突}} # {{cmn-pinyin of|筡}} # {{cmn-pinyin of|腞}} # {{cmn-pinyin of|腯}} # {{cmn-pinyin of|荼}} # {{cmn-pinyin of|菞}} # {{cmn-pinyin of|葖}} # {{cmn-pinyin of|蒤}} # {{cmn-pinyin of|跌}} # {{cmn-pinyin of|跿}} # {{cmn-pinyin of|途}} # {{cmn-pinyin of|酴}} # {{cmn-pinyin of|鈯}} # {{cmn-pinyin of|鍎}} # {{cmn-pinyin of|馟}} # {{cmn-pinyin of|駼}} # {{cmn-pinyin of|鵅}} # {{cmn-pinyin of|鵚}} # {{cmn-pinyin of|鶟}} # {{cmn-pinyin of|鷋}} # {{cmn-pinyin of|鷵}} # {{cmn-pinyin of|鼵}} 1f7pt31aja5xx0f6yvpp6cmd3ute3gg 5754521 5754520 2026-08-06T08:44:28Z OctraBot 3198 /* คำอุทาน */ 5754521 wikitext text/x-wiki {{also/auto}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|la|tū}}, จาก{{inh|es|itc-pro|*tū}}, จาก{{inh|es|ine-pro|*túh₂}}; ร่วมเชื้อสายกับ{{cog|en|thou}}, {{cog|pt|tu}}, {{cog|ca|tu}}, {{cog|fr|tu}}, {{cog|it|tu}}, {{cog|ro|tu}} === การออกเสียง === {{es-pr|+<audio:Es-tú.ogg><hmp:tu>}} === คำสรรพนาม === {{head|es|คำสรรพนาม|disjunctive|ti|oblique|te|comitative|contigo|preposed possessive determiner|tu|possessive pronoun/postposed or standalone possessive determiner|tuyo}} # {{lb|es|informal}} [[คุณ]] {{gl|คำสรรพนามบุรุษที่สองเอกพจน์}} #: {{syn|es|vos<q:เฉพาะภูมิภาค>|usted<q:เฉพาะภูมิภาคหรือทางการ>|vuestra merced<q:โบราณ>|vusted<q:เลิกใช้>}} ==== หมายเหตุการใช้ ==== * เมื่อมีคำสรรพนามหลายตัวอยู่ในประโยคเดียวกัน ถือว่าไม่สุภาพที่จะพูดคำสรรพนาม {{m|es|yo}} เป็นคำแรก จะต้องพูดเป็นคำสุดท้าย และต้องพูด '''tú''' ตามหลังคำสรรพนามบุรุษที่สาม (รวมถึง {{m|es|ti}} และ {{m|es|mí}} ด้วย) ** {{ux|es|Iremos Rosa, '''tú''' y yo.|inline=1|Rosa, '''you''' and I will go.}} ==== ลูกคำ ==== {{col|es |tutear<pos:v> |tuteo<g:m> |¿tú y cuántos más? |yo que tú |a ti }} ==== คำสืบทอด ==== * {{desc|cbk|tu}} ==== ดูเพิ่ม ==== * {{l|es|usted}} {{es-personal pronouns}} ==== คำอุทาน ==== {{head|es|คำอุทาน}} # {{lb|es|Central America|_|(โดยเฉพาะเอลซัลวาดอร์)|Spain}} {{ng|คำหยาบ}} === อ่านเพิ่ม === * {{R:es:DRAE}} * {{R:es:DEA}} == ภาษาจีนกลาง == === การออกเสียง === * {{audio|cmn|Zh-tú.ogg}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|凃}} # {{cmn-pinyin of|啙}} # {{cmn-pinyin of|圖|圗|図|图|attn=1}} # {{cmn-pinyin of|塗}} # {{cmn-pinyin of|宊}} # {{cmn-pinyin of|屠}} # {{cmn-pinyin of|峹}} # {{cmn-pinyin of|嵞}} # {{cmn-pinyin of|庩}} # {{cmn-pinyin of|徒}} # {{cmn-pinyin of|怢}} # {{cmn-pinyin of|悂}} # {{cmn-pinyin of|捈}} # {{cmn-pinyin of|揬}} # {{cmn-pinyin of|梌}} # {{cmn-pinyin of|涂}} # {{cmn-pinyin of|湥}} # {{cmn-pinyin of|潳}} # {{cmn-pinyin of|瑹}} # {{cmn-pinyin of|瘏}} # {{cmn-pinyin of|稌}} # {{cmn-pinyin of|突}} # {{cmn-pinyin of|筡}} # {{cmn-pinyin of|腞}} # {{cmn-pinyin of|腯}} # {{cmn-pinyin of|荼}} # {{cmn-pinyin of|菞}} # {{cmn-pinyin of|葖}} # {{cmn-pinyin of|蒤}} # {{cmn-pinyin of|跌}} # {{cmn-pinyin of|跿}} # {{cmn-pinyin of|途}} # {{cmn-pinyin of|酴}} # {{cmn-pinyin of|鈯}} # {{cmn-pinyin of|鍎}} # {{cmn-pinyin of|馟}} # {{cmn-pinyin of|駼}} # {{cmn-pinyin of|鵅}} # {{cmn-pinyin of|鵚}} # {{cmn-pinyin of|鶟}} # {{cmn-pinyin of|鷋}} # {{cmn-pinyin of|鷵}} # {{cmn-pinyin of|鼵}} 7gkfryjsql372ad5xkrsts3gamr7ygw 5754522 5754521 2026-08-06T08:45:49Z OctraBot 3198 5754522 wikitext text/x-wiki {{also/auto}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|la|tū}}, จาก{{inh|es|itc-pro|*tū}}, จาก{{inh|es|ine-pro|*túh₂}}; ร่วมเชื้อสายกับ{{cog|en|thou}}, {{cog|pt|tu}}, {{cog|ca|tu}}, {{cog|fr|tu}}, {{cog|it|tu}}, {{cog|ro|tu}} === การออกเสียง === {{es-pr|+<audio:Es-tú.ogg><hmp:tu>}} === คำสรรพนาม === {{head|es|คำสรรพนาม|disjunctive|ti|oblique|te|comitative|contigo|preposed possessive determiner|tu|possessive pronoun/postposed or standalone possessive determiner|tuyo}} # {{lb|es|informal}} [[คุณ]] {{gl|คำสรรพนามบุรุษที่สองเอกพจน์}} #: {{syn|es|vos<q:เฉพาะภูมิภาค>|usted<q:เฉพาะภูมิภาคหรือทางการ>|vuestra merced<q:โบราณ>|vusted<q:เลิกใช้>}} ==== หมายเหตุการใช้ ==== * เมื่อมีคำสรรพนามหลายตัวอยู่ในประโยคเดียวกัน ถือว่าไม่สุภาพที่จะพูดคำสรรพนาม {{m|es|yo}} เป็นคำแรก จะต้องพูดเป็นคำสุดท้าย และต้องพูด '''tú''' ตามหลังคำสรรพนามบุรุษที่สาม (รวมถึง {{m|es|ti}} และ {{m|es|mí}} ด้วย) ** {{ux|es|Iremos Rosa, '''tú''' y yo.|inline=1|Rosa, '''you''' and I will go.}} ==== ลูกคำ ==== {{col|es |tutear<pos:v> |tuteo<g:m> |¿tú y cuántos más? |yo que tú |a ti }} ==== คำสืบทอด ==== * {{desc|cbk|tu}} ==== ดูเพิ่ม ==== * {{l|es|usted}} {{es-personal pronouns}} ==== คำอุทาน ==== {{head|es|คำอุทาน}} # {{lb|es|Central America|_|(โดยเฉพาะเอลซัลวาดอร์)|Spain}} {{ng|คำหยาบ}} === อ่านเพิ่ม === * {{R:es:DRAE}} * {{R:es:DEA}} == ภาษาจีนกลาง == === การออกเสียง === * {{audio|cmn|Zh-tú.ogg}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|凃}} # {{cmn-pinyin of|啙}} # {{cmn-pinyin of|圖|圗|図|图|attn=1}} # {{cmn-pinyin of|塗}} # {{cmn-pinyin of|宊}} # {{cmn-pinyin of|屠}} # {{cmn-pinyin of|峹}} # {{cmn-pinyin of|嵞}} # {{cmn-pinyin of|庩}} # {{cmn-pinyin of|徒}} # {{cmn-pinyin of|怢}} # {{cmn-pinyin of|悂}} # {{cmn-pinyin of|捈}} # {{cmn-pinyin of|揬}} # {{cmn-pinyin of|梌}} # {{cmn-pinyin of|涂}} # {{cmn-pinyin of|湥}} # {{cmn-pinyin of|潳}} # {{cmn-pinyin of|瑹}} # {{cmn-pinyin of|瘏}} # {{cmn-pinyin of|稌}} # {{cmn-pinyin of|突}} # {{cmn-pinyin of|筡}} # {{cmn-pinyin of|腞}} # {{cmn-pinyin of|腯}} # {{cmn-pinyin of|荼}} # {{cmn-pinyin of|菞}} # {{cmn-pinyin of|葖}} # {{cmn-pinyin of|蒤}} # {{cmn-pinyin of|跌}} # {{cmn-pinyin of|跿}} # {{cmn-pinyin of|途}} # {{cmn-pinyin of|酴}} # {{cmn-pinyin of|鈯}} # {{cmn-pinyin of|鍎}} # {{cmn-pinyin of|馟}} # {{cmn-pinyin of|駼}} # {{cmn-pinyin of|鵅}} # {{cmn-pinyin of|鵚}} # {{cmn-pinyin of|鶟}} # {{cmn-pinyin of|鷋}} # {{cmn-pinyin of|鷵}} # {{cmn-pinyin of|鼵}} == ภาษาฮกเกี้ยน == {{zh-see|拄|poj}} caybmotifsygcaurn128q0f42r2uvh1 5754523 5754522 2026-08-06T08:46:03Z OctraBot 3198 เรียงลำดับหัวเรื่องภาษา 5754523 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การออกเสียง === * {{audio|cmn|Zh-tú.ogg}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|凃}} # {{cmn-pinyin of|啙}} # {{cmn-pinyin of|圖|圗|図|图|attn=1}} # {{cmn-pinyin of|塗}} # {{cmn-pinyin of|宊}} # {{cmn-pinyin of|屠}} # {{cmn-pinyin of|峹}} # {{cmn-pinyin of|嵞}} # {{cmn-pinyin of|庩}} # {{cmn-pinyin of|徒}} # {{cmn-pinyin of|怢}} # {{cmn-pinyin of|悂}} # {{cmn-pinyin of|捈}} # {{cmn-pinyin of|揬}} # {{cmn-pinyin of|梌}} # {{cmn-pinyin of|涂}} # {{cmn-pinyin of|湥}} # {{cmn-pinyin of|潳}} # {{cmn-pinyin of|瑹}} # {{cmn-pinyin of|瘏}} # {{cmn-pinyin of|稌}} # {{cmn-pinyin of|突}} # {{cmn-pinyin of|筡}} # {{cmn-pinyin of|腞}} # {{cmn-pinyin of|腯}} # {{cmn-pinyin of|荼}} # {{cmn-pinyin of|菞}} # {{cmn-pinyin of|葖}} # {{cmn-pinyin of|蒤}} # {{cmn-pinyin of|跌}} # {{cmn-pinyin of|跿}} # {{cmn-pinyin of|途}} # {{cmn-pinyin of|酴}} # {{cmn-pinyin of|鈯}} # {{cmn-pinyin of|鍎}} # {{cmn-pinyin of|馟}} # {{cmn-pinyin of|駼}} # {{cmn-pinyin of|鵅}} # {{cmn-pinyin of|鵚}} # {{cmn-pinyin of|鶟}} # {{cmn-pinyin of|鷋}} # {{cmn-pinyin of|鷵}} # {{cmn-pinyin of|鼵}} == ภาษาสเปน == === รากศัพท์ === {{inh+|es|la|tū}}, จาก{{inh|es|itc-pro|*tū}}, จาก{{inh|es|ine-pro|*túh₂}}; ร่วมเชื้อสายกับ{{cog|en|thou}}, {{cog|pt|tu}}, {{cog|ca|tu}}, {{cog|fr|tu}}, {{cog|it|tu}}, {{cog|ro|tu}} === การออกเสียง === {{es-pr|+<audio:Es-tú.ogg><hmp:tu>}} === คำสรรพนาม === {{head|es|คำสรรพนาม|disjunctive|ti|oblique|te|comitative|contigo|preposed possessive determiner|tu|possessive pronoun/postposed or standalone possessive determiner|tuyo}} # {{lb|es|informal}} [[คุณ]] {{gl|คำสรรพนามบุรุษที่สองเอกพจน์}} #: {{syn|es|vos<q:เฉพาะภูมิภาค>|usted<q:เฉพาะภูมิภาคหรือทางการ>|vuestra merced<q:โบราณ>|vusted<q:เลิกใช้>}} ==== หมายเหตุการใช้ ==== * เมื่อมีคำสรรพนามหลายตัวอยู่ในประโยคเดียวกัน ถือว่าไม่สุภาพที่จะพูดคำสรรพนาม {{m|es|yo}} เป็นคำแรก จะต้องพูดเป็นคำสุดท้าย และต้องพูด '''tú''' ตามหลังคำสรรพนามบุรุษที่สาม (รวมถึง {{m|es|ti}} และ {{m|es|mí}} ด้วย) ** {{ux|es|Iremos Rosa, '''tú''' y yo.|inline=1|Rosa, '''you''' and I will go.}} ==== ลูกคำ ==== {{col|es |tutear<pos:v> |tuteo<g:m> |¿tú y cuántos más? |yo que tú |a ti }} ==== คำสืบทอด ==== * {{desc|cbk|tu}} ==== ดูเพิ่ม ==== * {{l|es|usted}} {{es-personal pronouns}} ==== คำอุทาน ==== {{head|es|คำอุทาน}} # {{lb|es|Central America|_|(โดยเฉพาะเอลซัลวาดอร์)|Spain}} {{ng|คำหยาบ}} === อ่านเพิ่ม === * {{R:es:DRAE}} * {{R:es:DEA}} == ภาษาฮกเกี้ยน == {{zh-see|拄|poj}} 9qcdvrbb6kjvpssj9yw0k70mlw9g3h0 jardin 0 11683 5754456 1876665 2026-08-06T05:11:08Z Octahedron80 267 5754456 wikitext text/x-wiki {{also/auto}} ==ภาษาฝรั่งเศส== ===การออกเสียง=== * {{audio|fr|Fr-jardin.ogg}} */ʒaʁ.dɛ̃/ ===คำนาม=== {{fr-noun|m}} # [[สวน]] == ภาษาอังกฤษ == === รากศัพท์ === {{root|en|ine-pro|*gʰerdʰ-}} จาก{{bor|en|fr|jardin||สวน}}, จากลักษณะคล้ายมอส; {{doublet|en|garden}} === คำนาม === {{en-noun}} # สิ่งเจือปนและรอยร้าวภายใน[[มรกต]] 65vumh5lt0365o3kx1be671u5742t5n 5754458 5754456 2026-08-06T05:15:56Z Octahedron80 267 /* ภาษาฝรั่งเศส */ เก็บกวาด 5754458 wikitext text/x-wiki {{also/auto}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{ety|fr|:inh|frm:jardin<ety:inh<fro:gardin>>}} จาก{{der|fr|frm|jardin}}, จาก{{der|fr|fro|jardin}}, จาก{{der|fr|la-med|jardinus||สวน}}, จาก{{der|fr|frk|*gardin}} [เก่า], การกอ้อมของ {{m|frk|*gardō||ที่ปิดล้อม, สนาม}} (เทียบเพิ่มเติม{{cog|fro|jart||สวน}}), จาก{{der|fr|gem-pro|*gardô||ที่ปิดล้อม, สวน, บ้าน}}, จาก{{der|fr|ine-pro|*gʰordʰos||แนวพุ่มไม้, ที่ปิดล้อม}}, จาก{{der|fr|ine-pro|*gʰerdʰ-||ลาน, สนาม}} ร่วมเชื้อสายกับ{{cog|goh|gart}}, {{m|goh|garto||สวน, ที่ปิดล้อม, สนาม}}, {{cog|ang|ġeard||สวน, สนาม, รั้ว, ที่ปิดล้อม}}; ร่วมเชื้อสายกับอังกฤษ ''[[garden]]'', ซึ่งรับมาจากรูปแบบอื่นของแองโกล-นอร์มัน/ฝรั่งเศสเหนือเก่า; ดูเพิ่มที่ {{m|en|yard}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-jardin.ogg}} * {{audio|fr|LL-Q150 (fra)-LoquaxFR-jardin.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-jardin.wav|a=<<France>> (<<Lyon>>)}} * {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-jardin.wav|a=<<France>> (<<Somain>>)}} === คำนาม === {{fr-noun|m}} # [[สวน]] ==== ลูกคำ ==== {{col3|fr |araignée des jardins |chrysanthème des jardins |coronille des jardins |jardin botanique |jardin d'acclimatation |jardin d'Éden |jardin d'enfants |jardin potager |jardin public |jardin secret |jardin zoologique |jardinage |jardinier |nain de jardin |scabieuse des jardins }} ==== ลูกคำ ==== * {{l|fr|jardiner}} ** {{l|fr|jardinage}} * {{l|fr|jardinerie}} * {{l|fr|jardinet}} * {{l|fr|jardinier}}, {{l|fr|jardinière}} ==== คำสืบทอด ==== * {{desc|ca|jardí|bor=1}} * {{desc|it|giardino|bor=1}} * {{desc|fur|zardìn|bor=1}} * {{desc|es|jardín|bor=1}} {{see desc}} * {{desc|vec|zardin|bor=1}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาอังกฤษ == === รากศัพท์ === {{root|en|ine-pro|*gʰerdʰ-}} จาก{{bor|en|fr|jardin||สวน}}, จากลักษณะคล้ายมอส; {{doublet|en|garden}} === คำนาม === {{en-noun}} # สิ่งเจือปนและรอยร้าวภายใน[[มรกต]] tlun20371awtbyj2smzbpxbenh8lfdv 5754459 5754458 2026-08-06T05:17:57Z Octahedron80 267 5754459 wikitext text/x-wiki {{also/auto}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{ety|fr|:inh|frm:jardin<ety:inh<fro:gardin>>}} จาก{{der|fr|frm|jardin}}, จาก{{der|fr|fro|jardin}}, จาก{{der|fr|la-med|jardinus||สวน}}, จาก{{der|fr|frk|*gardin}} [เก่า], การกอ้อมของ {{m|frk|*gardō||ที่ปิดล้อม, สนาม}} (เทียบเพิ่มเติม{{cog|fro|jart||สวน}}), จาก{{der|fr|gem-pro|*gardô||ที่ปิดล้อม, สวน, บ้าน}}, จาก{{der|fr|ine-pro|*gʰordʰos||แนวพุ่มไม้, ที่ปิดล้อม}}, จาก{{der|fr|ine-pro|*gʰerdʰ-||ลาน, สนาม}} ร่วมเชื้อสายกับ{{cog|goh|gart}}, {{m|goh|garto||สวน, ที่ปิดล้อม, สนาม}}, {{cog|ang|ġeard||สวน, สนาม, รั้ว, ที่ปิดล้อม}}; ร่วมเชื้อสายกับอังกฤษ ''[[garden]]'', ซึ่งรับมาจากรูปแบบอื่นของแองโกล-นอร์มัน/ฝรั่งเศสเหนือเก่า; ดูเพิ่มที่ {{m|en|yard}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-jardin.ogg}} * {{audio|fr|LL-Q150 (fra)-LoquaxFR-jardin.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-jardin.wav|a=<<France>> (<<Lyon>>)}} * {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-jardin.wav|a=<<France>> (<<Somain>>)}} === คำนาม === {{fr-noun|m}} # [[สวน]] ==== ลูกคำ ==== {{col3|fr |araignée des jardins |chrysanthème des jardins |coronille des jardins |jardin botanique |jardin d'acclimatation |jardin d'Éden |jardin d'enfants |jardin potager |jardin public |jardin secret |jardin zoologique |jardinage |jardinier |nain de jardin |scabieuse des jardins }} ==== ลูกคำ ==== * {{l|fr|jardiner}} ** {{l|fr|jardinage}} * {{l|fr|jardinerie}} * {{l|fr|jardinet}} * {{l|fr|jardinier}}, {{l|fr|jardinière}} ==== คำสืบทอด ==== * {{desc|ca|jardí|bor=1}} * {{desc|it|giardino|bor=1}} * {{desc|fur|zardìn|bor=1}} * {{desc|es|jardín|bor=1}} {{see desc}} * {{desc|vec|zardin|bor=1}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาอังกฤษ == === รากศัพท์ === {{root|en|ine-pro|*gʰerdʰ-}} จาก{{bor|en|fr|jardin||สวน}}, จากลักษณะคล้ายมอส; {{doublet|en|garden}} === คำนาม === {{en-noun}} # สิ่งเจือปนและรอยร้าวภายใน[[มรกต]] == ภาษาอินเทอร์ลิงกวา == === คำนาม === {{ia-noun|es}} # [[สวน]] == ภาษาครีโอลกาบูเวร์ดี == === รากศัพท์ === จาก{{der|kea|pt|jardim}} === คำนาม === {{head|kea|คำนาม}} # [[สวน]] # [[สนาม]][[หลัง]][บ้าน]] === อ้างอิง === * {{R:kea:Gonçalves}} == ภาษามีรังดา == === คำนาม === {{mwl-noun|m}} # [[สวน]] == ภาษาอุตซิตา == === การออกเสียง === * {{IPA|oc|[(d)ʒarˈdi]}} * {{audio|oc|LL-Q14185 (oci)-Davidgrosclaude-jardin.wav|a=Béarn}} === คำนาม === {{oc-noun|m}} # [[สวน]] == ภาษาฝรั่งเศสเก่า == === คำนาม === {{fro-noun|m}} # {{alternative form of|fro|gardin}} 2hga4ujpc76y6711cwadee135suoocm 5754460 5754459 2026-08-06T05:20:29Z Octahedron80 267 5754460 wikitext text/x-wiki {{also/auto}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{ety|fr|:inh|frm:jardin<ety:inh<fro:gardin>>}} จาก{{der|fr|frm|jardin}}, จาก{{der|fr|fro|jardin}}, จาก{{der|fr|la-med|jardinus||สวน}}, จาก{{der|fr|frk|*gardin}} [เก่า], การกอ้อมของ {{m|frk|*gardō||ที่ปิดล้อม, สนาม}} (เทียบเพิ่มเติม{{cog|fro|jart||สวน}}), จาก{{der|fr|gem-pro|*gardô||ที่ปิดล้อม, สวน, บ้าน}}, จาก{{der|fr|ine-pro|*gʰordʰos||แนวพุ่มไม้, ที่ปิดล้อม}}, จาก{{der|fr|ine-pro|*gʰerdʰ-||ลาน, สนาม}} ร่วมเชื้อสายกับ{{cog|goh|gart}}, {{m|goh|garto||สวน, ที่ปิดล้อม, สนาม}}, {{cog|ang|ġeard||สวน, สนาม, รั้ว, ที่ปิดล้อม}}; ร่วมเชื้อสายกับอังกฤษ ''[[garden]]'', ซึ่งรับมาจากรูปแบบอื่นของแองโกล-นอร์มัน/ฝรั่งเศสเหนือเก่า; ดูเพิ่มที่ {{m|en|yard}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-jardin.ogg}} * {{audio|fr|LL-Q150 (fra)-LoquaxFR-jardin.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-jardin.wav|a=<<France>> (<<Lyon>>)}} * {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-jardin.wav|a=<<France>> (<<Somain>>)}} === คำนาม === {{fr-noun|m}} # [[สวน]] ==== ลูกคำ ==== {{col3|fr |araignée des jardins |chrysanthème des jardins |coronille des jardins |jardin botanique |jardin d'acclimatation |jardin d'Éden |jardin d'enfants |jardin potager |jardin public |jardin secret |jardin zoologique |jardinage |jardinier |nain de jardin |scabieuse des jardins }} ==== ลูกคำ ==== * {{l|fr|jardiner}} ** {{l|fr|jardinage}} * {{l|fr|jardinerie}} * {{l|fr|jardinet}} * {{l|fr|jardinier}}, {{l|fr|jardinière}} ==== คำสืบทอด ==== * {{desc|ca|jardí|bor=1}} * {{desc|it|giardino|bor=1}} * {{desc|fur|zardìn|bor=1}} * {{desc|es|jardín|bor=1}} {{see desc}} * {{desc|vec|zardin|bor=1}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาอังกฤษ == === รากศัพท์ === {{root|en|ine-pro|*gʰerdʰ-}} จาก{{bor|en|fr|jardin||สวน}}, จากลักษณะคล้ายมอส; {{doublet|en|garden}} === คำนาม === {{en-noun}} # สิ่งเจือปนและรอยร้าวภายใน[[มรกต]] == ภาษาอินเทอร์ลิงกวา == === คำนาม === {{ia-noun|es}} # [[สวน]] == ภาษาครีโอลกาบูเวร์ดี == === รากศัพท์ === จาก{{der|kea|pt|jardim}} === คำนาม === {{head|kea|คำนาม}} # [[สวน]] # [[สนาม]][[หลัง]][บ้าน]] === อ้างอิง === * {{R:kea:Gonçalves}} == ภาษามีรังดา == === คำนาม === {{mwl-noun|m}} # [[สวน]] == ภาษาอุตซิตา == === การออกเสียง === * {{IPA|oc|[(d)ʒarˈdi]}} * {{audio|oc|LL-Q14185 (oci)-Davidgrosclaude-jardin.wav|a=Béarn}} === คำนาม === {{oc-noun|m}} # [[สวน]] == ภาษาฝรั่งเศสเก่า == === คำนาม === {{fro-noun|m}} # {{alternative form of|fro|gardin}} == ภาษากาลิเซีย-โปรตุเกสเก่า == === รูปแบบอื่น === * {{alt|roa-opt|jardim}} === รากศัพท์ === {{etymon|roa-opt|:bor|fro:gardin<id:garden>|id=garden|tree=1}} {{bor+|roa-opt|fro|gardin||สวน, ที่ปิดล้อม}}, เป็นไปได้ว่ารับมาจาก{{der|roa-opt|la-vul|-}} หรือแกลโล-โรมานซ์ช่วงต้น ''hortus gardinus'', จาก{{der|roa-opt|frk|*gardin}} [เก่า], การกอ้อมของ {{m|frk|*gardo||ที่ปิดล้อม, สนาม}}, จาก{{der|roa-opt|gem-pro|*gardô||ที่ปิดล้อม, สวน, บ้าน}}, จาก{{der|roa-opt|ine-pro|*gʰordʰos||แนวพุ่มไม้, ที่ปิดล้อม}}, จาก{{m|ine-pro|*gʰerdʰ-||ลาน, สนาม}} === การออกเสียง === * {{IPA|roa-opt|/d͡ʒaɾˈdĩ/}} * {{rhyme|roa-opt|ĩ|s=2}} * {{hyph|roa-opt|jar|din}} === คำนาม === {{roa-opt-noun|m}} # [[สวน]] #: {{syn|roa-opt|orto|vergeu}} # {{lb|roa-opt|figuratively|Christianity}} [[สวรรค์]] #: {{syn|roa-opt|ceo|parayso}} #* {{RQ:Cantigas de Santa Maria|E|235|http://www.pbm.com/~lindahl/cantigas/facsimiles/E/425small.gif|text={{...}}a Loemos que nos meta no '''iardi[n]''' / de ſeu fille que nos guarde do mui grand fogỹfernal.|t={{...}} let us praise Her so that She will admit us to the '''garden''' of Her Son (=Heaven) and save us from the great fire of Hell.}} ==== คำสืบทอด ==== * {{desc|fax|jardín}} * {{desc|gl|xardín}} * {{desc|pt|jardim}} === อ้างอิง === * {{R:roa-opt:DDGM}} * {{R:roa-opt:CX}} {{C|roa-opt|สวน}} == ภาษาสเปน == === คำนาม === {{es-noun|m|jardines}} # {{obsolete spelling of|es|jardín}} 6nq5lsfsq9q053f5fmf26wn2y9t94mt 5754461 5754460 2026-08-06T05:20:55Z Octahedron80 267 เรียงลำดับหัวเรื่องภาษา 5754461 wikitext text/x-wiki {{also/auto}} == ภาษากาลิเซีย-โปรตุเกสเก่า == === รูปแบบอื่น === * {{alt|roa-opt|jardim}} === รากศัพท์ === {{etymon|roa-opt|:bor|fro:gardin<id:garden>|id=garden|tree=1}} {{bor+|roa-opt|fro|gardin||สวน, ที่ปิดล้อม}}, เป็นไปได้ว่ารับมาจาก{{der|roa-opt|la-vul|-}} หรือแกลโล-โรมานซ์ช่วงต้น ''hortus gardinus'', จาก{{der|roa-opt|frk|*gardin}} [เก่า], การกอ้อมของ {{m|frk|*gardo||ที่ปิดล้อม, สนาม}}, จาก{{der|roa-opt|gem-pro|*gardô||ที่ปิดล้อม, สวน, บ้าน}}, จาก{{der|roa-opt|ine-pro|*gʰordʰos||แนวพุ่มไม้, ที่ปิดล้อม}}, จาก{{m|ine-pro|*gʰerdʰ-||ลาน, สนาม}} === การออกเสียง === * {{IPA|roa-opt|/d͡ʒaɾˈdĩ/}} * {{rhyme|roa-opt|ĩ|s=2}} * {{hyph|roa-opt|jar|din}} === คำนาม === {{roa-opt-noun|m}} # [[สวน]] #: {{syn|roa-opt|orto|vergeu}} # {{lb|roa-opt|figuratively|Christianity}} [[สวรรค์]] #: {{syn|roa-opt|ceo|parayso}} #* {{RQ:Cantigas de Santa Maria|E|235|http://www.pbm.com/~lindahl/cantigas/facsimiles/E/425small.gif|text={{...}}a Loemos que nos meta no '''iardi[n]''' / de ſeu fille que nos guarde do mui grand fogỹfernal.|t={{...}} let us praise Her so that She will admit us to the '''garden''' of Her Son (=Heaven) and save us from the great fire of Hell.}} ==== คำสืบทอด ==== * {{desc|fax|jardín}} * {{desc|gl|xardín}} * {{desc|pt|jardim}} === อ้างอิง === * {{R:roa-opt:DDGM}} * {{R:roa-opt:CX}} {{C|roa-opt|สวน}} == ภาษาครีโอลกาบูเวร์ดี == === รากศัพท์ === จาก{{der|kea|pt|jardim}} === คำนาม === {{head|kea|คำนาม}} # [[สวน]] # [[สนาม]][[หลัง]][บ้าน]] === อ้างอิง === * {{R:kea:Gonçalves}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{ety|fr|:inh|frm:jardin<ety:inh<fro:gardin>>}} จาก{{der|fr|frm|jardin}}, จาก{{der|fr|fro|jardin}}, จาก{{der|fr|la-med|jardinus||สวน}}, จาก{{der|fr|frk|*gardin}} [เก่า], การกอ้อมของ {{m|frk|*gardō||ที่ปิดล้อม, สนาม}} (เทียบเพิ่มเติม{{cog|fro|jart||สวน}}), จาก{{der|fr|gem-pro|*gardô||ที่ปิดล้อม, สวน, บ้าน}}, จาก{{der|fr|ine-pro|*gʰordʰos||แนวพุ่มไม้, ที่ปิดล้อม}}, จาก{{der|fr|ine-pro|*gʰerdʰ-||ลาน, สนาม}} ร่วมเชื้อสายกับ{{cog|goh|gart}}, {{m|goh|garto||สวน, ที่ปิดล้อม, สนาม}}, {{cog|ang|ġeard||สวน, สนาม, รั้ว, ที่ปิดล้อม}}; ร่วมเชื้อสายกับอังกฤษ ''[[garden]]'', ซึ่งรับมาจากรูปแบบอื่นของแองโกล-นอร์มัน/ฝรั่งเศสเหนือเก่า; ดูเพิ่มที่ {{m|en|yard}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-jardin.ogg}} * {{audio|fr|LL-Q150 (fra)-LoquaxFR-jardin.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-jardin.wav|a=<<France>> (<<Lyon>>)}} * {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-jardin.wav|a=<<France>> (<<Somain>>)}} === คำนาม === {{fr-noun|m}} # [[สวน]] ==== ลูกคำ ==== {{col3|fr |araignée des jardins |chrysanthème des jardins |coronille des jardins |jardin botanique |jardin d'acclimatation |jardin d'Éden |jardin d'enfants |jardin potager |jardin public |jardin secret |jardin zoologique |jardinage |jardinier |nain de jardin |scabieuse des jardins }} ==== ลูกคำ ==== * {{l|fr|jardiner}} ** {{l|fr|jardinage}} * {{l|fr|jardinerie}} * {{l|fr|jardinet}} * {{l|fr|jardinier}}, {{l|fr|jardinière}} ==== คำสืบทอด ==== * {{desc|ca|jardí|bor=1}} * {{desc|it|giardino|bor=1}} * {{desc|fur|zardìn|bor=1}} * {{desc|es|jardín|bor=1}} {{see desc}} * {{desc|vec|zardin|bor=1}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาฝรั่งเศสเก่า == === คำนาม === {{fro-noun|m}} # {{alternative form of|fro|gardin}} == ภาษามีรังดา == === คำนาม === {{mwl-noun|m}} # [[สวน]] == ภาษาสเปน == === คำนาม === {{es-noun|m|jardines}} # {{obsolete spelling of|es|jardín}} == ภาษาอังกฤษ == === รากศัพท์ === {{root|en|ine-pro|*gʰerdʰ-}} จาก{{bor|en|fr|jardin||สวน}}, จากลักษณะคล้ายมอส; {{doublet|en|garden}} === คำนาม === {{en-noun}} # สิ่งเจือปนและรอยร้าวภายใน[[มรกต]] == ภาษาอินเทอร์ลิงกวา == === คำนาม === {{ia-noun|es}} # [[สวน]] == ภาษาอุตซิตา == === การออกเสียง === * {{IPA|oc|[(d)ʒarˈdi]}} * {{audio|oc|LL-Q14185 (oci)-Davidgrosclaude-jardin.wav|a=Béarn}} === คำนาม === {{oc-noun|m}} # [[สวน]] 0ia5wc67nb82i36jeiteu9d3lyoycl8 5754462 5754461 2026-08-06T05:22:06Z Octahedron80 267 /* คำนาม */ 5754462 wikitext text/x-wiki {{also/auto}} == ภาษากาลิเซีย-โปรตุเกสเก่า == === รูปแบบอื่น === * {{alt|roa-opt|jardim}} === รากศัพท์ === {{etymon|roa-opt|:bor|fro:gardin<id:garden>|id=garden|tree=1}} {{bor+|roa-opt|fro|gardin||สวน, ที่ปิดล้อม}}, เป็นไปได้ว่ารับมาจาก{{der|roa-opt|la-vul|-}} หรือแกลโล-โรมานซ์ช่วงต้น ''hortus gardinus'', จาก{{der|roa-opt|frk|*gardin}} [เก่า], การกอ้อมของ {{m|frk|*gardo||ที่ปิดล้อม, สนาม}}, จาก{{der|roa-opt|gem-pro|*gardô||ที่ปิดล้อม, สวน, บ้าน}}, จาก{{der|roa-opt|ine-pro|*gʰordʰos||แนวพุ่มไม้, ที่ปิดล้อม}}, จาก{{m|ine-pro|*gʰerdʰ-||ลาน, สนาม}} === การออกเสียง === * {{IPA|roa-opt|/d͡ʒaɾˈdĩ/}} * {{rhyme|roa-opt|ĩ|s=2}} * {{hyph|roa-opt|jar|din}} === คำนาม === {{roa-opt-noun|m}} # [[สวน]] #: {{syn|roa-opt|orto|vergeu}} # {{lb|roa-opt|figuratively|Christianity}} [[สวรรค์]] #: {{syn|roa-opt|ceo|parayso}} #* {{RQ:Cantigas de Santa Maria|E|235|http://www.pbm.com/~lindahl/cantigas/facsimiles/E/425small.gif|text={{...}}a Loemos que nos meta no '''iardi[n]''' / de ſeu fille que nos guarde do mui grand fogỹfernal.|t={{...}} let us praise Her so that She will admit us to the '''garden''' of Her Son (=Heaven) and save us from the great fire of Hell.}} ==== คำสืบทอด ==== * {{desc|fax|jardín}} * {{desc|gl|xardín}} * {{desc|pt|jardim}} === อ้างอิง === * {{R:roa-opt:DDGM}} * {{R:roa-opt:CX}} {{C|roa-opt|สวน}} == ภาษาครีโอลกาบูเวร์ดี == === รากศัพท์ === จาก{{der|kea|pt|jardim}} === คำนาม === {{head|kea|คำนาม}} # [[สวน]] # [[สนาม]][[หลัง]][[บ้าน]] === อ้างอิง === * {{R:kea:Gonçalves}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{ety|fr|:inh|frm:jardin<ety:inh<fro:gardin>>}} จาก{{der|fr|frm|jardin}}, จาก{{der|fr|fro|jardin}}, จาก{{der|fr|la-med|jardinus||สวน}}, จาก{{der|fr|frk|*gardin}} [เก่า], การกอ้อมของ {{m|frk|*gardō||ที่ปิดล้อม, สนาม}} (เทียบเพิ่มเติม{{cog|fro|jart||สวน}}), จาก{{der|fr|gem-pro|*gardô||ที่ปิดล้อม, สวน, บ้าน}}, จาก{{der|fr|ine-pro|*gʰordʰos||แนวพุ่มไม้, ที่ปิดล้อม}}, จาก{{der|fr|ine-pro|*gʰerdʰ-||ลาน, สนาม}} ร่วมเชื้อสายกับ{{cog|goh|gart}}, {{m|goh|garto||สวน, ที่ปิดล้อม, สนาม}}, {{cog|ang|ġeard||สวน, สนาม, รั้ว, ที่ปิดล้อม}}; ร่วมเชื้อสายกับอังกฤษ ''[[garden]]'', ซึ่งรับมาจากรูปแบบอื่นของแองโกล-นอร์มัน/ฝรั่งเศสเหนือเก่า; ดูเพิ่มที่ {{m|en|yard}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-jardin.ogg}} * {{audio|fr|LL-Q150 (fra)-LoquaxFR-jardin.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-jardin.wav|a=<<France>> (<<Lyon>>)}} * {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-jardin.wav|a=<<France>> (<<Somain>>)}} === คำนาม === {{fr-noun|m}} # [[สวน]] ==== ลูกคำ ==== {{col3|fr |araignée des jardins |chrysanthème des jardins |coronille des jardins |jardin botanique |jardin d'acclimatation |jardin d'Éden |jardin d'enfants |jardin potager |jardin public |jardin secret |jardin zoologique |jardinage |jardinier |nain de jardin |scabieuse des jardins }} ==== ลูกคำ ==== * {{l|fr|jardiner}} ** {{l|fr|jardinage}} * {{l|fr|jardinerie}} * {{l|fr|jardinet}} * {{l|fr|jardinier}}, {{l|fr|jardinière}} ==== คำสืบทอด ==== * {{desc|ca|jardí|bor=1}} * {{desc|it|giardino|bor=1}} * {{desc|fur|zardìn|bor=1}} * {{desc|es|jardín|bor=1}} {{see desc}} * {{desc|vec|zardin|bor=1}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาฝรั่งเศสเก่า == === คำนาม === {{fro-noun|m}} # {{alternative form of|fro|gardin}} == ภาษามีรังดา == === คำนาม === {{mwl-noun|m}} # [[สวน]] == ภาษาสเปน == === คำนาม === {{es-noun|m|jardines}} # {{obsolete spelling of|es|jardín}} == ภาษาอังกฤษ == === รากศัพท์ === {{root|en|ine-pro|*gʰerdʰ-}} จาก{{bor|en|fr|jardin||สวน}}, จากลักษณะคล้ายมอส; {{doublet|en|garden}} === คำนาม === {{en-noun}} # สิ่งเจือปนและรอยร้าวภายใน[[มรกต]] == ภาษาอินเทอร์ลิงกวา == === คำนาม === {{ia-noun|es}} # [[สวน]] == ภาษาอุตซิตา == === การออกเสียง === * {{IPA|oc|[(d)ʒarˈdi]}} * {{audio|oc|LL-Q14185 (oci)-Davidgrosclaude-jardin.wav|a=Béarn}} === คำนาม === {{oc-noun|m}} # [[สวน]] 8d3nm9iwd5ilfq6yzhu0dykkxiin7wu vélo 0 13089 5754480 4849711 2026-08-06T07:24:14Z OctraBot 3198 update template use 5754480 wikitext text/x-wiki == ภาษาฝรั่งเศส == === รากศัพท์ === {{etymon|fr|id=bicycle|:from|vélocipède<id:velocipede>}} {{clipping|fr|vélocipède||จักรยานถีบล้อหน้า}} ซึ่งปัจจุบันเลิกใช้แล้ว === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-vélo.ogg|a=Paris}} * {{homophones|fr|vélos}} * {{hyphenation|fr|vé|lo}} * {{rhymes|fr|o|s=2}} === คำนาม === {{fr-noun|m}} # {{lb|fr|usually|informal}} [[จักรยาน]] #: {{syn|fr|bicyclette}} # {{lb|fr|informal}} [[การขี่]]จักรยาน {{gloss|กิจกรรม}} #: {{syn|fr|cyclisme}} #: {{coi|fr|faire du '''vélo'''|to go cycling, to go for a bike ride}} #: {{coi|fr|J'adore le '''vélo'''.|I love cycling.}} ==== ลูกคำ ==== {{col3|fr |vélo à neige |vélo à pneus surdimensionnés |vélo couché |vélo d'appartement |vélodrome |vélomobile |vélomoteur |vélorizontal |véloroute |vélo stationnaire |vélotaf |vélo tout terrain }} ==== คำสืบทอด ==== * {{desc|bor=1|gsw|Welo|alts=1}} * {{desc|bor=1|nl|velo}} * {{desc|bor=1|de|Velo}} * {{desc|bor=1|ln|veló}} * {{desc|bor=1|ru|велосипед}} === อ่านเพิ่ม === * {{R:fr:TLFi}} === คำสลับอักษร === * {{l|fr|love}}, {{l|fr|lové}} * {{l|fr|vole}}, {{l|fr|volé}} {{C|fr|การขี่จักรยาน}} ey0qbhzjokt9qrxxhg260mh7wiayxsf praia 0 13148 5754492 2674241 2026-08-06T07:43:39Z OctraBot 3198 update template use 5754492 wikitext text/x-wiki == ภาษากาลิเซีย == {{slim-wikipedia|lang=gl}} === รากศัพท์ === {{etymon|gl|inh|roa-opt>praia>beach|id=beach|text=++}} === การออกเสียง === {{gl-pr}} * {{hyph|gl|pra|ia}} === คำนาม === {{gl-noun|f}} # [[หาด]] === อ่านเพิ่ม === * {{R:gl:DRAG}} * {{R:gl:Estraviz}} {{C|gl|ธรณีสัณฐาน}} == ภาษากาลิเซีย-โปรตุเกสเก่า == === รูปแบบอื่น === * {{alt|roa-opt|praya}} === รากศัพท์ === {{etymon|roa-opt|inh|la-med>plagia>slope|id=beach|text=++}} === คำนาม === {{roa-opt-noun|f}} # [[หาด]] ==== คำสืบทอด ==== * {{desc|gl|praia}} * {{desc|pt|praia}} === อ้างอิง === * {{R:roa-opt:DDGM}} * {{R:roa-opt:CX}} {{C|roa-opt|ธรณีสัณฐาน}} == ภาษาโปรตุเกส == [[ไฟล์:Praia de Odeceixe (7667131250).jpg|thumb]] === รูปแบบอื่น === * {{alt|pt|praya||obsolete}} === รากศัพท์ === {{etymon|pt|:inh|roa-opt:praia<id:beach>|id=beach|text=++}} {{doublet|pt|plaga}} ร่วมเชื้อสายกับ{{cog|gl|praia}}, {{cog|es|playa}}, {{cog|ca|platja}}, {{cog|oc|plaja}}, {{cog|fr|plage}} และ{{cog|it|spiaggia}} === การออกเสียง === {{pt-IPA}} * {{rhymes|pt|ajɐ}} * {{hyphenation|pt|prai|a}} === คำนาม === {{pt-noun|f}} # [[หาด]] #* {{quote-text|pt|translation=But the Moors who were around the '''beach''', / to defend its desired water, / one who was embarked with a shield and an assegai, / other with a harsh bow and thrown arrow: [...]|year=1572|author=w:Luís de Camões|title=[[s:The Lusiads|Os Lusíadas]]|section=[[s:pt:Os Lvsiadas/I|First Canto]]|passage=Mas os Mouros que andauão pela '''praya''', / Por lhe defender a agoa deſejada, / Hum de eſcudo embarcado, & de azagaya, / Outro de arco encuruado, & ſeta eruada: {{...}}}} ==== คำพ้องความ ==== {{top3}} * {{l|pt|areal}} * {{l|pt|beira-mar}} * {{l|pt|margem}} {{bottom}} ==== ลูกคำ ==== {{top3}} * {{l|pt|baga-da-praia}} * {{l|pt|morrer na praia}} * {{l|pt|praia fluvial}} * {{l|pt|praiano}} * {{l|pt|praieiro}} * {{l|pt|ser a praia de alguém}} {{bottom}} ==== คำสืบทอด ==== * {{desc|en-HK|praya|bor=1}} * {{desc|hrx|Praia|bor=1}} * {{desc|yrl|praya|bor=1}} === อ้างอิง === * {{R:pt:Infopédia}} * {{R:pt:Aulete}} * {{R:pt:Priberam}} === อ่านเพิ่ม === * {{pedia|lang=pt}} {{C|pt|ธรณีสัณฐาน}} 7gyvc7sopinmnfts96ukh3fsnixk8df jardim 0 13599 5754437 2362877 2026-08-06T04:14:51Z Octahedron80 267 /* รากศัพท์ */ 5754437 wikitext text/x-wiki ==ภาษาโปรตุเกส== {{wikipedia|lang=pt}} [[Image:Parco di Castello 5.JPG|thumb|250px|Um jardim]] ===รากศัพท์=== {{etymon|pt|:inh|roa-opt:jardin<id:garden>|id=garden|tree=1}} จาก{{inh|pt|roa-opt|jardin||สวน}}, จาก{{der|pt|fro|jardin||สวน, ที่ปิดล้อม}}, จาก{{der|pt|ML.|jardinus||สวน}}, จาก{{der|pt|frk|*gardin}} [เก่า], การกอ้อมของ {{m|frk|*gardo||ที่ปิดล้อม, สนาม}}, จาก{{uder|pt|gem-pro|*gardô||ที่ปิดล้อม, สวน, บ้าน}}, จาก{{uder|pt|ine-pro|*gʰordʰos||แนวพุ่มไม้, ที่ปิดล้อม}}, จาก{{uder|pt|ine-pro|*gʰerdʰ-||ลาน, สนาม}} เทียบ{{cog|gl|xardín}}, {{cog|es|jardín}}, {{cog|ca|jardí}}, {{cog|oc,fr|jardin}}, {{cog|it|giardino}} ===การออกเสียง=== {{pt-IPA}} * {{IPA|pt|/ʒaɦ.ˈdĩ(j̃)/|a=Nordestino}} * {{rhymes|pt|ĩ|s=2}} * {{hyph|pt|jar|dim}} ===คำนาม=== {{pt-noun|m}} # [[สวน]] # {{lb|pt|บราซิล}} {{ellipsis of|pt|jardim de infância}} ====คำเกี่ยวข้อง==== {{col-auto|pt |jardinagem |jardinar |jardineiro |jardim de infância}} ====คำสืบสอด==== * {{desc|kbc|jaadi|bor=1}} ===อ่านเพิ่ม=== * {{R:pt:DAN}} * {{R:pt:Michaelis}} * {{R:pt:Priberam}} === อ้างอิง === {{รายการอ้างอิง}} * ''Oxford Portuguese Dictionary''. (2023). Oxford University Press. ix9mwa814j1ss3r6456r9vr2klgid9b 5754457 5754437 2026-08-06T05:13:19Z Octahedron80 267 /* รากศัพท์ */ 5754457 wikitext text/x-wiki ==ภาษาโปรตุเกส== {{wikipedia|lang=pt}} [[Image:Parco di Castello 5.JPG|thumb|250px|Um jardim]] === รากศัพท์ === {{etymon|pt|:inh|roa-opt:jardin<id:garden>|id=garden|tree=1}} จาก{{inh|pt|roa-opt|jardin||สวน}}, จาก{{der|pt|fro|jardin||สวน, ที่ปิดล้อม}}, จาก{{der|pt|ML.|jardinus||สวน}}, จาก{{der|pt|frk|*gardin}} [เก่า], การกอ้อมของ {{m|frk|*gardo||ที่ปิดล้อม, สนาม}}, จาก{{uder|pt|gem-pro|*gardô||ที่ปิดล้อม, สวน, บ้าน}}, จาก{{uder|pt|ine-pro|*gʰordʰos||แนวพุ่มไม้, ที่ปิดล้อม}}, จาก{{uder|pt|ine-pro|*gʰerdʰ-||ลาน, สนาม}} เทียบ{{cog|gl|xardín}}, {{cog|es|jardín}}, {{cog|ca|jardí}}, {{cog|oc,fr|jardin}}, {{cog|it|giardino}} ===การออกเสียง=== {{pt-IPA}} * {{IPA|pt|/ʒaɦ.ˈdĩ(j̃)/|a=Nordestino}} * {{rhymes|pt|ĩ|s=2}} * {{hyph|pt|jar|dim}} ===คำนาม=== {{pt-noun|m}} # [[สวน]] # {{lb|pt|บราซิล}} {{ellipsis of|pt|jardim de infância}} ====คำเกี่ยวข้อง==== {{col-auto|pt |jardinagem |jardinar |jardineiro |jardim de infância}} ====คำสืบสอด==== * {{desc|kbc|jaadi|bor=1}} ===อ่านเพิ่ม=== * {{R:pt:DAN}} * {{R:pt:Michaelis}} * {{R:pt:Priberam}} === อ้างอิง === {{รายการอ้างอิง}} * ''Oxford Portuguese Dictionary''. (2023). Oxford University Press. gdp59bc5x79en1vumktnobv1mavmq36 árvore 0 13605 5754486 5676715 2026-08-06T07:42:27Z OctraBot 3198 update template use 5754486 wikitext text/x-wiki == ภาษาโปรตุเกส == {{picdic |image=Birnbaum am Lerchenberg retouched.jpg |text=árvore(1) |detail1= {{picdicimg|pt|image=Brunfelsia pauciflora shrub.jpg|link=planta}} |detail3=<!-- Meronyms --> {{picdicimg|pt|image=Roots by cesarpb.jpg|link=raiz}} {{picdicimg|pt|image=Magnolia acuminata trunk.JPG|link=tronco}} {{picdicimg|pt|image=Ceiba sp branches.jpg|link=ramo}} {{picdicimg|pt|image=Autumn Red Oak Leaf.jpg|link=folha}} {{picdicimg|pt|image=Picea koyamae shoot.JPG|link=agulha}} {{picdicimg|pt|image=Flor_de_poma.jpg|link=flor}} {{picdicimg|pt|image=Red_Apple.jpg|link=fruto}} }} === รากศัพท์ === {{dercat|pt|itc-ola|itc-pro|ine-pro|inh=2}} {{etymon|pt|id=tree|:inh|roa-opt:arvor<id:tree>|text=:la|tree=1}} {{root|pt|ine-pro|*h₃erdʰ-}} จาก{{inh|pt|roa-opt|arvor}}, จาก{{inh|pt|la|arbor|arborem}}; เทียบ{{cog|gl|árbore}}, {{cog|es|árbol}} === การออกเสียง === {{pt-IPA|árvo^re}} * {{IPA|pt|/ˈaɹ.vo.ɾi/|a=Caipira}} * {{IPA|pt|/ˈaɦ.vo.ɾi/|/ˈaɦ.vu.ɾi/|a=Northeast Brazil}} * {{audio|pt|pt-br-árvore.ogg|a=BR}} * {{audio|pt|LL-Q5146 (por)-Nelson Ricardo 2500-árvore.wav|a=Portugal}} * {{audio|pt|LL-Q5146 (por)-Santamarcanda-árvore.wav|a=<<Portugal>> (<<Porto>>)}} * {{hmp|pt|Árvore}} * {{hyph|pt|ár|vo|re}} === คำนาม === {{pt-noun|f}} # [[ต้นไม้]] #: {{ux|pt|As '''árvores''' melhoram a qualidade do ar.|'''Trees''' improve air quality.}} # {{lb|pt|graph theory}} ต้นไม้ (กราฟ) ==== ลูกคำ ==== * {{l|pt|arvorar}} * {{l|pt|árvore da vida}} * {{l|pt|árvore da Liberdade}} * {{l|pt|árvore de fogo}} * {{l|pt|árvore de Natal||Christmas tree}} * {{l|pt|árvore genealógica||family tree}} * {{l|pt|árvore de Diana||arbor Dianae}} ==== คำสืบทอด ==== * {{desc|pov|arvuri}} * {{desc|kea|arvi|arvori}} * {{desc|mzs|árve|alts=1}} === อ่านเพิ่ม === * {{R:pt:Aulete}} * {{R:pt:Priberam}} {{C|pt|พืช}} 0mif13oci9oviwfeadeqxi7lif0sg5u pão 0 14328 5754491 5633678 2026-08-06T07:43:35Z OctraBot 3198 update template use 5754491 wikitext text/x-wiki {{also/auto}} ==ภาษาโปรตุเกส== === รากศัพท์ === {{etymon|pt|id=bread|:inh|roa-opt:pan<id:bread>|tree=+|text=+2}} {{inh+|pt|roa-opt|pan}}, จาก{{inh|pt|la|panis|pānem}}<ref>{{R:pt:Infopédia}}</ref><ref>{{R:pt:Priberam}}</ref> เทียบ{{cog|gl|-}}, {{cog|ast|-}}, {{cog|roa-leo|-}}, {{cog|es|pan}}, {{cog|ca|pa}}, {{cog|fr|pain}}, {{cog|it|pane}}, และ{{cog|ro|pâine}} <!--{{cog|gl,ast,roa-leo,es|pan}}--> ===การออกเสียง=== {{pt-IPA}} * {{audio|pt|LL-Q5146 (por)-Nelson Ricardo 2500-pão.wav |a=Portugal}} * คำอ่านเทียบเคียง: เปาง์ (เสียงสระเอาขึ้นจมูก) * {{rhymes|pt|ɐ̃w̃|s=1}} * {{hyphenation|pt|pão}} ===คำนาม=== {{pt-noun|m|pães}} # [[ขนมปัง]] # วัตถุที่มีรูปทรงหรือลักษณะคล้ายขนมปัง # ธัญพืชที่ใช้สำหรับทำขนมปัง # [[อาหาร]] # (''ความหมายเชิงภาพพจน์'') สิ่งที่จำเป็นต่อการยังชีพ 7qw0p077bu8ibgpj52bpr169ufljpgi bouteille 0 14370 5754478 4746813 2026-08-06T07:23:58Z OctraBot 3198 update template use 5754478 wikitext text/x-wiki {{also/auto}} == ภาษาดัตช์ == === รูปแบบอื่น === * {{alt|nl|boetelje|bottelje|boutelje||เลิกใช้ทั้งหมด}} === รากศัพท์ === {{bor+|nl|fr|bouteille}} === การออกเสียง === * {{IPA|nl|/buˈtɛi̯(l).jə/}} * {{hyphenation|nl|bou|teil|le}} === คำนาม === {{nl-noun|f|-s|-}} # {{lb|nl|archaic}} [[ขวด]] #: {{syn|nl|fles}} ==== คำเกี่ยวข้อง ==== * {{l|nl|bottel}} == ภาษาฝรั่งเศส == === รากศัพท์ === {{etymon|fr|:inh|fro:boteille<id:bottle>|id=bottle}} จาก{{inh|fr|fro|boteille}}, จาก{{inh|fr|LL.|butticula}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-bouteille.ogg}} * {{rhymes|fr|ɛj|s=2}} === คำนาม === {{fr-noun|f}} # [[ขวด]] #: {{coi|fr|boire à la '''bouteille'''|to drink straight from the bottle}} # [[ประสบการณ์]] #: {{coi|fr|[[avoir de la bouteille|avoir de la '''bouteille''']]|to be experienced}} #: {{coi|fr|[[prendre de la bouteille|prendre de la '''bouteille''']]|to gain experience}} ==== ลูกคำ ==== {{col|fr|title=Related terms |aimer la bouteille |avec des si on mettrait Paris en bouteille |bouteille à l’encre |bouteille à la mer |cul de bouteille,cul-de-bouteille |demi-bouteille |embouteillage |embouteiller |embouteiller |embouteilleur |embouteilleuse |jeter une bouteille à la mer |laisser sa raison au fond de la bouteille |mettre en bouteille |mise en bouteille |ouvre-bouteille |règle de bouteille }} ==== คำสืบทอด ==== * {{desc|ht|boutèy}} ; Borrowings {{top3}} * {{desc|bor=1|gsw|Butëlle}} * {{desc|bor=1|an|botella}} * {{desc|bor=1|ast|botella}} * {{desc|bor=1|eu|botila}} * {{desc|bor=1|bg|бутилка}} {{q|+ {{m|bg|-ка}}}} * {{desc|bor=1|ca|botella}} * {{desc|bor=1|chn|laputay}} ''(from la bouteille)'' ** {{desc|myh|lapu·ta·y|bor=1}} * {{desc|bor=1|nl|bouteille|alts=1}} {{q|obsolete}} * {{desc|bor=1|gl|botella}} * {{desc|bor=1|de|Bouteille}} {{q|obsolete|unadapted}} * {{desc|bor=1|de|Buttel}} {{q|adapted}} ** {{desc|pl|butla|bor=1}} *** {{desc|pl|butelka|der=1}} {{see desc}} * {{desctree|bor=1|it|bottiglia}} * {{desc|bor=1|lt|butelis}} * {{desc|bor=1|gml|buddel}} ** {{desc|nds-de|Buddel}} *** {{desc|de|Buddel|bor=1}} ** {{desc|pdt|Buddel}} ** {{desc|et|pudel|bor=1}} ** {{desc|lv|pudele|bor=1}} * {{desc|bor=1|mos|butelle|bugtelle}} * {{desc|bor=1|se|bohtal}} * {{desc|bor=1|pt|botelha}} * {{desc|bor=1|ro|butelie}} * {{desc|bor=1|ru|бутыль}} * {{desc|bor=1|es|botella}} {{see desc}} * {{desctree|bor=1|sv|butelj}} * {{desc|bor=1|sh|putela}} / {{l|sh|путела}} {{bottom}} === อ่านเพิ่ม === * {{R:fr:TLFi}} {{cln|fr|terms inherited from Latin}} {{C|fr|Containers|Vessels}} lwvx7furu6wuuzn9l770fge228cxcuu duo 0 15948 5754501 5726253 2026-08-06T07:55:35Z OctraBot 3198 /* รากศัพท์ */ 5754501 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|𦕰}} {{head|cmn|พินอิน}} # {{nonstandard spelling of|cmn|sc=Latn|duō}} # {{nonstandard spelling of|cmn|sc=Latn|duó}} # {{nonstandard spelling of|cmn|sc=Latn|duǒ}} # {{nonstandard spelling of|cmn|sc=Latn|duò}} == ภาษาละติน == {{number box|la|2}} ===รูปแบบอื่น=== * Symbol: {{l|la|II}} ===รากศัพท์=== {{etymon|la|:inh|itc-pro:*duō}} {{PIE word|la|dwóh₁}} จาก{{inh|la|itc-pro|*duō}}, จาก{{inh|la|ine-pro|*dwóh₁}} (ซึ่งผันรูปเป็นทวิพจน์l); ร่วมเชื้อสายกับ{{cog|grc|δύο}}, {{cog|sa|द्व|tr=dvá}}, {{cog|cu|дъва}}, และ{{cog|ang|twā}} (ซึ่งเป็นรากของ{{cog|en|two}})<ref>{{R:itc:EDL|page=183|head=duo, duae, duo}}</ref> === การออกเสียง === * {{la-IPA|eccl=yes}} * {{audio|la|la-cls-duo.ogg|a=คลาสสิก}} === เลข === {{la-num-adj|duo<irreg+>|type=card}} # [[สอง]] {{la-adecl|duo<irreg+>}} [[หมวดหมู่:จำนวนเชิงการนับภาษาละติน]] dts68w5lu1vq0v3v59ymu41k034q61r 5754502 5754501 2026-08-06T07:56:00Z OctraBot 3198 /* รากศัพท์ */ 5754502 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|𦕰}} {{head|cmn|พินอิน}} # {{nonstandard spelling of|cmn|sc=Latn|duō}} # {{nonstandard spelling of|cmn|sc=Latn|duó}} # {{nonstandard spelling of|cmn|sc=Latn|duǒ}} # {{nonstandard spelling of|cmn|sc=Latn|duò}} == ภาษาละติน == {{number box|la|2}} ===รูปแบบอื่น=== * Symbol: {{l|la|II}} ===รากศัพท์=== {{etymon|la|:inh|itc-pro:*duō}} {{PIE word|la|dwóh₁}} จาก{{inh|la|itc-pro|*duō}}, จาก{{inh|la|ine-pro|*dwóh₁}} (ซึ่งผันรูปเป็นทวิพจน์); ร่วมเชื้อสายกับ{{cog|grc|δύο}}, {{cog|sa|द्व|tr=dvá}}, {{cog|cu|дъва}}, และ{{cog|ang|twā}} (ซึ่งเป็นรากของ{{cog|en|two}})<ref>{{R:itc:EDL|page=183|head=duo, duae, duo}}</ref> === การออกเสียง === * {{la-IPA|eccl=yes}} * {{audio|la|la-cls-duo.ogg|a=คลาสสิก}} === เลข === {{la-num-adj|duo<irreg+>|type=card}} # [[สอง]] {{la-adecl|duo<irreg+>}} [[หมวดหมู่:จำนวนเชิงการนับภาษาละติน]] 8avqr4s6fufmz3n6sd5znueozc8bnsa 5754503 5754502 2026-08-06T07:56:22Z OctraBot 3198 /* รูปแบบอื่น */ 5754503 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|𦕰}} {{head|cmn|พินอิน}} # {{nonstandard spelling of|cmn|sc=Latn|duō}} # {{nonstandard spelling of|cmn|sc=Latn|duó}} # {{nonstandard spelling of|cmn|sc=Latn|duǒ}} # {{nonstandard spelling of|cmn|sc=Latn|duò}} == ภาษาละติน == {{number box|la|2}} ===รูปแบบอื่น=== * Symbol: {{l|la|II|tr-}} ===รากศัพท์=== {{etymon|la|:inh|itc-pro:*duō}} {{PIE word|la|dwóh₁}} จาก{{inh|la|itc-pro|*duō}}, จาก{{inh|la|ine-pro|*dwóh₁}} (ซึ่งผันรูปเป็นทวิพจน์); ร่วมเชื้อสายกับ{{cog|grc|δύο}}, {{cog|sa|द्व|tr=dvá}}, {{cog|cu|дъва}}, และ{{cog|ang|twā}} (ซึ่งเป็นรากของ{{cog|en|two}})<ref>{{R:itc:EDL|page=183|head=duo, duae, duo}}</ref> === การออกเสียง === * {{la-IPA|eccl=yes}} * {{audio|la|la-cls-duo.ogg|a=คลาสสิก}} === เลข === {{la-num-adj|duo<irreg+>|type=card}} # [[สอง]] {{la-adecl|duo<irreg+>}} [[หมวดหมู่:จำนวนเชิงการนับภาษาละติน]] oqei6sfpih4ja6ie7caewr0klw247ir 5754504 5754503 2026-08-06T07:56:37Z OctraBot 3198 /* รูปแบบอื่น */ 5754504 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|𦕰}} {{head|cmn|พินอิน}} # {{nonstandard spelling of|cmn|sc=Latn|duō}} # {{nonstandard spelling of|cmn|sc=Latn|duó}} # {{nonstandard spelling of|cmn|sc=Latn|duǒ}} # {{nonstandard spelling of|cmn|sc=Latn|duò}} == ภาษาละติน == {{number box|la|2}} ===รูปแบบอื่น=== * Symbol: {{l|la|II|tr=-}} ===รากศัพท์=== {{etymon|la|:inh|itc-pro:*duō}} {{PIE word|la|dwóh₁}} จาก{{inh|la|itc-pro|*duō}}, จาก{{inh|la|ine-pro|*dwóh₁}} (ซึ่งผันรูปเป็นทวิพจน์); ร่วมเชื้อสายกับ{{cog|grc|δύο}}, {{cog|sa|द्व|tr=dvá}}, {{cog|cu|дъва}}, และ{{cog|ang|twā}} (ซึ่งเป็นรากของ{{cog|en|two}})<ref>{{R:itc:EDL|page=183|head=duo, duae, duo}}</ref> === การออกเสียง === * {{la-IPA|eccl=yes}} * {{audio|la|la-cls-duo.ogg|a=คลาสสิก}} === เลข === {{la-num-adj|duo<irreg+>|type=card}} # [[สอง]] {{la-adecl|duo<irreg+>}} [[หมวดหมู่:จำนวนเชิงการนับภาษาละติน]] sccloix951pn7yhduq7lo8lyh8s9nn6 5754509 5754504 2026-08-06T08:24:58Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754509 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|𦕰}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|duō}} # {{nonstandard spelling of|cmn|sc=Latn|duó}} # {{nonstandard spelling of|cmn|sc=Latn|duǒ}} # {{nonstandard spelling of|cmn|sc=Latn|duò}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาละติน == {{number box|la|2}} ===รูปแบบอื่น=== * Symbol: {{l|la|II|tr=-}} ===รากศัพท์=== {{etymon|la|:inh|itc-pro:*duō}} {{PIE word|la|dwóh₁}} จาก{{inh|la|itc-pro|*duō}}, จาก{{inh|la|ine-pro|*dwóh₁}} (ซึ่งผันรูปเป็นทวิพจน์); ร่วมเชื้อสายกับ{{cog|grc|δύο}}, {{cog|sa|द्व|tr=dvá}}, {{cog|cu|дъва}}, และ{{cog|ang|twā}} (ซึ่งเป็นรากของ{{cog|en|two}})<ref>{{R:itc:EDL|page=183|head=duo, duae, duo}}</ref> === การออกเสียง === * {{la-IPA|eccl=yes}} * {{audio|la|la-cls-duo.ogg|a=คลาสสิก}} === เลข === {{la-num-adj|duo<irreg+>|type=card}} # [[สอง]] {{la-adecl|duo<irreg+>}} [[หมวดหมู่:จำนวนเชิงการนับภาษาละติน]] fhhxrdehur3nb560m9gb9d0hez3q3wf ขจิต 0 17486 5754335 1579481 2026-08-06T01:04:54Z Alifshinobi 397 5754335 wikitext text/x-wiki ==ภาษาไทย== ===รากศัพท์=== {{bor+|th|pi|ขจิต}} ===การออกเสียง=== {{th-pron|ขะ-จิด}} === คำกริยา === {{th-verb}} # [[ประดับ]], [[ตกแต่ง]] ===อ้างอิง=== * [https://web.archive.org/web/20090303000030/http://rirs3.royin.go.th/dictionary.asp พจนานุกรม ฉบับราชบัณฑิตยสถาน พ.ศ. ๒๕๔๒] dh0bm8dh4kasjgh86al6bw2p5i1ztoo guāng 0 18433 5754545 1876495 2026-08-06T09:30:43Z OctraBot 3198 เก็บกวาด 5754545 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === รูปแบบอื่น === * {{alt|cmn|guang||nonstandard}} * {{alt|cmn|guāŋ||very rare shorthand}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|侊}} # {{cmn-pinyin of|僙}} # {{cmn-pinyin of|光}} # {{cmn-pinyin of|咣}} # {{cmn-pinyin of|垙}} # {{cmn-pinyin of|姯}} # {{cmn-pinyin of|樤}} # {{cmn-pinyin of|洸}} # {{cmn-pinyin of|潡}} # {{cmn-pinyin of|灮}} # {{cmn-pinyin of|炗}} # {{cmn-pinyin of|炛}} # {{cmn-pinyin of|烡}} # {{cmn-pinyin of|珖}} # {{cmn-pinyin of|胱}} # {{cmn-pinyin of|茪}} # {{cmn-pinyin of|輄}} # {{cmn-pinyin of|銧}} # {{cmn-pinyin of|黆}} # {{cmn-pinyin of|炚}} smmhkwul3nlxoi59up8pjvkgoqk2ify 0 18444 5754511 1878542 2026-08-06T08:32:14Z OctraBot 3198 เก็บกวาด 5754511 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การออกเสียง === * {{audio|cmn|Zh-yù.ogg}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|玉}} # {{cmn-pinyin of|語}} # {{cmn-pinyin of|與}} # {{cmn-pinyin of|俼}} # {{cmn-pinyin of|司}} # {{cmn-pinyin of|哊}} # {{cmn-pinyin of|喅}} # {{cmn-pinyin of|喐}} # {{cmn-pinyin of|喩|喻|attn=1}} # {{cmn-pinyin of|噊}} # {{cmn-pinyin of|圫}} # {{cmn-pinyin of|域}} # {{cmn-pinyin of|堉}} # {{cmn-pinyin of|墺}} # {{cmn-pinyin of|奧}} # {{cmn-pinyin of|嫗}} # {{cmn-pinyin of|寓}} # {{cmn-pinyin of|專}} # {{cmn-pinyin of|峪}} # {{cmn-pinyin of|嶎}} # {{cmn-pinyin of|庽}} # {{cmn-pinyin of|彧}} # {{cmn-pinyin of|御}} # {{cmn-pinyin of|忬}} # {{cmn-pinyin of|悆}} # {{cmn-pinyin of|悇}} # {{cmn-pinyin of|惋}} # {{cmn-pinyin of|惐}} # {{cmn-pinyin of|愈}} # {{cmn-pinyin of|或}} # {{cmn-pinyin of|戫}} # {{cmn-pinyin of|昱}} # {{cmn-pinyin of|栣}} # {{cmn-pinyin of|棛}} # {{cmn-pinyin of|棜}} # {{cmn-pinyin of|棫}} # {{cmn-pinyin of|櫲}} # {{cmn-pinyin of|欥}} # {{cmn-pinyin of|慾}} # {{cmn-pinyin of|毓}} # {{cmn-pinyin of|汩}} # {{cmn-pinyin of|浴}} # {{cmn-pinyin of|淢}} # {{cmn-pinyin of|淯}} # {{cmn-pinyin of|潏}} # {{cmn-pinyin of|澦}} # {{cmn-pinyin of|澯}} # {{cmn-pinyin of|灪}} # {{cmn-pinyin of|焴}} # {{cmn-pinyin of|煜}} # {{cmn-pinyin of|照}} # {{cmn-pinyin of|熠}} # {{cmn-pinyin of|燏}} # {{cmn-pinyin of|燠}} # {{cmn-pinyin of|爩}} # {{cmn-pinyin of|獄}} # {{cmn-pinyin of|獝}} # {{cmn-pinyin of|玈}} # {{cmn-pinyin of|琙}} # {{cmn-pinyin of|瘉}} # {{cmn-pinyin of|癒}} # {{cmn-pinyin of|矞}} # {{cmn-pinyin of|砡}} # {{cmn-pinyin of|硲}} # {{cmn-pinyin of|礇}} # {{cmn-pinyin of|礖}} # {{cmn-pinyin of|礜}} # {{cmn-pinyin of|禦}} # {{cmn-pinyin of|禱}} # {{cmn-pinyin of|秗}} # {{cmn-pinyin of|稢}} # {{cmn-pinyin of|稶}} # {{cmn-pinyin of|穥}} # {{cmn-pinyin of|籞}} # {{cmn-pinyin of|籨}} # {{cmn-pinyin of|粤}} # {{cmn-pinyin of|緎}} # {{cmn-pinyin of|繘}} # {{cmn-pinyin of|罭}} # {{cmn-pinyin of|罸}} # {{cmn-pinyin of|聿}} # {{cmn-pinyin of|肀}} # {{cmn-pinyin of|育}} # {{cmn-pinyin of|舅}} # {{cmn-pinyin of|舏}} # {{cmn-pinyin of|芋}} # {{cmn-pinyin of|芌}} # {{cmn-pinyin of|苑}} # {{cmn-pinyin of|茟}} # {{cmn-pinyin of|莾}} # {{cmn-pinyin of|菷}} # {{cmn-pinyin of|萮}} # {{cmn-pinyin of|蒮}} # {{cmn-pinyin of|蓣}} # {{cmn-pinyin of|蔙}} # {{cmn-pinyin of|蕷}} # {{cmn-pinyin of|薁}} # {{cmn-pinyin of|藄}} # {{cmn-pinyin of|蜟}} # {{cmn-pinyin of|蜮}} # {{cmn-pinyin of|蟇}} # {{cmn-pinyin of|衖}} # {{cmn-pinyin of|衙}} # {{cmn-pinyin of|裕}} # {{cmn-pinyin of|誚}} # {{cmn-pinyin of|諭}} # {{cmn-pinyin of|譽}} # {{cmn-pinyin of|谰}} # {{cmn-pinyin of|豫}} # {{cmn-pinyin of|軉}} # {{cmn-pinyin of|輍}} # {{cmn-pinyin of|輿}} # {{cmn-pinyin of|迂}} # {{cmn-pinyin of|逳}} # {{cmn-pinyin of|遇}} # {{cmn-pinyin of|遹}} # {{cmn-pinyin of|醧}} # {{cmn-pinyin of|鈺}} # {{cmn-pinyin of|銉}} # {{cmn-pinyin of|鋊}} # {{cmn-pinyin of|錥}} # {{cmn-pinyin of|鐭}} # {{cmn-pinyin of|閼}} # {{cmn-pinyin of|閾}} # {{cmn-pinyin of|阏}} # {{cmn-pinyin of|隩}} # {{cmn-pinyin of|雤}} # {{cmn-pinyin of|雩}} # {{cmn-pinyin of|霱}} # {{cmn-pinyin of|預}} # {{cmn-pinyin of|飫}} # {{cmn-pinyin of|饇}} # {{cmn-pinyin of|馭}} # {{cmn-pinyin of|騟}} # {{cmn-pinyin of|驈}} # {{cmn-pinyin of|鬰|鬱|欎|欝|郁|attn=1}} # {{cmn-pinyin of|鬻}} # {{cmn-pinyin of|魊}} # {{cmn-pinyin of|鱆}} # {{cmn-pinyin of|鳿}} # {{cmn-pinyin of|鴥|鴪|attn=1}} # {{cmn-pinyin of|鵒}} # {{cmn-pinyin of|鷸}} # {{cmn-pinyin of|鸍}} # {{cmn-pinyin of|黦}} # {{cmn-pinyin of|龥}} # {{cmn-pinyin of|䋖}} # {{cmn-pinyin of|䵥}} # {{cmn-pinyin of|尉}} # {{cmn-pinyin of|𠁓}} # {{cmn-pinyin of|熨}} 2lpq6b0cps2q4ofweboyay47oafgd1v sǎn 0 21274 5754528 1877834 2026-08-06T09:03:10Z OctraBot 3198 เก็บกวาด 5754528 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|仐}} # {{cmn-pinyin of|傘}} # {{cmn-pinyin of|叁}} # {{cmn-pinyin of|叄}} # {{cmn-pinyin of|敜}} # {{cmn-pinyin of|粣}} # {{cmn-pinyin of|粿}} # {{cmn-pinyin of|糂}} # {{cmn-pinyin of|糝}} # {{cmn-pinyin of|糣}} # {{cmn-pinyin of|糤}} # {{cmn-pinyin of|繖}} # {{cmn-pinyin of|鏾}} # {{cmn-pinyin of|饊}} # {{cmn-pinyin of|散}} 9kmci9b6ue8ixldau5n1k05byundzfh sàn 0 21275 5754530 1877832 2026-08-06T09:04:07Z OctraBot 3198 เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754530 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|丈}} # {{cmn-pinyin of|俕}} # {{cmn-pinyin of|弊}} # {{cmn-pinyin of|散}} # {{cmn-pinyin of|潵}} # {{cmn-pinyin of|閐}} == ภาษาลีกูเรีย == === คำกริยา === {{head|lij|รูปกริยา}} # {{inflection of|lij|savéi||3|p|pres|ind}} == ภาษาเวียดนาม == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|mtq|-}} Bi {{m|mtq|khaình}}, {{cog|tou|-}} [Cuối Chăm] ''rɐːn²'', Kri Phong ''nraɲ³⁵'' === การออกเสียง === {{vi-IPA}} === คำนาม === {{vi-noun|[[常]], [[棧]]}} # [[แป้ง]] (ทำอาหาร) #: {{syn|vi|sàn nhà}} ==== ลูกคำ ==== {{col|vi|nhà sàn|sàn chứng khoán|sàn sàn<ll:tulay>|sập sàn}} ==== ดูเพิ่ม ==== * {{l|vi|nền}} d8errnz61ljv5rwav06dhmj7o7bl6cs 5754531 5754530 2026-08-06T09:06:46Z OctraBot 3198 /* รากศัพท์ */ 5754531 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|丈}} # {{cmn-pinyin of|俕}} # {{cmn-pinyin of|弊}} # {{cmn-pinyin of|散}} # {{cmn-pinyin of|潵}} # {{cmn-pinyin of|閐}} == ภาษาลีกูเรีย == === คำกริยา === {{head|lij|รูปกริยา}} # {{inflection of|lij|savéi||3|p|pres|ind}} == ภาษาเวียดนาม == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|mtq|-}}บี {{m|mtq|khaình}}, {{cog|tou|-}} [Cuối Chăm] ''rɐːn²'', Kri Phong ''nraɲ³⁵'' === การออกเสียง === {{vi-IPA}} === คำนาม === {{vi-noun|[[常]], [[棧]]}} # [[แป้ง]] (ทำอาหาร) #: {{syn|vi|sàn nhà}} ==== ลูกคำ ==== {{col|vi|nhà sàn|sàn chứng khoán|sàn sàn<ll:tulay>|sập sàn}} ==== ดูเพิ่ม ==== * {{l|vi|nền}} nmn7b8o5fx367614d49qahehjo7yo7i 0 21314 5754551 1875790 2026-08-06T09:33:20Z OctraBot 3198 เก็บกวาด 5754551 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === รูปแบบอื่น === * {{alt|cmn|bu||nonstandard}} === การออกเสียง === * {{audio|zh|Zh-bu4.ogg}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|不}} # {{cmn-pinyin of|佈}} # {{cmn-pinyin of|卢}} # {{cmn-pinyin of|吥}} # {{cmn-pinyin of|咘}} # {{cmn-pinyin of|埔}} # {{cmn-pinyin of|埗}} # {{cmn-pinyin of|埚}} # {{cmn-pinyin of|埠}} # {{cmn-pinyin of|布}} # {{cmn-pinyin of|怖}} # {{cmn-pinyin of|悑}} # {{cmn-pinyin of|捗}} # {{cmn-pinyin of|步}} # {{cmn-pinyin of|歨}} # {{cmn-pinyin of|歩}} # {{cmn-pinyin of|溡}} # {{cmn-pinyin of|瓪}} # {{cmn-pinyin of|篰}} # {{cmn-pinyin of|簼}} # {{cmn-pinyin of|荹}} # {{cmn-pinyin of|菦}} # {{cmn-pinyin of|蔀}} # {{cmn-pinyin of|薄}} # {{cmn-pinyin of|部}} # {{cmn-pinyin of|郶}} # {{cmn-pinyin of|鈈|鈽|钚|钸|attn=1}} # {{cmn-pinyin of|陃}} # {{cmn-pinyin of|鞭}} # {{cmn-pinyin of|餢}} # {{cmn-pinyin of|鮬}} p2o7b8br0td546e3p4t0jxr06aixcmz บ่ 0 22060 5754562 5029864 2026-08-06T11:07:28Z Ai Ku Karng 17824 /* ภาษาไทย */ 5754562 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === {{inh+|th|tai-pro|*boːᴮ||ไม่}}; ร่วมเชื้อสายกับ{{cog|tts|บ่}}, {{cog|lo|ບໍ່}}, {{cog|nod|ᨷᩴ᩵}}, {{cog|kkh|ᨷᩢ}}, {{cog|khb|ᦢᧁᧈ}}, {{cog|blt|ꪹꪚ꪿ꪱ}}, {{cog|shn|မဝ်ႇ}}, {{cog|zzj|mboh}}, {{cog|skb|โบ}}, {{cog|za|mbouj}}; เทียบ{{cog|nan|無||ไม่มี|tr=บ๊อ}} === การออกเสียง === {{th-pron|บ่อ|เบาะ}} === คำกริยาวิเศษณ์ === {{th-adv|-}} # {{lb|th|literary|poetic|dialect}} [[ไม่]], [[มัก]][[ใช้]][[ใน]][[หนังสือ]][[เก่า]][[หรือ]][[กวีนิพนธ์]] [[หรือ]][[บาง]][[ท้องถิ่น]], [[ใน]][[ที่]][[ใช้]] [[บ]] [[เมื่อ]][[ใช้]][[ว่า]] บ่ [[ก็]][[มี]][[ความ]][[เช่น]][[เดียว]][[กัน]] ==== คำเกี่ยวข้อง ==== * [[บมิ]] ==ภาษาคำเมือง== ===รากศัพท์=== ร่วมเชื้อสายกับ{{cog|tts|บ่}} === การออกเสียง === * {{IPA|nod|/bɔː˨˩/|a=เชียงใหม่}} ===คำกริยาวิเศษณ์=== {{nod-adv|-}} # {{alternative form of|nod|ᨷᩴ᩵|t=ไม่}} == ภาษาอีสาน == === รากศัพท์ === {{inh+|th|tai-pro|*boːᴮ||ไม่}}; ร่วมเชื้อสายกับ{{cog|th|บ่}}, {{cog|lo|ບໍ່}}, {{cog|nod|ᨷᩴ᩵}}, {{cog|kkh|ᨷᩢ}}, {{cog|khb|ᦢᧁᧈ}}, {{cog|blt|ꪹꪚ꪿ꪱ}}, {{cog|shn|မဝ်ႇ}}, {{cog|zzj|mboh}}, {{cog|za|mbouj}} === การออกเสียง === * {{IPA|tts|/bɔː˨˨/|a=ขอนแก่น}} * {{คำอ่านไทย|บอ<sup>ต่ำ-ระดับ</sup>}} (ประมาณ) === คำกริยาวิเศษณ์=== {{tts-adv|-}} # [[ไม่]] tvj9jziw2flka2t0re0k50usseems8y gelsomino 0 25159 5754414 4750477 2026-08-06T03:52:45Z Octahedron80 267 /* รากศัพท์ */ 5754414 wikitext text/x-wiki == ภาษาอิตาลี == === รูปแบบอื่น === * {{alt|it|gesmino||โบราณ|พบได้ยาก}} === รากศัพท์ === {{etymon|it|id=jasmine|:bor|ar:يَاسَمِين<id:jasmine>|:influence|gelso<id:mulberry>|tree=1}} {{bor+|it|ar|يَاسَمِين}}, ได้รับอิทธิพลจาก {{m|it|gelso|t=ต้นมัลเบอร์รี}} === การออกเสียง === {{it-pr|gelsomìno}} === คำนาม === {{it-noun|m}} # [[มะลิ]] {{gloss|พืช, น้ำหอม}} ==== ลูกคำ ==== * {{l|it|Gelsomina}} * {{l|it|Gelsomini}} * {{l|it|Gelsomino}} * {{l|it|gelsomino doppio}} * {{l|it|gelsomino mugherino}} {{C|it|ดอกไม้|Olive family plants}} e2lhjt6btf3sviww0r9byl8l995y9si jīqìrén 0 29629 5754540 1271237 2026-08-06T09:28:53Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754540 wikitext text/x-wiki == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|機器人}} ccp3zjbffmn97qtqnujhjbwppiuh2qx jīxièrén 0 29652 5754539 1271243 2026-08-06T09:28:31Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754539 wikitext text/x-wiki == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|機械人}} pnzmu8tjco1a4whm7mc0zkuibe3l1mk huǒshān 0 29667 5754543 4712190 2026-08-06T09:29:50Z OctraBot 3198 /* ภาษาจีน */ เก็บกวาด 5754543 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|火山}} 0p35w0d18hoz6nvhyakuns8qu3lwrad Pǔtōnghuà 0 29670 5754538 4718884 2026-08-06T09:27:47Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754538 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|普通話}} fpbzz6ww1q36dssfhd4t4d9gnmc92k1 shènglì 0 31698 5754527 4721762 2026-08-06T08:59:13Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754527 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|勝利}} 7vhogx13owyue4odld4gfe4o3ekssxb abati 0 32792 5754485 5035857 2026-08-06T07:42:20Z OctraBot 3198 update template use 5754485 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|abatre}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|abater}} == ภาษาซาร์ดิเนีย == === รากศัพท์ === จาก{{bor|sc|it|abate}},<ref>{{R:sc:WagnerDES}}</ref> จาก{{der|sc|LL.|abbās|abbās, abbātem}}, จาก{{der|sc|grc|ἀββᾶς}}, จาก{{der|sc|arc|אבא|tr=’abbā||พ่อ}}; เทียบ{{cog|sc-src|abate}} === การออกเสียง === * {{IPA|sc|/aˈbati/}} === คำนาม === {{sc-noun|m|abatis|f=badessa}} # {{lb|sc|Campidanese}} [[สมภาร]], [[เจ้าอาวาส]], [[เจ้าอธิการ]] ==== คำเกี่ยวข้อง ==== {{col2|sc|abatzia|badia}} === อ้างอิง === * {{R:sc:Rubattu2006}} <references/> {{C|sc|Monasticism}} == ภาษาตูปีเก่า == === รูปแบบอื่น === * {{alt|tpw|abaxi||LGP}} === รากศัพท์ === {{etymon|tpw|inh|tup-gua-pro>*aβati>maize|id=maize|text=++}} ร่วมเชื้อสายกับ{{cog|gn|avati}} === การออกเสียง === * {{IPA|tpw|/a.βaˈti/}} * {{rhyme|tpw|i|s=3}} * {{hyph|tpw|a|ba|ti}} === คำนาม === {{tpw-noun|u}} # [[ข้าวโพด]] ({{taxfmt|Zea mays|species}}) ==== ลูกคำ ==== {{col|tpw |abati'y |abatityba |abatigûasu |abatiatã |abatipeba |abatiúna |abatieté |abatitinga |abati'i |abatimirĩ |Abatiposanga |Abatiúna}} ==== คำสืบทอด ==== * {{desc|yrl|awatí|alts=1}} * {{desc|kqq|jauatü|bor=1}} * {{desc|pt|abati|bor=1|alts=1}} === อ้างอิง === * {{R:tpw:Staden|XVII|56|Abbati|Abati}} * {{R:tpw:VLB|Milho, gnrl.|38|2|Abati}} * {{R:pt:Navarro 2013|abati|8|2}} {{C|tpw|Maize (plant)}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{rhyme|pt|i|s=3}} * {{hyphenation|pt|a|ba|ti}} === รากศัพท์ 1 === {{etymon|pt|:bor|tpw:abati<id:maize>|id=maize|text=+}} ==== รูปแบบอื่น ==== * {{alt|pt|avati|auati}} ==== คำนาม ==== {{pt-noun|m}} # {{lb|pt|Brazil}} [[ข้าวโพด]] #: {{syn|pt|milho}} #* {{quote-book|pt |title=O homem cordial |chapter=Botica da natureza |isbn=978-85-8086-890-6 |year_published=2012 |year=1936 |location=São Paulo |publisher=Schwarcz S.A. |url=https://books.google.com.br/books/about/O_homem_cordial.html?id=4MKnBAAAQBAJ&source=kp_book_description&redir_esc=y |author=w:Sérgio Buarque de Holanda |page=65 |text=Assim é que, na mandioca, vinham procurar o honesto pão de trigo, no pinhão da araucária, a castanha europeia; no '''abati''', o milho, milho alvo do reino.}} ===== คำเกี่ยวข้อง ===== {{col|pt|abativi|abatiguera|abatiapé|batité|abatimirim}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|abater}} {{C|pt|Maize (plant)}} == ภาษาลัตเวีย == === คำนาม === {{head|lv|รูปนาม|g=f}} # {{inflection of|lv|abate||acc//ins|s}} == ภาษาอิตาลี == === คำนาม === {{head|it|รูปนาม|g=m-p}} # {{plural of|it|abate}} === คำนาม === {{head|it|รูปนาม|g=m-p}} # {{plural of|it|abato}} === คำสลับอักษร === * {{anagrams|it|a=aabit|abita|baita}} == ภาษาเอเว == === การออกเสียง === * {{IPA|ee|/ˈəbʌˌtɪ/}} * {{audio|ee|ee-abati.ogg}} === คำนาม === {{head|ee|คำนาม|พหูพจน์|abatiwo}} # [[เตียง]] == ภาษาแอลเบเนีย == === คำนาม === {{head|sq|รูปนาม}} # {{inflection of|sq|abat||def|nom|s|;|indef|dat//abl|s}} 6ze4ir0v6nb1bgem9q4rs3t5fvbssfx 5754495 5754485 2026-08-06T07:44:36Z OctraBot 3198 /* รากศัพท์ */ 5754495 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|abatre}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|abater}} == ภาษาซาร์ดิเนีย == === รากศัพท์ === จาก{{bor|sc|it|abate}},<ref>{{R:sc:WagnerDES}}</ref> จาก{{der|sc|LL.|abbās|abbās, abbātem}}, จาก{{der|sc|grc|ἀββᾶς}}, จาก{{der|sc|arc|אבא|tr=’abbā||พ่อ}}; เทียบ{{cog|sc-src|abate}} === การออกเสียง === * {{IPA|sc|/aˈbati/}} === คำนาม === {{sc-noun|m|abatis|f=badessa}} # {{lb|sc|Campidanese}} [[สมภาร]], [[เจ้าอาวาส]], [[เจ้าอธิการ]] ==== คำเกี่ยวข้อง ==== {{col2|sc|abatzia|badia}} === อ้างอิง === * {{R:sc:Rubattu2006}} <references/> {{C|sc|Monasticism}} == ภาษาตูปีเก่า == === รูปแบบอื่น === * {{alt|tpw|abaxi||LGP}} === รากศัพท์ === {{etymon|tpw|:inh|tup-gua-pro:*aβati<id:maize>|id=maize|text=++}} ร่วมเชื้อสายกับ{{cog|gn|avati}} === การออกเสียง === * {{IPA|tpw|/a.βaˈti/}} * {{rhyme|tpw|i|s=3}} * {{hyph|tpw|a|ba|ti}} === คำนาม === {{tpw-noun|u}} # [[ข้าวโพด]] ({{taxfmt|Zea mays|species}}) ==== ลูกคำ ==== {{col|tpw |abati'y |abatityba |abatigûasu |abatiatã |abatipeba |abatiúna |abatieté |abatitinga |abati'i |abatimirĩ |Abatiposanga |Abatiúna}} ==== คำสืบทอด ==== * {{desc|yrl|awatí|alts=1}} * {{desc|kqq|jauatü|bor=1}} * {{desc|pt|abati|bor=1|alts=1}} === อ้างอิง === * {{R:tpw:Staden|XVII|56|Abbati|Abati}} * {{R:tpw:VLB|Milho, gnrl.|38|2|Abati}} * {{R:pt:Navarro 2013|abati|8|2}} {{C|tpw|Maize (plant)}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{rhyme|pt|i|s=3}} * {{hyphenation|pt|a|ba|ti}} === รากศัพท์ 1 === {{etymon|pt|:bor|tpw:abati<id:maize>|id=maize|text=+}} ==== รูปแบบอื่น ==== * {{alt|pt|avati|auati}} ==== คำนาม ==== {{pt-noun|m}} # {{lb|pt|Brazil}} [[ข้าวโพด]] #: {{syn|pt|milho}} #* {{quote-book|pt |title=O homem cordial |chapter=Botica da natureza |isbn=978-85-8086-890-6 |year_published=2012 |year=1936 |location=São Paulo |publisher=Schwarcz S.A. |url=https://books.google.com.br/books/about/O_homem_cordial.html?id=4MKnBAAAQBAJ&source=kp_book_description&redir_esc=y |author=w:Sérgio Buarque de Holanda |page=65 |text=Assim é que, na mandioca, vinham procurar o honesto pão de trigo, no pinhão da araucária, a castanha europeia; no '''abati''', o milho, milho alvo do reino.}} ===== คำเกี่ยวข้อง ===== {{col|pt|abativi|abatiguera|abatiapé|batité|abatimirim}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|abater}} {{C|pt|Maize (plant)}} == ภาษาลัตเวีย == === คำนาม === {{head|lv|รูปนาม|g=f}} # {{inflection of|lv|abate||acc//ins|s}} == ภาษาอิตาลี == === คำนาม === {{head|it|รูปนาม|g=m-p}} # {{plural of|it|abate}} === คำนาม === {{head|it|รูปนาม|g=m-p}} # {{plural of|it|abato}} === คำสลับอักษร === * {{anagrams|it|a=aabit|abita|baita}} == ภาษาเอเว == === การออกเสียง === * {{IPA|ee|/ˈəbʌˌtɪ/}} * {{audio|ee|ee-abati.ogg}} === คำนาม === {{head|ee|คำนาม|พหูพจน์|abatiwo}} # [[เตียง]] == ภาษาแอลเบเนีย == === คำนาม === {{head|sq|รูปนาม}} # {{inflection of|sq|abat||def|nom|s|;|indef|dat//abl|s}} o0zm1ce0off8ifgtpej28rv1r9rthgv 5754496 5754495 2026-08-06T07:45:05Z OctraBot 3198 /* รากศัพท์ */ 5754496 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA}} === คำกริยา === {{head|ca|รูปกริยา}} # {{ca-verb form of|abatre}} == ภาษากาลิเซีย == === คำกริยา === {{head|gl|รูปกริยา}} # {{gl-reinteg-verb form of|abater}} == ภาษาซาร์ดิเนีย == === รากศัพท์ === จาก{{bor|sc|it|abate}},<ref>{{R:sc:WagnerDES}}</ref> จาก{{der|sc|LL.|abbās|abbās, abbātem}}, จาก{{der|sc|grc|ἀββᾶς}}, จาก{{der|sc|arc|אבא|tr=’abbā||พ่อ}}; เทียบ{{cog|sc-src|abate}} === การออกเสียง === * {{IPA|sc|/aˈbati/}} === คำนาม === {{sc-noun|m|abatis|f=badessa}} # {{lb|sc|Campidanese}} [[สมภาร]], [[เจ้าอาวาส]], [[เจ้าอธิการ]] ==== คำเกี่ยวข้อง ==== {{col2|sc|abatzia|badia}} === อ้างอิง === * {{R:sc:Rubattu2006}} <references/> {{C|sc|Monasticism}} == ภาษาตูปีเก่า == === รูปแบบอื่น === * {{alt|tpw|abaxi||LGP}} === รากศัพท์ === {{etymon|tpw|:inh|tup-gua-pro:*aβati<id:maize>|id=maize|text=++}} ร่วมเชื้อสายกับ{{cog|gug|avati}} === การออกเสียง === * {{IPA|tpw|/a.βaˈti/}} * {{rhyme|tpw|i|s=3}} * {{hyph|tpw|a|ba|ti}} === คำนาม === {{tpw-noun|u}} # [[ข้าวโพด]] ({{taxfmt|Zea mays|species}}) ==== ลูกคำ ==== {{col|tpw |abati'y |abatityba |abatigûasu |abatiatã |abatipeba |abatiúna |abatieté |abatitinga |abati'i |abatimirĩ |Abatiposanga |Abatiúna}} ==== คำสืบทอด ==== * {{desc|yrl|awatí|alts=1}} * {{desc|kqq|jauatü|bor=1}} * {{desc|pt|abati|bor=1|alts=1}} === อ้างอิง === * {{R:tpw:Staden|XVII|56|Abbati|Abati}} * {{R:tpw:VLB|Milho, gnrl.|38|2|Abati}} * {{R:pt:Navarro 2013|abati|8|2}} {{C|tpw|Maize (plant)}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{rhyme|pt|i|s=3}} * {{hyphenation|pt|a|ba|ti}} === รากศัพท์ 1 === {{etymon|pt|:bor|tpw:abati<id:maize>|id=maize|text=+}} ==== รูปแบบอื่น ==== * {{alt|pt|avati|auati}} ==== คำนาม ==== {{pt-noun|m}} # {{lb|pt|Brazil}} [[ข้าวโพด]] #: {{syn|pt|milho}} #* {{quote-book|pt |title=O homem cordial |chapter=Botica da natureza |isbn=978-85-8086-890-6 |year_published=2012 |year=1936 |location=São Paulo |publisher=Schwarcz S.A. |url=https://books.google.com.br/books/about/O_homem_cordial.html?id=4MKnBAAAQBAJ&source=kp_book_description&redir_esc=y |author=w:Sérgio Buarque de Holanda |page=65 |text=Assim é que, na mandioca, vinham procurar o honesto pão de trigo, no pinhão da araucária, a castanha europeia; no '''abati''', o milho, milho alvo do reino.}} ===== คำเกี่ยวข้อง ===== {{col|pt|abativi|abatiguera|abatiapé|batité|abatimirim}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|abater}} {{C|pt|Maize (plant)}} == ภาษาลัตเวีย == === คำนาม === {{head|lv|รูปนาม|g=f}} # {{inflection of|lv|abate||acc//ins|s}} == ภาษาอิตาลี == === คำนาม === {{head|it|รูปนาม|g=m-p}} # {{plural of|it|abate}} === คำนาม === {{head|it|รูปนาม|g=m-p}} # {{plural of|it|abato}} === คำสลับอักษร === * {{anagrams|it|a=aabit|abita|baita}} == ภาษาเอเว == === การออกเสียง === * {{IPA|ee|/ˈəbʌˌtɪ/}} * {{audio|ee|ee-abati.ogg}} === คำนาม === {{head|ee|คำนาม|พหูพจน์|abatiwo}} # [[เตียง]] == ภาษาแอลเบเนีย == === คำนาม === {{head|sq|รูปนาม}} # {{inflection of|sq|abat||def|nom|s|;|indef|dat//abl|s}} izrxvf7or37wyv1k3ok228bk7zk8be0 biǎoyǎnchàng 0 32980 5754549 1250998 2026-08-06T09:32:07Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754549 wikitext text/x-wiki == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|表演唱}} 8r7qxd3jaf8hney21g6nlxu60lswqvz xǐhuān 0 32986 5754517 1878484 2026-08-06T08:39:41Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754517 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|喜歡}} h00fifiyei9fe6z90zhxhg5wfyrncl4 bùcuò 0 33046 5754548 1253001 2026-08-06T09:31:49Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754548 wikitext text/x-wiki == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|不錯}} g711vcifekcanph4qrvhvpl6jve7hgj bùyòng 0 33055 5754547 1875812 2026-08-06T09:31:33Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754547 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|不用}} hp87349d4x0ixzlaqpzqnynkzp9vp9y huǒchēzhàn 0 36059 5754544 1268577 2026-08-06T09:30:14Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754544 wikitext text/x-wiki == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|火車站}} 4rol8vvjms0b6dxfx79uw7nw92y2mya xīnlǐ 0 36061 5754516 4727190 2026-08-06T08:38:30Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754516 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|心理}} # {{cmn-pinyin of|心裡}} # {{cmn-pinyin of|心裏}} rzwlbiv7vjlw8m4iozb58j79g3zzz2h jǐngfāng 0 36063 5754541 1271264 2026-08-06T09:29:14Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754541 wikitext text/x-wiki == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|警方}} 6o7ae1dvevqq2749m0m8lg3u7zyxxqn jǐngchá 0 36065 5754542 4715640 2026-08-06T09:29:31Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754542 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|警察}} 48wus3nqq60s6vzxfzlu5o89u8ykjj2 tíxǐng 0 36067 5754524 4723995 2026-08-06T08:46:49Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754524 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|提醒}} g8wu1dw0q10eklf79vrdve1d0xp6815 fǎzhì 0 36071 5754546 4710092 2026-08-06T09:31:08Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754546 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|法制}} # {{cmn-pinyin of|法治}} el3v4kzglqkaat0nuwhxfmjnbz2srmx jié 0 36537 5754550 1876700 2026-08-06T09:32:46Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754550 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === รูปแบบอื่น === * {{alt|cmn|jie||nonstandard}} === การออกเสียง === * {{audio|cmn|Zh-jié.ogg}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|倢}} # {{cmn-pinyin of|偈}} # {{cmn-pinyin of|偼}} # {{cmn-pinyin of|傑}} # {{cmn-pinyin of|刦}} # {{cmn-pinyin of|刧}} # {{cmn-pinyin of|刼}} # {{cmn-pinyin of|劫}} # {{cmn-pinyin of|劼}} # {{cmn-pinyin of|卩}} # {{cmn-pinyin of|卪}} # {{cmn-pinyin of|喼}} # {{cmn-pinyin of|婕}} # {{cmn-pinyin of|孑}} # {{cmn-pinyin of|寀}} # {{cmn-pinyin of|岊}} # {{cmn-pinyin of|崨}} # {{cmn-pinyin of|嵍}} # {{cmn-pinyin of|嵥}} # {{cmn-pinyin of|幯}} # {{cmn-pinyin of|截}} # {{cmn-pinyin of|扷}} # {{cmn-pinyin of|抽}} # {{cmn-pinyin of|拮}} # {{cmn-pinyin of|捷}} # {{cmn-pinyin of|搩}} # {{cmn-pinyin of|擳}} # {{cmn-pinyin of|昅}} # {{cmn-pinyin of|杰}} # {{cmn-pinyin of|栉}} # {{cmn-pinyin of|栨}} # {{cmn-pinyin of|桀}} # {{cmn-pinyin of|桔}} # {{cmn-pinyin of|楬}} # {{cmn-pinyin of|楶}} # {{cmn-pinyin of|楸}} # {{cmn-pinyin of|榤}} # {{cmn-pinyin of|櫛}} # {{cmn-pinyin of|櫭}} # {{cmn-pinyin of|洁}} # {{cmn-pinyin of|洯}} # {{cmn-pinyin of|渴}} # {{cmn-pinyin of|滐}} # {{cmn-pinyin of|潔}} # {{cmn-pinyin of|瀄}} # {{cmn-pinyin of|犵}} # {{cmn-pinyin of|癤}} # {{cmn-pinyin of|睫}} # {{cmn-pinyin of|砗}} # {{cmn-pinyin of|碣}} # {{cmn-pinyin of|竭}} # {{cmn-pinyin of|箑}} # {{cmn-pinyin of|節}} # {{cmn-pinyin of|紇}} # {{cmn-pinyin of|結}} # {{cmn-pinyin of|絛}} # {{cmn-pinyin of|结}} # {{cmn-pinyin of|羯}} # {{cmn-pinyin of|脻}} # {{cmn-pinyin of|节}} # {{cmn-pinyin of|莭}} # {{cmn-pinyin of|葜}} # {{cmn-pinyin of|蓵}} # {{cmn-pinyin of|蛟}} # {{cmn-pinyin of|蜐}} # {{cmn-pinyin of|蠘}} # {{cmn-pinyin of|蠞}} # {{cmn-pinyin of|蠽}} # {{cmn-pinyin of|衱}} # {{cmn-pinyin of|袴}} # {{cmn-pinyin of|袺}} # {{cmn-pinyin of|訐}} # {{cmn-pinyin of|詰}} # {{cmn-pinyin of|誱}} # {{cmn-pinyin of|讦}} # {{cmn-pinyin of|诘}} # {{cmn-pinyin of|趌}} # {{cmn-pinyin of|踕}} # {{cmn-pinyin of|迼}} # {{cmn-pinyin of|鉣}} # {{cmn-pinyin of|鍻}} # {{cmn-pinyin of|鐑}} # {{cmn-pinyin of|頡}} # {{cmn-pinyin of|颉}} # {{cmn-pinyin of|騔}} # {{cmn-pinyin of|髻}} # {{cmn-pinyin of|鮚}} # {{cmn-pinyin of|㑵}} # {{cmn-pinyin of|㓗}} # {{cmn-pinyin of|㓤}} # {{cmn-pinyin of|㸅}} # {{cmn-pinyin of|擷}} ombwjurqbh6eiz00lfacfw2c3g6n8i6 dose 0 41537 5754350 1873979 2026-08-06T02:02:22Z Octahedron80 267 /* ภาษาอังกฤษ */ เก็บกวาด 5754350 wikitext text/x-wiki {{also/auto}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare.}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast.}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful.}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} To [[administer]] a dose (of medicine) to. #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."}} # To [[prescribe]] a dose. # {{lb|en|transitive}} To surreptitiously administer a dose of an incapacitating drug (to an unwilling subject); to [[roofie]]. #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.}} # {{lb|en|transitive|dated}} To [[transmit]] a venereal disease to. #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper.}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}}. #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}}. #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} 92meqxiexbbjq9zkj3c7pfc50013w01 5754351 5754350 2026-08-06T02:06:02Z Octahedron80 267 /* คำกริยา */ 5754351 wikitext text/x-wiki {{also/auto}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare.}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast.}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful.}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} [[ให้]]ยาในปริมาณที่วัดหรือตวงมาแล้ว #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."}} # [[สั่ง]][[จ่าย]]ยา # {{lb|en|transitive}} แอบให้ยาที่ทำให้หมดสติ (แก่ผู้ที่ไม่เต็มใจ); ดมยา #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.}} # {{lb|en|transitive|dated}} [[แพร่]]เชื้อโรคติดต่อทางเพศสัมพันธ์ #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper.}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}}. #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}}. #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} ihj5uj4vjucslq8ms9s6txqalc7i9ci 5754352 5754351 2026-08-06T02:06:17Z Octahedron80 267 /* รากศัพท์ 2 */ 5754352 wikitext text/x-wiki {{also/auto}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare.}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast.}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful.}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} [[ให้]]ยาในปริมาณที่วัดหรือตวงมาแล้ว #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."}} # [[สั่ง]][[จ่าย]]ยา # {{lb|en|transitive}} แอบให้ยาที่ทำให้หมดสติ (แก่ผู้ที่ไม่เต็มใจ); ดมยา #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.}} # {{lb|en|transitive|dated}} [[แพร่]]เชื้อโรคติดต่อทางเพศสัมพันธ์ #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper.}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}} #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}} #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} cqflvrdwala8e7wo19mkoh8helg1rh1 5754356 5754352 2026-08-06T02:13:28Z Octahedron80 267 /* คำนาม */ 5754356 wikitext text/x-wiki {{also/auto}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.|ทำไมเขาถึงให้ยาคุณแค่ขนาด 500 มิลลิกรัมครั้งเดียว? ปริมาณยาปฏิชีวนะที่ถูกต้องคือ ยาเม็ดขนาด 500 มิลลิกรัม วันละสองครั้ง เป็นเวลา 10 วัน}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare. |t=โรคที่เกิดจากแมงกานีสเป็นที่รู้จักกันมาตั้งแต่ศตวรรษที่ 19 เมื่อคนงานเหมืองที่สัมผัสกับแร่ที่มีแมงกานีสเป็นส่วนประกอบ {{...}} เริ่มมีอาการเซื่องซึม พูดจาไม่ชัด และมีพฤติกรรมเหมือนคนเมาสุรา พิษนี้ไม่สามารถรักษาให้หายได้ และในไม่ช้าก็จะนำไปสู่โรคจิตและเสียชีวิต ปัจจุบันคนงานสัมผัสกับแมงกานีสในปริมาณที่ต่ำกว่ามาก และโรคที่เกิดจากแมงกานีสจึงพบได้ยาก}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.|ความสงสัยอย่างมีเหตุผล}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”|t=“อย่างที่พวกคุณจำได้ ผมเพิ่งกลับมาลอนดอนหลังจากเดินทางไปทั่วมหาสมุทรอินเดีย มหาสมุทรแปซิฟิก และทะเลจีนมาประมาณหกปี เรียกได้ว่าได้สัมผัสกับตะวันออกอย่างเต็มที่เลย และผมก็เอาแต่เที่ยวเตร่ ขัดขวางการทำงานของพวกคุณ และบุกรุกบ้านของพวกคุณ ราวกับว่าผมได้รับภารกิจจากสวรรค์มาเพื่อทำให้พวกคุณเจริญแล้ว”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.|t=โอกาสที่จะได้เป็นพ่อคนนั้นเป็นเหมือนการเผชิญหน้าของความจริงที่คุกคามจะทำให้โลกแห่งความฝันของเขาล่มสลาย}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/ |t=คนที่ไม่ได้รับแสงแดดในปริมาณที่เพียงพอในเวลาที่เหมาะสมของวัน อาจมีสุขภาพที่แย่ลงได้}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast. |t=อย่าให้โรคติดต่อทางเพศสัมพันธ์แก่คนที่คุณรักมากที่สุด / ให้แยมส้มแก่เธอ... ให้ขนมปังปิ้งแก่เธอ}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful. |t=การรักษาโรคติดต่อทางเพศสัมพันธ์ด้วยวิธีนี้จะมีค่าใช้จ่ายสูงมากและเจ็บปวดอย่างเหลือเชื่อ}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.|มีการระบาดของโรคหวัดอยู่}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} [[ให้]]ยาในปริมาณที่วัดหรือตวงมาแล้ว #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."}} # [[สั่ง]][[จ่าย]]ยา # {{lb|en|transitive}} แอบให้ยาที่ทำให้หมดสติ (แก่ผู้ที่ไม่เต็มใจ); ดมยา #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.}} # {{lb|en|transitive|dated}} [[แพร่]]เชื้อโรคติดต่อทางเพศสัมพันธ์ #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper.}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}} #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}} #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} 9lplw19dimsq5yzwta5dfsb88213ncs 5754358 5754356 2026-08-06T02:18:12Z Octahedron80 267 /* คำกริยา */ 5754358 wikitext text/x-wiki {{also/auto}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.|ทำไมเขาถึงให้ยาคุณแค่ขนาด 500 มิลลิกรัมครั้งเดียว? ปริมาณยาปฏิชีวนะที่ถูกต้องคือ ยาเม็ดขนาด 500 มิลลิกรัม วันละสองครั้ง เป็นเวลา 10 วัน}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare. |t=โรคที่เกิดจากแมงกานีสเป็นที่รู้จักกันมาตั้งแต่ศตวรรษที่ 19 เมื่อคนงานเหมืองที่สัมผัสกับแร่ที่มีแมงกานีสเป็นส่วนประกอบ {{...}} เริ่มมีอาการเซื่องซึม พูดจาไม่ชัด และมีพฤติกรรมเหมือนคนเมาสุรา พิษนี้ไม่สามารถรักษาให้หายได้ และในไม่ช้าก็จะนำไปสู่โรคจิตและเสียชีวิต ปัจจุบันคนงานสัมผัสกับแมงกานีสในปริมาณที่ต่ำกว่ามาก และโรคที่เกิดจากแมงกานีสจึงพบได้ยาก}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.|ความสงสัยอย่างมีเหตุผล}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”|t=“อย่างที่พวกคุณจำได้ ผมเพิ่งกลับมาลอนดอนหลังจากเดินทางไปทั่วมหาสมุทรอินเดีย มหาสมุทรแปซิฟิก และทะเลจีนมาประมาณหกปี เรียกได้ว่าได้สัมผัสกับตะวันออกอย่างเต็มที่เลย และผมก็เอาแต่เที่ยวเตร่ ขัดขวางการทำงานของพวกคุณ และบุกรุกบ้านของพวกคุณ ราวกับว่าผมได้รับภารกิจจากสวรรค์มาเพื่อทำให้พวกคุณเจริญแล้ว”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.|t=โอกาสที่จะได้เป็นพ่อคนนั้นเป็นเหมือนการเผชิญหน้าของความจริงที่คุกคามจะทำให้โลกแห่งความฝันของเขาล่มสลาย}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/ |t=คนที่ไม่ได้รับแสงแดดในปริมาณที่เพียงพอในเวลาที่เหมาะสมของวัน อาจมีสุขภาพที่แย่ลงได้}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast. |t=อย่าให้โรคติดต่อทางเพศสัมพันธ์แก่คนที่คุณรักมากที่สุด / ให้แยมส้มแก่เธอ... ให้ขนมปังปิ้งแก่เธอ}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful. |t=การรักษาโรคติดต่อทางเพศสัมพันธ์ด้วยวิธีนี้จะมีค่าใช้จ่ายสูงมากและเจ็บปวดอย่างเหลือเชื่อ}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.|มีการระบาดของโรคหวัดอยู่}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} [[ให้]]ยาในปริมาณที่วัดหรือตวงมาแล้ว #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."|t="เธอคิดว่าตัวเองตื่นเต็มที่แล้ว และฉันได้ให้ยาแก้ปวดชนิดฝิ่นแก่เธอ"}} # [[สั่ง]][[จ่าย]]ยา # {{lb|en|transitive}} แอบให้ยาที่ทำให้หมดสติ (แก่ผู้ที่ไม่เต็มใจ); ดมยา #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.|t=ฝ่ายจำเลยไม่เคยยอมรับว่าลูกความของตนได้ให้คลอรัล[ไฮเดรต]แก่จำเลย แต่เดธและแคมป์เบลกล่าวในตอนแรก—ระหว่างการสารภาพที่สถานีตำรวจซึ่งเป็นที่ถกเถียงกัน—ว่าแมคอลิสเตอร์ได้ใส่ยาลงในเครื่องดื่ม[ของเจนนี่ บอสชีเตอร์]}} # {{lb|en|transitive|dated}} [[แพร่]]เชื้อโรคติดต่อทางเพศสัมพันธ์ #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper. |t=เมื่อไม่นานมานี้ หนึ่งในพี่น้องสาวสีแดงของคุณแพร่เชื้อโรคติดต่อทางเพศสัมพันธ์ให้ฉันอย่างสาหัส}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}} #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}} #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} t8eh3lcu799bksk6kgedwnccro2yjid 5754359 5754358 2026-08-06T02:20:24Z Octahedron80 267 /* รากศัพท์ 2 */ 5754359 wikitext text/x-wiki {{also/auto}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.|ทำไมเขาถึงให้ยาคุณแค่ขนาด 500 มิลลิกรัมครั้งเดียว? ปริมาณยาปฏิชีวนะที่ถูกต้องคือ ยาเม็ดขนาด 500 มิลลิกรัม วันละสองครั้ง เป็นเวลา 10 วัน}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare. |t=โรคที่เกิดจากแมงกานีสเป็นที่รู้จักกันมาตั้งแต่ศตวรรษที่ 19 เมื่อคนงานเหมืองที่สัมผัสกับแร่ที่มีแมงกานีสเป็นส่วนประกอบ {{...}} เริ่มมีอาการเซื่องซึม พูดจาไม่ชัด และมีพฤติกรรมเหมือนคนเมาสุรา พิษนี้ไม่สามารถรักษาให้หายได้ และในไม่ช้าก็จะนำไปสู่โรคจิตและเสียชีวิต ปัจจุบันคนงานสัมผัสกับแมงกานีสในปริมาณที่ต่ำกว่ามาก และโรคที่เกิดจากแมงกานีสจึงพบได้ยาก}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.|ความสงสัยอย่างมีเหตุผล}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”|t=“อย่างที่พวกคุณจำได้ ผมเพิ่งกลับมาลอนดอนหลังจากเดินทางไปทั่วมหาสมุทรอินเดีย มหาสมุทรแปซิฟิก และทะเลจีนมาประมาณหกปี เรียกได้ว่าได้สัมผัสกับตะวันออกอย่างเต็มที่เลย และผมก็เอาแต่เที่ยวเตร่ ขัดขวางการทำงานของพวกคุณ และบุกรุกบ้านของพวกคุณ ราวกับว่าผมได้รับภารกิจจากสวรรค์มาเพื่อทำให้พวกคุณเจริญแล้ว”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.|t=โอกาสที่จะได้เป็นพ่อคนนั้นเป็นเหมือนการเผชิญหน้าของความจริงที่คุกคามจะทำให้โลกแห่งความฝันของเขาล่มสลาย}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/ |t=คนที่ไม่ได้รับแสงแดดในปริมาณที่เพียงพอในเวลาที่เหมาะสมของวัน อาจมีสุขภาพที่แย่ลงได้}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast. |t=อย่าให้โรคติดต่อทางเพศสัมพันธ์แก่คนที่คุณรักมากที่สุด / ให้แยมส้มแก่เธอ... ให้ขนมปังปิ้งแก่เธอ}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful. |t=การรักษาโรคติดต่อทางเพศสัมพันธ์ด้วยวิธีนี้จะมีค่าใช้จ่ายสูงมากและเจ็บปวดอย่างเหลือเชื่อ}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.|มีการระบาดของโรคหวัดอยู่}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} [[ให้]]ยาในปริมาณที่วัดหรือตวงมาแล้ว #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."|t="เธอคิดว่าตัวเองตื่นเต็มที่แล้ว และฉันได้ให้ยาแก้ปวดชนิดฝิ่นแก่เธอ"}} # [[สั่ง]][[จ่าย]]ยา # {{lb|en|transitive}} แอบให้ยาที่ทำให้หมดสติ (แก่ผู้ที่ไม่เต็มใจ); ดมยา #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.|t=ฝ่ายจำเลยไม่เคยยอมรับว่าลูกความของตนได้ให้คลอรัล[ไฮเดรต]แก่จำเลย แต่เดธและแคมป์เบลกล่าวในตอนแรก—ระหว่างการสารภาพที่สถานีตำรวจซึ่งเป็นที่ถกเถียงกัน—ว่าแมคอลิสเตอร์ได้ใส่ยาลงในเครื่องดื่ม[ของเจนนี่ บอสชีเตอร์]}} # {{lb|en|transitive|dated}} [[แพร่]]เชื้อโรคติดต่อทางเพศสัมพันธ์ #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper. |t=เมื่อไม่นานมานี้ หนึ่งในพี่น้องสาวสีแดงของคุณแพร่เชื้อโรคติดต่อทางเพศสัมพันธ์ให้ฉันอย่างสาหัส}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}} #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}} |t=เมื่อรุ่งเช้ามาถึง ฉันก็หลับไปอย่างสนิท ซึ่งเป็นการหลับที่มากกว่าการหลับใด ๆ ตลอดทั้งคืน ในฝันฉันได้เห็นแม่น้ำที่ใสราวกับคริสตัล {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}} #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}|t=สำหรับฉันแล้ว มันเป็นประสบการณ์ที่วิเศษมาก การได้มาอยู่ที่นี่ พิงหมอนอยู่ในห้องที่แสงสลัว พยาบาลกลางคืนงีบหลับอยู่ข้างเตาผิง เสียงลมที่พัดไม่หยุดหย่อนดังแว่วมาแต่หู และเสียงหอนอยู่ข้างนอก {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} 6g3cam404ebf3q21063rin55pszx84h 5754360 5754359 2026-08-06T02:26:20Z Octahedron80 267 /* เก็บกวาด */ ส่วนใหม่ 5754360 wikitext text/x-wiki {{also/auto}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.|ทำไมเขาถึงให้ยาคุณแค่ขนาด 500 มิลลิกรัมครั้งเดียว? ปริมาณยาปฏิชีวนะที่ถูกต้องคือ ยาเม็ดขนาด 500 มิลลิกรัม วันละสองครั้ง เป็นเวลา 10 วัน}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare. |t=โรคที่เกิดจากแมงกานีสเป็นที่รู้จักกันมาตั้งแต่ศตวรรษที่ 19 เมื่อคนงานเหมืองที่สัมผัสกับแร่ที่มีแมงกานีสเป็นส่วนประกอบ {{...}} เริ่มมีอาการเซื่องซึม พูดจาไม่ชัด และมีพฤติกรรมเหมือนคนเมาสุรา พิษนี้ไม่สามารถรักษาให้หายได้ และในไม่ช้าก็จะนำไปสู่โรคจิตและเสียชีวิต ปัจจุบันคนงานสัมผัสกับแมงกานีสในปริมาณที่ต่ำกว่ามาก และโรคที่เกิดจากแมงกานีสจึงพบได้ยาก}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.|ความสงสัยอย่างมีเหตุผล}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”|t=“อย่างที่พวกคุณจำได้ ผมเพิ่งกลับมาลอนดอนหลังจากเดินทางไปทั่วมหาสมุทรอินเดีย มหาสมุทรแปซิฟิก และทะเลจีนมาประมาณหกปี เรียกได้ว่าได้สัมผัสกับตะวันออกอย่างเต็มที่เลย และผมก็เอาแต่เที่ยวเตร่ ขัดขวางการทำงานของพวกคุณ และบุกรุกบ้านของพวกคุณ ราวกับว่าผมได้รับภารกิจจากสวรรค์มาเพื่อทำให้พวกคุณเจริญแล้ว”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.|t=โอกาสที่จะได้เป็นพ่อคนนั้นเป็นเหมือนการเผชิญหน้าของความจริงที่คุกคามจะทำให้โลกแห่งความฝันของเขาล่มสลาย}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/ |t=คนที่ไม่ได้รับแสงแดดในปริมาณที่เพียงพอในเวลาที่เหมาะสมของวัน อาจมีสุขภาพที่แย่ลงได้}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast. |t=อย่าให้โรคติดต่อทางเพศสัมพันธ์แก่คนที่คุณรักมากที่สุด / ให้แยมส้มแก่เธอ... ให้ขนมปังปิ้งแก่เธอ}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful. |t=การรักษาโรคติดต่อทางเพศสัมพันธ์ด้วยวิธีนี้จะมีค่าใช้จ่ายสูงมากและเจ็บปวดอย่างเหลือเชื่อ}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.|มีการระบาดของโรคหวัดอยู่}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} [[ให้]]ยาในปริมาณที่วัดหรือตวงมาแล้ว #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."|t="เธอคิดว่าตัวเองตื่นเต็มที่แล้ว และฉันได้ให้ยาแก้ปวดชนิดฝิ่นแก่เธอ"}} # [[สั่ง]][[จ่าย]]ยา # {{lb|en|transitive}} แอบให้ยาที่ทำให้หมดสติ (แก่ผู้ที่ไม่เต็มใจ); ดมยา #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.|t=ฝ่ายจำเลยไม่เคยยอมรับว่าลูกความของตนได้ให้คลอรัล[ไฮเดรต]แก่จำเลย แต่เดธและแคมป์เบลกล่าวในตอนแรก—ระหว่างการสารภาพที่สถานีตำรวจซึ่งเป็นที่ถกเถียงกัน—ว่าแมคอลิสเตอร์ได้ใส่ยาลงในเครื่องดื่ม[ของเจนนี่ บอสชีเตอร์]}} # {{lb|en|transitive|dated}} [[แพร่]]เชื้อโรคติดต่อทางเพศสัมพันธ์ #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper. |t=เมื่อไม่นานมานี้ หนึ่งในพี่น้องสาวสีแดงของคุณแพร่เชื้อโรคติดต่อทางเพศสัมพันธ์ให้ฉันอย่างสาหัส}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}} #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}} |t=เมื่อรุ่งเช้ามาถึง ฉันก็หลับไปอย่างสนิท ซึ่งเป็นการหลับที่มากกว่าการหลับใด ๆ ตลอดทั้งคืน ในฝันฉันได้เห็นแม่น้ำที่ใสราวกับคริสตัล {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}} #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}|t=สำหรับฉันแล้ว มันเป็นประสบการณ์ที่วิเศษมาก การได้มาอยู่ที่นี่ พิงหมอนอยู่ในห้องที่แสงสลัว พยาบาลกลางคืนงีบหลับอยู่ข้างเตาผิง เสียงลมที่พัดไม่หยุดหย่อนดังแว่วมาแต่หู และเสียงหอนอยู่ข้างนอก {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} == เก็บกวาด == == ภาษาอาฟรีกานส์ == === คำนาม === {{head|af|รูปนาม}} # {{plural of|af|doos}} == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|doce}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|do|se}} === เลข === {{ceb-num|dóse|b=+}} # [[สิบสอง]] {{cln|ceb|cardinal numbers}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|doce}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|do|se}} === เลข === {{bcl-head|numeral|dóse|b=+}} # [[สิบสอง]] #: {{syn|bcl|kagduwa}} ==== คำเกี่ยวข้อง ==== {{col|bcl|dos|beynte}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-dose.ogg|a=France}} * {{audio|fr|LL-Q150 (fra)-DSwissK-dose.wav|a=<<Switzerland>> (<<Valais>>)}} * {{audio|fr|LL-Q150 (fra)-Poslovitch-dose.wav|a=<<France>> (<<Vosges>>)}} === รากศัพท์ 1 === จาก{{der|fr|la|dosis}}, จาก{{der|fr|grc|δόσις}}; {{doublet|fr|dot}} ==== คำนาม ==== {{fr-noun|f}} # [[สัดส่วน]] # {{l|en|dose}} ===== ลูกคำ ===== * {{l|fr|dose de cheval}} * {{l|fr|en avoir sa dose}} ===== คำเกี่ยวข้อง ===== * {{l|fr|doser}} ===== คำสืบทอด ===== {{top2}} * {{desc|lv|doza}} * {{desc|lt|dozė}} * {{desc|mk|доза}} * {{desc|no|-}} {{l|nb|dose}} * {{desc|pl|doza}} * {{desc|ro|doză}} * {{desc|ru|доза}} ** {{desc|be|доза|bor=1}} ** {{desc|bg|доза|bor=1}} ** {{desc|kk|доза|bor=1}} * {{desc|sh|doza|доза}} * {{desc|sl|doza}} * {{desc|tr|doz}} * {{desc|fa|دز|tr=doz}} * {{desc|uk|доза}} * {{desc|fy|doaze}} {{bottom}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{head|fr|รูปกริยา}} # {{inflection of|fr|doser||1//3|s|pres|ind//sub|;|2|s|impr}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|doce||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|doce}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|do|se}} === เลข === {{ilo-head|numeral|b=+}} # {{cln|ilo|cardinal numbers}} [[สิบสอง]] #: {{syn|ilo|sangapulo ket dua}} == ภาษาอิตาลี == === การออกเสียง === {{it-pr|dòse}} === คำนาม === {{it-noun|f}} # ปริมาณ[[ยา]] # [[ปริมาณ]], [[จำนวน]], [[ขนาด]] # [[ข้อเสนอ]] (ที่ดีหรือดีมาก) (gran dose-buona dose) ==== ลูกคำ ==== * {{l|it|dosare}} === คำสลับอักษร === * {{anagrams|it|a=deos|sedo|sedò|sode}} == ภาษานอร์เวย์แบบบุ๊กมอล == === รากศัพท์ === จาก{{der|nb|grc|δόσις}} === คำนาม === {{nb-noun-m1}} # [[ปริมาณ]][[ยา]] === อ้างอิง === * {{R:nb:OB}} * {{R:nb:NAOB|dose_2}} == ภาษานอร์เวย์แบบนือนอสก์ == === รากศัพท์ === จาก{{der|nn|grc|δόσις}} === คำนาม === {{nn-noun-m1}} # [[ปริมาณ]][[ยา]] === อ้างอิง === * {{R:nn:OB}} == ภาษาบาลี == === รูปแบบอื่น === {{pi-alt|Thai=โทเส}} === คำนาม === {{head|pi|รูปนาม}} # {{inflection of|pi|dosa||loc|s}} # {{inflection of|pi|dosa||acc|p}} == ภาษาโปรตุเกส == === รากศัพท์ 1 === {{der|pt|la|dosis}}, จาก{{der|pt|grc|δόσις}} ==== การออกเสียง ==== * {{rhymes|pt|ɔzi|s=2}} {{pt-IPA|dóse}} ==== คำนาม ==== {{pt-noun|f}} # [[ปริมาณ]][[ยา]] # {{lb|pt|Portugal}} [[ส่วน]] {{gloss|ของอาหาร}} #: {{syn|pt|porção}} #: {{ux|pt|Uma meia '''dose''' de sardinhas assadas.|Half a '''portion''' of grilled sardines.}} # {{lb|pt|informal}} [[ฟิกซ์]] {{gloss|ยาเสพติดชนิดออกฤทธิ์ครั้งเดียว}} ==== อ่านเพิ่ม ==== * {{R:pt:Priberam}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} ==== อ่านเพิ่ม ==== * {{R:pt:Aulete}} == ภาษาตากาล็อก == {{number box|tl}} === รากศัพท์ === {{ety|tl|:bor|es:doce<t:twelve>|text=+|tree=1}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-dose.wav}} === เลข === {{tl-num|b=+}} # [[สิบสอง]] #: {{syn|tl|labindalawa}} ==== คำเกี่ยวข้อง ==== {{col3|tl|alas-dose|dose mil|dosena|dos|a-dose|dosyentos}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} {{C|tl|สิบสอง}} izt5sp0acredamnafi54h1xyg6l32cz 5754361 5754360 2026-08-06T02:26:35Z Octahedron80 267 /* เก็บกวาด */ 5754361 wikitext text/x-wiki {{also/auto}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.|ทำไมเขาถึงให้ยาคุณแค่ขนาด 500 มิลลิกรัมครั้งเดียว? ปริมาณยาปฏิชีวนะที่ถูกต้องคือ ยาเม็ดขนาด 500 มิลลิกรัม วันละสองครั้ง เป็นเวลา 10 วัน}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare. |t=โรคที่เกิดจากแมงกานีสเป็นที่รู้จักกันมาตั้งแต่ศตวรรษที่ 19 เมื่อคนงานเหมืองที่สัมผัสกับแร่ที่มีแมงกานีสเป็นส่วนประกอบ {{...}} เริ่มมีอาการเซื่องซึม พูดจาไม่ชัด และมีพฤติกรรมเหมือนคนเมาสุรา พิษนี้ไม่สามารถรักษาให้หายได้ และในไม่ช้าก็จะนำไปสู่โรคจิตและเสียชีวิต ปัจจุบันคนงานสัมผัสกับแมงกานีสในปริมาณที่ต่ำกว่ามาก และโรคที่เกิดจากแมงกานีสจึงพบได้ยาก}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.|ความสงสัยอย่างมีเหตุผล}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”|t=“อย่างที่พวกคุณจำได้ ผมเพิ่งกลับมาลอนดอนหลังจากเดินทางไปทั่วมหาสมุทรอินเดีย มหาสมุทรแปซิฟิก และทะเลจีนมาประมาณหกปี เรียกได้ว่าได้สัมผัสกับตะวันออกอย่างเต็มที่เลย และผมก็เอาแต่เที่ยวเตร่ ขัดขวางการทำงานของพวกคุณ และบุกรุกบ้านของพวกคุณ ราวกับว่าผมได้รับภารกิจจากสวรรค์มาเพื่อทำให้พวกคุณเจริญแล้ว”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.|t=โอกาสที่จะได้เป็นพ่อคนนั้นเป็นเหมือนการเผชิญหน้าของความจริงที่คุกคามจะทำให้โลกแห่งความฝันของเขาล่มสลาย}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/ |t=คนที่ไม่ได้รับแสงแดดในปริมาณที่เพียงพอในเวลาที่เหมาะสมของวัน อาจมีสุขภาพที่แย่ลงได้}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast. |t=อย่าให้โรคติดต่อทางเพศสัมพันธ์แก่คนที่คุณรักมากที่สุด / ให้แยมส้มแก่เธอ... ให้ขนมปังปิ้งแก่เธอ}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful. |t=การรักษาโรคติดต่อทางเพศสัมพันธ์ด้วยวิธีนี้จะมีค่าใช้จ่ายสูงมากและเจ็บปวดอย่างเหลือเชื่อ}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.|มีการระบาดของโรคหวัดอยู่}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} [[ให้]]ยาในปริมาณที่วัดหรือตวงมาแล้ว #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."|t="เธอคิดว่าตัวเองตื่นเต็มที่แล้ว และฉันได้ให้ยาแก้ปวดชนิดฝิ่นแก่เธอ"}} # [[สั่ง]][[จ่าย]]ยา # {{lb|en|transitive}} แอบให้ยาที่ทำให้หมดสติ (แก่ผู้ที่ไม่เต็มใจ); ดมยา #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.|t=ฝ่ายจำเลยไม่เคยยอมรับว่าลูกความของตนได้ให้คลอรัล[ไฮเดรต]แก่จำเลย แต่เดธและแคมป์เบลกล่าวในตอนแรก—ระหว่างการสารภาพที่สถานีตำรวจซึ่งเป็นที่ถกเถียงกัน—ว่าแมคอลิสเตอร์ได้ใส่ยาลงในเครื่องดื่ม[ของเจนนี่ บอสชีเตอร์]}} # {{lb|en|transitive|dated}} [[แพร่]]เชื้อโรคติดต่อทางเพศสัมพันธ์ #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper. |t=เมื่อไม่นานมานี้ หนึ่งในพี่น้องสาวสีแดงของคุณแพร่เชื้อโรคติดต่อทางเพศสัมพันธ์ให้ฉันอย่างสาหัส}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}} #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}} |t=เมื่อรุ่งเช้ามาถึง ฉันก็หลับไปอย่างสนิท ซึ่งเป็นการหลับที่มากกว่าการหลับใด ๆ ตลอดทั้งคืน ในฝันฉันได้เห็นแม่น้ำที่ใสราวกับคริสตัล {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}} #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}|t=สำหรับฉันแล้ว มันเป็นประสบการณ์ที่วิเศษมาก การได้มาอยู่ที่นี่ พิงหมอนอยู่ในห้องที่แสงสลัว พยาบาลกลางคืนงีบหลับอยู่ข้างเตาผิง เสียงลมที่พัดไม่หยุดหย่อนดังแว่วมาแต่หู และเสียงหอนอยู่ข้างนอก {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} == ภาษาอาฟรีกานส์ == === คำนาม === {{head|af|รูปนาม}} # {{plural of|af|doos}} == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|doce}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|do|se}} === เลข === {{ceb-num|dóse|b=+}} # [[สิบสอง]] {{cln|ceb|cardinal numbers}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|doce}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|do|se}} === เลข === {{bcl-head|numeral|dóse|b=+}} # [[สิบสอง]] #: {{syn|bcl|kagduwa}} ==== คำเกี่ยวข้อง ==== {{col|bcl|dos|beynte}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-dose.ogg|a=France}} * {{audio|fr|LL-Q150 (fra)-DSwissK-dose.wav|a=<<Switzerland>> (<<Valais>>)}} * {{audio|fr|LL-Q150 (fra)-Poslovitch-dose.wav|a=<<France>> (<<Vosges>>)}} === รากศัพท์ 1 === จาก{{der|fr|la|dosis}}, จาก{{der|fr|grc|δόσις}}; {{doublet|fr|dot}} ==== คำนาม ==== {{fr-noun|f}} # [[สัดส่วน]] # {{l|en|dose}} ===== ลูกคำ ===== * {{l|fr|dose de cheval}} * {{l|fr|en avoir sa dose}} ===== คำเกี่ยวข้อง ===== * {{l|fr|doser}} ===== คำสืบทอด ===== {{top2}} * {{desc|lv|doza}} * {{desc|lt|dozė}} * {{desc|mk|доза}} * {{desc|no|-}} {{l|nb|dose}} * {{desc|pl|doza}} * {{desc|ro|doză}} * {{desc|ru|доза}} ** {{desc|be|доза|bor=1}} ** {{desc|bg|доза|bor=1}} ** {{desc|kk|доза|bor=1}} * {{desc|sh|doza|доза}} * {{desc|sl|doza}} * {{desc|tr|doz}} * {{desc|fa|دز|tr=doz}} * {{desc|uk|доза}} * {{desc|fy|doaze}} {{bottom}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{head|fr|รูปกริยา}} # {{inflection of|fr|doser||1//3|s|pres|ind//sub|;|2|s|impr}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|doce||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|doce}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|do|se}} === เลข === {{ilo-head|numeral|b=+}} # {{cln|ilo|cardinal numbers}} [[สิบสอง]] #: {{syn|ilo|sangapulo ket dua}} == ภาษาอิตาลี == === การออกเสียง === {{it-pr|dòse}} === คำนาม === {{it-noun|f}} # ปริมาณ[[ยา]] # [[ปริมาณ]], [[จำนวน]], [[ขนาด]] # [[ข้อเสนอ]] (ที่ดีหรือดีมาก) (gran dose-buona dose) ==== ลูกคำ ==== * {{l|it|dosare}} === คำสลับอักษร === * {{anagrams|it|a=deos|sedo|sedò|sode}} == ภาษานอร์เวย์แบบบุ๊กมอล == === รากศัพท์ === จาก{{der|nb|grc|δόσις}} === คำนาม === {{nb-noun-m1}} # [[ปริมาณ]][[ยา]] === อ้างอิง === * {{R:nb:OB}} * {{R:nb:NAOB|dose_2}} == ภาษานอร์เวย์แบบนือนอสก์ == === รากศัพท์ === จาก{{der|nn|grc|δόσις}} === คำนาม === {{nn-noun-m1}} # [[ปริมาณ]][[ยา]] === อ้างอิง === * {{R:nn:OB}} == ภาษาบาลี == === รูปแบบอื่น === {{pi-alt|Thai=โทเส}} === คำนาม === {{head|pi|รูปนาม}} # {{inflection of|pi|dosa||loc|s}} # {{inflection of|pi|dosa||acc|p}} == ภาษาโปรตุเกส == === รากศัพท์ 1 === {{der|pt|la|dosis}}, จาก{{der|pt|grc|δόσις}} ==== การออกเสียง ==== * {{rhymes|pt|ɔzi|s=2}} {{pt-IPA|dóse}} ==== คำนาม ==== {{pt-noun|f}} # [[ปริมาณ]][[ยา]] # {{lb|pt|Portugal}} [[ส่วน]] {{gloss|ของอาหาร}} #: {{syn|pt|porção}} #: {{ux|pt|Uma meia '''dose''' de sardinhas assadas.|Half a '''portion''' of grilled sardines.}} # {{lb|pt|informal}} [[ฟิกซ์]] {{gloss|ยาเสพติดชนิดออกฤทธิ์ครั้งเดียว}} ==== อ่านเพิ่ม ==== * {{R:pt:Priberam}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} ==== อ่านเพิ่ม ==== * {{R:pt:Aulete}} == ภาษาตากาล็อก == {{number box|tl}} === รากศัพท์ === {{ety|tl|:bor|es:doce<t:twelve>|text=+|tree=1}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-dose.wav}} === เลข === {{tl-num|b=+}} # [[สิบสอง]] #: {{syn|tl|labindalawa}} ==== คำเกี่ยวข้อง ==== {{col3|tl|alas-dose|dose mil|dosena|dos|a-dose|dosyentos}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} {{C|tl|สิบสอง}} rkajyaztrtfb8wdpf9pgm8ymmtw93zr 5754362 5754361 2026-08-06T02:27:15Z Octahedron80 267 /* */ 5754362 wikitext text/x-wiki {{also/auto}} {{minitoc}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.|ทำไมเขาถึงให้ยาคุณแค่ขนาด 500 มิลลิกรัมครั้งเดียว? ปริมาณยาปฏิชีวนะที่ถูกต้องคือ ยาเม็ดขนาด 500 มิลลิกรัม วันละสองครั้ง เป็นเวลา 10 วัน}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare. |t=โรคที่เกิดจากแมงกานีสเป็นที่รู้จักกันมาตั้งแต่ศตวรรษที่ 19 เมื่อคนงานเหมืองที่สัมผัสกับแร่ที่มีแมงกานีสเป็นส่วนประกอบ {{...}} เริ่มมีอาการเซื่องซึม พูดจาไม่ชัด และมีพฤติกรรมเหมือนคนเมาสุรา พิษนี้ไม่สามารถรักษาให้หายได้ และในไม่ช้าก็จะนำไปสู่โรคจิตและเสียชีวิต ปัจจุบันคนงานสัมผัสกับแมงกานีสในปริมาณที่ต่ำกว่ามาก และโรคที่เกิดจากแมงกานีสจึงพบได้ยาก}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.|ความสงสัยอย่างมีเหตุผล}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”|t=“อย่างที่พวกคุณจำได้ ผมเพิ่งกลับมาลอนดอนหลังจากเดินทางไปทั่วมหาสมุทรอินเดีย มหาสมุทรแปซิฟิก และทะเลจีนมาประมาณหกปี เรียกได้ว่าได้สัมผัสกับตะวันออกอย่างเต็มที่เลย และผมก็เอาแต่เที่ยวเตร่ ขัดขวางการทำงานของพวกคุณ และบุกรุกบ้านของพวกคุณ ราวกับว่าผมได้รับภารกิจจากสวรรค์มาเพื่อทำให้พวกคุณเจริญแล้ว”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.|t=โอกาสที่จะได้เป็นพ่อคนนั้นเป็นเหมือนการเผชิญหน้าของความจริงที่คุกคามจะทำให้โลกแห่งความฝันของเขาล่มสลาย}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/ |t=คนที่ไม่ได้รับแสงแดดในปริมาณที่เพียงพอในเวลาที่เหมาะสมของวัน อาจมีสุขภาพที่แย่ลงได้}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast. |t=อย่าให้โรคติดต่อทางเพศสัมพันธ์แก่คนที่คุณรักมากที่สุด / ให้แยมส้มแก่เธอ... ให้ขนมปังปิ้งแก่เธอ}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful. |t=การรักษาโรคติดต่อทางเพศสัมพันธ์ด้วยวิธีนี้จะมีค่าใช้จ่ายสูงมากและเจ็บปวดอย่างเหลือเชื่อ}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.|มีการระบาดของโรคหวัดอยู่}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} [[ให้]]ยาในปริมาณที่วัดหรือตวงมาแล้ว #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."|t="เธอคิดว่าตัวเองตื่นเต็มที่แล้ว และฉันได้ให้ยาแก้ปวดชนิดฝิ่นแก่เธอ"}} # [[สั่ง]][[จ่าย]]ยา # {{lb|en|transitive}} แอบให้ยาที่ทำให้หมดสติ (แก่ผู้ที่ไม่เต็มใจ); ดมยา #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.|t=ฝ่ายจำเลยไม่เคยยอมรับว่าลูกความของตนได้ให้คลอรัล[ไฮเดรต]แก่จำเลย แต่เดธและแคมป์เบลกล่าวในตอนแรก—ระหว่างการสารภาพที่สถานีตำรวจซึ่งเป็นที่ถกเถียงกัน—ว่าแมคอลิสเตอร์ได้ใส่ยาลงในเครื่องดื่ม[ของเจนนี่ บอสชีเตอร์]}} # {{lb|en|transitive|dated}} [[แพร่]]เชื้อโรคติดต่อทางเพศสัมพันธ์ #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper. |t=เมื่อไม่นานมานี้ หนึ่งในพี่น้องสาวสีแดงของคุณแพร่เชื้อโรคติดต่อทางเพศสัมพันธ์ให้ฉันอย่างสาหัส}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}} #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}} |t=เมื่อรุ่งเช้ามาถึง ฉันก็หลับไปอย่างสนิท ซึ่งเป็นการหลับที่มากกว่าการหลับใด ๆ ตลอดทั้งคืน ในฝันฉันได้เห็นแม่น้ำที่ใสราวกับคริสตัล {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}} #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}|t=สำหรับฉันแล้ว มันเป็นประสบการณ์ที่วิเศษมาก การได้มาอยู่ที่นี่ พิงหมอนอยู่ในห้องที่แสงสลัว พยาบาลกลางคืนงีบหลับอยู่ข้างเตาผิง เสียงลมที่พัดไม่หยุดหย่อนดังแว่วมาแต่หู และเสียงหอนอยู่ข้างนอก {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} == ภาษาอาฟรีกานส์ == === คำนาม === {{head|af|รูปนาม}} # {{plural of|af|doos}} == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|doce}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|do|se}} === เลข === {{ceb-num|dóse|b=+}} # [[สิบสอง]] {{cln|ceb|cardinal numbers}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|doce}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|do|se}} === เลข === {{bcl-head|numeral|dóse|b=+}} # [[สิบสอง]] #: {{syn|bcl|kagduwa}} ==== คำเกี่ยวข้อง ==== {{col|bcl|dos|beynte}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-dose.ogg|a=France}} * {{audio|fr|LL-Q150 (fra)-DSwissK-dose.wav|a=<<Switzerland>> (<<Valais>>)}} * {{audio|fr|LL-Q150 (fra)-Poslovitch-dose.wav|a=<<France>> (<<Vosges>>)}} === รากศัพท์ 1 === จาก{{der|fr|la|dosis}}, จาก{{der|fr|grc|δόσις}}; {{doublet|fr|dot}} ==== คำนาม ==== {{fr-noun|f}} # [[สัดส่วน]] # {{l|en|dose}} ===== ลูกคำ ===== * {{l|fr|dose de cheval}} * {{l|fr|en avoir sa dose}} ===== คำเกี่ยวข้อง ===== * {{l|fr|doser}} ===== คำสืบทอด ===== {{top2}} * {{desc|lv|doza}} * {{desc|lt|dozė}} * {{desc|mk|доза}} * {{desc|no|-}} {{l|nb|dose}} * {{desc|pl|doza}} * {{desc|ro|doză}} * {{desc|ru|доза}} ** {{desc|be|доза|bor=1}} ** {{desc|bg|доза|bor=1}} ** {{desc|kk|доза|bor=1}} * {{desc|sh|doza|доза}} * {{desc|sl|doza}} * {{desc|tr|doz}} * {{desc|fa|دز|tr=doz}} * {{desc|uk|доза}} * {{desc|fy|doaze}} {{bottom}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{head|fr|รูปกริยา}} # {{inflection of|fr|doser||1//3|s|pres|ind//sub|;|2|s|impr}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|doce||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|doce}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|do|se}} === เลข === {{ilo-head|numeral|b=+}} # {{cln|ilo|cardinal numbers}} [[สิบสอง]] #: {{syn|ilo|sangapulo ket dua}} == ภาษาอิตาลี == === การออกเสียง === {{it-pr|dòse}} === คำนาม === {{it-noun|f}} # ปริมาณ[[ยา]] # [[ปริมาณ]], [[จำนวน]], [[ขนาด]] # [[ข้อเสนอ]] (ที่ดีหรือดีมาก) (gran dose-buona dose) ==== ลูกคำ ==== * {{l|it|dosare}} === คำสลับอักษร === * {{anagrams|it|a=deos|sedo|sedò|sode}} == ภาษานอร์เวย์แบบบุ๊กมอล == === รากศัพท์ === จาก{{der|nb|grc|δόσις}} === คำนาม === {{nb-noun-m1}} # [[ปริมาณ]][[ยา]] === อ้างอิง === * {{R:nb:OB}} * {{R:nb:NAOB|dose_2}} == ภาษานอร์เวย์แบบนือนอสก์ == === รากศัพท์ === จาก{{der|nn|grc|δόσις}} === คำนาม === {{nn-noun-m1}} # [[ปริมาณ]][[ยา]] === อ้างอิง === * {{R:nn:OB}} == ภาษาบาลี == === รูปแบบอื่น === {{pi-alt|Thai=โทเส}} === คำนาม === {{head|pi|รูปนาม}} # {{inflection of|pi|dosa||loc|s}} # {{inflection of|pi|dosa||acc|p}} == ภาษาโปรตุเกส == === รากศัพท์ 1 === {{der|pt|la|dosis}}, จาก{{der|pt|grc|δόσις}} ==== การออกเสียง ==== * {{rhymes|pt|ɔzi|s=2}} {{pt-IPA|dóse}} ==== คำนาม ==== {{pt-noun|f}} # [[ปริมาณ]][[ยา]] # {{lb|pt|Portugal}} [[ส่วน]] {{gloss|ของอาหาร}} #: {{syn|pt|porção}} #: {{ux|pt|Uma meia '''dose''' de sardinhas assadas.|Half a '''portion''' of grilled sardines.}} # {{lb|pt|informal}} [[ฟิกซ์]] {{gloss|ยาเสพติดชนิดออกฤทธิ์ครั้งเดียว}} ==== อ่านเพิ่ม ==== * {{R:pt:Priberam}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} ==== อ่านเพิ่ม ==== * {{R:pt:Aulete}} == ภาษาตากาล็อก == {{number box|tl}} === รากศัพท์ === {{ety|tl|:bor|es:doce<t:twelve>|text=+|tree=1}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-dose.wav}} === เลข === {{tl-num|b=+}} # [[สิบสอง]] #: {{syn|tl|labindalawa}} ==== คำเกี่ยวข้อง ==== {{col3|tl|alas-dose|dose mil|dosena|dos|a-dose|dosyentos}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} {{C|tl|สิบสอง}} m1skijv1v8y1yc2r00xhoi5yzb3bww2 5754363 5754362 2026-08-06T02:27:35Z Octahedron80 267 เรียงลำดับหัวเรื่องภาษา 5754363 wikitext text/x-wiki {{also/auto}} {{minitoc}} == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|doce}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|do|se}} === เลข === {{ceb-num|dóse|b=+}} # [[สิบสอง]] {{cln|ceb|cardinal numbers}} == ภาษาตากาล็อก == {{number box|tl}} === รากศัพท์ === {{ety|tl|:bor|es:doce<t:twelve>|text=+|tree=1}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-dose.wav}} === เลข === {{tl-num|b=+}} # [[สิบสอง]] #: {{syn|tl|labindalawa}} ==== คำเกี่ยวข้อง ==== {{col3|tl|alas-dose|dose mil|dosena|dos|a-dose|dosyentos}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} {{C|tl|สิบสอง}} == ภาษานอร์เวย์แบบนือนอสก์ == === รากศัพท์ === จาก{{der|nn|grc|δόσις}} === คำนาม === {{nn-noun-m1}} # [[ปริมาณ]][[ยา]] === อ้างอิง === * {{R:nn:OB}} == ภาษานอร์เวย์แบบบุ๊กมอล == === รากศัพท์ === จาก{{der|nb|grc|δόσις}} === คำนาม === {{nb-noun-m1}} # [[ปริมาณ]][[ยา]] === อ้างอิง === * {{R:nb:OB}} * {{R:nb:NAOB|dose_2}} == ภาษาบาลี == === รูปแบบอื่น === {{pi-alt|Thai=โทเส}} === คำนาม === {{head|pi|รูปนาม}} # {{inflection of|pi|dosa||loc|s}} # {{inflection of|pi|dosa||acc|p}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|doce}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|do|se}} === เลข === {{bcl-head|numeral|dóse|b=+}} # [[สิบสอง]] #: {{syn|bcl|kagduwa}} ==== คำเกี่ยวข้อง ==== {{col|bcl|dos|beynte}} == ภาษาโปรตุเกส == === รากศัพท์ 1 === {{der|pt|la|dosis}}, จาก{{der|pt|grc|δόσις}} ==== การออกเสียง ==== * {{rhymes|pt|ɔzi|s=2}} {{pt-IPA|dóse}} ==== คำนาม ==== {{pt-noun|f}} # [[ปริมาณ]][[ยา]] # {{lb|pt|Portugal}} [[ส่วน]] {{gloss|ของอาหาร}} #: {{syn|pt|porção}} #: {{ux|pt|Uma meia '''dose''' de sardinhas assadas.|Half a '''portion''' of grilled sardines.}} # {{lb|pt|informal}} [[ฟิกซ์]] {{gloss|ยาเสพติดชนิดออกฤทธิ์ครั้งเดียว}} ==== อ่านเพิ่ม ==== * {{R:pt:Priberam}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} ==== อ่านเพิ่ม ==== * {{R:pt:Aulete}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-dose.ogg|a=France}} * {{audio|fr|LL-Q150 (fra)-DSwissK-dose.wav|a=<<Switzerland>> (<<Valais>>)}} * {{audio|fr|LL-Q150 (fra)-Poslovitch-dose.wav|a=<<France>> (<<Vosges>>)}} === รากศัพท์ 1 === จาก{{der|fr|la|dosis}}, จาก{{der|fr|grc|δόσις}}; {{doublet|fr|dot}} ==== คำนาม ==== {{fr-noun|f}} # [[สัดส่วน]] # {{l|en|dose}} ===== ลูกคำ ===== * {{l|fr|dose de cheval}} * {{l|fr|en avoir sa dose}} ===== คำเกี่ยวข้อง ===== * {{l|fr|doser}} ===== คำสืบทอด ===== {{top2}} * {{desc|lv|doza}} * {{desc|lt|dozė}} * {{desc|mk|доза}} * {{desc|no|-}} {{l|nb|dose}} * {{desc|pl|doza}} * {{desc|ro|doză}} * {{desc|ru|доза}} ** {{desc|be|доза|bor=1}} ** {{desc|bg|доза|bor=1}} ** {{desc|kk|доза|bor=1}} * {{desc|sh|doza|доза}} * {{desc|sl|doza}} * {{desc|tr|doz}} * {{desc|fa|دز|tr=doz}} * {{desc|uk|доза}} * {{desc|fy|doaze}} {{bottom}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{head|fr|รูปกริยา}} # {{inflection of|fr|doser||1//3|s|pres|ind//sub|;|2|s|impr}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.|ทำไมเขาถึงให้ยาคุณแค่ขนาด 500 มิลลิกรัมครั้งเดียว? ปริมาณยาปฏิชีวนะที่ถูกต้องคือ ยาเม็ดขนาด 500 มิลลิกรัม วันละสองครั้ง เป็นเวลา 10 วัน}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare. |t=โรคที่เกิดจากแมงกานีสเป็นที่รู้จักกันมาตั้งแต่ศตวรรษที่ 19 เมื่อคนงานเหมืองที่สัมผัสกับแร่ที่มีแมงกานีสเป็นส่วนประกอบ {{...}} เริ่มมีอาการเซื่องซึม พูดจาไม่ชัด และมีพฤติกรรมเหมือนคนเมาสุรา พิษนี้ไม่สามารถรักษาให้หายได้ และในไม่ช้าก็จะนำไปสู่โรคจิตและเสียชีวิต ปัจจุบันคนงานสัมผัสกับแมงกานีสในปริมาณที่ต่ำกว่ามาก และโรคที่เกิดจากแมงกานีสจึงพบได้ยาก}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.|ความสงสัยอย่างมีเหตุผล}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”|t=“อย่างที่พวกคุณจำได้ ผมเพิ่งกลับมาลอนดอนหลังจากเดินทางไปทั่วมหาสมุทรอินเดีย มหาสมุทรแปซิฟิก และทะเลจีนมาประมาณหกปี เรียกได้ว่าได้สัมผัสกับตะวันออกอย่างเต็มที่เลย และผมก็เอาแต่เที่ยวเตร่ ขัดขวางการทำงานของพวกคุณ และบุกรุกบ้านของพวกคุณ ราวกับว่าผมได้รับภารกิจจากสวรรค์มาเพื่อทำให้พวกคุณเจริญแล้ว”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.|t=โอกาสที่จะได้เป็นพ่อคนนั้นเป็นเหมือนการเผชิญหน้าของความจริงที่คุกคามจะทำให้โลกแห่งความฝันของเขาล่มสลาย}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/ |t=คนที่ไม่ได้รับแสงแดดในปริมาณที่เพียงพอในเวลาที่เหมาะสมของวัน อาจมีสุขภาพที่แย่ลงได้}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast. |t=อย่าให้โรคติดต่อทางเพศสัมพันธ์แก่คนที่คุณรักมากที่สุด / ให้แยมส้มแก่เธอ... ให้ขนมปังปิ้งแก่เธอ}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful. |t=การรักษาโรคติดต่อทางเพศสัมพันธ์ด้วยวิธีนี้จะมีค่าใช้จ่ายสูงมากและเจ็บปวดอย่างเหลือเชื่อ}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.|มีการระบาดของโรคหวัดอยู่}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} [[ให้]]ยาในปริมาณที่วัดหรือตวงมาแล้ว #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."|t="เธอคิดว่าตัวเองตื่นเต็มที่แล้ว และฉันได้ให้ยาแก้ปวดชนิดฝิ่นแก่เธอ"}} # [[สั่ง]][[จ่าย]]ยา # {{lb|en|transitive}} แอบให้ยาที่ทำให้หมดสติ (แก่ผู้ที่ไม่เต็มใจ); ดมยา #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.|t=ฝ่ายจำเลยไม่เคยยอมรับว่าลูกความของตนได้ให้คลอรัล[ไฮเดรต]แก่จำเลย แต่เดธและแคมป์เบลกล่าวในตอนแรก—ระหว่างการสารภาพที่สถานีตำรวจซึ่งเป็นที่ถกเถียงกัน—ว่าแมคอลิสเตอร์ได้ใส่ยาลงในเครื่องดื่ม[ของเจนนี่ บอสชีเตอร์]}} # {{lb|en|transitive|dated}} [[แพร่]]เชื้อโรคติดต่อทางเพศสัมพันธ์ #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper. |t=เมื่อไม่นานมานี้ หนึ่งในพี่น้องสาวสีแดงของคุณแพร่เชื้อโรคติดต่อทางเพศสัมพันธ์ให้ฉันอย่างสาหัส}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}} #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}} |t=เมื่อรุ่งเช้ามาถึง ฉันก็หลับไปอย่างสนิท ซึ่งเป็นการหลับที่มากกว่าการหลับใด ๆ ตลอดทั้งคืน ในฝันฉันได้เห็นแม่น้ำที่ใสราวกับคริสตัล {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}} #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}|t=สำหรับฉันแล้ว มันเป็นประสบการณ์ที่วิเศษมาก การได้มาอยู่ที่นี่ พิงหมอนอยู่ในห้องที่แสงสลัว พยาบาลกลางคืนงีบหลับอยู่ข้างเตาผิง เสียงลมที่พัดไม่หยุดหย่อนดังแว่วมาแต่หู และเสียงหอนอยู่ข้างนอก {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} == ภาษาอาฟรีกานส์ == === คำนาม === {{head|af|รูปนาม}} # {{plural of|af|doos}} == ภาษาอิตาลี == === การออกเสียง === {{it-pr|dòse}} === คำนาม === {{it-noun|f}} # ปริมาณ[[ยา]] # [[ปริมาณ]], [[จำนวน]], [[ขนาด]] # [[ข้อเสนอ]] (ที่ดีหรือดีมาก) (gran dose-buona dose) ==== ลูกคำ ==== * {{l|it|dosare}} === คำสลับอักษร === * {{anagrams|it|a=deos|sedo|sedò|sode}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|doce||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|doce}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|do|se}} === เลข === {{ilo-head|numeral|b=+}} # {{cln|ilo|cardinal numbers}} [[สิบสอง]] #: {{syn|ilo|sangapulo ket dua}} 65exqto9xqxlkyqrp10ff6oxom8f3ox 5754364 5754363 2026-08-06T02:27:57Z Octahedron80 267 /* รากศัพท์ */ 5754364 wikitext text/x-wiki {{also/auto}} {{minitoc}} == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|doce}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|do|se}} === เลข === {{ceb-num|dóse|b=+}} # [[สิบสอง]] {{cln|ceb|cardinal numbers}} == ภาษาตากาล็อก == {{number box|tl}} === รากศัพท์ === {{ety|tl|:bor|es:doce<t:สิบสอง>|text=+|tree=1}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-dose.wav}} === เลข === {{tl-num|b=+}} # [[สิบสอง]] #: {{syn|tl|labindalawa}} ==== คำเกี่ยวข้อง ==== {{col3|tl|alas-dose|dose mil|dosena|dos|a-dose|dosyentos}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} {{C|tl|สิบสอง}} == ภาษานอร์เวย์แบบนือนอสก์ == === รากศัพท์ === จาก{{der|nn|grc|δόσις}} === คำนาม === {{nn-noun-m1}} # [[ปริมาณ]][[ยา]] === อ้างอิง === * {{R:nn:OB}} == ภาษานอร์เวย์แบบบุ๊กมอล == === รากศัพท์ === จาก{{der|nb|grc|δόσις}} === คำนาม === {{nb-noun-m1}} # [[ปริมาณ]][[ยา]] === อ้างอิง === * {{R:nb:OB}} * {{R:nb:NAOB|dose_2}} == ภาษาบาลี == === รูปแบบอื่น === {{pi-alt|Thai=โทเส}} === คำนาม === {{head|pi|รูปนาม}} # {{inflection of|pi|dosa||loc|s}} # {{inflection of|pi|dosa||acc|p}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|doce}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|do|se}} === เลข === {{bcl-head|numeral|dóse|b=+}} # [[สิบสอง]] #: {{syn|bcl|kagduwa}} ==== คำเกี่ยวข้อง ==== {{col|bcl|dos|beynte}} == ภาษาโปรตุเกส == === รากศัพท์ 1 === {{der|pt|la|dosis}}, จาก{{der|pt|grc|δόσις}} ==== การออกเสียง ==== * {{rhymes|pt|ɔzi|s=2}} {{pt-IPA|dóse}} ==== คำนาม ==== {{pt-noun|f}} # [[ปริมาณ]][[ยา]] # {{lb|pt|Portugal}} [[ส่วน]] {{gloss|ของอาหาร}} #: {{syn|pt|porção}} #: {{ux|pt|Uma meia '''dose''' de sardinhas assadas.|Half a '''portion''' of grilled sardines.}} # {{lb|pt|informal}} [[ฟิกซ์]] {{gloss|ยาเสพติดชนิดออกฤทธิ์ครั้งเดียว}} ==== อ่านเพิ่ม ==== * {{R:pt:Priberam}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} ==== อ่านเพิ่ม ==== * {{R:pt:Aulete}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-dose.ogg|a=France}} * {{audio|fr|LL-Q150 (fra)-DSwissK-dose.wav|a=<<Switzerland>> (<<Valais>>)}} * {{audio|fr|LL-Q150 (fra)-Poslovitch-dose.wav|a=<<France>> (<<Vosges>>)}} === รากศัพท์ 1 === จาก{{der|fr|la|dosis}}, จาก{{der|fr|grc|δόσις}}; {{doublet|fr|dot}} ==== คำนาม ==== {{fr-noun|f}} # [[สัดส่วน]] # {{l|en|dose}} ===== ลูกคำ ===== * {{l|fr|dose de cheval}} * {{l|fr|en avoir sa dose}} ===== คำเกี่ยวข้อง ===== * {{l|fr|doser}} ===== คำสืบทอด ===== {{top2}} * {{desc|lv|doza}} * {{desc|lt|dozė}} * {{desc|mk|доза}} * {{desc|no|-}} {{l|nb|dose}} * {{desc|pl|doza}} * {{desc|ro|doză}} * {{desc|ru|доза}} ** {{desc|be|доза|bor=1}} ** {{desc|bg|доза|bor=1}} ** {{desc|kk|доза|bor=1}} * {{desc|sh|doza|доза}} * {{desc|sl|doza}} * {{desc|tr|doz}} * {{desc|fa|دز|tr=doz}} * {{desc|uk|доза}} * {{desc|fy|doaze}} {{bottom}} === รากศัพท์ 2 === {{nonlemma}} ==== คำกริยา ==== {{head|fr|รูปกริยา}} # {{inflection of|fr|doser||1//3|s|pres|ind//sub|;|2|s|impr}} === อ่านเพิ่ม === * {{R:fr:TLFi}} == ภาษาอังกฤษ == === รากศัพท์ 1 === {{root|en|ine-pro|*deh₃-}} {{bor+|en|frm|dose}}, จาก{{der|en|la-lat|dosis}}, จาก{{der|en|grc|δόσις||ส่วนหนึ่ง(ของยา)ที่สั่งจ่าย|lit=สิ่งที่ให้}}, {{w|กาเลน}}และแพทย์ชาวกรีกคนอื่น ๆ ใช้คำนี้เพื่อหมายถึงปริมาณยา, จาก{{m|grc|δίδωμι||ให้}}; ส่วนใหญ่ถูกแทนที่ด้วย{{noncog|en|drench}}; {{doublet|en|doos}} ==== การออกเสียง ==== * {{IPA|en|/ˈdəʊ̯s/|/ˈdɵ̞ʊ̯s/|a=RP}} * {{IPA|en|/ˈdoʊ̯s/|/ˈdɔʊ̯s/|a=GA,CA}} * {{IPA|en|/ˈdoʊ̯s/|[ˈdeʊ̯s]|/ˈdɔʊ̯s/|[ˈdɛʊ̯s]|a=California|q2=California Vowel Shift|q4=California Vowel Shift}} ** {{audio|en|en-us-dose.ogg|a=Southern California|IPA=[dɛɯ̟s]}} * {{IPA|en|/ˈdəʉ̯s/|/ˈdɐʉ̯s/|a=AU|q2=some speakers}} * {{IPA|en|/ˈdɐʉ̯s/|a=NZ}} * {{rhymes|en|əʊs|s=1}} * {{hyph|en|dose}} ==== คำนาม ==== {{en-noun}} # [[ปริมาณ]][[ยา]]ที่[[วัด]]หรือ[[ตวง]]ไว้สำหรับ[[รับประทาน]]ในแต่ละครั้ง #: {{ux|en|Why did he give you only a single 500 mg '''dose'''? The correct dosage of this antibiotic is one 500 mg tablet twice a day for 10 days.|ทำไมเขาถึงให้ยาคุณแค่ขนาด 500 มิลลิกรัมครั้งเดียว? ปริมาณยาปฏิชีวนะที่ถูกต้องคือ ยาเม็ดขนาด 500 มิลลิกรัม วันละสองครั้ง เป็นเวลา 10 วัน}} # ปริมาณของสารตัวกระทำ (ไม่จำเป็นต้องออกฤทธิ์เสมอไป), สาร, หรือรังสี ที่ได้รับหรือสัมผัสในเวลาใดเวลาหนึ่ง #* {{quote-journal|en|date=2014-04-21|volume=411|issue=8884|magazine=w:The Economist |title=[http://www.economist.com/news/science-and-technology/21601233-exploring-link-between-manganese-and-parkinsons-disease-subtle-effects Subtle effects] |passage=Manganism has been known about since the 19th century, when miners exposed to ores containing manganese{{...}}began to totter, slur their speech and behave like someone inebriated. The poisoning was irreversible, and soon ended in psychosis and death. Nowadays workers are exposed to far lower '''doses''' and manganism is rare. |t=โรคที่เกิดจากแมงกานีสเป็นที่รู้จักกันมาตั้งแต่ศตวรรษที่ 19 เมื่อคนงานเหมืองที่สัมผัสกับแร่ที่มีแมงกานีสเป็นส่วนประกอบ {{...}} เริ่มมีอาการเซื่องซึม พูดจาไม่ชัด และมีพฤติกรรมเหมือนคนเมาสุรา พิษนี้ไม่สามารถรักษาให้หายได้ และในไม่ช้าก็จะนำไปสู่โรคจิตและเสียชีวิต ปัจจุบันคนงานสัมผัสกับแมงกานีสในปริมาณที่ต่ำกว่ามาก และโรคที่เกิดจากแมงกานีสจึงพบได้ยาก}} # {{lb|en|figurative|dated}} สิ่งที่[[ไม่พึงประสงค์]]ใด ๆ ที่ต้องกำจัดออกไป #: {{syn|en|fill<qq:as in have one's fill>}} # {{lb|en|figurative}} การวัดผลที่ดีหรือประสบการณ์ที่ยาวนานเกี่ยวกับบางสิ่งบางอย่าง #: {{ux|en|a healthy '''dose''' of skepticism.|ความสงสัยอย่างมีเหตุผล}} #* {{RQ:Conrad Heart of Darkness|page=197|passage=“I had then, as you remember, just returned to London after a lot of Indian Ocean, Pacific, China Seas - a regular '''dose''' of the East - six years or so, and I was loafing about, hindering you fellows in your work and invading your homes, just as though I had got a heavenly mission to civilise you.”|t=“อย่างที่พวกคุณจำได้ ผมเพิ่งกลับมาลอนดอนหลังจากเดินทางไปทั่วมหาสมุทรอินเดีย มหาสมุทรแปซิฟิก และทะเลจีนมาประมาณหกปี เรียกได้ว่าได้สัมผัสกับตะวันออกอย่างเต็มที่เลย และผมก็เอาแต่เที่ยวเตร่ ขัดขวางการทำงานของพวกคุณ และบุกรุกบ้านของพวกคุณ ราวกับว่าผมได้รับภารกิจจากสวรรค์มาเพื่อทำให้พวกคุณเจริญแล้ว”}} #* {{quote-book|en|title=Queer Pulp|author=Susan Stryker|year=2001|page=78|text=The prospect of becoming a father is a '''dose''' of reality that threatens to bring his dream world crashing down.|t=โอกาสที่จะได้เป็นพ่อคนนั้นเป็นเหมือนการเผชิญหน้าของความจริงที่คุกคามจะทำให้โลกแห่งความฝันของเขาล่มสลาย}} #* {{quote-journal|en|journal=w:TIME|title=Your Bedroom Probably Isn't Dark Enough|date=Dec 9 2025|author=Veronique Greenwood |text=People who don't get their daily '''dose''' of light at the right time of day can end up with worse health. |url=https://time.com/7339298/dark-bedroom-sleep-night-heart-health/ |t=คนที่ไม่ได้รับแสงแดดในปริมาณที่เพียงพอในเวลาที่เหมาะสมของวัน อาจมีสุขภาพที่แย่ลงได้}} # {{lb|en|dated}} [[โรคติดต่อ]]ทาง[[เพศสัมพันธ์]] #* {{quote-song|en|year=1972|author=w:Shel Silverstein|title=Don't Give A Dose to the One You Love Most |passage=Don't give a '''dose''' to the one you love most. / Give her some marmalade... give her some toast. |t=อย่าให้โรคติดต่อทางเพศสัมพันธ์แก่คนที่คุณรักมากที่สุด / ให้แยมส้มแก่เธอ... ให้ขนมปังปิ้งแก่เธอ}} #* {{quote-book|en|year=1978|author=w:Lawrence Durrell|title=Livia|publisher=Faber & Faber|year_published=1992|series=Avignon Quintet|page=382 |passage=It would be very expensive to cure a '''dose''' here, as well as unbelievably painful. |t=การรักษาโรคติดต่อทางเพศสัมพันธ์ด้วยวิธีนี้จะมีค่าใช้จ่ายสูงมากและเจ็บปวดอย่างเหลือเชื่อ}} # {{lb|en|Ireland|colloquial}} [[หวัด]]; [[โรค]]จาก[[ไวรัส]]ที่พบได้ทั่วไปใน[[โพรงจมูก]] บางครั้งอาจมี[[ไข้]]ร่วมด้วย #: {{ux|en|There's a '''dose''' going round.|มีการระบาดของโรคหวัดอยู่}} ===== ลูกคำ ===== {{col|en|collapse=n|absorbed dose|dosemeter|dosology|interdose|isodose|macrodose|megadose|multidose|paleodose|postdose|predose|underdose|banana equivalent dose|booster dose|dose of one's own medicine|dose rate|effective dose|elephant dose|flight-time equivalent dose|heroic dose|dose dumping|funny as a dose of the clap|lethal dose|like a dose of salts|black dose|low-dose CT scanning|metered-dose inhaler|radiation dose|semilethal dose|the dose makes the poison|committed dose|dose equivalent|equivalent dose|under-dose|zero-dose|hot dose}} ===== คำเกี่ยวข้อง ===== * {{l|en|dosage}} ===== คำสืบทอด ===== * {{desc|ms|dos|bor=1}} * {{desc|ta|டோஸ்|bor=1}} ==== คำกริยา ==== {{en-verb}} # {{lb|en|transitive}} [[ให้]]ยาในปริมาณที่วัดหรือตวงมาแล้ว #* {{quote-book|en|year=1871|author=w:George Meredith|title=w:The Adventures of Harry Richmond|page=270|passage="She thought herself broad awake, and I have '''dosed''' her with an opiate."|t="เธอคิดว่าตัวเองตื่นเต็มที่แล้ว และฉันได้ให้ยาแก้ปวดชนิดฝิ่นแก่เธอ"}} # [[สั่ง]][[จ่าย]]ยา # {{lb|en|transitive}} แอบให้ยาที่ทำให้หมดสติ (แก่ผู้ที่ไม่เต็มใจ); ดมยา #* {{quote-book|en|year=2016|author=Pamela Donovan|title=Drink Spiking and Predatory Drugging: A Modern History|page=71|passage=The defense never conceded that their clients had administered chloral [hydrate], but Death and Campbell said initially—during their contested station house confessions—that McAlister had '''dosed''' [Jennie Bosschieter's] drink.|t=ฝ่ายจำเลยไม่เคยยอมรับว่าลูกความของตนได้ให้คลอรัล[ไฮเดรต]แก่จำเลย แต่เดธและแคมป์เบลกล่าวในตอนแรก—ระหว่างการสารภาพที่สถานีตำรวจซึ่งเป็นที่ถกเถียงกัน—ว่าแมคอลิสเตอร์ได้ใส่ยาลงในเครื่องดื่ม[ของเจนนี่ บอสชีเตอร์]}} # {{lb|en|transitive|dated}} [[แพร่]]เชื้อโรคติดต่อทางเพศสัมพันธ์ #* {{quote-text|en|year=1977|author=w:The White Buffalo|title=Wild Bill Hickok |passage=Sometime back, one of your scarlet sisters '''dosed''' me proper. |t=เมื่อไม่นานมานี้ หนึ่งในพี่น้องสาวสีแดงของคุณแพร่เชื้อโรคติดต่อทางเพศสัมพันธ์ให้ฉันอย่างสาหัส}} ===== ลูกคำ ===== {{col|en|microdose|doseable}} === รากศัพท์ 2 === ==== คำนาม ==== {{en-noun}} # {{archaic form of|en|doze}} #* {{quote-text|en|year=1839|author=Benjamin Abbott|title=Experience and Gospel Labors of the Rev. Benjamin Abbott |passage=Just at the dawning of the day, I fell into a '''dose''' more like sleep than any I had during the whole night, in which I dreamed that I saw a river as clear as crystal {{...}} |t=เมื่อรุ่งเช้ามาถึง ฉันก็หลับไปอย่างสนิท ซึ่งเป็นการหลับที่มากกว่าการหลับใด ๆ ตลอดทั้งคืน ในฝันฉันได้เห็นแม่น้ำที่ใสราวกับคริสตัล {{...}}}} ==== คำกริยา ==== {{en-verb}} # {{archaic form of|en|doze}} #* {{quote-book|en|year=1918|author=William Henry Hudson|title=Far Away And Long Ago|passage=It was to me a marvellous experience; to be here, propped up with pillows in a dimly-lighted room, the night-nurse idly '''dosing''' by the fire; the sound of the everlasting wind in my ears, howling outside {{...}}|t=สำหรับฉันแล้ว มันเป็นประสบการณ์ที่วิเศษมาก การได้มาอยู่ที่นี่ พิงหมอนอยู่ในห้องที่แสงสลัว พยาบาลกลางคืนงีบหลับอยู่ข้างเตาผิง เสียงลมที่พัดไม่หยุดหย่อนดังแว่วมาแต่หู และเสียงหอนอยู่ข้างนอก {{...}}}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deos|deso|does|odes}} {{C|en|Medicine|Radioactivity}} == ภาษาอาฟรีกานส์ == === คำนาม === {{head|af|รูปนาม}} # {{plural of|af|doos}} == ภาษาอิตาลี == === การออกเสียง === {{it-pr|dòse}} === คำนาม === {{it-noun|f}} # ปริมาณ[[ยา]] # [[ปริมาณ]], [[จำนวน]], [[ขนาด]] # [[ข้อเสนอ]] (ที่ดีหรือดีมาก) (gran dose-buona dose) ==== ลูกคำ ==== * {{l|it|dosare}} === คำสลับอักษร === * {{anagrams|it|a=deos|sedo|sedò|sode}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|doce||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|doce}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|do|se}} === เลข === {{ilo-head|numeral|b=+}} # {{cln|ilo|cardinal numbers}} [[สิบสอง]] #: {{syn|ilo|sangapulo ket dua}} pk2f4dfb17a4nem36b8xpsjhdlm6v2n ชม 0 43596 5754332 5375522 2026-08-06T00:27:15Z Alifshinobi 397 /* ภาษาไทย */ 5754332 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ 1 === เทียบ{{cog|ltc|-}} {{ltc-l|諂|id=1}}; ร่วมเชื้อสายกับ{{cog|nod|ᨩᩫ᩠ᨾ}}, {{cog|kkh|ᨩᩫ᩠ᨾ}}, {{cog|lo|ຊົມ}}, {{cog|khb|ᦋᦳᧄ}}, {{cog|shn|ၸူမ်း}} ==== การออกเสียง ==== {{th-pron}} ==== คำกริยา ==== {{th-verb}} # {{lb|th|สกรรม}} [[สรรเสริญ]], [[ยกย่อง]] #: {{syn|th|ชมเชย}} === รากศัพท์ 2 === ร่วมเชื้อสายกับ{{cog|nod|ᨩᩫ᩠ᨾ}}, {{cog|lo|ຊົມ}} ==== การออกเสียง ==== {{th-pron}} ==== คำกริยา ==== {{th-verb}} # {{lb|th|สกรรม}} [[ดู]] ([[ใช้]][[ใน]][[ที่]][[สุภาพ]]) #: {{ux|th|เชิญ'''ชม'''ของในร้าน}} # {{lb|th|สกรรม}} [[ดู]][[เพื่อ]][[ให้]][[เกิด]][[ความ]][[เพลิดเพลินใจ]][[หรือ]][[ชื่นใจ]] #: {{ux|th|'''ชม'''สวน}} #: {{ux|th|'''ชม'''นกชมไม้}} ==== คำนาม ==== {{th-noun}} # [[ชื่อ]][[เพลง]][[ไทย]][[จำพวก]][[หนึ่ง]] [[มี]][[ชื่อ]][[ขึ้น]][[ต้น]][[ด้วย]][[คำ]][[ว่า]] ชม #: {{ux|th|'''ชม'''ดง}} #: {{ux|th|'''ชม'''ตลาด}} === รากศัพท์ 3 === ==== การออกเสียง ==== {{th-pron|ชอ-มอ}} ==== คำวิสามานยนาม ==== {{th-proper noun}} # {{initialism of|th|เชียงใหม่}} ==== ดูเพิ่ม ==== {{col4|th|ชม.}} {{topics|th|เชียงใหม่}} 5oalj4t8gvf0hufn4989s7r7mc9x9xz คั่ง 0 45438 5754330 5030611 2026-08-05T21:16:41Z Alifshinobi 397 /* ภาษาไทย */ 5754330 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === รากศัพท์ === ร่วมเชื้อสายกับ{{cog|lo|ຄັ່ງ}}, {{cog|nod|ᨣᩢ᩠᩵ᨦ}}, {{cog|kkh|ᨣᩢ᩠᩵ᨦ}}, {{cog|khb|ᦅᧂᧈ}} === การออกเสียง === {{th-pron}} === คำกริยา === {{th-verb}} # {{lb|th|อกรรม}} [[ออ]][[กัน]], [[ประดัง]]กัน # {{lb|th|อกรรม}} [[ตก]][[ค้าง]][[อยู่]] #: {{ux|th|เลือด'''คั่ง'''ในสมอง}} == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/xaŋ˦˨/|a=เชียงใหม่}} === คำนาม === {{nod-noun}} # {{alternative form of|nod|ᨣᩕᩢ᩠᩵ᨦ}} banf5zn00p76mckiisjpanc6egtlyyy qu 0 47505 5754532 1877616 2026-08-06T09:10:44Z OctraBot 3198 เก็บกวาด 5754532 wikitext text/x-wiki {{also/auto}} == ภาษาร่วม == === รากศัพท์ === {{clip|mul|en:'''Qu'''echua,es:'''qu'''echua}}, จาก{{der|mul|qu|qhichwa}}. === สัญลักษณ์ === {{mul-symbol}} # {{ISO 639|1}} === ดูเพิ่ม === * {{langcat}} == ภาษาอังกฤษ == {{wp|[[District (China)|Districts in China]]}} === รากศัพท์ === จาก{{bor|en|cmn-pinyin|-}}การถอดเป็นอักษรโรมันของ {{bor|en|cmn|區}} === คำนาม === {{en-noun}} # {{lb|en|China}} หน่วยการปกครองย่อยของ[[จีน]] เทียบเท่ากับ[[เขต]] (district) ซึ่งแตกต่างจาก[[เทศมณฑล]] (county, [[xian]]) #* {{quote-book |en |year=1973 |title=Survey of China Mainland Press |url=https://books.google.com/books?id=q5xDAQAAIAAJ |issue=5308-5345 |ISSN=0499-0390 |OCLC=1695580 |page=52 |text={{...}}the Party committee of Peiyuanmen<!--北院門--> commune of Lienhu '''ch'u''' in Sian municipality has since the year before last set up outside-school cultural activity centers in the commune headquarters and in various neighborhood committees. |brackets=on}} #* {{quote-book |en |year=1990 |author=Barrett L. McCormick |chapter=Elections to Local People's Congresses |title=Political Reform in Post-Mao China: Democracy and Bureaucracy in a Leninist State |url=https://archive.org/details/politicalreformi0000mcco/ |publisher=w:University of California Press |ISBN=0-520-06765-7 |LCCN=89-20440 |OCLC=20526428 |page=138 |pageurl=https://archive.org/details/politicalreformi0000mcco/page/138/ |text=At the time of the elections (1980) Nanjing was subdivided into three suburban counties (''xian'') and nine urban districts ('''''qu''''').}} #* {{quote-book |en |year=2009 |author=Roger Des Forges |chapter=Tales of Three City Walls in China's Central Plain |title=Chinese Walls in Time and Space: A Multidisciplinary Perspective |url= |ISBN=978-1-933947-14-3 |ISSN=1050-2955 |LCCN=2009925854 |OCLC=762303701 |pages=60–61 |pageurl=https://books.google.com/books?id=s4WDEAAAQBAJ&pg=PA60 |text=As we have seen, the people of Guide/Shangqiu have traced the history of their city back well before the Ming and especially to the Han period. The People's Republic has recognized that heritage by naming the district subordinate to Shangqiu city the Liangyuan '''qu''' (Liang Garden District) and the district subordinate to Guide the Suiyang '''qu''' (Suiyang District) (see Map 3).}} == ภาษาอาเซอร์ไบจาน == {{az-variant|гу|قو}} === รากศัพท์ === จาก{{inh|az|trk-cmn-pro|*quɣu|t=หงส์}}, จาก{{inh|az|trk-pro|*kugu|t=หงส์}} === การออกเสียง === * {{IPA|az|[ɡu]}} * {{hyphenation|az|qu}} === คำนาม === {{az-noun}} # [[หงส์]] #: {{syn|az|qu quşu}} ==== การผันรูป ==== {{az-decl-noun|u}} === อ้างอิง === * {{R:az:ADIL}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} === คำนาม === {{fr-noun|m}} # {{alternative spelling of|fr|ku}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|戌}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|qū}} # {{nonstandard spelling of|cmn|sc=Latn|qú}} # {{nonstandard spelling of|cmn|sc=Latn|qǔ}} # {{nonstandard spelling of|cmn|sc=Latn|qù}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาสเปน == === ตัวอักษร === {{head|es|ตัวอักษร|lower case||upper case|QU|mixed case|Qu}} # [[ทวิอักษร]]ที่ประกอบขึ้นจาก {{l|es|q}} และ {{l|es|u}} === อ่านเพิ่ม === * {{R:es:DRAE}} t119pmow2v7171av43fkutkdml3mm56 5754533 5754532 2026-08-06T09:11:39Z OctraBot 3198 /* รากศัพท์ */ 5754533 wikitext text/x-wiki {{also/auto}} == ภาษาร่วม == === รากศัพท์ === {{clip|mul|en:'''Qu'''echua,es:'''qu'''echua}}, จาก{{der|mul|qu|qhichwa}}. === สัญลักษณ์ === {{mul-symbol}} # {{ISO 639|1}} === ดูเพิ่ม === * {{langcat}} == ภาษาอังกฤษ == {{wp|[[District (China)|Districts in China]]}} === รากศัพท์ === จาก{{bor|en|cmn-pinyin|-}}ของ {{bor|en|cmn|區}} === คำนาม === {{en-noun}} # {{lb|en|China}} หน่วยการปกครองย่อยของ[[จีน]] เทียบเท่ากับ[[เขต]] (district) ซึ่งแตกต่างจาก[[เทศมณฑล]] (county, [[xian]]) #* {{quote-book |en |year=1973 |title=Survey of China Mainland Press |url=https://books.google.com/books?id=q5xDAQAAIAAJ |issue=5308-5345 |ISSN=0499-0390 |OCLC=1695580 |page=52 |text={{...}}the Party committee of Peiyuanmen<!--北院門--> commune of Lienhu '''ch'u''' in Sian municipality has since the year before last set up outside-school cultural activity centers in the commune headquarters and in various neighborhood committees. |brackets=on}} #* {{quote-book |en |year=1990 |author=Barrett L. McCormick |chapter=Elections to Local People's Congresses |title=Political Reform in Post-Mao China: Democracy and Bureaucracy in a Leninist State |url=https://archive.org/details/politicalreformi0000mcco/ |publisher=w:University of California Press |ISBN=0-520-06765-7 |LCCN=89-20440 |OCLC=20526428 |page=138 |pageurl=https://archive.org/details/politicalreformi0000mcco/page/138/ |text=At the time of the elections (1980) Nanjing was subdivided into three suburban counties (''xian'') and nine urban districts ('''''qu''''').}} #* {{quote-book |en |year=2009 |author=Roger Des Forges |chapter=Tales of Three City Walls in China's Central Plain |title=Chinese Walls in Time and Space: A Multidisciplinary Perspective |url= |ISBN=978-1-933947-14-3 |ISSN=1050-2955 |LCCN=2009925854 |OCLC=762303701 |pages=60–61 |pageurl=https://books.google.com/books?id=s4WDEAAAQBAJ&pg=PA60 |text=As we have seen, the people of Guide/Shangqiu have traced the history of their city back well before the Ming and especially to the Han period. The People's Republic has recognized that heritage by naming the district subordinate to Shangqiu city the Liangyuan '''qu''' (Liang Garden District) and the district subordinate to Guide the Suiyang '''qu''' (Suiyang District) (see Map 3).}} == ภาษาอาเซอร์ไบจาน == {{az-variant|гу|قو}} === รากศัพท์ === จาก{{inh|az|trk-cmn-pro|*quɣu|t=หงส์}}, จาก{{inh|az|trk-pro|*kugu|t=หงส์}} === การออกเสียง === * {{IPA|az|[ɡu]}} * {{hyphenation|az|qu}} === คำนาม === {{az-noun}} # [[หงส์]] #: {{syn|az|qu quşu}} ==== การผันรูป ==== {{az-decl-noun|u}} === อ้างอิง === * {{R:az:ADIL}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} === คำนาม === {{fr-noun|m}} # {{alternative spelling of|fr|ku}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|戌}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|qū}} # {{nonstandard spelling of|cmn|sc=Latn|qú}} # {{nonstandard spelling of|cmn|sc=Latn|qǔ}} # {{nonstandard spelling of|cmn|sc=Latn|qù}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาสเปน == === ตัวอักษร === {{head|es|ตัวอักษร|lower case||upper case|QU|mixed case|Qu}} # [[ทวิอักษร]]ที่ประกอบขึ้นจาก {{l|es|q}} และ {{l|es|u}} === อ่านเพิ่ม === * {{R:es:DRAE}} bfgykqqpx5d27rm6w29nmvrux4zjvs2 5754535 5754533 2026-08-06T09:12:56Z OctraBot 3198 เรียงลำดับหัวเรื่องภาษา 5754535 wikitext text/x-wiki {{also/auto}} == ภาษาร่วม == === รากศัพท์ === {{clip|mul|en:'''Qu'''echua,es:'''qu'''echua}}, จาก{{der|mul|qu|qhichwa}}. === สัญลักษณ์ === {{mul-symbol}} # {{ISO 639|1}} === ดูเพิ่ม === * {{langcat}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|戌}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|qū}} # {{nonstandard spelling of|cmn|sc=Latn|qú}} # {{nonstandard spelling of|cmn|sc=Latn|qǔ}} # {{nonstandard spelling of|cmn|sc=Latn|qù}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} === คำนาม === {{fr-noun|m}} # {{alternative spelling of|fr|ku}} == ภาษาสเปน == === ตัวอักษร === {{head|es|ตัวอักษร|lower case||upper case|QU|mixed case|Qu}} # [[ทวิอักษร]]ที่ประกอบขึ้นจาก {{l|es|q}} และ {{l|es|u}} === อ่านเพิ่ม === * {{R:es:DRAE}} == ภาษาอังกฤษ == {{wp|[[District (China)|Districts in China]]}} === รากศัพท์ === จาก{{bor|en|cmn-pinyin|-}}ของ {{bor|en|cmn|區}} === คำนาม === {{en-noun}} # {{lb|en|China}} หน่วยการปกครองย่อยของ[[จีน]] เทียบเท่ากับ[[เขต]] (district) ซึ่งแตกต่างจาก[[เทศมณฑล]] (county, [[xian]]) #* {{quote-book |en |year=1973 |title=Survey of China Mainland Press |url=https://books.google.com/books?id=q5xDAQAAIAAJ |issue=5308-5345 |ISSN=0499-0390 |OCLC=1695580 |page=52 |text={{...}}the Party committee of Peiyuanmen<!--北院門--> commune of Lienhu '''ch'u''' in Sian municipality has since the year before last set up outside-school cultural activity centers in the commune headquarters and in various neighborhood committees. |brackets=on}} #* {{quote-book |en |year=1990 |author=Barrett L. McCormick |chapter=Elections to Local People's Congresses |title=Political Reform in Post-Mao China: Democracy and Bureaucracy in a Leninist State |url=https://archive.org/details/politicalreformi0000mcco/ |publisher=w:University of California Press |ISBN=0-520-06765-7 |LCCN=89-20440 |OCLC=20526428 |page=138 |pageurl=https://archive.org/details/politicalreformi0000mcco/page/138/ |text=At the time of the elections (1980) Nanjing was subdivided into three suburban counties (''xian'') and nine urban districts ('''''qu''''').}} #* {{quote-book |en |year=2009 |author=Roger Des Forges |chapter=Tales of Three City Walls in China's Central Plain |title=Chinese Walls in Time and Space: A Multidisciplinary Perspective |url= |ISBN=978-1-933947-14-3 |ISSN=1050-2955 |LCCN=2009925854 |OCLC=762303701 |pages=60–61 |pageurl=https://books.google.com/books?id=s4WDEAAAQBAJ&pg=PA60 |text=As we have seen, the people of Guide/Shangqiu have traced the history of their city back well before the Ming and especially to the Han period. The People's Republic has recognized that heritage by naming the district subordinate to Shangqiu city the Liangyuan '''qu''' (Liang Garden District) and the district subordinate to Guide the Suiyang '''qu''' (Suiyang District) (see Map 3).}} == ภาษาอาเซอร์ไบจาน == {{az-variant|гу|قو}} === รากศัพท์ === จาก{{inh|az|trk-cmn-pro|*quɣu|t=หงส์}}, จาก{{inh|az|trk-pro|*kugu|t=หงส์}} === การออกเสียง === * {{IPA|az|[ɡu]}} * {{hyphenation|az|qu}} === คำนาม === {{az-noun}} # [[หงส์]] #: {{syn|az|qu quşu}} ==== การผันรูป ==== {{az-decl-noun|u}} === อ้างอิง === * {{R:az:ADIL}} jr64z686yo1ews5sqhspedk0yhkte5x 5754536 5754535 2026-08-06T09:13:27Z OctraBot 3198 5754536 wikitext text/x-wiki {{also/auto}} == ภาษาร่วม == === รากศัพท์ === {{clip|mul|en:'''Qu'''echua,es:'''qu'''echua}}, จาก{{der|mul|qu|qhichwa}} === สัญลักษณ์ === {{mul-symbol}} # {{ISO 639|1}} === ดูเพิ่ม === * {{langcat}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|戌}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|qū}} # {{nonstandard spelling of|cmn|sc=Latn|qú}} # {{nonstandard spelling of|cmn|sc=Latn|qǔ}} # {{nonstandard spelling of|cmn|sc=Latn|qù}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} === คำนาม === {{fr-noun|m}} # {{alternative spelling of|fr|ku}} == ภาษาสเปน == === ตัวอักษร === {{head|es|ตัวอักษร|lower case||upper case|QU|mixed case|Qu}} # [[ทวิอักษร]]ที่ประกอบขึ้นจาก {{l|es|q}} และ {{l|es|u}} === อ่านเพิ่ม === * {{R:es:DRAE}} == ภาษาอังกฤษ == {{wp|[[en:District (China)|Districts in China]]}} === รากศัพท์ === จาก{{bor|en|cmn-pinyin|-}}ของ {{bor|en|cmn|區}} === คำนาม === {{en-noun}} # {{lb|en|China}} หน่วยการปกครองย่อยของ[[จีน]] เทียบเท่ากับ[[เขต]] (district) ซึ่งแตกต่างจาก[[เทศมณฑล]] (county, [[xian]]) #* {{quote-book |en |year=1973 |title=Survey of China Mainland Press |url=https://books.google.com/books?id=q5xDAQAAIAAJ |issue=5308-5345 |ISSN=0499-0390 |OCLC=1695580 |page=52 |text={{...}}the Party committee of Peiyuanmen<!--北院門--> commune of Lienhu '''ch'u''' in Sian municipality has since the year before last set up outside-school cultural activity centers in the commune headquarters and in various neighborhood committees. |brackets=on}} #* {{quote-book |en |year=1990 |author=Barrett L. McCormick |chapter=Elections to Local People's Congresses |title=Political Reform in Post-Mao China: Democracy and Bureaucracy in a Leninist State |url=https://archive.org/details/politicalreformi0000mcco/ |publisher=w:University of California Press |ISBN=0-520-06765-7 |LCCN=89-20440 |OCLC=20526428 |page=138 |pageurl=https://archive.org/details/politicalreformi0000mcco/page/138/ |text=At the time of the elections (1980) Nanjing was subdivided into three suburban counties (''xian'') and nine urban districts ('''''qu''''').}} #* {{quote-book |en |year=2009 |author=Roger Des Forges |chapter=Tales of Three City Walls in China's Central Plain |title=Chinese Walls in Time and Space: A Multidisciplinary Perspective |url= |ISBN=978-1-933947-14-3 |ISSN=1050-2955 |LCCN=2009925854 |OCLC=762303701 |pages=60–61 |pageurl=https://books.google.com/books?id=s4WDEAAAQBAJ&pg=PA60 |text=As we have seen, the people of Guide/Shangqiu have traced the history of their city back well before the Ming and especially to the Han period. The People's Republic has recognized that heritage by naming the district subordinate to Shangqiu city the Liangyuan '''qu''' (Liang Garden District) and the district subordinate to Guide the Suiyang '''qu''' (Suiyang District) (see Map 3).}} == ภาษาอาเซอร์ไบจาน == {{az-variant|гу|قو}} === รากศัพท์ === จาก{{inh|az|trk-cmn-pro|*quɣu|t=หงส์}}, จาก{{inh|az|trk-pro|*kugu|t=หงส์}} === การออกเสียง === * {{IPA|az|[ɡu]}} * {{hyphenation|az|qu}} === คำนาม === {{az-noun}} # [[หงส์]] #: {{syn|az|qu quşu}} ==== การผันรูป ==== {{az-decl-noun|u}} === อ้างอิง === * {{R:az:ADIL}} jp27e6eaf7s3pt4eic47di63d6txtyi 5754537 5754536 2026-08-06T09:13:50Z OctraBot 3198 /* ภาษาอังกฤษ */ 5754537 wikitext text/x-wiki {{also/auto}} == ภาษาร่วม == === รากศัพท์ === {{clip|mul|en:'''Qu'''echua,es:'''qu'''echua}}, จาก{{der|mul|qu|qhichwa}} === สัญลักษณ์ === {{mul-symbol}} # {{ISO 639|1}} === ดูเพิ่ม === * {{langcat}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|戌}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|qū}} # {{nonstandard spelling of|cmn|sc=Latn|qú}} # {{nonstandard spelling of|cmn|sc=Latn|qǔ}} # {{nonstandard spelling of|cmn|sc=Latn|qù}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} === คำนาม === {{fr-noun|m}} # {{alternative spelling of|fr|ku}} == ภาษาสเปน == === ตัวอักษร === {{head|es|ตัวอักษร|lower case||upper case|QU|mixed case|Qu}} # [[ทวิอักษร]]ที่ประกอบขึ้นจาก {{l|es|q}} และ {{l|es|u}} === อ่านเพิ่ม === * {{R:es:DRAE}} == ภาษาอังกฤษ == {{wp|en:[[District (China)|Districts in China]]}} === รากศัพท์ === จาก{{bor|en|cmn-pinyin|-}}ของ {{bor|en|cmn|區}} === คำนาม === {{en-noun}} # {{lb|en|China}} หน่วยการปกครองย่อยของ[[จีน]] เทียบเท่ากับ[[เขต]] (district) ซึ่งแตกต่างจาก[[เทศมณฑล]] (county, [[xian]]) #* {{quote-book |en |year=1973 |title=Survey of China Mainland Press |url=https://books.google.com/books?id=q5xDAQAAIAAJ |issue=5308-5345 |ISSN=0499-0390 |OCLC=1695580 |page=52 |text={{...}}the Party committee of Peiyuanmen<!--北院門--> commune of Lienhu '''ch'u''' in Sian municipality has since the year before last set up outside-school cultural activity centers in the commune headquarters and in various neighborhood committees. |brackets=on}} #* {{quote-book |en |year=1990 |author=Barrett L. McCormick |chapter=Elections to Local People's Congresses |title=Political Reform in Post-Mao China: Democracy and Bureaucracy in a Leninist State |url=https://archive.org/details/politicalreformi0000mcco/ |publisher=w:University of California Press |ISBN=0-520-06765-7 |LCCN=89-20440 |OCLC=20526428 |page=138 |pageurl=https://archive.org/details/politicalreformi0000mcco/page/138/ |text=At the time of the elections (1980) Nanjing was subdivided into three suburban counties (''xian'') and nine urban districts ('''''qu''''').}} #* {{quote-book |en |year=2009 |author=Roger Des Forges |chapter=Tales of Three City Walls in China's Central Plain |title=Chinese Walls in Time and Space: A Multidisciplinary Perspective |url= |ISBN=978-1-933947-14-3 |ISSN=1050-2955 |LCCN=2009925854 |OCLC=762303701 |pages=60–61 |pageurl=https://books.google.com/books?id=s4WDEAAAQBAJ&pg=PA60 |text=As we have seen, the people of Guide/Shangqiu have traced the history of their city back well before the Ming and especially to the Han period. The People's Republic has recognized that heritage by naming the district subordinate to Shangqiu city the Liangyuan '''qu''' (Liang Garden District) and the district subordinate to Guide the Suiyang '''qu''' (Suiyang District) (see Map 3).}} == ภาษาอาเซอร์ไบจาน == {{az-variant|гу|قو}} === รากศัพท์ === จาก{{inh|az|trk-cmn-pro|*quɣu|t=หงส์}}, จาก{{inh|az|trk-pro|*kugu|t=หงส์}} === การออกเสียง === * {{IPA|az|[ɡu]}} * {{hyphenation|az|qu}} === คำนาม === {{az-noun}} # [[หงส์]] #: {{syn|az|qu quşu}} ==== การผันรูป ==== {{az-decl-noun|u}} === อ้างอิง === * {{R:az:ADIL}} cmakcdq0gngceo3151grarj7ct0cvco โบ 0 135121 5754561 4918384 2026-08-06T10:55:28Z Ai Ku Karng 17824 5754561 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === {{bor+|th|en|bow}} ==== รูปแบบอื่น ==== * {{alt|th|โบว์||คำทับศัพท์}} ==== คำนาม ==== {{th-noun}} # [[เชือก]][[หรือ]][[ริบบิ้น]][[ทำ]][[เป็น]][[ห่วง]] 2 ห่วง[[คล้าย]][[หูกระต่าย]][[แล้ว]][[ผูก]][[ไขว้]][[กัน]]เป็น[[เงื่อน]][[กระทก]] === รากศัพท์ 2 === ตัดมาจาก {{m|th|โบราณ}} ==== คำกริยา ==== {{th-verb|-}} # {{lb|th|ปาก|สแลง|jocular}} [[ดู]]โบราณ, [[ไม่]][[ทันสมัย]] #: {{ux|th|ดูน้องคนนั้นซิ โบจังเลย นุ่งกระโปรงพลี้ตยาวคลุมเข่าเชียว}} === รากศัพท์ 3 === ตัดมาจาก {{m|th|โบท็อกซ์}} ==== คำนาม ==== {{th-noun|-}} # {{lb|th|สแลง|jocular}} [[โบท็อกซ์]] ==== อ้างอิง ==== {{พคม|2|74}} == ภาษาทะวืง == === รากศัพท์ === {{inh+|thm|mkh-vie-pro|*ɓoː}} === คำนาม === {{thm-noun}} # [[นกฮูก]] == ภาษาแสก == === การออกเสียง === * {{IPA|skb|/boː˧/|a=บ้านบะหว้า}} === รากศัพท์ === {{inh+|skb|tai-pro|*boːᴮ||ไม่}}; ร่วมเชื้อสายกับ{{cog|th|บ่}}, {{cog|tts|บ่}}, {{cog|lo|ບໍ່}}, {{cog|nod|ᨷᩴ᩵}}, {{cog|zzj|mboh}} === คำกริยาวิเศษณ์ === {{skb-adv}} # [[ไม่]], [[มิ]] 074yq6yuvolycvnzlhf35ovz07uyy3i huo 0 141526 5754554 1876642 2026-08-06T09:36:42Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754554 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|和}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|huō}} # {{nonstandard spelling of|cmn|huó}} # {{nonstandard spelling of|cmn|huǒ}} # {{nonstandard spelling of|cmn|huò}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} qgwpns4w7s398s1lz80vq6kn1b930f5 5754555 5754554 2026-08-06T09:37:38Z OctraBot 3198 5754555 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|和}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|huō}} # {{nonstandard spelling of|cmn|huó}} # {{nonstandard spelling of|cmn|huǒ}} # {{nonstandard spelling of|cmn|huò}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาตากาล็อก == === การออกเสียง === {{tl-pr|hu7o}} === คำอุทาน === {{tl-head|interjection|b=+}} {{tlb|tl|dialectal|Rizal|western|_|Marinduque}} # {{alternative form of|tl|oo}}: [[ใช่]] m2tsw7dx0lv1y2lystvaxrdtzi0viaz 5754556 5754555 2026-08-06T09:38:01Z OctraBot 3198 5754556 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|和}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|huō}} # {{nonstandard spelling of|cmn|huó}} # {{nonstandard spelling of|cmn|huǒ}} # {{nonstandard spelling of|cmn|huò}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาตากาล็อก == === การออกเสียง === {{tl-pr|hu7o}} === คำอุทาน === {{tl-head|interjection|b=+}} {{tlb|tl|dialectal|Rizal|western|_|Marinduque}} # {{alternative form of|tl|oo}}: [[ใช่]] == ภาษาสวาฮีลี == === คำคุณศัพท์ === {{head|sw|รูปคุณศัพท์}} # {{sw-adj form of|3|hiyo||no-}} 7hmv2bjkvl00hriv2ottsfjkhjfvcfi ng 0 142251 5754552 5376022 2026-08-06T09:34:09Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754552 wikitext text/x-wiki {{also/auto}} == ภาษาร่วม == === สัญลักษณ์ === {{head|mul|สัญลักษณ์}} # {{SI-unit-abb|นาโน|กรัม|[[มวล]]}} # {{ISO 639|1}} === ดูเพิ่ม === * {{l|mul|ŋ}} == ภาษาจีนกลาง == === รูปแบบอื่น === * {{alt|cmn|ŋ||very rare shorthand}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|唵}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|ńg}} # {{nonstandard spelling of|cmn|ňg}} # {{nonstandard spelling of|cmn|ǹg}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาอังกฤษ == === คำนาม === {{en-noun|?}} # {{lb|en|Internet}} {{initialism of|en|newsgroup}}; {{n-g|และยังมี {{m|en|NG}}}} === คำสลับอักษร === * {{anagrams|en|a=gn|gn|gn.|GN}} {{C|en|ยูสเน็ต}} jbj40f53iznh5m01qa9iledphf3fkmo 5754553 5754552 2026-08-06T09:35:16Z OctraBot 3198 /* ภาษาร่วม */ เก็บกวาด 5754553 wikitext text/x-wiki {{also/auto}} == ภาษาร่วม == === รากศัพท์ 1 === จาก{{affix|mul|n|t1=นาโน|g|t2=กรัม}} ==== สัญลักษณ์ ==== {{mul-symbol}} # {{SI-unit-abb|นาโน|กรัม|[[มวล]]}} === รากศัพท์ 2 === {{abbrev|mul|en:'''N'''don'''g'''a}} ==== สัญลักษณ์ ==== {{mul-symbol}} # {{ISO 639|1}} ==== ดูเพิ่ม ==== * {{langcat}} === ดูเพิ่ม === * {{l|mul|ŋ}} == ภาษาจีนกลาง == === รูปแบบอื่น === * {{alt|cmn|ŋ||very rare shorthand}} === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|唵}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|ńg}} # {{nonstandard spelling of|cmn|ňg}} # {{nonstandard spelling of|cmn|ǹg}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาอังกฤษ == === คำนาม === {{en-noun|?}} # {{lb|en|Internet}} {{initialism of|en|newsgroup}}; {{n-g|และยังมี {{m|en|NG}}}} === คำสลับอักษร === * {{anagrams|en|a=gn|gn|gn.|GN}} {{C|en|ยูสเน็ต}} d7zpsgbfdzwqc5sfuw0kmtdbytotfaw shi 0 142555 5754525 1917038 2026-08-06T08:57:00Z OctraBot 3198 5754525 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|匙}} # {{cmn-pinyin of|殖}} # {{cmn-pinyin of|𥫽}} {{head|cmn|พินอิน}} # {{nonstandard spelling of|cmn|shī|sc=Latn}} # {{nonstandard spelling of|cmn|shí|sc=Latn}} # {{nonstandard spelling of|cmn|shǐ|sc=Latn}} # {{nonstandard spelling of|cmn|shì|sc=Latn}} == ภาษาญี่ปุ่น == === การถอดเป็นอักษรโรมัน === {{ja-romaji}} # {{Latn-def|ja|syllable|し|シ|shi}} == ภาษาเอสเปรันโต == === คำสรรพนาม === {{head|eo|คำสรรพนาม}} # {{eo-spel}} p2djt9hlv5d1goxmrk8l2b386iib6wg 5754526 5754525 2026-08-06T08:57:22Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754526 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|匙}} # {{cmn-pinyin of|殖}} # {{cmn-pinyin of|𥫽}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|shī|sc=Latn}} # {{nonstandard spelling of|cmn|shí|sc=Latn}} # {{nonstandard spelling of|cmn|shǐ|sc=Latn}} # {{nonstandard spelling of|cmn|shì|sc=Latn}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาญี่ปุ่น == === การถอดเป็นอักษรโรมัน === {{ja-romaji}} # {{Latn-def|ja|syllable|し|シ|shi}} == ภาษาเอสเปรันโต == === คำสรรพนาม === {{head|eo|คำสรรพนาม}} # {{eo-spel}} t78306qle3dvh5b9g7hngwgdoah8x6y xu 0 142669 5754512 1878452 2026-08-06T08:33:08Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754512 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|蓿}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|xū}} # {{nonstandard spelling of|cmn|sc=Latn|xú}} # {{nonstandard spelling of|cmn|sc=Latn|xǔ}} # {{nonstandard spelling of|cmn|sc=Latn|xù}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} hwqj9iwiaoybqlfv1zc5812sy3wahny 5754513 5754512 2026-08-06T08:35:12Z OctraBot 3198 5754513 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|蓿}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|xū}} # {{nonstandard spelling of|cmn|sc=Latn|xú}} # {{nonstandard spelling of|cmn|sc=Latn|xǔ}} # {{nonstandard spelling of|cmn|sc=Latn|xù}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาม้งขาว == === รากศัพท์ === {{rfe|mww|Not mentioned by Ratliff at all. Looks possibly like a Chinese borrowing; some candidates include {{ltc-l|違|to violate, be apart}}, {{ltc-l|錯|mistake}}, {{ltc-l|虛|empty, hollow}}.}} === การออกเสียง === {{mww-pron}} === คำกริยา === {{head|mww|คำกริยา}} # [[พลาด]] (เป้า) ==== ลูกคำ ==== {{col2|mww |xu siab<t:undesirable> }} === อ้างอิง === * {{R:mww:Heimbach|page=411}} f3i13cz5yey80u3rvldl6miobm2m9p8 5754514 5754513 2026-08-06T08:36:47Z OctraBot 3198 5754514 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|蓿}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|xū}} # {{nonstandard spelling of|cmn|sc=Latn|xú}} # {{nonstandard spelling of|cmn|sc=Latn|xǔ}} # {{nonstandard spelling of|cmn|sc=Latn|xù}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาม้งขาว == === รากศัพท์ === {{rfe|mww|Not mentioned by Ratliff at all. Looks possibly like a Chinese borrowing; some candidates include {{ltc-l|違|to violate, be apart}}, {{ltc-l|錯|mistake}}, {{ltc-l|虛|empty, hollow}}.}} === การออกเสียง === {{mww-pron}} === คำกริยา === {{head|mww|คำกริยา}} # [[พลาด]] (เป้า) ==== ลูกคำ ==== {{col2|mww |xu siab<t:undesirable> }} === อ้างอิง === * {{R:mww:Heimbach|page=411}} == ภาษาเวียดนาม == === รากศัพท์ === จาก{{bor|vi|fr|sou}} === การออกเสียง === {{vi-IPA}} === คำนาม === {{vi-noun}} # [[ซู]] {{gloss|หน่วยเงิน 1/100 ของ[[ด่ง]]}} ==== ลูกคำ ==== {{col3|vi|đồng xu|ba xu}} 5kjxpz01o0iv5gob0hovi2ms57arkbg 5754515 5754514 2026-08-06T08:37:29Z OctraBot 3198 /* */ เก็บกวาด 5754515 wikitext text/x-wiki {{also/auto}} == ภาษากอท == === การถอดเป็นอักษรโรมัน === {{got-rom}} # {{romanization of|got|𐍇𐌿}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|蓿}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|xū}} # {{nonstandard spelling of|cmn|sc=Latn|xú}} # {{nonstandard spelling of|cmn|sc=Latn|xǔ}} # {{nonstandard spelling of|cmn|sc=Latn|xù}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} == ภาษาม้งขาว == === รากศัพท์ === {{rfe|mww|Not mentioned by Ratliff at all. Looks possibly like a Chinese borrowing; some candidates include {{ltc-l|違|to violate, be apart}}, {{ltc-l|錯|mistake}}, {{ltc-l|虛|empty, hollow}}.}} === การออกเสียง === {{mww-pron}} === คำกริยา === {{head|mww|คำกริยา}} # [[พลาด]] (เป้า) ==== ลูกคำ ==== {{col2|mww |xu siab<t:undesirable> }} === อ้างอิง === * {{R:mww:Heimbach|page=411}} == ภาษาเวียดนาม == === รากศัพท์ === จาก{{bor|vi|fr|sou}} === การออกเสียง === {{vi-IPA}} === คำนาม === {{vi-noun}} # [[ซู]] {{gloss|หน่วยเงิน 1/100 ของ[[ด่ง]]}} ==== ลูกคำ ==== {{col3|vi|đồng xu|ba xu}} pknlzby8hqfcy47m8e4o7a695sfvh2b zan 0 142705 5754510 1878573 2026-08-06T08:27:47Z OctraBot 3198 /* ภาษาจีนกลาง */ เก็บกวาด 5754510 wikitext text/x-wiki {{also/auto}} == ภาษาจีนกลาง == === การถอดเป็นอักษรโรมัน === {{cmn-pinyin}} # {{cmn-pinyin of|喒|偺}} {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|zān}} # {{nonstandard spelling of|cmn|sc=Latn|zán}} # {{nonstandard spelling of|cmn|sc=Latn|zǎn}} # {{nonstandard spelling of|cmn|sc=Latn|zàn}} ==== หมายเหตุการใช้ ==== * {{cmn-toneless-note}} 9vbkw4pohs7bg68unsjderf7fvgqz7p มอดูล:number list 828 167589 5754343 5754318 2026-08-06T01:34:24Z Octahedron80 267 5754343 Scribunto text/plain local m_links = require("Module:links") local m_str_utils = require("Module:string utilities") local char = string.char local concat = table.concat local gsub = m_str_utils.gsub local insert = table.insert local list_to_set = require("Module:table").listToSet local sort = table.sort local split = m_str_utils.split local u = m_str_utils.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility local upper = string.upper local export = {} local decimal_strategy --[=[ Terminology: Number = a bare number; a mathematical entity which has different form types (e.g. cardinal, ordinal) Form type = a category of the forms that represent a number; examples are cardinal, ordinal, distributive, fractional Form = a word or expression that represents a number in a given language Tag = an identifier attached to a form that allows different logical subtypes of forms from the same form type to be identified; e.g. 'vuitanta-vuit<tag:Central>' vs. 'huitanta-huit<tag:Valencian>' to identify variants of Catalan cardinal number 88 for different dialectal standards; there can be multiple tags per form, e.g. 'tair ar ddeg<tag:vigesimal><tag:feminine>' for the Welsh number 13 where there are both decimal/vigesimal and masculine/feminine variants of this number Tag list = a list of tags in the order they are specified in the data, e.g. {"vigesimal", "feminine"} for the example above Combined tag = the string representation of a tag list, using ||| to separate individual tags ]=] local default_form_types = { {key = "cardinal", display = "[[จำนวนเชิงการนับ|เชิงการนับ]]"}, {key = "ordinal", display = "[[จำนวนเชิงอันดับที่|เชิงอันดับที่]]"}, {key = "ordinal_abbr", display = "[[ตัวย่อ]][[จำนวนเชิงอันดับที่|เชิงอันดับที่]]"}, {key = "adverbial", display = "[[จำนวนเชิงกริยาวิเศษณ์|เชิงกริยาวิเศษณ์]]"}, {key = "multiplier", display = "[[ตัวคูณ]]"}, {key = "distributive", display = "[[จำนวนเชิงแจกแจง|เชิงแจกแจง]]"}, {key = "collective", display = "[[จำนวนเชิงรวบรวม|เชิงรวบรวม]]"}, {key = "fractional", display = "[[เศษส่วน]] (⅟…)"}, } -- Keys in a `numbers` entry that aren't form types. local non_form_types = { numeral = true, wplink = true, next = true, prev = true, next_outer = true, prev_outer = true, upper = true, lower = true, } local function track(page) require("Module:debug/track")("number list/" .. page) return true end --[=[ -- -- General set intersection local function set_intersection(sets) local intersection = {} for key, _ in pairs(sets[1]) do intersection[key] = true end for i = 2, #sets do local this_set = sets[i] for key, _ in pairs(intersection) do if not this_set[key] then -- See https://stackoverflow.com/questions/6167555/how-can-i-safely-iterate-a-lua-table-while-keys-are-being-removed -- It is safe to modify or remove a key while iterating over the table. intersection[key] = nil end end end return intersection end ]=] local function set_intersection(set1, set2) local intersection = {} for key, _ in pairs(set1) do intersection[key] = true end for key, _ in pairs(intersection) do if not set2[key] then -- See https://stackoverflow.com/questions/6167555/how-can-i-safely-iterate-a-lua-table-while-keys-are-being-removed -- It is safe to modify or remove a key while iterating over the table. intersection[key] = nil end end return intersection end -- Count keys in a set table (never use `#` on these; it is not the set cardinality). local function set_size(set) local n = 0 for _ in pairs(set) do n = n + 1 end return n end function export.get_data_module_name(langcode) return "Module:number list/data/" .. langcode end -- Format a number (either a Lua number or a string) in fixed point without any decimal point or scientific notation. -- `tostring()` doesn't work because it converts large numbers such as 1000000000000000 to "1e+15". function export.format_fixed(number) if type(number) == "string" then return number else return ("%.0f"):format(number) end end -- Parse a form with modifiers such as 'vuitanta-vuit<tag:Central>' or 'سیزده<tr:sizdah>' -- or 'سیزده<tr:sizdah><tag:Iranian>' into its component parts. Return a form object, i.e. an object with fields -- `form` for the form, and `tr`, `tag`, `q`, `qq`, `g` or `link` for the modifiers. The `tag` field is a tag list -- (see above). function export.parse_form_and_modifiers(form_with_modifiers) local retval = {} local form form = form_with_modifiers while true do local new_form, angle_bracketed = form:match("^(.-)(%b<>)$") if not new_form then break end local prefix, content = angle_bracketed:match "^<(%w+):(.+)>$" if not prefix then break end if prefix == "tag" then if retval.tag then insert(retval.tag, content) else retval.tag = {content} end elseif prefix == "q" or prefix == "qq" or prefix == "tr" or prefix == "link" or prefix == "id" or prefix == "g" or prefix == "alt" then if retval[prefix] then error(("Duplicate modifier '%s' in data module form, already saw value '%s': %s"):format(prefix, retval[prefix], form_with_modifiers)) else retval[prefix] = content end else error(("Unrecognized modifier '%s' in data module form: %s"):format(prefix, form_with_modifiers)) end form = new_form end retval.form = form return retval end -- Find the `numbers` object for a given number (which should be in string representation). function export.lookup_data(m_data, numstr) -- Don't try to convert very large numbers to Lua numbers because they may overflow. -- Powers of 10 >= 10^22 cannot be represented exactly as a Lua number. return m_data.numbers[numstr] or #numstr < 22 and m_data.numbers[tonumber(numstr)] or nil end -- Return true if a < b, where either may be a Lua number or the string representation of a number. function export.numbers_less_than(a, b) a, b = export.format_fixed(a), export.format_fixed(b) local alen = #a local blen = #b if alen < blen then return true end if alen > blen then return false end return a < b end -- Return true if a > b, where either may be a Lua number or the string representation of a number. function export.numbers_greater_than(a, b) return export.numbers_less_than(b, a) end local POSITIONAL_DIGITS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" local MAX_SAFE_INTEGER = 9007199254740991 local function get_digit_maps(base, digit_alphabet) digit_alphabet = digit_alphabet or POSITIONAL_DIGITS if #digit_alphabet < base then error(("Number system base %s exceeds available digits in digit alphabet"):format(base)) end local digit_to_value = {} local value_to_digit = {} for i = 1, base do local digit = digit_alphabet:sub(i, i) digit_to_value[digit] = i - 1 value_to_digit[i - 1] = digit end return digit_to_value, value_to_digit end local function decimal_to_base(num, base, value_to_digit) if num == 0 then return value_to_digit[0] end local parts = {} while num > 0 do insert(parts, 1, value_to_digit[num % base]) num = math.floor(num / base) end return concat(parts) end local function parse_positional_to_number(key, base, digit_to_value) local n = 0 for i = 1, #key do local value = digit_to_value[key:sub(i, i)] if not value then return nil end n = n * base + value if n > MAX_SAFE_INTEGER then return nil end end return n end local function safe_integer_power(base, exp) local result = 1 for _ = 1, exp do if result > MAX_SAFE_INTEGER / base then return nil end result = result * base end return result end local function normalize_positional_key(raw_number, opts) local base = opts.base local case_insensitive = opts.case_insensitive local digit_to_value = opts.digit_to_value local value_to_digit = opts.value_to_digit local strip_separator = opts.strip_separator local interpret_plain_decimal = opts.interpret_plain_decimal local zero_digit = opts.zero_digit local key if type(raw_number) == "number" then if raw_number < 0 or raw_number % 1 ~= 0 then error(("Non-negative integer expected for positional number system, got '%s'"):format(raw_number)) end key = decimal_to_base(raw_number, base, value_to_digit) else key = tostring(raw_number) if strip_separator and strip_separator ~= "" then key = gsub(key, strip_separator, "") end -- For compatibility with existing data/modules, plain decimal-digit *input* can be interpreted -- as decimal and then converted into the configured positional key space. if interpret_plain_decimal and key:find("^%d+$") then key = decimal_to_base(tonumber(key), base, value_to_digit) end end if case_insensitive then key = upper(key) end if key == "" then return zero_digit end for i = 1, #key do local digit = key:sub(i, i) if not digit_to_value[digit] then error(("Extraneous characters in number: '%s'"):format(key)) end end key = key:gsub("^" .. zero_digit .. "+", "") return key == "" and zero_digit or key end -- Given a number form, convert it to its independent (un-affixed) form. This only makes sense for certain languages -- where there is a difference between independent and affixed forms of numerals. Currently the only such language -- is Swahili, where e.g. the cardinal number form for 3 is affixed [[-tatu]], independent [[tatu]], and the ordinal -- number form is [[-a tatu]], independent [[tatu]]. We rely on a set of Lua pattern substitutions to convert from -- affixed to independent form. -- -- FIXME: This needs major rethinking in a way that isn't specific to Swahili. local function maybe_unaffix(m_data, form) if not m_data.unaffix then return form end for _, entry in ipairs(m_data.unaffix) do local from, to = unpack(entry) form = gsub(form, from, to) end return form end -- Convert the given number form (taken from the data for `lang`, after parsing the form for modifiers and stripping -- the modifiers) to the stripped-text version of the form. The form may have links and/or accent/length marks that need -- to be stripped. local function form_to_stripped_form(form, lang) return lang:stripDiacritics(m_links.remove_links(form)) end -- Return true if the given number form object (taken from the data for `lang`, after parsing the form for modifiers) -- matches `pagename`. If there is a <link:...> modifier, we check against it. Otherwise, we check against the form -- itself. In this case, the form may have links and/or accent/length marks that need to be stripped, and we may need -- to convert the form to its independent (un-affixed) form, if there is a difference between independent and affixed -- forms (as in Swahili). local function form_equals_pagename(formobj, pagename, m_data, lang) if formobj.link == pagename then return true end local stripped_form = form_to_stripped_form(formobj.form, lang) if stripped_form == pagename or maybe_unaffix(m_data, stripped_form) == pagename then return true end if formobj.alt then local stripped_alt = form_to_stripped_form(formobj.alt, lang) if stripped_alt == pagename or maybe_unaffix(m_data, stripped_alt) == pagename then return true end end return false end -- Given the data for a language and a number (which should be in string representation), find the next and previous -- numbers to display (in string representation). local function get_next_and_prev_keys(m_data, numstr, strategy, lookup_data) local numdata = lookup_data(numstr) if not numdata then return nil, nil end local nextnum = numdata.next local prevnum = numdata.prev if not nextnum or not prevnum then -- Find the next/previous numbers by sorting all the keys and locating the number in question among them. local sorted_list = {} local seen = {} local index = 1 for key, _ in pairs(m_data.numbers) do local normalized_key = strategy.normalize_data_key(key) if not seen[normalized_key] then seen[normalized_key] = true sorted_list[index] = normalized_key index = index + 1 end end sort(sorted_list, strategy.compare_keys) -- We could binary search to save time, but given that we already sort, which is supra-linear, it won't -- matter to search linearly. for i, key in ipairs(sorted_list) do if key == numstr then nextnum = nextnum or sorted_list[i + 1] prevnum = prevnum or sorted_list[i - 1] break end end end if nextnum then nextnum = strategy.normalize_data_key(nextnum) end if prevnum then prevnum = strategy.normalize_data_key(prevnum) end return nextnum, prevnum end -- Find the "description objects" (a two-element list {NUMBER, TYPE}, where NUMBER is either a Lua number or a string, -- depending on how it appears in the underlying data) that matches `pagename` and (if given) `matching_type`. -- Return a list of such objects. local function lookup_number_by_form(lang, m_data, pagename, matching_type) local retval = {} local function check_form(form, num, typ) local formobj = export.parse_form_and_modifiers(form) if form_equals_pagename(formobj, pagename, m_data, lang) and (not matching_type or typ == matching_type) then -- It's possible the same pagename occurs multiply for a given type and number, e.g. with different length -- or accent marks. The calling code is OK with multiple entries for a given number (which can also occur -- with different types, e.g. the ordinal and fractional forms for a given number are the same), but will -- throw an error if different numbers are seen. insert(retval, {num, typ}) end end for num, numdata in pairs(m_data.numbers) do for numtype, forms in pairs(numdata) do if non_form_types[numtype] then -- do nothing elseif type(forms) == "table" then for _, form in ipairs(forms) do check_form(form, num, numtype) end else check_form(forms, num, numtype) end end end return retval end -- additional_types is an array of tables like form_types, -- but each table can contain the keys "before" or "after", which specify -- the numeral type that the form should appear before or after. -- The transformations are applied in order. local function add_form_types(form_types, additional_types) local types = require("Module:table").deepCopy(form_types) for _, additional_type in ipairs(additional_types) do if not (additional_type.before or additional_type.after) then insert(types, additional_type) else if additional_type.before and additional_type.after then error("The form type '" .. additional_type.key .. "' is specifying both before and after, which is not allowed") end local anchor, index = additional_type.before or additional_type.after for i, another_type in ipairs(types) do if another_type.key == anchor then index = i break end end if index and additional_type.after then index = index + 1 end additional_type = require("Module:table").shallowCopy(additional_type) additional_type.before, additional_type.after = nil, nil if not index then mw.log("Number type " .. (additional_type.before or additional_type.after) .. " was not found.") insert(types, additional_type) else insert(types, index, additional_type) end end end return types end -- Return all form types for the language in question, in order. function export.get_number_types(m_data) local form_types = default_form_types if m_data.additional_number_types then return add_form_types(form_types, m_data.additional_number_types) else return form_types end end -- Convert a number type object (an object with `display` and `key` fields) to its displayed form. function export.display_number_type(number_type) if number_type.display then return number_type.display else return (number_type.key:gsub("^.", upper):gsub("_", " ")) end end -- Group digits with a separator, such as a comma or a period. See [[w:Digit grouping]]. local function add_separator(numstr, separator, group, start) start = start or group if start >= #numstr then return numstr end local parts = { numstr:sub(-start) } for i = start + 1, #numstr, group do insert(parts, 1, numstr:sub(-(i + group - 1), -i)) end return concat(parts, separator) end function export.add_thousands_separator(numstr, separator) if #numstr < 4 then -- < 1000 return numstr end return add_separator(numstr, separator or ",", 3) end local function add_Indic_separator(numstr, separator) return add_separator(numstr, separator, 2, 3) end -- Convert a number (represented as a string) to non-Arabic form based on the specs in `numeral_config`. -- This is used, for example, to display the Hindu, Eastern Arabic or Roman form of a number along with the standard -- Arabic form. Most of the code below assumes that the non-Arabic numerals are decimal, and the digits map one-to-one -- with Arabic numerals. If this is not the case (e.g. for Roman numerals), a special module function is called to do -- the conversion. function export.generate_non_arabic_numeral(numeral_config, numstr) -- `numstr` is a number represented as a string. See comment near top of show_box(). if numeral_config.module and numeral_config.func then return require("Module:" .. numeral_config.module)[numeral_config.func](numstr) end local thousands_separator, Indic_separator, zero_codepoint = numeral_config.thousands_separator, numeral_config.Indic_separator, numeral_config.zero_codepoint if not zero_codepoint then return nil end if thousands_separator then numstr = export.add_thousands_separator(numstr, thousands_separator) elseif Indic_separator then numstr = add_Indic_separator(numstr, Indic_separator) end return numstr:gsub("%d", function (digit) return u(zero_codepoint + tonumber(digit)) end) end -- Format a number (either a Lua number or a string) for display. Sufficiently small numbers are displayed in fixed -- point with thousands separators. Larger numbers are displayed in both fixed point and scientific notation using -- superscripts, and sufficiently large numbers are displayed only in scientific notation. function export.format_number_for_display(number) local MAX_NUM_DIGITS_FOR_FIXED_ONLY = 6 local MIN_NUM_DIGITS_FOR_SCIENTIFIC_ONLY = 13 local numstr = export.format_fixed(number) local fixed = export.add_thousands_separator(numstr) if #numstr <= MAX_NUM_DIGITS_FOR_FIXED_ONLY then return fixed end local kstr = numstr:match("^([0-9]*[1-9])0*$") if not kstr then error("Internal error: Unable to match number '" .. numstr .. "'") end local exponent = ("10<sup>%s</sup>"):format(#numstr - 1) local mantissa if kstr == "1" then mantissa = "" elseif #kstr == 1 then mantissa = kstr .. " × " else mantissa = kstr:gsub("^([0-9])", "%1.") .. " × " end local scientific = mantissa .. exponent if #numstr >= MIN_NUM_DIGITS_FOR_SCIENTIFIC_ONLY then return scientific else return fixed .. " (" .. scientific .. ")" end end local function derive_related_numbers_decimal(cur_num, cur_data, next_num, prev_num, lookup_data) local k, m if cur_num == "0" then k = 0 m = 1 else local kstr, mstr = cur_num:match("^([0-9]*[1-9])(0*)$") if not kstr then error("Internal error: Unable to match number '" .. cur_num .. "'") elseif #kstr > 15 then error("Can't handle number with more than 15 digits before the trailing zeros: '" .. cur_num .. "'") end k = tonumber(kstr) m = #mstr end local function make_greater_power_of_ten(power) return cur_num .. ("0"):rep(power) end local function make_lesser_power_of_ten(power) local desired_zeros = m - power if desired_zeros < 0 then return nil end return k .. ("0"):rep(desired_zeros) end local next_outer_data, prev_outer_data local next_outer_num, prev_outer_num = cur_data.next_outer, cur_data.prev_outer local power_of_10_sequence = { 1, 3, 2, 6 } if next_outer_num then next_outer_data = lookup_data(next_outer_num, "next outer") else local function try(num) local data = (not next_num or export.numbers_greater_than(num, next_num)) and lookup_data(num) or nil if data then next_outer_num = num next_outer_data = data end return data end if not try((k + 1) .. ("0"):rep(m)) and k == 1 then for _, power_of_10 in ipairs(power_of_10_sequence) do if try(make_greater_power_of_ten(power_of_10)) then break end end end end if prev_outer_num then prev_outer_data = lookup_data(prev_outer_num, "previous outer") else local function try(num) local data = (not prev_num or export.numbers_less_than(num, prev_num)) and lookup_data(num) or nil if data then prev_outer_num = num prev_outer_data = data end return data end if not (k == 0 or m == 0) then local num_to_try if k == 1 then num_to_try = "9" .. ("0"):rep(m - 1) else num_to_try = (k - 1) .. ("0"):rep(m) end if not try(num_to_try) and k == 1 then for _, power_of_10 in ipairs(power_of_10_sequence) do local power_num_to_try = make_lesser_power_of_ten(power_of_10) if power_num_to_try and try(power_num_to_try) then break end end end end end local upper_data, lower_data local upper_num, lower_num = cur_data.upper, cur_data.lower if upper_num then upper_data = lookup_data(upper_num, "upper") else upper_num = make_greater_power_of_ten(1) if upper_num == next_num or cur_num == "0" then upper_num = nil else upper_data = lookup_data(upper_num) end end if lower_num then lower_data = lookup_data(lower_num, "lower") elseif not (k == 0 or m == 0) then lower_num = make_lesser_power_of_ten(1) if lower_num == prev_num then lower_num = nil else lower_data = lookup_data(lower_num) end end return next_outer_num, next_outer_data, prev_outer_num, prev_outer_data, upper_num, upper_data, lower_num, lower_data end local function derive_related_numbers_positional(strategy, cur_num, cur_data, next_num, prev_num, lookup_data) local zero_digit = strategy.zero_digit local base = strategy.base local power_base = strategy.power_base local value_to_digit = strategy.value_to_digit local digit_to_value = strategy.digit_to_value local power_sequence = strategy.power_sequence local significant = cur_num:gsub(zero_digit .. "+$", "") local m = #cur_num - #significant local kstr = significant == "" and zero_digit or significant local k_value = parse_positional_to_number(kstr, base, digit_to_value) local next_outer_data, prev_outer_data local next_outer_num, prev_outer_num = cur_data.next_outer, cur_data.prev_outer local function value_to_key(value) return decimal_to_base(value, base, value_to_digit) end local function make_greater_power(power) if not k_value then return nil end local factor = safe_integer_power(power_base, power) if not factor then return nil end local cur_value = parse_positional_to_number(cur_num, base, digit_to_value) if not cur_value or cur_value > MAX_SAFE_INTEGER / factor then return nil end return value_to_key(cur_value * factor) end local function make_lesser_power(power) local factor = safe_integer_power(power_base, power) if not factor then return nil end local cur_value = parse_positional_to_number(cur_num, base, digit_to_value) if not cur_value or cur_value % factor ~= 0 then return nil end return value_to_key(cur_value / factor) end if next_outer_num then next_outer_data = lookup_data(next_outer_num, "next outer") else local function try(num) local data = (not next_num or strategy.compare_keys(next_num, num)) and lookup_data(num) or nil if data then next_outer_num = num next_outer_data = data end return data end if k_value then if not try(decimal_to_base(k_value + 1, base, value_to_digit) .. zero_digit:rep(m)) and k_value == 1 then for _, power in ipairs(power_sequence) do if try(make_greater_power(power)) then break end end end end end if prev_outer_num then prev_outer_data = lookup_data(prev_outer_num, "previous outer") else local function try(num) local data = (not prev_num or strategy.compare_keys(num, prev_num)) and lookup_data(num) or nil if data then prev_outer_num = num prev_outer_data = data end return data end if not (cur_num == zero_digit or m == 0) and k_value then local num_to_try if k_value == 1 then num_to_try = value_to_digit[base - 1] .. zero_digit:rep(m - 1) else num_to_try = decimal_to_base(k_value - 1, base, value_to_digit) .. zero_digit:rep(m) end if not try(num_to_try) and k_value == 1 then for _, power in ipairs(power_sequence) do local power_num_to_try = make_lesser_power(power) if power_num_to_try and try(power_num_to_try) then break end end end end end local upper_data, lower_data local upper_num, lower_num = cur_data.upper, cur_data.lower if upper_num then upper_data = lookup_data(upper_num, "upper") else upper_num = make_greater_power(1) if upper_num == next_num or cur_num == zero_digit then upper_num = nil else upper_data = lookup_data(upper_num) end end if lower_num then lower_data = lookup_data(lower_num, "lower") elseif not (cur_num == zero_digit or m == 0) then lower_num = make_lesser_power(1) if lower_num == prev_num then lower_num = nil else lower_data = lookup_data(lower_num) end end return next_outer_num, next_outer_data, prev_outer_num, prev_outer_data, upper_num, upper_data, lower_num, lower_data end local function create_positional_strategy(config) local base = config.base local digit_alphabet = config.digit_alphabet or POSITIONAL_DIGITS local case_insensitive = config.case_insensitive if case_insensitive == nil then case_insensitive = base <= 36 end local strip_separator = config.strip_separator or "," local digit_to_value, value_to_digit = get_digit_maps(base, digit_alphabet) local zero_digit = value_to_digit[0] local display_separator = config.display_separator local display_group = config.display_group local display_group_start = config.display_group_start local display_indic = config.display_indic local display_keys_as_decimal = config.display_keys_as_decimal if display_keys_as_decimal == nil then display_keys_as_decimal = true end local power_sequence = config.power_sequence or {1, 3, 2, 6} local power_base = config.power_base or 10 local strategy = { id = config.id or ("base" .. base), base = base, power_base = power_base, digit_to_value = digit_to_value, value_to_digit = value_to_digit, zero_digit = zero_digit, power_sequence = power_sequence, } function strategy.normalize_data_key(raw_number) return normalize_positional_key(raw_number, { base = base, case_insensitive = case_insensitive, digit_to_value = digit_to_value, value_to_digit = value_to_digit, strip_separator = nil, interpret_plain_decimal = false, zero_digit = zero_digit, }) end function strategy.normalize_input(raw_number) return normalize_positional_key(raw_number, { base = base, case_insensitive = case_insensitive, digit_to_value = digit_to_value, value_to_digit = value_to_digit, strip_separator = strip_separator, interpret_plain_decimal = true, zero_digit = zero_digit, }) end function strategy.normalize_input_candidates(raw_number) local key_as_system = normalize_positional_key(raw_number, { base = base, case_insensitive = case_insensitive, digit_to_value = digit_to_value, value_to_digit = value_to_digit, strip_separator = strip_separator, interpret_plain_decimal = false, zero_digit = zero_digit, }) local key_as_decimal = normalize_positional_key(raw_number, { base = base, case_insensitive = case_insensitive, digit_to_value = digit_to_value, value_to_digit = value_to_digit, strip_separator = strip_separator, interpret_plain_decimal = true, zero_digit = zero_digit, }) if key_as_system == key_as_decimal then return {key_as_system} end return {key_as_system, key_as_decimal} end function strategy.lookup_data(m_data, key) key = strategy.normalize_data_key(key) local direct = m_data.numbers[key] if direct then return direct end local parsed = parse_positional_to_number(key, base, digit_to_value) return parsed and m_data.numbers[parsed] or nil end function strategy.compare_keys(a, b) a = strategy.normalize_data_key(a) b = strategy.normalize_data_key(b) if #a ~= #b then return #a < #b end return a < b end function strategy.format_key_for_display(key) key = strategy.normalize_data_key(key) if display_keys_as_decimal then local decimal_value = parse_positional_to_number(key, base, digit_to_value) if decimal_value then return export.format_number_for_display(decimal_value) end end if display_separator then if display_indic then return add_separator(key, display_separator, 2, 3) end return add_separator(key, display_separator, display_group or 3, display_group_start) end return key end function strategy.derive_related_numbers(cur_num, cur_data, next_num, prev_num, lookup_data) return derive_related_numbers_positional(strategy, cur_num, cur_data, next_num, prev_num, lookup_data) end return strategy end decimal_strategy = { id = "decimal", base = 10, zero_digit = "0", power_sequence = {1, 3, 2, 6}, } function decimal_strategy.normalize_data_key(raw_number) return export.format_fixed(raw_number) end function decimal_strategy.normalize_input(raw_number) local normalized = tostring(raw_number):gsub(",", "") if not normalized:find("^%d+$") then error("Extraneous characters in parameter 2: should be decimal number (integer): '" .. normalized .. "'") end return normalized end function decimal_strategy.normalize_input_candidates(raw_number) return {decimal_strategy.normalize_input(raw_number)} end function decimal_strategy.lookup_data(m_data, key) return export.lookup_data(m_data, key) end function decimal_strategy.compare_keys(a, b) return export.numbers_less_than(a, b) end function decimal_strategy.format_key_for_display(key) return export.format_number_for_display(key) end function decimal_strategy.derive_related_numbers(cur_num, cur_data, next_num, prev_num, lookup_data) return derive_related_numbers_decimal(cur_num, cur_data, next_num, prev_num, lookup_data) end local function resolve_number_system(m_data) local config = m_data.number_system if not config then return decimal_strategy end if type(config) == "string" then config = {id = config} end if config.id == "decimal" then return decimal_strategy end if config.id == "base20" then config.base = config.base or 20 elseif config.id == "base60" then config.base = config.base or 60 elseif config.id == "positional" then -- base should be explicitly given or derived below. elseif config.id == "custom" then if not (config.module and config.func) then error("custom number_system requires both module and func") end local custom_strategy = require("Module:" .. config.module)[config.func](config) return custom_strategy end config.base = config.base or tonumber(config.id and config.id:match("^base(%d+)$")) if not config.base then error("Unsupported number_system id '" .. tostring(config.id) .. "'") end if config.base < 2 then error("number_system base must be >= 2") end return create_positional_strategy(config) end -- Map a list of tags to a single string that is equivalent. We need to do this because we can't easily put lists in the -- keys of tables. local function tag_list_to_combined_tag(tag_list) return concat(tag_list, "|||") end -- Given a list of forms with attached inline modifiers (e.g. 'huitanta-huit<tag:Valencian>' or -- 'tair ar ddeg<tag:vigesimal><tag:feminine>'), parse the forms into form objects (the return value of -- parse_form_and_modifiers()) and group by the tag. Three values are returned: -- `seen_forms`, `forms_by_tag`, `seen_tags` where: -- (1) `seen_forms` is the list of parsed form objects; -- (2) `forms_by_tag` is a table grouping the form objects by combined tag, where the key is the tag and the value is -- a list of the form objects seen with that tag (forms without tag are grouped under the empty-string tag); -- (3) `seen_tags` is a list of the combined tags encountered, in the order they were encountered; -- (4) `combined_tags_to_tag_lists` is a map from combined tags to the corresponding tag lists. function export.group_numeral_forms_by_tag(forms) local seen_forms = {} local forms_by_tag = {} local seen_tags = {} local combined_tags_to_tag_lists = {} for _, form in ipairs(forms) do local formobj = export.parse_form_and_modifiers(form) insert(seen_forms, formobj) local combined_tag = formobj.tag and tag_list_to_combined_tag(formobj.tag) or "" if not forms_by_tag[combined_tag] then insert(seen_tags, combined_tag) forms_by_tag[combined_tag] = {} combined_tags_to_tag_lists[combined_tag] = formobj.tag or {} end insert(forms_by_tag[combined_tag], formobj) end return seen_forms, forms_by_tag, seen_tags, combined_tags_to_tag_lists end -- Given a form object (as returned by parse_form_and_modifiers()), format as appropriate for the current language. function export.format_formobj(formobj, m_data, lang) local left_q = formobj.q and require("Module:qualifier").format_qualifier(formobj.q) .. " " or "" local right_q = ((formobj.g and " " .. require("Module:gender and number").format_genders(split(formobj.g, ",")) or "") .. (formobj.qq and " " .. require("Module:qualifier").format_qualifier(formobj.qq) or "")) local term = maybe_unaffix(m_data, formobj.form) local alt = formobj.alt if not alt and term ~= formobj.form then alt = formobj.form end return left_q .. m_links.full_link{ lang = lang, term = term, alt = alt, tr = formobj.tr, id = formobj.id, } .. right_q end -- Implementation of {{number box}}. function export.show_box(frame) local full_link = m_links.full_link local params = { [1] = {required = true, type = "language", default = "und"}, [2] = true, ["pagename"] = true, ["type"] = true, } local parent_args = frame:getParent().args if parent_args.pagename then track("show-box-pagename") end local args = require("Module:parameters").process(parent_args, params, nil, "number list", "show_box") local lang = args[1] local langcode = lang:getCode() -- Get the data from the data module. Some modules (e.g. currently [[Module:number list/data/ka]]) have to be -- loaded with require() because the exported numbers table has a metatable. local module_name = export.get_data_module_name(langcode) local m_data = require(module_name) local number_system = resolve_number_system(m_data) local pagename = args.pagename or (mw.title.getCurrentTitle().nsText == "การสืบสร้าง" and "*" or "") .. mw.loadData("Module:headword/data").pagename local cur_type = args.type -- We represent all numbers as strings in this function to deal with the limited precision inherent in Lua numbers. -- These large numbers do occur, such as 100 trillion ([[རབ་བཀྲམ་ཆེན་པོ]]), 1 sextillion, etc. Lua represents all -- numbers as 64-bit floats, meaning that some numbers above 2^53 cannot be represented exactly. The first power of -- 10 that cannot be represented exactly is 10^22 (ten sextillion in short scale, ten thousand trillion in long -- scale), but the first power of ten whose neighboring numbers cannot be represented exactly is 10^16 (ten -- quadrillion or ten thousand billion). Ideally we would use a big integer library of some kind, but unfortunately -- Wiktionary does not seem to have any such library installed. MediaWiki docs make mention of bcmath, but -- mw.bcmath.new() throws an error. -- -- In module data, we allow numbers to be indexed as Lua numbers or as strings. See lookup_data() above. local cur_num = args[2] or langcode == "und" and mw.title.getCurrentTitle().nsText == "แม่แบบ" and "2" or nil -- If a current number wasn't specified, find it by looking through the data for the current language and matching -- forms against the pagename. if not cur_num then local nums_and_types = lookup_number_by_form(lang, m_data, pagename, cur_type) if #nums_and_types == 0 then error("The current page name '" .. pagename .. "' does not match the spelling of any known number in [[" .. module_name .. "]]. Check the data module or the spelling of the page.") end for _, num_and_type in ipairs(nums_and_types) do local num = num_and_type[1] num = number_system.normalize_data_key(num) if cur_num and num ~= cur_num then local errparts = {} for _, num_and_type in ipairs(nums_and_types) do local num, typ = unpack(num_and_type) num = number_system.normalize_data_key(num) insert(errparts, ("%s (%s)"):format(num, typ)) end error("The current page name '" .. pagename .. "' matches the spelling of multiple numbers in [[" .. module_name .. "]]: " .. concat(errparts, ",") .. ". Please specify the number explicitly.") else cur_num = num end end end local function candidate_matches_pagename(candidate_num) local candidate_data = number_system.lookup_data(m_data, candidate_num) if not candidate_data then return false end for numtype, forms in pairs(candidate_data) do if not non_form_types[numtype] and (not cur_type or numtype == cur_type) then local form_list = type(forms) == "table" and forms or {forms} for _, form in ipairs(form_list) do local formobj = export.parse_form_and_modifiers(form) if form_equals_pagename(formobj, pagename, m_data, lang) then return true end end end end return false end local cur_num_candidates = number_system.normalize_input_candidates and number_system.normalize_input_candidates(cur_num) or {number_system.normalize_input(cur_num)} cur_num = cur_num_candidates[1] if #cur_num_candidates > 1 then for _, candidate in ipairs(cur_num_candidates) do if candidate_matches_pagename(candidate) then cur_num = candidate break end end end -- Wrapper around `export.lookup_data` that may throw an error if the number can't be found (specifically if -- param_for_error is given). local function lookup_data(numstr, param_for_error) numstr = number_system.normalize_data_key(numstr) local retval = number_system.lookup_data(m_data, numstr) if not retval and param_for_error then error(('The %s number "%s" specified in the "numbers" table entry for "%s" cannot be found in ' .. "[[%s]]; please fix the module."):format(param_for_error, numstr, cur_num, module_name)) end return retval end local cur_data = lookup_data(cur_num) if not cur_data then error('The number "' .. cur_num .. '" is not found in the "numbers" table in [[' .. module_name .. "]].") end local formatted_forms = {} if cur_type and not cur_data[cur_type] then error("The numeral type " .. cur_type .. " for " .. cur_num .. " is not found in [[" .. module_name .. "]].") end -- See above for the definition of "combined tag" and "tag list". The combined tag is just the concatenation of the -- tag list with ||| between the tags. local cur_tag_list, cur_combined_tag local form_types = export.get_number_types(m_data) -- LONG COMMENT EXPLAINING TAG HANDLING: -- -- For each form type (see `form_types` at top of file), group the entries for that form type by tag and figure out -- what the current form type and tag is, i.e. the form type and tag for the form matching the pagename. Tags are -- e.g. as in 'vuitanta-vuit<tag:Central>' or 'huitanta-huit<tag:Valencian>' for Catalan and allow different -- logical sets of numbers for the same form type to be identified. There can potentially be multiple tags per -- form, e.g. 'tair ar ddeg<tag:vigesimal><tag:feminine>' for the Welsh number 13 where there are both decimal/ -- vigesimal and masculine/feminine variants of this number. -- -- We need to do two passes over all form types. In the first pass, for each form type we parse all the forms, -- group them by tag, and store the results in a per-form-type table. In the second pass, we then format all forms -- for all form types. The reason for doing two passes is because we need to know the current tag in order to -- display a form type correctly (because we display the forms for the current tag before the forms for any other -- tags), but we won't know the current tag until we have done a pass over all form types and forms of those form -- types in order to determine which one matches the pagename. -- -- We use the current tag in two ways: -- 1. When displaying all the forms for a given number, we group both by form type and tag, and display the forms -- for a given form type/tag combination on a single line. For a given form type, we display the forms for each -- tag in the order the tags were specified in the data, except that the forms for the current tag are placed -- before all others (so e.g. for Catalan, if the current tag is "Valencian", we list the Valencian form(s) -- first even if the Central form(s) are listed first in the data file). -- 2. When displaying links to adjacent numbers in display_adjacent_number_links(), if there aren't form(s) for the -- current type, we don't display any links; but if there are mutiple tagged forms for the current type, we only -- display links for the forms for the current tag if there are any such forms, otherwise we display links for -- all forms of all tags. -- -- In the presence of multiple tags, things get a bit more complicated: -- 1. When displaying links to adjacent numbers, say the current tag is vigesimal+feminine, we want to prefer an -- adjacent-number form that's both vigesimal and feminine, but otherwise we prefer one that's vigesimal or -- feminine over one that's neither. Say the current tag is just vigesimal; we of course prefer an -- adjacent-number form that's just vigesimal, but otherwise we prefer a tag that's vigesimal + either masculine -- or feminine to a tag that's not vigesimal. So it seems we want the form(s) that have the maximum intersection -- of tags, and if there are two different tag lists with the same number of intersecting tags (e.g. the current -- tag is vigesimal+feminine and we have a choice of decimal+feminine or just vigesimal), we should prefer the -- form that has fewer non-matching tags, hence we prefer the just-vigesimal form. -- 2. By the same logic, when displaying all the forms for a given number, we should order by the size of the -- intersection of the tag list in question with the current tag list, then inversely by the size of the tag list -- (so we prefer tag lists with fewer non-matching tags), then by the order of the tag lists in the data file. local forms_by_tag_per_form_type = {} local seen_tags_per_form_type = {} local combined_tags_to_tag_lists_per_form_type = {} for _, form_type in ipairs(form_types) do local numeral = cur_data[form_type.key] if numeral then local seen_forms, forms_by_tag, seen_tags, combined_tags_to_tag_lists = export.group_numeral_forms_by_tag( type(numeral) == "table" and numeral or {numeral} ) forms_by_tag_per_form_type[form_type] = forms_by_tag seen_tags_per_form_type[form_type] = seen_tags combined_tags_to_tag_lists_per_form_type[form_type] = combined_tags_to_tag_lists for _, formobj in ipairs(seen_forms) do if not cur_tag_list and form_equals_pagename(formobj, pagename, m_data, lang) then cur_tag_list = formobj.tag or {} cur_combined_tag = tag_list_to_combined_tag(cur_tag_list) cur_type = cur_type or form_type.key end end end end -- Error if we couldn't locate the pagename among the forms for the current number. This only happens if the -- number if given explicitly in 2=. if not cur_type and mw.title.getCurrentTitle().nsText ~= "แม่แบบ" then error("The current page name '" .. pagename .. "' does not match any of the numbers listed in [[" .. module_name .. "]] for " .. cur_num .. ". Check the data module or the spelling of the page.") end -- Now, format all the forms for all form types for the current number. local function sort_combined_tags(combined_tags, seen_tags, combined_tags_to_tag_lists) -- cur_tag_list should normally never be nil, but can be so in template space local cur_tag_set = list_to_set(cur_tag_list or {}) local tags_to_order = {} for i, tag in ipairs(seen_tags) do tags_to_order[tag] = i end local function compare_tags(tag1, tag2) -- See long comment above. -- First compare by number of tags in common with the current tag list. local tag_list1 = combined_tags_to_tag_lists[tag1] local tag_list2 = combined_tags_to_tag_lists[tag2] local common1 = set_intersection(cur_tag_set, list_to_set(tag_list1)) local common2 = set_intersection(cur_tag_set, list_to_set(tag_list2)) local n_common1, n_common2 = set_size(common1), set_size(common2) if n_common1 ~= n_common2 then return n_common1 > n_common2 -- larger overlap with current tag list first end -- When overlap ties, shorter tag lists first (untagged default before explicit <tag:...> rows). if #tag_list1 ~= #tag_list2 then return #tag_list1 < #tag_list2 end -- Finally, compare by the original ordering in the number data, but if a tag is the same as the current -- tag, put it first, and if somehow we encounter a tag that's not in the original ordering, put it last. local index1 = tag1 == cur_combined_tag and 0 or tags_to_order[tag1] or #seen_tags + 1 local index2 = tag2 == cur_combined_tag and 0 or tags_to_order[tag2] or #seen_tags + 1 return index1 < index2 end sort(combined_tags, compare_tags) end for _, form_type in ipairs(form_types) do local forms_by_tag = forms_by_tag_per_form_type[form_type] local seen_tags = seen_tags_per_form_type[form_type] local combined_tags_to_tag_lists = combined_tags_to_tag_lists_per_form_type[form_type] if forms_by_tag then local function insert_forms_by_tag(tag) local formatted_tag_forms = {} local pagename_among_forms = false for _, formobj in ipairs(forms_by_tag[tag]) do insert(formatted_tag_forms, export.format_formobj(formobj, m_data, lang)) if form_equals_pagename(formobj, pagename, m_data, lang) then pagename_among_forms = true end end if tag ~= "" then local tag_list = combined_tags_to_tag_lists[tag] tag = concat(tag_list, " / ") end local displayed_number_type = export.display_number_type(form_type) .. (tag == "" and "" or (" (%s)"):format(tag)) if pagename_among_forms then displayed_number_type = "'''" .. displayed_number_type .. "'''" end insert(formatted_forms, " &nbsp;&nbsp;&nbsp; ''" .. displayed_number_type .. "'': " .. concat(formatted_tag_forms, ", ")) end sort_combined_tags(seen_tags, seen_tags, combined_tags_to_tag_lists) for _, tag in ipairs(seen_tags) do insert_forms_by_tag(tag) end end end -- Current number in header local cur_display = number_system.format_key_for_display(cur_num) local numeral if m_data.numeral_config then numeral = export.generate_non_arabic_numeral(m_data.numeral_config, cur_num) elseif cur_data["numeral"] then numeral = number_system.normalize_data_key(cur_data["numeral"]) end if numeral then cur_display = full_link{lang = lang, alt = numeral, tr = "-"} .. "<br/><span style=\"font-size: smaller;\">" .. cur_display .. "</span>" end --------------------- Determine next/prev, next/prev outer, and upper/lower numbers. ---------------------- -- We have three series of numbers to determine: -- -- 1. The next/previous numbers, which are always those in the sorted series of available numbers unless overridden -- by `next`/`prev` specs in an individual number. -- 2. The next/previous outer numbers, which are displayed to the outside of the next/previous numbers. These can -- be overridden for an individual number using `next_outer`/`prev_outer`. Otherwise, we try according to an -- algorithm described below in the code for computing the outer numbers. -- 3. The upper/lower numbers, which are displayed above or below the central number box. These can be overridden -- for an individual number using `upper`/`lower`. These are always 10x greater or less than the number in -- question, number not considering a number if it's the same as the next/previous number. local next_num, prev_num = get_next_and_prev_keys(m_data, cur_num, number_system, lookup_data) local next_data = next_num and lookup_data(next_num, "next") local prev_data = prev_num and lookup_data(prev_num, "previous") local next_outer_num, next_outer_data, prev_outer_num, prev_outer_data, upper_num, upper_data, lower_num, lower_data = number_system.derive_related_numbers(cur_num, cur_data, next_num, prev_num, lookup_data) -- For a number `num` (an "adjacent" number to the current number, i.e. either next, previous, next/previous outer, -- or upper/lower) with corresponding entry data `num_data`, display link(s) to the form(s) for this number that -- are associated with the current type and tag. If there is a single form to be linked to, the form is linked -- using the number itself as the display text; otherwise, the multiple forms are linked with superscripted [a], -- [b], etc. and the number it displayed adjacent to the links. In either case, beside the number there may be an -- arrow. If `arrow` == "rarrow", the format is like this: -- if multiple entries: -- <numeral> → <sup>[a], [b], ...</sup> -- else -- <numeral> → -- If `arrow` == "larrow", the format is like this: -- if multiple entries: -- <sup>[a], [b], ...</sup> ← <numeral> -- else -- ← <numeral> -- Otherwise, the format is like this: -- if multiple entries: -- <numeral><sup>[a], [b], ...</sup> -- else -- <numeral> -- -- Returns nil if `num_data` is nil or there is no entry in `num_data` for the current number type. -- -- For the handling of tags in this function, see the "LONG COMMENT EXPLAINING TAG HANDLING" above. local function display_adjacent_number_links(num, num_data, arrow) if not num_data then return nil end local forms = num_data[cur_type] if not forms then return nil elseif type(forms) ~= "table" then forms = {forms} end local seen_forms, forms_by_tag = export.group_numeral_forms_by_tag(forms) -- FIXME: `cur_tag` is not defined. This seems to have been missed when multiple tag handling was added in [[Special:Diff/68978046]]. local forms_to_display if cur_tag and forms_by_tag[cur_tag] then forms_to_display = forms_by_tag[cur_tag] else forms_to_display = seen_forms end for i, form_to_display in ipairs(forms_to_display) do forms_to_display[i] = form_to_display.link or maybe_unaffix(m_data, form_to_stripped_form(form_to_display.form, lang)) end local seen_pagenames = {} local pagenames_to_display = {} for _, form in ipairs(forms_to_display) do if not seen_pagenames[form] then insert(pagenames_to_display, form) seen_pagenames[form] = true end end if #pagenames_to_display == 0 then return nil end num = number_system.format_key_for_display(num) local num_arrow = arrow == "rarrow" and num .. "&nbsp;&nbsp;→&nbsp;" or arrow == "larrow" and "&nbsp;←&nbsp;&nbsp;" .. num or num if #pagenames_to_display > 1 then local a = ("a"):byte() local links = {} for i, term in ipairs(pagenames_to_display) do links[i] = m_links.language_link{lang = lang, term = term, alt = "[" .. char(a + i - 1) .. "]"} end links = "<sup>" .. concat(links, ", ") .. "</sup>" return arrow == "larrow" and links .. num_arrow or num_arrow .. links else return m_links.language_link { lang = lang, term = pagenames_to_display[1], alt = num_arrow, } end end -- Display links to previous/next numbers local prev_display = display_adjacent_number_links(prev_num, prev_data, "larrow") or "" local next_display = display_adjacent_number_links(next_num, next_data, "rarrow") or "" -- Display links to previous/next outer numbers local prev_outer_display = display_adjacent_number_links(prev_outer_num, prev_outer_data, "larrow") local next_outer_display = display_adjacent_number_links(next_outer_num, next_outer_data, "rarrow") -- Display links to upper/lower numbers local upper_display = display_adjacent_number_links(upper_num, upper_data) local lower_display = display_adjacent_number_links(lower_num, lower_data) local canonical_name = lang:getCategoryName() --th local appendix1 = "เลข" .. canonical_name local appendix2 = "จำนวน" .. canonical_name local appendix local title if mw.title.new(appendix1, "ภาคผนวก"):getContent() then appendix = appendix1 elseif mw.title.new(appendix2, "ภาคผนวก"):getContent() then appendix = appendix2 end if appendix then --title = "[[ภาคผนวก:" .. appendix .. "|" .. appendix2 .. "]]" title = "[[ภาคผนวก:" .. appendix .. "|เลข-จำนวนใน" .. canonical_name .. "]]" else --title = appendix2 title = "เลข-จำนวนใน" .. canonical_name end local function format_cell(contents, class_name, colspan, bold) class_name = class_name and (" " .. class_name) or "" colspan = colspan and ('colspan="%s" '):format(colspan) or "" bold = bold and "!" or "|" return ('%s %sclass="table-cell %s | %s\n'):format(bold, colspan, class_name, contents) end local has_outer_display = not not (prev_outer_display or next_outer_display) local function format_upper_lower_display_row(display) local blank_cell if has_outer_display then blank_cell = '| colspan="2" |\n' else blank_cell = "|\n" end local parts = {'|- class="adjacent-panel"\n'} insert(parts, blank_cell) insert(parts, format_cell(display, "adjacent-number")) insert(parts, blank_cell) return concat(parts) end upper_display = upper_display and format_upper_lower_display_row(upper_display) or "" lower_display = lower_display and format_upper_lower_display_row(lower_display) or "" local function format_display_cell(display) return format_cell(display, "adjacent-number") end prev_display = format_display_cell(prev_display) next_display = format_display_cell(next_display) prev_outer_display = has_outer_display and format_display_cell(prev_outer_display or "") or "" next_outer_display = has_outer_display and format_display_cell(next_outer_display or "") or "" cur_display = format_cell(cur_display, "current-number", nil, "bold") local forms_display = ('| colspan="%s" style="text-align: center;" | %s\n'):format( has_outer_display and 5 or 3, concat(formatted_forms, "<br/>")) local footer_display if cur_data.wplink then local footer = --"[[w:" .. lang:getCode() .. ":|" .. lang:getCanonicalName() .. " Wikipedia]] article on " .. "[[w:" .. lang:getCode() .. ":|วิกิพีเดีย" .. lang:getCanonicalName() .. "]]มีบทความเกี่ยวกับ " .. m_links.full_link{lang = lang, term = "w:" .. lang:getCode() .. ":" .. cur_data.wplink, alt = number_system.format_key_for_display(cur_num)} footer_display = '|- style="text-align: center;"\n' .. format_cell(footer, "footer-cell", has_outer_display and 5 or 3) else footer_display = "" end local edit_link = ' <sup>(<span class="plainlinks">[' .. tostring(mw.uri.fullUrl(module_name, { action = "edit" })) .. " แก้ไข]</span>)</sup>" return [=[{| class="floatright number-box" cellpadding="5" cellspacing="0" style="background: var(--wikt-palette-white, #ffffff); color: inherit; border: 1px var(--border-color-base,#aaa) solid; border-collapse: collapse; margin-top: .5em;" rules="all" |+ ''']=] .. title .. edit_link .. "'''\n" .. upper_display .. '|- style="text-align: center;"\n' .. prev_outer_display .. prev_display .. cur_display .. next_display .. next_outer_display .. "|-\n" .. lower_display .. "|-\n" .. forms_display .. footer_display .. "|}" .. require("Module:TemplateStyles")("Template:number box/styles.css") end function export.show_box_manual(frame) local m_links = require("Module:links") local num_type = frame.args["type"] local args = require("Module:parameters").process(frame:getParent().args, { [1] = {required = true, type = "language", default = "und"}, sc = {type = "script"}, headlink = true, wplink = true, alt = true, tr = true, [2] = true, -- prev_symbol [3] = true, -- cur_symbol [4] = true, -- next_symbol [5] = true, -- prev_term [6] = true, -- next_term card = true, cardalt = true, cardtr = true, ord = true, ordalt = true, ordtr = true, adv = true, advalt = true, advtr = true, mult = true, multalt = true, multtr = true, dis = true, disalt = true, distr = true, coll = true, collalt = true, colltr = true, frac = true, fracalt = true, fractr = true, opt = true, optx = true, optxalt = true, optxtr = true, opt2 = true, opt2x = true, opt2xalt = true, opt2xtr = true, }) local lang = args[1] local sc = args.sc local headlink = args.headlink local wplink = args.wplink local alt = args.alt local tr = args.tr local prev_symbol = args[2] local cur_symbol = args[3] local next_symbol = args[4] local prev_term = args[5] local next_term = args[6] local cardinal_term = args.card; local cardinal_alt = args.cardalt; local cardinal_tr = args.cardtr local ordinal_term = args.ord; local ordinal_alt = args.ordalt; local ordinal_tr = args.ordtr local adverbial_term = args.adv; local adverbial_alt = args.advalt; local adverbial_tr = args.advtr local multiplier_term = args.mult; local multiplier_alt = args.multalt; local multiplier_tr = args.multtr local distributive_term = args.dis; local distributive_alt = args.disalt; local distributive_tr = args.distr local collective_term = args.coll; local collective_alt = args.collalt; local collective_tr = args.colltr local fractional_term = args.frac; local fractional_alt = args.fracalt; local fractional_tr = args.fractr local optional1_title = args.opt local optional1_term = args.optx; local optional1_alt = args.optxalt; local optional1_tr = args.optxtr local optional2_title = args.opt2 local optional2_term = args.opt2x; local optional2_alt = args.opt2xalt; local optional2_tr = args.opt2xtr track(lang:getCode()) if sc then track("sc") end if headlink then track("headlink") end if wplink then track("wplink") end if alt then track("alt") end if cardinal_alt or ordinal_alt or adverbial_alt or multiplier_alt or distributive_alt or collective_alt or fractional_alt or optional1_alt or optional2_alt then track("xalt") end local subpage = mw.loadData("Module:headword/data").pagename local is_reconstructed = lang:hasType("reconstructed") or mw.title.getCurrentTitle().nsText == "การสืบสร้าง" -- Commenting out this line prevents passing redundant alts to full_link; -- however, there may have been a purpose to it. -- alt = alt or (is_reconstructed and "*" or "") .. subpage if num_type == "เชิงการนับ" then cardinal_term = cardinal_term or (is_reconstructed and "*" or "") .. subpage cardinal_alt = cardinal_alt or alt cardinal_tr = cardinal_tr or tr elseif num_type == "เชิงอันดับที่" then ordinal_term = ordinal_term or (is_reconstructed and "*" or "") .. subpage ordinal_alt = ordinal_alt or alt ordinal_tr = ordinal_tr or tr end local header = "จำนวน" .. num_type .. lang:getCategoryName() if headlink then header = "[[" .. headlink .. "|" .. header .. "]]" end local previous = "" if prev_term or prev_symbol then previous = m_links.full_link{lang = lang, sc = sc, term = prev_term, alt = "&nbsp;&lt;&nbsp;&nbsp;" .. prev_symbol, tr = "-", no_alt_ast = true} end local current = m_links.full_link{lang = lang, sc = sc, alt = cur_symbol, tr = "-", no_alt_ast = true} local next = "" if next_term or next_symbol then next = m_links.full_link{lang = lang, sc = sc, term = next_term, alt = next_symbol .. "&nbsp;&nbsp;&gt;&nbsp;", tr = "-", no_alt_ast = true} end local forms = {} if cardinal_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[จำนวนเชิงการนับ|เชิงการนับ]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = cardinal_term, alt = cardinal_alt, tr = cardinal_tr}) end if ordinal_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[จำนวนเชิงอันดับที่|เชิงอันดับที่]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = ordinal_term, alt = ordinal_alt, tr = ordinal_tr}) end if adverbial_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[จำนวนเชิงกริยาวิเศษณ์|เชิงกริยาวิเศษณ์]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = adverbial_term, alt = adverbial_alt, tr = adverbial_tr}) end if multiplier_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[ตัวคูณ]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = multiplier_term, alt = multiplier_alt, tr = multiplier_tr}) end if distributive_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[จำนวนเชิงแจกแจง|เชิงแจกแจง]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = distributive_term, alt = distributive_alt, tr = distributive_tr}) end if collective_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[จำนวนเชิงรวบรวม|เชิงรวบรวม]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = collective_term, alt = collective_alt, tr = collective_tr}) end if fractional_term then insert(forms, " &nbsp;&nbsp;&nbsp; ''[[เศษส่วน]]'' : " .. m_links.full_link{lang = lang, sc = sc, term = fractional_term, alt = fractional_alt, tr = fractional_tr}) end if optional1_title then insert(forms, " &nbsp;&nbsp;&nbsp; ''" .. optional1_title .. "'' : " .. m_links.full_link{lang = lang, sc = sc, term = optional1_term, alt = optional1_alt, tr = optional1_tr}) end if optional2_title then insert(forms, " &nbsp;&nbsp;&nbsp; ''" .. optional2_title .. "'' : " .. m_links.full_link{lang = lang, sc = sc, term = optional2_term, alt = optional2_alt, tr = optional2_tr}) end local footer = "" if wplink then footer = --"[[w:" .. lang:getCode() .. ":|" .. lang:getCanonicalName() .. " Wikipedia]] article on " .. "[[w:" .. lang:getCode() .. ":|วิกิพีเดีย" .. lang:getCanonicalName() .. "]]มีบทความเกี่ยวกับ " .. m_links.full_link{lang = lang, sc = sc, term = "w:" .. lang:getCode() .. ":" .. wplink, alt = alt, tr = tr} end return [=[{| class="floatright number-box" cellpadding="5" cellspacing="0" rules="all" |+ ''']=] .. header .. [=[''' |- | class="adjacent-slot" | ]=] .. previous .. [=[ ! class="current-slot" | ]=] .. current .. [=[ | class="adjacent-slot" | ]=] .. next .. [=[ |- | colspan="3" class="form-slot" | ]=] .. concat(forms, "<br/>") .. [=[ |- | colspan="3" class="footer-slot" | ]=] .. footer .. [=[ |}]=] .. require("Module:TemplateStyles")("Template:number box/styles.css") end return export 6teaeicibfld60nbxpkeh8lso4jf6xk ยอ 0 170749 5754333 5686341 2026-08-06T00:31:46Z Alifshinobi 397 /* รากศัพท์ 3 */ 5754333 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == [[ไฟล์:P Morc D1252.JPG|thumb|ยอ (ไม้ต้น)]] [[ไฟล์:Thookku Valai.jpg|thumb|ยอ (เครื่องจับปลา)]] [[ไฟล์:Gio lua 2.jpg|thumb|หมูยอ]] === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === ==== คำนาม ==== {{th-noun}} # [[ชื่อ]][[ไม้ต้น]][[ชนิด]] ''Morinda citrifolia'' L. [[ใน]][[วงศ์]] Rubiaceae [[แก่น]][[และ]][[ราก]][[สี]][[เหลือง]][[ใช้]][[ย้อม]][[ผ้า]] [[ผล]]และ[[ใบ]][[กิน]][[ได้]] === รากศัพท์ 2 === เทียบ{{cog|ltc|-}} {{ltc-l|諛}}; ร่วมเชื้อสายกับ{{cog|nod|ᨿᩬᩴ}}, {{cog|lo|ຍໍ}}, {{cog|khb|ᦍᦸ}}, {{cog|blt|ꪑꪷ}}, {{cog|twh|ꪑꪮ}}, {{cog|shn|ယေႃး}}, {{cog|phk|ယေႃ}}, {{cog|za|yoj}} ==== คำกริยา ==== {{th-verb}} # [[กล่าว]][[คำ]][[เพื่อ]][[เชิดชู]] [[หรือ]]เพื่อ[[ให้]][[ชอบใจ]] #: {{ux|th|ยอพระเกียรติ}} #: {{ux|th|เด็กชอบให้ยอ}} # [[ยก]] #: {{ux|th|ยอกร}} # ยกเพื่อ[[กระแทก]] #: {{ux|th|ยอด้วยเข่า}} === รากศัพท์ 3 === เทียบ{{cog|za|hoj|tr=ห้อ|t=บอกใหควายหยุด}} ==== คำกริยา ==== {{th-verb}} # [[บอก]]ให้[[หยุด]] (ใช้[[แก่]][[วัว]][[ควาย]]) # ให้หยุด, หยุด #: {{ux|th|ยอทัพ}} # {{lb|th|โดยปริยาย}} [[เหนี่ยวรั้ง]][[ไม่]][[ไหว]] #: {{ux|th|ยอไม่หยุด}} === รากศัพท์ 4 === ==== คำนาม ==== {{th-noun}} # [[เครื่อง]][[จับ]][[ปลา]]ชนิด[[หนึ่ง]] [[เป็น]][[ร่างแห]][[สี่เหลี่ยม]][[มี]][[คัน]][[สำหรับ]]ยก ===== ดูเพิ่ม ===== * {{l|th|ลอบ}} * {{l|th|สวิง}} * {{l|th|แห}} * {{l|th|อวน}} === รากศัพท์ 5 === {{bor+|th|vi|giò||เนื้อบด}} สำเนียงเว้ว่า ''ยอ'' สำเนียงโฮจิมินห์ว่า ''หย่อ'' ==== คำนาม ==== {{th-noun}} # [[ของกิน]][[ทำ]][[ด้วย]][[เนื้อ]][[หมู]]หรือเนื้อ[[ไก่]][[ผสม]][[เครื่องปรุง]][[บด]][[แล้ว]][[อัด]]เป็น[[แท่ง]] และ[[นึ่ง]]ให้[[สุก]] [[เรียก]]ว่า หมูยอ ไก่ยอ == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ɲɔː˧˧/|a=เชียงใหม่}} === คำกริยา === {{nod-verb|tl=1}} # {{lb|nod|สกรรม}} {{alt|nod|ᨿᩬᩴ}} 3yjzl0efxg3sevjzu03vdawmtr3pjpb 5754334 5754333 2026-08-06T00:32:29Z Alifshinobi 397 /* ภาษาไทย */ 5754334 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == [[ไฟล์:P Morc D1252.JPG|thumb|ยอ (ไม้ต้น)]] [[ไฟล์:Thookku Valai.jpg|thumb|ยอ (เครื่องจับปลา)]] [[ไฟล์:Gio lua 2.jpg|thumb|หมูยอ]] === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === เทียบ{{cog|ltc|-}} {{ltc-l|諛}}; ร่วมเชื้อสายกับ{{cog|nod|ᨿᩬᩴ}}, {{cog|lo|ຍໍ}}, {{cog|khb|ᦍᦸ}}, {{cog|blt|ꪑꪷ}}, {{cog|twh|ꪑꪮ}}, {{cog|shn|ယေႃး}}, {{cog|phk|ယေႃ}}, {{cog|za|yoj}} ==== คำกริยา ==== {{th-verb}} # [[กล่าว]][[คำ]][[เพื่อ]][[เชิดชู]] [[หรือ]]เพื่อ[[ให้]][[ชอบใจ]] #: {{ux|th|ยอพระเกียรติ}} #: {{ux|th|เด็กชอบให้ยอ}} # [[ยก]] #: {{ux|th|ยอกร}} # ยกเพื่อ[[กระแทก]] #: {{ux|th|ยอด้วยเข่า}} === รากศัพท์ 2 === ==== คำนาม ==== {{th-noun}} # [[ชื่อ]][[ไม้ต้น]][[ชนิด]] ''Morinda citrifolia'' L. [[ใน]][[วงศ์]] Rubiaceae [[แก่น]][[และ]][[ราก]][[สี]][[เหลือง]][[ใช้]][[ย้อม]][[ผ้า]] [[ผล]]และ[[ใบ]][[กิน]][[ได้]] === รากศัพท์ 3 === เทียบ{{cog|za|hoj|tr=ห้อ|t=บอกใหควายหยุด}} ==== คำกริยา ==== {{th-verb}} # [[บอก]]ให้[[หยุด]] (ใช้[[แก่]][[วัว]][[ควาย]]) # ให้หยุด, หยุด #: {{ux|th|ยอทัพ}} # {{lb|th|โดยปริยาย}} [[เหนี่ยวรั้ง]][[ไม่]][[ไหว]] #: {{ux|th|ยอไม่หยุด}} === รากศัพท์ 4 === ==== คำนาม ==== {{th-noun}} # [[เครื่อง]][[จับ]][[ปลา]]ชนิด[[หนึ่ง]] [[เป็น]][[ร่างแห]][[สี่เหลี่ยม]][[มี]][[คัน]][[สำหรับ]]ยก ===== ดูเพิ่ม ===== * {{l|th|ลอบ}} * {{l|th|สวิง}} * {{l|th|แห}} * {{l|th|อวน}} === รากศัพท์ 5 === {{bor+|th|vi|giò||เนื้อบด}} สำเนียงเว้ว่า ''ยอ'' สำเนียงโฮจิมินห์ว่า ''หย่อ'' ==== คำนาม ==== {{th-noun}} # [[ของกิน]][[ทำ]][[ด้วย]][[เนื้อ]][[หมู]]หรือเนื้อ[[ไก่]][[ผสม]][[เครื่องปรุง]][[บด]][[แล้ว]][[อัด]]เป็น[[แท่ง]] และ[[นึ่ง]]ให้[[สุก]] [[เรียก]]ว่า หมูยอ ไก่ยอ == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ɲɔː˧˧/|a=เชียงใหม่}} === คำกริยา === {{nod-verb|tl=1}} # {{lb|nod|สกรรม}} {{alt|nod|ᨿᩬᩴ}} 35mkm5gzhe9e9v76ed62r51eblz2kp7 5754407 5754334 2026-08-06T03:14:46Z Alifshinobi 397 /* รากศัพท์ 1 */ 5754407 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == [[ไฟล์:P Morc D1252.JPG|thumb|ยอ (ไม้ต้น)]] [[ไฟล์:Thookku Valai.jpg|thumb|ยอ (เครื่องจับปลา)]] [[ไฟล์:Gio lua 2.jpg|thumb|หมูยอ]] === การออกเสียง === {{th-pron}} === รากศัพท์ 1 === เทียบ{{cog|ltc|-}} {{ltc-l|諛}}; ร่วมเชื้อสายกับ{{cog|lo|ຍໍ}}, {{cog|nod|ᨿᩬᩴ}}, {{cog|kkh|ᨿᩳ}}, {{cog|khb|ᦍᦸ}}, {{cog|blt|ꪑꪷ}}, {{cog|twh|ꪑꪮ}}, {{cog|shn|ယေႃး}}, {{cog|phk|ယေႃ}}, {{cog|za|yoj}} ==== คำกริยา ==== {{th-verb}} # [[กล่าว]][[คำ]][[เพื่อ]][[เชิดชู]] [[หรือ]]เพื่อ[[ให้]][[ชอบใจ]] #: {{ux|th|ยอพระเกียรติ}} #: {{ux|th|เด็กชอบให้ยอ}} # [[ยก]] #: {{ux|th|ยอกร}} # ยกเพื่อ[[กระแทก]] #: {{ux|th|ยอด้วยเข่า}} === รากศัพท์ 2 === ==== คำนาม ==== {{th-noun}} # [[ชื่อ]][[ไม้ต้น]][[ชนิด]] ''Morinda citrifolia'' L. [[ใน]][[วงศ์]] Rubiaceae [[แก่น]][[และ]][[ราก]][[สี]][[เหลือง]][[ใช้]][[ย้อม]][[ผ้า]] [[ผล]]และ[[ใบ]][[กิน]][[ได้]] === รากศัพท์ 3 === เทียบ{{cog|za|hoj|tr=ห้อ|t=บอกใหควายหยุด}} ==== คำกริยา ==== {{th-verb}} # [[บอก]]ให้[[หยุด]] (ใช้[[แก่]][[วัว]][[ควาย]]) # ให้หยุด, หยุด #: {{ux|th|ยอทัพ}} # {{lb|th|โดยปริยาย}} [[เหนี่ยวรั้ง]][[ไม่]][[ไหว]] #: {{ux|th|ยอไม่หยุด}} === รากศัพท์ 4 === ==== คำนาม ==== {{th-noun}} # [[เครื่อง]][[จับ]][[ปลา]]ชนิด[[หนึ่ง]] [[เป็น]][[ร่างแห]][[สี่เหลี่ยม]][[มี]][[คัน]][[สำหรับ]]ยก ===== ดูเพิ่ม ===== * {{l|th|ลอบ}} * {{l|th|สวิง}} * {{l|th|แห}} * {{l|th|อวน}} === รากศัพท์ 5 === {{bor+|th|vi|giò||เนื้อบด}} สำเนียงเว้ว่า ''ยอ'' สำเนียงโฮจิมินห์ว่า ''หย่อ'' ==== คำนาม ==== {{th-noun}} # [[ของกิน]][[ทำ]][[ด้วย]][[เนื้อ]][[หมู]]หรือเนื้อ[[ไก่]][[ผสม]][[เครื่องปรุง]][[บด]][[แล้ว]][[อัด]]เป็น[[แท่ง]] และ[[นึ่ง]]ให้[[สุก]] [[เรียก]]ว่า หมูยอ ไก่ยอ == ภาษาคำเมือง == === การออกเสียง === * {{IPA|nod|/ɲɔː˧˧/|a=เชียงใหม่}} === คำกริยา === {{nod-verb|tl=1}} # {{lb|nod|สกรรม}} {{alt|nod|ᨿᩬᩴ}} j6wasmfiwyk47feutnalkxan15fkthj onse 0 175042 5754336 1349644 2026-08-06T01:24:51Z Octahedron80 267 /* ภาษาตากาล็อก */ เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754336 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} According to Zorc (1993), the word is possibly either: * A Spanish-esque pronunciation pun sounding like {{der|tl|es|once||eleven}} (see etymology 1), จาก{{der|tl|en|once||one time}}, a loose calque of {{m|tl|makaisa||to get one of something; to be able to score a point; to fool someone}}. See also {{m|tl|wans}}. * Related to the double line visuals of the written number 11, possibly about [[double-dealing]]. The sense can also be possibly about having a [[one up]] (an advantage) above a common arbitrary number 10. See also {{m|tl|maisahan||to be able to get one-upped}}. ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[cheating]]; [[duping]]; [[swindling]]; [[fooling]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:slang, dated>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, to which attests the pronoun form ''ons'' {{m|af|s'n|s’n}} (“ours”), as well as dialectal Afrikaans {{m|af|julle}} ''se'' (“your”) and {{m|af|hulle}} ''se'' (“their”). === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|otherwise|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|first-person plural possessive determiner.}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # เป็นไปได้ว่า #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} 8kfspe7z3kbbow5qcivhzim5ld72j2m 5754337 5754336 2026-08-06T01:25:42Z Octahedron80 267 /* คำนาม */ 5754337 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} According to Zorc (1993), the word is possibly either: * A Spanish-esque pronunciation pun sounding like {{der|tl|es|once||eleven}} (see etymology 1), จาก{{der|tl|en|once||one time}}, a loose calque of {{m|tl|makaisa||to get one of something; to be able to score a point; to fool someone}}. See also {{m|tl|wans}}. * Related to the double line visuals of the written number 11, possibly about [[double-dealing]]. The sense can also be possibly about having a [[one up]] (an advantage) above a common arbitrary number 10. See also {{m|tl|maisahan||to be able to get one-upped}}. ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:slang, dated>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, to which attests the pronoun form ''ons'' {{m|af|s'n|s’n}} (“ours”), as well as dialectal Afrikaans {{m|af|julle}} ''se'' (“your”) and {{m|af|hulle}} ''se'' (“their”). === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|otherwise|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|first-person plural possessive determiner.}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # เป็นไปได้ว่า #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} 48vw32mvicddmbx1o56aemfqeslvr4k 5754338 5754337 2026-08-06T01:26:01Z Octahedron80 267 /* คำนาม */ 5754338 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} According to Zorc (1993), the word is possibly either: * A Spanish-esque pronunciation pun sounding like {{der|tl|es|once||eleven}} (see etymology 1), จาก{{der|tl|en|once||one time}}, a loose calque of {{m|tl|makaisa||to get one of something; to be able to score a point; to fool someone}}. See also {{m|tl|wans}}. * Related to the double line visuals of the written number 11, possibly about [[double-dealing]]. The sense can also be possibly about having a [[one up]] (an advantage) above a common arbitrary number 10. See also {{m|tl|maisahan||to be able to get one-upped}}. ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:สแลง, ล้าสมัย>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, to which attests the pronoun form ''ons'' {{m|af|s'n|s’n}} (“ours”), as well as dialectal Afrikaans {{m|af|julle}} ''se'' (“your”) and {{m|af|hulle}} ''se'' (“their”). === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|otherwise|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|first-person plural possessive determiner.}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # เป็นไปได้ว่า #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} 8efetsvv12z8pkyipluppm8ghbc451y 5754339 5754338 2026-08-06T01:28:11Z Octahedron80 267 /* รากศัพท์ */ 5754339 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} According to Zorc (1993), the word is possibly either: * A Spanish-esque pronunciation pun sounding like {{der|tl|es|once||eleven}} (see etymology 1), จาก{{der|tl|en|once||one time}}, a loose calque of {{m|tl|makaisa||to get one of something; to be able to score a point; to fool someone}}. See also {{m|tl|wans}}. * Related to the double line visuals of the written number 11, possibly about [[double-dealing]]. The sense can also be possibly about having a [[one up]] (an advantage) above a common arbitrary number 10. See also {{m|tl|maisahan||to be able to get one-upped}}. ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:สแลง, ล้าสมัย>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, ซึ่งเห็นได้จากรูปสรรพนาม ''ons'' {{m|af|s'n|s’n}} (“ของพวกเรา (กรรม)”) เช่นเดียวกับคำอาฟรีกานส์ถิ่น {{m|af|julle}} ''se'' (“ของคุณ”) และ {{m|af|hulle}} ''se'' (“ของพวกเขา”) === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|otherwise|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|first-person plural possessive determiner.}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # เป็นไปได้ว่า #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} p52u7dvdyw89zbtafedrym6kjmqdw33 5754340 5754339 2026-08-06T01:29:15Z Octahedron80 267 /* ตัวกำหนด */ 5754340 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} According to Zorc (1993), the word is possibly either: * A Spanish-esque pronunciation pun sounding like {{der|tl|es|once||eleven}} (see etymology 1), จาก{{der|tl|en|once||one time}}, a loose calque of {{m|tl|makaisa||to get one of something; to be able to score a point; to fool someone}}. See also {{m|tl|wans}}. * Related to the double line visuals of the written number 11, possibly about [[double-dealing]]. The sense can also be possibly about having a [[one up]] (an advantage) above a common arbitrary number 10. See also {{m|tl|maisahan||to be able to get one-upped}}. ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:สแลง, ล้าสมัย>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, ซึ่งเห็นได้จากรูปสรรพนาม ''ons'' {{m|af|s'n|s’n}} (“ของพวกเรา (กรรม)”) เช่นเดียวกับคำอาฟรีกานส์ถิ่น {{m|af|julle}} ''se'' (“ของคุณ”) และ {{m|af|hulle}} ''se'' (“ของพวกเขา”) === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|otherwise|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|ตัวกำหนดบอกเจ้าของบุรุษที่หนึ่งพหูพจน์}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # เป็นไปได้ว่า #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} 0lja0oavwh54tkkwggbg160xqkracua 5754341 5754340 2026-08-06T01:31:12Z Octahedron80 267 /* ตัวกำหนด */ 5754341 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} According to Zorc (1993), the word is possibly either: * A Spanish-esque pronunciation pun sounding like {{der|tl|es|once||eleven}} (see etymology 1), จาก{{der|tl|en|once||one time}}, a loose calque of {{m|tl|makaisa||to get one of something; to be able to score a point; to fool someone}}. See also {{m|tl|wans}}. * Related to the double line visuals of the written number 11, possibly about [[double-dealing]]. The sense can also be possibly about having a [[one up]] (an advantage) above a common arbitrary number 10. See also {{m|tl|maisahan||to be able to get one-upped}}. ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:สแลง, ล้าสมัย>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, ซึ่งเห็นได้จากรูปสรรพนาม ''ons'' {{m|af|s'n|s’n}} (“ของพวกเรา (กรรม)”) เช่นเดียวกับคำอาฟรีกานส์ถิ่น {{m|af|julle}} ''se'' (“ของคุณ”) และ {{m|af|hulle}} ''se'' (“ของพวกเขา”) === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|มิฉะนั้น|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|ตัวกำหนดบอกเจ้าของบุรุษที่หนึ่งพหูพจน์}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # เป็นไปได้ว่า #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} qowms14jy1if1pnv6nrflqfulvhc3f1 5754342 5754341 2026-08-06T01:32:07Z Octahedron80 267 /* เลข */ 5754342 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} According to Zorc (1993), the word is possibly either: * A Spanish-esque pronunciation pun sounding like {{der|tl|es|once||eleven}} (see etymology 1), จาก{{der|tl|en|once||one time}}, a loose calque of {{m|tl|makaisa||to get one of something; to be able to score a point; to fool someone}}. See also {{m|tl|wans}}. * Related to the double line visuals of the written number 11, possibly about [[double-dealing]]. The sense can also be possibly about having a [[one up]] (an advantage) above a common arbitrary number 10. See also {{m|tl|maisahan||to be able to get one-upped}}. ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:สแลง, ล้าสมัย>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, ซึ่งเห็นได้จากรูปสรรพนาม ''ons'' {{m|af|s'n|s’n}} (“ของพวกเรา (กรรม)”) เช่นเดียวกับคำอาฟรีกานส์ถิ่น {{m|af|julle}} ''se'' (“ของคุณ”) และ {{m|af|hulle}} ''se'' (“ของพวกเขา”) === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|มิฉะนั้น|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|ตัวกำหนดบอกเจ้าของบุรุษที่หนึ่งพหูพจน์}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} 1xoozzovr7l9ahdaihgdvlrntg1jcfz 5754345 5754342 2026-08-06T01:44:37Z Octahedron80 267 /* รากศัพท์ 2 */ 5754345 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} According to Zorc (1993), the word is possibly either: * A Spanish-esque pronunciation pun sounding like {{der|tl|es|once||eleven}} (see etymology 1), จาก{{der|tl|en|once||one time}}, a loose calque of {{m|tl|makaisa||to get one of something; to be able to score a point; to fool someone}}. See also {{m|tl|wans}}. * Related to the double line visuals of the written number 11, possibly about [[double-dealing]]. The sense can also be possibly about having a [[one up]] (an advantage) above a common arbitrary number 10. See also {{m|tl|maisahan||to be able to get one-upped}}. ตามที่ Zorc (1993) ระบุ คำนี้เป็นไปได้ว่า: * เป็นการเล่นคำที่ออกเสียงแบบภาษาสเปนคล้ายกับคำว่า {{der|tl|es|once||สิบเอ็ด}} (รากศัพท์ 1), จาก{{der|tl|en|once||หนึ่งครั้ง}}, ซึ่งเป็นการแปลตรงตัวอย่างหลวม ๆ จาก {{m|tl|makaisa||ได้เปรียบ; สามารถทำคะแนนได้; หลอกลวงผู้อื่น”); ดูเพิ่มที่ {{m|tl|wans}} * เกี่ยวข้องกับภาพเส้นตรงคู่ของตัวเลข 11 ที่เขียน อาจหมายถึงการเสแสร้งกับทั้งสองฝ่าย ([[double-dealing]]) ความหมายอีกอย่างหนึ่งอาจหมายถึงการมีข้อได้เปรียบ ([[one up]]) เหนือกว่าตัวเลข 10 ทั่วไป ดูเพิ่มที่ {{m|tl|maisahan||สามารถถูกเอาชนะได้}} ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:สแลง, ล้าสมัย>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, ซึ่งเห็นได้จากรูปสรรพนาม ''ons'' {{m|af|s'n|s’n}} (“ของพวกเรา (กรรม)”) เช่นเดียวกับคำอาฟรีกานส์ถิ่น {{m|af|julle}} ''se'' (“ของคุณ”) และ {{m|af|hulle}} ''se'' (“ของพวกเขา”) === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|มิฉะนั้น|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|ตัวกำหนดบอกเจ้าของบุรุษที่หนึ่งพหูพจน์}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} 7s5jcumcv8y0oayqrlm9h3smjy1vs5x 5754346 5754345 2026-08-06T01:45:18Z Octahedron80 267 /* รากศัพท์ 2 */ 5754346 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} ตามที่ Zorc (1993) ระบุ คำนี้เป็นไปได้ว่า: * เป็นการเล่นคำที่ออกเสียงแบบภาษาสเปนคล้ายกับคำว่า {{der|tl|es|once||สิบเอ็ด}} (รากศัพท์ 1), จาก{{der|tl|en|once||หนึ่งครั้ง}}, ซึ่งเป็นการแปลตรงตัวอย่างหลวม ๆ จาก {{m|tl|makaisa||ได้เปรียบ; สามารถทำคะแนนได้; หลอกลวงผู้อื่น”); ดูเพิ่มที่ {{m|tl|wans}} * เกี่ยวข้องกับภาพเส้นตรงคู่ของตัวเลข 11 ที่เขียน อาจหมายถึงการเสแสร้งกับทั้งสองฝ่าย ([[double-dealing]]) ความหมายอีกอย่างหนึ่งอาจหมายถึงการมีข้อได้เปรียบ ([[one up]]) เหนือกว่าตัวเลข 10 ทั่วไป ดูเพิ่มที่ {{m|tl|maisahan||สามารถถูกเอาชนะได้}} ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:สแลง, ล้าสมัย>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, ซึ่งเห็นได้จากรูปสรรพนาม ''ons'' {{m|af|s'n|s’n}} (“ของพวกเรา (กรรม)”) เช่นเดียวกับคำอาฟรีกานส์ถิ่น {{m|af|julle}} ''se'' (“ของคุณ”) และ {{m|af|hulle}} ''se'' (“ของพวกเขา”) === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|มิฉะนั้น|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|ตัวกำหนดบอกเจ้าของบุรุษที่หนึ่งพหูพจน์}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} azqlv72aa2b7is21ypw1lwswk6iogvx 5754347 5754346 2026-08-06T01:45:34Z Octahedron80 267 /* รากศัพท์ 2 */ 5754347 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} ตามที่ Zorc (1993) ระบุไว้ คำนี้เป็นไปได้ว่า: * เป็นการเล่นคำที่ออกเสียงแบบภาษาสเปนคล้ายกับคำว่า {{der|tl|es|once||สิบเอ็ด}} (รากศัพท์ 1), จาก{{der|tl|en|once||หนึ่งครั้ง}}, ซึ่งเป็นการแปลตรงตัวอย่างหลวม ๆ จาก {{m|tl|makaisa||ได้เปรียบ; สามารถทำคะแนนได้; หลอกลวงผู้อื่น”); ดูเพิ่มที่ {{m|tl|wans}} * เกี่ยวข้องกับภาพเส้นตรงคู่ของตัวเลข 11 ที่เขียน อาจหมายถึงการเสแสร้งกับทั้งสองฝ่าย ([[double-dealing]]) ความหมายอีกอย่างหนึ่งอาจหมายถึงการมีข้อได้เปรียบ ([[one up]]) เหนือกว่าตัวเลข 10 ทั่วไป ดูเพิ่มที่ {{m|tl|maisahan||สามารถถูกเอาชนะได้}} ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:สแลง, ล้าสมัย>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, ซึ่งเห็นได้จากรูปสรรพนาม ''ons'' {{m|af|s'n|s’n}} (“ของพวกเรา (กรรม)”) เช่นเดียวกับคำอาฟรีกานส์ถิ่น {{m|af|julle}} ''se'' (“ของคุณ”) และ {{m|af|hulle}} ''se'' (“ของพวกเขา”) === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|มิฉะนั้น|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|ตัวกำหนดบอกเจ้าของบุรุษที่หนึ่งพหูพจน์}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} 3ofpq9jmsslri8d5ech65414d0zlmu2 5754348 5754347 2026-08-06T01:45:53Z Octahedron80 267 /* รากศัพท์ 2 */ 5754348 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} ตามที่ Zorc (1993) ระบุไว้ คำนี้เป็นไปได้ว่า: * เป็นการเล่นคำที่ออกเสียงแบบภาษาสเปนคล้ายกับคำว่า {{der|tl|es|once||สิบเอ็ด}} (รากศัพท์ 1), จาก{{der|tl|en|once||หนึ่งครั้ง}}, ซึ่งเป็นการแปลตรงตัวอย่างหลวม ๆ จาก {{m|tl|makaisa||ได้เปรียบ; สามารถทำคะแนนได้; หลอกลวงผู้อื่น}}; ดูเพิ่มที่ {{m|tl|wans}} * เกี่ยวข้องกับภาพเส้นตรงคู่ของตัวเลข 11 ที่เขียน อาจหมายถึงการเสแสร้งกับทั้งสองฝ่าย ([[double-dealing]]) ความหมายอีกอย่างหนึ่งอาจหมายถึงการมีข้อได้เปรียบ ([[one up]]) เหนือกว่าตัวเลข 10 ทั่วไป ดูเพิ่มที่ {{m|tl|maisahan||สามารถถูกเอาชนะได้}} ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:สแลง, ล้าสมัย>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, ซึ่งเห็นได้จากรูปสรรพนาม ''ons'' {{m|af|s'n|s’n}} (“ของพวกเรา (กรรม)”) เช่นเดียวกับคำอาฟรีกานส์ถิ่น {{m|af|julle}} ''se'' (“ของคุณ”) และ {{m|af|hulle}} ''se'' (“ของพวกเขา”) === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|มิฉะนั้น|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|ตัวกำหนดบอกเจ้าของบุรุษที่หนึ่งพหูพจน์}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} jmmq88paw8dmbof2s1ri9nmhonq3b1i 5754349 5754348 2026-08-06T01:50:23Z Octahedron80 267 /* รากศัพท์ 2 */ 5754349 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|once}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|on|se}} === เลข === {{ceb-num|ónse|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบเอ็ด]] ==== ลูกคำ ==== {{col|ceb|onseonse}} == ภาษาดัตช์กลาง == === รากศัพท์ === จาก{{inh|dum|odt|unsa}}, จาก{{inh|dum|gem-pro|*unseraz}} === การออกเสียง === * {{IPA|dum|/ˈonzə/}} === ตัวกำหนด === {{head|dum|ตัวกำหนด}} # [[ของ]][[พวกเรา]] #* {{RQ:dum:Schepenbrief|Descepenen van bochouta quedden alle degene die dese lettren sien selen i(n) '''onsen''' here.|The aldermen of Bochoute address all who will see this letter by '''our''' lord.}} ==== คำสืบทอด ==== * {{desc|nl|ons}} * {{desc|li|ós}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-onse.wav}} === รากศัพท์ 1 === {{ety|tl|id=eleven|:bor|es:once|tree=1}} {{bor+|tl|es|once}}, จาก{{der|tl|osp|onze}}, {{m|osp|ondze}}, จาก{{der|tl|la|ūndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบเอ็ด]] #: {{syn|tl|labing-isa}} ===== ลูกคำ ===== {{col|tl|onse-onse|onsehin|ikaonse|onsehan}} ===== คำเกี่ยวข้อง ===== {{col3|tl|alas-onse|a-onse|uno}} === รากศัพท์ 2 === {{ety|tl|id=cheating}} ตามที่ Zorc (1993) ระบุไว้ คำนี้เป็นไปได้ว่า: * เป็นการเล่นคำที่ออกเสียงแบบภาษาสเปนคล้ายกับคำว่า {{der|tl|es|once||สิบเอ็ด}} (รากศัพท์ 1), จาก{{der|tl|en|once||หนึ่งครั้ง}}, ซึ่งเป็นการแปลตรงตัวอย่างหลวม ๆ จาก {{m|tl|makaisa||ได้เปรียบ; สามารถทำคะแนนได้; หลอกลวงผู้อื่น}}; ดูเพิ่มที่ {{m|tl|wans}} * เกี่ยวข้องกับภาพเส้นตรงคู่ของตัวเลข 11 ที่เขียน อาจหมายถึงการเสแสร้ง ([[double-dealing]]) ความหมายอีกอย่างหนึ่งอาจหมายถึงการมีข้อได้เปรียบ ([[one up]]) เหนือกว่าตัวเลข 10 ทั่วไป ดูเพิ่มที่ {{m|tl|maisahan||สามารถถูกเอาชนะได้}} ==== คำนาม ==== {{tl-noun|b=+}} {{tlb|tl|slang}} # [[การโกง]]; [[การหลอกลวง]]; [[การฉ้อโกง]]; [[การหลอกล่อ]] #: {{syn|tl|daya|panlalamang|gulang|loko|wans<q:สแลง, ล้าสมัย>}} ===== ลูกคำ ===== {{col3|tl|onsehan|maonse|onsehin}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:Tagalog Slang Dictionary|103}} * {{R:Vicassan's Pilipino-English Dictionary 1978|page=1370}} {{C|tl|สิบเอ็ด}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|once}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|on|se}} === เลข === {{bcl-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|bcl|kagsaro}} ==== คำเกี่ยวข้อง ==== {{col|bcl|uno|una}} {{cln|bcl|cardinal numbers}} == ภาษาอาฟรีกานส์ == === รากศัพท์ === จาก{{inh|af|nl|onze||ของพวกเรา}}, แต่ภายหลังตีความว่า เป็นไปได้ว่าเป็น {{m|af|ons}} {{m|af|se}}, ซึ่งเห็นได้จากรูปสรรพนาม ''ons'' {{m|af|s'n|s’n}} (“ของพวกเรา (กรรม)”) เช่นเดียวกับคำอาฟรีกานส์ถิ่น {{m|af|julle}} ''se'' (“ของคุณ”) และ {{m|af|hulle}} ''se'' (“ของพวกเขา”) === การออกเสียง === * {{IPA|af|/ˈɔnsə/}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-onse.wav}} === ตัวกำหนด === {{head|af|ตัวกำหนด}} # {{lb|af|dialectal|มิฉะนั้น|_|archaic}} {{alternative form of|af|ons}}: {{non-gloss|ตัวกำหนดบอกเจ้าของบุรุษที่หนึ่งพหูพจน์}} ==== ดูเพิ่ม ==== {{af-personal pronouns}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|once||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|once}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|on|se}} === เลข === {{ilo-head|numeral|ónse|b=+}} # [[สิบเอ็ด]] #: {{syn|ilo|sangapulo ket maysa}} {{cln|ilo|cardinal numbers}} 2mntk8og9i8zdaca9edvyebcr5etpe0 0 239374 5754438 5648311 2026-08-06T04:29:04Z ~2026-43346-75 19333 ย้อนรุ่นแก้ไข [[Special:Diff/1884808|1884808]] ของ [[Special:Contr มฝทททททใททฝทใทฝทมท.ฝฝทท.ท. ทืใทใ ฝทใใ.ใ ททททททฝทใใ.ใทฝท .ใน ททใใฝทใ. ทททททฝฝทท ททท ท ใ.ใ ใใ.ใ.ทใ.ททฝท ททฝท.ททใใทใ .ททใทฝท .มฝ ใท.ทใใท ท มทใทท.ทใทใทใ ใททใ.ibutions/Octahedron80|Octahedron80]] ([[User talk:Octahedron80|คุย]]) 5754438 wikitext text/x-wiki {{character info}} == ภาษาไทย == {{wp}} === รูปแบบอื่น === * {{q|ลายสือไทย}} [[ไฟล์:กา.png|x24px|text-bottom|class=skin-invert-image|alt=กา]] (ก + า) * {{alt|th|.-||รหัสมอร์ส}} * {{q|อักษรเบรลล์}} {{l|mul|⠡}} === ตัวอักษร === {{th-letter}} # [[ลากข้าง]]; [[สระ]]ที่ออกเสียง อา ==== หมายเหตุการใช้ ==== # สามารถใช้ร่วมกับ [[◌ํ]] [[เ]] [[ะ]] เป็นสระ อำ เอา เอาะ ==== ดูเพิ่ม ==== * {{q|อักษรเบรลล์}} {{l|mul|⠵||สระ อำ}}, {{l|mul|⠖||สระ เอา}}, {{l|mul|⠕⠁||สระ เอาะ}} ime54en61pyqd08g33i8aae1vcs8ycz 5754440 5754438 2026-08-06T04:30:49Z Octahedron80 267 ย้อนรุ่นแก้ไข [[Special:Diff/5754438|5754438]] ของ [[Special:Contributions/~2026-43346-75|~2026-43346-75]] ([[User talk:~2026-43346-75|คุย]]) 5754440 wikitext text/x-wiki {{character info}} {{also/auto}} == ภาษาไทย == {{wp}} === รูปแบบอื่น === * {{q|ลายสือไทย}} [[ไฟล์:กา.png|x24px|text-bottom|class=skin-invert-image|alt=กา]] (ก + า) * {{alt|th|.-||รหัสมอร์ส}} * {{q|อักษรเบรลล์}} {{l|mul|⠡}} === ตัวอักษร === {{th-letter}} # [[ลากข้าง]]; [[สระ]]ที่ออกเสียง อา ==== หมายเหตุการใช้ ==== # สามารถใช้ร่วมกับ [[◌ํ]] [[เ]] [[ะ]] เป็นสระ อำ เอา เอาะ ==== ดูเพิ่ม ==== * {{q|อักษรเบรลล์}} {{l|mul|⠵||สระ อำ}}, {{l|mul|⠖||สระ เอา}}, {{l|mul|⠕⠁||สระ เอาะ}} cut6q6u8gz13agm0ooh2bumuzrjylnx photographie 0 245416 5754479 2765667 2026-08-06T07:24:10Z OctraBot 3198 update template use 5754479 wikitext text/x-wiki {{also/auto}} == ภาษาฝรั่งเศส == {{wp|lang=fr}} === รากศัพท์ === {{etymon|fr|:af|grc:φωτο-|grc:γρᾰ́φω}} === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-photographie.ogg}} === คำนาม === {{fr-noun|f}} # {{lb|fr|uncountable}} [[การถ่ายรูป]] # {{lb|fr|countable}} [[รูปถ่าย]] ==== คำเกี่ยวข้อง ==== * {{l|fr|photographe}} * {{l|fr|photographier}} * {{l|fr|photographique}} === อ่านเพิ่ม === * {{R:fr:TLFi}} {{C|fr|การถ่ายรูป}} guj1769quxz71bjei4vkd7yuckapit1 nennen 0 256255 5754463 5645383 2026-08-06T06:01:28Z Octahedron80 267 /* รากศัพท์ */ เก็บกวาด 5754463 wikitext text/x-wiki == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|inh=1}} {{etymon|de|id=to name|:inh|gmh:nennen<id:to name>|tree=1}} จาก{{inh|de|gmh|nennen}}, {{m|gmh|nemmen}}, {{m|mgh|nemnen}}, จาก{{inh|de|goh|nemnen}}, จาก{{inh|de|gmw-pro|*namnijan}}, จาก{{inh|de|gem-pro|*namnijaną}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|hrx|nenne}}, {{cog|ang|nemnan}}, {{cog|enm|nemnen}}, {{cog|sv|nämna}}. {{col-bottom}} === การออกเสียง === * {{IPA|de|/ˈnɛnən/}} * {{audio|de|De-nennen2.ogg}} * {{audio|de|De-nennen.ogg}} *{{hyph|de|nen|nen}} === คำกริยา === {{de-verb|nennen<nannte,genannt,nennte>}} # {{lb|de|transitive}} [[ตั้ง]][[ชื่อ]] # {{lb|de|transitive}} [[เรียก]] ==== การผัน ==== {{de-conj|nennen<nannte,genannt,nennte>}} ==== ลูกคำ ==== {{der-top3}} * {{l|de|benennen}} * {{l|de|ernennen}} * {{l|de|nennbar}} * {{l|de|Nennbetrag}} * {{l|de|nennenswert}} {{der-mid3}} * {{l|de|Nenner}} * {{l|de|Nennform}} * {{l|de|Nenngeld}} * {{l|de|Nennleistung}} * {{l|de|Nennonkel}} {{der-mid3}} * {{l|de|Nenntante}} * {{l|de|Nennung}} * {{l|de|Nennwert}} * {{l|de|umbenennen}} * {{l|de|umnennen}} {{der-bottom}} === อ่านเพิ่ม === * {{R:de:Duden}} 8npkbw0y3fv3o1mlee1uynn66euslhy 5754464 5754463 2026-08-06T06:01:42Z Octahedron80 267 /* รากศัพท์ */ 5754464 wikitext text/x-wiki == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|inh=1}} {{etymon|de|id=to name|:inh|gmh:nennen<id:to name>|tree=1}} จาก{{inh|de|gmh|nennen}}, {{m|gmh|nemmen}}, {{m|mgh|nemnen}}, จาก{{inh|de|goh|nemnen}}, จาก{{inh|de|gmw-pro|*namnijan}}, จาก{{inh|de|gem-pro|*namnijaną}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|hrx|nenne}}, {{cog|ang|nemnan}}, {{cog|enm|nemnen}}, {{cog|sv|nämna}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ˈnɛnən/}} * {{audio|de|De-nennen2.ogg}} * {{audio|de|De-nennen.ogg}} *{{hyph|de|nen|nen}} === คำกริยา === {{de-verb|nennen<nannte,genannt,nennte>}} # {{lb|de|transitive}} [[ตั้ง]][[ชื่อ]] # {{lb|de|transitive}} [[เรียก]] ==== การผัน ==== {{de-conj|nennen<nannte,genannt,nennte>}} ==== ลูกคำ ==== {{der-top3}} * {{l|de|benennen}} * {{l|de|ernennen}} * {{l|de|nennbar}} * {{l|de|Nennbetrag}} * {{l|de|nennenswert}} {{der-mid3}} * {{l|de|Nenner}} * {{l|de|Nennform}} * {{l|de|Nenngeld}} * {{l|de|Nennleistung}} * {{l|de|Nennonkel}} {{der-mid3}} * {{l|de|Nenntante}} * {{l|de|Nennung}} * {{l|de|Nennwert}} * {{l|de|umbenennen}} * {{l|de|umnennen}} {{der-bottom}} === อ่านเพิ่ม === * {{R:de:Duden}} nl7u7d1pz4d4j29y2h1i8ejl76h046m 5754465 5754464 2026-08-06T06:02:34Z Octahedron80 267 /* ภาษาเยอรมัน */ 5754465 wikitext text/x-wiki == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|inh=1}} {{etymon|de|id=to name|:inh|gmh:nennen<id:to name>|tree=1}} จาก{{inh|de|gmh|nennen}}, {{m|gmh|nemmen}}, {{m|mgh|nemnen}}, จาก{{inh|de|goh|nemnen}}, จาก{{inh|de|gmw-pro|*namnijan}}, จาก{{inh|de|gem-pro|*namnijaną}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|hrx|nenne}}, {{cog|ang|nemnan}}, {{cog|enm|nemnen}}, {{cog|sv|nämna}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ˈnɛnən/}} * {{audio|de|De-nennen2.ogg|a=<<Germany>> (<<Berlin>>)}} * {{audio|de|De-nennen.ogg}} * {{hyph|de|nen|nen}} === คำกริยา === {{de-verb|nennen<nannte,genannt,nennte>}} # {{lb|de|transitive}} [[ตั้ง]][[ชื่อ]] # {{lb|de|transitive}} [[เรียก]] ==== การผัน ==== {{de-conj|nennen<nannte,genannt,nennte>}} ==== ลูกคำ ==== {{col3|de |benennen |das Kind beim Namen nennen |ernennen |nennbar |Nennbetrag |nennenswert |Nenner |Nennform |Nenngeld |Nennleistung |Nennonkel |Nenntante |Nennung |Nennwert |umbenennen |umnennen }} === อ่านเพิ่ม === * {{R:de:DWDS}} * {{R:de:UniLeipzig}} * {{R:de:Duden}} * {{R:de:OpenThesaurus}} gxkth3wgny3t8yu8r3ochybzaaodg0v 5754468 5754465 2026-08-06T06:12:45Z Octahedron80 267 /* คำกริยา */ 5754468 wikitext text/x-wiki == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|inh=1}} {{etymon|de|id=to name|:inh|gmh:nennen<id:to name>|tree=1}} จาก{{inh|de|gmh|nennen}}, {{m|gmh|nemmen}}, {{m|mgh|nemnen}}, จาก{{inh|de|goh|nemnen}}, จาก{{inh|de|gmw-pro|*namnijan}}, จาก{{inh|de|gem-pro|*namnijaną}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|hrx|nenne}}, {{cog|ang|nemnan}}, {{cog|enm|nemnen}}, {{cog|sv|nämna}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ˈnɛnən/}} * {{audio|de|De-nennen2.ogg|a=<<Germany>> (<<Berlin>>)}} * {{audio|de|De-nennen.ogg}} * {{hyph|de|nen|nen}} === คำกริยา === {{de-verb|nennen<nannte,genannt,nennte>}} # {{lb|de|transitive}} [[ตั้ง]][[ชื่อ]] # {{lb|de|transitive}} [[เรียก]]...[[ว่า]] ( {{+obj|de|acc<บางคน> + predicate&adjective/acc&noun<บางชื่อ ชื่อตั้ง หรือคำอธิบาย>}} #: {{ux|de|'''Nennst''' du mich einen Dummkopf?|Are you '''calling''' me an idiot?}} #: {{ux|de|Wir '''nennen''' den Hund Leo.|We '''call''' the dog Leo.}} # {{lb|de|transitive}} [[กล่าว]][[ถึง]], [[ทำ]][[ให้]][[ทราบ]], [[บอก]], [[ให้]] {{+obj|de|dat<บางคน> + acc<ข้อมูลบางอย่าง>}} #: {{ux|de|'''Nennen''' Sie mir den Ort des Treffens.|'''Tell''' me the location of the meeting.}} #* {{RQ:Heyking Orgelpfeifen|page=64|passage=Namen '''wurden''' in diesen Berichten nicht '''genannt''', und in dieser Anonymität der Leistungen lag eine besondere entsagungsvolle Größe.|translation=Names were not mentioned in these reports and in this anonymity of the achievements was a particular sacrificing greatness.}} # {{lb|de|transitive}} [[กล่าว]], [[พูด]], [[อ้าง]] (ชื่อ) #: {{ux|de|Kannst du deinen Namen '''nennen'''?|Can you '''say''' your name?}} # {{lb|de|transitive}} [[เรียกร้อง]]; [[ยื่น]] (เช่น คำขอ) # {{lb|de|reflexive}} ถูกเรียก; ถูกตั้งชื่อ; ใช้ชื่อใดชื่อหนึ่ง ==== การผัน ==== {{de-conj|nennen<nannte,genannt,nennte>}} ==== ลูกคำ ==== {{col3|de |benennen |das Kind beim Namen nennen |ernennen |nennbar |Nennbetrag |nennenswert |Nenner |Nennform |Nenngeld |Nennleistung |Nennonkel |Nenntante |Nennung |Nennwert |umbenennen |umnennen }} === อ่านเพิ่ม === * {{R:de:DWDS}} * {{R:de:UniLeipzig}} * {{R:de:Duden}} * {{R:de:OpenThesaurus}} e8arnplgb4argputl4l0o52icrlyjiw 5754469 5754468 2026-08-06T06:13:32Z Octahedron80 267 /* คำกริยา */ 5754469 wikitext text/x-wiki == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|inh=1}} {{etymon|de|id=to name|:inh|gmh:nennen<id:to name>|tree=1}} จาก{{inh|de|gmh|nennen}}, {{m|gmh|nemmen}}, {{m|mgh|nemnen}}, จาก{{inh|de|goh|nemnen}}, จาก{{inh|de|gmw-pro|*namnijan}}, จาก{{inh|de|gem-pro|*namnijaną}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|hrx|nenne}}, {{cog|ang|nemnan}}, {{cog|enm|nemnen}}, {{cog|sv|nämna}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ˈnɛnən/}} * {{audio|de|De-nennen2.ogg|a=<<Germany>> (<<Berlin>>)}} * {{audio|de|De-nennen.ogg}} * {{hyph|de|nen|nen}} === คำกริยา === {{de-verb|nennen<nannte,genannt,nennte>}} # {{lb|de|transitive}} [[ตั้ง]][[ชื่อ]] # {{lb|de|transitive}} [[เรียก]]...[[ว่า]] {{+obj|de|acc<บางคน> + predicate&adjective/acc&noun<บางชื่อ ชื่อตั้ง หรือคำอธิบาย>}} #: {{ux|de|'''Nennst''' du mich einen Dummkopf?|Are you '''calling''' me an idiot?}} #: {{ux|de|Wir '''nennen''' den Hund Leo.|We '''call''' the dog Leo.}} # {{lb|de|transitive}} [[กล่าว]][[ถึง]], [[ทำ]][[ให้]][[ทราบ]], [[บอก]], [[ให้]] {{+obj|de|dat<บางคน> + acc<ข้อมูลบางอย่าง>}} #: {{ux|de|'''Nennen''' Sie mir den Ort des Treffens.|'''Tell''' me the location of the meeting.}} #* {{RQ:Heyking Orgelpfeifen|page=64|passage=Namen '''wurden''' in diesen Berichten nicht '''genannt''', und in dieser Anonymität der Leistungen lag eine besondere entsagungsvolle Größe.|translation=Names were not mentioned in these reports and in this anonymity of the achievements was a particular sacrificing greatness.}} # {{lb|de|transitive}} [[กล่าว]], [[พูด]], [[อ้าง]] (ชื่อ) #: {{ux|de|Kannst du deinen Namen '''nennen'''?|Can you '''say''' your name?}} # {{lb|de|transitive}} [[เรียกร้อง]]; [[ยื่น]] (เช่น คำขอ) # {{lb|de|reflexive}} ถูกเรียก; ถูกตั้งชื่อ; ใช้ชื่อใดชื่อหนึ่ง ==== การผัน ==== {{de-conj|nennen<nannte,genannt,nennte>}} ==== ลูกคำ ==== {{col3|de |benennen |das Kind beim Namen nennen |ernennen |nennbar |Nennbetrag |nennenswert |Nenner |Nennform |Nenngeld |Nennleistung |Nennonkel |Nenntante |Nennung |Nennwert |umbenennen |umnennen }} === อ่านเพิ่ม === * {{R:de:DWDS}} * {{R:de:UniLeipzig}} * {{R:de:Duden}} * {{R:de:OpenThesaurus}} 01ve32eks8cwy13qzxpm8i2nla3aq9v 5754471 5754469 2026-08-06T06:16:35Z Octahedron80 267 /* คำกริยา */ 5754471 wikitext text/x-wiki == ภาษาเยอรมัน == === รากศัพท์ === {{dercat|de|gem-pro|inh=1}} {{etymon|de|id=to name|:inh|gmh:nennen<id:to name>|tree=1}} จาก{{inh|de|gmh|nennen}}, {{m|gmh|nemmen}}, {{m|mgh|nemnen}}, จาก{{inh|de|goh|nemnen}}, จาก{{inh|de|gmw-pro|*namnijan}}, จาก{{inh|de|gem-pro|*namnijaną}} {{col-top|2|cog}} ร่วมเชื้อสายกับ{{cog|hrx|nenne}}, {{cog|ang|nemnan}}, {{cog|enm|nemnen}}, {{cog|sv|nämna}} {{col-bottom}} === การออกเสียง === * {{IPA|de|/ˈnɛnən/}} * {{audio|de|De-nennen2.ogg|a=<<Germany>> (<<Berlin>>)}} * {{audio|de|De-nennen.ogg}} * {{hyph|de|nen|nen}} === คำกริยา === {{de-verb|nennen<nannte,genannt,nennte>}} # {{lb|de|transitive}} [[ตั้ง]][[ชื่อ]] # {{lb|de|transitive}} [[เรียก]]...[[ว่า]], [[อธิบาย]] {{+obj|de|acc<บางคน> + predicate&adjective/acc&noun<บางชื่อ ชื่อตั้ง หรือคำอธิบาย>}} #: {{ux|de|'''Nennst''' du mich einen Dummkopf?|คุณกำลังบอกว่าฉันเป็นคนโง่เหรอ?}} #: {{ux|de|Wir '''nennen''' den Hund Leo.|เราเรียกสุนัขตัวนั้นว่า ลีโอ}} # {{lb|de|transitive}} [[กล่าว]][[ถึง]], [[ทำ]][[ให้]][[ทราบ]], [[บอก]], [[ให้]] {{+obj|de|dat<บางคน> + acc<ข้อมูลบางอย่าง>}} #: {{ux|de|'''Nennen''' Sie mir den Ort des Treffens.|บอกสถานที่นัดพบให้หน่อย}} #* {{RQ:Heyking Orgelpfeifen|page=64|passage=Namen '''wurden''' in diesen Berichten nicht '''genannt''', und in dieser Anonymität der Leistungen lag eine besondere entsagungsvolle Größe.|translation=รายงานเหล่านี้ไม่ได้เอ่ยชื่อใคร และนั่นคือความยิ่งใหญ่ที่พิเศษและแสดงถึงความเสียสละอย่างแท้จริง ในการที่ความสำเร็จเหล่านั้นไม่ปรากฏชื่อผู้กระทำ}} # {{lb|de|transitive}} [[กล่าว]], [[พูด]], [[บอก]] (ชื่อ) #: {{ux|de|Kannst du deinen Namen '''nennen'''?|คุณช่วยบอกชื่อของคุณได้ไหม?}} # {{lb|de|transitive}} [[เรียกร้อง]]; [[ยื่น]] (เช่น คำขอ) # {{lb|de|reflexive}} ถูกเรียก; ถูกตั้งชื่อ; ใช้ชื่อใดชื่อหนึ่ง ==== การผัน ==== {{de-conj|nennen<nannte,genannt,nennte>}} ==== ลูกคำ ==== {{col3|de |benennen |das Kind beim Namen nennen |ernennen |nennbar |Nennbetrag |nennenswert |Nenner |Nennform |Nenngeld |Nennleistung |Nennonkel |Nenntante |Nennung |Nennwert |umbenennen |umnennen }} === อ่านเพิ่ม === * {{R:de:DWDS}} * {{R:de:UniLeipzig}} * {{R:de:Duden}} * {{R:de:OpenThesaurus}} aqh088g67i2hu28mdx5v8us7v03328u คลั่ง 0 283484 5754331 1880992 2026-08-05T21:17:51Z Alifshinobi 397 /* รากศัพท์ 1 */ 5754331 wikitext text/x-wiki {{also/auto}} == ภาษาไทย == === การออกเสียง === {{th-pron|คฺลั่ง}} === รากศัพท์ 1 === ร่วมเชื้อสายกับ{{cog|lo|ຄັ່ງ}}, {{cog|nod|ᨣᩖᩢ᩵ᨦ}} ==== คำกริยา ==== {{th-verb|~}} # [[แสดง]][[อาการ]][[ผิด]][[ปรกติ]][[อย่าง]][[คน]][[บ้า]], [[เสียสติ]] # [[หลงใหล]][[ใน]][[บุคคล]][[หรือ]][[สิ่ง]][[ใด]]สิ่ง[[หนึ่ง]], [[หมกมุ่น]][[อยู่]][[กับ]][[งาน]]หรือสิ่งใดสิ่งหนึ่ง #: {{ux|th|'''คลั่ง'''ดารา}} #: {{ux|th|'''คลั่ง'''อำนาจ}} #: {{ux|th|'''คลั่ง'''เล่นกล้วยไม้}} === รากศัพท์ 2 === ==== คำกริยา ==== {{th-verb}} # [[คั่ง]] #: {{ux|th|ชลเนตร'''คลั่ง'''คลอนัยนา|ref=<ref name=อิเหนา>อิเหนา พระราชนิพนธ์ในรัชกาลที่ 2 ฉบับหอพระสมุดวชิรญาณ พ.ศ. 2464</ref>}} === อ้างอิง === {{รายการอ้างอิง}} nhml542l0dpynlhshsdrqia81kp3b9v ᨿᩬᩴ 0 285255 5754406 1953264 2026-08-06T03:12:17Z Alifshinobi 397 5754406 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=ยอ|s=ญอ}} === การออกเสียง === * {{IPA|nod|/ɲɔː˧˧/|a=เชียงใหม่}} === คำกริยา === {{nod-verb}} # {{lb|nod|สกรรม}} [[ยอ]], [[ยก]] # {{lb|nod|สกรรม}} [[ยอ]], [[กล่าว]][[คำ]][[เชิดชู]][[เพื่อ]][[ให้]][[ชอบใจ]] hrqisxaqoj6yg34z4nql6nctamk08ow ถุงมือ 0 287889 5754529 1355123 2026-08-06T09:04:03Z GinGlaep 7155 /* ภาษาไทย */ 5754529 wikitext text/x-wiki == ภาษาไทย == {{wp}} [[ไฟล์:Dress Glove.JPG|thumb|ถุงมือ]] === รากศัพท์ === {{com+|th|ถุง|มือ}} === การออกเสียง === {{th-pron|ถุง-มือ}} === คำนาม === {{th-noun|คู่|ข้าง}} # [[เครื่อง]][[สวม]][[มือ]][[ทำ]][[จาก]][[วัสดุ]][[ต่าง ๆ]] [[เช่น]] [[ไหม]] [[ผ้า]] [[หนัง]][[สัตว์]] [[ยาง]] [[เป็นต้น]] [[มี]][[ช่อง]][[เล็ก]][[ให้]][[นิ้ว]][[แต่ละ]]นิ้ว[[สอด]][[ลง]][[ไป]][[ได้]] [[ใช้]][[เพื่อ]][[ป้องกัน]][[ความหนาว]][[เย็น]] [[หรือ]]เพื่อ[[ประโยชน์]][[อย่าง]][[อื่น]] ==== คำแปลภาษาอื่น ==== {{trans-top|เครื่องสวมมือ}} * เกาหลี: {{t+|ko|장갑(掌匣)(掌甲)}} * เขมร: {{t|km|ស្រោមដៃ}} * จีน: *: กวางตุ้ง: {{t|yue|手襪|tr=sau2 mat6}}, {{t|yue|手套|tr=sau2 tou3}} *: หมิ่นตะวันออก: {{t|cdo|手套}}, {{t|cdo|手絡}} *: ฮกเกี้ยน: {{t+|nan-hbl|手囊|tr=chhiú-lông}}, {{t+|nan-hbl|手套|tr=chhiú-thò}} *: จีนกลาง: {{t+|cmn|手套|tr=shǒutào}} *: หมิ่นเหนือ: {{t|mnp|手套}} *: อู๋: {{t|wuu|手套}} * ญี่ปุ่น: {{t+|ja|手袋|tr=てぶくろ, tebukuro}} * ดัตช์: {{t+|nl|handschoen|f}} * ตากาล็อก: {{t|tl|guwantes}} * ไทดำ: {{t|blt|ꪣꪱꪒꪣꪳ}} * โปรตุเกส: {{t+|pt|luva|f}} * ฝรั่งเศส: {{t+|fr|gant|m}} * พม่า: {{t+|my|လက်အိတ်}} * ฟินแลนด์: {{t+|fi|hansikas}}, {{t+|fi|hanska}}, {{t+|fi|sormikas}} * มาเลเซีย: {{t+|ms|sarung tangan}} * เยอรมัน: {{t+|de|Handschuh|m}} * รัสเซีย: {{t+|ru|перча́тка|f}} * ลาว: {{t+|lo|ຖົງມື}} * เวียดนาม: {{t+|vi|găng tay}}, {{t+|vi|bao tay}} * สเปน: {{t+|es|guante|m}} * อังกฤษ: {{t+|en|glove}} * อิตาลี: {{t+|it|guanto|m}} * อินโดนีเซีย: {{t+|id|sarung tangan}} {{trans-bottom}} gcq76b99e8ut533iohaehbc86rumpvc kalender 0 291524 5754417 1877242 2026-08-06T04:08:16Z Octahedron80 267 เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754417 wikitext text/x-wiki {{also/auto}} == ภาษาดัตช์ == {{wp|nl:}} === รากศัพท์ === จาก{{inh|nl|dum|kalendier}}, จาก{{der|nl|fro|calendier}}, จาก{{der|nl|la|calendārium}}; รูปที่ลงท้ายด้วย ''-er'' ได้รับอิทธิพลจาก{{der|nl|de|Kalender}} === การออกเสียง === * {{IPA|nl|/ˌkaːˈlɛn.dər/}} * {{audio|nl|Nl-kalender.ogg}} * {{hyphenation|nl|ka|len|der}} * {{rhymes|nl|ɛndər}} === คำนาม === {{nl-noun|m|-s|+}} # [[ปฏิทิน]] ==== ลูกคำ ==== {{col|nl |adventskalender |gregoriaanse kalender |juliaanse kalender |kalenderjaar |lunisolaire kalender |maankalender |scheurkalender |zonnekalender }} ==== คำสืบทอด ==== * {{desc|af|kalender}} * {{desc|hns|kalendar|bor=1}} * {{desc|id|bor=1|kalender}} * {{desc|pap|kalènder|bor=1}} === คำสลับอักษร === * {{l|nl|elkander}} == ภาษาเดนมาร์ก == {{wp|da:}} === การออกเสียง === * {{IPA|da|/kaˈlɛnˀɐ/|[kʰæˈlenˀɐ]|[kʰæˈlenˀɒ̽]}} === คำนาม === {{da-noun|en|e}} # [[ปฏิทิน]] ==== การผันรูป ==== {{da-decl|en|e|ne}} === อ่านเพิ่ม === * {{R:DDO}} == ภาษาตุรกี == === รากศัพท์ === {{inh+|tr|ota|قلندر|tr=kalender}}, จาก{{der|tr|ar|قَلَنْدَر}} === การออกเสียง === * {{IPA|tr|/kɑlendeɾ/}} === คำคุณศัพท์ === {{tr-adj}} # [[ไม่]][[ทำ]][[ตาม]][[กฎ]][[ทาง]][[สังคม]] # [[สบาย]] ๆ # [[เชิง]][[ปรัชญา]] # ไม่[[เหมือน]][[ใคร]] == ภาษานอร์เวย์แบบนือนอสก์ == {{wp|nn:}} === คำนาม === {{head|nn|คำนาม|g=m|definite singular|kalenderen|indefinite plural|kalendrar|definite plural|kalendrane}} # [[ปฏิทิน]] ==== ลูกคำ ==== * {{l|nn|adventskalender}} * {{l|nn|kalenderår}} == ภาษานอร์เวย์แบบบุ๊กมอล == {{wp|no:}} === คำนาม === {{nb-noun-m3}} # [[ปฏิทิน]] #: {{ux|nb|Har du puttet legetimen din på '''kalenderen''' din?|Have you put your doctor's appointment on your '''calender'''?}} ==== ลูกคำ ==== * {{l|nb|adventskalender}} * {{l|nb|kalenderår}} == ภาษาวีลามอวิตแซ == === การออกเสียง === * {{audio|wym|Wym-kalender (wersja Józefa Gary).ogg}} === คำนาม === {{wym-noun|g=m|pl=kalendyn}} # [[ปฏิทิน]] {{C|wym|เวลา}} == ภาษาสวีเดน == {{wp|sv:}} === คำนาม === {{sv-noun|c}} # [[ปฏิทิน]] #: {{syn|sv|almanacka}} # [[สิ่งพิมพ์]][[ประจำ]][[ปี]] ==== การผันรูป ==== {{sv-infl-noun-c-r|3=kalendra}} ==== ลูกคำ ==== * {{l|sv|kalendermånad}} * {{l|sv|kalenderår}} * {{l|sv|adventskalender}} * {{l|sv|julkalender}} * {{l|sv|taxeringskalender}} === อ้างอิง === * {{R:svenska.se|so}} * {{R:svenska.se|saol}} * {{R:svenska.se|saob}} == ภาษาอังกฤษกลาง == === รูปแบบอื่น === * {{alter|enm|calender|kalendere|calendder|kalendar|kalander|calendre|kalunder|calundere}} === รากศัพท์ === {{etymon|enm|id=calendar|:bor|fro:calendier<id:calender>}} จาก{{bor|enm|fro|calendier}}, จาก{{der|enm|la|calendārium}}, {{m|la|kalendārium}}; เทียบเท่า {{affix|enm|kalende|-er}} === การออกเสียง === * {{IPA|enm|/kalənˈdɛːr/|/ˈkaləndɛr/|/ˈkaləndər/}} === คำนาม === {{enm-noun|kalenderes}} # [[ปี]] # [[ปฏิทิน]] # {{lb|enm|rare}} [[ตัวอย่าง]]ที่ควรปฏิบัติตามหรือจดบันทึก # {{lb|enm|rare}} รายการหรือชุดบันทึกที่มีรายละเอียด # {{lb|enm|rare}} แผนภูมิหรือกราฟที่ใช้เพื่อวัตถุประสงค์ทางวิทยาศาสตร์ # {{lb|enm|rare}} [[การเริ่มต้น]]; [[จุด]][[เริ่มต้น]] ==== คำสืบทอด ==== * {{desctree|en|calendar}} * {{desc|sco|calendar}} * {{desc|cy|calendr|bor=1}} ==== อ้างอิง ==== * {{R:MED Online|entry=calendē̆r |pos=n |id=MED6530|accessdate=2018-09-12}} {{C|enm|เวลา}} == ภาษาอาฟรีกานส์ == === การออกเสียง === * {{audio|af|LL-Q14196 (afr)-Oesjaar-kalender.wav}} === คำนาม === {{af-noun|kalenders}} # [[ปฏิทิน]] == ภาษาอินโดนีเซีย == {{wp|id:}} === รากศัพท์ 1 === จาก{{bor|id|nl|kalender}}, จาก{{der|id|la|calendarium}} ==== การออกเสียง ==== {{id-pr|ka.lèn.der}} ==== คำนาม ==== {{id-noun|head=kalèndêr}} # [[ปฏิทิน]]: ## ระบบใด ๆ ที่ใช้แบ่งเวลาออกเป็นวัน สัปดาห์ เดือน และปี ## วิธีการกำหนดวันที่ซึ่งประกอบด้วยเอกสารที่มีวันที่และข้อมูลเวลาอื่น ๆ ##: {{syn|id|almanak|daftar hari bulan|penanggalan|takwim|tanggalan}} ## ตารางเวลา: รายการหรือการเรียงลำดับเหตุการณ์อย่างเป็นระเบียบ ##: {{syn|id|jadwal}} ===== รูปแบบอื่น ===== * {{alt|id|kalendar||มลายูมาตรฐาน}} ===== คำลูกกลุ่ม ===== {{col|id| | kalender acara| kalender akademik| kalender Buddhis| kalender bulan| kalender Cina| kalender editorial| kalender gerejawi| kalender gregorian| kalender Haab| kalender hijriah| kalender Jawa| kalender kamariah| kalender kehamilan| kalender kesuburan| kalender liturgi| kalender lunar| kalender lunisolar| kalender masehi| kalender matahari| kalender meja| kalender ovulasi| kalender pendidikan| kalender setahun| kalender surya| kalender syamsiah| kalender Tionghoa }} === รากศัพท์ 2 === จาก{{bor|id|nl|kalender}}, จาก{{der|id|frm|calandre}}, จาก{{der|id|la-lat|calendra}}, แผลงมาจาก{{der|id|la|cylindrus||ทรงกระบอก}}, จาก{{der|id|grc|κύλινδρος}} ==== การออกเสียง ==== {{id-pr|ka.lèn.der}} ==== คำนาม ==== {{id-noun|head=kalèndêr}} # [[เครื่องรีดผิว]] (เครื่องจักรที่ใช้สำหรับทำให้ผ้า กระดาษ ฯลฯ มีพื้นผิวเรียบเนียน เงาวาว หรือเป็นมันเงา) === อ่านเพิ่ม === * {{R:KBBI Daring}} == ภาษาเอสโตเนีย == {{wp|et:}} === รากศัพท์ === จาก{{der|et|de|Kalender}}, แรกสุดจาก{{der|et|la|calendārium|t=สมุดบัญชี}} === การออกเสียง === * {{et-IPA|kaˈlender}} * {{rhymes|et|ender|s=3}} * {{hyph|et|ka|len|der}} === คำนาม === {{et-noun|kalendri|kalendrit}} # [[ปฏิทิน]] ## [[ระบบ]][[ลำดับเวลา]]ที่แน่นอน ##: {{ux|et|Maiade '''kalendri''' järgi algab detsembris uus ajastu.|According to the Mayan '''calendar''', a new era starts this December.}} ## [[ตาราง]]หรือ[[หนังสือ]]ที่มีรายการ[[วัน]]และ[[เดือน]]ของ[[ปี]] [[วันหยุด]]ประจำชาติ และวันหยุดตามวัฒนธรรม ตลอดจน[[ข้อมูล]]และ[[รายละเอียด]]อื่น ๆ ##: {{ux|et|Vaatasin '''kalendrist''' järele, et jõulud on sel aastal neljapäeval.|I checked the '''calendar''', and found out that Christmas is on a Thursday this year.}} ==== การผันรูป ==== {{et-decl-õpik|kalend|ri|er}} ==== ลูกคำ ==== * {{l|et|kalendaarium}} * {{l|et|kalendriline}} === อ้างอิง === * {{R:Sõnaveeb}} {{C|et|เวลา}} r7twreq1y31tx2axb1pjvsef3emo4ma haben 0 299920 5754477 5645655 2026-08-06T07:20:03Z OctraBot 3198 update template use 5754477 wikitext text/x-wiki == ภาษาเยอรมัน == === รูปแบบอื่น === * {{alter|de|ham||การสะกดแบบไม่เป็นทางการ}} * {{alter|de|han||โบราณ|ภาษาถิ่น}} === รากศัพท์ === {{etymon|de|:inh|gmh:hān<id:have>|id=have}} จาก{{inh|de|gmh|han|haben}}, จาก{{inh|de|goh|habēn}} (ร่วมเชื้อสายกับ{{cog|osx|hebbian}}, {{cog|non|hafa}} ({{cog|sv|hava}}/{{m|sv|ha}}), {{cog|ofs|habba}}, {{cog|got|𐌷𐌰𐌱𐌰𐌽}}, {{cog|ang|habban}}), จาก{{inh|de|gmw-pro|*habbjan}}, จาก{{inh|de|gem-pro|*habjaną}}, จาก{{der|de|ine-pro|*keh₂p-||to grasp}}; ร่วมเชื้อสายกับ{{cog|bar|håbn}}, {{cog|yi|האָבן}}, {{cog|nl|hebben}}, {{cog|en|have}}, {{cog|da|have}} === การออกเสียง === * {{IPA|de|/ˈhaːbən/|[ˈhäːbən]|[ˈhäːbn̩]|[ˈhäːbm̩]|aa=มาตรฐาน}} * {{IPA|de|/ham/|aa=สามัญ; โดยเฉพาะในรูปปัจจุบันกาล พบในรูปกริยากลาง (infinitive) ได้บางโอกาส}} {{attn|de|[ham̩] ?}} * {{audio|de|De-haben.ogg}} * {{audio|de|De-haben3.ogg}} * {{audio|de|De-haben4.ogg}} * {{hyph|de|ha|ben}} * {{rhymes|de|aːbn̩|s=2}} === คำกริยา === {{de-verb|haben<irreg>}} # {{lb|de|auxiliary|+ กริยารูป [[past participle]]}} {{non-gloss definition|ใช้สร้างประโยคกาลสมบูรณ์}} #: {{uxi|de|Ich '''habe''' [[schon]] '''[[gegessen]]'''.|ฉันกินข้าวแล้ว}} #: {{uxi|de|Wir '''haben''' [[täglich]] [[außer]] [[Samstag]] '''[[geöffnet]]'''.|พวกเราเปิดทุกวันยกเว้นวันเสาร์}} # {{lb|de|transitive}} [[มี]] (สิ่งครอบครอง, คุณสมบัติ, สิ่งบรรจุ, ความรู้สึก, ปริมาณ) #: {{uxi|de|Ich '''habe''' ein [[Auto]], eine [[Frau]] [[und]] [[zwei]] [[Kinder]].|ฉันมีรถหนึ่งคัน ภรรยาและลูกสองคน}} #: {{uxi|de|Er '''hat''' [[blau]]e [[Auge]]n und [[lang]]e [[Bein]]e.|เขามีตาสีน้ำเงินและขายาว}} #: {{uxi|de|'''Habt''' ihr [[heute]] [[Zeit]]?|วันนี้พวกเธอมีเวลาไหม}} #: {{uxi|de|Du '''hast''' ein [[gut]]es [[Gedächtnis]].|เธอมีความจำดี}} #: {{uxi|de|Sie '''hat''' [[Geduld]], [[Mut]], [[Angst]], [[Hoffnung]].|หล่อนมีความอดทน, ความกล้า, ความกลัว, ความหวัง}} #: {{uxi|de|Kinder '''haben''' [[Hunger]], [[Durst]], [[Fieber]].|เด็ก ๆ หิวข้าว, หิวน้ำ, มีไข้}} #: {{uxi|de|Ein [[Kilo]] '''hat''' 1000 [[Gramm]].|หนึ่งกิโลมีหนึ่งพันกรัม}} # {{lb|de|transitive}} [[ได้]][[รับ]] #: {{uxi|de|[[können|Kann]] ich [[mal]] das [[Handtuch]] '''haben'''?|ฉันขอผ้าเช็ดมือหน่อยได้ไหม}} # ('''''[[zu]]''' + รูปกริยากลาง'') [[ต้อง]] #: {{syn|de|müssen}} #: {{uxi|de|Ich '''habe''' heute [[viel]] '''zu''' [[erledigen]].|วันนี้ฉันมีหลายอย่างที่'''ต้อง'''ทำให้เสร็จ}} # {{lb|de|transitive|ปาก}} [[เรียน]] #: {{syn|de|lernen}} #: {{uxi|de|Wir '''haben''' [[im]] [[Gymnasium]] [[Latein]] und [[Griechisch]].|พวกเราเรียนภาษาละตินและภาษากรีกที่โรงเรียนมัธยม}} # {{lb|de|transitive|ปาก}} [[เจอ]], [[จับ]][[ได้]] #: {{uxi|de|Die [[Polizei]] '''hat''' den [[Ausbrecher]].|ตำรวจจับนักโทษหนีคุกได้}} #: {{uxi|de|'''Hab''' [[dich]]!|ฉันเจอเธอแล้ว/ฉันจับเธอได้แล้ว!}} ==== การผัน ==== {{de-conj|haben<irreg>}} ==== คำแผลง ==== {{col4|de|Habe|Haben|habhaft|häbig|Gehabe}} ==== ลูกคำ ==== {{col4|de|Habenichts|Habgier|Habsucht|Habseligkeit}} {{col4|de|haben können|abhaben|anhaben|aufhaben|dahaben|dabeihaben|gernhaben|herhaben|innehaben|liebhaben|mithaben|teilhaben|umhaben|unterhaben|voraushaben|vorhaben|weghaben|zuhaben}} === อ่านเพิ่ม === * {{R:de:DWDS}} s2cdf50rn83a5z28h4vndmet1qwnifu bromance 0 336651 5754508 2187973 2026-08-06T08:23:10Z OctraBot 3198 /* รากศัพท์ */ มาจากการบัญญัติ 5754508 wikitext text/x-wiki == ภาษาอังกฤษ == {{wikipedia}} === รากศัพท์ === {{blend|en|bro|romance}}; {{coinage|en|Dave Carnie|in=1990s|nat=ชาวอเมริกัน|occ=บรรณาธิการ|nobycat=1}} as part of an article for the skateboard magazine ''{{w|Big Brother (magazine)|Big Brother}}'' to refer specifically to the sort of relationships that develop between skaters who spent a great deal of time together.<ref name =grandbromance>{{cite-journal | last=Elliott | first=Tim | title=A grand bromance | work=The Age | date=2007-08-23 | url=http://www.theage.com.au/news/relationships/a-grand-bromance/2007/08/23/1187462423868.html | accessdate=2008-10-28}}</ref> === การออกเสียง === * {{IPA|en|/ˈbɹoʊmæns/|a=GA}} * {{IPA|en|/ˈbɹəʊmæns/|a=RP}} * {{audio|en|En-au-bromance.ogg|a=AU}} * {{hyph|en|bro|mance}} === คำนาม === {{en-noun|~}} # {{lb|en|ไม่ทางการ}} [[ความสัมพันธ์]][[รักใคร่]][[ระหว่าง]][[ผู้ชาย]] [[โดย]][[ไม่]][[เกี่ยว]][[กับ]][[เรื่อง]][[ทาง]][[เพศ]] #: ''There is a '''bromance''' between Josh and David.'' #* {{quote-journal | en | title=WORD | url=https://www.grindtv.com/surf/word-3-7/ | accessdate=2018-01-06 | magazine=TransWorld Surf | year=2001 | month=April | page=40 | passage='''Bromance'''—Romance between bros. Example: ‘It looks like there's a bit of '''bromance''' between Ryan and Matt.’ }} #* {{RQ:Bolton Room|96|The letter was pure puffery, probably written by some clerk in North Korea's agitprop bureau, but Trump loved it. This was the beginning of the Trump-Kim '''bromance'''.}} ==== คำพ้องความ ==== * {{l|en|brolationship}} * {{l|en|man crush}} ==== คำเกี่ยวข้อง ==== * {{l|en|girl crush}} * {{l|en|sismance}} * {{l|en|womance}} ==== ลูกคำ ==== * {{l|en|bromancey}} * {{l|en|bromantic}} === ดูเพิ่ม === * {{l|en|romantic friendship}} * {{l|en|queerplatonic}} === อ้างอิง === <references/> === คำสลับอักษร === * {{anagrams|en|a=abcemnor|Camborne}} [[หมวดหมู่:English coinages]] {{topics|en|เพศชาย}} qpvk2wmhonbfinyv0qudwsaeyvgfql9 kalendere 0 513640 5754423 5129049 2026-08-06T04:09:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754423 wikitext text/x-wiki == ภาษาเดนมาร์ก == === คำนาม === {{head|da|รูปนาม|g=c}} # {{inflection of|da|kalender||indef|p}} == ภาษานอร์เวย์แบบบุ๊กมอล == === รูปแบบอื่น === * {{alt|nb|kalendre}} * {{alt|nb|kalendrer}} === คำนาม === {{head|nb|รูปนาม|g=m}} # {{inflection of|nb|kalender||indefinite|p}} == ภาษาอังกฤษกลาง == === คำนาม === {{head|enm|คำนาม|altform=1}} # {{alternative form of|enm|kalender}} 1syhxsv9imk5q4nbsozpmx5g74vdjdf kalenderen 0 513641 5754424 5129052 2026-08-06T04:09:20Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754424 wikitext text/x-wiki == ภาษาเดนมาร์ก == === คำนาม === {{head|da|รูปนาม|g=c}} # {{inflection of|da|kalender||def|s}} == ภาษานอร์เวย์แบบนือนอสก์ == === คำนาม === {{head|nn|รูปนาม|g=m}} # {{inflection of|nn|kalender||def|s}} == ภาษานอร์เวย์แบบบุ๊กมอล == === คำนาม === {{head|nb|รูปนาม|g=m}} # {{inflection of|nb|kalender||definite|s}} 5pb4mn7pr3wljeeao8s37fieq6ap3o5 kalenderne 0 513642 5754422 5129053 2026-08-06T04:09:01Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754422 wikitext text/x-wiki == ภาษาเดนมาร์ก == === คำนาม === {{head|da|รูปนาม|g=c}} # {{inflection of|da|kalender||def|p}} == ภาษานอร์เวย์แบบบุ๊กมอล == === รูปแบบอื่น === * {{alt|nb|kalendrene}} === คำนาม === {{head|nb|รูปนาม|g=m}} # {{inflection of|nb|kalender||definite|p}} hma0xktgmsht3wmh3q4g85vgcgkq9kr มอดูล:etymon 828 576414 5754439 5727304 2026-08-06T04:30:02Z Octahedron80 267 5754439 Scribunto text/plain --[=[ This module implements the {{etymon}} template for structured etymology data on Wiktionary. It enables the creation of etymology trees and text by parsing etymon chains, scraping linked pages for their own {{etymon}} data, and recursively building a tree of derivational relationships. Authors: - Original implementation: [[User:Ioaxxere]] - Full refactor (September 2025): [[User:Fenakhay]] ([[Special:Diff/86717746]]) Modules: - [[Module:etymon]]: main module handling parsing, validation, tree building, and page scraping - [[Module:etymon/data]]: keyword definitions, configuration, and status constants - [[Module:etymon/tree]]: etymology tree rendering - [[Module:etymon/text]]: etymology text generation - [[Module:etymon/categories]]: category generation logic - [[Module:etymon/tracking]]: tracking ]=] local export = {} local __state = { cached_etymon_args = {}, cached_etymon_pages = {}, cached_descendants_checks = {}, senseid_parent_etymon = {}, available_etymon_ids = {}, single_etymons = {}, entry_title = nil, entry_lang_code = nil, current_page_has_inline_etymology = false, current_page_has_redundant_etymology = false, used_idless_etymon = false, toplevel_has_inline_etymology = false, toplevel_redundant_etymology = false, toplevel_idless_etymon = false, has_mismatched_id = false, linked_page_multiple_etymons_idless = false, linked_page_partial_etymology_sections = false, partial_etymology_targets = {}, skip_partial_etymology_category = false, max_depth_reached = 0, total_nodes = 0, language_count = {}, toplevel_keyword_stats = {}, id_stats = nil, warnings = {}, } local function reset_invocation_state() __state.current_page_has_inline_etymology = false __state.current_page_has_redundant_etymology = false __state.used_idless_etymon = false __state.toplevel_has_inline_etymology = false __state.toplevel_redundant_etymology = false __state.toplevel_idless_etymon = false __state.has_mismatched_id = false __state.linked_page_multiple_etymons_idless = false __state.linked_page_partial_etymology_sections = false __state.max_depth_reached = 0 __state.total_nodes = 0 __state.language_count = {} __state.toplevel_keyword_stats = {} __state.warnings = {} end local M = require("Module:module loader").init({ require = { data = "Module:etymon/data", tree = "Module:etymon/tree", text = "Module:etymon/text", categories = "Module:etymon/categories", tracking = "Module:etymon/tracking", descendants = "Module:etymon/descendants", anchors = "Module:anchors", etydate = "Module:etydate", etymology = "Module:etymology", families = "Module:families", languages = "Module:languages", languages_errorgetby = "Module:languages/errorGetBy", links = "Module:links", pages = "Module:pages", parameters = "Module:parameters", string_utilities = "Module:string utilities", template_parser = "Module:template parser", utilities = "Module:utilities", debug = "Module:debug", en_utilities = "Module:en-utilities", parse_utilities = "Module:parse utilities", references = "Module:references", template_styles = "Module:TemplateStyles", script_utilities = "Module:script utilities", JSON = "Module:JSON", yesno = "Module:yesno", }, loadData = { headword_data = "Module:headword/data", parameters_data = "Module:parameters/data", text_allowed = "Module:etymon/data/text_allowed", }, }) local Util = {} function Util.format_error(message, preview_only) if preview_only and not M.pages.is_preview() then return nil end return '<span class="error">' .. message .. '</span>' end function Util.add_warning(message, preview_only) local formatted = Util.format_error(message, preview_only) if formatted then table.insert(__state.warnings, formatted) end end function Util.is_text_param_allowed_for_lang(lang) if not lang or type(lang) ~= "table" then return false end local types = lang.getTypes and lang:getTypes() if types and types.family then local code = lang.getCode and lang:getCode() return code and M.text_allowed.families[code] == true end local full_code = lang.getFullCode and lang:getFullCode() if full_code and M.text_allowed.langs[full_code] then return true end if lang.inFamily then for family_code in pairs(M.text_allowed.families) do if lang:inFamily(family_code) then return true end end end return false end function Util.get_lang(code, no_error) if no_error then return M.languages.getByCode(code, nil, true) end return M.languages.getByCode(code, nil, true) or M.languages_errorgetby.code(code, true, true) end -- Match a term language against a text=:lang stop target (supports etymology-only codes). function Util.lang_matches_stop_code(term_lang, stop_code) if not term_lang or not stop_code or stop_code == "" then return false end local stop_lang = Util.get_lang(stop_code, true) if not stop_lang then return false end if term_lang:getCode() == stop_lang:getCode() then return true end if stop_lang:getFullCode() == stop_lang:getCode() then return term_lang:getFullCode() == stop_lang:getCode() end return false end function Util.get_family(code) return M.families.getByCode(code) end function Util.get_lang_exception(lang) -- Families have no language-specific exceptions if lang.getTypes and lang:getTypes().family then return nil end local code = lang:getCode() local lang_exceptions = M.data.config.lang_exceptions if lang_exceptions[code] then return lang_exceptions[code] end for norm_code, exc in pairs(lang_exceptions) do if exc.normalize_to and code == exc.normalize_to then return exc end if exc.normalize_from_families then local should_normalize = false for _, family in ipairs(exc.normalize_from_families) do if lang:inFamily(family) then should_normalize = true break end end if should_normalize and exc.normalize_exclude_families then for _, family in ipairs(exc.normalize_exclude_families) do if lang:inFamily(family) then should_normalize = false break end end end if should_normalize then local ret = {} for k, v in pairs(exc) do ret[k] = v end ret.suppress_tr = nil return ret end end end return nil end function Util.get_norm_lang(lang) local exc = Util.get_lang_exception(lang) if exc and exc.normalize_to then return M.languages.getByCode(exc.normalize_to) end return lang end function Util.resolve_context_lang(lang, node_args) if type(node_args) ~= "table" then return lang end if node_args.status == M.data.STATUS.INLINE then return lang end if not (lang.hasType and lang:hasType("etymology-only")) then return lang end local full = lang.getFull and lang:getFull() if not full or full:getCode() == lang:getCode() then return lang end if full.hasAncestor and full:hasAncestor(lang) then return lang end return full end -- Add default values for boolean modifiers (e.g., <unc> becomes <unc:1>) -- This is needed because Module:parse utilities expects boolean modifiers to have explicit values function Util.add_boolean_defaults(str, param_mods) local result = str for name, spec in pairs(param_mods) do if spec.type == "boolean" then -- Replace <name> with <name:1> (but not <name:...> which already has a value) result = result:gsub("<" .. name .. ">", "<" .. name .. ":1>") end end return result end local REQUEST_TEMPLATE_PARAM_MODS = { rfe = { nocat = { type = "boolean" }, sort = {}, y = {}, m = {}, fragment = {}, section = {}, box = { type = "boolean" }, noes = { type = "boolean" }, }, etystub = { nocat = { type = "boolean" }, sort = {}, nocap = { type = "boolean" }, nodot = { type = "boolean" }, }, } function Util.expand_request_template(frame, template_name, param_value, lang_code) local param_mods = REQUEST_TEMPLATE_PARAM_MODS[template_name] local with_defaults = Util.add_boolean_defaults(param_value, param_mods) local parsed = M.parse_utilities.parse_inline_modifiers(with_defaults, { param_mods = param_mods, generate_obj = function(text) if M.yesno(text, false) then return { is_boolean = true } end return { text = text } end, }) local template_args = { [1] = lang_code } for name in pairs(param_mods) do template_args[name] = parsed[name] end if not parsed.is_boolean then template_args[2] = parsed.text end return " " .. frame:expandTemplate({ title = template_name, args = template_args, }) end -- Centralized term formatting: handles suppress_term (-), unknown_term (empty/+), and regular terms function Util.format_term(term, is_toplevel, opts) opts = opts or {} -- suppress_term (-) returns nil if term.suppress_term then return nil end local lang = term.lang local exc = Util.get_lang_exception(lang) if is_toplevel then local display_text = term.alt or term.title or "" local sc = term.sc or lang:findBestScript(display_text) local bold_text = tostring(mw.html.create("strong") :addClass("selflink") :wikitext(display_text)) return M.script_utilities.tag_text(bold_text, lang, sc, "term") end local link_params = { lang = lang } link_params.term = not term.unknown_term and term.title or nil link_params.alt = term.alt link_params.id = (not term.unknown_term and term.id and term.id ~= "") and term.id or nil if not (exc and exc.suppress_tr) then link_params.tr = term.tr link_params.ts = term.ts else link_params.suppress_tr = true end link_params.lit = (opts.lit ~= "suppress") and term.lit or nil if opts.gloss ~= "suppress" then link_params.gloss = term.t end if term.g and term.g ~= "" then local genders = M.string_utilities.split(term.g, ",") for i = 1, #genders do genders[i] = M.string_utilities.trim(genders[i]) end link_params.genders = genders end if opts.pos ~= "suppress" then link_params.pos = term.pos link_params.ng = term.ng end if exc and exc.suppress_tr then link_params.lit = nil end local show_qualifiers if opts.tree_ql ~= "suppress" then if term.q then link_params.q = term.q end if term.qq then link_params.qq = term.qq end if term.l then link_params.l = term.l end if term.ll then link_params.ll = term.ll end show_qualifiers = term.q or term.qq or term.l or term.ll end return M.links.full_link(link_params, "term", nil, show_qualifiers and true or nil) end local __is_content_page_cached function Util.is_content_page() if __is_content_page_cached == nil then __is_content_page_cached = M.pages.is_content_page(mw.title.getCurrentTitle()) end return __is_content_page_cached end local __page_data_cached function Util.get_page_data() if not __page_data_cached then __page_data_cached = M.headword_data.page end return __page_data_cached end -- Extract base keyword from param (without modifiers) local function get_keyword_base(param) if type(param) ~= "string" then return nil end local base = param:match("^:?([^<]+)") or param:gsub("^:", "") return base end local function is_keyword(param, allow_colon_less) if type(param) ~= "string" then return false end local keywords = M.data.keywords if param:sub(1, 1) == ":" then local base = get_keyword_base(param) return keywords[base] ~= nil end if allow_colon_less then local base = get_keyword_base(param) return keywords[base] ~= nil end return false end local function get_keyword(param, allow_colon_less) if type(param) ~= "string" then return nil end local keywords = M.data.keywords if param:sub(1, 1) == ":" then return get_keyword_base(param) end if allow_colon_less then local base = get_keyword_base(param) if keywords[base] then return base end end return nil end local function normalize_keyword(keyword) if keyword:sub(1, 1) == ":" then return keyword end return ":" .. keyword end -- Resolve keyword (possibly an alias) to its canonical form. Used only at input boundaries local function get_canonical_keyword(keyword) if not keyword then return keyword end return M.data.keyword_canonical[keyword] or keyword end local function is_affix_group_keyword(keyword) local config = keyword and M.data.keywords[keyword] return config and config.affix_categories or false end local function reject_removed_surf_keyword(param) local base = get_keyword_base(param) if base == "surf" then error("The `:surf` keyword has been removed. Use `<surf>` on a formation keyword instead (e.g. `:af<surf>`, `:bor<surf>`).") end end local function copy_keyword_info(source) local copy = {} for k, v in pairs(source) do copy[k] = v end return copy end local function lowercase_glossary_display(text) return text:gsub("(%[%[Appendix:Glossary#[^|]+|)([^%]])([^%]]*)%]%]", function(prefix, first, rest) return prefix .. mw.ustring.lower(first) .. rest .. "]]" end) end local function surf_should_keep_formation_phrase(base) if not base.phrase then return false end if base.glossary then return true end return not (base.phrase == "from" and (base.text == "From" or base.text == "from")) end -- Runtime overrides when <surf> is present on a keyword. local function get_effective_keyword_info(keyword, modifiers) local base = M.data.keywords[keyword] if not base or not modifiers or not modifiers.surf then return base end local effective = copy_keyword_info(base) local surf_text = "By [[Appendix:Glossary#surface_analysis|surface analysis]]," local surf_phrase = "by surface analysis," effective.new_sentence = true effective.invisible = "tree" if surf_should_keep_formation_phrase(base) then effective.phrase = surf_phrase .. " " .. base.phrase if base.text then effective.text = surf_text .. " " .. lowercase_glossary_display(base.text) else effective.text = surf_text .. " " .. base.phrase end else effective.text = surf_text effective.phrase = surf_phrase end return effective end -- Build text/phrase for nominalization with <g:code> (uses data module for codes only). local function get_nominalization_label_for_g(code) if not code or code == "" then return nil end local codes = M.data.nominalization_g_codes local adj = codes[code] if not adj and #code == 2 then local gender_adj = codes[code:sub(1, 1)] local number_adj = codes[code:sub(2, 2)] if gender_adj and number_adj then adj = gender_adj .. " " .. number_adj end end if not adj then return nil end local text = adj:gsub("^%l", function(c) return string.upper(c) end) .. " [[Appendix:Glossary#nominalization|nominalization]] of" local phrase = M.en_utilities.add_indefinite_article(adj .. " [[Appendix:Glossary#nominalization|nominalization]] of", false) return { text = text, phrase = phrase } end local EtymonParser = {} -- Keyword modifier definitions EtymonParser.keyword_param_mods = { unc = { type = "boolean" }, ref = {}, text = { restrict = { keywords = { "from", "derived" } } }, lit = { restrict = { affix_group = true } }, conj = {}, -- conjunction for alternatives: "and", "or", "and/or", etc. g = { restrict = { keywords = { "nominalization" } } }, surf = { type = "boolean" }, senseid = { restrict = { keywords = { "semantic loan" } } }, } -- Term modifier definitions EtymonParser.etymon_param_mods = { id = {}, t = {}, tr = {}, ts = {}, q = {}, qq = {}, l = {}, ll = {}, pos = {}, ng = {}, alt = {}, g = {}, ety = {}, lit = {}, unc = { type = "boolean" }, ref = {}, aftype = { restrict = { affix_group = true } }, postype = {}, bor = { type = "boolean", restrict = { affix_group = true } }, slbor = { type = "boolean", restrict = { affix_group = true } }, lbor = { type = "boolean", restrict = { affix_group = true } }, } local function get_clean_param_mods(param_mods) local clean = {} for mod_name, mod_def in pairs(param_mods) do clean[mod_name] = {} for key, value in pairs(mod_def) do if key ~= "restrict" then clean[mod_name][key] = value end end end return clean end function EtymonParser.check_modifier_restrictions(modifiers, current_keyword, param_mods) for mod_name, mod_value in pairs(modifiers) do -- Only check restrictions if the modifier has a non-false/nil value if mod_value then local mod_def = param_mods[mod_name] if mod_def and mod_def.restrict then if mod_def.restrict.affix_group then if not is_affix_group_keyword(current_keyword) then local mod_display = mod_value == true and "<" .. mod_name .. ">" or "<" .. mod_name .. ":" .. tostring(mod_value) .. ">" error("The modifier `" .. mod_display .. "` is only allowed for affix-group keywords (e.g. `:af`, `:blend`, `:univ`).") end elseif mod_def.restrict.keywords then local allowed_keywords = mod_def.restrict.keywords local is_allowed = false for _, allowed_keyword in ipairs(allowed_keywords) do if current_keyword == allowed_keyword then is_allowed = true break end end if not is_allowed then local keyword_list = {} for _, kw in ipairs(allowed_keywords) do table.insert(keyword_list, ":" .. kw) end local keyword_str = table.concat(keyword_list, #keyword_list == 2 and " or " or ", ") if #keyword_list > 2 then -- Replace last comma with "or" keyword_str = keyword_str:gsub(", ([^,]+)$", " or %1") end local mod_display = mod_value == true and "<" .. mod_name .. ">" or "<" .. mod_name .. ":" .. tostring(mod_value) .. ">" error("The modifier `" .. mod_display .. "` is only allowed for the keyword" .. (#keyword_list > 1 and "s " or " ") .. keyword_str .. ".") end end end end end end local TERM_RULE_DISALLOW = { suppress = { field = "suppress_term", label = "suppressed" }, unknown = { field = "unknown_term", label = "unknown" }, family = { field = "is_family", label = "family" }, } function EtymonParser.check_etymon_limits(count, limits, label, opts) if not limits then return end opts = opts or {} local min_etymons = limits.min_etymons if min_etymons == nil and not opts.skip_default_min then min_etymons = 1 end if min_etymons and count < min_etymons then if min_etymons > 1 then error("Detected " .. label .. " group with fewer than " .. min_etymons .. " etymons.") else error("Detected " .. label .. " with no etymons.") end end if limits.max_etymons and count > limits.max_etymons then local unit = (limits.max_etymons == 1) and "etymon" or "etymons" error("Detected " .. label .. " with more than " .. limits.max_etymons .. " " .. unit .. ".") end end function EtymonParser.check_term_rules(etymon_data, entry_lang, rules, label) label = label or "term" if rules and rules.disallow then local disallowed = {} for _, typ in ipairs(rules.disallow) do local spec = TERM_RULE_DISALLOW[typ] if spec and etymon_data[spec.field] then table.insert(disallowed, spec.label) end end if #disallowed > 0 then error(label .. " does not support " .. mw.text.listToText(disallowed, "or") .. " etymons.") end end if etymon_data.is_family then if rules and rules.family == "disallowed" then error(label .. " does not support family codes" .. (rules.family_suffix or ".")) elseif not etymon_data.suppress_term then error("Family codes require suppressed term (use family:-).") end end if rules then if rules.require_term and (not etymon_data.term or etymon_data.term == "") then error(label .. " requires a term for each listed form.") end if rules.entry_lang then if Util.get_norm_lang(etymon_data.lang):getFullCode() ~= Util.get_norm_lang(entry_lang):getFullCode() then error(label .. " terms must be in the entry language (" .. entry_lang:getFullCode() .. "), got '" .. etymon_data.lang:getFullCode() .. "'.") end end if rules.ancestor_check then M.etymology.check_ancestor(entry_lang, etymon_data.lang) end elseif etymon_data.is_family and not etymon_data.suppress_term then error("Family codes require suppressed term (use family:-).") end end function EtymonParser.check_keyword_term(etymon_data, entry_lang, keyword) local config = M.data.keywords[keyword] EtymonParser.check_term_rules(etymon_data, entry_lang, config and config.term_rules, "`:" .. keyword .. "`") end function EtymonParser.check_supplement_term(etymon_data, entry_lang, supplement_type) local config = M.data.supplements[supplement_type] EtymonParser.check_term_rules(etymon_data, entry_lang, config and config.term_rules, "|" .. supplement_type .. "=") end -- Parse keyword with modifiers (e.g., ":bor<unc>" or ":bor<ref:{{R:example}}>") function EtymonParser.parse_keyword_modifiers(param) if type(param) ~= "string" then return nil, {} end local base_keyword = get_keyword_base(param) if not base_keyword then return nil, {} end local canonical_keyword = get_canonical_keyword(base_keyword) -- Check if there are any modifiers if not param:find("<", 1, true) then return canonical_keyword, {} end -- Parse modifiers using the same mechanism as etymon parsing local rest_with_defaults = Util.add_boolean_defaults(param, EtymonParser.keyword_param_mods) local function generate_obj(ignored) return {} end local parsed = M.parse_utilities.parse_inline_modifiers(rest_with_defaults:gsub("^:?[^<]+", ""), { param_mods = get_clean_param_mods(EtymonParser.keyword_param_mods), generate_obj = generate_obj }) local modifiers = { unc = parsed.unc or false, ref = parsed.ref, text = parsed.text, lit = parsed.lit, conj = parsed.conj, g = parsed.g, surf = parsed.surf or false, senseid = parsed.senseid, } -- Validate modifiers against restrictions EtymonParser.check_modifier_restrictions(modifiers, canonical_keyword, EtymonParser.keyword_param_mods) return canonical_keyword, modifiers end local function normalize_keyword_param(keyword_with_mods) local trimmed = M.string_utilities.trim(keyword_with_mods) reject_removed_surf_keyword(trimmed:match("^:") and trimmed or (":" .. trimmed)) local base = get_keyword_base(trimmed) if not base or not M.data.keywords[base] then error("Invalid keyword '" .. trimmed .. "' in inline etymology") end local canonical_base = get_canonical_keyword(base) local without_colon = trimmed:gsub("^:", "") local mods_part = without_colon:sub(#base + 1) local kw_param = normalize_keyword(canonical_base .. mods_part) EtymonParser.parse_keyword_modifiers(kw_param) return kw_param end local function get_keyword_mod_names() local names = {} for mod_name in pairs(EtymonParser.keyword_param_mods) do names[mod_name] = true end return names end local function parse_inline_ety_run(ety_string) local body = ety_string or "" if body == "" then error("Empty inline etymology") end local keyword_mod_names = get_keyword_mod_names() local pos = 1 local len = #body local function parse_err(msg) error(msg .. " in inline etymology: '" .. body .. "'") end local function peek_double() return body:sub(pos, pos + 1) == "<<" end local function mod_name_from_unwrapped(unwrapped) return unwrapped:match("^<([^:>]+)") end local function is_keyword_mod(unwrapped) local name = mod_name_from_unwrapped(unwrapped) return name and keyword_mod_names[name] or false end local function read_double_bracket() if not peek_double() then return nil end local start = pos pos = pos + 2 while pos <= len - 1 do if body:sub(pos, pos + 1) == ">>" then local token = body:sub(start, pos + 1) pos = pos + 2 return token, token:sub(2, -2) end pos = pos + 1 end parse_err("Unmatched <<") end local function read_angle_cell() if body:sub(pos, pos) ~= "<" or peek_double() then return nil end local open = pos pos = pos + 1 local depth = 1 local i = pos while i <= len do local ch = body:sub(i, i) if ch == "<" then depth = depth + 1 elseif ch == ">" then depth = depth - 1 if depth == 0 then local inner = body:sub(open + 1, i - 1) pos = i + 1 return inner end end i = i + 1 end parse_err("Unmatched <") end local function read_bare_run() local start = pos while pos <= len and body:sub(pos, pos) ~= "<" do pos = pos + 1 end return body:sub(start, pos - 1) end local function absorb_double_keyword_mods(keyword_str) while peek_double() do local saved = pos local _, unwrapped = read_double_bracket() if is_keyword_mod(unwrapped) then keyword_str = keyword_str .. unwrapped else pos = saved break end end return keyword_str end local kw_start = pos while pos <= len and body:sub(pos, pos) ~= "<" do pos = pos + 1 end local keyword = body:sub(kw_start, pos - 1) if keyword:match("^%s*$") then parse_err("Missing keyword") end keyword = absorb_double_keyword_mods(keyword) local cells = {} while pos <= len do if peek_double() then local _, unwrapped = read_double_bracket() if is_keyword_mod(unwrapped) then parse_err("Unexpected keyword modifier " .. unwrapped .. " outside of a keyword") end table.insert(cells, "+" .. unwrapped) elseif body:sub(pos, pos) == "<" then local inner = read_angle_cell() if inner ~= "" then table.insert(cells, inner) end else local bare = read_bare_run() if bare ~= "" then if bare:sub(1, 1) ~= ":" then parse_err("Unexpected bare text '" .. bare .. "' (use :keyword for nested keywords in inline etymology)") end if not is_keyword(bare, true) then parse_err("Invalid keyword '" .. bare .. "' in inline etymology") end table.insert(cells, absorb_double_keyword_mods(bare)) end end end return { keyword = keyword, cells = cells, } end function EtymonParser.inline_ety_to_pipe(ety_string) local run = parse_inline_ety_run(ety_string) if not run.keyword or run.keyword:match("^%s*$") then return "|" end local pipe_parts = { normalize_keyword_param(M.string_utilities.trim(run.keyword)) } for _, segment in ipairs(run.cells) do if is_keyword(segment, true) then table.insert(pipe_parts, normalize_keyword_param(segment)) else table.insert(pipe_parts, segment) end end return "|" .. table.concat(pipe_parts, "|") .. "|" end function EtymonParser.pipe_to_inline_ety(pipe_string) local cells = {} for cell in pipe_string:gmatch("([^|]+)") do if cell ~= "" then table.insert(cells, cell) end end if #cells == 0 then return "" end local inline_parts = {} for index, cell in ipairs(cells) do local base = get_keyword_base(cell) if base and M.data.keywords[base] then local without_colon = cell:gsub("^:", "") local kw_base, mods = without_colon:match("^([^<]+)(.*)$") local inline_kw = (kw_base or without_colon) .. (mods or ""):gsub("<([^>]+)>", "<<%1>>") if index > 1 then inline_kw = ":" .. inline_kw end table.insert(inline_parts, inline_kw) elseif cell:sub(1, 1) == "+" then local mod = cell:sub(2) if mod:match("^<.->$") then mod = mod:sub(2, -2) end table.insert(inline_parts, "<<" .. mod .. ">>") else table.insert(inline_parts, "<" .. cell .. ">") end end return table.concat(inline_parts, "") end function EtymonParser.parse_inline_ety(ety_string, context_lang) local run = parse_inline_ety_run(ety_string) local keyword = M.string_utilities.trim(run.keyword) reject_removed_surf_keyword(":" .. keyword) if not is_keyword(keyword, true) then error("Invalid keyword '" .. keyword .. "' in inline etymology <ety:" .. keyword .. "...>") end local args = { context_lang:getCode(), normalize_keyword_param(keyword) } for _, segment in ipairs(run.cells) do if is_keyword(segment, true) then table.insert(args, normalize_keyword_param(segment)) else table.insert(args, segment) end end return args end function EtymonParser.parse_etymon(param, context_lang) if is_keyword(param) then return nil end if type(param) ~= "string" then return nil end local lang, rest local is_family = false local before_bracket = param:match("^([^<]*)") or param local lang_code, rest_match = before_bracket:match("^([a-zA-Z][a-zA-Z0-9._-]*):(.*)$") if lang_code then local potential_lang = Util.get_lang(lang_code, true) if potential_lang then lang = potential_lang rest = param:sub(#lang_code + 2) else local potential_family = Util.get_family(lang_code) if potential_family then lang = potential_family rest = param:sub(#lang_code + 2) is_family = true else lang = context_lang rest = param end end else lang = context_lang rest = param end M.tracking.track_term(rest) if rest == "" or rest == "+" then return { lang = lang, term = nil, unknown_term = true, is_family = is_family, } end if rest == "-" then return { lang = lang, term = nil, suppress_term = true, is_family = is_family, } end if not rest:find("<", 1, true) then return { lang = lang, term = M.string_utilities.trim(rest), is_family = is_family, } end local term_text = rest:match("^([^<]*)") or "" local is_unknown = (term_text == "" or term_text == "+") local is_suppress = (term_text == "-") local function generate_obj(ignored_term) return { term = (is_unknown or is_suppress) and nil or M.string_utilities.trim(term_text) } end local rest_with_defaults = Util.add_boolean_defaults(rest, EtymonParser.etymon_param_mods) local parsed_obj = M.parse_utilities.parse_inline_modifiers(rest_with_defaults, { param_mods = get_clean_param_mods(EtymonParser.etymon_param_mods), generate_obj = generate_obj }) if parsed_obj.id and parsed_obj.id:match("^!") then parsed_obj.id = parsed_obj.id:sub(2) parsed_obj.override = true end parsed_obj.lang = lang parsed_obj.is_family = is_family if is_unknown then parsed_obj.unknown_term = true elseif is_suppress then parsed_obj.suppress_term = true end return parsed_obj end function EtymonParser.validate(lang, args, id, title, pos, starts_with_lang_code) -- id is now optional, so only validate if provided if id then if mw.ustring.len(id) < 2 then error("The `id` parameter must have at least two characters.") end if id == title or id == Util.get_page_data().pagename then error("The `id` parameter must not be the same as the page title.") end end local valid_pos = { prefix = true, suffix = true, interfix = true, infix = true, root = true, word = true } if pos and not valid_pos[pos] then error("Unknown value provided for `pos`. Valid values: " .. table.concat(require("Module:table").keysToList(valid_pos), ", ") .. ".") end local current_keyword = "from" local current_keyword_explicit = false local keyword_etymons = {} local keywords = M.data.keywords local function checkKeyword() local config = keywords[current_keyword] if current_keyword == "from" and not current_keyword_explicit and #keyword_etymons == 0 then keyword_etymons = {} return end EtymonParser.check_etymon_limits(#keyword_etymons, config, "`:" .. current_keyword .. "`") keyword_etymons = {} end local start_index = starts_with_lang_code and 2 or 1 for i = start_index, #args do local param = args[i] if type(param) ~= "string" then elseif param:sub(1, 1) == ":" and not is_keyword(param) then reject_removed_surf_keyword(param) error("Invalid keyword '" .. param .. "'. Did you mean a valid keyword like ':bor', ':inh', etc.?") elseif is_keyword(param) then checkKeyword() current_keyword = get_canonical_keyword(get_keyword(param)) current_keyword_explicit = true else local etymon_data = EtymonParser.parse_etymon(param, lang) if etymon_data then table.insert(keyword_etymons, param) EtymonParser.check_keyword_term(etymon_data, lang, current_keyword) -- Check modifier restrictions EtymonParser.check_modifier_restrictions(etymon_data, current_keyword, EtymonParser.etymon_param_mods) -- postype must be "root" or "word" local VALID_POSTYPES = { root = true, word = true } if etymon_data.postype and not VALID_POSTYPES[etymon_data.postype] then error("Invalid <postype:" .. etymon_data.postype .. ">; must be \"root\" or \"word\".") end if etymon_data.ety then local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) EtymonParser.validate(etymon_data.lang, inline_args, nil, nil, nil, true) end else table.insert(keyword_etymons, param) end end end checkKeyword() end local DataRetriever = {} local function format_etymon_id_hint(id_data, idx) local id = type(id_data) == "table" and id_data.id or id_data local pos = type(id_data) == "table" and id_data.pos if id and id ~= "" and id ~= "*" then return '"' .. id .. '"' end if pos and pos ~= "" then return "unnamed (|pos=" .. pos .. "|)" end return "etymon #" .. idx .. " (no |id= on page)" end local function etymon_target_page_link(page, norm_lang) return M.links.full_link({ term = page, lang = norm_lang, no_generate_forms = true, }, "term") end -- Summarize {{etymon}} id slots on a linked page for preview warnings. local function summarize_available_etymon_ids(ids) local id_list = {} local all_idless = true local target_has_idless = false local any_pos = false for i, id_data in ipairs(ids) do local id = type(id_data) == "table" and id_data.id or id_data local pos = type(id_data) == "table" and id_data.pos if id and id ~= "" and id ~= "*" then all_idless = false else target_has_idless = true end if pos and pos ~= "" then any_pos = true end table.insert(id_list, format_etymon_id_hint(id_data, i)) end return { id_list = id_list, all_idless = all_idless, target_has_idless = target_has_idless, any_pos = any_pos, count = #ids, options_text = mw.text.listToText(id_list), } end local function ambiguous_etymon_suggestion(page_link, summary) if summary.all_idless then if summary.any_pos then return " None set `|id=` yet; add a unique `|id=` to each on " .. page_link .. ", then `<id:identifier>` after the term here. Section order / hints: " .. summary.options_text .. "." end return " None set `|id=` yet; add a unique `|id=` to each {{etymon}} in that section from top to bottom, then `<id:identifier>` after the term here (same value as `|id=`)." end return " Specify which one with `<id:identifier>` after the term. Options: " .. summary.options_text .. "." end local function warn_ambiguous_etymon_link(page, norm_lang, ids, is_toplevel) local page_link = etymon_target_page_link(page, norm_lang) local summary = summarize_available_etymon_ids(ids) if is_toplevel and summary.target_has_idless then __state.linked_page_multiple_etymons_idless = true end local lang_name = norm_lang:getCanonicalName() local lead = "Etymology link to " .. page_link .. " is ambiguous (" .. summary.count .. " {{etymon}} templates for " .. lang_name .. ")." Util.add_warning(lead .. ambiguous_etymon_suggestion(page_link, summary), true) end local function is_mismatched_explicit_id(base_key, cached_args, parent_etymon) return cached_args == M.data.STATUS.MISSING and not parent_etymon and #(__state.available_etymon_ids[base_key] or {}) > 0 end local function maybe_flag_partial_etymology_reference(base_key, etymon_data, cached_args, is_toplevel) if not is_toplevel or __state.skip_partial_etymology_category then return end if not __state.partial_etymology_targets[base_key] then return end if etymon_data.id and type(cached_args) == "table" then return end __state.linked_page_partial_etymology_sections = true end local function is_nonlemma_etymon_template(template_args) return template_args and M.yesno(template_args.nl, false) end local function warn_mismatched_explicit_id(page, norm_lang, base_key, etymon_id) local page_link = etymon_target_page_link(page, norm_lang) local summary = summarize_available_etymon_ids(__state.available_etymon_ids[base_key] or {}) local lang_name = norm_lang:getCanonicalName() local lead = "Etymology link to " .. page_link .. " uses `<id:" .. etymon_id .. ">`, but no {{etymon}} on that page has `|id=" .. etymon_id .. "|` for " .. lang_name .. "." Util.add_warning(lead .. " Valid IDs: " .. summary.options_text .. ".", true) end -- Given an etymon data, scrape its page and cache the result in the global state object. function DataRetriever.cache_page_etymons(etymon_page, etymon_title, key, etymon_lang, etymon_id, redirected_from, descendants_is_toplevel) local content = etymon_title:getContent() if not content then __state.cached_etymon_args[key] = M.data.STATUS.REDLINK return end -- Check if the linked page is a redirect. If it is, the template parsing -- code below will be effectively skipped, and `scrape_page` will be called -- again on the redirect target (see the bottom of this function) local lang_section_for_descendants = nil local redirect_target = etymon_title.redirect_target if not redirect_target then content = M.pages.get_section(content, etymon_lang:getFullName(), 2) if not content then __state.cached_etymon_args[key] = M.data.STATUS.MISSING return end lang_section_for_descendants = content end local etymon_lang_code = etymon_lang:getFullCode() local lang_page_key = etymon_lang_code .. ":" .. etymon_page local found_templates_for_lang = {} local found_ids = {} local get_node_class = M.template_parser.class_else_type -- Look for all {{etymon}} templates within the page content using the template parser -- This way the same page is never parsed more than once -- Build a map from senseids to their parent etymonids. local active_etymon_args = nil local etymology_section_count = 0 local etymology_sections_with_etymon = 0 local current_etymology_has_etymon = false local current_etymology_has_nonlemma = false local function finalize_current_etymology_section() if etymology_section_count == 0 then return end if current_etymology_has_etymon or current_etymology_has_nonlemma then etymology_sections_with_etymon = etymology_sections_with_etymon + 1 end current_etymology_has_etymon = false current_etymology_has_nonlemma = false end for node in M.template_parser.parse(content):iterate_nodes() do local node_class = get_node_class(node) if node_class == "heading" then -- A new L2 or etymology section acts as a barrier: an {{etymon}} usage -- used previously cannot be the parent of any subsequent senseids. -- Note that we don't have to check for L2s due to the usage of `M.pages.get_section` above. if node:get_name():find("^Etymology") then finalize_current_etymology_section() etymology_section_count = etymology_section_count + 1 active_etymon_args = nil end elseif node_class == "template" then local template_name = node:get_name() if template_name == "etymon" then local template_args = node:get_arguments() -- Check if this etymon is for our language if template_args[1] == etymon_lang_code then if is_nonlemma_etymon_template(template_args) then if etymology_section_count > 0 then current_etymology_has_nonlemma = true end else if etymology_section_count > 0 then current_etymology_has_etymon = true end table.insert(found_templates_for_lang, template_args) if template_args.id then local etymon_key = lang_page_key .. ":" .. template_args.id __state.cached_etymon_args[etymon_key] = template_args __state.cached_etymon_pages[etymon_key] = tostring(etymon_page) table.insert(found_ids, template_args.id) active_etymon_args = template_args else -- Store idless etymon with default key local etymon_key = lang_page_key .. ":*" __state.cached_etymon_args[etymon_key] = template_args __state.cached_etymon_pages[etymon_key] = tostring(etymon_page) table.insert(found_ids, "*") active_etymon_args = template_args end end end elseif active_etymon_args and template_name == "senseid" then local template_args = node:get_arguments() -- This should always be true for proper usages of {{senseid}}. if template_args[1] == etymon_lang_code and template_args[2] then local sense_id_key = lang_page_key .. ":" .. template_args[2] __state.senseid_parent_etymon[sense_id_key] = active_etymon_args __state.cached_etymon_pages[sense_id_key] = tostring(etymon_page) end end end end finalize_current_etymology_section() if lang_section_for_descendants and etymology_section_count > 1 and etymology_sections_with_etymon > 0 and etymology_sections_with_etymon < etymology_section_count then __state.partial_etymology_targets[lang_page_key] = true end if descendants_is_toplevel and lang_section_for_descendants and #found_templates_for_lang > 0 then M.descendants.cache_page_checks({ lang_section = lang_section_for_descendants, etymon_lang_code = etymon_lang_code, found_templates_for_lang = found_templates_for_lang, entry_title = __state.entry_title, entry_lang_code = __state.entry_lang_code, entry_lang = __state.entry_lang_code and Util.get_lang(__state.entry_lang_code, true) or nil, cached_descendants_checks = __state.cached_descendants_checks, lang_page_key = lang_page_key, redirected_from = redirected_from, }) end local id_data_list = {} for _, args in ipairs(found_templates_for_lang) do local id = args.id or "*" table.insert(id_data_list, { id = id, pos = args.pos }) end __state.available_etymon_ids[lang_page_key] = id_data_list if #found_templates_for_lang == 1 then __state.single_etymons[lang_page_key] = found_templates_for_lang[1] end if redirected_from and __state.available_etymon_ids[lang_page_key] then __state.available_etymon_ids[redirected_from] = __state.available_etymon_ids[redirected_from] or {} for _, id_data in ipairs(__state.available_etymon_ids[lang_page_key]) do table.insert(__state.available_etymon_ids[redirected_from], id_data) end end if __state.cached_etymon_args[key] ~= nil or __state.senseid_parent_etymon[key] ~= nil then -- All done! return elseif redirect_target and not redirected_from then -- Try scraping the redirect. etymon_page = redirect_target.prefixedText DataRetriever.cache_page_etymons(etymon_page, redirect_target, lang_page_key .. ":" .. etymon_id, etymon_lang, etymon_id, lang_page_key, descendants_is_toplevel) __state.cached_etymon_args[key] = __state.cached_etymon_args[etymon_lang_code .. ":" .. etymon_page .. ":" .. etymon_id] else __state.cached_etymon_args[key] = M.data.STATUS.MISSING end end local function has_linkable_term(etymon_data) if etymon_data.is_family or etymon_data.suppress_term or etymon_data.unknown_term then return false end local term = etymon_data.term if term == nil or term == "" then return false end return M.string_utilities.trim(term) ~= "" end local function record_term_id_tracking(etymon_data) if not has_linkable_term(etymon_data) then return end local term_page = M.links.get_link_page(etymon_data.term, etymon_data.lang) M.tracking.record_term_id_usage(__state.id_stats, etymon_data, term_page) end -- Given an etymon object, scrape its page (if necessary) and return its own etymon arguments as well as the page name. function DataRetriever.get_etymon_args(etymon_data, is_toplevel) if not has_linkable_term(etymon_data) then return M.data.STATUS.MISSING, nil, nil, nil end local page = M.links.get_link_page(etymon_data.term, etymon_data.lang) local norm_lang = Util.get_norm_lang(etymon_data.lang) local base_key = norm_lang:getFullCode() .. ":" .. page if etymon_data.id then local key = base_key .. ":" .. etymon_data.id local cached_args = __state.cached_etymon_args[key] or __state.senseid_parent_etymon[key] if cached_args == nil then local title = mw.title.new(page) if not title then error('Invalid page title "' .. page .. '" encountered.') end DataRetriever.cache_page_etymons(page, title, key, norm_lang, etymon_data.id, nil, is_toplevel) end cached_args = __state.cached_etymon_args[key] or __state.senseid_parent_etymon[key] -- refresh -- Get etymon_id from parent if this was resolved via senseid local parent_etymon = __state.senseid_parent_etymon[key] local resolved_etymon_id = parent_etymon and parent_etymon.id local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { explicit_id = etymon_data.id, parent_etymon = parent_etymon, }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, key, norm_lang, etymon_data.id, nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { explicit_id = etymon_data.id, parent_etymon = parent_etymon, }, }) end end local mismatched_id = is_mismatched_explicit_id(base_key, cached_args, parent_etymon) if mismatched_id and is_toplevel then __state.has_mismatched_id = true M.tracking.record_mismatched_id_usage(__state.id_stats, norm_lang, page, etymon_data.id) warn_mismatched_explicit_id(page, norm_lang, base_key, etymon_data.id) end maybe_flag_partial_etymology_reference(base_key, etymon_data, cached_args, is_toplevel) return cached_args, __state.cached_etymon_pages[key], resolved_etymon_id, descendants_check else __state.used_idless_etymon = true if is_toplevel then __state.toplevel_idless_etymon = true end if __state.available_etymon_ids[base_key] == nil then local title = mw.title.new(page) if not title then error('Invalid page title "' .. page .. '" encountered.') end DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, is_toplevel) end local ids = __state.available_etymon_ids[base_key] or {} local count = #ids -- Try to filter by postype if available and we have multiple candidates if count > 1 and etymon_data.postype then local matching_ids = {} for _, id_data in ipairs(ids) do if id_data.pos == etymon_data.postype then table.insert(matching_ids, id_data) end end if #matching_ids == 1 then local matched_id = matching_ids[1].id local matched_key = base_key .. ":" .. matched_id M.tracking.record_idless_resolution(__state.id_stats, norm_lang, page, "postype") local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { id = matched_id }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { id = matched_id }, }) end end local matched_args = __state.cached_etymon_args[matched_key] maybe_flag_partial_etymology_reference(base_key, etymon_data, matched_args, is_toplevel) return matched_args, __state.cached_etymon_pages[matched_key], nil, descendants_check end end if count == 1 then local only_id_data = ids[1] local only_id = (type(only_id_data) == "table" and only_id_data.id) or only_id_data or "*" M.tracking.record_idless_resolution(__state.id_stats, norm_lang, page, "single") local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { id_data = only_id_data }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { id_data = only_id_data }, }) end end local single_args = __state.single_etymons[base_key] maybe_flag_partial_etymology_reference(base_key, etymon_data, single_args, is_toplevel) return single_args, __state.cached_etymon_pages[base_key .. ":" .. only_id], nil, descendants_check elseif count > 1 then M.tracking.record_idless_resolution(__state.id_stats, norm_lang, page, "ambiguous") warn_ambiguous_etymon_link(page, norm_lang, ids, is_toplevel) maybe_flag_partial_etymology_reference(base_key, etymon_data, M.data.STATUS.AMBIGUOUS, is_toplevel) return M.data.STATUS.AMBIGUOUS, nil, nil, nil else M.tracking.record_idless_resolution(__state.id_stats, norm_lang, page, "missing") maybe_flag_partial_etymology_reference(base_key, etymon_data, M.data.STATUS.MISSING, is_toplevel) return M.data.STATUS.MISSING, nil, nil, nil end end end local function keyword_invisible_in_tree(keyword_info) if not keyword_info then return false end local inv = keyword_info.invisible return inv == "all" or inv == true or inv == "tree" end -- True when the node has at least one top-level child container visible in the tree. local function node_has_visible_tree_children(node) for _, container in ipairs(node.children or {}) do if not keyword_invisible_in_tree(container.keyword_info) then return true end end return false end -- Count visible term nodes in the tree. local function get_visible_tree_depth(node, skip_child_rendering) local max_depth = 1 if skip_child_rendering or not node then return max_depth end for _, container in ipairs(node.children or {}) do local keyword_info = container.keyword_info if not keyword_invisible_in_tree(keyword_info) then local skip_grandchildren = keyword_info and keyword_info.no_child_categories for _, term in ipairs(container.terms or {}) do if term.is_duplicate then if term.original_has_children then max_depth = math.max(max_depth, 2) end else max_depth = math.max(max_depth, 1 + get_visible_tree_depth(term, skip_grandchildren)) end end end end return max_depth end local function as_param_list(val) if val == nil then return {} end if type(val) == "table" then return val end if type(val) == "string" and val ~= "" then return { val } end return {} end local TreeBuilder = {} local function parse_etymon_references(refs_text) if not refs_text or refs_text == "" then return "" end return M.references.parse_references(refs_text) end local function parse_tree_references(node) if node.ref then node.parsed_ref = parse_etymon_references(node.ref) end if node.children then for _, container in ipairs(node.children) do if container.terms then for _, term in ipairs(container.terms) do parse_tree_references(term) end end end end if node.supplements then for _, supplement in ipairs(node.supplements) do if supplement.terms then for _, term in ipairs(supplement.terms) do parse_tree_references(term) end end end end end -- Build a unique key for deduplication in the seen table function TreeBuilder.build_key(lang, title, args) local norm_lang_code = Util.get_norm_lang(lang):getFullCode() local is_table = type(args) == "table" local id = (is_table and args.id) or "" if title then return norm_lang_code .. ":" .. M.links.get_link_page(title, lang) .. ":" .. id end if is_table and args.status == M.data.STATUS.INLINE then local content_parts = {} for i = 1, #args do content_parts[i] = tostring(args[i]) end return norm_lang_code .. ":*:" .. id .. "\0" .. table.concat(content_parts, "\0") end return norm_lang_code .. ":*:" .. id end -- Copy parsed etymon modifiers onto a tree/supplement term node. function TreeBuilder.apply_etymon_fields(term, etymon_data) term.id = etymon_data.id term.t = etymon_data.t term.tr = etymon_data.tr term.ts = etymon_data.ts term.alt = etymon_data.alt term.g = etymon_data.g term.pos = etymon_data.pos term.ng = etymon_data.ng term.ref = etymon_data.ref term.is_uncertain = etymon_data.unc term.lit = etymon_data.lit term.q = etymon_data.q term.qq = etymon_data.qq term.l = etymon_data.l term.ll = etymon_data.ll term.suppress_term = etymon_data.suppress_term term.unknown_term = etymon_data.unknown_term term.is_family = etymon_data.is_family term.override = etymon_data.override term.aftype = etymon_data.aftype term.postype = etymon_data.postype term.bor = etymon_data.bor term.lbor = etymon_data.lbor term.slbor = etymon_data.slbor end function TreeBuilder.build_supplement_term(etymon_data, entry_lang, supplement_type) EtymonParser.check_supplement_term(etymon_data, entry_lang, supplement_type) local term = { lang = etymon_data.lang, title = etymon_data.term, children = {}, status = M.data.STATUS.OK, } TreeBuilder.apply_etymon_fields(term, etymon_data) return term end function TreeBuilder.build_supplement_terms(entry_lang, supplement_type, param_value) local terms = {} for _, term_param in ipairs(as_param_list(param_value)) do if type(term_param) == "string" and term_param ~= "" then local etymon_data = EtymonParser.parse_etymon(term_param, entry_lang) if etymon_data then table.insert(terms, TreeBuilder.build_supplement_term(etymon_data, entry_lang, supplement_type)) end end end return terms end -- Attach a |param= supplement defined in etymon_data.supplements (e.g. doublet=). function TreeBuilder.append_term_supplement(data_tree, entry_lang, supplement_type, param_value) local config = M.data.supplements[supplement_type] if not config then error("Unknown supplement '" .. tostring(supplement_type) .. "'.") end local terms = TreeBuilder.build_supplement_terms(entry_lang, supplement_type, param_value) if #terms == 0 then return end data_tree.supplements = data_tree.supplements or {} table.insert(data_tree.supplements, { type = supplement_type, config = config, terms = terms, }) M.tracking.record_keyword_usage(__state.toplevel_keyword_stats, supplement_type, entry_lang, entry_lang, true) end function TreeBuilder.build(lang, title, args, seen, depth, stop_recursion) seen = seen or {} depth = depth or 0 local is_toplevel = (depth == 0) if depth > __state.max_depth_reached then __state.max_depth_reached = depth end __state.total_nodes = __state.total_nodes + 1 local lang_code = lang:getCode() __state.language_count[lang_code] = (__state.language_count[lang_code] or 0) + 1 local current_id = (type(args) == "table" and args.id) or "" local key = TreeBuilder.build_key(lang, title, args) local node = { lang = lang, title = title, id = current_id, args = args, children = {}, status = M.data.STATUS.OK } if type(args) ~= "table" or seen[key] then node.status = args or M.data.STATUS.MISSING -- Mark as duplicate if we've seen this node before if seen[key] then node.is_duplicate = true node.duplicate_key = key local original_node = seen[key] if type(original_node) == "table" and original_node.children and #original_node.children > 0 then node.original_has_children = true end end return node end node.status = args.status or M.data.STATUS.OK seen[key] = node -- If stop_recursion is set, skip parsing children but check for visible children if stop_recursion then local keywords = M.data.keywords local has_visible_children = false for i = 2, #args do local param = args[i] if type(param) == "string" then local keyword_base = get_keyword_base(param) if keyword_base and keywords[keyword_base] then local _, kw_modifiers = EtymonParser.parse_keyword_modifiers(param:sub(1, 1) == ":" and param or (":" .. param)) if not keyword_invisible_in_tree(get_effective_keyword_info(keyword_base, kw_modifiers)) then has_visible_children = true break end elseif param:sub(1, 1) ~= ":" then -- It's a term (not a keyword), so there are visible children has_visible_children = true break end end end node.has_visible_children = has_visible_children return node end -- Parse args into keyword containers local current_keyword = "from" local current_keyword_modifiers = {} local current_container = nil local function ensure_container() if not current_container or current_container.keyword ~= current_keyword then local keyword_info = get_effective_keyword_info(current_keyword, current_keyword_modifiers) current_container = { keyword = current_keyword, keyword_info = keyword_info, keyword_modifiers = current_keyword_modifiers, terms = {}, } table.insert(node.children, current_container) -- Override keyword text/phrase for nominalization with <g:code> if current_keyword_modifiers.g and current_keyword == "nominalization" then local labels = get_nominalization_label_for_g(current_keyword_modifiers.g) if not labels then local codes = {} for c in pairs(M.data.nominalization_g_codes) do table.insert(codes, c) end table.sort(codes) error("Invalid <g:" .. tostring(current_keyword_modifiers.g) .. ">. Supported codes for nominalization: " .. table.concat(codes, ", ")) end current_container.keyword_info = copy_keyword_info(keyword_info) current_container.keyword_info.text = labels.text current_container.keyword_info.phrase = labels.phrase end end return current_container end local parse_context_lang = Util.resolve_context_lang(lang, args) for i = 2, #args do local param = args[i] if is_keyword(param) then local keyword, modifiers = EtymonParser.parse_keyword_modifiers(param) if not keyword then error("Invalid keyword '" .. param .. "'.") end current_keyword = keyword current_keyword_modifiers = modifiers current_container = nil -- Force new container for new keyword elseif type(param) == "string" and param:sub(1, 1) == ":" then reject_removed_surf_keyword(param) error("Invalid keyword '" .. param .. "'. Did you mean a valid keyword like ':bor', ':inh', etc.?") elseif type(param) == "string" then local etymon_data = EtymonParser.parse_etymon(param, parse_context_lang) if etymon_data then -- Track keyword usage at top level M.tracking.record_keyword_usage(__state.toplevel_keyword_stats, current_keyword, lang, etymon_data.lang, is_toplevel) local term_node = {} local container -- Handle suppress_term (-) and unknown_term (empty or +) directly if etymon_data.suppress_term or etymon_data.unknown_term then container = ensure_container() if etymon_data.ety then local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) inline_args.id = etymon_data.id inline_args.status = M.data.STATUS.INLINE term_node = TreeBuilder.build(etymon_data.lang, nil, inline_args, seen, depth + 1) else term_node = { lang = etymon_data.lang, children = {}, status = M.data.STATUS.OK, } end TreeBuilder.apply_etymon_fields(term_node, etymon_data) else -- Regular term: fetch arguments from page record_term_id_tracking(etymon_data) local etymon_args, page_of, resolved_etymon_id, descendants_check = DataRetriever.get_etymon_args(etymon_data, is_toplevel) -- Check for <ety> inline parameter doesn't override the scraped arguments, unless the latter are missing if etymon_data.ety then if etymon_args == M.data.STATUS.REDLINK or etymon_args == M.data.STATUS.MISSING then __state.current_page_has_inline_etymology = true if is_toplevel then __state.toplevel_has_inline_etymology = true end local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) -- Track inline ety keywords too local inline_keyword = get_keyword(inline_args[2], true) if inline_keyword and #inline_args >= 3 then local inline_etymon = EtymonParser.parse_etymon(inline_args[3], etymon_data.lang) if inline_etymon then M.tracking.record_keyword_usage(__state.toplevel_keyword_stats, inline_keyword, etymon_data.lang, inline_etymon.lang, is_toplevel) end end inline_args.id = etymon_data.id inline_args.status = M.data.STATUS.INLINE etymon_args = inline_args term_node.page_of = __state.cached_etymon_pages[key] -- term node is on the same page as the parent else -- Scraped arguments exist, <ety> is redundant and ignored __state.current_page_has_redundant_etymology = true if is_toplevel then __state.toplevel_redundant_etymology = true end end end -- Ensure container exists before checking keyword info container = ensure_container() -- Check if current keyword has no_child_categories - if so, stop recursion local keyword_info = container.keyword_info local should_stop_recursion = (stop_recursion or (keyword_info and keyword_info.no_child_categories)) term_node = TreeBuilder.build(etymon_data.lang, etymon_data.term, etymon_args, seen, depth + 1, should_stop_recursion) term_node.target_key = Util.get_norm_lang(etymon_data.lang):getFullCode() .. ":" .. M.links.get_link_page(etymon_data.term, etymon_data.lang) term_node.etymon_id = resolved_etymon_id -- The actual etymon id when resolved via senseid term_node.page_of = page_of TreeBuilder.apply_etymon_fields(term_node, etymon_data) term_node.missing_descendants_header, term_node.missing_descendants_entry = M.descendants.get_term_sync_flags(current_keyword, term_node.status, descendants_check) end table.insert(container.terms, term_node) end end end return node end -- Convert etymology tree to JSON-serializable table local function tree_to_json(node) local obj = { term = node.title, lang = node.lang:getCode(), lang_name = node.lang:getCanonicalName(), id = (node.id and node.id ~= "") and node.id or nil, status = node.status, is_uncertain = node.is_uncertain or nil, is_duplicate = node.is_duplicate or nil, gloss = node.t, transliteration = node.tr, transcription = node.ts, alt = node.alt, g = node.g, pos = node.pos, ng = node.ng, children = {}, } for _, container in ipairs(node.children or {}) do local keyword_info = container.keyword_info if keyword_info then local container_obj = { keyword = container.keyword, keyword_label = keyword_info.text, keyword_abbrev = keyword_info.abbrev, is_group = keyword_info.is_group or nil, is_invisible = keyword_info.invisible or nil, is_uncertain = (container.keyword_modifiers and container.keyword_modifiers.unc) or nil, terms = {}, } for _, term in ipairs(container.terms or {}) do table.insert(container_obj.terms, tree_to_json(term)) end table.insert(obj.children, container_obj) end end return obj end -- Build and return the etymology data tree for a given term. function export.get_tree(lang, title, args, options) options = options or {} __state.entry_title = title __state.entry_lang_code = lang:getCode() __state.id_stats = M.tracking.new_id_stats() __state.skip_partial_etymology_category = options.skip_partial_etymology_category == true if options.validate then EtymonParser.validate(lang, args, options.id, title, options.pos, false) end local lang_code = lang:getCode() local start_index = (args[1] == lang_code) and 2 or 1 local tree_args = { [1] = lang_code, id = options.id or args.id } for i = start_index, #args do table.insert(tree_args, args[i]) end __state.cached_etymon_args[lang_code .. ":" .. title .. ":" .. (tree_args.id or "")] = tree_args local ety_data_tree = TreeBuilder.build(lang, title, tree_args) parse_tree_references(ety_data_tree) if options.json then return M.JSON.toJSON(tree_to_json(ety_data_tree)) end return ety_data_tree end -- Given a language code, page name and optionally the id= parameter, -- render the tree and only the etymology tree for the relevant page. -- Fetches and parses the corresponding {{etymon}} from the requested page, -- and any further pages needed to render the tree. -- Parameters can be passed either through the #invoke or as -- template parameters *through* an #invoke. function export.render_tree_for_etymon_on_page(frame) local frame_args = frame.args local parent_args = frame:getParent().args local langcode = frame_args[1] or parent_args[1] local pagename = frame_args[2] or parent_args[2] local id = frame_args["id"] or parent_args["id"] local display_title = frame_args["title"] or parent_args["title"] local parsed_title = mw.title.new(pagename, 0) local title if parsed_title.namespace == 0 then title = M.pages.safe_page_name(parsed_title) elseif parsed_title.namespace == 118 then title = "*" .. M.pages.safe_page_name(parsed_title) else error("Unsupported namespace for render_tree_for_etymon_on_page: " .. parsed_title.namespace) end local lang = Util.get_lang(langcode) __state.entry_title = title __state.entry_lang_code = lang:getCode() __state.id_stats = M.tracking.new_id_stats() -- Construct etymon_data for DataRetriever.get_args. local etymon_data = { lang = lang, term = title, id = id } local args, pagename = DataRetriever.get_etymon_args(etymon_data, true) if args == M.data.STATUS.MISSING then error("The etymon template was not found (language " .. langcode .. ", title '" .. title .. "'" .. (id and ", ID '" .. id .. "'" or ", no ID given") .. "). Page contents may have changed in the interim.") end local tree_title = display_title or title if lang:stripDiacritics(M.links.remove_links(tree_title)) ~= lang:stripDiacritics(M.links.remove_links(title)) then M.tracking.track_title_pagename_mismatch(lang) end reset_invocation_state() local ety_data_tree = export.get_tree(lang, tree_title, args, { validate = true, id = id, }) local output = {} table.insert(output, M.template_styles("Module:etymon/styles.css")) table.insert(output, M.tree.render({ data_tree = ety_data_tree, format_term_func = function(term, is_toplevel) return Util.format_term(term, is_toplevel, { gloss = "suppress", pos = "suppress", lit = "suppress", tree_ql = "suppress", }) end, })) return table.concat(output) end function export.main(frame) local parent_args = frame:getParent().args local args = M.parameters.process(parent_args, M.parameters_data.etymon) local lang = args[1] local etymon_args = args[2] local id = args.id local title = args.title local text = args.text local tree = args.tree local etydate = args.etydate local doublet = args.doublet local rfe = args.rfe local etystub = args.etystub local is_nonlemma = M.yesno(args.nl, false) local page_data = Util.get_page_data() if not title then title = page_data.pagename if page_data.namespace == "การสืบสร้าง" then title = "*" .. title end end local entry_pagename = page_data.pagename if page_data.namespace == "การสืบสร้าง" then entry_pagename = "*" .. entry_pagename end if lang:stripDiacritics(M.links.remove_links(title)) ~= lang:stripDiacritics(M.links.remove_links(entry_pagename)) then M.tracking.track_title_pagename_mismatch(lang) end local current_L2 = M.pages.get_current_L2() if current_L2 then local norm_lang = Util.get_norm_lang(lang) local norm_name = norm_lang:getCategoryName() --th if current_L2 ~= norm_name then local lang_desc = lang:getCode() .. " (" .. lang:getCanonicalName() .. ")" if norm_lang:getCode() ~= lang:getCode() then lang_desc = lang_desc .. ", normalized to " .. norm_lang:getCode() .. " (" .. norm_name .. ")" end error("Language '" .. lang_desc .. "' does not match the L2 header (" .. current_L2 .. ").") end end reset_invocation_state() local ety_data_tree = export.get_tree(lang, title, etymon_args, { validate = true, pos = args.pos, id = id, json = args.json, skip_partial_etymology_category = is_nonlemma, }) if args.json then return ety_data_tree end local output = {} local text_allowlist_mode = M.text_allowed.default_mode or "off" if text and text_allowlist_mode ~= "off" and not Util.is_text_param_allowed_for_lang(lang) then local msg = "Etymology texts (parameter <code>text=</code>) are not allowed for " .. lang:getFullName() .. "; see [[Template:etymon#Text allowlist|Template:etymon § Text allowlist]] for the list of languages that may use the <code>text=</code> parameter." if text_allowlist_mode == "error" then error(msg) else Util.add_warning(msg, true) end end local lang_exc = Util.get_lang_exception(lang) if lang_exc and lang_exc.disallow then local disallow = lang_exc.disallow local error_text = " for " .. lang:getFullName() if disallow.ref then error_text = error_text .. "; see " .. disallow.ref else error_text = error_text .. "." end if tree and disallow.tree then error("Etymology trees are not allowed" .. error_text) end if text and disallow.text then error("Etymology texts are not allowed" .. error_text) end end if etydate then local etydate_param_mods = { ref = { list = true, type = "references", allow_holes = true }, refn = { list = true, allow_holes = true }, nocap = { type = "boolean" }, } local function generate_etydate_obj(etydate_text) local etydate_specs = {} for spec in etydate_text:gmatch("[^,]+") do table.insert(etydate_specs, mw.text.trim(spec)) end return { [1] = etydate_specs } end local parsed_etydate = M.parse_utilities.parse_inline_modifiers(etydate, { param_mods = etydate_param_mods, generate_obj = generate_etydate_obj }) local etydate_args = { [1] = parsed_etydate[1], nocap = parsed_etydate.nocap or false, } ety_data_tree.supplements = ety_data_tree.supplements or {} table.insert(ety_data_tree.supplements, { type = "etydate", etydate_text = M.etydate.format_etydate(etydate_args, { omit_refs = true }), etydate_refs = (parsed_etydate.ref and #parsed_etydate.ref > 0) and parsed_etydate.ref or nil, }) end TreeBuilder.append_term_supplement(ety_data_tree, lang, "doublet", doublet) if ety_data_tree.supplements then parse_tree_references(ety_data_tree) end local has_visible_children = node_has_visible_tree_children(ety_data_tree) -- Suppress trees for multiword entries and one-step chains local visible_tree_depth = get_visible_tree_depth(ety_data_tree) local is_trivial_tree = visible_tree_depth <= 2 local is_multiword = title:find("%s") ~= nil or title:find("_") ~= nil if tree and (is_multiword or is_trivial_tree) then tree = false end if tree then table.insert(output, M.template_styles("Module:etymon/styles.css")) table.insert(output, M.tree.render({ data_tree = ety_data_tree, format_term_func = function(term, is_toplevel) return Util.format_term(term, is_toplevel, { gloss = "suppress", pos = "suppress", lit = "suppress", tree_ql = "suppress", }) end, })) end local tree_disallowed = lang_exc and lang_exc.disallow and lang_exc.disallow.tree local ety_tree_json = M.JSON.toJSON(tree_to_json(ety_data_tree)) local anchor = M.anchors.etymonid(lang, id, { no_tree = args.notree, title = title, empty_tree = (not has_visible_children) or tree_disallowed, ety_tree_json = ety_tree_json, }) table.insert(output, anchor) local text_stop_lang_missing = nil if text then local max_depth, stop_at_blue_link, stop_at_lang, stop_at_lang_or_bluelink if text == "++" then max_depth, stop_at_blue_link = false, false elseif text == "+" then max_depth, stop_at_blue_link = 1, false elseif text == "*" then max_depth, stop_at_blue_link = false, true elseif text:match("^:[^*]+%*$") then -- Stop at a specific language OR first bluelink after it, e.g., ":ota*" -- If the target language is a redlink, continue to the first bluelink local lang_code = text:match("^:([^*]+)%*$") if lang_code and lang_code ~= "" then local lang_obj = Util.get_lang(lang_code, true) if lang_obj then stop_at_lang_or_bluelink = lang_code else Util.add_warning('Invalid language code "' .. lang_code .. '" in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false end else Util.add_warning('Empty language code in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false end elseif text:sub(1, 1) == ":" then -- Stop at a specific language, e.g., ":ar" stops at first Arabic term local lang_code = text:sub(2) if lang_code ~= "" then -- Validate the language code local lang_obj = Util.get_lang(lang_code, true) if lang_obj then stop_at_lang = lang_code else Util.add_warning('Invalid language code "' .. lang_code .. '" in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false -- default to ++ end else Util.add_warning('Empty language code in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false -- default to ++ end else local num = tonumber(text) if num and num >= 1 then max_depth, stop_at_blue_link = num, false else error('Invalid text value "' .. text .. '". Valid values are: "++" (full chain), "+" (first step only), "*" (until first blue link), a number (max steps), ":lang" (stop at language), or ":lang*" (stop at language or first bluelink if redlink)') end end local text_output, text_render_meta = M.text.render({ data_tree = ety_data_tree, format_term_func = Util.format_term, lang_matches_stop_code = Util.lang_matches_stop_code, max_depth = max_depth, stop_at_blue_link = stop_at_blue_link, curr_page = page_data.pagename, nodot = args.nodot, dot = args.dot, stop_at_lang = stop_at_lang, stop_at_lang_or_bluelink = stop_at_lang_or_bluelink, }) table.insert(output, text_output) if stop_at_lang and text_render_meta and not text_render_meta.stop_lang_reached then M.tracking.track_text_stop_lang_missing(lang, stop_at_lang) text_stop_lang_missing = stop_at_lang end end if rfe then table.insert(output, Util.expand_request_template(frame, "rfe", rfe, lang:getCode())) end if etystub then table.insert(output, Util.expand_request_template(frame, "etystub", etystub, lang:getCode())) end if is_nonlemma then table.insert(output, " " .. frame:expandTemplate({ title = "nonlemma", args = {}, })) end local categories = {} if Util.is_content_page() then M.tracking.track_tree_metrics({ max_depth_reached = __state.max_depth_reached, total_nodes = __state.total_nodes, language_count = __state.language_count, lang = lang, }) categories = M.categories.build({ data_tree = ety_data_tree, page_lang = lang, available_etymon_ids = __state.available_etymon_ids, senseid_parent_etymon = __state.senseid_parent_etymon, get_norm_lang_func = Util.get_norm_lang, lang_exc = lang_exc, suppress_categories = lang_exc and lang_exc.suppress_categories, nocat = args.nocat, tree = tree, text = text, exnihilo = args.exnihilo, toplevel_has_inline_etymology = __state.toplevel_has_inline_etymology, toplevel_redundant_etymology = __state.toplevel_redundant_etymology, toplevel_idless_etymon = __state.toplevel_idless_etymon, has_mismatched_id = __state.has_mismatched_id, linked_page_multiple_etymons_idless = __state.linked_page_multiple_etymons_idless, linked_page_partial_etymology_sections = __state.linked_page_partial_etymology_sections, text_stop_lang_missing = text_stop_lang_missing, }) M.tracking.track_keywords(__state.toplevel_keyword_stats, lang) M.tracking.track_page_id(lang, id) M.tracking.track_ids(__state.id_stats, lang) end if #categories > 0 then table.insert(output, M.categories.format(categories, lang)) end if __state.warnings then for i, warning in ipairs(__state.warnings) do table.insert(output, (i == 1 and "\n" or "") .. warning .. "\n") end end return table.concat(output) end return export 4bvqx4zo1nd1t46kj9a8cyl2tvdeeg4 5754452 5754439 2026-08-06T04:59:28Z Octahedron80 267 5754452 Scribunto text/plain --[=[ This module implements the {{etymon}} template for structured etymology data on Wiktionary. It enables the creation of etymology trees and text by parsing etymon chains, scraping linked pages for their own {{etymon}} data, and recursively building a tree of derivational relationships. Authors: - Original implementation: [[User:Ioaxxere]] - Full refactor (September 2025): [[User:Fenakhay]] ([[Special:Diff/86717746]]) Modules: - [[Module:etymon]]: main module handling parsing, validation, tree building, and page scraping - [[Module:etymon/data]]: keyword definitions, configuration, and status constants - [[Module:etymon/tree]]: etymology tree rendering - [[Module:etymon/text]]: etymology text generation - [[Module:etymon/categories]]: category generation logic - [[Module:etymon/tracking]]: tracking ]=] local export = {} local __state = { cached_etymon_args = {}, cached_etymon_pages = {}, cached_descendants_checks = {}, senseid_parent_etymon = {}, available_etymon_ids = {}, single_etymons = {}, entry_title = nil, entry_lang_code = nil, current_page_has_inline_etymology = false, current_page_has_redundant_etymology = false, used_idless_etymon = false, toplevel_has_inline_etymology = false, toplevel_redundant_etymology = false, toplevel_idless_etymon = false, has_mismatched_id = false, linked_page_multiple_etymons_idless = false, linked_page_partial_etymology_sections = false, partial_etymology_targets = {}, skip_partial_etymology_category = false, max_depth_reached = 0, total_nodes = 0, language_count = {}, toplevel_keyword_stats = {}, id_stats = nil, warnings = {}, } local function reset_invocation_state() __state.current_page_has_inline_etymology = false __state.current_page_has_redundant_etymology = false __state.used_idless_etymon = false __state.toplevel_has_inline_etymology = false __state.toplevel_redundant_etymology = false __state.toplevel_idless_etymon = false __state.has_mismatched_id = false __state.linked_page_multiple_etymons_idless = false __state.linked_page_partial_etymology_sections = false __state.max_depth_reached = 0 __state.total_nodes = 0 __state.language_count = {} __state.toplevel_keyword_stats = {} __state.warnings = {} end local M = require("Module:module loader").init({ require = { data = "Module:etymon/data", tree = "Module:etymon/tree", text = "Module:etymon/text", categories = "Module:etymon/categories", tracking = "Module:etymon/tracking", descendants = "Module:etymon/descendants", anchors = "Module:anchors", etydate = "Module:etydate", etymology = "Module:etymology", families = "Module:families", languages = "Module:languages", languages_errorgetby = "Module:languages/errorGetBy", links = "Module:links", pages = "Module:pages", parameters = "Module:parameters", string_utilities = "Module:string utilities", template_parser = "Module:template parser", utilities = "Module:utilities", debug = "Module:debug", en_utilities = "Module:en-utilities", parse_utilities = "Module:parse utilities", references = "Module:references", template_styles = "Module:TemplateStyles", script_utilities = "Module:script utilities", JSON = "Module:JSON", yesno = "Module:yesno", }, loadData = { headword_data = "Module:headword/data", parameters_data = "Module:parameters/data", text_allowed = "Module:etymon/data/text_allowed", }, }) local Util = {} function Util.format_error(message, preview_only) if preview_only and not M.pages.is_preview() then return nil end return '<span class="error">' .. message .. '</span>' end function Util.add_warning(message, preview_only) local formatted = Util.format_error(message, preview_only) if formatted then table.insert(__state.warnings, formatted) end end function Util.is_text_param_allowed_for_lang(lang) if not lang or type(lang) ~= "table" then return false end local types = lang.getTypes and lang:getTypes() if types and types.family then local code = lang.getCode and lang:getCode() return code and M.text_allowed.families[code] == true end local full_code = lang.getFullCode and lang:getFullCode() if full_code and M.text_allowed.langs[full_code] then return true end if lang.inFamily then for family_code in pairs(M.text_allowed.families) do if lang:inFamily(family_code) then return true end end end return false end function Util.get_lang(code, no_error) if no_error then return M.languages.getByCode(code, nil, true) end return M.languages.getByCode(code, nil, true) or M.languages_errorgetby.code(code, true, true) end -- Match a term language against a text=:lang stop target (supports etymology-only codes). function Util.lang_matches_stop_code(term_lang, stop_code) if not term_lang or not stop_code or stop_code == "" then return false end local stop_lang = Util.get_lang(stop_code, true) if not stop_lang then return false end if term_lang:getCode() == stop_lang:getCode() then return true end if stop_lang:getFullCode() == stop_lang:getCode() then return term_lang:getFullCode() == stop_lang:getCode() end return false end function Util.get_family(code) return M.families.getByCode(code) end function Util.get_lang_exception(lang) -- Families have no language-specific exceptions if lang.getTypes and lang:getTypes().family then return nil end local code = lang:getCode() local lang_exceptions = M.data.config.lang_exceptions if lang_exceptions[code] then return lang_exceptions[code] end for norm_code, exc in pairs(lang_exceptions) do if exc.normalize_to and code == exc.normalize_to then return exc end if exc.normalize_from_families then local should_normalize = false for _, family in ipairs(exc.normalize_from_families) do if lang:inFamily(family) then should_normalize = true break end end if should_normalize and exc.normalize_exclude_families then for _, family in ipairs(exc.normalize_exclude_families) do if lang:inFamily(family) then should_normalize = false break end end end if should_normalize then local ret = {} for k, v in pairs(exc) do ret[k] = v end ret.suppress_tr = nil return ret end end end return nil end function Util.get_norm_lang(lang) local exc = Util.get_lang_exception(lang) if exc and exc.normalize_to then return M.languages.getByCode(exc.normalize_to) end return lang end function Util.resolve_context_lang(lang, node_args) if type(node_args) ~= "table" then return lang end if node_args.status == M.data.STATUS.INLINE then return lang end if not (lang.hasType and lang:hasType("etymology-only")) then return lang end local full = lang.getFull and lang:getFull() if not full or full:getCode() == lang:getCode() then return lang end if full.hasAncestor and full:hasAncestor(lang) then return lang end return full end -- Add default values for boolean modifiers (e.g., <unc> becomes <unc:1>) -- This is needed because Module:parse utilities expects boolean modifiers to have explicit values function Util.add_boolean_defaults(str, param_mods) local result = str for name, spec in pairs(param_mods) do if spec.type == "boolean" then -- Replace <name> with <name:1> (but not <name:...> which already has a value) result = result:gsub("<" .. name .. ">", "<" .. name .. ":1>") end end return result end local REQUEST_TEMPLATE_PARAM_MODS = { rfe = { nocat = { type = "boolean" }, sort = {}, y = {}, m = {}, fragment = {}, section = {}, box = { type = "boolean" }, noes = { type = "boolean" }, }, etystub = { nocat = { type = "boolean" }, sort = {}, nocap = { type = "boolean" }, nodot = { type = "boolean" }, }, } function Util.expand_request_template(frame, template_name, param_value, lang_code) local param_mods = REQUEST_TEMPLATE_PARAM_MODS[template_name] local with_defaults = Util.add_boolean_defaults(param_value, param_mods) local parsed = M.parse_utilities.parse_inline_modifiers(with_defaults, { param_mods = param_mods, generate_obj = function(text) if M.yesno(text, false) then return { is_boolean = true } end return { text = text } end, }) local template_args = { [1] = lang_code } for name in pairs(param_mods) do template_args[name] = parsed[name] end if not parsed.is_boolean then template_args[2] = parsed.text end return " " .. frame:expandTemplate({ title = template_name, args = template_args, }) end -- Centralized term formatting: handles suppress_term (-), unknown_term (empty/+), and regular terms function Util.format_term(term, is_toplevel, opts) opts = opts or {} -- suppress_term (-) returns nil if term.suppress_term then return nil end local lang = term.lang local exc = Util.get_lang_exception(lang) if is_toplevel then local display_text = term.alt or term.title or "" local sc = term.sc or lang:findBestScript(display_text) local bold_text = tostring(mw.html.create("strong") :addClass("selflink") :wikitext(display_text)) return M.script_utilities.tag_text(bold_text, lang, sc, "term") end local link_params = { lang = lang } link_params.term = not term.unknown_term and term.title or nil link_params.alt = term.alt link_params.id = (not term.unknown_term and term.id and term.id ~= "") and term.id or nil if not (exc and exc.suppress_tr) then link_params.tr = term.tr link_params.ts = term.ts else link_params.suppress_tr = true end link_params.lit = (opts.lit ~= "suppress") and term.lit or nil if opts.gloss ~= "suppress" then link_params.gloss = term.t end if term.g and term.g ~= "" then local genders = M.string_utilities.split(term.g, ",") for i = 1, #genders do genders[i] = M.string_utilities.trim(genders[i]) end link_params.genders = genders end if opts.pos ~= "suppress" then link_params.pos = term.pos link_params.ng = term.ng end if exc and exc.suppress_tr then link_params.lit = nil end local show_qualifiers if opts.tree_ql ~= "suppress" then if term.q then link_params.q = term.q end if term.qq then link_params.qq = term.qq end if term.l then link_params.l = term.l end if term.ll then link_params.ll = term.ll end show_qualifiers = term.q or term.qq or term.l or term.ll end return M.links.full_link(link_params, "term", nil, show_qualifiers and true or nil) end local __is_content_page_cached function Util.is_content_page() if __is_content_page_cached == nil then __is_content_page_cached = M.pages.is_content_page(mw.title.getCurrentTitle()) end return __is_content_page_cached end local __page_data_cached function Util.get_page_data() if not __page_data_cached then __page_data_cached = M.headword_data.page end return __page_data_cached end -- Extract base keyword from param (without modifiers) local function get_keyword_base(param) if type(param) ~= "string" then return nil end local base = param:match("^:?([^<]+)") or param:gsub("^:", "") return base end local function is_keyword(param, allow_colon_less) if type(param) ~= "string" then return false end local keywords = M.data.keywords if param:sub(1, 1) == ":" then local base = get_keyword_base(param) return keywords[base] ~= nil end if allow_colon_less then local base = get_keyword_base(param) return keywords[base] ~= nil end return false end local function get_keyword(param, allow_colon_less) if type(param) ~= "string" then return nil end local keywords = M.data.keywords if param:sub(1, 1) == ":" then return get_keyword_base(param) end if allow_colon_less then local base = get_keyword_base(param) if keywords[base] then return base end end return nil end local function normalize_keyword(keyword) if keyword:sub(1, 1) == ":" then return keyword end return ":" .. keyword end -- Resolve keyword (possibly an alias) to its canonical form. Used only at input boundaries local function get_canonical_keyword(keyword) if not keyword then return keyword end return M.data.keyword_canonical[keyword] or keyword end local function is_affix_group_keyword(keyword) local config = keyword and M.data.keywords[keyword] return config and config.affix_categories or false end local function reject_removed_surf_keyword(param) local base = get_keyword_base(param) if base == "surf" then error("The `:surf` keyword has been removed. Use `<surf>` on a formation keyword instead (e.g. `:af<surf>`, `:bor<surf>`).") end end local function copy_keyword_info(source) local copy = {} for k, v in pairs(source) do copy[k] = v end return copy end local function lowercase_glossary_display(text) return text:gsub("(%[%[Appendix:Glossary#[^|]+|)([^%]])([^%]]*)%]%]", function(prefix, first, rest) return prefix .. mw.ustring.lower(first) .. rest .. "]]" end) end local function surf_should_keep_formation_phrase(base) if not base.phrase then return false end if base.glossary then return true end return not (base.phrase == "from" and (base.text == "From" or base.text == "from")) end -- Runtime overrides when <surf> is present on a keyword. local function get_effective_keyword_info(keyword, modifiers) local base = M.data.keywords[keyword] if not base or not modifiers or not modifiers.surf then return base end local effective = copy_keyword_info(base) local surf_text = "By [[Appendix:Glossary#surface_analysis|surface analysis]]," local surf_phrase = "by surface analysis," effective.new_sentence = true effective.invisible = "tree" if surf_should_keep_formation_phrase(base) then effective.phrase = surf_phrase .. " " .. base.phrase if base.text then effective.text = surf_text .. " " .. lowercase_glossary_display(base.text) else effective.text = surf_text .. " " .. base.phrase end else effective.text = surf_text effective.phrase = surf_phrase end return effective end -- Build text/phrase for nominalization with <g:code> (uses data module for codes only). local function get_nominalization_label_for_g(code) if not code or code == "" then return nil end local codes = M.data.nominalization_g_codes local adj = codes[code] if not adj and #code == 2 then local gender_adj = codes[code:sub(1, 1)] local number_adj = codes[code:sub(2, 2)] if gender_adj and number_adj then adj = gender_adj .. " " .. number_adj end end if not adj then return nil end local text = adj:gsub("^%l", function(c) return string.upper(c) end) .. " [[Appendix:Glossary#nominalization|nominalization]] of" local phrase = M.en_utilities.add_indefinite_article(adj .. " [[Appendix:Glossary#nominalization|nominalization]] of", false) return { text = text, phrase = phrase } end local EtymonParser = {} -- Keyword modifier definitions EtymonParser.keyword_param_mods = { unc = { type = "boolean" }, ref = {}, text = { restrict = { keywords = { "from", "derived" } } }, lit = { restrict = { affix_group = true } }, conj = {}, -- conjunction for alternatives: "and", "or", "and/or", etc. g = { restrict = { keywords = { "nominalization" } } }, surf = { type = "boolean" }, senseid = { restrict = { keywords = { "semantic loan" } } }, } -- Term modifier definitions EtymonParser.etymon_param_mods = { id = {}, t = {}, tr = {}, ts = {}, q = {}, qq = {}, l = {}, ll = {}, pos = {}, ng = {}, alt = {}, g = {}, ety = {}, lit = {}, unc = { type = "boolean" }, ref = {}, aftype = { restrict = { affix_group = true } }, postype = {}, bor = { type = "boolean", restrict = { affix_group = true } }, slbor = { type = "boolean", restrict = { affix_group = true } }, lbor = { type = "boolean", restrict = { affix_group = true } }, } local function get_clean_param_mods(param_mods) local clean = {} for mod_name, mod_def in pairs(param_mods) do clean[mod_name] = {} for key, value in pairs(mod_def) do if key ~= "restrict" then clean[mod_name][key] = value end end end return clean end function EtymonParser.check_modifier_restrictions(modifiers, current_keyword, param_mods) for mod_name, mod_value in pairs(modifiers) do -- Only check restrictions if the modifier has a non-false/nil value if mod_value then local mod_def = param_mods[mod_name] if mod_def and mod_def.restrict then if mod_def.restrict.affix_group then if not is_affix_group_keyword(current_keyword) then local mod_display = mod_value == true and "<" .. mod_name .. ">" or "<" .. mod_name .. ":" .. tostring(mod_value) .. ">" error("The modifier `" .. mod_display .. "` is only allowed for affix-group keywords (e.g. `:af`, `:blend`, `:univ`).") end elseif mod_def.restrict.keywords then local allowed_keywords = mod_def.restrict.keywords local is_allowed = false for _, allowed_keyword in ipairs(allowed_keywords) do if current_keyword == allowed_keyword then is_allowed = true break end end if not is_allowed then local keyword_list = {} for _, kw in ipairs(allowed_keywords) do table.insert(keyword_list, ":" .. kw) end local keyword_str = table.concat(keyword_list, #keyword_list == 2 and " or " or ", ") if #keyword_list > 2 then -- Replace last comma with "or" keyword_str = keyword_str:gsub(", ([^,]+)$", " or %1") end local mod_display = mod_value == true and "<" .. mod_name .. ">" or "<" .. mod_name .. ":" .. tostring(mod_value) .. ">" error("The modifier `" .. mod_display .. "` is only allowed for the keyword" .. (#keyword_list > 1 and "s " or " ") .. keyword_str .. ".") end end end end end end local TERM_RULE_DISALLOW = { suppress = { field = "suppress_term", label = "suppressed" }, unknown = { field = "unknown_term", label = "unknown" }, family = { field = "is_family", label = "family" }, } function EtymonParser.check_etymon_limits(count, limits, label, opts) if not limits then return end opts = opts or {} local min_etymons = limits.min_etymons if min_etymons == nil and not opts.skip_default_min then min_etymons = 1 end if min_etymons and count < min_etymons then if min_etymons > 1 then error("Detected " .. label .. " group with fewer than " .. min_etymons .. " etymons.") else error("Detected " .. label .. " with no etymons.") end end if limits.max_etymons and count > limits.max_etymons then local unit = (limits.max_etymons == 1) and "etymon" or "etymons" error("Detected " .. label .. " with more than " .. limits.max_etymons .. " " .. unit .. ".") end end function EtymonParser.check_term_rules(etymon_data, entry_lang, rules, label) label = label or "term" if rules and rules.disallow then local disallowed = {} for _, typ in ipairs(rules.disallow) do local spec = TERM_RULE_DISALLOW[typ] if spec and etymon_data[spec.field] then table.insert(disallowed, spec.label) end end if #disallowed > 0 then error(label .. " does not support " .. mw.text.listToText(disallowed, "or") .. " etymons.") end end if etymon_data.is_family then if rules and rules.family == "disallowed" then error(label .. " does not support family codes" .. (rules.family_suffix or ".")) elseif not etymon_data.suppress_term then error("Family codes require suppressed term (use family:-).") end end if rules then if rules.require_term and (not etymon_data.term or etymon_data.term == "") then error(label .. " requires a term for each listed form.") end if rules.entry_lang then if Util.get_norm_lang(etymon_data.lang):getFullCode() ~= Util.get_norm_lang(entry_lang):getFullCode() then error(label .. " terms must be in the entry language (" .. entry_lang:getFullCode() .. "), got '" .. etymon_data.lang:getFullCode() .. "'.") end end if rules.ancestor_check then M.etymology.check_ancestor(entry_lang, etymon_data.lang) end elseif etymon_data.is_family and not etymon_data.suppress_term then error("Family codes require suppressed term (use family:-).") end end function EtymonParser.check_keyword_term(etymon_data, entry_lang, keyword) local config = M.data.keywords[keyword] EtymonParser.check_term_rules(etymon_data, entry_lang, config and config.term_rules, "`:" .. keyword .. "`") end function EtymonParser.check_supplement_term(etymon_data, entry_lang, supplement_type) local config = M.data.supplements[supplement_type] EtymonParser.check_term_rules(etymon_data, entry_lang, config and config.term_rules, "|" .. supplement_type .. "=") end -- Parse keyword with modifiers (e.g., ":bor<unc>" or ":bor<ref:{{R:example}}>") function EtymonParser.parse_keyword_modifiers(param) if type(param) ~= "string" then return nil, {} end local base_keyword = get_keyword_base(param) if not base_keyword then return nil, {} end local canonical_keyword = get_canonical_keyword(base_keyword) -- Check if there are any modifiers if not param:find("<", 1, true) then return canonical_keyword, {} end -- Parse modifiers using the same mechanism as etymon parsing local rest_with_defaults = Util.add_boolean_defaults(param, EtymonParser.keyword_param_mods) local function generate_obj(ignored) return {} end local parsed = M.parse_utilities.parse_inline_modifiers(rest_with_defaults:gsub("^:?[^<]+", ""), { param_mods = get_clean_param_mods(EtymonParser.keyword_param_mods), generate_obj = generate_obj }) local modifiers = { unc = parsed.unc or false, ref = parsed.ref, text = parsed.text, lit = parsed.lit, conj = parsed.conj, g = parsed.g, surf = parsed.surf or false, senseid = parsed.senseid, } -- Validate modifiers against restrictions EtymonParser.check_modifier_restrictions(modifiers, canonical_keyword, EtymonParser.keyword_param_mods) return canonical_keyword, modifiers end local function normalize_keyword_param(keyword_with_mods) local trimmed = M.string_utilities.trim(keyword_with_mods) reject_removed_surf_keyword(trimmed:match("^:") and trimmed or (":" .. trimmed)) local base = get_keyword_base(trimmed) if not base or not M.data.keywords[base] then error("Invalid keyword '" .. trimmed .. "' in inline etymology") end local canonical_base = get_canonical_keyword(base) local without_colon = trimmed:gsub("^:", "") local mods_part = without_colon:sub(#base + 1) local kw_param = normalize_keyword(canonical_base .. mods_part) EtymonParser.parse_keyword_modifiers(kw_param) return kw_param end local function get_keyword_mod_names() local names = {} for mod_name in pairs(EtymonParser.keyword_param_mods) do names[mod_name] = true end return names end local function parse_inline_ety_run(ety_string) local body = ety_string or "" if body == "" then error("Empty inline etymology") end local keyword_mod_names = get_keyword_mod_names() local pos = 1 local len = #body local function parse_err(msg) error(msg .. " in inline etymology: '" .. body .. "'") end local function peek_double() return body:sub(pos, pos + 1) == "<<" end local function mod_name_from_unwrapped(unwrapped) return unwrapped:match("^<([^:>]+)") end local function is_keyword_mod(unwrapped) local name = mod_name_from_unwrapped(unwrapped) return name and keyword_mod_names[name] or false end local function read_double_bracket() if not peek_double() then return nil end local start = pos pos = pos + 2 while pos <= len - 1 do if body:sub(pos, pos + 1) == ">>" then local token = body:sub(start, pos + 1) pos = pos + 2 return token, token:sub(2, -2) end pos = pos + 1 end parse_err("Unmatched <<") end local function read_angle_cell() if body:sub(pos, pos) ~= "<" or peek_double() then return nil end local open = pos pos = pos + 1 local depth = 1 local i = pos while i <= len do local ch = body:sub(i, i) if ch == "<" then depth = depth + 1 elseif ch == ">" then depth = depth - 1 if depth == 0 then local inner = body:sub(open + 1, i - 1) pos = i + 1 return inner end end i = i + 1 end parse_err("Unmatched <") end local function read_bare_run() local start = pos while pos <= len and body:sub(pos, pos) ~= "<" do pos = pos + 1 end return body:sub(start, pos - 1) end local function absorb_double_keyword_mods(keyword_str) while peek_double() do local saved = pos local _, unwrapped = read_double_bracket() if is_keyword_mod(unwrapped) then keyword_str = keyword_str .. unwrapped else pos = saved break end end return keyword_str end local kw_start = pos while pos <= len and body:sub(pos, pos) ~= "<" do pos = pos + 1 end local keyword = body:sub(kw_start, pos - 1) if keyword:match("^%s*$") then parse_err("Missing keyword") end keyword = absorb_double_keyword_mods(keyword) local cells = {} while pos <= len do if peek_double() then local _, unwrapped = read_double_bracket() if is_keyword_mod(unwrapped) then parse_err("Unexpected keyword modifier " .. unwrapped .. " outside of a keyword") end table.insert(cells, "+" .. unwrapped) elseif body:sub(pos, pos) == "<" then local inner = read_angle_cell() if inner ~= "" then table.insert(cells, inner) end else local bare = read_bare_run() if bare ~= "" then if bare:sub(1, 1) ~= ":" then parse_err("Unexpected bare text '" .. bare .. "' (use :keyword for nested keywords in inline etymology)") end if not is_keyword(bare, true) then parse_err("Invalid keyword '" .. bare .. "' in inline etymology") end table.insert(cells, absorb_double_keyword_mods(bare)) end end end return { keyword = keyword, cells = cells, } end function EtymonParser.inline_ety_to_pipe(ety_string) local run = parse_inline_ety_run(ety_string) if not run.keyword or run.keyword:match("^%s*$") then return "|" end local pipe_parts = { normalize_keyword_param(M.string_utilities.trim(run.keyword)) } for _, segment in ipairs(run.cells) do if is_keyword(segment, true) then table.insert(pipe_parts, normalize_keyword_param(segment)) else table.insert(pipe_parts, segment) end end return "|" .. table.concat(pipe_parts, "|") .. "|" end function EtymonParser.pipe_to_inline_ety(pipe_string) local cells = {} for cell in pipe_string:gmatch("([^|]+)") do if cell ~= "" then table.insert(cells, cell) end end if #cells == 0 then return "" end local inline_parts = {} for index, cell in ipairs(cells) do local base = get_keyword_base(cell) if base and M.data.keywords[base] then local without_colon = cell:gsub("^:", "") local kw_base, mods = without_colon:match("^([^<]+)(.*)$") local inline_kw = (kw_base or without_colon) .. (mods or ""):gsub("<([^>]+)>", "<<%1>>") if index > 1 then inline_kw = ":" .. inline_kw end table.insert(inline_parts, inline_kw) elseif cell:sub(1, 1) == "+" then local mod = cell:sub(2) if mod:match("^<.->$") then mod = mod:sub(2, -2) end table.insert(inline_parts, "<<" .. mod .. ">>") else table.insert(inline_parts, "<" .. cell .. ">") end end return table.concat(inline_parts, "") end function EtymonParser.parse_inline_ety(ety_string, context_lang) local run = parse_inline_ety_run(ety_string) local keyword = M.string_utilities.trim(run.keyword) reject_removed_surf_keyword(":" .. keyword) if not is_keyword(keyword, true) then error("Invalid keyword '" .. keyword .. "' in inline etymology <ety:" .. keyword .. "...>") end local args = { context_lang:getCode(), normalize_keyword_param(keyword) } for _, segment in ipairs(run.cells) do if is_keyword(segment, true) then table.insert(args, normalize_keyword_param(segment)) else table.insert(args, segment) end end return args end function EtymonParser.parse_etymon(param, context_lang) if is_keyword(param) then return nil end if type(param) ~= "string" then return nil end local lang, rest local is_family = false local before_bracket = param:match("^([^<]*)") or param local lang_code, rest_match = before_bracket:match("^([a-zA-Z][a-zA-Z0-9._-]*):(.*)$") if lang_code then local potential_lang = Util.get_lang(lang_code, true) if potential_lang then lang = potential_lang rest = param:sub(#lang_code + 2) else local potential_family = Util.get_family(lang_code) if potential_family then lang = potential_family rest = param:sub(#lang_code + 2) is_family = true else lang = context_lang rest = param end end else lang = context_lang rest = param end M.tracking.track_term(rest) if rest == "" or rest == "+" then return { lang = lang, term = nil, unknown_term = true, is_family = is_family, } end if rest == "-" then return { lang = lang, term = nil, suppress_term = true, is_family = is_family, } end if not rest:find("<", 1, true) then return { lang = lang, term = M.string_utilities.trim(rest), is_family = is_family, } end local term_text = rest:match("^([^<]*)") or "" local is_unknown = (term_text == "" or term_text == "+") local is_suppress = (term_text == "-") local function generate_obj(ignored_term) return { term = (is_unknown or is_suppress) and nil or M.string_utilities.trim(term_text) } end local rest_with_defaults = Util.add_boolean_defaults(rest, EtymonParser.etymon_param_mods) local parsed_obj = M.parse_utilities.parse_inline_modifiers(rest_with_defaults, { param_mods = get_clean_param_mods(EtymonParser.etymon_param_mods), generate_obj = generate_obj }) if parsed_obj.id and parsed_obj.id:match("^!") then parsed_obj.id = parsed_obj.id:sub(2) parsed_obj.override = true end parsed_obj.lang = lang parsed_obj.is_family = is_family if is_unknown then parsed_obj.unknown_term = true elseif is_suppress then parsed_obj.suppress_term = true end return parsed_obj end function EtymonParser.validate(lang, args, id, title, pos, starts_with_lang_code) -- id is now optional, so only validate if provided if id then if mw.ustring.len(id) < 2 then error("The `id` parameter must have at least two characters.") end if id == title or id == Util.get_page_data().pagename then error("The `id` parameter must not be the same as the page title.") end end local valid_pos = { prefix = true, suffix = true, interfix = true, infix = true, root = true, word = true } if pos and not valid_pos[pos] then error("Unknown value provided for `pos`. Valid values: " .. table.concat(require("Module:table").keysToList(valid_pos), ", ") .. ".") end local current_keyword = "from" local current_keyword_explicit = false local keyword_etymons = {} local keywords = M.data.keywords local function checkKeyword() local config = keywords[current_keyword] if current_keyword == "from" and not current_keyword_explicit and #keyword_etymons == 0 then keyword_etymons = {} return end EtymonParser.check_etymon_limits(#keyword_etymons, config, "`:" .. current_keyword .. "`") keyword_etymons = {} end local start_index = starts_with_lang_code and 2 or 1 for i = start_index, #args do local param = args[i] if type(param) ~= "string" then elseif param:sub(1, 1) == ":" and not is_keyword(param) then reject_removed_surf_keyword(param) error("Invalid keyword '" .. param .. "'. Did you mean a valid keyword like ':bor', ':inh', etc.?") elseif is_keyword(param) then checkKeyword() current_keyword = get_canonical_keyword(get_keyword(param)) current_keyword_explicit = true else local etymon_data = EtymonParser.parse_etymon(param, lang) if etymon_data then table.insert(keyword_etymons, param) EtymonParser.check_keyword_term(etymon_data, lang, current_keyword) -- Check modifier restrictions EtymonParser.check_modifier_restrictions(etymon_data, current_keyword, EtymonParser.etymon_param_mods) -- postype must be "root" or "word" local VALID_POSTYPES = { root = true, word = true } if etymon_data.postype and not VALID_POSTYPES[etymon_data.postype] then error("Invalid <postype:" .. etymon_data.postype .. ">; must be \"root\" or \"word\".") end if etymon_data.ety then local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) EtymonParser.validate(etymon_data.lang, inline_args, nil, nil, nil, true) end else table.insert(keyword_etymons, param) end end end checkKeyword() end local DataRetriever = {} local function format_etymon_id_hint(id_data, idx) local id = type(id_data) == "table" and id_data.id or id_data local pos = type(id_data) == "table" and id_data.pos if id and id ~= "" and id ~= "*" then return '"' .. id .. '"' end if pos and pos ~= "" then return "unnamed (|pos=" .. pos .. "|)" end return "etymon #" .. idx .. " (no |id= on page)" end local function etymon_target_page_link(page, norm_lang) return M.links.full_link({ term = page, lang = norm_lang, no_generate_forms = true, }, "term") end -- Summarize {{etymon}} id slots on a linked page for preview warnings. local function summarize_available_etymon_ids(ids) local id_list = {} local all_idless = true local target_has_idless = false local any_pos = false for i, id_data in ipairs(ids) do local id = type(id_data) == "table" and id_data.id or id_data local pos = type(id_data) == "table" and id_data.pos if id and id ~= "" and id ~= "*" then all_idless = false else target_has_idless = true end if pos and pos ~= "" then any_pos = true end table.insert(id_list, format_etymon_id_hint(id_data, i)) end return { id_list = id_list, all_idless = all_idless, target_has_idless = target_has_idless, any_pos = any_pos, count = #ids, options_text = mw.text.listToText(id_list), } end local function ambiguous_etymon_suggestion(page_link, summary) if summary.all_idless then if summary.any_pos then return " None set `|id=` yet; add a unique `|id=` to each on " .. page_link .. ", then `<id:identifier>` after the term here. Section order / hints: " .. summary.options_text .. "." end return " None set `|id=` yet; add a unique `|id=` to each {{etymon}} in that section from top to bottom, then `<id:identifier>` after the term here (same value as `|id=`)." end return " Specify which one with `<id:identifier>` after the term. Options: " .. summary.options_text .. "." end local function warn_ambiguous_etymon_link(page, norm_lang, ids, is_toplevel) local page_link = etymon_target_page_link(page, norm_lang) local summary = summarize_available_etymon_ids(ids) if is_toplevel and summary.target_has_idless then __state.linked_page_multiple_etymons_idless = true end local lang_name = norm_lang:getCanonicalName() local lead = "Etymology link to " .. page_link .. " is ambiguous (" .. summary.count .. " {{etymon}} templates for " .. lang_name .. ")." Util.add_warning(lead .. ambiguous_etymon_suggestion(page_link, summary), true) end local function is_mismatched_explicit_id(base_key, cached_args, parent_etymon) return cached_args == M.data.STATUS.MISSING and not parent_etymon and #(__state.available_etymon_ids[base_key] or {}) > 0 end local function maybe_flag_partial_etymology_reference(base_key, etymon_data, cached_args, is_toplevel) if not is_toplevel or __state.skip_partial_etymology_category then return end if not __state.partial_etymology_targets[base_key] then return end if etymon_data.id and type(cached_args) == "table" then return end __state.linked_page_partial_etymology_sections = true end local function is_nonlemma_etymon_template(template_args) return template_args and M.yesno(template_args.nl, false) end local function warn_mismatched_explicit_id(page, norm_lang, base_key, etymon_id) local page_link = etymon_target_page_link(page, norm_lang) local summary = summarize_available_etymon_ids(__state.available_etymon_ids[base_key] or {}) local lang_name = norm_lang:getCanonicalName() local lead = "Etymology link to " .. page_link .. " uses `<id:" .. etymon_id .. ">`, but no {{etymon}} on that page has `|id=" .. etymon_id .. "|` for " .. lang_name .. "." Util.add_warning(lead .. " Valid IDs: " .. summary.options_text .. ".", true) end -- Given an etymon data, scrape its page and cache the result in the global state object. function DataRetriever.cache_page_etymons(etymon_page, etymon_title, key, etymon_lang, etymon_id, redirected_from, descendants_is_toplevel) local content = etymon_title:getContent() if not content then __state.cached_etymon_args[key] = M.data.STATUS.REDLINK return end -- Check if the linked page is a redirect. If it is, the template parsing -- code below will be effectively skipped, and `scrape_page` will be called -- again on the redirect target (see the bottom of this function) local lang_section_for_descendants = nil local redirect_target = etymon_title.redirect_target if not redirect_target then --content = M.pages.get_section(content, etymon_lang:getFullName(), 2) -- Fix Thai Wiktionary that prefixes language name with ภาษา local lang_name = etymon_lang:getFullName() local section_content = M.pages.get_section(content, lang_name, 2) if not section_content then section_content = M.pages.get_section(content, "ภาษา" .. lang_name, 2) end content = section_content if not content then __state.cached_etymon_args[key] = M.data.STATUS.MISSING return end lang_section_for_descendants = content end local etymon_lang_code = etymon_lang:getFullCode() local lang_page_key = etymon_lang_code .. ":" .. etymon_page local found_templates_for_lang = {} local found_ids = {} local get_node_class = M.template_parser.class_else_type -- Look for all {{etymon}} templates within the page content using the template parser -- This way the same page is never parsed more than once -- Build a map from senseids to their parent etymonids. local active_etymon_args = nil local etymology_section_count = 0 local etymology_sections_with_etymon = 0 local current_etymology_has_etymon = false local current_etymology_has_nonlemma = false local function finalize_current_etymology_section() if etymology_section_count == 0 then return end if current_etymology_has_etymon or current_etymology_has_nonlemma then etymology_sections_with_etymon = etymology_sections_with_etymon + 1 end current_etymology_has_etymon = false current_etymology_has_nonlemma = false end for node in M.template_parser.parse(content):iterate_nodes() do local node_class = get_node_class(node) if node_class == "heading" then -- A new L2 or etymology section acts as a barrier: an {{etymon}} usage -- used previously cannot be the parent of any subsequent senseids. -- Note that we don't have to check for L2s due to the usage of `M.pages.get_section` above. if node:get_name():find("^Etymology") then finalize_current_etymology_section() etymology_section_count = etymology_section_count + 1 active_etymon_args = nil end elseif node_class == "template" then local template_name = node:get_name() if template_name == "etymon" then local template_args = node:get_arguments() -- Check if this etymon is for our language if template_args[1] == etymon_lang_code then if is_nonlemma_etymon_template(template_args) then if etymology_section_count > 0 then current_etymology_has_nonlemma = true end else if etymology_section_count > 0 then current_etymology_has_etymon = true end table.insert(found_templates_for_lang, template_args) if template_args.id then local etymon_key = lang_page_key .. ":" .. template_args.id __state.cached_etymon_args[etymon_key] = template_args __state.cached_etymon_pages[etymon_key] = tostring(etymon_page) table.insert(found_ids, template_args.id) active_etymon_args = template_args else -- Store idless etymon with default key local etymon_key = lang_page_key .. ":*" __state.cached_etymon_args[etymon_key] = template_args __state.cached_etymon_pages[etymon_key] = tostring(etymon_page) table.insert(found_ids, "*") active_etymon_args = template_args end end end elseif active_etymon_args and template_name == "senseid" then local template_args = node:get_arguments() -- This should always be true for proper usages of {{senseid}}. if template_args[1] == etymon_lang_code and template_args[2] then local sense_id_key = lang_page_key .. ":" .. template_args[2] __state.senseid_parent_etymon[sense_id_key] = active_etymon_args __state.cached_etymon_pages[sense_id_key] = tostring(etymon_page) end end end end finalize_current_etymology_section() if lang_section_for_descendants and etymology_section_count > 1 and etymology_sections_with_etymon > 0 and etymology_sections_with_etymon < etymology_section_count then __state.partial_etymology_targets[lang_page_key] = true end if descendants_is_toplevel and lang_section_for_descendants and #found_templates_for_lang > 0 then M.descendants.cache_page_checks({ lang_section = lang_section_for_descendants, etymon_lang_code = etymon_lang_code, found_templates_for_lang = found_templates_for_lang, entry_title = __state.entry_title, entry_lang_code = __state.entry_lang_code, entry_lang = __state.entry_lang_code and Util.get_lang(__state.entry_lang_code, true) or nil, cached_descendants_checks = __state.cached_descendants_checks, lang_page_key = lang_page_key, redirected_from = redirected_from, }) end local id_data_list = {} for _, args in ipairs(found_templates_for_lang) do local id = args.id or "*" table.insert(id_data_list, { id = id, pos = args.pos }) end __state.available_etymon_ids[lang_page_key] = id_data_list if #found_templates_for_lang == 1 then __state.single_etymons[lang_page_key] = found_templates_for_lang[1] end if redirected_from and __state.available_etymon_ids[lang_page_key] then __state.available_etymon_ids[redirected_from] = __state.available_etymon_ids[redirected_from] or {} for _, id_data in ipairs(__state.available_etymon_ids[lang_page_key]) do table.insert(__state.available_etymon_ids[redirected_from], id_data) end end if __state.cached_etymon_args[key] ~= nil or __state.senseid_parent_etymon[key] ~= nil then -- All done! return elseif redirect_target and not redirected_from then -- Try scraping the redirect. etymon_page = redirect_target.prefixedText DataRetriever.cache_page_etymons(etymon_page, redirect_target, lang_page_key .. ":" .. etymon_id, etymon_lang, etymon_id, lang_page_key, descendants_is_toplevel) __state.cached_etymon_args[key] = __state.cached_etymon_args[etymon_lang_code .. ":" .. etymon_page .. ":" .. etymon_id] else __state.cached_etymon_args[key] = M.data.STATUS.MISSING end end local function has_linkable_term(etymon_data) if etymon_data.is_family or etymon_data.suppress_term or etymon_data.unknown_term then return false end local term = etymon_data.term if term == nil or term == "" then return false end return M.string_utilities.trim(term) ~= "" end local function record_term_id_tracking(etymon_data) if not has_linkable_term(etymon_data) then return end local term_page = M.links.get_link_page(etymon_data.term, etymon_data.lang) M.tracking.record_term_id_usage(__state.id_stats, etymon_data, term_page) end -- Given an etymon object, scrape its page (if necessary) and return its own etymon arguments as well as the page name. function DataRetriever.get_etymon_args(etymon_data, is_toplevel) if not has_linkable_term(etymon_data) then return M.data.STATUS.MISSING, nil, nil, nil end local page = M.links.get_link_page(etymon_data.term, etymon_data.lang) local norm_lang = Util.get_norm_lang(etymon_data.lang) local base_key = norm_lang:getFullCode() .. ":" .. page if etymon_data.id then local key = base_key .. ":" .. etymon_data.id local cached_args = __state.cached_etymon_args[key] or __state.senseid_parent_etymon[key] if cached_args == nil then local title = mw.title.new(page) if not title then error('Invalid page title "' .. page .. '" encountered.') end DataRetriever.cache_page_etymons(page, title, key, norm_lang, etymon_data.id, nil, is_toplevel) end cached_args = __state.cached_etymon_args[key] or __state.senseid_parent_etymon[key] -- refresh -- Get etymon_id from parent if this was resolved via senseid local parent_etymon = __state.senseid_parent_etymon[key] local resolved_etymon_id = parent_etymon and parent_etymon.id local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { explicit_id = etymon_data.id, parent_etymon = parent_etymon, }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, key, norm_lang, etymon_data.id, nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { explicit_id = etymon_data.id, parent_etymon = parent_etymon, }, }) end end local mismatched_id = is_mismatched_explicit_id(base_key, cached_args, parent_etymon) if mismatched_id and is_toplevel then __state.has_mismatched_id = true M.tracking.record_mismatched_id_usage(__state.id_stats, norm_lang, page, etymon_data.id) warn_mismatched_explicit_id(page, norm_lang, base_key, etymon_data.id) end maybe_flag_partial_etymology_reference(base_key, etymon_data, cached_args, is_toplevel) return cached_args, __state.cached_etymon_pages[key], resolved_etymon_id, descendants_check else __state.used_idless_etymon = true if is_toplevel then __state.toplevel_idless_etymon = true end if __state.available_etymon_ids[base_key] == nil then local title = mw.title.new(page) if not title then error('Invalid page title "' .. page .. '" encountered.') end DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, is_toplevel) end local ids = __state.available_etymon_ids[base_key] or {} local count = #ids -- Try to filter by postype if available and we have multiple candidates if count > 1 and etymon_data.postype then local matching_ids = {} for _, id_data in ipairs(ids) do if id_data.pos == etymon_data.postype then table.insert(matching_ids, id_data) end end if #matching_ids == 1 then local matched_id = matching_ids[1].id local matched_key = base_key .. ":" .. matched_id M.tracking.record_idless_resolution(__state.id_stats, norm_lang, page, "postype") local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { id = matched_id }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { id = matched_id }, }) end end local matched_args = __state.cached_etymon_args[matched_key] maybe_flag_partial_etymology_reference(base_key, etymon_data, matched_args, is_toplevel) return matched_args, __state.cached_etymon_pages[matched_key], nil, descendants_check end end if count == 1 then local only_id_data = ids[1] local only_id = (type(only_id_data) == "table" and only_id_data.id) or only_id_data or "*" M.tracking.record_idless_resolution(__state.id_stats, norm_lang, page, "single") local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { id_data = only_id_data }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { id_data = only_id_data }, }) end end local single_args = __state.single_etymons[base_key] maybe_flag_partial_etymology_reference(base_key, etymon_data, single_args, is_toplevel) return single_args, __state.cached_etymon_pages[base_key .. ":" .. only_id], nil, descendants_check elseif count > 1 then M.tracking.record_idless_resolution(__state.id_stats, norm_lang, page, "ambiguous") warn_ambiguous_etymon_link(page, norm_lang, ids, is_toplevel) maybe_flag_partial_etymology_reference(base_key, etymon_data, M.data.STATUS.AMBIGUOUS, is_toplevel) return M.data.STATUS.AMBIGUOUS, nil, nil, nil else M.tracking.record_idless_resolution(__state.id_stats, norm_lang, page, "missing") maybe_flag_partial_etymology_reference(base_key, etymon_data, M.data.STATUS.MISSING, is_toplevel) return M.data.STATUS.MISSING, nil, nil, nil end end end local function keyword_invisible_in_tree(keyword_info) if not keyword_info then return false end local inv = keyword_info.invisible return inv == "all" or inv == true or inv == "tree" end -- True when the node has at least one top-level child container visible in the tree. local function node_has_visible_tree_children(node) for _, container in ipairs(node.children or {}) do if not keyword_invisible_in_tree(container.keyword_info) then return true end end return false end -- Count visible term nodes in the tree. local function get_visible_tree_depth(node, skip_child_rendering) local max_depth = 1 if skip_child_rendering or not node then return max_depth end for _, container in ipairs(node.children or {}) do local keyword_info = container.keyword_info if not keyword_invisible_in_tree(keyword_info) then local skip_grandchildren = keyword_info and keyword_info.no_child_categories for _, term in ipairs(container.terms or {}) do if term.is_duplicate then if term.original_has_children then max_depth = math.max(max_depth, 2) end else max_depth = math.max(max_depth, 1 + get_visible_tree_depth(term, skip_grandchildren)) end end end end return max_depth end local function as_param_list(val) if val == nil then return {} end if type(val) == "table" then return val end if type(val) == "string" and val ~= "" then return { val } end return {} end local TreeBuilder = {} local function parse_etymon_references(refs_text) if not refs_text or refs_text == "" then return "" end return M.references.parse_references(refs_text) end local function parse_tree_references(node) if node.ref then node.parsed_ref = parse_etymon_references(node.ref) end if node.children then for _, container in ipairs(node.children) do if container.terms then for _, term in ipairs(container.terms) do parse_tree_references(term) end end end end if node.supplements then for _, supplement in ipairs(node.supplements) do if supplement.terms then for _, term in ipairs(supplement.terms) do parse_tree_references(term) end end end end end -- Build a unique key for deduplication in the seen table function TreeBuilder.build_key(lang, title, args) local norm_lang_code = Util.get_norm_lang(lang):getFullCode() local is_table = type(args) == "table" local id = (is_table and args.id) or "" if title then return norm_lang_code .. ":" .. M.links.get_link_page(title, lang) .. ":" .. id end if is_table and args.status == M.data.STATUS.INLINE then local content_parts = {} for i = 1, #args do content_parts[i] = tostring(args[i]) end return norm_lang_code .. ":*:" .. id .. "\0" .. table.concat(content_parts, "\0") end return norm_lang_code .. ":*:" .. id end -- Copy parsed etymon modifiers onto a tree/supplement term node. function TreeBuilder.apply_etymon_fields(term, etymon_data) term.id = etymon_data.id term.t = etymon_data.t term.tr = etymon_data.tr term.ts = etymon_data.ts term.alt = etymon_data.alt term.g = etymon_data.g term.pos = etymon_data.pos term.ng = etymon_data.ng term.ref = etymon_data.ref term.is_uncertain = etymon_data.unc term.lit = etymon_data.lit term.q = etymon_data.q term.qq = etymon_data.qq term.l = etymon_data.l term.ll = etymon_data.ll term.suppress_term = etymon_data.suppress_term term.unknown_term = etymon_data.unknown_term term.is_family = etymon_data.is_family term.override = etymon_data.override term.aftype = etymon_data.aftype term.postype = etymon_data.postype term.bor = etymon_data.bor term.lbor = etymon_data.lbor term.slbor = etymon_data.slbor end function TreeBuilder.build_supplement_term(etymon_data, entry_lang, supplement_type) EtymonParser.check_supplement_term(etymon_data, entry_lang, supplement_type) local term = { lang = etymon_data.lang, title = etymon_data.term, children = {}, status = M.data.STATUS.OK, } TreeBuilder.apply_etymon_fields(term, etymon_data) return term end function TreeBuilder.build_supplement_terms(entry_lang, supplement_type, param_value) local terms = {} for _, term_param in ipairs(as_param_list(param_value)) do if type(term_param) == "string" and term_param ~= "" then local etymon_data = EtymonParser.parse_etymon(term_param, entry_lang) if etymon_data then table.insert(terms, TreeBuilder.build_supplement_term(etymon_data, entry_lang, supplement_type)) end end end return terms end -- Attach a |param= supplement defined in etymon_data.supplements (e.g. doublet=). function TreeBuilder.append_term_supplement(data_tree, entry_lang, supplement_type, param_value) local config = M.data.supplements[supplement_type] if not config then error("Unknown supplement '" .. tostring(supplement_type) .. "'.") end local terms = TreeBuilder.build_supplement_terms(entry_lang, supplement_type, param_value) if #terms == 0 then return end data_tree.supplements = data_tree.supplements or {} table.insert(data_tree.supplements, { type = supplement_type, config = config, terms = terms, }) M.tracking.record_keyword_usage(__state.toplevel_keyword_stats, supplement_type, entry_lang, entry_lang, true) end function TreeBuilder.build(lang, title, args, seen, depth, stop_recursion) seen = seen or {} depth = depth or 0 local is_toplevel = (depth == 0) if depth > __state.max_depth_reached then __state.max_depth_reached = depth end __state.total_nodes = __state.total_nodes + 1 local lang_code = lang:getCode() __state.language_count[lang_code] = (__state.language_count[lang_code] or 0) + 1 local current_id = (type(args) == "table" and args.id) or "" local key = TreeBuilder.build_key(lang, title, args) local node = { lang = lang, title = title, id = current_id, args = args, children = {}, status = M.data.STATUS.OK } if type(args) ~= "table" or seen[key] then node.status = args or M.data.STATUS.MISSING -- Mark as duplicate if we've seen this node before if seen[key] then node.is_duplicate = true node.duplicate_key = key local original_node = seen[key] if type(original_node) == "table" and original_node.children and #original_node.children > 0 then node.original_has_children = true end end return node end node.status = args.status or M.data.STATUS.OK seen[key] = node -- If stop_recursion is set, skip parsing children but check for visible children if stop_recursion then local keywords = M.data.keywords local has_visible_children = false for i = 2, #args do local param = args[i] if type(param) == "string" then local keyword_base = get_keyword_base(param) if keyword_base and keywords[keyword_base] then local _, kw_modifiers = EtymonParser.parse_keyword_modifiers(param:sub(1, 1) == ":" and param or (":" .. param)) if not keyword_invisible_in_tree(get_effective_keyword_info(keyword_base, kw_modifiers)) then has_visible_children = true break end elseif param:sub(1, 1) ~= ":" then -- It's a term (not a keyword), so there are visible children has_visible_children = true break end end end node.has_visible_children = has_visible_children return node end -- Parse args into keyword containers local current_keyword = "from" local current_keyword_modifiers = {} local current_container = nil local function ensure_container() if not current_container or current_container.keyword ~= current_keyword then local keyword_info = get_effective_keyword_info(current_keyword, current_keyword_modifiers) current_container = { keyword = current_keyword, keyword_info = keyword_info, keyword_modifiers = current_keyword_modifiers, terms = {}, } table.insert(node.children, current_container) -- Override keyword text/phrase for nominalization with <g:code> if current_keyword_modifiers.g and current_keyword == "nominalization" then local labels = get_nominalization_label_for_g(current_keyword_modifiers.g) if not labels then local codes = {} for c in pairs(M.data.nominalization_g_codes) do table.insert(codes, c) end table.sort(codes) error("Invalid <g:" .. tostring(current_keyword_modifiers.g) .. ">. Supported codes for nominalization: " .. table.concat(codes, ", ")) end current_container.keyword_info = copy_keyword_info(keyword_info) current_container.keyword_info.text = labels.text current_container.keyword_info.phrase = labels.phrase end end return current_container end local parse_context_lang = Util.resolve_context_lang(lang, args) for i = 2, #args do local param = args[i] if is_keyword(param) then local keyword, modifiers = EtymonParser.parse_keyword_modifiers(param) if not keyword then error("Invalid keyword '" .. param .. "'.") end current_keyword = keyword current_keyword_modifiers = modifiers current_container = nil -- Force new container for new keyword elseif type(param) == "string" and param:sub(1, 1) == ":" then reject_removed_surf_keyword(param) error("Invalid keyword '" .. param .. "'. Did you mean a valid keyword like ':bor', ':inh', etc.?") elseif type(param) == "string" then local etymon_data = EtymonParser.parse_etymon(param, parse_context_lang) if etymon_data then -- Track keyword usage at top level M.tracking.record_keyword_usage(__state.toplevel_keyword_stats, current_keyword, lang, etymon_data.lang, is_toplevel) local term_node = {} local container -- Handle suppress_term (-) and unknown_term (empty or +) directly if etymon_data.suppress_term or etymon_data.unknown_term then container = ensure_container() if etymon_data.ety then local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) inline_args.id = etymon_data.id inline_args.status = M.data.STATUS.INLINE term_node = TreeBuilder.build(etymon_data.lang, nil, inline_args, seen, depth + 1) else term_node = { lang = etymon_data.lang, children = {}, status = M.data.STATUS.OK, } end TreeBuilder.apply_etymon_fields(term_node, etymon_data) else -- Regular term: fetch arguments from page record_term_id_tracking(etymon_data) local etymon_args, page_of, resolved_etymon_id, descendants_check = DataRetriever.get_etymon_args(etymon_data, is_toplevel) -- Check for <ety> inline parameter doesn't override the scraped arguments, unless the latter are missing if etymon_data.ety then if etymon_args == M.data.STATUS.REDLINK or etymon_args == M.data.STATUS.MISSING then __state.current_page_has_inline_etymology = true if is_toplevel then __state.toplevel_has_inline_etymology = true end local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) -- Track inline ety keywords too local inline_keyword = get_keyword(inline_args[2], true) if inline_keyword and #inline_args >= 3 then local inline_etymon = EtymonParser.parse_etymon(inline_args[3], etymon_data.lang) if inline_etymon then M.tracking.record_keyword_usage(__state.toplevel_keyword_stats, inline_keyword, etymon_data.lang, inline_etymon.lang, is_toplevel) end end inline_args.id = etymon_data.id inline_args.status = M.data.STATUS.INLINE etymon_args = inline_args term_node.page_of = __state.cached_etymon_pages[key] -- term node is on the same page as the parent else -- Scraped arguments exist, <ety> is redundant and ignored __state.current_page_has_redundant_etymology = true if is_toplevel then __state.toplevel_redundant_etymology = true end end end -- Ensure container exists before checking keyword info container = ensure_container() -- Check if current keyword has no_child_categories - if so, stop recursion local keyword_info = container.keyword_info local should_stop_recursion = (stop_recursion or (keyword_info and keyword_info.no_child_categories)) term_node = TreeBuilder.build(etymon_data.lang, etymon_data.term, etymon_args, seen, depth + 1, should_stop_recursion) term_node.target_key = Util.get_norm_lang(etymon_data.lang):getFullCode() .. ":" .. M.links.get_link_page(etymon_data.term, etymon_data.lang) term_node.etymon_id = resolved_etymon_id -- The actual etymon id when resolved via senseid term_node.page_of = page_of TreeBuilder.apply_etymon_fields(term_node, etymon_data) term_node.missing_descendants_header, term_node.missing_descendants_entry = M.descendants.get_term_sync_flags(current_keyword, term_node.status, descendants_check) end table.insert(container.terms, term_node) end end end return node end -- Convert etymology tree to JSON-serializable table local function tree_to_json(node) local obj = { term = node.title, lang = node.lang:getCode(), lang_name = node.lang:getCanonicalName(), id = (node.id and node.id ~= "") and node.id or nil, status = node.status, is_uncertain = node.is_uncertain or nil, is_duplicate = node.is_duplicate or nil, gloss = node.t, transliteration = node.tr, transcription = node.ts, alt = node.alt, g = node.g, pos = node.pos, ng = node.ng, children = {}, } for _, container in ipairs(node.children or {}) do local keyword_info = container.keyword_info if keyword_info then local container_obj = { keyword = container.keyword, keyword_label = keyword_info.text, keyword_abbrev = keyword_info.abbrev, is_group = keyword_info.is_group or nil, is_invisible = keyword_info.invisible or nil, is_uncertain = (container.keyword_modifiers and container.keyword_modifiers.unc) or nil, terms = {}, } for _, term in ipairs(container.terms or {}) do table.insert(container_obj.terms, tree_to_json(term)) end table.insert(obj.children, container_obj) end end return obj end -- Build and return the etymology data tree for a given term. function export.get_tree(lang, title, args, options) options = options or {} __state.entry_title = title __state.entry_lang_code = lang:getCode() __state.id_stats = M.tracking.new_id_stats() __state.skip_partial_etymology_category = options.skip_partial_etymology_category == true if options.validate then EtymonParser.validate(lang, args, options.id, title, options.pos, false) end local lang_code = lang:getCode() local start_index = (args[1] == lang_code) and 2 or 1 local tree_args = { [1] = lang_code, id = options.id or args.id } for i = start_index, #args do table.insert(tree_args, args[i]) end __state.cached_etymon_args[lang_code .. ":" .. title .. ":" .. (tree_args.id or "")] = tree_args local ety_data_tree = TreeBuilder.build(lang, title, tree_args) parse_tree_references(ety_data_tree) if options.json then return M.JSON.toJSON(tree_to_json(ety_data_tree)) end return ety_data_tree end -- Given a language code, page name and optionally the id= parameter, -- render the tree and only the etymology tree for the relevant page. -- Fetches and parses the corresponding {{etymon}} from the requested page, -- and any further pages needed to render the tree. -- Parameters can be passed either through the #invoke or as -- template parameters *through* an #invoke. function export.render_tree_for_etymon_on_page(frame) local frame_args = frame.args local parent_args = frame:getParent().args local langcode = frame_args[1] or parent_args[1] local pagename = frame_args[2] or parent_args[2] local id = frame_args["id"] or parent_args["id"] local display_title = frame_args["title"] or parent_args["title"] local parsed_title = mw.title.new(pagename, 0) local title if parsed_title.namespace == 0 then title = M.pages.safe_page_name(parsed_title) elseif parsed_title.namespace == 118 then title = "*" .. M.pages.safe_page_name(parsed_title) else error("Unsupported namespace for render_tree_for_etymon_on_page: " .. parsed_title.namespace) end local lang = Util.get_lang(langcode) __state.entry_title = title __state.entry_lang_code = lang:getCode() __state.id_stats = M.tracking.new_id_stats() -- Construct etymon_data for DataRetriever.get_args. local etymon_data = { lang = lang, term = title, id = id } local args, pagename = DataRetriever.get_etymon_args(etymon_data, true) if args == M.data.STATUS.MISSING then error("The etymon template was not found (language " .. langcode .. ", title '" .. title .. "'" .. (id and ", ID '" .. id .. "'" or ", no ID given") .. "). Page contents may have changed in the interim.") end local tree_title = display_title or title if lang:stripDiacritics(M.links.remove_links(tree_title)) ~= lang:stripDiacritics(M.links.remove_links(title)) then M.tracking.track_title_pagename_mismatch(lang) end reset_invocation_state() local ety_data_tree = export.get_tree(lang, tree_title, args, { validate = true, id = id, }) local output = {} table.insert(output, M.template_styles("Module:etymon/styles.css")) table.insert(output, M.tree.render({ data_tree = ety_data_tree, format_term_func = function(term, is_toplevel) return Util.format_term(term, is_toplevel, { gloss = "suppress", pos = "suppress", lit = "suppress", tree_ql = "suppress", }) end, })) return table.concat(output) end function export.main(frame) local parent_args = frame:getParent().args local args = M.parameters.process(parent_args, M.parameters_data.etymon) local lang = args[1] local etymon_args = args[2] local id = args.id local title = args.title local text = args.text local tree = args.tree local etydate = args.etydate local doublet = args.doublet local rfe = args.rfe local etystub = args.etystub local is_nonlemma = M.yesno(args.nl, false) local page_data = Util.get_page_data() if not title then title = page_data.pagename if page_data.namespace == "การสืบสร้าง" then title = "*" .. title end end local entry_pagename = page_data.pagename if page_data.namespace == "การสืบสร้าง" then entry_pagename = "*" .. entry_pagename end if lang:stripDiacritics(M.links.remove_links(title)) ~= lang:stripDiacritics(M.links.remove_links(entry_pagename)) then M.tracking.track_title_pagename_mismatch(lang) end local current_L2 = M.pages.get_current_L2() if current_L2 then local norm_lang = Util.get_norm_lang(lang) local norm_name = norm_lang:getCategoryName() --th if current_L2 ~= norm_name then local lang_desc = lang:getCode() .. " (" .. lang:getCanonicalName() .. ")" if norm_lang:getCode() ~= lang:getCode() then lang_desc = lang_desc .. ", normalized to " .. norm_lang:getCode() .. " (" .. norm_name .. ")" end error("Language '" .. lang_desc .. "' does not match the L2 header (" .. current_L2 .. ").") end end reset_invocation_state() local ety_data_tree = export.get_tree(lang, title, etymon_args, { validate = true, pos = args.pos, id = id, json = args.json, skip_partial_etymology_category = is_nonlemma, }) if args.json then return ety_data_tree end local output = {} local text_allowlist_mode = M.text_allowed.default_mode or "off" if text and text_allowlist_mode ~= "off" and not Util.is_text_param_allowed_for_lang(lang) then local msg = "Etymology texts (parameter <code>text=</code>) are not allowed for " .. lang:getFullName() .. "; see [[Template:etymon#Text allowlist|Template:etymon § Text allowlist]] for the list of languages that may use the <code>text=</code> parameter." if text_allowlist_mode == "error" then error(msg) else Util.add_warning(msg, true) end end local lang_exc = Util.get_lang_exception(lang) if lang_exc and lang_exc.disallow then local disallow = lang_exc.disallow local error_text = " for " .. lang:getFullName() if disallow.ref then error_text = error_text .. "; see " .. disallow.ref else error_text = error_text .. "." end if tree and disallow.tree then error("Etymology trees are not allowed" .. error_text) end if text and disallow.text then error("Etymology texts are not allowed" .. error_text) end end if etydate then local etydate_param_mods = { ref = { list = true, type = "references", allow_holes = true }, refn = { list = true, allow_holes = true }, nocap = { type = "boolean" }, } local function generate_etydate_obj(etydate_text) local etydate_specs = {} for spec in etydate_text:gmatch("[^,]+") do table.insert(etydate_specs, mw.text.trim(spec)) end return { [1] = etydate_specs } end local parsed_etydate = M.parse_utilities.parse_inline_modifiers(etydate, { param_mods = etydate_param_mods, generate_obj = generate_etydate_obj }) local etydate_args = { [1] = parsed_etydate[1], nocap = parsed_etydate.nocap or false, } ety_data_tree.supplements = ety_data_tree.supplements or {} table.insert(ety_data_tree.supplements, { type = "etydate", etydate_text = M.etydate.format_etydate(etydate_args, { omit_refs = true }), etydate_refs = (parsed_etydate.ref and #parsed_etydate.ref > 0) and parsed_etydate.ref or nil, }) end TreeBuilder.append_term_supplement(ety_data_tree, lang, "doublet", doublet) if ety_data_tree.supplements then parse_tree_references(ety_data_tree) end local has_visible_children = node_has_visible_tree_children(ety_data_tree) -- Suppress trees for multiword entries and one-step chains local visible_tree_depth = get_visible_tree_depth(ety_data_tree) local is_trivial_tree = visible_tree_depth <= 2 local is_multiword = title:find("%s") ~= nil or title:find("_") ~= nil if tree and (is_multiword or is_trivial_tree) then tree = false end if tree then table.insert(output, M.template_styles("Module:etymon/styles.css")) table.insert(output, M.tree.render({ data_tree = ety_data_tree, format_term_func = function(term, is_toplevel) return Util.format_term(term, is_toplevel, { gloss = "suppress", pos = "suppress", lit = "suppress", tree_ql = "suppress", }) end, })) end local tree_disallowed = lang_exc and lang_exc.disallow and lang_exc.disallow.tree local ety_tree_json = M.JSON.toJSON(tree_to_json(ety_data_tree)) local anchor = M.anchors.etymonid(lang, id, { no_tree = args.notree, title = title, empty_tree = (not has_visible_children) or tree_disallowed, ety_tree_json = ety_tree_json, }) table.insert(output, anchor) local text_stop_lang_missing = nil if text then local max_depth, stop_at_blue_link, stop_at_lang, stop_at_lang_or_bluelink if text == "++" then max_depth, stop_at_blue_link = false, false elseif text == "+" then max_depth, stop_at_blue_link = 1, false elseif text == "*" then max_depth, stop_at_blue_link = false, true elseif text:match("^:[^*]+%*$") then -- Stop at a specific language OR first bluelink after it, e.g., ":ota*" -- If the target language is a redlink, continue to the first bluelink local lang_code = text:match("^:([^*]+)%*$") if lang_code and lang_code ~= "" then local lang_obj = Util.get_lang(lang_code, true) if lang_obj then stop_at_lang_or_bluelink = lang_code else Util.add_warning('Invalid language code "' .. lang_code .. '" in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false end else Util.add_warning('Empty language code in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false end elseif text:sub(1, 1) == ":" then -- Stop at a specific language, e.g., ":ar" stops at first Arabic term local lang_code = text:sub(2) if lang_code ~= "" then -- Validate the language code local lang_obj = Util.get_lang(lang_code, true) if lang_obj then stop_at_lang = lang_code else Util.add_warning('Invalid language code "' .. lang_code .. '" in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false -- default to ++ end else Util.add_warning('Empty language code in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false -- default to ++ end else local num = tonumber(text) if num and num >= 1 then max_depth, stop_at_blue_link = num, false else error('Invalid text value "' .. text .. '". Valid values are: "++" (full chain), "+" (first step only), "*" (until first blue link), a number (max steps), ":lang" (stop at language), or ":lang*" (stop at language or first bluelink if redlink)') end end local text_output, text_render_meta = M.text.render({ data_tree = ety_data_tree, format_term_func = Util.format_term, lang_matches_stop_code = Util.lang_matches_stop_code, max_depth = max_depth, stop_at_blue_link = stop_at_blue_link, curr_page = page_data.pagename, nodot = args.nodot, dot = args.dot, stop_at_lang = stop_at_lang, stop_at_lang_or_bluelink = stop_at_lang_or_bluelink, }) table.insert(output, text_output) if stop_at_lang and text_render_meta and not text_render_meta.stop_lang_reached then M.tracking.track_text_stop_lang_missing(lang, stop_at_lang) text_stop_lang_missing = stop_at_lang end end if rfe then table.insert(output, Util.expand_request_template(frame, "rfe", rfe, lang:getCode())) end if etystub then table.insert(output, Util.expand_request_template(frame, "etystub", etystub, lang:getCode())) end if is_nonlemma then table.insert(output, " " .. frame:expandTemplate({ title = "nonlemma", args = {}, })) end local categories = {} if Util.is_content_page() then M.tracking.track_tree_metrics({ max_depth_reached = __state.max_depth_reached, total_nodes = __state.total_nodes, language_count = __state.language_count, lang = lang, }) categories = M.categories.build({ data_tree = ety_data_tree, page_lang = lang, available_etymon_ids = __state.available_etymon_ids, senseid_parent_etymon = __state.senseid_parent_etymon, get_norm_lang_func = Util.get_norm_lang, lang_exc = lang_exc, suppress_categories = lang_exc and lang_exc.suppress_categories, nocat = args.nocat, tree = tree, text = text, exnihilo = args.exnihilo, toplevel_has_inline_etymology = __state.toplevel_has_inline_etymology, toplevel_redundant_etymology = __state.toplevel_redundant_etymology, toplevel_idless_etymon = __state.toplevel_idless_etymon, has_mismatched_id = __state.has_mismatched_id, linked_page_multiple_etymons_idless = __state.linked_page_multiple_etymons_idless, linked_page_partial_etymology_sections = __state.linked_page_partial_etymology_sections, text_stop_lang_missing = text_stop_lang_missing, }) M.tracking.track_keywords(__state.toplevel_keyword_stats, lang) M.tracking.track_page_id(lang, id) M.tracking.track_ids(__state.id_stats, lang) end if #categories > 0 then table.insert(output, M.categories.format(categories, lang)) end if __state.warnings then for i, warning in ipairs(__state.warnings) do table.insert(output, (i == 1 and "\n" or "") .. warning .. "\n") end end return table.concat(output) end return export 0nmz9wcmfp3ipz3vwym86qah7jwn26g มอดูล:etymon/styles.css 828 576415 5754448 5684435 2026-08-06T04:48:32Z Octahedron80 267 5754448 sanitized-css text/css /* Main container */ .etytree { width: max-content; max-width: 100%; overflow: hidden; box-sizing: border-box; } .etytree .NavHead { background: var(--wikt-palette-lightergrey); } .etytree .NavHead > div { width: 25em; } .etytree .NavContent { overflow: auto; } .etytree-body { display: flex; flex-direction: column; align-items: center; padding: 0.5em; margin: auto; width: fit-content; } .etytree-branch-group { display: flex; column-gap: 0.5em; align-items: end; position: relative; } .etytree-branch { display: flex; flex-direction: column; align-items: center; } /* Term blocks */ .etytree-block { position: relative; padding: 5px 10px; border: 1px solid var(--wikt-palette-lightgrey, #ddd); border-radius: 4px; background: var(--wikt-palette-beige); text-align: center; } /* Termless keyword blocks (invisible wrapper for positioning) */ .etytree-termless-block { height: 0 !important; padding: 0 !important; border: none !important; background: transparent !important; margin: 0 !important; overflow: visible; } .etytree-block.etytree-duplicate { border: 1px dashed var(--wikt-palette-grey); } .etytree-term { display: inline-block; } /* Vertical connectors */ .etytree-connector-vertical, .etytree-connector-vertical-short { border-right: 2px solid var(--wikt-palette-grey, #999); position: relative; transform: translateX(1px); } .etytree-connector-vertical { height: 20px; } .etytree-connector-vertical-short { height: 10px; } .etytree-connector-dotted { border-left: 2px dotted var(--wikt-palette-grey); height: 20px; display: block; margin-left: 50%; } /* Branch connectors */ .etytree-branch-left, .etytree-branch-right { height: 10px; width: calc(50% + 0.25em + 1px); border-bottom: 2px solid var(--wikt-palette-grey, #999); } .etytree-branch-left { border-left: 2px solid var(--wikt-palette-grey, #999); border-bottom-left-radius: 4px; transform: translateX(calc(50% - 0.4px)); } .etytree-branch-right { border-right: 2px solid var(--wikt-palette-grey, #999); border-bottom-right-radius: 4px; transform: translateX(calc(-50% + 2.4px)); } .etytree-branch-mid { border-bottom: 2px solid var(--wikt-palette-grey, #999); width: calc(100% + 0.5em); } /* Duplicate connector (L-shaped with arrow) */ .etytree-duplicate-connector { display: flex; justify-content: center; height: 20px; } .etytree-duplicate-connector > div { position: relative; width: 60px; height: 100%; } .etytree-duplicate-connector .etytree-dup-right { position: absolute; right: 0; top: 50%; bottom: 0; border-left: 2px dotted var(--wikt-palette-grey); } .etytree-duplicate-connector .etytree-dup-horiz { position: absolute; left: 0; right: 0; top: 50%; border-top: 2px dotted var(--wikt-palette-grey); } .etytree-duplicate-connector .etytree-dup-left { position: absolute; left: 0; top: 0; bottom: 50%; border-left: 2px dotted var(--wikt-palette-grey); } .etytree-duplicate-connector .etytree-dup-arrow { position: absolute; left: -5px; top: -5px; font-size: 10px; color: var(--wikt-palette-grey); } /* Label containers */ .etytree-label-container { z-index: 1; position: absolute; transform: translate(-50%); top: calc(100% + 5px); left: 50%; line-height: 10px; overflow: visible; } .etytree-group-label { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); z-index: 2; height: 10px; line-height: 10px; } /* Labels */ .etytree-label abbr { font-size: 12px; font-style: italic; color: var(--wikt-palette-black); background: var(--wikt-palette-cyan, #fff); border-radius: 2px; text-decoration: none; } /* Uncertainty marker */ .etytree-unc { font-size: 10px; font-weight: bold; padding: 1px 2px; background: var(--wikt-palette-pink); border-radius: 2px; text-decoration: none; } .etytree-label + .etytree-unc { position: absolute; left: calc(100% + 3px); } /* Final marker (for termless keywords) */ .etytree-final { font-size: 10px; font-weight: bold; padding: 1px 2px; background: var(--wikt-palette-grey) !important; color: var(--wikt-palette-white) !important; border-radius: 2px; text-decoration: none; display: inline-block; line-height: 1; } .etytree-label-container .etytree-final { position: absolute; left: 50%; top: -12px; transform: translateX(-50%); z-index: 3; margin-left: 0; } 94pxy0d6ov1puaxbux7krmz6ntarty0 มอดูล:number list/data/ceb 828 576597 5754344 2198707 2026-08-06T01:35:42Z Octahedron80 267 5754344 Scribunto text/plain local export = {numbers = {}} export.additional_number_types = { {key = "spanish_cardinal", display = "เชิงการนับจากสเปน", after = "cardinal"}, } local numbers = export.numbers export.numbers[0] = { cardinal = "walâ", spanish_cardinal = {"nulo", "sero"}, ordinal = "ikasero", adverbial = "makasero", } export.numbers[1] = { cardinal = {"usá", "isá<q:Mindanao>"}, spanish_cardinal = "uno", ordinal = "una", adverbial = "makausá", distributive = {"usa-úsa", "tag-usá", "tagsa"}, } export.numbers[2] = { cardinal = "duhá", spanish_cardinal = "dos", ordinal = "ikaduhá", adverbial = "makaduhá", distributive = {"duha-dúha", "tagdúha"}, fractional = "sikaduhá", } export.numbers[3] = { cardinal = "tuló", spanish_cardinal = "tres", ordinal = "ikatuló", adverbial = "makatuló", distributive = {"tulo-túlo", "tagtúlo"}, fractional = "sikatuló", } export.numbers[4] = { cardinal = "upát", spanish_cardinal = {"kuwatro", "kwatro <q:eye dialect>"}, ordinal = "ikaupát", adverbial = "makaupát", distributive = {"upat-úpat", "tag-upát"}, fractional = "sikaupát", } export.numbers[5] = { cardinal = "limá", spanish_cardinal = "singko", ordinal = "ikalimá", adverbial = "makalimá", distributive = {"lima-líma", "taglíma"}, fractional = "sikalimá", } export.numbers[6] = { cardinal = "unóm", spanish_cardinal = {"sayis", "séys"}, ordinal = "ikaunóm", adverbial = "makaunóm", distributive = {"unom-únom", "tag-unóm"}, fractional = "sikaunóm", } export.numbers[7] = { cardinal = "pitó", spanish_cardinal = "siyete", ordinal = "ikapitó", adverbial = "makapitó", distributive = {"pito-píto", "tagpíto"}, fractional = "sikapitó", } export.numbers[8] = { cardinal = "waló", spanish_cardinal = "otso", ordinal = "ikawaló", adverbial = "makawaló", distributive = {"walo-wálo", "tagwálo"}, fractional = "sikawaló", } export.numbers[9] = { cardinal = "siyám", spanish_cardinal = {"nuybe", "nuwebe", "nwebe"}, ordinal = "ikasiyám", adverbial = "makasiyám", distributive = {"siyam-síyam", "tagsíyam"}, fractional = "sikasiyám", } export.numbers[10] = { cardinal = {"napulò", "pulò"}, spanish_cardinal = "diyés", ordinal = {"ikanapulò", "ikapulô"}, adverbial = "makanapulò", distributive = {"napulò-napulò", "tagnapulò"}, fractional = "sikanapulò", } export.numbers[11] = { cardinal = "napúlog usá", spanish_cardinal = "onse", ordinal = {"ikanapúlog usá", "ikapúlog usá"}, adverbial = "makanapúlog usá", fractional = "sikanapúlog usá", } export.numbers[12] = { cardinal = "napúlog duhá", spanish_cardinal = "dose", ordinal = {"ikanapúlog duhá", "ikapúlog duhá"}, adverbial = "makanapúlog duhá", fractional = "sikanapúlog duhá", } export.numbers[13] = { cardinal = "napúlog tuló", spanish_cardinal = "trese", ordinal = {"ikanapúlog tuló", "ikapúlog tuló"}, adverbial = "makanapúlog tuló", fractional = "sikanapúlog tuló", } export.numbers[14] = { cardinal = "napúlog upát", spanish_cardinal = "katórse", ordinal = {"ikanapúlog upát", "ikapúlog upát"}, adverbial = "makanapúlog upát", fractional = "sikanapúlog upát", } export.numbers[15] = { cardinal = "napúlog limá", spanish_cardinal = "kinse", ordinal = {"ikanapúlog limá", "ikapúlog limá"}, adverbial = "makanapúlog limá", fractional = "sikanapúlog limá", } export.numbers[16] = { cardinal = "napúlog unóm", spanish_cardinal = {"desisayis", "diyesiséys"}, ordinal = {"ikanapúlog unóm", "ikapúlog unóm"}, adverbial = "makanapúlog unóm", fractional = "sikanapúlog unóm", } export.numbers[17] = { cardinal = "napúlog pitó", spanish_cardinal = {"desisiyete", "diyesisiyete"}, ordinal = {"ikanapúlog pitó", "ikapúlog pitó"}, adverbial = "makanapúlog pitó", fractional = "sikanapúlog pitó", } export.numbers[18] = { cardinal = "napúlog waló", spanish_cardinal = {"desiotso", "diyesiyotso"}, ordinal = {"ikanapúlog waló", "ikapúlog waló"}, adverbial = "makanapúlog waló", fractional = "sikanapúlog waló", } export.numbers[19] = { cardinal = "napúlog siyám", spanish_cardinal = {"desinuybe", "diyesinwebe"}, ordinal = {"ikanapúlog siyám", "ikapúlog siyám"}, adverbial = "makanapúlog siyám", fractional = "sikanapúlog siyám", } export.numbers[20] = { cardinal = {"kaluháan", "kawháan"}, spanish_cardinal = {"baynte", "beynte"}, ordinal = {"ikakaluháan", "ikakawháan"}, adverbial = "makakawháan", fractional = "sikakawháan", } export.numbers[21] = { cardinal = {"kaluháag usá", "kawháag usá"}, spanish_cardinal = {"baynte uno", "beyntiwuno"}, ordinal = {"ikakaluháag usá", "ikakawháag usá"}, adverbial = {"makakaluháag usá", "makakawháag usá"}, } export.numbers[22] = { cardinal = {"kaluháag duhá", "kawháag duhá"}, spanish_cardinal = {"baynte dos", "beyntidos"}, } export.numbers[23] = { cardinal = {"kaluháag tuló", "kawháag tuló"}, spanish_cardinal = {"baynte tres", "beyntitres"}, } export.numbers[24] = { cardinal = {"kaluháag upát", "kawháag upát"}, spanish_cardinal = {"baynte kwatro", "beyntikwatro", "baynte kuwatro<q:dated>"}, } export.numbers[25] = { cardinal = {"kaluháag limá", "kawháag limá"}, spanish_cardinal = {"baynte singko", "beyntisingko"}, } export.numbers[26] = { cardinal = {"kaluháag unóm", "kawháag unóm"}, spanish_cardinal = {"baynte sayis", "beyntiséys"}, } export.numbers[27] = { cardinal = {"kaluháag pitó", "kawháag pitó"}, spanish_cardinal = {"baynte siyete", "beyntisiyete"}, } export.numbers[28] = { cardinal = {"kaluháag waló", "kawháag waló"}, spanish_cardinal = {"baynte otso", "beyntiotso"}, } export.numbers[29] = { cardinal = {"kaluháag siyám", "kawháag siyám"}, spanish_cardinal = {"baynte nuybe", "beyntinwebe"}, } export.numbers[30] = { cardinal = {"katlóan", "katulóan"}, spanish_cardinal = "traynta", } export.numbers[31] = { cardinal = {"katlóag usá", "katulóag usá"}, spanish_cardinal = "trayntay uno", } export.numbers[32] = { cardinal = {"katlóag duhá", "katulóag duhá"}, spanish_cardinal = "trayntay dos", } export.numbers[33] = { cardinal = {"katlóag tuló", "katulóag tuló"}, spanish_cardinal = "trayntay tres", } export.numbers[34] = { cardinal = {"katlóag upát", "katulóag upát"}, spanish_cardinal = {"trayntay kuwatro", "trayntay kwatro<q:informal>"}, } export.numbers[35] = { cardinal = {"katlóag limá", "katulóag limá"}, spanish_cardinal = "trayntay singko", } export.numbers[36] = { cardinal = {"katlóag unóm", "katulóag unóm"}, spanish_cardinal = "trayntay sayis", } export.numbers[37] = { cardinal = {"katlóag pitó", "katulóag pitó"}, spanish_cardinal = "trayntay siyete", } export.numbers[38] = { cardinal = {"katlóag waló", "katulóag waló"}, spanish_cardinal = "trayntay otso", } export.numbers[39] = { cardinal = {"katlóag siyám", "katulóag siyám"}, spanish_cardinal = "trayntay nuybe", } export.numbers[40] = { cardinal = {"kap-atan", "kaupátan"}, spanish_cardinal = {"kuwarénta", "kwarénta<q:informal>"}, } export.numbers[41] = { cardinal = {"kap-atag usá", "kaupátag usá"}, spanish_cardinal = {"kuwaréntay uno", "kwaréntay uno<q:informal>"}, } export.numbers[42] = { cardinal = {"kap-atag duhá", "kaupátag duhá"}, spanish_cardinal = {"kuwaréntay dos", "kwaréntay dos<q:informal>"}, } export.numbers[43] = { cardinal = {"kap-atag tuló", "kaupátag tuló"}, spanish_cardinal = {"kuwaréntay tres", "kwaréntay tres<q:informal>"}, } export.numbers[44] = { cardinal = {"kap-atag upát", "kaupátag upát"}, spanish_cardinal = {"kuwaréntay kuwatro", "kwaréntay kwatro<q:informal>", "kuwaréntay kuwatro<q:informal>"}, } export.numbers[45] = { cardinal = {"kap-atag limá", "kaupátag limá"}, spanish_cardinal = {"kuwaréntay singko", "kwaréntay singko<q:informal>"}, } export.numbers[46] = { cardinal = {"kap-atag unóm", "kaupátag unóm"}, spanish_cardinal = {"kuwaréntay sayis", "kwaréntay sayis<q:informal>"}, } export.numbers[47] = { cardinal = {"kap-atag pitó", "kaupátag pitó"}, spanish_cardinal = {"kuwaréntay siyete", "kwaréntay siyete<q:informal>"}, } export.numbers[48] = { cardinal = {"kap-atag waló", "kaupátag waló"}, spanish_cardinal = {"kuwaréntay otso", "kwaréntay otso<q:informal>"}, } export.numbers[49] = { cardinal = {"kap-atag siyám", "kaupátag siyám"}, spanish_cardinal = {"kuwaréntay nuybe", "kwaréntay nuybe<q:informal>"}, } export.numbers[50] = { cardinal = {"kalím-an", "kalimáan"}, spanish_cardinal = {"singkuwénta", "singkwénta<q:informal>"}, } export.numbers[51] = { cardinal = {"kalím-ag usá", "kalimáag usá"}, spanish_cardinal = {"singkuwéntay uno", "singkwéntay uno<q:informal>"}, } export.numbers[52] = { cardinal = {"kalím-ag duhá", "kalimáag duhá"}, spanish_cardinal = {"singkuwéntay dos", "singkwéntay dos<q:informal>"}, } export.numbers[53] = { cardinal = {"kalím-ag tuló", "kalimáag tuló"}, spanish_cardinal = {"singkuwéntay tres", "singkwéntay tres<q:informal>"}, } export.numbers[54] = { cardinal = {"kalím-ag upát", "kalimáag upát"}, spanish_cardinal = {"singkuwéntay kuwatro", "singkwéntay kwatro<q:dated>", "singkwéntay kuwatro<q:dated>"}, } export.numbers[55] = { cardinal = {"kalím-ag limá", "kalimáag limá"}, spanish_cardinal = {"singkuwéntay singko", "singkwéntay singko<q:informal>"}, } export.numbers[56] = { cardinal = {"kalím-ag unóm", "kalimáag unóm"}, spanish_cardinal = {"singkuwéntay sayis", "singkwéntay sayis<q:informal>"}, } export.numbers[57] = { cardinal = {"kalím-ag pitó", "kalimáag pitó"}, spanish_cardinal = {"singkuwéntay siyete", "singkwéntay siyete<q:informal>"}, } export.numbers[58] = { cardinal = {"kalím-ag waló", "kalimáag waló"}, spanish_cardinal = {"singkuwéntay otso", "singkwéntay otso<q:informal>"}, } export.numbers[59] = { cardinal = {"kalím-ag siyám", "kalimáag siyám"}, spanish_cardinal = {"singkuwéntay nuybe", "singkwéntay nuybe<q:informal>"}, } export.numbers[60] = { cardinal = {"kan-oman", "kan-uman", "kaunóman"}, spanish_cardinal = "saysénta", } export.numbers[61] = { cardinal = {"kan-omag usá", "kan-umag usá", "kaunómag usá"}, spanish_cardinal = "sayséntay uno", } export.numbers[62] = { cardinal = {"kan-omag duhá", "kan-umag duhá", "kaunómag duhá"}, spanish_cardinal = "sayséntay dos", } export.numbers[63] = { cardinal = {"kan-omag tuló", "kan-umag tuló", "kaunómag tuló"}, spanish_cardinal = "sayséntay tres", } export.numbers[64] = { cardinal = {"kan-omag upát", "kan-umag upát", "kaunómag upát"}, spanish_cardinal = {"sayséntay kuwatro", "sayséntay kwatro<q:informal>"}, } export.numbers[65] = { cardinal = {"kan-omag limá", "kan-umag limá", "kaunómag limá"}, spanish_cardinal = "sayséntay singko", } export.numbers[66] = { cardinal = {"kan-omag unóm", "kan-umag unóm", "kaunómag unóm"}, spanish_cardinal = "sayséntay sayis", } export.numbers[67] = { cardinal = {"kan-omag pitó", "kan-umag pitó", "kaunómag pitó"}, spanish_cardinal = "sayséntay siyete", } export.numbers[68] = { cardinal = {"kan-omag waló", "kan-umag waló", "kaunómag waló"}, spanish_cardinal = "sayséntay otso", } export.numbers[69] = { cardinal = {"kan-omag siyám", "kan-umag siyám", "kaunómag siyám"}, spanish_cardinal = "sayséntay nuybe", } export.numbers[70] = { cardinal = "kapitóan", spanish_cardinal = "seténta", } export.numbers[71] = { cardinal = "kapitóag usá", spanish_cardinal = "seténtay uno", } export.numbers[72] = { cardinal = "kapitóag duhá", spanish_cardinal = "seténtay dos", } export.numbers[73] = { cardinal = "kapitóag tuló", spanish_cardinal = "seténtay tres", } export.numbers[74] = { cardinal = "kapitóag upát", spanish_cardinal = {"seténtay kuwatro", "seténtay kwatro<q:informal>"}, } export.numbers[75] = { cardinal = "kapitóag limá", spanish_cardinal = "seténtay singko", } export.numbers[76] = { cardinal = "kapitóag unóm", spanish_cardinal = "seténtay sayis", } export.numbers[77] = { cardinal = "kapitóag pitó", spanish_cardinal = "seténtay siyete", } export.numbers[78] = { cardinal = "kapitóag waló", spanish_cardinal = "seténtay otso", } export.numbers[79] = { cardinal = "kapitóag siyám", spanish_cardinal = "seténtay nuybe", } export.numbers[80] = { cardinal = "kawalóan", spanish_cardinal = "otsénta", } export.numbers[81] = { cardinal = "kawalóag usá", spanish_cardinal = "otséntay uno", } export.numbers[82] = { cardinal = "kawalóag duhá", spanish_cardinal = "otséntay dos", } export.numbers[83] = { cardinal = "kawalóag tuló", spanish_cardinal = "otséntay tres", } export.numbers[84] = { cardinal = "kawalóag upát", spanish_cardinal = {"otséntay kuwatro", "otséntay kwatro<q:informal>"}, } export.numbers[85] = { cardinal = "kawalóag limá", spanish_cardinal = "otséntay singko", } export.numbers[86] = { cardinal = "kawalóag unóm", spanish_cardinal = "otséntay sayis", } export.numbers[87] = { cardinal = "kawalóag pitó", spanish_cardinal = "otséntay siyete", } export.numbers[88] = { cardinal = "kawalóag waló", spanish_cardinal = "otséntay otso", } export.numbers[89] = { cardinal = "kawalóag siyám", spanish_cardinal = "otséntay nuybe", } export.numbers[90] = { cardinal = "kasiyáman", spanish_cardinal = "nobénta", } export.numbers[91] = { cardinal = "kasiyámag usá", spanish_cardinal = "nobéntay uno", } export.numbers[92] = { cardinal = "kasiyámag duhá", spanish_cardinal = "nobéntay dos", } export.numbers[93] = { cardinal = "kasiyámag tuló", spanish_cardinal = "nobéntay tres", } export.numbers[94] = { cardinal = "kasiyámag upát", spanish_cardinal = {"nobéntay kuwatro", "nobéntay kwatro<q:informal>"}, } export.numbers[95] = { cardinal = "kasiyámag limá", spanish_cardinal = "nobéntay singko", } export.numbers[96] = { cardinal = "kasiyámag unóm", spanish_cardinal = "nobéntay sayis", } export.numbers[97] = { cardinal = "kasiyámag pitó", spanish_cardinal = "nobéntay siyete", } export.numbers[98] = { cardinal = "kasiyámag waló", spanish_cardinal = "nobéntay otso", } export.numbers[99] = { cardinal = "kasiyámag siyám", spanish_cardinal = "nobéntay nuybe", } export.numbers[100] = { cardinal = {"usá ka gatós", "gatós"}, spanish_cardinal = {"sinto", "siyénto", "siyén"}, } export.numbers[200] = { cardinal = "duhá ka gatós", spanish_cardinal = {"doséntos", "dosiyéntos"}, } export.numbers[300] = { cardinal = "tuló ka gatós", spanish_cardinal = {"treséntos", "tresiyéntos"}, } export.numbers[400] = { cardinal = "upát ka gatós", spanish_cardinal = {"kuwatroséntos", "kuwatrosiyéntos", "kwatrosiyentos","kwatroséntos<q:informal>"}, } export.numbers[500] = { cardinal = "limá ka gatós", spanish_cardinal = {"kinyéntos", "kiniyéntos"}, } export.numbers[600] = { cardinal = "unóm ka gatós", spanish_cardinal = "sayséntos", } export.numbers[700] = { cardinal = "pitó ka gatós", spanish_cardinal = "seteséntos", } export.numbers[800] = { cardinal = "waló ka gatós", spanish_cardinal = "otsoséntos", } export.numbers[900] = { cardinal = "siyám ka gatós", spanish_cardinal = "nuybeséntos", } export.numbers[1000] = { cardinal = {"usá ka libo", "libo"}, spanish_cardinal = "mil", } export.numbers[2000] = { cardinal = "duhá ka libo", spanish_cardinal = "dos mil", } export.numbers[3000] = { cardinal = "tuló ka libo", spanish_cardinal = "tres mil", } export.numbers[4000] = { cardinal = "upát ka libo", spanish_cardinal = { "kuwatro mil", "kwatro mil<q:informal>"}, } export.numbers[5000] = { cardinal = "limá ka libo", spanish_cardinal = "singko mil", } export.numbers[6000] = { cardinal = "unóm ka libo", spanish_cardinal = {"sayis mil", "séys mil"}, } export.numbers[7000] = { cardinal = "pitó ka libo", spanish_cardinal = "siyete mil", } export.numbers[8000] = { cardinal = "waló ka libo", spanish_cardinal = "otso mil", } export.numbers[9000] = { cardinal = "siyám ka libo", spanish_cardinal = "nuybe mil", } export.numbers[10000] = { cardinal = {"usá ka laksà", "laksà", "napulò ka libo"}, spanish_cardinal = "diyes mil", } export.numbers[100000] = { cardinal = {"usá ka yaba", "yaba", "usá ka gatós ka libo"}, spanish_cardinal = "siyén mil", } export.numbers[1000000] = { cardinal = {"usá ka yukót", "yukót"}, spanish_cardinal = "milyón", } export.numbers[1000000000] = { cardinal = {"usá ka wakát", "wakát"}, spanish_cardinal = "bilyón", } export.numbers[1000000000000] = { spanish_cardinal = "trilyón", } export.numbers[1000000000000000] = { spanish_cardinal = "kuwadrilyón", } export.numbers["1000000000000000000"] = { spanish_cardinal = "kuwintilyón", } return export 2fz7803v9v3uhx38mso4kzbbttu8qpa profeta 0 577924 5754493 2201018 2026-08-06T07:43:43Z OctraBot 3198 update template use 5754493 wikitext text/x-wiki ==ภาษาโปรตุเกส== {{wp|lang=pt}} ===รากศัพท์=== {{etymon|pt|:inh|roa-opt:profeta<id:prophet>|id=prophet|text=++}} ===การออกเสียง=== {{pt-IPA|proféta}} * {{rhyme|pt|ɛtɐ|ɛta|q1=most dialects|q2=Southern Brazil|s=3}} * {{hyph|pt|pro|fe|ta}} ===คำนาม=== {{pt-noun|m|f=profetisa}} # [[ศาสดาพยากรณ์]] === อ้างอิง === {{รายการอ้างอิง}} * ''Oxford Portuguese Dictionary''. (2023). Oxford University Press. fvoqbgolqbjg19m50wkj3dm305fy1rw televisão 0 1051607 5754494 5386724 2026-08-06T07:43:48Z OctraBot 3198 update template use 5754494 wikitext text/x-wiki ==ภาษาโปรตุเกส== {{wp|lang=pt}} ===รากศัพท์=== {{etymon|pt|:calque|fr:télévision<id:television>|id=television|tree=1}} จาก {{affix|pt|tele-|visão}}, {{calque|pt|fr|télévision|nocap=1}} ===การออกเสียง=== {{pt-IPA}} * {{rhyme|pt|ɐ̃w̃|s=4}} * {{hyph|pt|te|le|vi|são}} ===คำนาม=== {{pt-noun|f}} # {{lb|pt|uncountable}} [[โทรทัศน์]] {{gl|ระบบ}} #: {{syn|pt|tevê}} #* {{quote-av|pt|date=2024-08-23|title=Batcast|number=13|author=Marcio Seixas|speaker=Samir Murad|time=13:21|url=https://youtu.be/D5rKPQHjV54?t=801|network=YouTube|location=Rio de Janeiro |text={{...}}e na '''televisão''', ao contrário do que se pode imaginar,{{...}}você não tem direção, né? O que você fizer, se não tiver muito fora, tá valendo. |t=และใน'''โทรทัศน์''' ตรงข้ามกับสิ่งที่คนคิดกัน คือมันไม่มีการกำกับ ใช่ไหมล่ะ ไม่ว่าคุณจะทำอะไร ถ้ามันไม่ผิดปกติมากเกินไป มันก็ไม่เป็นไร}} # [[เครื่อง]][[รับ]][[โทรทัศน์]] #: {{syn|pt|tevê|televisor}} ====คำสืบทอด==== * {{desc|hrx|Tëlevisong|bor=1}} ===ดูเพิ่ม=== * {{l|pt|telinha}} === อ้างอิง === {{รายการอ้างอิง}} * ''Oxford Portuguese Dictionary''. (2023). Oxford University Press. p4r42ip9vn3i4qjqb0jokr3d7b837wj loja 0 1626413 5754490 4586646 2026-08-06T07:43:31Z OctraBot 3198 update template use 5754490 wikitext text/x-wiki ==ภาษาโปรตุเกส== [[File:The Body Shop unutrasnos Oslo.JPG|thumb|250px|interior de uma loja]] {{wikipedia|lang=pt}} ===รูปแบบอื่น=== * {{alter|pt|lógea||โบราณ}} ===รากศัพท์=== {{etymon|pt|:inh|roa-opt:logea<t:storehouse>|:influence|fr:loge|id=shop|tree=1}} ===การออกเสียง=== {{pt-IPA|lója}} * {{hyph|pt|lo|ja}} ===คำนาม=== {{pt-noun|f}} # [[ร้าน]][[ค้า]] ====ลูกคำ==== {{col|pt|alojar|loja-âncora|loja de conveniência|lojista|desamparar a loja|fechar a loja|lojão}} ====ดูเพิ่ม==== {{col4|pt|bazar}} ====คำสืบทอด==== {{top3}} * {{desc|hrx|Loja|bor=1}} * {{desc|mjb|loja|bor=1|t=ร้านค้า}} * {{desc|tet|loja|bor=1}} {{bottom}} ===อ้างอิง=== {{รายการอ้างอิง}} * {{cite-web|pt|url=https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/a-formacao-e-a-etimologia-de-alojamento/37404|title=A formação e a etimologia de alojamento|work=Ciberdúvidas da Língua Portuguesa|author=Carlos Rocha|date=2023-03-14}} * {{R:pt:Infopédia}} * {{R:pt:Priberam}} * ''Oxford Portuguese Dictionary''. (2023). Oxford University Press. 81m3zkbsgoywn9vuf1qtgqqltyaxeyn ferreiro 0 1626539 5754489 4586879 2026-08-06T07:42:50Z OctraBot 3198 update template use 5754489 wikitext text/x-wiki ==ภาษาโปรตุเกส== ===รากศัพท์=== {{etymon|pt|id=blacksmith|:inh|roa-opt:ferreiro<id:blacksmith>}} {{inh+|pt|roa-opt|ferreiro}} (เทียบ{{cog|gl|ferreiro}}), จาก{{inh|pt|la|ferrārius||ช่างตีเหล็ก}} (เทียบ{{cog|es|herrero}}), จาก {{m|la|ferrum||เหล็ก}}; {{surf|pt|ferro|-eiro}} ===การออกเสียง=== {{pt-IPA}} * {{audio|pt|LL-Q5146 (por)-NMaia-ferreiro.wav|a=BR}} * {{hyph|pt|fer|rei|ro}} ===คำนาม=== {{pt-noun|m|f=+}} # [[ช่างตีเหล็ก]] #: {{coord|pt|ourives|prateiro}} ====คำเกี่ยวข้อง==== {{col|pt |ferrado |ferrador |ferradura |ferrageiro |ferragem |ferragista |ferramenta |ferramenteiro |ferrar |ferraria |férreo |ferro |ferro-velho |ferrugem }} ====คำสืบทอด==== * {{desc|tpw|pereru|bor=1}} ===อ่านเพิ่ม=== * {{R:pt:Priberam}} ===อ้างอิง=== {{รายการอ้างอิง}} * ''Oxford Portuguese Dictionary''. (2023). Oxford University Press. e24o831a3qfiv4kpebyf5ry9miusrpk botelha 0 1714929 5754487 4734241 2026-08-06T07:42:32Z OctraBot 3198 update template use 5754487 wikitext text/x-wiki == ภาษากาลิเซีย == === คำนาม === {{gl-reinteg-noun|f}} # {{gl-reinteg sp|botella}} == ภาษาครีโอลมาเก๊า == === รากศัพท์ === จาก{{der|mzs|pt|botelha}}, จาก{{der|mzs|fr|bouteille}} === การออกเสียง === * {{IPA|mzs|/bɔˈtɛ.ʎa/}} === คำนาม === {{head|mzs|คำนาม}} # [[ขวด]] === อ้างอิง === * https://www.macaneselibrary.org/pub/english/uipatua.htm#b {{C|mzs|Vessels}} == ภาษาโปรตุเกส == === รากศัพท์ === {{etymon|pt|:bor|fr:bouteille<id:bottle><unc:1>|id=bottle}} เป็นไปได้ว่า{{bor+|pt|fr|bouteille|nocap=1}}; เทียบ{{cog|es|botella}}; {{doublet|pt|botija}} === การออกเสียง === {{pt-IPA|[elh:êlh]}} * {{hyph|pt|bo|te|lha}} === คำนาม === {{pt-noun|f}} # [[ขวด]] #: {{syn|pt|garrafa}} ==== คำสืบทอด ==== * {{desc|bn|বোতল|bor=1}} * {{desc|as|বটল|bor=1}} {{q|หรือมาจาก {{m+|en|bottle}}}} * {{desctree|hi|बोतल|bor=1}} 50iez1df5umj5ql6tfq1xotdypcrbxv jazmín 0 1726687 5754484 4750479 2026-08-06T07:36:11Z OctraBot 3198 update template use 5754484 wikitext text/x-wiki == ภาษาสเปน == {{wikipedia|lang=es}} === รากศัพท์ === {{etymon|es|id=jasmine|:bor|ar:يَاسَمِين<id:jasmine>|tree=1}} {{bor+|es|ar|يَاسَمِين}}, ผ่าน{{bor|es|xaa|-}} === การออกเสียง === {{es-pr}} === คำนาม === {{es-noun|m}} # [[มะลิ]] ==== ลูกคำ ==== {{col|es |jazmín de España |jazmín del papa|jazmín del Paraguay |jazmín paraguayo |jazminero<g:m> }} ==== คำสืบทอด ==== * {{desc|de|bor=1|Jasmin}} === อ่านเพิ่ม === * {{R:es:DRAE}} {{C|es|ดอกไม้|Olive family plants}} 8dtlj86mcmf2xu6r7w8x2me2rpnw2ga gesiminu 0 1726689 5754415 4750482 2026-08-06T03:53:37Z Octahedron80 267 /* รากศัพท์ */ 5754415 wikitext text/x-wiki == ภาษาซิซิลี == === รูปแบบอื่น === * {{alt|scn|giasiminu|gesuminu|gessuminu}} * {{alt|scn|gersuminu|gelsiminu|gelsuminu}} === รากศัพท์ === {{etymon|scn|id=jasmine|:bor|ar:يَاسَمِين<id:jasmine>|tree=1}} จาก{{bor|scn|ar|يَاسَمِين}}, ผ่าน{{bor|scn|sqr|-}}; ร่วมเชื้อสายกับ{{cog|it|gelsomino}} === คำนาม === {{scn-noun|gesimin|m|u}} {{rfinfl-lite|scn}} # [[มะลิ]] ({{taxfmt|Jasminum officinale|species}}) {{c|scn|Olive family plants}} #: {{coi|scn|'''gesuminu''' [[cidratu]] / di l'[[Arabbia]] / di [[Malta]]|[[มะลิอาหรับ]] ({{taxfmt|Jasminum sambac|species}})}} #: {{coi|scn|'''gesuminu''' di [[Nàpuli]]|[[มะลิสเปน]] ({{taxfmt|Jasminum grandiflorum|species}})}} ==== คำสืบทอด ==== * {{desc|mt|bor=1|ġiżimin|alts=1}} === อ้างอิง === * {{R:scn:Traina|1832|gesuminu}} * {{R:scn:Pasqualino|2|215}} 2yr68ctn286gighxaomw08v7alo5kgo gessamí 0 1726691 5754416 4750486 2026-08-06T03:54:08Z Octahedron80 267 /* รากศัพท์ */ 5754416 wikitext text/x-wiki == ภาษากาตาลา == === รูปแบบอื่น === * {{alt|ca|llessamí}} === รากศัพท์ === {{etymon|ca|id=jasmine|:bor|ar:يَاسَمِين<id:jasmine>|tree=1}} {{bor+|ca|ar|يَاسَمِين}} {{dercat|ca|pal}} === การออกเสียง === * {{ca-IPA}} === คำนาม === {{ca-noun|m}} # [[มะลิ]] ==== ลูกคำ ==== * {{l|ca|gessamí blau}} * {{l|ca|gessamí de Virgínia}} * {{l|ca|gessamí de Xile}} === อ่านเพิ่ม === * {{R:ca:IEC2}} {{C|ca|Olive family plants}} qnsprc5akqjf2z6xpokhu7cm0s2186v มอดูล:etymon/data 828 2297436 5754410 5727300 2026-08-06T03:39:55Z Octahedron80 267 5754410 Scribunto text/plain local export = {} export.STATUS = { OK = "ok", INLINE = "inline", MISSING = "missing", REDLINK = "redlink", AMBIGUOUS = "ambiguous", } export.TRANSITIVE = { ALWAYS = "always", -- always recurse into children NEVER = "never", -- never recurse into children CROSS_LANG = "cross_lang", -- only recurse when source lang differs from target lang (but pos chain continues) CROSS_LANG_NO_INTERNAL_SOURCE = "cross_lang_no_internal_source", -- like CROSS_LANG, but source breaks for internal derivations in the same language context } -- Deep merge tables (nested tables are merged recursively, later values override earlier) local function deep_merge(...) local result = {} for _, t in ipairs({ ... }) do for k, v in pairs(t) do if type(v) == "table" and type(result[k]) == "table" then result[k] = deep_merge(result[k], v) else result[k] = v end end end return result end local function make_glossary_link(term, display_text) if not term then return display_text end return "[[Appendix:Glossary#" .. term:gsub(" ", "_") .. "|" .. display_text .. "]]" end -- Extract base word and connector from text like "Borrowed from" or "calque of" local function split_glossary_text(text) for _, pattern in ipairs({ "^(.-)(%s+[Oo][Ff])$", "^(.-)(%s+[Ff][Rr][Oo][Mm])$","^(.-)(จาก)$", "^(.-)(ของ)$" }) do local base, rest = text:match(pattern) if base then return base, rest end end return text, "" end local TRANSITIVE = export.TRANSITIVE local function create_keyword(opts) local entry = { is_group = opts.is_group or false, abbrev = opts.abbrev, glossary = opts.glossary, transitive = opts.transitive or TRANSITIVE.ALWAYS, -- default "always" inherited_chain = opts.inherited_chain or false, affix_categories = opts.affix_categories or false, borrowing_type = opts.borrowing_type, specialized_borrowing = opts.specialized_borrowing, toplevel_category = opts.toplevel_category, no_child_categories = opts.no_child_categories or false, source_category_type = opts.source_category_type, invisible = opts.invisible or false, pos_override = opts.pos_override, new_sentence = opts.new_sentence or false, separate_clause = opts.separate_clause or false, aliases = opts.aliases, } -- Only set text/phrase for visible keywords if not opts.invisible then entry.phrase = opts.phrase if opts.text then if opts.glossary then local base_word, rest = split_glossary_text(opts.text) entry.text = make_glossary_link(opts.glossary, base_word) .. rest else entry.text = opts.text end end end return entry end -- Shared defaults for keyword groups local DEFAULTS = { -- Keywords that pass through inheritance chain inheritance = { transitive = TRANSITIVE.ALWAYS, inherited_chain = true, }, -- Standard transitive derivation transitive = { transitive = TRANSITIVE.ALWAYS, }, -- Standard for internal derivations: transitive across languages, but not within them internal_derivation = { transitive = TRANSITIVE.CROSS_LANG, }, -- Borrowing keywords borrowing = { transitive = TRANSITIVE.ALWAYS, }, -- Affix group keywords (compound words, blends, etc.) affix_group = { is_group = true, transitive = TRANSITIVE.CROSS_LANG, affix_categories = true, }, -- Calque-like keywords (calque, partial calque, semantic loan) calque_like = { transitive = TRANSITIVE.NEVER, no_child_categories = true, new_sentence = true, }, -- Non-transitive influence influence_like = { transitive = TRANSITIVE.NEVER, no_child_categories = true, }, } export.keywords = { -- -- Inheritance keywords -- ["from"] = create_keyword(deep_merge(DEFAULTS.internal_derivation, { text = "จาก", phrase = "จาก", })), ["inherited"] = create_keyword(deep_merge(DEFAULTS.inheritance, { text = "สืบทอดจาก", phrase = "สืบทอดจาก", abbrev = "สืบทอด", glossary = "inherited", aliases = { "inh" }, })), -- -- Basic derivation keywords -- ["uder"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "จาก", phrase = "จาก", toplevel_category = "undefined derivations", })), ["derived"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "รับมาจาก", phrase = "รับมาจาก", abbrev = "รับ", glossary = "derived terms", aliases = { "der" }, })), -- -- Affix/compound group keywords -- ["affix"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "จาก", phrase = "จาก", aliases = { "af" }, })), ["blend"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "หลอมมาจาก", phrase = "หลอมมาจาก", abbrev = "หลอม", glossary = "blend", toplevel_category = "blends", })), ["univerbation"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "รวมเป็นหนึ่งคำจาก", phrase = "รวมเป็นหนึ่งคำจาก", abbrev = "รวมหนึ่งคำ", glossary = "univerbation", toplevel_category = "univerbations", aliases = { "univ" }, })), -- -- Borrowing keywords -- ["bor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมมาจาก", phrase = "ยืมมาจาก", abbrev = "ยืม", glossary = "loanword", borrowing_type = "borrowed", aliases = { "borrowed" }, })), ["lbor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมโดยเรียนรู้จาก", phrase = "ยืมโดยเรียนรู้จาก", abbrev = "ยืมเรียนรู้", glossary = "learned borrowing", specialized_borrowing = "learned", })), ["obor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมอักขรวิธีจาก", phrase = "ยืมอักขรวิธีจาก", abbrev = "ยืมอักขรวิธี", glossary = "orthographic borrowing", specialized_borrowing = "orthographic", })), ["slbor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมโดยกึ่งเรียนรู้จาก", phrase = "ยืมโดยกึ่งเรียนรู้จาก", abbrev = "ยืมกึ่งเรียนรู้", glossary = "semi-learned borrowing", specialized_borrowing = "semi-learned", })), ["ubor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมโดยไม่ดัดแปลงจาก", phrase = "ยืมโดยไม่ดัดแปลงจาก", abbrev = "ยืมไม่ดัดแปลง", glossary = "unadapted borrowing", specialized_borrowing = "unadapted", })), -- -- Calque-like keywords (non-transitive, start new sentence) -- ["calque"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "แปลตรงตัวจาก", phrase = "แปลตรงตัวจาก", abbrev = "แปลตรง", glossary = "calque", specialized_borrowing = "calque", aliases = { "cal", "clq" }, })), ["partial calque"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "แปลตรงตัวบางส่วนจาก", phrase = "แปลตรงตัวบางส่วนจาก", abbrev = "แปลตรงบางส่วน", glossary = "partial calque", specialized_borrowing = "partial-calque", aliases = { "pcal" }, })), ["semantic loan"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "ยืมความหมายจาก", phrase = "ยืมความหมายจาก", abbrev = "ยืมความหมาย", glossary = "semantic loan", specialized_borrowing = "semantic-loan", aliases = { "sl" }, })), -- -- Influence keywords (non-transitive, separate clause) -- ["influence"] = create_keyword(deep_merge(DEFAULTS.influence_like, { text = "ได้รับอิทธิพลจาก", phrase = "ได้รับอิทธิพลจาก", abbrev = "รับอิทธิพล", glossary = "contamination", separate_clause = true, })), -- -- Morphological derivation keywords -- ["clipping"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "ตัดทอนจาก", phrase = "ตัดทอนจาก", abbrev = "ตัด", glossary = "clipping", toplevel_category = "clippings", aliases = { "clip" }, })), ["ellipsis"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Ellipsis of", phrase = "ellipsis of", abbrev = "ellip.", glossary = "ellipsis", toplevel_category = "ellipses", aliases = { "ellip" }, })), ["back-formation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "ผันรูปย้อนกลับจาก", phrase = "ผันรูปย้อนกลับจาก", abbrev = "ผันย้อนกลับ", glossary = "back-formation", toplevel_category = "back-formations", aliases = { "bf" }, })), ["transliteration"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Transliteration of", phrase = "borrowed from", abbrev = "translit.", glossary = "transliteration", aliases = { "translit" }, })), ["vrd"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Vṛddhi derivative of", phrase = "a vṛddhi derivative of", abbrev = "vṛd.", glossary = "vṛddhi derivative", })), ["apheretic"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Apheretic form of", phrase = "an apheretic form of", abbrev = "aph.", glossary = "apheresis", aliases = { "apheresis", "aphetic" }, })), ["denominal"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Denominal verb from", phrase = "denominal verb from", abbrev = "denom.", glossary = "denominal", toplevel_category = "denominal verbs", aliases = { "denom" }, })), ["deverbal"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Deverbal from", phrase = "deverbal from", abbrev = "deverb.", glossary = "deverbal", toplevel_category = "deverbals", })), ["reduplication"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Reduplication of", phrase = "reduplication of", abbrev = "redup.", glossary = "reduplication", toplevel_category = "reduplications", aliases = { "redup" }, })), ["abbreviation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Abbreviation of", phrase = "abbreviation of", abbrev = "abbr.", glossary = "abbreviation", aliases = { "abbr" }, })), ["acronym"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "อักษรย่อรวมพยางค์ของ", phrase = "อักษรย่อรวมพยางค์ของ", abbrev = "อักษรย่อ", glossary = "acronym", aliases = { "acro" }, })), ["initialism"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Initialism of", phrase = "initialism of", abbrev = "init.", glossary = "initialism", aliases = { "init" }, })), ["metathesis"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Metathesis of", phrase = "metathesis of", abbrev = "meta.", glossary = "metathesis", toplevel_category = "words derived through metathesis", aliases = { "meta" }, })), -- -- Invisible keywords (no text output) -- ["root"] = create_keyword { transitive = TRANSITIVE.ALWAYS, invisible = true, pos_override = "root", }, ["afeq"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "จาก", phrase = "จาก", transitive = TRANSITIVE.NEVER, invisible = true, })), } local aliases_to_register = {} local canonical_aliases = {} for name, keyword_data in pairs(export.keywords) do if keyword_data.aliases then canonical_aliases[name] = keyword_data.aliases for _, alias in ipairs(keyword_data.aliases) do if export.keywords[alias] then error("Alias '" .. alias .. "' defined in keyword '" .. name .. "' collides with existing keyword '" .. alias .. "'.") end if aliases_to_register[alias] then error("Alias '" .. alias .. "' defined in keyword '" .. name .. "' is already claimed by another keyword.") end aliases_to_register[alias] = keyword_data end keyword_data.aliases = nil end end for alias, data in pairs(aliases_to_register) do export.keywords[alias] = data end -- -- Language exception presets -- local EXCEPTION_PRESETS = { -- Fully disallowed: no tree, no text, no categories disallowed = { disallow = { tree = true, text = true }, suppress_categories = true, }, -- Suppress transliteration only no_translit = { suppress_tr = true, }, -- Suppress all categories only no_categories = { suppress_categories = true, }, } --[=[ Available exception options: disallow = { Related options for disallowing output: tree Disallow etymology trees for this language text Disallow etymology text generation for this language ref Reference link shown when tree/text is disallowed } suppress_tr Suppress transliteration in links suppress_categories Suppress all category generation normalize_to Normalize language code to a different code normalize_from_families Apply normalization to languages in these families normalize_exclude_families Exclude these families from normalization keyword_overrides Per-keyword categorisation overrides (e.g. { ["af"] = { transitive = TRANSITIVE.NEVER } }) ]=] local function create_exception(preset, overrides) local base = preset and EXCEPTION_PRESETS[preset] or {} return deep_merge(base, overrides or {}) end export.config = { lang_exceptions = { ["zh"] = create_exception("disallowed", { disallow = { ref = "[[Wiktionary:Beer parlour/2025/May#Template:etymon for Chinese]]" }, suppress_tr = true, normalize_to = "zh", normalize_from_families = { "zhx" }, normalize_exclude_families = { "qfa-cnt" }, }), }, } -- -- Propagate keyword overrides to aliases -- if export.config.lang_exceptions then for lang_code, exception in pairs(export.config.lang_exceptions) do if exception.keyword_overrides then for canonical, aliases in pairs(canonical_aliases) do if exception.keyword_overrides[canonical] then local override_data = exception.keyword_overrides[canonical] for _, alias in ipairs(aliases) do if not exception.keyword_overrides[alias] then exception.keyword_overrides[alias] = override_data end end end end end end end return export a6754fxpgcpsik74uogpco7yn8a8aiw 5754411 5754410 2026-08-06T03:45:36Z Octahedron80 267 5754411 Scribunto text/plain local export = {} export.STATUS = { OK = "ok", INLINE = "inline", MISSING = "missing", REDLINK = "redlink", AMBIGUOUS = "ambiguous", } export.TRANSITIVE = { ALWAYS = "always", -- always recurse into children NEVER = "never", -- never recurse into children CROSS_LANG = "cross_lang", -- only recurse when source lang differs from target lang (but pos chain continues) CROSS_LANG_NO_INTERNAL_SOURCE = "cross_lang_no_internal_source", -- like CROSS_LANG, but source breaks for internal derivations in the same language context } -- Deep merge tables (nested tables are merged recursively, later values override earlier) local function deep_merge(...) local result = {} for _, t in ipairs({ ... }) do for k, v in pairs(t) do if type(v) == "table" and type(result[k]) == "table" then result[k] = deep_merge(result[k], v) else result[k] = v end end end return result end local function make_glossary_link(term, display_text) if not term then return display_text end return "[[Appendix:Glossary#" .. term:gsub(" ", "_") .. "|" .. display_text .. "]]" end -- Extract base word and connector from text like "Borrowed from" or "calque of" local function split_glossary_text(text) for _, pattern in ipairs({ "^(.-)(%s+[Oo][Ff])$", "^(.-)(%s+[Ff][Rr][Oo][Mm])$","^(.-)(จาก)$", "^(.-)(ของ)$" }) do local base, rest = text:match(pattern) if base then return base, rest end end return text, "" end local TRANSITIVE = export.TRANSITIVE local function create_keyword(opts) local entry = { is_group = opts.is_group or false, abbrev = opts.abbrev, glossary = opts.glossary, transitive = opts.transitive or TRANSITIVE.ALWAYS, -- default "always" inherited_chain = opts.inherited_chain or false, affix_categories = opts.affix_categories or false, borrowing_type = opts.borrowing_type, specialized_borrowing = opts.specialized_borrowing, toplevel_category = opts.toplevel_category, no_child_categories = opts.no_child_categories or false, source_category_type = opts.source_category_type, invisible = opts.invisible or false, pos_override = opts.pos_override, new_sentence = opts.new_sentence or false, separate_clause = opts.separate_clause or false, aliases = opts.aliases, } -- Only set text/phrase for visible keywords if not opts.invisible then entry.phrase = opts.phrase if opts.text then if opts.glossary then local base_word, rest = split_glossary_text(opts.text) entry.text = make_glossary_link(opts.glossary, base_word) .. rest else entry.text = opts.text end end end return entry end -- Shared defaults for keyword groups local DEFAULTS = { -- Keywords that pass through inheritance chain inheritance = { transitive = TRANSITIVE.ALWAYS, inherited_chain = true, }, -- Standard transitive derivation transitive = { transitive = TRANSITIVE.ALWAYS, }, -- Standard for internal derivations: transitive across languages, but not within them internal_derivation = { transitive = TRANSITIVE.CROSS_LANG, }, -- Borrowing keywords borrowing = { transitive = TRANSITIVE.ALWAYS, }, -- Affix group keywords (compound words, blends, etc.) affix_group = { is_group = true, transitive = TRANSITIVE.CROSS_LANG, affix_categories = true, }, -- Calque-like keywords (calque, partial calque, semantic loan) calque_like = { transitive = TRANSITIVE.NEVER, no_child_categories = true, new_sentence = true, }, -- Non-transitive influence influence_like = { transitive = TRANSITIVE.NEVER, no_child_categories = true, }, } export.keywords = { -- -- Inheritance keywords -- ["from"] = create_keyword(deep_merge(DEFAULTS.internal_derivation, { text = "จาก", phrase = "จาก", })), ["inherited"] = create_keyword(deep_merge(DEFAULTS.inheritance, { text = "สืบทอดจาก", phrase = "สืบทอดจาก", abbrev = "สืบทอด", glossary = "inherited", aliases = { "inh" }, })), -- -- Basic derivation keywords -- ["uder"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "จาก", phrase = "จาก", toplevel_category = "undefined derivations", })), ["derived"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "รับมาจาก", phrase = "รับมาจาก", abbrev = "รับ", glossary = "derived terms", aliases = { "der" }, })), -- -- Affix/compound group keywords -- ["affix"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "จาก", phrase = "จาก", aliases = { "af" }, })), ["blend"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "หลอมมาจาก", phrase = "หลอมมาจาก", abbrev = "หลอม", glossary = "blend", toplevel_category = "blends", })), ["univerbation"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "รวมเป็นหนึ่งคำจาก", phrase = "รวมเป็นหนึ่งคำจาก", abbrev = "รวมหนึ่งคำ", glossary = "univerbation", toplevel_category = "univerbations", aliases = { "univ" }, })), -- -- Borrowing keywords -- ["bor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมมาจาก", phrase = "ยืมมาจาก", abbrev = "ยืม", glossary = "loanword", borrowing_type = "borrowed", aliases = { "borrowed" }, })), ["lbor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมโดยเรียนรู้จาก", phrase = "ยืมโดยเรียนรู้จาก", abbrev = "เรียนรู้", glossary = "learned borrowing", specialized_borrowing = "learned", })), ["obor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมอักขรวิธีจาก", phrase = "ยืมอักขรวิธีจาก", abbrev = "อักขรวิธี", glossary = "orthographic borrowing", specialized_borrowing = "orthographic", })), ["slbor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมโดยกึ่งเรียนรู้จาก", phrase = "ยืมโดยกึ่งเรียนรู้จาก", abbrev = "กึ่งเรียนรู้", glossary = "semi-learned borrowing", specialized_borrowing = "semi-learned", })), ["ubor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมโดยไม่ดัดแปลงจาก", phrase = "ยืมโดยไม่ดัดแปลงจาก", abbrev = "ไม่ดัดแปลง", glossary = "unadapted borrowing", specialized_borrowing = "unadapted", })), -- -- Calque-like keywords (non-transitive, start new sentence) -- ["calque"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "แปลตรงตัวจาก", phrase = "แปลตรงตัวจาก", abbrev = "แปลตรง", glossary = "calque", specialized_borrowing = "calque", aliases = { "cal", "clq" }, })), ["partial calque"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "แปลตรงตัวบางส่วนจาก", phrase = "แปลตรงตัวบางส่วนจาก", abbrev = "แปลส่วน", glossary = "partial calque", specialized_borrowing = "partial-calque", aliases = { "pcal" }, })), ["semantic loan"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "ยืมความหมายจาก", phrase = "ยืมความหมายจาก", abbrev = "ความหมาย", glossary = "semantic loan", specialized_borrowing = "semantic-loan", aliases = { "sl" }, })), -- -- Influence keywords (non-transitive, separate clause) -- ["influence"] = create_keyword(deep_merge(DEFAULTS.influence_like, { text = "ได้รับอิทธิพลจาก", phrase = "ได้รับอิทธิพลจาก", abbrev = "อิทธิพล", glossary = "contamination", separate_clause = true, })), -- -- Morphological derivation keywords -- ["clipping"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "ตัดทอนจาก", phrase = "ตัดทอนจาก", abbrev = "ตัด", glossary = "clipping", toplevel_category = "clippings", aliases = { "clip" }, })), ["ellipsis"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Ellipsis of", phrase = "ellipsis of", abbrev = "ellip.", glossary = "ellipsis", toplevel_category = "ellipses", aliases = { "ellip" }, })), ["back-formation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "ผันรูปย้อนกลับจาก", phrase = "ผันรูปย้อนกลับจาก", abbrev = "ผันย้อน", glossary = "back-formation", toplevel_category = "back-formations", aliases = { "bf" }, })), ["transliteration"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "ถอดอักษรจาก", phrase = "ยืมมาจาก", abbrev = "ถอดอักษร", glossary = "transliteration", aliases = { "translit" }, })), ["vrd"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Vṛddhi derivative of", phrase = "a vṛddhi derivative of", abbrev = "vṛd.", glossary = "vṛddhi derivative", })), ["apheretic"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Apheretic form of", phrase = "an apheretic form of", abbrev = "aph.", glossary = "apheresis", aliases = { "apheresis", "aphetic" }, })), ["denominal"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Denominal verb from", phrase = "denominal verb from", abbrev = "denom.", glossary = "denominal", toplevel_category = "denominal verbs", aliases = { "denom" }, })), ["deverbal"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Deverbal from", phrase = "deverbal from", abbrev = "deverb.", glossary = "deverbal", toplevel_category = "deverbals", })), ["reduplication"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "คำซ้ำของ", phrase = "คำซ้ำของ", abbrev = "ซ้ำ", glossary = "reduplication", toplevel_category = "reduplications", aliases = { "redup" }, })), ["abbreviation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "คำย่อของ", phrase = "คำย่อของ", abbrev = "ย่อ", glossary = "abbreviation", aliases = { "abbr" }, })), ["acronym"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "อักษรย่อรวมพยางค์ของ", phrase = "อักษรย่อรวมพยางค์ของ", abbrev = "ย่อพยางค์", glossary = "acronym", aliases = { "acro" }, })), ["initialism"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "อักษรย่อของ", phrase = "อักษรย่อของ", abbrev = "ย่ออักษร", glossary = "initialism", aliases = { "init" }, })), ["metathesis"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Metathesis of", phrase = "metathesis of", abbrev = "meta.", glossary = "metathesis", toplevel_category = "words derived through metathesis", aliases = { "meta" }, })), -- -- Invisible keywords (no text output) -- ["root"] = create_keyword { transitive = TRANSITIVE.ALWAYS, invisible = true, pos_override = "root", }, ["afeq"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "จาก", phrase = "จาก", transitive = TRANSITIVE.NEVER, invisible = true, })), } local aliases_to_register = {} local canonical_aliases = {} for name, keyword_data in pairs(export.keywords) do if keyword_data.aliases then canonical_aliases[name] = keyword_data.aliases for _, alias in ipairs(keyword_data.aliases) do if export.keywords[alias] then error("Alias '" .. alias .. "' defined in keyword '" .. name .. "' collides with existing keyword '" .. alias .. "'.") end if aliases_to_register[alias] then error("Alias '" .. alias .. "' defined in keyword '" .. name .. "' is already claimed by another keyword.") end aliases_to_register[alias] = keyword_data end keyword_data.aliases = nil end end for alias, data in pairs(aliases_to_register) do export.keywords[alias] = data end -- -- Language exception presets -- local EXCEPTION_PRESETS = { -- Fully disallowed: no tree, no text, no categories disallowed = { disallow = { tree = true, text = true }, suppress_categories = true, }, -- Suppress transliteration only no_translit = { suppress_tr = true, }, -- Suppress all categories only no_categories = { suppress_categories = true, }, } --[=[ Available exception options: disallow = { Related options for disallowing output: tree Disallow etymology trees for this language text Disallow etymology text generation for this language ref Reference link shown when tree/text is disallowed } suppress_tr Suppress transliteration in links suppress_categories Suppress all category generation normalize_to Normalize language code to a different code normalize_from_families Apply normalization to languages in these families normalize_exclude_families Exclude these families from normalization keyword_overrides Per-keyword categorisation overrides (e.g. { ["af"] = { transitive = TRANSITIVE.NEVER } }) ]=] local function create_exception(preset, overrides) local base = preset and EXCEPTION_PRESETS[preset] or {} return deep_merge(base, overrides or {}) end export.config = { lang_exceptions = { ["zh"] = create_exception("disallowed", { disallow = { ref = "[[Wiktionary:Beer parlour/2025/May#Template:etymon for Chinese]]" }, suppress_tr = true, normalize_to = "zh", normalize_from_families = { "zhx" }, normalize_exclude_families = { "qfa-cnt" }, }), }, } -- -- Propagate keyword overrides to aliases -- if export.config.lang_exceptions then for lang_code, exception in pairs(export.config.lang_exceptions) do if exception.keyword_overrides then for canonical, aliases in pairs(canonical_aliases) do if exception.keyword_overrides[canonical] then local override_data = exception.keyword_overrides[canonical] for _, alias in ipairs(aliases) do if not exception.keyword_overrides[alias] then exception.keyword_overrides[alias] = override_data end end end end end end end return export p0pm285yp5qmc4r859mtmihy9i1f68z 5754442 5754411 2026-08-06T04:36:42Z Octahedron80 267 5754442 Scribunto text/plain local export = {} export.STATUS = { OK = "ok", INLINE = "inline", MISSING = "missing", REDLINK = "redlink", AMBIGUOUS = "ambiguous", } export.TRANSITIVE = { ALWAYS = "always", -- always recurse into children NEVER = "never", -- never recurse into children CROSS_LANG = "cross_lang", -- only recurse when source lang differs from target lang (but pos chain continues) CROSS_LANG_NO_INTERNAL_SOURCE = "cross_lang_no_internal_source", -- like CROSS_LANG, but source breaks for internal derivations in the same language context } -- Deep merge tables (nested tables are merged recursively, later values override earlier) local function deep_merge(...) local result = {} for _, t in ipairs({ ... }) do for k, v in pairs(t) do if type(v) == "table" and type(result[k]) == "table" then result[k] = deep_merge(result[k], v) else result[k] = v end end end return result end local function make_glossary_link(term, display_text) if not term then return display_text end return "[[Appendix:Glossary#" .. term:gsub(" ", "_") .. "|" .. display_text .. "]]" end -- Extract base word and connector from text like "Borrowed from" or "calque of" local function split_glossary_text(text) for _, pattern in ipairs({ "^(.-)(%s+[Oo][Ff])$", "^(.-)(%s+[Ff][Rr][Oo][Mm])$","^(.-)(จาก)$", "^(.-)(ของ)$" }) do local base, rest = text:match(pattern) if base then return base, rest end end return text, "" end local TRANSITIVE = export.TRANSITIVE local function create_keyword(opts) local entry = { is_group = opts.is_group or false, abbrev = opts.abbrev, glossary = opts.glossary, transitive = opts.transitive or TRANSITIVE.ALWAYS, -- default "always" inherited_chain = opts.inherited_chain or false, affix_categories = opts.affix_categories or false, borrowing_type = opts.borrowing_type, specialized_borrowing = opts.specialized_borrowing, toplevel_category = opts.toplevel_category, no_child_categories = opts.no_child_categories or false, source_category_type = opts.source_category_type, invisible = (opts.invisible == true and "all") or opts.invisible or false, pos_override = opts.pos_override, new_sentence = opts.new_sentence or false, separate_clause = opts.separate_clause or false, default_conj = opts.default_conj, min_etymons = opts.min_etymons, max_etymons = opts.max_etymons, term_rules = opts.term_rules, aliases = opts.aliases, } -- Only set text/phrase when visible in text (invisible ~= "all" and ~= "text") local inv = entry.invisible if inv ~= "all" and inv ~= "text" then entry.phrase = opts.phrase if opts.text then if opts.glossary then local base_word, rest = split_glossary_text(opts.text) entry.text = make_glossary_link(opts.glossary, base_word) .. rest else entry.text = opts.text end end end return entry end -- Shared defaults for keyword groups local DEFAULTS = { -- Keywords that pass through inheritance chain inheritance = { transitive = TRANSITIVE.ALWAYS, inherited_chain = true, }, -- Standard transitive derivation transitive = { transitive = TRANSITIVE.ALWAYS, }, -- Standard for internal derivations: transitive across languages, but not within them internal_derivation = { transitive = TRANSITIVE.CROSS_LANG, }, -- Borrowing keywords borrowing = { transitive = TRANSITIVE.ALWAYS, }, -- Affix group keywords (compound words, blends, etc.) affix_group = { is_group = true, min_etymons = 2, transitive = TRANSITIVE.CROSS_LANG, affix_categories = true, }, -- Calque-like keywords (calque, partial calque, semantic loan) calque_like = { transitive = TRANSITIVE.NEVER, no_child_categories = true, new_sentence = true, }, -- Non-transitive influence influence_like = { transitive = TRANSITIVE.NEVER, no_child_categories = true, }, } export.keywords = { -- -- Inheritance keywords -- ["from"] = create_keyword(deep_merge(DEFAULTS.internal_derivation, { text = "จาก", phrase = "จาก", term_rules = { entry_lang = true }, })), ["inherited"] = create_keyword(deep_merge(DEFAULTS.inheritance, { text = "สืบทอดจาก", phrase = "สืบทอดจาก", abbrev = "สืบทอด", glossary = "inherited", aliases = { "inh" }, term_rules = { family = "disallowed", family_suffix = "; use a specific language.", ancestor_check = true, }, })), -- -- Basic derivation keywords -- ["uder"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "จาก", phrase = "จาก", toplevel_category = "undefined derivations", })), ["derived"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "รับมาจาก", phrase = "รับมาจาก", abbrev = "รับ", glossary = "derived terms", aliases = { "der" }, })), -- -- Affix/compound group keywords -- ["affix"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "จาก", phrase = "จาก", min_etymons = 1, aliases = { "af" }, })), ["blend"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "หลอมมาจาก", phrase = "หลอมมาจาก", abbrev = "หลอม", glossary = "blend", toplevel_category = "blends", })), ["univerbation"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "รวมเป็นหนึ่งคำจาก", phrase = "รวมเป็นหนึ่งคำจาก", abbrev = "รวมหนึ่งคำ", glossary = "univerbation", toplevel_category = "univerbations", min_etymons = 1, aliases = { "univ" }, })), ["vrd-af"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "Vṛddhi derivative of", phrase = "a vṛddhi derivative of", abbrev = "vṛd.", glossary = "vṛddhi derivative", toplevel_category = "vrddhi derivatives", })), ["sa-af"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "[[Sanskritic]] formation from", phrase = "a [[Sanskritic]] formation of", toplevel_category = "Sanskritic formations", })), -- -- Borrowing keywords -- ["bor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมมาจาก", phrase = "ยืมมาจาก", abbrev = "ยืม", glossary = "loanword", borrowing_type = "borrowed", aliases = { "borrowed" }, })), ["lbor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมโดยเรียนรู้จาก", phrase = "ยืมโดยเรียนรู้จาก", abbrev = "เรียนรู้", glossary = "learned borrowing", specialized_borrowing = "learned", })), ["obor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมอักขรวิธีจาก", phrase = "ยืมอักขรวิธีจาก", abbrev = "อักขรวิธี", glossary = "orthographic borrowing", specialized_borrowing = "orthographic", })), ["slbor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมโดยกึ่งเรียนรู้จาก", phrase = "ยืมโดยกึ่งเรียนรู้จาก", abbrev = "กึ่งเรียนรู้", glossary = "semi-learned borrowing", specialized_borrowing = "semi-learned", })), ["ubor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "ยืมโดยไม่ดัดแปลงจาก", phrase = "ยืมโดยไม่ดัดแปลงจาก", abbrev = "ไม่ดัดแปลง", glossary = "unadapted borrowing", specialized_borrowing = "unadapted", })), -- -- Calque-like keywords (non-transitive, start new sentence) -- ["calque"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "แปลตรงตัวจาก", phrase = "แปลตรงตัวจาก", abbrev = "แปลตรง", glossary = "calque", specialized_borrowing = "calque", aliases = { "cal", "clq" }, })), ["partial calque"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "แปลตรงตัวบางส่วนจาก", phrase = "แปลตรงตัวบางส่วนจาก", abbrev = "แปลส่วน", glossary = "partial calque", specialized_borrowing = "partial-calque", aliases = { "pcal" }, })), ["semantic loan"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "ยืมความหมายจาก", phrase = "ยืมความหมายจาก", abbrev = "ความหมาย", glossary = "semantic loan", specialized_borrowing = "semantic-loan", aliases = { "sl" }, })), ["psm"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "Phono-semantic matching of", phrase = "a phono-semantic matching of", abbrev = "psm.", glossary = "phono-semantic matching", specialized_borrowing = "phono-semantic-matching", aliases = { "phono-semantic matching" }, })), -- -- Influence keywords (non-transitive, separate clause) -- ["influence"] = create_keyword(deep_merge(DEFAULTS.influence_like, { text = "ได้รับอิทธิพลจาก", phrase = "ได้รับอิทธิพลจาก", abbrev = "อิทธิพล", glossary = "contamination", separate_clause = true, })), -- -- Morphological derivation keywords -- ["clipping"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "ตัดทอนจาก", phrase = "ตัดทอนจาก", abbrev = "ตัด", glossary = "clipping", toplevel_category = "clippings", aliases = { "clip" }, })), ["ellipsis"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Ellipsis of", phrase = "ellipsis of", abbrev = "ellip.", glossary = "ellipsis", toplevel_category = "ellipses", aliases = { "ellip" }, })), ["back-formation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "ผันรูปย้อนกลับจาก", phrase = "ผันรูปย้อนกลับจาก", abbrev = "ผันย้อน", glossary = "back-formation", toplevel_category = "back-formations", aliases = { "bf" }, })), ["nominalization"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Nominalization of", phrase = "a nominalization of", abbrev = "nom.", glossary = "nominalization", toplevel_category = "nominalizations", aliases = { "nom" }, })), ["transliteration"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "ถอดอักษรจาก", phrase = "ยืมมาจาก", abbrev = "ถอดอักษร", glossary = "transliteration", aliases = { "translit" }, })), ["vrd"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Vṛddhi derivative of", phrase = "a vṛddhi derivative of", abbrev = "vṛd.", glossary = "vṛddhi derivative", toplevel_category = "vrddhi derivatives", })), ["apheretic"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Apheretic form of", phrase = "an apheretic form of", abbrev = "aph.", glossary = "apheresis", aliases = { "apheresis", "aphetic" }, })), ["denominal"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Denominal verb from", phrase = "denominal verb from", abbrev = "denom.", glossary = "denominal", toplevel_category = "denominal verbs", aliases = { "denom" }, })), ["deverbal"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Deverbal from", phrase = "deverbal from", abbrev = "deverb.", glossary = "deverbal", toplevel_category = "deverbals", })), ["reduplication"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "คำซ้ำของ", phrase = "คำซ้ำของ", abbrev = "ซ้ำ", glossary = "reduplication", toplevel_category = "reduplications", aliases = { "redup" }, })), ["abbreviation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "คำย่อของ", phrase = "คำย่อของ", abbrev = "ย่อ", glossary = "abbreviation", aliases = { "abbr", "abbrev" }, })), ["syllabic abbreviation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Syllabic abbreviation of", phrase = "syllabic abbreviation of", abbrev = "syl. abbr.", glossary = "syllabic abbreviation", aliases = { "sylabbr", "sylabbrev" }, })), ["acronym"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "อักษรย่อรวมพยางค์ของ", phrase = "อักษรย่อรวมพยางค์ของ", abbrev = "ย่อพยางค์", glossary = "acronym", aliases = { "acro" }, })), ["initialism"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "อักษรย่อของ", phrase = "อักษรย่อของ", abbrev = "ย่ออักษร", glossary = "initialism", aliases = { "init" }, })), ["metathesis"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Metathesis of", phrase = "metathesis of", abbrev = "meta.", glossary = "metathesis", toplevel_category = "words derived through metathesis", aliases = { "meta" }, })), -- -- Invisible keywords (no text output) -- ["root"] = create_keyword { transitive = TRANSITIVE.ALWAYS, invisible = "all", pos_override = "root", }, ["afeq"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "จาก", phrase = "จาก", transitive = TRANSITIVE.NEVER, min_etymons = 1, invisible = "all", })), } -- Template-parameter supplements. export.supplements = { doublet = { text = "ร่วมรากกับ", phrase = "ร่วมรากกับ", glossary = "doublet", toplevel_category = "doublets", default_conj = "and", term_rules = { entry_lang = true, require_term = true, disallow = { "suppress", "unknown", "family" }, }, }, } local aliases_to_register = {} local canonical_aliases = {} -- Map every keyword (canonical or alias) to its canonical form for consistent checks and tracking. export.keyword_canonical = {} for name, keyword_data in pairs(export.keywords) do export.keyword_canonical[name] = name if keyword_data.aliases then canonical_aliases[name] = keyword_data.aliases for _, alias in ipairs(keyword_data.aliases) do if export.keywords[alias] then error("Alias '" .. alias .. "' defined in keyword '" .. name .. "' collides with existing keyword '" .. alias .. "'.") end if aliases_to_register[alias] then error("Alias '" .. alias .. "' defined in keyword '" .. name .. "' is already claimed by another keyword.") end aliases_to_register[alias] = keyword_data export.keyword_canonical[alias] = name end keyword_data.aliases = nil end end for alias, data in pairs(aliases_to_register) do export.keywords[alias] = data end -- -- Language exception presets -- local EXCEPTION_PRESETS = { -- Fully disallowed: no tree, no text, no categories disallowed = { disallow = { tree = true, text = true }, suppress_categories = true, }, -- Suppress transliteration only no_translit = { suppress_tr = true, }, -- Suppress all categories only no_categories = { suppress_categories = true, }, } --[=[ Available exception options: disallow = { Related options for disallowing output: tree Disallow etymology trees for this language text Disallow etymology text generation for this language ref Reference link shown when tree/text is disallowed } suppress_tr Suppress transliteration in links suppress_categories Suppress all category generation normalize_to Normalize language code to a different code normalize_from_families Apply normalization to languages in these families normalize_exclude_families Exclude these families from normalization keyword_overrides Per-keyword categorisation overrides (e.g. { ["af"] = { transitive = TRANSITIVE.NEVER } }) ]=] local function create_exception(preset, overrides) local base = preset and EXCEPTION_PRESETS[preset] or {} return deep_merge(base, overrides or {}) end export.config = { lang_exceptions = { ["zh"] = create_exception("disallowed", { disallow = { ref = "[[Wiktionary:Beer parlour/2025/May#Template:etymon for Chinese]]" }, suppress_tr = true, normalize_to = "zh", normalize_from_families = { "zhx" }, normalize_exclude_families = { "qfa-cnt" }, }), }, } -- Supported codes for the nominalization <g:code> modifier (subset of common gender/number-style codes) export.nominalization_g_codes = { ["m"] = "เพศชาย", ["f"] = "เพศหญิง", ["n"] = "เพศกลาง", ["c"] = "เพศรวม", ["gneut"] = "ไม่ระบุเพศ", ["s"] = "เอกพจน์", ["p"] = "พหูพจน์", ["d"] = "ทวิพจน์", ["pauc"] = "paucal", ["mf"] = "เพศชายหรือเพศหญิง", ["fm"] = "เพศชายหรือเพศหญิง", ["mfn"] = "เพศชาย เพศหญิง หรือเพศกลาง", ["mnf"] = "เพศชาย เพศหญิง หรือเพศกลาง", ["fmn"] = "เพศชาย เพศหญิง หรือเพศกลาง", ["fnm"] = "เพศชาย เพศหญิง หรือเพศกลาง", ["nmf"] = "เพศชาย เพศหญิง หรือเพศกลาง", ["nfm"] = "เพศชาย เพศหญิง หรือเพศกลาง", } -- -- Propagate keyword overrides to aliases -- if export.config.lang_exceptions then for lang_code, exception in pairs(export.config.lang_exceptions) do if exception.keyword_overrides then for canonical, aliases in pairs(canonical_aliases) do if exception.keyword_overrides[canonical] then local override_data = exception.keyword_overrides[canonical] for _, alias in ipairs(aliases) do if not exception.keyword_overrides[alias] then exception.keyword_overrides[alias] = override_data end end end end end end end return export fon151dys3mup47kk7wmemwtqxv4a07 มอดูล:etymon/text 828 2297437 5754409 5727295 2026-08-06T03:27:59Z Octahedron80 267 5754409 Scribunto text/plain local export = {} local loader = require("Module:module loader") local M = loader.init({ require = { references = "Module:references", }, loadData = { data = "Module:etymon/data", }, }) function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local format_term_func = opts.format_term_func local max_depth = opts.max_depth local stop_at_blue_link = opts.stop_at_blue_link local curr_page = opts.curr_page local nodot = opts.nodot local stop_at_lang = opts.stop_at_lang local stop_at_lang_or_bluelink = opts.stop_at_lang_or_bluelink local children = data_tree.children if not children or #children == 0 then return "" end local top_l2 = data_tree.lang:getFullCode() .. ":" .. curr_page -- Get refs for a term local function get_term_refs(term, term_lang, depth) local term_l2 = term_lang:getFullCode() .. ":" .. curr_page if term.parsed_ref and (depth == 1 or term_l2 == top_l2) then return M.references.format_references(term.parsed_ref) end return "" end -- Build a text part for a single term local function build_term_part(term, current_lang, depth) local text = "" local new_lang = current_lang local lang_changed = term.lang:getCanonicalName() ~= current_lang:getCanonicalName() -- Use centralized format_term (handles suppress_term, unknown_term, and regular terms) local term_text = format_term_func(term) if lang_changed then new_lang = term.lang -- Fix Thai translation need of having ภาษา in front local wp_target = term.lang:getWikipediaArticle() local lang_link = "[[w:" .. wp_target .. "|ภาษา" .. term.lang:getCanonicalName() .. "]]" if term_text then text = lang_link .. " " .. term_text else -- suppress_term with language change: show only language text = lang_link end else text = term_text or "" end return { type = "term", text = text, refs = get_term_refs(term, new_lang, depth), lang = new_lang, is_uncertain = term.is_uncertain or false, } end -- Build text parts for a container local function build_container_part(container, node, depth, allow_continuation, fallback_to_bluelink) local keyword_info = container.keyword_info local keyword_modifiers = container.keyword_modifiers or {} local terms = container.terms or {} if not keyword_info or keyword_info.invisible or #terms == 0 then return nil end local is_group = keyword_info.is_group local keyword_uncertain = keyword_modifiers.unc or false -- Determine text and phrase (allowing for overrides) local intro_text = keyword_info.text local phrase = keyword_info.phrase if keyword_modifiers.text then -- User-provided override: assumed to be lowercase phrase = keyword_modifiers.text -- Auto-capitalize for intro text (e.g., "derived from" -> "Derived from") intro_text = mw.ustring.upper(phrase:sub(1, 1)) .. phrase:sub(2) end -- Get keyword references local keyword_refs = "" if keyword_modifiers.ref then local parsed_keyword_refs = M.references.parse_references(keyword_modifiers.ref) if parsed_keyword_refs and parsed_keyword_refs ~= "" then keyword_refs = M.references.format_references(parsed_keyword_refs) end end -- Build term parts local term_parts = {} local current_lang = node.lang for _, term in ipairs(terms) do local term_part = build_term_part(term, current_lang, depth) if term_part.text ~= "" then table.insert(term_parts, term_part) current_lang = term_part.lang end end -- Check uncertainty distribution local uncertain_count = 0 for _, term_part in ipairs(term_parts) do if term_part.is_uncertain then uncertain_count = uncertain_count + 1 end end -- If keyword itself is uncertain, treat all terms as uncertain local all_uncertain = keyword_uncertain or (uncertain_count == #term_parts and #term_parts > 0) local has_mixed_uncertainty = not keyword_uncertain and uncertain_count > 0 and uncertain_count < #term_parts -- Check if there are more steps (only if continuation is allowed) local has_more_steps = false local next_node = nil local first_term = terms[1] -- Check if we should stop at this language local reached_stop_lang = false if stop_at_lang then for _, term in ipairs(terms) do if term.lang and term.lang:getCode() == stop_at_lang then reached_stop_lang = true break end end elseif stop_at_lang_or_bluelink then -- Check if we should stop at this language, or at the first bluelink if it's a redlink for _, term in ipairs(terms) do if term.lang and term.lang:getCode() == stop_at_lang_or_bluelink then if first_term.status == M.data.STATUS.OK then reached_stop_lang = true else fallback_to_bluelink = true end break end end if fallback_to_bluelink and first_term.status == M.data.STATUS.OK then reached_stop_lang = true end end if allow_continuation and not is_group and #terms == 1 and not reached_stop_lang then local first_term_children = first_term.children if first_term_children and #first_term_children > 0 and (not max_depth or depth < max_depth) then local next_container = first_term_children[1] local next_keyword_info = next_container and next_container.keyword_info if not (next_keyword_info and next_keyword_info.invisible) then if stop_at_blue_link then if first_term.status ~= M.data.STATUS.OK then has_more_steps = true next_node = first_term end else has_more_steps = true next_node = first_term end end end end return { type = "container", intro_text = intro_text, phrase = phrase, is_uncertain = all_uncertain, has_mixed_uncertainty = has_mixed_uncertainty, term_parts = term_parts, is_group = is_group, has_more_steps = has_more_steps, next_node = next_node, new_sentence = keyword_info.new_sentence or false, separate_clause = keyword_info.separate_clause or false, conj = keyword_modifiers.conj, -- custom conjunction: "and", "or", "and/or", etc. lit = keyword_modifiers.lit, keyword_refs = keyword_refs, fallback_to_bluelink = fallback_to_bluelink, } end -- Build the full tree of text parts local function build_text_tree(node, depth, allow_continuation, fallback_to_bluelink) local containers = node.children if not containers or #containers == 0 then return nil end local container_parts = {} -- Count only visible containers local visible_container_count = 0 for _, container in ipairs(containers) do local keyword_info = container.keyword_info if not (keyword_info and keyword_info.invisible) then visible_container_count = visible_container_count + 1 end end -- If there are multiple visible containers at this level, don't allow continuation for any local has_multiple_containers = visible_container_count > 1 local should_allow_continuation = allow_continuation and not has_multiple_containers for _, container in ipairs(containers) do local part = build_container_part(container, node, depth, should_allow_continuation, fallback_to_bluelink) if part then -- Recursively build children if there are more steps if part.has_more_steps and part.next_node then part.continuation = build_text_tree(part.next_node, depth + 1, true, part.fallback_to_bluelink) end table.insert(container_parts, part) end end if #container_parts == 0 then return nil end return { type = "tree", container_parts = container_parts, depth = depth, } end -- Check if tree has mixed joining types local function check_complexity(tree) if not tree then return nil end local parts = tree.container_parts if #parts <= 1 then -- Single container if parts[1] and parts[1].continuation then return check_complexity(parts[1].continuation) end return nil end -- Multiple containers local has_or_join = false local has_new_sentence = false local has_separate_clause = false for i = 2, #parts do local part = parts[i] -- Ignore etydate parts for complexity checks if part.type ~= "etydate" then if part.new_sentence then has_new_sentence = true elseif part.separate_clause then has_separate_clause = true else has_or_join = true end end end local join_type_count = 0 if has_or_join then join_type_count = join_type_count + 1 end if has_new_sentence then join_type_count = join_type_count + 1 end if has_separate_clause then join_type_count = join_type_count + 1 end if join_type_count > 1 then error( "Cannot generate etymology text: mixed joining styles (e.g., alternatives joined with 'or' cannot be combined with calques or influences in the same list).") end return nil end -- Analyze tree and assign punctuation local function analyze_punctuation(tree, is_toplevel) if not tree then return end local parts = tree.container_parts local num_parts = #parts for i, part in ipairs(parts) do local is_first = (i == 1) local is_last = (i == num_parts) local next_part = parts[i + 1] -- Analyze term punctuation within container -- Terms use Oxford comma style: "A, B, or C" -- Custom conjunction can be specified via conj modifier (e.g., "and/or", "and") local num_terms = #part.term_parts local term_conj = part.conj or "or" -- default to "or" for j, term_part in ipairs(part.term_parts) do local is_last_term = (j == num_terms) if part.is_group then -- Group: terms joined with " + " term_part.joiner = is_last_term and "" or " + " elseif num_terms > 1 then -- Multiple terms not in a group: Oxford comma style if is_last_term then term_part.joiner = "" elseif j == num_terms - 1 then -- Second to last term if num_terms == 2 then term_part.joiner = " " .. term_conj .. " " else term_part.joiner = ", " .. term_conj .. " " end else term_part.joiner = ", " end else -- Single term term_part.joiner = "" end end -- Determine container punctuation based on what comes next if part.continuation then -- Has continuation part.punctuation = "," -- Recursively analyze continuation analyze_punctuation(part.continuation, false) elseif is_last then -- Last container part.punctuation = (is_toplevel and nodot) and "" or "." elseif next_part and next_part.new_sentence then -- Next container starts a new sentence part.punctuation = "." elseif next_part and next_part.separate_clause then -- Next container is a separate clause part.punctuation = "," else -- Not last, next is joined with "or" -- Containers use repeated "or" style: "A, or B, or C" part.punctuation = "," end -- Determine joiner to next part -- Containers use repeated "or" style: ", or" between each -- Custom conjunction can be specified via conj modifier local container_conj = part.conj or "or" -- default to "or" if not is_last then if next_part and next_part.new_sentence then -- New sentence part.joiner = " " elseif next_part and next_part.separate_clause then -- Separate clause part.joiner = " " else -- Same sentence: use custom conjunction or default "or" part.joiner = " " .. container_conj .. " " end else part.joiner = "" end -- Determine intro formatting -- Capitalize if first at top level, OR if this container starts a new sentence if (is_first and is_toplevel) or part.new_sentence then part.intro_capitalized = true part.use_full_intro = true else part.intro_capitalized = false part.use_full_intro = false end end end -- Assemble text from analyzed tree local function assemble_text(tree) if not tree then return "" end local result = "" for i, part in ipairs(tree.container_parts) do if part.type == "etydate" then result = result .. part.etydate_text if part.punctuation and part.punctuation ~= "" then result = result .. part.punctuation end if part.etydate_refs and part.etydate_refs ~= "" then result = result .. M.references.format_references(part.etydate_refs) end if part.joiner and part.joiner ~= "" then result = result .. part.joiner end else -- Build intro local intro if part.use_full_intro then if part.is_uncertain then intro = "เป็นไปได้ว่า" .. part.phrase else intro = part.intro_text end else if part.is_uncertain then intro = "เป็นไปได้ว่า" .. part.phrase else intro = part.phrase end end result = result .. intro -- Build terms if #part.term_parts > 0 then -- Dealing with random space in Thai, each Thai char is 3 if intro:sub(-3) == "ก" then result = result .. "" else result = result .. " " end for j, term_part in ipairs(part.term_parts) do -- Add "possibly" prefix for uncertain terms when there's mixed uncertainty if part.has_mixed_uncertainty and term_part.is_uncertain then result = result .. "เป็นไปได้ว่า" end result = result .. term_part.text -- Add joiner between terms if term_part.joiner ~= "" then -- Check if joiner contains comma (punctuation) local comma_pos = term_part.joiner:find(",") if comma_pos then -- Add up to and including comma result = result .. term_part.joiner:sub(1, comma_pos) -- Add refs after comma if term_part.refs ~= "" then result = result .. term_part.refs end -- Add rest of joiner result = result .. term_part.joiner:sub(comma_pos + 1) else -- No comma, add refs before joiner if term_part.refs ~= "" then result = result .. term_part.refs end result = result .. term_part.joiner end end end -- For the last term, add punctuation then refs local last_term = part.term_parts[#part.term_parts] if last_term and last_term.joiner == "" then if part.punctuation ~= "" then -- If we have literal text, punctuation goes AFTER it if part.lit then -- Add refs first (attached to term) if last_term.refs ~= "" then result = result .. last_term.refs end -- Add keyword refs if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end -- Add literal text result = result .. ", literally “" .. part.lit .. "”" -- Add punctuation result = result .. part.punctuation else -- Normal behavior: punctuation then refs result = result .. part.punctuation if last_term.refs ~= "" then result = result .. last_term.refs end -- Add keyword refs after term refs if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end end else -- No punctuation if last_term.refs ~= "" then result = result .. last_term.refs end -- Add keyword refs if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end -- Add literal text if present (even without punctuation) if part.lit then result = result .. ", literally “" .. part.lit .. "”" end end end else -- No terms, just add punctuation and keyword refs if part.punctuation ~= "" then result = result .. part.punctuation end -- Add keyword refs even when there are no terms if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end end -- Add continuation if part.continuation then result = result .. " " .. assemble_text(part.continuation) end -- Add joiner to next container if part.joiner ~= "" then result = result .. part.joiner end end end return result end local text_tree = build_text_tree(data_tree, 1, true, false) if not text_tree then return "" end -- Add etydate container if data_tree.etydate and data_tree.etydate ~= "" then table.insert(text_tree.container_parts, { type = "etydate", etydate_text = data_tree.etydate, etydate_refs = data_tree.etydate_refs, term_parts = {}, new_sentence = true, }) end check_complexity(text_tree) analyze_punctuation(text_tree, true) return assemble_text(text_tree) end return export oxbdmlb015v1nwmumwy454cc5wn7x59 มอดูล:etymon/tree 828 2297438 5754449 5727296 2026-08-06T04:49:42Z Octahedron80 267 5754449 Scribunto text/plain local export = {} local html_create = mw.html.create local max = math.max local function create_vertical_connector() return html_create('span'):addClass('etytree-connector-vertical') end local function create_abbr(text, title, glossary) local abbr = html_create('abbr') :attr('title', title) :wikitext(text) if glossary then abbr = '[[ภาคผนวก:อภิธานศัพท์#' .. glossary .. '|' .. tostring(abbr) .. ']]' end return html_create('span'):addClass('etytree-label'):node(abbr) end local function create_uncertainty_marker() return html_create('abbr') :addClass('etytree-unc') :attr('title', 'uncertain') :wikitext('?') end local function create_label_container() return html_create('span'):addClass('etytree-label-container') end local function invisible_in_tree(inv) return inv == "all" or inv == true or inv == "tree" end local function render_label(term_block, keyword_info, keyword_modifiers, is_uncertain, is_group_child, term_labels) -- Skip label when invisible in tree local has_label = keyword_info and keyword_info.abbrev and not is_group_child and not invisible_in_tree(keyword_info.invisible) -- For group children, keyword uncertainty is shown on the group label, not on individual terms local keyword_uncertain = keyword_modifiers and keyword_modifiers.unc and not is_group_child local show_term_uncertainty = is_uncertain -- Check if we have term-specific labels local has_term_labels = term_labels and #term_labels > 0 if not has_label and not show_term_uncertainty and not keyword_uncertain and not has_term_labels then return end local label_span = create_label_container() if has_label then local glossary_title = keyword_info.glossary and keyword_info.glossary:gsub("_", " ") or keyword_info.abbrev label_span:node(create_abbr( keyword_info.abbrev, glossary_title, keyword_info.glossary )) -- Show uncertainty marker if term or keyword is uncertain if show_term_uncertainty or keyword_uncertain then label_span:node(create_uncertainty_marker()) end else -- No label, but term or keyword is uncertain if show_term_uncertainty or keyword_uncertain then label_span:node(create_uncertainty_marker()) end end -- Add term-specific labels if has_term_labels then for _, label_info in ipairs(term_labels) do label_span:node(create_abbr(label_info.abbrev, label_info.title, label_info.glossary)) end end term_block:node(label_span) end local function render_term_block(node_data, format_term_func, is_toplevel) local link_content = html_create() link_content :tag('span') :addClass('etyl') :wikitext(node_data.lang:getCanonicalName()) :done() local term_text = format_term_func(node_data, is_toplevel) if term_text then link_content :wikitext(' ') :tag('span') :addClass('etytree-term') :wikitext(term_text) :done() end local block = html_create('div'):addClass('etytree-block'):node(link_content) -- Add duplicate styling if this is a duplicate node if node_data.is_duplicate then block:addClass('etytree-duplicate') end return block end local function create_dotted_connector() return html_create('span'):addClass('etytree-connector-dotted') end -- Create an L-shaped connector for nodes with hidden ancestry (duplicate or no_child_categories) local function create_duplicate_connector() local container = html_create('div'):addClass('etytree-duplicate-connector') local inner_wrapper = container:tag('div') inner_wrapper:tag('span'):addClass('etytree-dup-right') inner_wrapper:tag('span'):addClass('etytree-dup-horiz') inner_wrapper:tag('span'):addClass('etytree-dup-left') inner_wrapper:tag('span'):addClass('etytree-dup-arrow'):wikitext('▲') return container end local function render_group_label(connecting_line, keyword_info, keyword_modifiers) local has_abbrev = keyword_info and keyword_info.abbrev local keyword_uncertain = keyword_modifiers and keyword_modifiers.unc -- Nothing to show if no abbrev and no uncertainty if not has_abbrev and not keyword_uncertain then return end local label_span = connecting_line:tag('span'):addClass('etytree-group-label') if has_abbrev then local glossary_title = keyword_info.glossary and keyword_info.glossary:gsub("_", " ") or keyword_info.abbrev label_span:node(create_abbr(keyword_info.abbrev, glossary_title, nil)) end -- Add uncertainty marker if keyword has <unc> modifier if keyword_uncertain then label_span:node(create_uncertainty_marker()) end end local function add_branch_connector(column, index, total) if index == 1 then column:tag('span'):addClass('etytree-branch-left') elseif index == total then column:tag('span'):addClass('etytree-branch-right') else column:tag('span'):addClass('etytree-connector-vertical-short') column:tag('span'):addClass('etytree-branch-mid') end end function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local format_term_func = opts.format_term_func -- Forward declaration local render_term -- Render a container (keyword + its terms) local function render_container(container, is_toplevel) local keyword_info = container.keyword_info local keyword_modifiers = container.keyword_modifiers or {} local is_group = keyword_info and keyword_info.is_group local terms = container.terms or {} -- Skip container entirely only when invisible = "all" (or true) if keyword_info and invisible_in_tree(keyword_info.invisible) then return nil, 0, 0 end if #terms == 0 then return nil, 0, 0 end -- For no_child_categories keywords (calque, semantic loan, etc.), don't render term's children local skip_child_rendering = keyword_info and keyword_info.no_child_categories -- Render each term in the container local rendered_terms = {} local container_height = 0 local container_width = 0 for _, term in ipairs(terms) do -- Collect term-specific labels local term_labels = {} if term.bor then table.insert(term_labels, { abbrev = "bor.", title = "borrowed", glossary = "loanword" }) end if term.slbor then table.insert(term_labels, { abbrev = "slbor.", title = "semi-learned borrowing", glossary = "semi-learned_borrowing" }) end if term.lbor then table.insert(term_labels, { abbrev = "lbor.", title = "learned borrowing", glossary = "learned_borrowing" }) end local term_tree, term_height, term_width = render_term(term, keyword_info, keyword_modifiers, is_group, false, skip_child_rendering, term_labels) table.insert(rendered_terms, { tree = term_tree, height = term_height, width = term_width, is_uncertain = term.is_uncertain, }) container_height = max(container_height, term_height) container_width = container_width + term_width end local rendered_html local has_connector = false if #rendered_terms == 1 then -- Single term: just return it directly rendered_html = rendered_terms[1].tree container_height = rendered_terms[1].height container_width = rendered_terms[1].width else -- Multiple terms: group them together local subtree_container = html_create('div'):addClass('etytree-branch-group') for i, term_data in ipairs(rendered_terms) do local column = html_create('div'):addClass('etytree-branch') column:node(term_data.tree) add_branch_connector(column, i, #rendered_terms) subtree_container:node(column) end local connecting_line = create_vertical_connector() -- Add group label for group keywords if is_group and not invisible_in_tree(keyword_info.invisible) then render_group_label(connecting_line, keyword_info, keyword_modifiers) end rendered_html = html_create() :node(subtree_container) :node(connecting_line) has_connector = true end return rendered_html, container_height, container_width, has_connector end -- Render a term node render_term = function(term_node, keyword_info, keyword_modifiers, is_group_child, is_toplevel_term, skip_child_rendering, term_labels) local tree_width, tree_height = 0, 0 local subtrees = {} -- Process term's children (which are containers) local has_hidden_children = false if not term_node.is_duplicate and not skip_child_rendering then for _, container in ipairs(term_node.children or {}) do local subtree, sub_height, sub_width, subtree_has_connector = render_container(container, is_toplevel_term) if subtree then table.insert(subtrees, { tree = subtree, height = sub_height, width = sub_width, has_connector = subtree_has_connector, }) tree_height = max(tree_height, sub_height) tree_width = tree_width + sub_width end end elseif skip_child_rendering then -- Check if there are any visible children -- When stop_recursion is true, children aren't parsed, but has_visible_children flag is set if term_node.has_visible_children then has_hidden_children = true elseif term_node.children and #term_node.children > 0 then -- Fallback: check parsed children for visibility for _, container in ipairs(term_node.children) do local child_keyword_info = container.keyword_info if not (child_keyword_info and (child_keyword_info.invisible == "all" or child_keyword_info.invisible == true)) then has_hidden_children = true break end end end end local is_toplevel_node = (keyword_info == nil) local term_block = render_term_block(term_node, format_term_func, is_toplevel_node) render_label(term_block, keyword_info, keyword_modifiers, term_node.is_uncertain, is_group_child, term_labels or {}) local term_html = html_create() if #subtrees == 0 then local show_connector = (term_node.is_duplicate and term_node.original_has_children) or has_hidden_children if show_connector then term_html:node(create_duplicate_connector()) end term_html:node(term_block) tree_width = tree_width + 1 elseif #subtrees == 1 then term_html:node(subtrees[1].tree) if not subtrees[1].has_connector then term_html:node(create_vertical_connector()) end term_html:node(term_block) else -- Multiple containers: need to merge them local subtree_container = html_create('div'):addClass('etytree-branch-group') for i, subtree_data in ipairs(subtrees) do local column = html_create('div'):addClass('etytree-branch') column:node(subtree_data.tree) add_branch_connector(column, i, #subtrees) subtree_container:node(column) end local connecting_line = create_vertical_connector() term_html :node(subtree_container) :node(connecting_line) :node(term_block) end return term_html, tree_height + 1, tree_width end local final_tree, final_height, final_width = render_term(data_tree, nil, nil, false, true) local container = html_create('div') :addClass('etytree-body') :node(final_tree) return tostring(html_create('div') :addClass('etytree NavFrame') :attr('data-etytree-height', final_height) :attr('data-etytree-width', final_width) :tag('div') :addClass('NavHead') :tag('div') :wikitext('แผนผังรากศัพท์') :done() :done() :tag('div') :addClass('NavContent') :node(container) :done()) end return export 1rbn6nawnyyd5xc7eb4zctv388zc9wh มอดูล:etymon/categories 828 2297439 5754445 5729434 2026-08-06T04:42:29Z Octahedron80 267 5754445 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { etymology = "Module:etymology", affix = "Module:affix", etymology_specialized = "Module:etymology/specialized", utilities = "Module:utilities", roots = "Module:roots", }, loadData = { data = "Module:etymon/data", }, }) -- Evaluate whether a keyword is transitive for a given term local function is_transitive(transitive_mode, page_lang, term_lang) if transitive_mode == M.data.TRANSITIVE.ALWAYS then return true elseif transitive_mode == M.data.TRANSITIVE.NEVER then return false elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG then return page_lang:getCode() ~= term_lang:getCode() elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then return page_lang:getCode() ~= term_lang:getCode() end error("Unknown transitive mode: " .. tostring(transitive_mode)) end -- Get keyword config with language-specific overrides local function get_keyword_config(keyword, lang_exc) local base_config = M.data.keywords[keyword] if not base_config then return nil -- Invalid keyword end local overrides = lang_exc and lang_exc.keyword_overrides and lang_exc.keyword_overrides[keyword] if not overrides then return base_config end -- Merge overrides into base config local merged = {} for k, v in pairs(base_config) do merged[k] = v end for k, v in pairs(overrides) do merged[k] = v end return merged end function export.get_cat_name(source) local _, cat_name = M.etymology.get_display_and_cat_name(source, true) return cat_name end -- Normalize affix type aliases local aftype_aliases = { ["pre"] = "อุปสรรค", ["suf"] = "ปัจจัย", ["in"] = "อาคม", ["inter"] = "หน่วยคำเติมเชื่อม", ["circum"] = "หน่วยคำเติมคร่อม", ["naf"] = "ไม่ใช่หน่วยคำเติม", ["root"] = "ไม่ใช่หน่วยคำเติม", ["prefix"] = "อุปสรรค", ["suffix"] = "ปัจจัย", ["infix"] = "อาคม", ["interfix"] = "หน่วยคำเติมเชื่อม", ["circumfix"] = "หน่วยคำเติมคร่อม", ["non-affix"] = "ไม่ใช่หน่วยคำเติม", ["ราก"] = "ไม่ใช่หน่วยคำเติม", } local function add_category(categories, cat_name, sort_key, sort_base) if categories[cat_name] == nil then categories[cat_name] = { sort_key = sort_key, sort_base = sort_base, } return end local existing = categories[cat_name] if existing.sort_key == nil and sort_key ~= nil then existing.sort_key = sort_key end if existing.sort_base == nil and sort_base ~= nil then existing.sort_base = sort_base end end -- Collect affix categories from top-level group containers local function collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) local parts = {} local part_index = 1 for _, container in ipairs(node.children or {}) do local config = container.keyword_info if config and config.affix_categories then for _, term in ipairs(container.terms or {}) do if not term.unknown_term then local part_data = { term = term.title, tr = term.tr, ts = term.ts, alt = term.alt, itemno = part_index, orig_index = part_index } -- Determine affix type: explicit aftype > pos=root > auto-detect local aftype = term.aftype if aftype then aftype = aftype_aliases[aftype] or aftype part_data.type = aftype elseif term.args and term.args.pos and (term.args.pos == "root" or term.args.pos == "ราก") then part_data.type = "ไม่ใช่หน่วยคำเติม" end if term.lang:getCode() ~= page_lang:getCode() then part_data.lang = term.lang end local target_ids = available_etymon_ids[term.target_key] local has_multiple_ids = target_ids and #target_ids > 1 local id_exists_in_disambiguation = false local matched_id = nil -- Count available senseids for the target page local senseid_count = 0 local target_prefix = term.target_key .. ":" if senseid_parent_etymon then for key, _ in pairs(senseid_parent_etymon) do if key:sub(1, #target_prefix) == target_prefix then senseid_count = senseid_count + 1 end end end local has_multiple_senseids = senseid_count > 1 if term.id then -- Check if user provided a valid senseid local senseid_key = term.target_key .. ":" .. term.id if senseid_parent_etymon and senseid_parent_etymon[senseid_key] then if has_multiple_senseids then -- Ambiguous senseid: use senseid matched_id = term.id id_exists_in_disambiguation = true elseif has_multiple_ids then -- Unique senseid but ambiguous etymon: use etymon ID matched_id = term.etymon_id or term.id id_exists_in_disambiguation = true end else -- Check if user provided a valid etymon ID if has_multiple_ids and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.id then -- Ambiguous etymon: use etymon ID id_exists_in_disambiguation = true matched_id = term.id break end end end -- Fallback: check resolved etymon_id (e.g. from previous steps) if not id_exists_in_disambiguation and has_multiple_ids and term.etymon_id and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.etymon_id then id_exists_in_disambiguation = true matched_id = term.etymon_id break end end end end end -- Use the matched ID if found if term.override or id_exists_in_disambiguation then part_data.id = matched_id or term.id end table.insert(parts, part_data) part_index = part_index + 1 end end end end if #parts == 0 then return {} end local affix_data = { lang = page_lang, parts = parts, pos = "ศัพท์", sort_key = nil, } if #parts == 1 then affix_data.allow_no_affixes_or_compounds = true end local affix_categories = M.affix.get_affix_categories_only(affix_data) local result = {} for _, cat in ipairs(affix_categories) do if type(cat) == "table" then table.insert(result, { cat = cat.cat, sort_key = cat.sort_key, sort_base = cat.sort_base }) else table.insert(result, { cat = cat }) end end return result end local function lang_is_source(page_lang, source) return page_lang:getCode() == source:getCode() or page_lang:hasParent(source) end local function is_borrowing_keyword_config(config) return config and (config.borrowing_type or config.specialized_borrowing) end local function add_reborrow_category(categories, page_lang) local lang_name = page_lang:getFullName() add_category(categories, lang_name .. " terms borrowed back into " .. lang_name) end local function borrow_returns_to_page_lang(page_lang, source, in_foreign_branch) if not in_foreign_branch then return false end if source:getFullCode() == page_lang:getFullCode() then return true end return page_lang:hasParent(source) end local function node_borrows_from_lang(node, page_lang, visited, in_foreign_branch) visited = visited or {} if not node or visited[node] then return false end visited[node] = true if node.is_duplicate then if node.duplicate_of then return node_borrows_from_lang(node.duplicate_of, page_lang, visited, in_foreign_branch) end return false end local node_is_foreign = in_foreign_branch or (node.lang and node.lang:getFullCode() ~= page_lang:getFullCode()) for _, container in ipairs(node.children or {}) do if is_borrowing_keyword_config(container.keyword_info) then for _, child_term in ipairs(container.terms or {}) do if borrow_returns_to_page_lang(page_lang, child_term.lang, node_is_foreign) then return true end end end for _, child_term in ipairs(container.terms or {}) do if child_term.status == M.data.STATUS.OK or child_term.status == M.data.STATUS.INLINE then if node_borrows_from_lang(child_term, page_lang, visited, node_is_foreign) then return true end end end end return false end local function should_add_reborrow_category(page_lang, term) if page_lang:getCode() == term.lang:getCode() then return false end if term.status ~= M.data.STATUS.OK and term.status ~= M.data.STATUS.INLINE then return false end return node_borrows_from_lang(term, page_lang, {}, false) end -- Add borrowing-related categories (top-level only) local function collect_borrowing_categories(categories, page_lang, term, config, check_reborrow_path) if check_reborrow_path and should_add_reborrow_category(page_lang, term) then add_reborrow_category(categories, page_lang) end if config.borrowing_type == "ยืมมา" then local temp_categories = {} M.etymology.insert_borrowed_cat(temp_categories, page_lang, term.lang) for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end if config.specialized_borrowing and not lang_is_source(page_lang, term.lang) then local result = M.etymology_specialized.specialized_borrowing { bortype = config.specialized_borrowing, lang = page_lang, sources = { term.lang }, terms = { { lang = term.lang, term = "-" } }, notext = true, nocat = false, } for cat_name in result:gmatch("%[%[Category:([^%]]+)%]%]") do add_category(categories, cat_name) end end end -- Add source-based derivation categories (top-level only) local function collect_source_derivation_categories(categories, page_lang, term, config) if not config.source_category_type then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, borrowing_type = config.source_category_type, nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end -- Add source language categories local function collect_source_categories(categories, page_lang, term, chain, get_norm_lang_func) if page_lang:getCode() == get_norm_lang_func(term.lang):getCode() then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end if chain.inherited then temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, borrowing_type = "สืบทอด", nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end end -- Add root/word categories local function collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, chain, get_norm_lang_func, lang_exc, keyword) local pos_types = { root = "ราก", word = "คำ" } -- Determine pos: from term's postype, keyword's pos_override, or args.pos local pos local config = get_keyword_config(keyword, lang_exc) if term.postype then -- Term-level postype modifier takes highest priority pos = term.postype elseif config and config.pos_override then pos = config.pos_override elseif type(term.args) == "table" and term.args.pos then pos = term.args.pos end local pos_type = pos_types[pos] if not pos_type or term.unknown_term then return end -- Skip root/word categories for descendants of affix groups -- if pos_type then -- return -- end local same_language = get_norm_lang_func(page_lang):getFullCode() == get_norm_lang_func(term.lang):getFullCode() -- Skip self-references if same_language and root_title == term.title then return end local entry_name if pos_type == "root" or pos_type == "ราก" then entry_name = term.title M.roots.assert_root(term.lang, entry_name) else entry_name = term.lang:makeEntryName(term.title) end local lang_name = page_lang:getCanonicalName() local cat_name if chain.passed_through then local etymon_lang_name = export.get_cat_name(term.lang) cat_name = lang_name .. " terms derived from the " .. etymon_lang_name .. " " .. pos_type .. " " .. entry_name else cat_name = lang_name .. " terms belonging to the " .. pos_type .. " " .. entry_name end -- Add ID disambiguation if needed (for roots/words: use etymon_id if resolved via senseid, otherwise use id) local target_ids = available_etymon_ids[term.target_key] local effective_id = term.etymon_id or term.id -- etymon_id if senseid, otherwise id is already an etymon id if target_ids and effective_id then local same_pos_count = 0 for _, id_data in ipairs(target_ids) do if type(id_data) == "table" and id_data.pos == pos then same_pos_count = same_pos_count + 1 end end if same_pos_count > 1 then cat_name = cat_name .. " (" .. effective_id .. ")" end end add_category(categories, cat_name) end -- Compute chain state for a term based on parent chain and keyword config -- Hyphen patterns for affix detection (regular hyphen + script-specific) local AFFIX_HYPHEN_PATTERN = "[%-%־ـ᠊]" -- regular hyphen, Hebrew maqqef, Arabic tatweel, Mongolian hyphen -- Check if a term is an actual affix (not a non-affix member of an affix group) local function is_actual_affix(term) -- Check explicit aftype modifier if term.aftype then local normalized = aftype_aliases[term.aftype] or term.aftype return normalized ~= "ไม่ใช่หน่วยคำเติม" end -- Check if pos=root (treated as non-affix) if term.args and term.args.pos and (term.args.pos == "root" or term.args.pos == "ราก") then return false end -- Auto-detect by hyphen: prefix ends with -, suffix starts with -, etc. if term.title then local title = term.title -- Strip leading * for reconstructed terms before checking hyphens title = title:gsub("^%*", "") -- Check for hyphens at start or end (handles script-specific hyphens too) if title:match("^" .. AFFIX_HYPHEN_PATTERN) or title:match(AFFIX_HYPHEN_PATTERN .. "$") then return true end end -- Default: not an affix return false end local function compute_category_chain(parent_chain, config, page_lang, term_lang, get_norm_lang_func, parent_term_lang, term) -- Track if we're inside an actual affix (for suppressing root categories on descendants) -- Only set if the term is an actual affix (prefix, suffix, etc.), not a non-affix member local inside_affix = parent_chain.inside_affix if config.affix_categories and term and is_actual_affix(term) then inside_affix = true end -- If no_child_categories is set, disable everything if config.no_child_categories then return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = false, source = false, pos = false, recurse = false, inside_affix = inside_affix, } end local term_is_transitive = is_transitive(config.transitive, page_lang, term_lang) local new_source = parent_chain.source and term_is_transitive -- For CROSS_LANG_NO_INTERNAL_SOURCE: track internal derivation language context -- Check if this term is internal relative to parent term's language (if parent_term_lang provided) -- or relative to page language (if no parent_term_lang) local internal_lang = parent_chain.internal_lang local is_internal_in_context = false if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then local check_lang = parent_term_lang or page_lang local term_lang_code = get_norm_lang_func(term_lang):getCode() local check_lang_code = get_norm_lang_func(check_lang):getCode() if internal_lang then -- Already in an internal derivation context: check if this term is also internal is_internal_in_context = term_lang_code == internal_lang else -- Check if this term is internal relative to parent term (or page if no parent) is_internal_in_context = term_lang_code == check_lang_code end end -- Source chain behavior for CROSS_LANG_NO_INTERNAL_SOURCE if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then if is_internal_in_context then -- Internal derivation new_source = false internal_lang = get_norm_lang_func(term_lang):getCode() else -- Cross-language new_source = parent_chain.source and term_is_transitive internal_lang = nil end end local new_pos = parent_chain.pos return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = parent_chain.inherited and config.inherited_chain, source = new_source, pos = new_pos, internal_lang = internal_lang, recurse = new_source or new_pos, inside_affix = inside_affix, } end function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local page_lang = opts.page_lang local available_etymon_ids = opts.available_etymon_ids local senseid_parent_etymon = opts.senseid_parent_etymon local get_norm_lang_func = opts.get_norm_lang_func local lang_exc = opts.lang_exc local categories = {} local seen = {} local lang_name = page_lang:getCanonicalName() local root_title = data_tree.title -- Collect the tree recursively local function collect(node, parent_chain, is_toplevel) -- Avoid processing same node twice if not node.unknown_term and node.title then local key = node.lang:getFullCode() .. ":" .. (node.title or "") .. ":" .. (node.id or "") if seen[key] then return end seen[key] = true end -- Collect affix categories at top level only if is_toplevel then local affix_cats = collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) for _, cat in ipairs(affix_cats) do add_category(categories, lang_name .. " " .. cat.cat, cat.sort_key, cat.sort_base) end if node.supplements then for _, supplement in ipairs(node.supplements) do local config = supplement.config if config and config.toplevel_category then add_category(categories, lang_name .. " " .. config.toplevel_category) end end end end -- Process each container for _, container in ipairs(node.children or {}) do local keyword = container.keyword local config = get_keyword_config(keyword, lang_exc) -- Skip invalid keywords if config then -- Process each term in the container for _, term in ipairs(container.terms or {}) do local term_chain = compute_category_chain(parent_chain, config, page_lang, term.lang, get_norm_lang_func, node.lang, term) local no_child_categories = config.no_child_categories == true local term_is_transitive = is_transitive(config.transitive, page_lang, term.lang) -- Top-level only processing if is_toplevel then -- Missing/ambiguous etymon tracking if not term.unknown_term and (term.status == M.data.STATUS.MISSING or term.status == M.data.STATUS.REDLINK) then add_category(categories, lang_name .. " entries referencing missing etymons") end if not term.unknown_term and term.status == M.data.STATUS.AMBIGUOUS then add_category(categories, lang_name .. " entries referencing ambiguous etymons") end if term.missing_descendants_header then add_category(categories, lang_name .. " entries referencing etymons without Descendants sections") end if term.missing_descendants_entry then add_category(categories, lang_name .. " entries referencing etymons without this term in Descendants sections") end -- Top-level category (e.g., "undefined derivations") if config.toplevel_category then add_category(categories, lang_name .. " " .. config.toplevel_category) end -- Borrowing categories (bor, lbor, slbor, ubor, obor) if config.borrowing_type or config.specialized_borrowing then collect_borrowing_categories(categories, page_lang, term, config, true) end -- Borrowing categories from <bor>, <lbor>, or <slbor> modifiers on affix-group terms local kw_config = M.data.keywords[keyword] if kw_config and kw_config.affix_categories then if term.bor then local bor_config = { borrowing_type = "ยืมมา" } collect_borrowing_categories(categories, page_lang, term, bor_config, true) elseif term.lbor then local bor_config = { specialized_borrowing = "learned" } collect_borrowing_categories(categories, page_lang, term, bor_config, true) elseif term.slbor then local bor_config = { specialized_borrowing = "semi-learned" } collect_borrowing_categories(categories, page_lang, term, bor_config, true) end end -- Source-based derivation categories (sl, calque, pcal) if config.source_category_type then collect_source_derivation_categories(categories, page_lang, term, config) end -- Skip all child categorisation if no_child_categories is set if not no_child_categories then -- Source categories only if transitive if term_is_transitive then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end -- Pos categories always (unless no_child_categories) collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end else -- Below top level, respect the parent chain if parent_chain.source then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end if parent_chain.pos then collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end end -- Recurse into term's children if needed and status allows if term_chain.recurse and (term.status == M.data.STATUS.OK or term.status == M.data.STATUS.INLINE) then collect(term, term_chain, false) end end end end end -- Initial chain state local initial_chain = { passed_through = false, inherited = true, source = true, pos = true, internal_lang = nil, recurse = true, inside_affix = false, } collect(data_tree, initial_chain, true) local cat_list = {} for cat_name, sort_data in pairs(categories) do if sort_data.sort_key ~= nil or sort_data.sort_base ~= nil then table.insert(cat_list, { name = cat_name, sort_key = sort_data.sort_key, sort_base = sort_data.sort_base, }) else table.insert(cat_list, cat_name) end end return cat_list end function export.build(opts) opts = opts or {} local categories = {} if not opts.suppress_categories and not opts.nocat then categories = export.render({ data_tree = opts.data_tree, page_lang = opts.page_lang, available_etymon_ids = opts.available_etymon_ids, senseid_parent_etymon = opts.senseid_parent_etymon, get_norm_lang_func = opts.get_norm_lang_func, lang_exc = opts.lang_exc, }) end local page_lang = opts.page_lang if not page_lang then return categories end local lang_name = page_lang:getCanonicalName() table.insert(categories, "Pages with etymon") table.insert(categories, lang_name .. " entries with etymon") if opts.tree then table.insert(categories, "Pages with etymology trees") table.insert(categories, lang_name .. " entries with etymology trees") end if opts.text then table.insert(categories, lang_name .. " entries with etymology texts") end if opts.exnihilo then table.insert(categories, lang_name .. " terms coined ex nihilo") end if opts.toplevel_has_inline_etymology then table.insert(categories, "Pages with inline etymon for redlinks") end if opts.toplevel_redundant_etymology then table.insert(categories, "Pages with redundant inline etymon") end if opts.toplevel_idless_etymon then table.insert(categories, "Pages using etymon with no ID") end if opts.has_mismatched_id then table.insert(categories, lang_name .. " entries referencing etymons with mismatched IDs") end if opts.linked_page_multiple_etymons_idless then table.insert(categories, lang_name .. " entries referencing pages with multiple etymons missing IDs") end if opts.linked_page_partial_etymology_sections then table.insert(categories, lang_name .. " entries referencing pages with etymology sections missing etymons") end if opts.text_stop_lang_missing then table.insert(categories, "Pages with etymology text stop language not in chain") table.insert(categories, lang_name .. " entries with etymology text stop language not in chain") end return categories end function export.format(entries, lang) if type(entries) ~= "table" or #entries == 0 then return "" end local parts = {} for _, category in ipairs(entries) do if type(category) == "table" and type(category.name) == "string" then table.insert(parts, M.utilities.format_categories({ category.name }, lang, category.sort_key, category.sort_base)) elseif type(category) == "string" then table.insert(parts, M.utilities.format_categories({ category }, lang)) end end return table.concat(parts) end return export bnw16uh5wa639vlomw2g813n3w8h727 5754446 5754445 2026-08-06T04:45:27Z Octahedron80 267 5754446 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { etymology = "Module:etymology", affix = "Module:affix", etymology_specialized = "Module:etymology/specialized", utilities = "Module:utilities", roots = "Module:roots", }, loadData = { data = "Module:etymon/data", }, }) -- Evaluate whether a keyword is transitive for a given term local function is_transitive(transitive_mode, page_lang, term_lang) if transitive_mode == M.data.TRANSITIVE.ALWAYS then return true elseif transitive_mode == M.data.TRANSITIVE.NEVER then return false elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG then return page_lang:getCode() ~= term_lang:getCode() elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then return page_lang:getCode() ~= term_lang:getCode() end error("Unknown transitive mode: " .. tostring(transitive_mode)) end -- Get keyword config with language-specific overrides local function get_keyword_config(keyword, lang_exc) local base_config = M.data.keywords[keyword] if not base_config then return nil -- Invalid keyword end local overrides = lang_exc and lang_exc.keyword_overrides and lang_exc.keyword_overrides[keyword] if not overrides then return base_config end -- Merge overrides into base config local merged = {} for k, v in pairs(base_config) do merged[k] = v end for k, v in pairs(overrides) do merged[k] = v end return merged end function export.get_cat_name(source) local _, cat_name = M.etymology.get_display_and_cat_name(source, true) return cat_name end -- Normalize affix type aliases local aftype_aliases = { ["pre"] = "อุปสรรค", ["suf"] = "ปัจจัย", ["in"] = "อาคม", ["inter"] = "หน่วยคำเติมเชื่อม", ["circum"] = "หน่วยคำเติมคร่อม", ["naf"] = "ไม่ใช่หน่วยคำเติม", ["root"] = "ไม่ใช่หน่วยคำเติม", ["prefix"] = "อุปสรรค", ["suffix"] = "ปัจจัย", ["infix"] = "อาคม", ["interfix"] = "หน่วยคำเติมเชื่อม", ["circumfix"] = "หน่วยคำเติมคร่อม", ["non-affix"] = "ไม่ใช่หน่วยคำเติม", ["ราก"] = "ไม่ใช่หน่วยคำเติม", } local function add_category(categories, cat_name, sort_key, sort_base) if categories[cat_name] == nil then categories[cat_name] = { sort_key = sort_key, sort_base = sort_base, } return end local existing = categories[cat_name] if existing.sort_key == nil and sort_key ~= nil then existing.sort_key = sort_key end if existing.sort_base == nil and sort_base ~= nil then existing.sort_base = sort_base end end -- Collect affix categories from top-level group containers local function collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) local parts = {} local part_index = 1 for _, container in ipairs(node.children or {}) do local config = container.keyword_info if config and config.affix_categories then for _, term in ipairs(container.terms or {}) do if not term.unknown_term then local part_data = { term = term.title, tr = term.tr, ts = term.ts, alt = term.alt, itemno = part_index, orig_index = part_index } -- Determine affix type: explicit aftype > pos=root > auto-detect local aftype = term.aftype if aftype then aftype = aftype_aliases[aftype] or aftype part_data.type = aftype elseif term.args and term.args.pos and (term.args.pos == "root" or term.args.pos == "ราก") then part_data.type = "ไม่ใช่หน่วยคำเติม" end if term.lang:getCode() ~= page_lang:getCode() then part_data.lang = term.lang end local target_ids = available_etymon_ids[term.target_key] local has_multiple_ids = target_ids and #target_ids > 1 local id_exists_in_disambiguation = false local matched_id = nil -- Count available senseids for the target page local senseid_count = 0 local target_prefix = term.target_key .. ":" if senseid_parent_etymon then for key, _ in pairs(senseid_parent_etymon) do if key:sub(1, #target_prefix) == target_prefix then senseid_count = senseid_count + 1 end end end local has_multiple_senseids = senseid_count > 1 if term.id then -- Check if user provided a valid senseid local senseid_key = term.target_key .. ":" .. term.id if senseid_parent_etymon and senseid_parent_etymon[senseid_key] then if has_multiple_senseids then -- Ambiguous senseid: use senseid matched_id = term.id id_exists_in_disambiguation = true elseif has_multiple_ids then -- Unique senseid but ambiguous etymon: use etymon ID matched_id = term.etymon_id or term.id id_exists_in_disambiguation = true end else -- Check if user provided a valid etymon ID if has_multiple_ids and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.id then -- Ambiguous etymon: use etymon ID id_exists_in_disambiguation = true matched_id = term.id break end end end -- Fallback: check resolved etymon_id (e.g. from previous steps) if not id_exists_in_disambiguation and has_multiple_ids and term.etymon_id and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.etymon_id then id_exists_in_disambiguation = true matched_id = term.etymon_id break end end end end end -- Use the matched ID if found if term.override or id_exists_in_disambiguation then part_data.id = matched_id or term.id end table.insert(parts, part_data) part_index = part_index + 1 end end end end if #parts == 0 then return {} end local affix_data = { lang = page_lang, parts = parts, pos = "ศัพท์", sort_key = nil, } if #parts == 1 then affix_data.allow_no_affixes_or_compounds = true end local affix_categories = M.affix.get_affix_categories_only(affix_data) local result = {} for _, cat in ipairs(affix_categories) do if type(cat) == "table" then table.insert(result, { cat = cat.cat, sort_key = cat.sort_key, sort_base = cat.sort_base }) else table.insert(result, { cat = cat }) end end return result end local function lang_is_source(page_lang, source) return page_lang:getCode() == source:getCode() or page_lang:hasParent(source) end local function is_borrowing_keyword_config(config) return config and (config.borrowing_type or config.specialized_borrowing) end local function add_reborrow_category(categories, page_lang) local lang_name = page_lang:getFullName() add_category(categories, lang_name .. " terms borrowed back into " .. lang_name) end local function borrow_returns_to_page_lang(page_lang, source, in_foreign_branch) if not in_foreign_branch then return false end if source:getFullCode() == page_lang:getFullCode() then return true end return page_lang:hasParent(source) end local function node_borrows_from_lang(node, page_lang, visited, in_foreign_branch) visited = visited or {} if not node or visited[node] then return false end visited[node] = true if node.is_duplicate then if node.duplicate_of then return node_borrows_from_lang(node.duplicate_of, page_lang, visited, in_foreign_branch) end return false end local node_is_foreign = in_foreign_branch or (node.lang and node.lang:getFullCode() ~= page_lang:getFullCode()) for _, container in ipairs(node.children or {}) do if is_borrowing_keyword_config(container.keyword_info) then for _, child_term in ipairs(container.terms or {}) do if borrow_returns_to_page_lang(page_lang, child_term.lang, node_is_foreign) then return true end end end for _, child_term in ipairs(container.terms or {}) do if child_term.status == M.data.STATUS.OK or child_term.status == M.data.STATUS.INLINE then if node_borrows_from_lang(child_term, page_lang, visited, node_is_foreign) then return true end end end end return false end local function should_add_reborrow_category(page_lang, term) if page_lang:getCode() == term.lang:getCode() then return false end if term.status ~= M.data.STATUS.OK and term.status ~= M.data.STATUS.INLINE then return false end return node_borrows_from_lang(term, page_lang, {}, false) end -- Add borrowing-related categories (top-level only) local function collect_borrowing_categories(categories, page_lang, term, config, check_reborrow_path) if check_reborrow_path and should_add_reborrow_category(page_lang, term) then add_reborrow_category(categories, page_lang) end if config.borrowing_type == "ยืมมา" and not lang_is_source(page_lang, term.lang) then local temp_categories = {} M.etymology.insert_borrowed_cat(temp_categories, page_lang, term.lang) for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end if config.specialized_borrowing and not lang_is_source(page_lang, term.lang) then local result = M.etymology_specialized.specialized_borrowing { bortype = config.specialized_borrowing, lang = page_lang, sources = { term.lang }, terms = { { lang = term.lang, term = "-" } }, notext = true, nocat = false, } for cat_name in result:gmatch("%[%[Category:([^%]]+)%]%]") do add_category(categories, cat_name) end end end -- Add source-based derivation categories (top-level only) local function collect_source_derivation_categories(categories, page_lang, term, config) if not config.source_category_type then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, borrowing_type = config.source_category_type, nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end -- Add source language categories local function collect_source_categories(categories, page_lang, term, chain, get_norm_lang_func) if page_lang:getCode() == get_norm_lang_func(term.lang):getCode() then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end if chain.inherited then temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, borrowing_type = "สืบทอด", nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end end -- Add root/word categories local function collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, chain, get_norm_lang_func, lang_exc, keyword) local pos_types = { root = "ราก", word = "คำ" } -- Determine pos: from term's postype, keyword's pos_override, or args.pos local pos local config = get_keyword_config(keyword, lang_exc) if term.postype then -- Term-level postype modifier takes highest priority pos = term.postype elseif config and config.pos_override then pos = config.pos_override elseif type(term.args) == "table" and term.args.pos then pos = term.args.pos end local pos_type = pos_types[pos] if not pos_type or term.unknown_term then return end -- Skip root/word categories for descendants of affix groups -- if pos_type then -- return -- end local same_language = get_norm_lang_func(page_lang):getFullCode() == get_norm_lang_func(term.lang):getFullCode() -- Skip self-references if same_language and root_title == term.title then return end local entry_name if pos_type == "root" or pos_type == "ราก" then entry_name = term.title M.roots.assert_root(term.lang, entry_name) else entry_name = term.lang:makeEntryName(term.title) end local lang_name = page_lang:getCanonicalName() local cat_name if chain.passed_through then local etymon_lang_name = export.get_cat_name(term.lang) cat_name = lang_name .. " terms derived from the " .. etymon_lang_name .. " " .. pos_type .. " " .. entry_name else cat_name = lang_name .. " terms belonging to the " .. pos_type .. " " .. entry_name end -- Add ID disambiguation if needed (for roots/words: use etymon_id if resolved via senseid, otherwise use id) local target_ids = available_etymon_ids[term.target_key] local effective_id = term.etymon_id or term.id -- etymon_id if senseid, otherwise id is already an etymon id if target_ids and effective_id then local same_pos_count = 0 for _, id_data in ipairs(target_ids) do if type(id_data) == "table" and id_data.pos == pos then same_pos_count = same_pos_count + 1 end end if same_pos_count > 1 then cat_name = cat_name .. " (" .. effective_id .. ")" end end add_category(categories, cat_name) end -- Compute chain state for a term based on parent chain and keyword config -- Hyphen patterns for affix detection (regular hyphen + script-specific) local AFFIX_HYPHEN_PATTERN = "[%-%־ـ᠊]" -- regular hyphen, Hebrew maqqef, Arabic tatweel, Mongolian hyphen -- Check if a term is an actual affix (not a non-affix member of an affix group) local function is_actual_affix(term) -- Check explicit aftype modifier if term.aftype then local normalized = aftype_aliases[term.aftype] or term.aftype return normalized ~= "ไม่ใช่หน่วยคำเติม" end -- Check if pos=root (treated as non-affix) if term.args and term.args.pos and (term.args.pos == "root" or term.args.pos == "ราก") then return false end -- Auto-detect by hyphen: prefix ends with -, suffix starts with -, etc. if term.title then local title = term.title -- Strip leading * for reconstructed terms before checking hyphens title = title:gsub("^%*", "") -- Check for hyphens at start or end (handles script-specific hyphens too) if title:match("^" .. AFFIX_HYPHEN_PATTERN) or title:match(AFFIX_HYPHEN_PATTERN .. "$") then return true end end -- Default: not an affix return false end local function compute_category_chain(parent_chain, config, page_lang, term_lang, get_norm_lang_func, parent_term_lang, term) -- Track if we're inside an actual affix (for suppressing root categories on descendants) -- Only set if the term is an actual affix (prefix, suffix, etc.), not a non-affix member local inside_affix = parent_chain.inside_affix if config.affix_categories and term and is_actual_affix(term) then inside_affix = true end -- If no_child_categories is set, disable everything if config.no_child_categories then return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = false, source = false, pos = false, recurse = false, inside_affix = inside_affix, } end local term_is_transitive = is_transitive(config.transitive, page_lang, term_lang) local new_source = parent_chain.source and term_is_transitive -- For CROSS_LANG_NO_INTERNAL_SOURCE: track internal derivation language context -- Check if this term is internal relative to parent term's language (if parent_term_lang provided) -- or relative to page language (if no parent_term_lang) local internal_lang = parent_chain.internal_lang local is_internal_in_context = false if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then local check_lang = parent_term_lang or page_lang local term_lang_code = get_norm_lang_func(term_lang):getCode() local check_lang_code = get_norm_lang_func(check_lang):getCode() if internal_lang then -- Already in an internal derivation context: check if this term is also internal is_internal_in_context = term_lang_code == internal_lang else -- Check if this term is internal relative to parent term (or page if no parent) is_internal_in_context = term_lang_code == check_lang_code end end -- Source chain behavior for CROSS_LANG_NO_INTERNAL_SOURCE if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then if is_internal_in_context then -- Internal derivation new_source = false internal_lang = get_norm_lang_func(term_lang):getCode() else -- Cross-language new_source = parent_chain.source and term_is_transitive internal_lang = nil end end local new_pos = parent_chain.pos return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = parent_chain.inherited and config.inherited_chain, source = new_source, pos = new_pos, internal_lang = internal_lang, recurse = new_source or new_pos, inside_affix = inside_affix, } end function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local page_lang = opts.page_lang local available_etymon_ids = opts.available_etymon_ids local senseid_parent_etymon = opts.senseid_parent_etymon local get_norm_lang_func = opts.get_norm_lang_func local lang_exc = opts.lang_exc local categories = {} local seen = {} local lang_name = page_lang:getCanonicalName() local root_title = data_tree.title -- Collect the tree recursively local function collect(node, parent_chain, is_toplevel) -- Avoid processing same node twice if not node.unknown_term and node.title then local key = node.lang:getFullCode() .. ":" .. (node.title or "") .. ":" .. (node.id or "") if seen[key] then return end seen[key] = true end -- Collect affix categories at top level only if is_toplevel then local affix_cats = collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) for _, cat in ipairs(affix_cats) do add_category(categories, lang_name .. " " .. cat.cat, cat.sort_key, cat.sort_base) end if node.supplements then for _, supplement in ipairs(node.supplements) do local config = supplement.config if config and config.toplevel_category then add_category(categories, lang_name .. " " .. config.toplevel_category) end end end end -- Process each container for _, container in ipairs(node.children or {}) do local keyword = container.keyword local config = get_keyword_config(keyword, lang_exc) -- Skip invalid keywords if config then -- Process each term in the container for _, term in ipairs(container.terms or {}) do local term_chain = compute_category_chain(parent_chain, config, page_lang, term.lang, get_norm_lang_func, node.lang, term) local no_child_categories = config.no_child_categories == true local term_is_transitive = is_transitive(config.transitive, page_lang, term.lang) -- Top-level only processing if is_toplevel then -- Missing/ambiguous etymon tracking if not term.unknown_term and (term.status == M.data.STATUS.MISSING or term.status == M.data.STATUS.REDLINK) then add_category(categories, lang_name .. " entries referencing missing etymons") end if not term.unknown_term and term.status == M.data.STATUS.AMBIGUOUS then add_category(categories, lang_name .. " entries referencing ambiguous etymons") end if term.missing_descendants_header then add_category(categories, lang_name .. " entries referencing etymons without Descendants sections") end if term.missing_descendants_entry then add_category(categories, lang_name .. " entries referencing etymons without this term in Descendants sections") end -- Top-level category (e.g., "undefined derivations") if config.toplevel_category then add_category(categories, lang_name .. " " .. config.toplevel_category) end -- Borrowing categories (bor, lbor, slbor, ubor, obor) if config.borrowing_type or config.specialized_borrowing then collect_borrowing_categories(categories, page_lang, term, config, true) end -- Borrowing categories from <bor>, <lbor>, or <slbor> modifiers on affix-group terms local kw_config = M.data.keywords[keyword] if kw_config and kw_config.affix_categories then if term.bor then local bor_config = { borrowing_type = "ยืมมา" } collect_borrowing_categories(categories, page_lang, term, bor_config, true) elseif term.lbor then local bor_config = { specialized_borrowing = "learned" } collect_borrowing_categories(categories, page_lang, term, bor_config, true) elseif term.slbor then local bor_config = { specialized_borrowing = "semi-learned" } collect_borrowing_categories(categories, page_lang, term, bor_config, true) end end -- Source-based derivation categories (sl, calque, pcal) if config.source_category_type then collect_source_derivation_categories(categories, page_lang, term, config) end -- Skip all child categorisation if no_child_categories is set if not no_child_categories then -- Source categories only if transitive if term_is_transitive then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end -- Pos categories always (unless no_child_categories) collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end else -- Below top level, respect the parent chain if parent_chain.source then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end if parent_chain.pos then collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end end -- Recurse into term's children if needed and status allows if term_chain.recurse and (term.status == M.data.STATUS.OK or term.status == M.data.STATUS.INLINE) then collect(term, term_chain, false) end end end end end -- Initial chain state local initial_chain = { passed_through = false, inherited = true, source = true, pos = true, internal_lang = nil, recurse = true, inside_affix = false, } collect(data_tree, initial_chain, true) local cat_list = {} for cat_name, sort_data in pairs(categories) do if sort_data.sort_key ~= nil or sort_data.sort_base ~= nil then table.insert(cat_list, { name = cat_name, sort_key = sort_data.sort_key, sort_base = sort_data.sort_base, }) else table.insert(cat_list, cat_name) end end return cat_list end function export.build(opts) opts = opts or {} local categories = {} if not opts.suppress_categories and not opts.nocat then categories = export.render({ data_tree = opts.data_tree, page_lang = opts.page_lang, available_etymon_ids = opts.available_etymon_ids, senseid_parent_etymon = opts.senseid_parent_etymon, get_norm_lang_func = opts.get_norm_lang_func, lang_exc = opts.lang_exc, }) end local page_lang = opts.page_lang if not page_lang then return categories end local lang_name = page_lang:getCanonicalName() table.insert(categories, "Pages with etymon") table.insert(categories, lang_name .. " entries with etymon") if opts.tree then table.insert(categories, "Pages with etymology trees") table.insert(categories, lang_name .. " entries with etymology trees") end if opts.text then table.insert(categories, lang_name .. " entries with etymology texts") end if opts.exnihilo then table.insert(categories, lang_name .. " terms coined ex nihilo") end if opts.toplevel_has_inline_etymology then table.insert(categories, "Pages with inline etymon for redlinks") end if opts.toplevel_redundant_etymology then table.insert(categories, "Pages with redundant inline etymon") end if opts.toplevel_idless_etymon then table.insert(categories, "Pages using etymon with no ID") end if opts.has_mismatched_id then table.insert(categories, lang_name .. " entries referencing etymons with mismatched IDs") end if opts.linked_page_multiple_etymons_idless then table.insert(categories, lang_name .. " entries referencing pages with multiple etymons missing IDs") end if opts.linked_page_partial_etymology_sections then table.insert(categories, lang_name .. " entries referencing pages with etymology sections missing etymons") end if opts.text_stop_lang_missing then table.insert(categories, "Pages with etymology text stop language not in chain") table.insert(categories, lang_name .. " entries with etymology text stop language not in chain") end return categories end function export.format(entries, lang) if type(entries) ~= "table" or #entries == 0 then return "" end local parts = {} for _, category in ipairs(entries) do if type(category) == "table" and type(category.name) == "string" then table.insert(parts, M.utilities.format_categories({ category.name }, lang, category.sort_key, category.sort_base)) elseif type(category) == "string" then table.insert(parts, M.utilities.format_categories({ category }, lang)) end end return table.concat(parts) end return export hd30gwrrrjpaqm6denix7k3sslq5kjc แม่แบบ:RQ:Conrad Heart of Darkness 10 2302653 5754357 5658982 2026-08-06T02:14:56Z Octahedron80 267 5754357 wikitext text/x-wiki <includeonly>{{#ifeq:{{{year|}}}|1902 | {{RQ:Conrad Youth and Two Other Stories |chapter = Heart of Darkness |part = {{{part|}}} |page = {{{page|{{{1|}}}}}} |pages = {{{pages|}}} |pageref = {{{pageref|}}} |passage = {{{passage|{{{text|{{{2|}}}}}}}}} |footer = {{{footer|}}} |brackets = {{{brackets|}}} }} | {{#invoke:quote|call_quote_template |en |author = w:Joseph Conrad |chapter = [[w:Heart of Darkness|The Heart of Darkness]] |title = [[w:Blackwood's Magazine|Blackwood’s Edinburgh Magazine]] |location = New York, N.Y. |publisher = The Leonard Scott Publishing Company,{{nb...|7 and 9 Warren Street}} |month = {{#if:{{{chapter|}}}{{{part|}}} | {{#switch:{{uc:{{{chapter|}}}{{{part|}}}}} | I = February | II = March | III = April }} | {{#if:{{{page|}}}{{{pageref|}}}{{{1|}}} | {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{1|}}}<221 | February | {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{1|}}}<503 | March | April }} }} | {{maintenance line|please specify the page}} }} }} |year = 1899 |volume = CLXV |issue = {{#if:{{{chapter|}}}{{{part|}}} | {{#switch:{{uc:{{{chapter|}}}{{{part|}}}}} | I = M | II = MI | III = MII }} | {{#if:{{{page|}}}{{{pageref|}}}{{{1|}}} | {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{1|}}}<221 | M | {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{1|}}}<503 | MI | MII }} }} }} }} |section = part {{#if:{{{chapter|}}}{{{part|}}} | {{#switch:{{{chapter|}}}{{{part|}}} | I|II = {{{chapter|{{{part|}}}}}} | III = III (Conclusion) }} | {{#if:{{{page|}}}{{{pageref|}}}{{{1|}}} | {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{1|}}}<221 | I | {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{1|}}}<503 | II | III (Conclusion) }} }} }} }} |pageparam = 1 |pageurl = https://archive.org/details/1899heartofdarknessconradfebmaraprilblackwoodsmagazine/page/n{{#ifexpr:{{{page|}}}{{{pageref|}}}{{{1|}}}<221 | {{#expr:{{{page|{{{pageref|{{{1|}}}}}}}}}-192}} | {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{1|}}}<503 | {{#expr:{{{page|{{{pageref|{{{1|}}}}}}}}}-450}} | {{#expr:{{{page|{{{pageref|{{{1|}}}}}}}}}-581}} }} }}/mode/1up |column = {{{column|}}} |columns = {{{columns|}}} |oclc = 1042815524 |textparam = 2 |t={{{t|}}} |allowparams = chapter,part,column,columns,pageref,t }} }}</includeonly><noinclude>{{RQ:Conrad Heart of Darkness|page=193}}{{documentation}}</noinclude> lmggv5hkp2eiv1b9joh9esct3ntt1it abnego 0 2324027 5754497 5684432 2026-08-06T07:47:33Z OctraBot 3198 5754497 wikitext text/x-wiki == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA|abi^négo}} * {{hyph|pt|ab|ne|go}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|abnegar}} == ภาษาละติน == === รากศัพท์ === {{ety|la|title=abnegō|:af|ab-<t:จาก, ออกจาก>|negō<t:ปฏิเสธ, ไม่ยอมรับ, บอกปัด>|text=+|tree=1}} === การออกเสียง === * {{la-IPA|abnegō}} === คำกริยา === {{la-verb|1+|abnegō}} # [[ปฏิเสธ]], [[ไม่]][[ยอมรับ]], ไม่[[เต็มใจ]] ==== การผันรูป ==== {{la-conj|1+|abnegō}} ==== ลูกคำ ==== {{col4|la |abnegātiō |abnegātīvus |abnegātor |abnegātus }} ==== คำเกี่ยวข้อง ==== {{col4|la |dēnegō |negō |pernegō |subnegō }} ==== คำสืบทอด ==== {{top3}} * {{desc|en|abnegate|bor=1}} * {{desc|fr|abnéguer|bor=1}} * {{desc|it|abnegare|annegare|bor=1|unc2=1}} * {{desc|pt|abnegar|bor=1}} * {{desc|ro|abnega|bor=1}} * {{desc|es|abnegar|bor=1}} {{bottom}} === อ้างอิง === * {{R:la:L&S}} * {{R:la:Elementary Lewis}} * {{R:la:Gaffiot}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|abnegar}} == ภาษาอิตาลี == === การออกเสียง === {{it-pr|^é,^è,^à}} === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|abnegare||1|s|pres|indc}} 256nhej21bzfd9ff7fdv5f8pmnh8yiv animalis 0 2324252 5754473 5685953 2026-08-06T06:30:54Z Octahedron80 267 /* รากศัพท์ */ 5754473 wikitext text/x-wiki == ภาษาละติน == === รากศัพท์ === {{ety|la|title=animālis|:af|anima<id:soul>|-ālis|text=+|tree=1}} === การออกเสียง === * {{la-IPA|animālis}} === คำคุณศัพท์ === {{la-adj|animālis}} # [[ที่]][[มี]][[ชีวิต]], ที่[[เคลื่อนไหว]][[ได้]][[เอง]] #: {{syn|la|vītālis}} # ที่[[เกี่ยว]][[กับ]][[สิ่งมีชีวิต]] ==== การผันรูป ==== {{la-adecl|animālis}} ==== ลูกคำ ==== * {{l|la|animal}} * {{l|la|exanimālis}} * {{l|la|inanimālis}} ==== คำเกี่ยวข้อง ==== * {{l|la|animus}} === คำนาม === {{head|la|รูปนาม|head=animālis}} # {{inflection of|la|animal||gen|s}} === อ้างอิง === * {{R:la:L&S}} * {{R:la:Elementary Lewis}} * {{R:la:du Cange}} * {{R:la:Gaffiot}} * {{R:la:NLW}} ekda1y6c6m33yxfwkmfrqpl3i8t3rs8 commando 0 2324862 5754498 5689085 2026-08-06T07:49:06Z OctraBot 3198 5754498 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{IPA|nl|/kɔˈmɑn.doː/|/koːˈmɑn.doː/}} * {{hyphenation|nl|com|man|do}} === รากศัพท์ 1 === {{bor+|nl|es|comando}} ==== คำนาม ==== {{nl-noun|n|-'s|-}} # [[กองบัญชาการ]][[ทหาร]] {{defdate|from 17th c.}} #: {{syn|nl|bevel}} # [[คำสั่ง]][[ให้]][[ปฏิบัติ]] {{q|โดยเฉพาะอย่างยิ่งในส่วนที่เกี่ยวข้องกับกองทัพหรือการฝึกสัตว์}} {{defdate|from 17th c.}} #: {{syn|nl|bevel}} # [[หน่วย]]หรือ[[กอง]]ที่[[นายทหาร]]คนนั้นมี[[อำนาจ]][[บังคับบัญชา]] {{defdate|from 17th c.}} === รากศัพท์ 2 === {{bor+|nl|en|commando}}, จาก{{der|nl|af|kommando}}, จาก{{der|nl|pt|comando}} ==== คำนาม ==== {{nl-noun|m|-'s|-}} # [[คอมมานโด]], หน่วยรบพิเศษ {{defdate|from 20th c.}} # [[นายทหาร]][[ใน]][[หน่วย]]คอมมานโด {{defdate|from mid 20th c.}} == ภาษาโปรตุเกส == === รากศัพท์ 1 === ==== คำนาม ==== {{pt-noun|m}} # {{obsolete spelling of|pt|comando}} ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{obsolete spelling of|pt|comando}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|pt|รูปกริยา}} # {{pt-verb form of|commandar}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} * {{audio|fr|Fr-commando.ogg}} * {{audio|fr|LL-Q150 (fra)-Lepticed7-commando.wav|a=<<France>> (<<Toulouse>>)}} * {{audio|fr|LL-Q150 (fra)-LoquaxFR-commando.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-Poslovitch-commando.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-commando.wav|a=<<France>> (<<Somain>>)}} === คำนาม === {{fr-noun|m}} # [[คอมมานโด]] {{gl|หน่วยรบ, นายทหาร}} ==== คำสืบทอด ==== * {{desc|tr|komando|bor=1}} === อ่านเพิ่ม === * {{R:fr:TLFi}} {{C|fr|Military units}} == ภาษาละติน == === รากศัพท์ 1 === {{etymon|la|id=to commend|title=commandō|:from|commendō|:influence|mandō<id:hand over>|tree=1}} Reflection of {{m|la|commendō}} based on the unprefixed counterpart {{m|la|mandō|id=order}}. ==== การออกเสียง ==== * {{la-IPA|commandō}} ==== คำกริยา ==== {{la-verb|1|commandō}} # {{alternative form of|la|commendō}} #* {{quote-book|la|year=2nd century {{CE}}|author=w:Velius Longus|title=De Orthographia|text=...et quamvis ''commendo'' dicamus tamen '''''commando''''' in consuetudine est.<ref>https://latin.packhum.org/loc/1374/1/12#12</ref>|t=...and although we may say ''commendo'', '''''commando''''' is still in use.}} ===== คำสืบทอด ===== {{top2}} * Balkan Romance: ** {{desc|rup|cumãndu|alt=cumãndu, cumãndari}} ** {{desc|ro|comânda|cumânda}} * Italo-Romance: ** {{desc|dlm|comanduar}} ** {{desctree|it|comandare}} ** {{desc|nap|commannare}} ** {{desctree|scn|cumannari}} * North Italian: ** {{desc|egl|cmandèr}} ** {{desc|fur|comandâ}} ** {{desc|lld|cumander}} ** {{desc|rm|commander}} ** {{desc|vec|comandar}} * Gallo-Romance: ** {{desctree|fro|comander}} * Occitano-Romance: ** {{desc|ca|comanar}} {{desc|ca|encomanar|recomanar|der=1|nolang=1}} ** {{desc|oc|comandar}} *** {{desc|ca|comandar|bor=1|unc=1}} {{bottom}} === รากศัพท์ 2 === {{ety|la|id=to chew|title=commandō|:af|con-|mandō<id:chew>|text=+|tree=1}} ==== คำกริยา ==== {{la-verb|3|commandō|command|commāns}} {{tlb|la|la-lat}} # [[เคี้ยว]] === อ้างอิง === * {{R:FEW|2|948|commendare}} {{reflist}} === อ่านเพิ่ม === * {{R:la:L&S}} == ภาษาอังกฤษ == === รากศัพท์ === จาก{{bor|en|af|kommando}}, จาก{{der|en|pt|comando||คำสั่ง}},<ref>{{R:Online Etymology Dictionary}}</ref> จาก{{der|en|la-lat||*commandare}}, จาก{{der|en|la|commendare}} === การออกเสียง === * {{IPA|en|/kəˈmɑːn.dəʊ/|a=UK}} * {{audio|en|LL-Q1860 (eng)-Vealhurl-commando.wav|a=Southern England}} :* {{rhymes|en|ɑːndəʊ}} * {{IPA|en|/kəˈmændoʊ/|a=US}} === คำนาม === {{wp|en:}} {{en-noun|s|es}} # [[คอมมานโด]], [[หน่วยรบ]][[ขนาด]][[เล็ก]][[ที่]][[ได้]][[รับ]][[การฝึกฝน]][[มา]][[เป็น]][[พิเศษ]] [[สำหรับ]][[การโจมตี]][[ทำลายล้าง]][[อย่าง]][[รวดเร็ว]][[ต่อ]][[พื้นที่]][[ที่]][[ฝ่าย]][[ศัตรู]][[ยึดครอง]] #* {{quote-book|en|year=1977|author=w:Alistair Horne|title=A Savage War of Peace|location=New York|publisher=Review Books|year_published=2006|page=89 |passage=The most important objective was at Batna itself, where a group of three '''commandos''' each comprising ten men was to attack Deleplanque's sub-prefecture {{...}}.}} # [[นายทหาร]][[ใน]][[หน่วย]]คอมมานโด #: {{syn|en|commandoman|q1=dated}} #* {{quote-web|en|url=https://www.theguardian.com/world/2022/mar/08/tory-mps-son-among-uk-ex-servicemen-heading-to-ukrainian-front-line|title=Tory MP’s son among UK ex-servicemen heading to Ukrainian front line|date=2022-03-08|work=the Guardian|passage=Ben Grant, 30, who spent more than five years as a '''commando''' in the Royal Marines, is part of group of seven ex-servicemen who arrived in Ukraine over the weekend to fight invading Russian forces.}} # {{senseid|en|South Africa}} {{lb|en|historical}} กองกำลังทหาร[[โบเออร์]]ที่จัดตั้งขึ้นใน[[แอฟริกาใต้]]; การโจมตีโดยกองกำลังดังกล่าว ==== ลูกคำ ==== {{col|en|commandolike|commandoman|go commando|steak commando| commando cloth}} ==== คำสืบทอด ==== * {{desc|nl|commando|bor=1}} * {{desc|el|κομάντο|bor=1}} === อ้างอิง === <references/> {{C|en|Collectives}} == ภาษาอิตาลี == === การออกเสียง === {{it-pr}} === คำนาม === {{it-noun|m}} # [[คอมมานโด]] {{gl|หน่วยรบ}} smf8pvpsv2zjq1ntm530j84h4nbgzh6 Abänderer 0 2332905 5754472 5727479 2026-08-06T06:27:57Z Octahedron80 267 /* รากศัพท์ */ 5754472 wikitext text/x-wiki == ภาษาเยอรมัน == === รากศัพท์ === {{ety|de|:af|abändern<t:เปลี่ยน, ดัดแปลง>|-er}} {{suffix|de|abändern|er|gloss1=เปลี่ยน, ดัดแปลง}} === การออกเสียง === * {{IPA|de|/ˈap.ɛndɐʁɐ/}} * {{hyph|de|Ab|än|de|rer}} === คำนาม === {{de-noun|m|f=Abänderin}} # {{agent noun of|de|abändern}}: คนที่เปลี่ยนหรือดัดแปลงบางสิ่ง ==== การผันรูป ==== {{de-ndecl|m}} k0gwahfigv19nie3mpocl24sxqbqjq6 Benutzer 0 2332990 5754475 5727699 2026-08-06T07:12:47Z OctraBot 3198 update template use 5754475 wikitext text/x-wiki == ภาษาเยอรมัน == === รากศัพท์ === {{ety|de|:af|benutzen|-er<id:agent noun>}} {{suffix|de|benutzen|er}} === การออกเสียง === * {{IPA|de|[bəˈnʊtsɐ]}} * {{audio|de|De-Benutzer.ogg}} * {{audio|de|De-Benutzer2.ogg|a=<<Germany>> (<<Berlin>>)}} * {{hyph|de|Be|nut|zer}} === คำนาม === {{de-noun|m}} # [[ผู้ใช้]] #: {{syn|de|Nutzer}} ==== การผันคำนาม ==== {{de-ndecl|m}} ==== คำที่เกี่ยวข้อง ==== * {{l|de|Benutzerin}} * {{l|de|Benutzerfreundlichkeit}} * {{l|de|Benutzername}} === อ่านเพิ่มเติม === * {{R:de:Duden}} * {{R:de:DWDS}} e7esz1z4jvu5rw8tm9wh7osgdavpego frio 0 2333037 5754499 5727752 2026-08-06T07:51:27Z OctraBot 3198 /* รากศัพท์ */ เก็บกวาด 5754499 wikitext text/x-wiki == ภาษากาลิเซีย-โปรตุเกสเก่า == === รากศัพท์ === {{inh+|roa-opt|la|frīgidus|frīgidum|เย็น}} === การออกเสียง === * {{q|Galicia}} {{IPA|roa-opt|/ˈfɾi.o/}} * {{q|Portugal}} {{IPA|roa-opt|/ˈfɾi.ʊ/}} * {{rhymes|roa-opt|io|s=2}} === คำคุณศัพท์ === {{head|roa-opt|คำคุณศัพท์|plural|frios|feminine|fria|feminine plural|frias}} # [[เย็น]] === คำนาม === {{roa-opt-noun|m}} # [[ความเย็น]] === คำสืบทอด === * {{desc|gl|frío}} * {{desc|pt|frio}} == ภาษาชาบากาโน == === รากศัพท์ === {{inh+|cbk|es|frío||เย็น}}, จาก{{der|cbk|osp|frio}}, จาก{{der|cbk|la|frīgidus||เย็น}} === การออกเสียง === {{cbk-IPA|frío}} * {{hyph|cbk|fri|o}} === คำคุณศัพท์ === {{cbk-adj}} # [[เย็น]]; เย็น[[ด้วย]][[น้ำแข็ง]] ==== คำเกี่ยวข้อง ==== {{col3|cbk|frialdad}} == ภาษาโปรตุเกส == === รากศัพท์ === {{inh+|pt|roa-opt|frio}}, จาก{{inh|pt|la|frīgidus|5=เย็น}}, จาก{{m|la|frīgeō|t=เย็น (ก.)}}, จาก{{m|la|frigus||เย็น, ความเย็น}}, จาก{{der|pt|ine-pro|*sriHgos-}}, {{m|ine-pro|*sriges-}}, {{m|ine-pro|*sriHges-}}; เทียบ{{cog|gl,es|frío}}, {{cog|ast|fríu}}, {{cog|ca|fred}}, {{cog|it|freddo}}; {{doublet|pt|frígido}} === การออกเสียง === {{pt-IPA}} * {{IPA|pt|[ˈfɾiw]|a=Southern Portugal}} * {{audio|pt|Pt-frio.ogg}} * {{audio|pt|LL-Q5146 (por)-Santamarcanda-frio.wav|a=<<Portugal>> (<<Porto>>)}} * {{rhymes|pt|iu|iw|s1=2|s2=1}} * {{hyphenation|pt|fri|o}} === คำคุณศัพท์ === {{pt-adj|sup=+abs,frigidíssimo|dim=friozinho,+}} # [[เย็น]] ## มีอุณหภูมิต่ำ ## {{lb|pt|figuratively}} [[เย็นชา]] === คำนาม === {{pt-noun|m|-}} # [[ความเย็น]] === คำเกี่ยวข้อง === {{col2|pt|esfriar|friorento|frigidez|frígido|frialdade|friagem}} === คำสืบทอด === * {{desc|pov|friu}} * {{desc|kea|friu}} * {{desc|pap|friu}} === อ่านเพิ่ม === * {{R:pt:Aulete}} * {{R:pt:Priberam}} == ภาษาละติน == === รากศัพท์ === {{etymon|la|:af|itc-pro:*frios<ety:inh<ine-pro:<alt:*bʰriH-o-s><ety:from<*bʰreyH->>>>|-ō<id:denominative>|tree=1|title=friō}} Denominative to {{inh|la|itc-pro|*frios}}, จาก{{inh|la|ine-pro||*bʰriH-o-s}}, จาก{{der|la|ine-pro|*bʰreyH-|t=ตัด}}<ref>{{R:itc:EDL|pages=243-4}}</ref> === การออกเสียง === * {{la-IPA|friō}} === คำกริยา === {{la-verb|1+|friō}} # {{lb|la|transitive}} [[บด]], [[ขัดสี]], ทำให้[[แตก]]เป็นชิ้น ๆ ==== การผันรูป ==== {{la-conj|1+|friō}} ==== ลูกคำ ==== * {{l|la|friābilis}} * {{l|la|fricō}} ==== คำเกี่ยวข้อง ==== * {{l|la|frīvolus}} === อ้างอิง === * {{R:la:L&S}} * {{R:la:Gaffiot}} * {{R:ine:IEW|page=166}} * Palmer, L.R. (1906) The Latin Language, London, Faber and Faber <references /> == ภาษาลาดิโน == === รูปแบบอื่น === * {{l|lad|friyo}} === รากศัพท์ === จาก{{inh|lad|osp|frio}}, จาก{{inh|lad|la|frīgidus||เย็น}} === คำคุณศัพท์ === {{lad-adj}} # [[เย็น]] #: {{syn|lad|yelado}} == ภาษาสเปน == === การออกเสียง === {{es-pr}} === คำกริยา === {{head|es|รูปกริยา}} # {{es-verb form of|freír}} == ภาษาอังกฤษเก่า == === การออกเสียง === * {{ang-IPA|frīo|frēo}} * {{rhymes|ang|i͜uː|e͜oː|s=1}} === รากศัพท์ 1 === ==== คำคุณศัพท์ ==== {{ang-adj|head=frīo}} {{tlb|ang|Anglian}} # {{alternative form of|ang|frēo}} ===== การผันรูป ===== {{ang-adecl|frīo}} === รากศัพท์ 2 === ==== คำกริยา ==== {{head|ang|รูปกริยา|head=frīo}} {{tlb|ang|Anglian}} # {{inflection of|ang|frīoġan//frīġan||s|pres|imp}} kmnnl1mfketuhr5avlyxyodk042wl3m friera 0 2333065 5754481 5727784 2026-08-06T07:27:36Z OctraBot 3198 update template use 5754481 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === รากศัพท์ 1 === {{ety|es|:af|frío|-era|text=+|tree=1}} ==== คำนาม ==== {{es-noun|f}} # {{lb|es|pathology}} [[น้ำแข็งกัด]] #: {{syn|es|sabañón}} === รากศัพท์ 2 === {{ety|es|:af|frío|-era|text=+|tree=1}} ==== คำกริยา ==== {{head|es|รูปกริยา}} # {{es-verb form of|freír}} === อ่านเพิ่ม === * {{R:es:DRAE}} {{C|es|โรค}} 13zj9zqtbs8p09k9mtevlo5clqh7x9m 5754482 5754481 2026-08-06T07:28:39Z OctraBot 3198 5754482 wikitext text/x-wiki == ภาษาสเปน == === การออกเสียง === {{es-pr}} === รากศัพท์ 1 === {{ety|es|:af|frío|-era|text=+|tree=1}} ==== คำนาม ==== {{es-noun|f}} # {{lb|es|pathology}} [[น้ำแข็งกัด]] #: {{syn|es|sabañón}} === รากศัพท์ 2 === {{ety|es|nl=1}} ==== คำกริยา ==== {{head|es|รูปกริยา}} # {{es-verb form of|freír}} === อ่านเพิ่ม === * {{R:es:DRAE}} {{C|es|โรค}} t6cv6h5zatxw9689djuwqsggnmi0d72 Sängerin 0 2333621 5754476 5728815 2026-08-06T07:13:19Z OctraBot 3198 update template use 5754476 wikitext text/x-wiki == ภาษาเยอรมัน == === รากศัพท์ === {{ety|de|:af|Sänger|-in<id:feminine>}} จาก{{af|de|Sänger|-in}} === การออกเสียง === * {{IPA|de|/ˈzɛŋɡəʁɪn/}} * {{audio|de|De-Sängerin.ogg|a=<<Germany>> (<<Berlin>>)}} === คำนาม === {{de-noun|f|m=Sänger}} # [[นักร้อง]][[หญิง]] ==== การผันรูป ==== {{de-ndecl|f}} ==== คำที่เกี่ยวข้อง ==== {{col5|de |Altsängerin |Bühnensängerin |Chorsängerin |Frontsängerin |Hintergrundsängerin |Kneipensängerin |Opernsängerin |Schlagersängerin |Solosängerin |Sopransängerin }} === อ่านเพิ่ม === * {{R:de:DWDS}} * {{R:de:UniLeipzig}} * {{R:de:Duden}} {{C|de|ดนตรี}} jnr6usvzlbnola9h4fi4jdw33qzztpn คุยกับผู้ใช้:อภิยุทธ มีฮุง 3 2356302 5754328 2026-08-05T12:56:55Z New user message 2698 เพิ่ม[[Template:Welcome|สารต้อนรับ]]ในหน้าคุยของผู้ใช้ใหม่ 5754328 wikitext text/x-wiki {{Template:Welcome|realName=|name=อภิยุทธ มีฮุง}} -- [[ผู้ใช้:New user message|New user message]] ([[คุยกับผู้ใช้:New user message|คุย]]) 19:56, 5 สิงหาคม 2569 (+07) 7p7hhg5gknak52hnmv33cack3grdq35 ᨣᩢ᩠᩵ᨦ 0 2356303 5754329 2026-08-05T21:15:35Z Alifshinobi 397 สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=คั่ง|s=กั้ง}} === การออกเสียง === * {{IPA|nod|/kaŋ˦˨/|a=เชียงใหม่}} === รากศัพท์ 1 === ==== คำกริยา ==== {{nod-verb}} # {{lb|nod|อกรรม}} [[คั่ง]] {{gl|ออกัน, ประดังกัน}} === รากศัพท์ 2 === ==== คำก..." 5754329 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=คั่ง|s=กั้ง}} === การออกเสียง === * {{IPA|nod|/kaŋ˦˨/|a=เชียงใหม่}} === รากศัพท์ 1 === ==== คำกริยา ==== {{nod-verb}} # {{lb|nod|อกรรม}} [[คั่ง]] {{gl|ออกัน, ประดังกัน}} === รากศัพท์ 2 === ==== คำกริยา ==== {{nod-verb}} # {{lb|nod|อกรรม}} {{altform|nod|ᨣᩖᩢ᩵ᨦ|t=[[ละเมอ]], [[บ้าจี้]]}} === อ้างอิง === {{รายการอ้างอิง}} * ''พจนานุกรมภาษาล้านนา = The Lanna dictionary'' (พิมพ์ครั้งที่ 2). (พ.ศ. 2550). เชียงใหม่: สถาบันภาษา ศิลปะและวัฒนธรรม มหาวิทยาลัยราชภัฏเชียงใหม่. b8cycdaj50u7r3t4gv084br87v365qw deos 0 2356304 5754353 2026-08-06T02:07:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754353 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำนาม === {{pt-noun|m|#es|f=#a}} # {{obsolete spelling of|pt|deus}} == ภาษาละติน == === คำนาม === {{head|la|รูปนาม|head=deōs|g=m}} # {{inflection of|la|deus||acc|p|t=เทพเจ้า, เทพ}} == ภาษาอังกฤษ == === คำนาม === {{head|en|รูปนาม}} # {{plural of|en|deo}} === คำสลับอักษร === * {{anagrams|en|a=deos|Does|SOED|deso|does|dose|odes}} == ภาษาอัสตูเรียส == === คำนาม === {{head|ast|รูปนาม}} # {{plural of|ast|deu}} == ภาษาอินเทอร์ลิงกวา == === คำนาม === {{head|ia|รูปนาม}} # {{plural of|ia|deo}} pbktatqvjk91y5tqi6cdfq5ogqb49xm deosa 0 2356305 5754354 2026-08-06T02:07:45Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754354 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำนาม === {{pt-noun|f}} # {{female equivalent of|pt|deos}} 23d02p5n2rt1u5sb61jhhdj6omtz0qi deosas 0 2356306 5754355 2026-08-06T02:07:49Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754355 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำนาม === {{head|pt|รูปนาม}} # {{feminine plural of|pt|deos}} om0co7jeuzate099gvpq8thx16wsym0 dosen 0 2356307 5754365 2026-08-06T02:30:48Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754365 wikitext text/x-wiki == ภาษานอร์เวย์แบบนือนอสก์ == === คำนาม === {{head|nn|รูปนาม|g=m}} # {{inflection of|nn|dose||def|s}} == ภาษานอร์เวย์แบบบุ๊กมอล == === คำนาม === {{head|nb|รูปนาม|g=m}} # {{inflection of|nb|dose||def|s}} == ภาษาสวีเดน == === คำนาม === {{head|sv|รูปนาม}} # {{noun form of|sv|dos||def|s}} === คำสลับอักษร === * {{anagrams|sv|a=denos|Odens}} == ภาษาอินโดนีเซีย == {{wp|id:}} === รากศัพท์ === จาก{{bor|id|nl|docent|t=[[ครู]], [[วิทยากร]]}}, จาก{{der|id|la|docēns}}, รูปกริยาขยายปัจจุบันกาลของ {{m|la|doceō||สอน}} === การออกเสียง === {{id-pr|do.sèn}} === คำนาม === {{id-noun|head=dosèn|a}} # {{lb|id|education}} วิทยากร; [[ผู้บรรยาย]] (โดยปกติหมายถึงคนในมหาวิทยาลัย ต่างจากครูในโรงเรียน) #: {{syn|id|pensyarah<q:พบได้ยาก>}} ==== คำพ้องความ ==== * {{l|ms|pensyarah}} {{q|บรูไน|มาเลเซีย|สิงคโปร์}} ==== ลูกคำ ==== {{col2|id| |dosen luar biasa |dosen tamu |dosen terbang |asisten dosen }} === อ่านเพิ่ม === * {{R:KBBI Daring}} 08etcvo2ood4l8znsez0ioi89d8yvji 5754366 5754365 2026-08-06T02:31:21Z Octahedron80 267 /* ภาษาอินโดนีเซีย */ 5754366 wikitext text/x-wiki == ภาษานอร์เวย์แบบนือนอสก์ == === คำนาม === {{head|nn|รูปนาม|g=m}} # {{inflection of|nn|dose||def|s}} == ภาษานอร์เวย์แบบบุ๊กมอล == === คำนาม === {{head|nb|รูปนาม|g=m}} # {{inflection of|nb|dose||def|s}} == ภาษาสวีเดน == === คำนาม === {{head|sv|รูปนาม}} # {{noun form of|sv|dos||def|s}} === คำสลับอักษร === * {{anagrams|sv|a=denos|Odens}} == ภาษาอินโดนีเซีย == {{wp|id:}} === รากศัพท์ === จาก{{bor|id|nl|docent|t=ครู, วิทยากร}}, จาก{{der|id|la|docēns}}, รูปกริยาขยายปัจจุบันกาลของ {{m|la|doceō||สอน}} === การออกเสียง === {{id-pr|do.sèn}} === คำนาม === {{id-noun|head=dosèn|a}} # {{lb|id|education}} [[วิทยากร]]; [[ผู้บรรยาย]] (โดยปกติหมายถึงคนใน[[มหาวิทยาลัย]] ต่างจาก[[ครู]]ใน[[โรงเรียน]]) #: {{syn|id|pensyarah<q:พบได้ยาก>}} ==== คำพ้องความ ==== * {{l|ms|pensyarah}} {{q|บรูไน|มาเลเซีย|สิงคโปร์}} ==== ลูกคำ ==== {{col2|id| |dosen luar biasa |dosen tamu |dosen terbang |asisten dosen }} === อ่านเพิ่ม === * {{R:KBBI Daring}} qc8tbdkam9ojw5w6y6bgebw4ccux796 dosar 0 2356308 5754367 2026-08-06T02:35:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754367 wikitext text/x-wiki == ภาษานอร์เวย์แบบนือนอสก์ == === คำนาม === {{head|nn|รูปนาม|g=m}} # {{inflection of|nn|dose||indef|p}} == ภาษาโปรตุเกส == === การออกเสียง === {{pt-IPA}} * {{hyph|pt|do|sar}} === คำกริยา === {{pt-verb}} # [[ให้]][[ยา]][[ตาม]][[ปริมาณ]] # [[สั่ง]][[จ่าย]]ยา ==== การผันรูป ==== {{pt-conj}} === อ่านเพิ่ม === * {{R:pt:Aulete}} * {{R:pt:Priberam}} == ภาษาโรมาเนีย == === รากศัพท์ === {{bor+|ro|fr|dossier}} === คำนาม === {{ro-noun|n|dosare}} # [[เอกสาร]][[เรื่อง]][[เดียว]][[กัน]][[ที่]][[เก็บ]][[รวม]]กัน ([[dossier]]) # [[แฟ้ม]] {{gloss|บรรจุภัณฑ์เก็บเอกสาร}} ==== คำสืบทอด ==== * {{desc|hu|doszár|bor=1}} sm37plehhie2ee7sfz97n5fyyhax1n8 dosane 0 2356309 5754368 2026-08-06T02:36:42Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754368 wikitext text/x-wiki == ภาษานอร์เวย์แบบนือนอสก์ == === คำนาม === {{head|nn|รูปนาม|g=m}} # {{inflection of|nn|dose||def|p}} == ภาษาอังกฤษกลาง == === คำนาม === {{head|enm|คำนาม|altform=1}} # {{lb|enm|Sc}} {{alternative form of|enm|doseyne}} somdqst9y111wk5ipyjufqsy4u5qtlp doso 0 2356310 5754369 2026-08-06T02:37:30Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754369 wikitext text/x-wiki == ภาษาบาลี == === รูปแบบอื่น === {{pi-alt|Thai=โทโส}} === คำนาม === {{head|pi|รูปนาม}} # {{inflection of|pi|dosa||nom|s}} == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} == ภาษาเวเนโต == === รูปแบบอื่น === * {{l|vec|indoso}} === รากศัพท์ === เทียบ{{cog|it|addosso}} === คำกริยาวิเศษณ์ === {{head|vec|คำกริยาวิเศษณ์}} # [[บน]] (ตัวบุคคล) == ภาษาอิตาลี == === การออกเสียง === {{it-pr|dòso}} === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dosare||1|s|pres|indc}} === คำสลับอักษร === * {{anagrams|it|a=doos|sodo}} 129zxgwwdmqucmapn3e37wwkkwl8bg7 dosado 0 2356311 5754370 2026-08-06T02:38:55Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754370 wikitext text/x-wiki == ภาษาโปรตุเกส == === รูปกริยาขยาย === {{pt-pp}} # {{past participle of|pt|dosar}} == ภาษาอังกฤษ == === คำนาม === {{en-noun}} # {{alternative form of|en|dos a dos}} === คำกริยา === {{en-verb}} # {{lb|en|transitive|intransitive}} เต้นรำท่า dos a dos; เดินวนรอบ (ใครบางคน) โดยใช้ท่า dos a dos 6qyr1lkmqtiivcznt6fczj1mk0saypm dosados 0 2356312 5754371 2026-08-06T02:39:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754371 wikitext text/x-wiki == ภาษาโปรตุเกส == === รูปกริยาขยาย === {{head|pt|รูปผันรูปกริยาขยายอดีตกาล|g=m-p}} # {{masculine plural of|pt|dosado}} == ภาษาอังกฤษ == === คำนาม === {{head|en|รูปนาม}} # {{plural of|en|dosado}} 1hl38b720nsjf96djac15q4xptg7i3q dosada 0 2356313 5754372 2026-08-06T02:39:59Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754372 wikitext text/x-wiki == ภาษาเซอร์โบ-โครเอเชีย == === รากศัพท์ 1 === {{inh+|sh|sla-pro|*dosada}} ==== คำนาม ==== {{sh-noun|dȍsada|f}} # [[ความเบื่อ]] #: {{uxi|sh|Ne tražim ništa, tu sam iz '''dosade'''.|I'm not looking for anything, I'm here out of '''boredom'''.}} ===== การผันรูป ===== {{sh-decl-noun |dosada|dosade |dosade|dosada |dosadi|dosadama |dosadu|dosade |dosado|dosade |dosadi|dosadama |dosadom|dosadama }} ==== อ่านเพิ่ม ==== * {{R:sh:HJP|fF9mWBM%3D}} === รากศัพท์ 2 === {{compound|sh|do|sad}} ==== คำกริยาวิเศษณ์ ==== {{sh-adv|dòsada}} # {{alternative form of|sh|dòsad}} == ภาษาโปรตุเกส == === รูปกริยาขยาย === {{head|pt|รูปผันรูปกริยาขยายอดีตกาล|g=f-s}} # {{feminine singular of|pt|dosado}} nee706f14s96zrp5dncl0leg2rbs6q9 dosadas 0 2356314 5754373 2026-08-06T02:40:05Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754373 wikitext text/x-wiki == ภาษาโปรตุเกส == === รูปกริยาขยาย === {{head|pt|รูปผันรูปกริยาขยายอดีตกาล|g=f-p}} # {{feminine plural of|pt|dosado}} 23azxvda13v1adl8e1l2zgpf410wtrh dosando 0 2356315 5754374 2026-08-06T02:40:47Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754374 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยาเป็นนาม}} # {{pt-verb form of|dosar}} == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยาเป็นนาม}} # {{gerund of|it|dosare}} 2c3m6e171h7lxx4mgmgfd7n1pb8l42f dosas 0 2356316 5754375 2026-08-06T02:40:55Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754375 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} == ภาษาฝรั่งเศส == === คำกริยา === {{head|fr|รูปกริยา}} # {{inflection of|fr|doser||2|s|phis}} === คำสลับอักษร === * {{l|fr|sados}}, {{l|fr|sodas}} == ภาษาสวีเดน == === คำนาม === {{head|sv|รูปนาม}} # {{noun form of|sv|dosa||indef|gen|s}} === คำสลับอักษร === * {{anagrams|sv|a=adoss|sodas}} == ภาษาอังกฤษ == === คำนาม === {{head|en|รูปนาม}} # {{plural of|en|dosa}} === คำสลับอักษร === * {{anagrams|en|a=adoss|Sodas|sodas}} 3mx2jjzks4nk38j7el2zjdxdyz1p0fw dosava 0 2356317 5754376 2026-08-06T02:41:00Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754376 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dosare||3|s|impf|indc}} === คำสลับอักษร === * {{anagrams|it|a=aadosv|vadosa}} 2l4o8k8i2o0wqercyewp8vv9z1icws8 dosaste 0 2356318 5754377 2026-08-06T02:41:05Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754377 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dosare||2|p|phis|;|2|p|impf|subj}} === คำสลับอักษร === * {{anagrams|it|a=adeosst|detasso|detassò|dotasse}} 4ao8c2pimqkjhstsef5y9w4husup76t dosais 0 2356319 5754378 2026-08-06T02:41:12Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754378 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} == ภาษาฝรั่งเศส == === คำกริยา === {{head|fr|รูปกริยา}} # {{inflection of|fr|doser||1//2|s|impf|indc}} == ภาษาอังกฤษ == === คำนาม === {{head|en|รูปนาม}} # {{plural of|en|dosai}} oc3vqzbc0u9ew1huqx4fgs9s7n9t87n dosará 0 2356320 5754379 2026-08-06T02:41:17Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754379 wikitext text/x-wiki == ภาษาโปรตุเกส == === รากศัพท์ === {{ety|pt|nl=1}} === การออกเสียง === {{pt-IPA}} * {{rhymes|pt|a|s=3}} * {{hyph|pt|do|sa|rá}} === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} 7vfm6xes8u7zu6u95bw13g4do00uh1n dosasses 0 2356321 5754380 2026-08-06T02:41:22Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754380 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} == ภาษาฝรั่งเศส == === คำกริยา === {{head|fr|รูปกริยา}} # {{inflection of|fr|doser||2|s|impf|subj}} === คำสลับอักษร === * {{l|fr|désossas}} 8qtjbhyicor92dtrnm9z3jq9xeb6oyi dosem 0 2356322 5754381 2026-08-06T02:41:27Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754381 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} == ภาษาละติน == === คำนาม === {{head|la|รูปนาม}} # {{inflection of|la|dosis||acc|s}} 0mmy4mb63ayrt3yah5ermri3ubi8mk4 dosai 0 2356323 5754382 2026-08-06T02:41:51Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754382 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dosar}} == ภาษาฝรั่งเศส == === คำกริยา === {{head|fr|รูปกริยา}} # {{inflection of|fr|doser||1|s|phis}} == ภาษาอังกฤษ == === รากศัพท์ === {{ety|en|:bor|ta:தோசை|text=+|tree=1}} === คำนาม === {{en-noun}} # {{alternative spelling of|en|dosa||แพนเค้กชนิดหนึ่ง}} == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dosare||1|s|phis}} trjj8rj58sh3vcbadg74fkhzv5t6p7p sados 0 2356324 5754383 2026-08-06T02:42:06Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754383 wikitext text/x-wiki == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} === คำคุณศัพท์ === {{head|fr|รูปคุณศัพท์}} # {{plural of|fr|sado}} === คำนาม === {{head|fr|รูปนาม|g=m-p|g2=f-p}} # {{plural of|fr|sado}} === คำสลับอักษร === * {{l|fr|dosas}}, {{l|fr|sodas}} == ภาษาฟร็องโก-พรอว็องส์ == === คำคุณศัพท์ === {{head|frp|รูปคุณศัพท์}} # {{inflection of|frp|sado||m|p}} == ภาษาสเปน == === คำนาม === {{head|es|รูปนาม|g=m-p}} # {{noun form of|es|sado||p}} kvfgckruo9yhm4hbd1wy9w3nhndaqg0 sodas 0 2356325 5754384 2026-08-06T02:43:53Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754384 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำนาม === {{head|pt|รูปนาม}} # {{plural of|pt|soda}} == ภาษาฝรั่งเศส == === คำนาม === {{head|fr|รูปนาม|g=p}} # {{plural of|fr|soda}} === คำสลับอักษร === * {{l|fr|dosas}}, {{l|fr|sados}} == ภาษาลัตเวีย == === คำนาม === {{head|lv|รูปนาม|g=f}} # {{inflection of|lv|soda||gen|s}} == ภาษาลิทัวเนีย == === รากศัพท์ === จาก{{cog|ine-bsl-pro|*sādas|t=garden}}, หรือมิฉะนั้นก็ยืมมาจาก{{der|lt|sla-pro|*sȃdъ|t=พืช, สวน}}; เกี่ยวข้องกับ{{cog|lv|sàds|t=สวน, สวนผลไม้}}, {{cog|lt|sodìnti|t=จัดตั้ง, ปลูก}}; ดูเพิ่มที่คำหลัง<ref>{{R:EDBIL|416-7|sodas}}</ref> === การออกเสียง === {{lt-pr|sõdas}} === คำนาม === {{lt-noun|m|sõdai|2|head=sõdas}} # [[สวน]] ==== การผันรูป ==== {{lt-noun-m-as-2|sod|sõd}} === อ้างอิง === <references /> == ภาษาสเปน == === คำนาม === {{head|es|รูปนาม}} # {{plural of|es|soda}} == ภาษาสวีเดน == === คำนาม === {{head|sv|รูปนาม}} # {{noun form of|sv|soda||indef|gen|s}} === คำสลับอักษร === * {{anagrams|sv|a=adoss|dosas}} == ภาษาอังกฤษ == === การออกเสียง === * {{audio|en|LL-Q1860 (eng)-Wodencafe-sodas.wav|a=US}} === คำนาม === {{head|en|รูปนาม}} # {{plural of|en|soda}} === คำสลับอักษร === * {{anagrams|en|a=adoss|dosas}} pqm2wl1p6e7tl3q2517m0rybuyk4ka1 5754385 5754384 2026-08-06T02:44:06Z Octahedron80 267 /* รากศัพท์ */ 5754385 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำนาม === {{head|pt|รูปนาม}} # {{plural of|pt|soda}} == ภาษาฝรั่งเศส == === คำนาม === {{head|fr|รูปนาม|g=p}} # {{plural of|fr|soda}} === คำสลับอักษร === * {{l|fr|dosas}}, {{l|fr|sados}} == ภาษาลัตเวีย == === คำนาม === {{head|lv|รูปนาม|g=f}} # {{inflection of|lv|soda||gen|s}} == ภาษาลิทัวเนีย == === รากศัพท์ === จาก{{cog|ine-bsl-pro|*sādas|t=สวน}}, หรือมิฉะนั้นก็ยืมมาจาก{{der|lt|sla-pro|*sȃdъ|t=พืช, สวน}}; เกี่ยวข้องกับ{{cog|lv|sàds|t=สวน, สวนผลไม้}}, {{cog|lt|sodìnti|t=จัดตั้ง, ปลูก}}; ดูเพิ่มที่คำหลัง<ref>{{R:EDBIL|416-7|sodas}}</ref> === การออกเสียง === {{lt-pr|sõdas}} === คำนาม === {{lt-noun|m|sõdai|2|head=sõdas}} # [[สวน]] ==== การผันรูป ==== {{lt-noun-m-as-2|sod|sõd}} === อ้างอิง === <references /> == ภาษาสเปน == === คำนาม === {{head|es|รูปนาม}} # {{plural of|es|soda}} == ภาษาสวีเดน == === คำนาม === {{head|sv|รูปนาม}} # {{noun form of|sv|soda||indef|gen|s}} === คำสลับอักษร === * {{anagrams|sv|a=adoss|dosas}} == ภาษาอังกฤษ == === การออกเสียง === * {{audio|en|LL-Q1860 (eng)-Wodencafe-sodas.wav|a=US}} === คำนาม === {{head|en|รูปนาม}} # {{plural of|en|soda}} === คำสลับอักษร === * {{anagrams|en|a=adoss|dosas}} gde30zb8eyvzivfj0mti5uvyejpy0oh vadosa 0 2356326 5754386 2026-08-06T02:45:00Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754386 wikitext text/x-wiki == ภาษาละติน == === คำคุณศัพท์ === {{head|la|รูปคุณศัพท์|head=vadōsa}} # {{inflection of|la|vadōsus||nom//voc|f|s|;|nom//acc//voc|n|p}} === คำคุณศัพท์ === {{head|la|รูปคุณศัพท์|head=vadōsā}} # {{inflection of|la|vadōsus||abl|f|s}} == ภาษาสเปน == === คำคุณศัพท์ === {{head|es|รูปคุณศัพท์|g=f}} # {{adj form of|es|vadoso||f|s}} == ภาษาอิตาลี == === คำคุณศัพท์ === {{head|it|รูปคุณศัพท์}} # {{feminine singular of|it|vadoso}} === คำสลับอักษร === * {{anagrams|it|a=aadosv|dosava}} lhxcpj8kdrm07sf416oi74z6z2m6ega dotasse 0 2356327 5754387 2026-08-06T02:45:19Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754387 wikitext text/x-wiki == ภาษาโปรตุเกส == === คำกริยา === {{head|pt|รูปกริยา}} # {{pt-verb form of|dotar}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA|pos=v}} === คำกริยา === {{head|fr|รูปกริยา}} # {{inflection of|fr|doter||1|s|impf|subj}} === คำสลับอักษร === * {{l|fr|dosâtes}} == ภาษาละติน == === คำกริยา === {{head|la|รูปกริยา|head=dōtāsse}} # {{inflection of|la|dōtō||perf|actv|inf}} == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dotare||3|s|impf|subj}} === คำสลับอักษร === * {{anagrams|it|a=adeosst|detasso|detassò|dosaste}} dgcr150k00pvmdsbe39fydxn4j2piob detasso 0 2356328 5754388 2026-08-06T02:45:33Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754388 wikitext text/x-wiki == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|detassare||1|s|pres|indc}} === คำสลับอักษร === * {{anagrams|it|a=adeosst|dosaste|dotasse}} 8px8ibxq6vbzxptj05kpshrjohwkq0r detassò 0 2356329 5754389 2026-08-06T02:45:37Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754389 wikitext text/x-wiki == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|detassare||3|s|phis}} === คำสลับอักษร === * {{anagrams|it|a=adeosst|dosaste|dotasse}} jxykh5e7b7rezp4lqk7a1164fz641ii dosi 0 2356330 5754390 2026-08-06T02:49:16Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754390 wikitext text/x-wiki == ภาษากาตาลา == === การออกเสียง === * {{ca-IPA|ò}} * {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-dosi.wav|a=Catalonia}} === คำนาม === {{ca-noun|f}} # [[ปริมาณ]][[ยา]] ==== คำเกี่ยวข้อง ==== * {{l|ca|dosar}} * {{l|ca|dosatge}} === อ่านเพิ่ม === * {{R:ca:IEC2}} * {{R:ca:GDLC}} * {{R:ca:DNV}} * {{R:ca:DCVB}} == ภาษาครีโอลกาบูเวร์ดี == === รากศัพท์ === จาก{{der|kea|pt|doce}} === คำคุณศัพท์ === {{head|kea|adjectives}} # [[หวาน]] == ภาษาซรานันโตโง == === รากศัพท์ === {{rfe|srn}} === คำนาม === {{head|srn|คำนาม}} # {{topics|srn|อาหาร}} [[ขนมปัง]][[มันสำปะหลัง]]สอด[[ไส้]][[มะพร้าว]]หวาน == ภาษาตงเซียง == === รากศัพท์ === จาก{{der|sce|fa|دوست||tr=dôst}}; เทียบ{{cog|ug|دوست}} === การออกเสียง === {{sce-IPA|'tosi|etyl=fa}} === คำนาม === {{sce-noun}} # [[เพื่อน]] #: {{ux|sce|Ede bi '''dosi'''ne kide echine.|I'm going to my friend's house.}} ==== คำพ้องความ ==== * {{l|sce|anda}} ==== ลูกคำ ==== * {{l|sce|dosiqi}}, {{l|sce|dosidan|t=เพื่อนร่วมศาสนา เพื่อนร่วมศาสนาอิสลาม}} ==== ดูเพิ่ม ==== * {{l|sce|nokie|t=เพื่อนร่วมทาง, คู่หู}} == ภาษาโรมาเนีย == === รากศัพท์ === จาก{{m|ro|dos}} === การออกเสียง === * {{IPA|ro|/doˈsi/}} === คำกริยา === {{ro-verb|dosește|dosit}} # [[ซ่อน]] ==== การผันรูป ==== {{ro-conj-i-esc}} === อ่านเพิ่ม === * {{R:DEX}} == ภาษาลัตเวีย == === คำกริยา === {{head|lv|รูปกริยา}} # {{inflection of|lv|dot||2|s|fut|ind}} == ภาษาอิตาลี == === คำนาม === {{head|it|รูปนาม|g=f}} # {{plural of|it|dose}} === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|dosare||2|s|pres|indc|;|1//2//3|s|pres|subj|;|3|s|impr}} === คำสลับอักษร === * {{anagrams|it|a=dios|sido|sodi}} mpq511j2ggnej97hp9uelpiw5fz7sx6 แม่แบบ:sce-noun 10 2356331 5754391 2026-08-06T02:50:18Z Octahedron80 267 นำเข้าจาก enwikt 5754391 wikitext text/x-wiki {{head|sce|คำนาม|head={{{head|}}}|sort={{{sort|}}}|{{#if:{{{1|}}}|รูปสะกด [[w:Xiao'erjing|tuhuani orou]] |}}|{{{1|}}}|f1sc={{#if:{{{1|}}}|Arab|}}|tr={{{tr|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> bvwhw4zuabepnbxhdcrcuxgbwts4gjv dosit 0 2356332 5754392 2026-08-06T02:51:24Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา เรียงลำดับหัวเรื่องภาษา 5754392 wikitext text/x-wiki == ภาษาโรมาเนีย == === รากศัพท์ === รูปกริยาขยายอดีตกาลของ {{m|ro|dosi}} === คำคุณศัพท์ === {{ro-adj}} # [[ที่]][[ซ่อน]][[แล้ว]] ==== การผันรูป ==== {{ro-decl-adj}} == ภาษาลัตเวีย == === คำกริยา === {{head|lv|รูปกริยา}} # {{inflection of|lv|dot||2|p|fut|ind}} f0cj43aqyxc717h9uburj5mtmbdxhnq sodi 0 2356333 5754393 2026-08-06T02:52:49Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754393 wikitext text/x-wiki == ภาษากาตาลา == {{chemical element box|ca}} === การออกเสียง === * {{ca-IPA|ò}} * {{audio|ca|LL-Q7026 (cat)-Millars-sodi.wav|a=Valencia}} === คำนาม === {{ca-noun|m|-}} # [[โซเดียม]] ==== ลูกคำ ==== * {{l|ca|sòdic}} === อ่านเพิ่ม === * {{R:ca:IEC2}} * {{R:ca:GDLC}} * {{R:ca:DNV}} * {{R:ca:DCVB}} == ภาษาฟินแลนด์ == === การออกเสียง === {{fi-pronunciation|soDi*}} === คำกริยา === {{head|fi|รูปกริยา}} # {{inflection of|fi|sotia||pres|act|ind|conn|;|2|s|pres|imp|;|2|s|pres|act|imp|conn}} === คำสลับอักษร === * {{anagrams|fi|a=dios|sido}} == ภาษาลัตเวีย == === คำนาม === {{head|lv|รูปนาม|g=m}} # {{inflection of|lv|sods||nom//voc|p}} == ภาษาสโลวีเนีย == === คำนาม === {{head|sl|รูปนาม}} # {{inflection of|sl|sod||nom//ins|p}} == ภาษาอิตาลี == === คำคุณศัพท์ === {{head|it|รูปคุณศัพท์}} # {{masculine plural of|it|sodio}} === คำสลับอักษร === * {{anagrams|it|a=dios|dosi|sido}} 2b4t9grlk2qb0f2ao0pmbdjll4kwdrv sods 0 2356334 5754394 2026-08-06T02:53:23Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754394 wikitext text/x-wiki == ภาษาลัตเวีย == === การออกเสียง === * {{lv-IPA|sùots|falling}} === คำนาม === {{lv-noun|m|1st}} # [[โทษ]], [[การลงโทษ]] {{attention|lv|Missing sense for a [[fine]]? This Latvian word is in that English word's translation table}} ==== การผันรูป ==== {{lv-decl-noun|sod|s|1st}} ==== ลูกคำ ==== * {{l|lv|nāvessods}}, {{l|lv|nāves sods}} == ภาษาอังกฤษ == === คำนาม === {{head|en|รูปนาม}} # {{plural of|en|sod}} === คำกริยา === {{head|en|รูปกริยา}} # {{inflection of|en|sod||s-verb-form}} === คำสลับอักษร === * {{anagrams|en|a=doss|Doss|doss|DSOs|SDOs|OSDs|dsos|DoSs|DOSS}} let9369hpdyd0jq5q02e0vix4px8azq nāvessods 0 2356335 5754395 2026-08-06T02:54:40Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754395 wikitext text/x-wiki == ภาษาลัตเวีย == {{swp|lv:}} [[ไฟล์:Exécution de Marie Antoinette le 16 octobre 1793.jpg|thumb|250px|Nāvessods (Francijā)]] === รูปแบบอื่น === * {{l|lv|nāves sods}} === รากศัพท์ === จาก{{compound|lv|nāves|sods|gloss1=ความตาย (สัมพันธการก)|gloss2=โทษ}} === การออกเสียง === {{rfap|lv}} === คำนาม === {{lv-noun|m|1st}} # [[โทษ]][[ประหาร]][[ชีวิต]], [[การลงโทษ]]ประหารชีวิต #: {{ux|lv|mūsdienu Latvijā '''nāvessods''' nav piemērojams|in modern Latvia the '''death penalty''' is not applied|inline=1}} #: {{ux|lv|decembrī, Valmieras pamalē, Karātavu kalnā, izpildīja lauka karatiesas piespriestos '''nāvessodus''' vienpadsmit komunistiem un komjauniešiem|in December, in the outskirts of Valmiera, on Karatāvu hill, (they) carried out the '''death penalties''', ordered by military tribunal, of eleven communists and Komosomol members|inline=1}} ==== การผันรูป ==== {{lv-decl-noun|nāvessod|s|1st}} ==== คำเกี่ยวข้อง ==== * {{l|lv|nāvēt}} * {{l|lv|nāvīgs}} * {{l|lv|nāvinieks}}, {{l|lv|nāviniece}} {{C|lv|Death|Law}} nxsaodec4a9letz3gqh1h8iwtsemcel nāves sods 0 2356336 5754396 2026-08-06T02:55:10Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754396 wikitext text/x-wiki == ภาษาลัตเวีย == === คำนาม === {{lv-noun|m|1st|head=[[nāves]] [[sods]]}} # [[โทษ]][[ประหาร]][[ชีวิต]], [[การลงโทษ]]ประหารชีวิต; {{alternative form of|lv|nāvessods}} ==== การผันรูป ==== {{lv-decl-noun|nāves sod|s|1st}} 26dh8mkg1689n5k19m184230983b7hj SDOs 0 2356337 5754397 2026-08-06T02:55:59Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754397 wikitext text/x-wiki == ภาษาอังกฤษ == === คำนาม === {{head|en|รูปนาม}} # {{inflection of|en|SDO||p}} === คำสลับอักษร === * {{anagrams|en|a=doss|Doss|doss|DSOs|OSDs|dsos|sods|DoSs|DOSS}} 7pr7g60hzygfg1rvuby23qwvsk2wh82 sodio 0 2356338 5754398 2026-08-06T02:58:37Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754398 wikitext text/x-wiki == ภาษากาลิเซีย == {{wp|gl:}} === คำนาม === {{gl-noun|m|-}} # [[โซเดียม]] {{C|gl|ธาตุเคมี|โลหะ}} == ภาษาเวเนโต == === คำนาม === {{vec-noun|sod|m|io|i}} # [[โซเดียม]] {{C|vec|ธาตุเคมี|โลหะ}} == ภาษาสเปน == {{chemical element box|es}} === รากศัพท์ === {{bor+|es|la-new|sodium}}, จาก{{der|es|it|soda}}; บัญญัติโดย [[w:Humphrey Davy|H. Davy]], 1778-1829, นักฟิสิกส์และนักเคมีชาวอังกฤษผู้ค้นพบสิ่งนี้ === การออกเสียง === {{es-pr|+<audio:LL-Q1321 (spa)-Millars-sodio.wav>}} === คำนาม === {{es-noun|m|-}} # [[โซเดียม]] ==== ลูกคำ ==== {{col|es |bicarbonato de sodio |bisulfato de sodio |bomba de sodio |cloruro de sodio |nitrato de sodio }} === อ่านเพิ่ม === * {{R:es:DRAE}} {{C|es|โลหะ}} == ภาษาอารากอน == {{wp|an:}} === คำนาม === {{an-noun|m|-}} # [[โซเดียม]] {{C|an|ธาตุเคมี|โลหะ}} == ภาษาอิตาลี == {{wp|it:}} {{chemical element box|it}} === รากศัพท์ === จาก{{uder|it|la-new|sodium}}, เป็นไปได้ว่ารับมาจาก{{uder|it|ar|صُدَاع||อาการปวดหัว}} เนื่องจากมีคุณสมบัติช่วยบรรเทาอาการปวดหัว === การออกเสียง === {{it-pr|sòdio}} === คำนาม === {{it-noun|m}} # {{lb|it|chemistry}} [[โซเดียม]] ==== ลูกคำ ==== {{col4|it |acetato di sodio |allume di sodio |alluminato di sodio |azoturo di sodio |benzoato di sodio |bicarbonato di sodio |bisolfito di sodio |bromuro di sodio |carbonato di sodio |cianuro di sodio |cloruro di sodio |etanolato di sodio |etilato di sodio |fluoruro di sodio |fosfato di sodio |idrossido di sodio |ioduro di sodio |ipoclorito di sodio |metafosfato di sodio |metanolato di sodio |metilato di sodio |molibdato di sodio |nitrato di sodio |nitruro di sodio |salicilato di sodio |selenito di sodio |sodio-autunite |sodio-betpakdalite |sodio-boltwoodite |sodio-farmacosiderite |sodio-uranospinite |sodio-zippeite |sodio azide |sodio boroidruro |sodio cromoglicato |sodio meta-autunite |solfato di sodio |solfuro di sodio |tiosolfato di sodio }} ==== คำเกี่ยวข้อง ==== {{col4|it |soda |soda caustica |sodare |sodico }} === คำสลับอักษร === * {{anagrams|it|a=dioos|Dosio}} {{C|it|โลหะแอลคาไล|โลหะ|ธาตุเคมี}} csynm54au0zw8bp7cjob60zbcdhtr5a sedò 0 2356339 5754399 2026-08-06T03:00:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754399 wikitext text/x-wiki == ภาษาอิตาลี == === คำกริยา === {{head|it|รูปกริยา}} # {{inflection of|it|sedare||3|s|phis}} === คำสลับอักษร === * {{anagrams|it|a=deos|dose|sode}} hnm27azxwouo7nlk715lfxzjyejc0ch trese 0 2356340 5754400 2026-08-06T03:01:25Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754400 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|trece}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|tre|se}} === เลข === {{ceb-num|trése|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบสาม]] == ภาษาเซอร์โบ-โครเอเชีย == === คำกริยา === {{sh-verb form}} # {{inflection of|sh|tresti||3|s|pres}} == ภาษาตากาล็อก == {{number box|tl}} === รากศัพท์ === {{ety|tl|:bor|es:trece<t:thirteen>|text=+|tree=1}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-trese.wav}} === เลข === {{tl-num|b=+}} # {{cln|tl|cardinal numbers}} [[สิบสาม]] #: {{syn|tl|labintatlo}} #* {{quote-book |tl |year=2000 |author=Estrellita Valeros-Gruenberg |title=The De La Salle University Reader: Writings from the Different Regions of the Philipines |url=https://books.google.com/books?id=8YhkAAAAMAAJ&q=&redir_esc=y |page=228 |text='''Trese''' anyos pa lamang ako'y lumayas na ako sa amin. |t=I was only '''thirteen''' years old when I left my home. }} ==== คำเกี่ยวข้อง ==== {{col3|tl|Trece|Trece Martires|a-trese|tres|Biyernes Trese}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|trece}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|tre|se}} === เลข === {{bcl-head|numeral|trése|b=+}} # [[สิบสาม]] #: {{syn|bcl|kagtulo|sampulo may tulo}} ==== ดูเพิ่ม ==== {{col|bcl|tres|treynta|tres siyentos|tres mil}} {{cln|bcl|cardinal numbers}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|trece||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|trece}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|tre|se}} === เลข === {{ilo-head|numeral|trése|b=+}} # {{cln|ilo|cardinal numbers}} [[สิบสาม]] #: {{syn|ilo|sangapulo ket tallo}} 930umu3qd1y86nrmc1basp8gcwijtxh 5754401 5754400 2026-08-06T03:01:41Z Octahedron80 267 /* รากศัพท์ */ 5754401 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|trece}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|tre|se}} === เลข === {{ceb-num|trése|b=+}} # {{cln|ceb|cardinal numbers}} [[สิบสาม]] == ภาษาเซอร์โบ-โครเอเชีย == === คำกริยา === {{sh-verb form}} # {{inflection of|sh|tresti||3|s|pres}} == ภาษาตากาล็อก == {{number box|tl}} === รากศัพท์ === {{ety|tl|:bor|es:trece<t:สิบสาม>|text=+|tree=1}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-trese.wav}} === เลข === {{tl-num|b=+}} # {{cln|tl|cardinal numbers}} [[สิบสาม]] #: {{syn|tl|labintatlo}} #* {{quote-book |tl |year=2000 |author=Estrellita Valeros-Gruenberg |title=The De La Salle University Reader: Writings from the Different Regions of the Philipines |url=https://books.google.com/books?id=8YhkAAAAMAAJ&q=&redir_esc=y |page=228 |text='''Trese''' anyos pa lamang ako'y lumayas na ako sa amin. |t=I was only '''thirteen''' years old when I left my home. }} ==== คำเกี่ยวข้อง ==== {{col3|tl|Trece|Trece Martires|a-trese|tres|Biyernes Trese}} === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|trece}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|tre|se}} === เลข === {{bcl-head|numeral|trése|b=+}} # [[สิบสาม]] #: {{syn|bcl|kagtulo|sampulo may tulo}} ==== ดูเพิ่ม ==== {{col|bcl|tres|treynta|tres siyentos|tres mil}} {{cln|bcl|cardinal numbers}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|trece||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|trece}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|tre|se}} === เลข === {{ilo-head|numeral|trése|b=+}} # {{cln|ilo|cardinal numbers}} [[สิบสาม]] #: {{syn|ilo|sangapulo ket tallo}} b9tzexrj2wgabd0eqb1rfuqku5ulksd หมวดหมู่:เลขภาษาอีโลกาโน 14 2356341 5754402 2026-08-06T03:01:53Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5754402 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:เลขภาษาบีโคลตอนกลาง 14 2356342 5754403 2026-08-06T03:01:55Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5754403 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:เลขภาษาเซบัวโน 14 2356343 5754404 2026-08-06T03:02:04Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5754404 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx katorse 0 2356344 5754405 2026-08-06T03:02:47Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754405 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|catorce}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|ka|tor|se}} === เลข === {{ceb-num|katórse|b=+}} # [[สิบสี่]] #: {{syn|ceb|napulog upat}} {{cln|ceb|cardinal numbers}} == ภาษาตากาล็อก == {{number box|tl}} === รากศัพท์ === {{ety|tl|:bor|es:catorce|text=+|tree=1}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-katorse.wav}} === เลข === {{tl-num|b=+}} # [[สิบสี่]] #: {{syn|tl|labing-apat}} #* {{quote-web|tl|year=2017|author=Angellic Jordan|work=Radyo Inquirer 990 AM|title=14-anyos na babae, patay dahil sa dengue sa Albay|url=https://radyo.inquirer.net/81124/14-anyos-na-babae-patay-dahil-sa-dengue-sa-albay|text=Patay ang isang '''katorse''' anyos na babae sa probinsya ng Albay dahil sa sakit na dengue.|t=A '''fourteen'''-year-old woman in the province of Albay died of dengue illness.}} ==== คำเกี่ยวข้อง ==== {{col3|tl|a-katorse|kuwatro}} === คำสลับอักษร === * {{anagrams|tl|a=aekorst|orkesta}} {{cln|tl|cardinal numbers}} == ภาษาบีโคลตอนกลาง == === รากศัพท์ === {{bor+|bcl|es|catorce}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|ka|tor|se}} === เลข === {{bcl-head|numeral|katórse|b=+}} # [[สิบสี่]] #: {{syn|bcl|kag-apat|sampulo may apat}} ==== ดูเพิ่ม ==== {{col|bcl|kuwatro|kuwarena|kuwatro siyentos}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|catorce||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|catorce}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|ka|tor|se}} === เลข === {{ilo-head|numeral|katórse|b=+}} # {{cln|ilo|cardinal numbers}} [[สิบสี่]] #: {{syn|ilo|sangapulo ket uppat}} 1wrysgqfn53y562jqzbggejb1jhr77f kinse 0 2356345 5754408 2026-08-06T03:26:08Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754408 wikitext text/x-wiki == ภาษาเซบัวโน == {{number box|ceb}} === รากศัพท์ === {{bor+|ceb|es|quince}} === การออกเสียง === * {{ceb-IPA}} * {{hyph|ceb|kin|se}} === เลข === {{ceb-num|kínse|b=+}} # [[สิบห้า]] #: {{syn|ceb|napulog lima}} ==== คำเกี่ยวข้อง ==== {{col|ceb|kinsena}} {{cln|ceb|cardinal numbers}} == ภาษาตากาล็อก == {{number box|tl}} === การออกเสียง === {{tl-pr|audio=LL-Q34057 (tgl)-Geoffjop0908-kinse.wav}} === รากศัพท์ 1 === {{ety|tl|id=fifteen|:bor|es:quince|tree=1}} {{bor+|tl|es|quince}}, จาก{{der|tl|osp|quinze}}, จาก{{der|tl|la|quīndecim}} ==== เลข ==== {{tl-num|b=+}} # [[สิบห้า]] #: {{syn|tl|labinlima}} #* {{quote-book|tl|year=1999|title=Gleanings: Lessons in Community-based Coastal Resources Management|url=https://books.google.com/books?id=ZejaAAAAMAAJ&q=&redir_esc=y|page=22|text=Labing-walo kami. '''Kinseng''' lalaki at tatlong babae.|t=We are eighteen in total. '''Fifteen''' men and three women.}} ===== ลูกคำ ===== {{col3|tl|kinse-kinse|tigkinse|tigkikinse|ikakinse}} ===== คำเกี่ยวข้อง ===== {{col3|tl|kinsena|kinsenal|singko|diyes|a-kinse}} === รากศัพท์ 2 === {{ety|tl|id=foreshank|:bor<unc>|nan-hbl:腱子<tr:kiān-chí>|text=++|tree=1}} ==== คำนาม ==== {{tl-noun|b=+}} # เนื้อส่วนหน้า[[แข้ง]]ของ[[วัว]] ใช้ทำ[[ซุป]] === อ่านเพิ่ม === * {{R:Pambansang Diksiyonaryo}} * {{R:tl:Chan-Yap 1980|page=136}} {{cln|tl|cardinal numbers}} {{C|tl|สิบห้า|Cuts of meat|เนื้อ}} == ภาษาบีโคลตอนกลาง == {{number box|bcl}} === รากศัพท์ === {{bor+|bcl|es|quince}} === การออกเสียง === * {{bcl-IPA}} * {{hyph|bcl|kin|se}} === เลข === {{bcl-head|numeral|kínse|b=+}} # [[สิบห้า]] #: {{syn|bcl|kaglima|sampulo may lima}} ==== คำเกี่ยวข้อง ==== {{col|bcl|kinsena|kiniyentos|singko|singkuwenta}} == ภาษาอีโลกาโน == === รูปแบบอื่น === * {{alt|ilo|quince||obsolete|Abecedario orthography}} === รากศัพท์ === {{bor+|ilo|es|quince}} === การออกเสียง === * {{ilo-IPA}} * {{hyph|ilo|kin|se}} === เลข === {{ilo-head|numeral|kinse|b=+}} # {{cln|ilo|cardinal numbers}} [[สิบห้า]] #: {{syn|ilo|sangapulo ket lima}} == ภาษาแอลเบเนีย == === รากศัพท์ === {{univerbation|sq}} ของ {{m|sq|[[kini]] [[se]]||คุณมีว่า, คุณสันนิษฐานว่า}} === คำสันธาน === {{head|sq|คำสันธาน}} # เช่นว่า, เหมือนกับ, ราวกับว่า #: {{syn|sq|gjoja}} ==== คำเกี่ยวข้อง ==== {{col|sq|kish|se}} 9pm36k09x92in91z4djs0np63ejd5ox หมวดหมู่:คำสันธานภาษาแอลเบเนีย 14 2356346 5754412 2026-08-06T03:45:54Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5754412 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx calendier 0 2356347 5754413 2026-08-06T03:51:49Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754413 wikitext text/x-wiki == ภาษาอุตซิตา == === รูปแบบอื่น === * {{alter|oc|calendari||Gascony}} * {{alter|oc|calendièr||Languedoc}} === รากศัพท์ === จาก{{inh|oc|pro|calendier}}, จาก{{inh|oc|la-lat|calendārium}}, จาก{{inh|oc|la|calendae}} === คำนาม === {{oc-noun|m}} {{lb|oc|Limousin}} # [[ปฏิทิน]] (ระบบอธิบายเวลา) # ปฏิทิน (วัตถุ) {{c|oc|เวลา}} == ภาษาอุตซิตาเก่า == === รากศัพท์ === จาก{{inh|pro|la-lat|calendārium}}, จาก{{inh|pro|la|calendae}} === คำนาม === {{pro-noun|m}} # [[ปฏิทิน]] (ระบบอธิบายเวลา) # ปฏิทิน (วัตถุ) ==== คำสืบทอด ==== {{top2}} * {{desc|oc|calendier|calendièr}} {{bottom}} {{c|pro|เวลา}} 0bjf9tojw1r7979twl881j9hbtl0e3w kalendertje 0 2356348 5754418 2026-08-06T04:08:31Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754418 wikitext text/x-wiki == ภาษาดัตช์ == === การออกเสียง === * {{audio|nl|Nl-kalendertje.ogg}} === คำนาม === {{nl-noun-dim}} # {{diminutive of|nl|kalender}} k944pcn31jyj24xnb24wxyato06oznw kalendre 0 2356349 5754419 2026-08-06T04:08:47Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754419 wikitext text/x-wiki == ภาษานอร์เวย์แบบบุ๊กมอล == === รูปแบบอื่น === * {{alt|nb|kalendere}} * {{alt|nb|kalendrer}} === คำนาม === {{head|nb|รูปนาม|g=m}} # {{inflection of|nb|kalender||indefinite|p}} 6xvuprcv1chhuwksk7gutb0y6jisi0c kalendrer 0 2356350 5754420 2026-08-06T04:08:50Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754420 wikitext text/x-wiki == ภาษานอร์เวย์แบบบุ๊กมอล == === รูปแบบอื่น === * {{alt|nb|kalendere}} * {{alt|nb|kalendre}} === คำนาม === {{head|nb|รูปนาม|g=m}} # {{inflection of|nb|kalender||indefinite|p}} dkcshfqzurf13eamve44fxngnfi6y04 kalendrene 0 2356351 5754421 2026-08-06T04:08:53Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754421 wikitext text/x-wiki == ภาษานอร์เวย์แบบบุ๊กมอล == === รูปแบบอื่น === * {{alt|nb|kalenderne}} === คำนาม === {{head|nb|รูปนาม|g=m}} # {{inflection of|nb|kalender||definite|p}} etvenctun7l6svborg51jngyw8oad5r kalendrar 0 2356352 5754425 2026-08-06T04:09:39Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754425 wikitext text/x-wiki == ภาษานอร์เวย์แบบนือนอสก์ == === คำนาม === {{head|nn|รูปนาม|head=kalendrar|g=m}} # {{inflection of|nn|kalender||indef|p}} == ภาษาสวีเดน == === คำนาม === {{head|sv|รูปนาม}} # {{noun form of|sv|kalender||indef|p}} kz87euvl0vimm2fl33gjkddcrslrty6 kalendrane 0 2356353 5754426 2026-08-06T04:09:42Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754426 wikitext text/x-wiki == ภาษานอร์เวย์แบบนือนอสก์ == === คำนาม === {{head|nn|รูปนาม|head=kalendrane|g=m}} # {{inflection of|nn|kalender||def|p}} lwez0cnfmert6xup4hwbmg3g5enk41o kalendyn 0 2356354 5754427 2026-08-06T04:10:11Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754427 wikitext text/x-wiki == ภาษาวีลามอวิตแซ == === คำนาม === {{head|wym|รูปนาม}} # {{plural of|wym|kalender}} 7zqqxefkbjjqv8y0mgtfiacrv43nbbf calendder 0 2356355 5754428 2026-08-06T04:10:29Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754428 wikitext text/x-wiki == ภาษาอังกฤษกลาง == === คำนาม === {{head|enm|คำนาม|altform=1}} # {{alternative form of|enm|kalender}} 21tnp6yrfkxepitjso8z91bxrl4szp1 calendre 0 2356356 5754429 2026-08-06T04:10:46Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754429 wikitext text/x-wiki == ภาษาอังกฤษกลาง == === คำนาม === {{head|enm|คำนาม|altform=1}} # {{alternative form of|enm|kalender}} 21tnp6yrfkxepitjso8z91bxrl4szp1 kalunder 0 2356357 5754430 2026-08-06T04:10:50Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754430 wikitext text/x-wiki == ภาษาอังกฤษกลาง == === คำนาม === {{head|enm|คำนาม|altform=1}} # {{alternative form of|enm|kalender}} 21tnp6yrfkxepitjso8z91bxrl4szp1 calundere 0 2356358 5754431 2026-08-06T04:10:53Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754431 wikitext text/x-wiki == ภาษาอังกฤษกลาง == === คำนาม === {{head|enm|คำนาม|altform=1}} # {{alternative form of|enm|kalender}} 21tnp6yrfkxepitjso8z91bxrl4szp1 หมวดหมู่:รูปนามภาษาวีลามอวิตแซ 14 2356359 5754432 2026-08-06T04:10:57Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5754432 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx หมวดหมู่:รูปผันภาษาวีลามอวิตแซ 14 2356360 5754433 2026-08-06T04:10:58Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5754433 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx calendr 0 2356361 5754434 2026-08-06T04:11:28Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754434 wikitext text/x-wiki == ภาษาเวลส์ == === รูปแบบอื่น === * {{alt|cy|calendar|calender|calander|clander}} === รากศัพท์ === {{bor+|cy|enm|calender}} === คำนาม === {{cy-noun|m|calendrau}} # [[ปฏิทิน]] ==== ลูกคำ ==== * {{l|cy|calendraidd}} * {{l|cy|calendro}} === อ่านเพิ่ม === * {{R:cy:Gweiadur}} * {{R:cy:GPC}} {{c|cy|เวลา}} oeshegy6opq0eh06ef11siyw59rmf3s หมวดหมู่:ศัพท์ภาษาอินโดนีเซียที่รับมาจากภาษาฝรั่งเศสกลาง 14 2356362 5754435 2026-08-06T04:12:07Z Octahedron80 267 สร้างหมวดหมู่อัตโนมัติ 5754435 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx almanacka 0 2356363 5754436 2026-08-06T04:13:26Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754436 wikitext text/x-wiki == ภาษาสวีเดน == === คำนาม === {{sv-noun|c}} # [[ปฏิทิน]] #: {{syn|sv|kalender}} # [[กาลานุกรม]] ==== การผันรูป ==== {{sv-infl-noun-c-or}} === อ้างอิง === * {{R:svenska.se|so}} * {{R:svenska.se|saob}} h4n8jys4992ukvdgbp34j8df7r0j8fp มอดูล:etymon/tracking 828 2356364 5754441 2026-08-06T04:31:39Z Octahedron80 267 สร้างหน้าด้วย "--[=[ Documentation: [[WT:Tracking#Etymon]]. ]=] local export = {} local M = require("Module:module loader").init({ require = { track = "Module:debug/track", }, }) local DEPTH_RANGES = { { min = 50, label = "extremely-deep" }, { min = 20, label = "20+" }, { min = 10, max = 19, label = "10-19" }, { min = 5, max = 9, label = "5-9" }, { min = 3, max = 4, label = "3-4" }, { max = 2, label = "1-2" }, } local NODE_RANGES = { { min = 100,..." 5754441 Scribunto text/plain --[=[ Documentation: [[WT:Tracking#Etymon]]. ]=] local export = {} local M = require("Module:module loader").init({ require = { track = "Module:debug/track", }, }) local DEPTH_RANGES = { { min = 50, label = "extremely-deep" }, { min = 20, label = "20+" }, { min = 10, max = 19, label = "10-19" }, { min = 5, max = 9, label = "5-9" }, { min = 3, max = 4, label = "3-4" }, { max = 2, label = "1-2" }, } local NODE_RANGES = { { min = 100, label = "extremely-large" }, { min = 50, label = "50+" }, { min = 20, max = 49, label = "20-49" }, { min = 10, max = 19, label = "10-19" }, { min = 5, max = 9, label = "5-9" }, { max = 4, label = "1-4" }, } local LANGUAGE_RANGES = { { min = 10, label = "10+" }, { min = 5, max = 9, label = "5-9" }, { min = 3, max = 4, label = "3-4" }, { exact = 2, label = "2" }, { exact = 1, label = "1" }, } local TERM_PAGE_NORMALIZERS = { { pattern = "^Reconstruction:[^/]+/(.+)$", normalize = function(term) if term:sub(1, 1) ~= "*" then return "*" .. term end return term end, }, { pattern = "^Appendix:[^/]+/(.+)$", normalize = function(term) return term end, }, } local function normalize_term_page(term_page) local page = tostring(term_page) for _, rule in ipairs(TERM_PAGE_NORMALIZERS) do local term = page:match(rule.pattern) if term then return rule.normalize(term) end end return page end local function sanitize_term_page(term_page) return normalize_term_page(term_page):gsub(":", "-"):gsub("/", "-"):gsub(" ", "_") end local function sanitize_track_segment(value) return tostring(value):gsub(":", "-"):gsub("/", "-"):gsub(" ", "_") end local function track_path(page_lang_code, path) M.track(path) if page_lang_code then M.track("etymon/lang/" .. page_lang_code .. "/" .. path:match("^etymon/(.+)$")) end end local function term_path(term_lang_code, term_page, ...) local safe_term = sanitize_term_page(term_page) local parts = { "etymon", "term", term_lang_code, safe_term } for i = 1, select("#", ...) do local segment = select(i, ...) if segment then table.insert(parts, segment) end end return table.concat(parts, "/") end local function term_id_path(term_lang_code, term_page, id_value, suffix) return term_path(term_lang_code, term_page, "id", sanitize_track_segment(id_value), suffix) end local function idless_term_path(term_lang_code, term_page, outcome) return term_path(term_lang_code, term_page, outcome) end local function mismatched_term_path(term_lang_code, term_page, id_value) return term_id_path(term_lang_code, term_page, id_value, "mismatched") end local function record_term_id(id_stats, term_lang_code, term_page, id_value, is_override) if not term_page or term_page == "" or not id_value or id_value == "" then return end id_stats.term_ids[term_lang_code] = id_stats.term_ids[term_lang_code] or {} id_stats.term_ids[term_lang_code][term_page] = id_stats.term_ids[term_lang_code][term_page] or {} local entry = id_stats.term_ids[term_lang_code][term_page][id_value] if not entry then entry = { count = 0, override = false } id_stats.term_ids[term_lang_code][term_page][id_value] = entry end entry.count = entry.count + 1 if is_override then entry.override = true end end local function record_idless_term(id_stats, term_lang_code, term_page) if not term_page or term_page == "" then return end id_stats.idless_terms[term_lang_code] = id_stats.idless_terms[term_lang_code] or {} local entry = id_stats.idless_terms[term_lang_code][term_page] if not entry then entry = { count = 0, outcomes = {} } id_stats.idless_terms[term_lang_code][term_page] = entry end entry.count = entry.count + 1 end local function track_ranges(base_key, value, ranges, lang_code) M.track("etymon/" .. base_key .. "/" .. value) if lang_code then M.track("etymon/lang/" .. lang_code .. "/" .. base_key .. "/" .. value) end for _, range in ipairs(ranges) do local matches = false if range.min and range.max then matches = value >= range.min and value <= range.max elseif range.min then matches = value >= range.min elseif range.max then matches = value <= range.max elseif range.exact then matches = value == range.exact end if matches then M.track("etymon/" .. base_key .. "/" .. range.label) if lang_code then M.track("etymon/lang/" .. lang_code .. "/" .. base_key .. "/" .. range.label) end break end end end function export.track_term(rest) if rest == "" then M.track("etymon/term/empty") elseif rest == "?" then M.track("etymon/term/question-mark") elseif rest == "-" then M.track("etymon/term/hyphen") end end function export.track_title_pagename_mismatch(lang) local lang_code = lang:getCode() M.track("etymon/title/pagename-mismatch-after-strip-diacritics") M.track("etymon/lang/" .. lang_code .. "/title/pagename-mismatch-after-strip-diacritics") end function export.record_keyword_usage(keyword_stats, keyword, target_lang, source_lang, is_toplevel) if not is_toplevel then return end if not keyword_stats[keyword] then keyword_stats[keyword] = { count = 0, target_langs = {}, source_langs = {}, } end local keyword_data = keyword_stats[keyword] keyword_data.count = keyword_data.count + 1 local target_code = target_lang:getCode() keyword_data.target_langs[target_code] = (keyword_data.target_langs[target_code] or 0) + 1 if source_lang then local source_code = source_lang:getCode() keyword_data.source_langs[source_code] = (keyword_data.source_langs[source_code] or 0) + 1 end end function export.track_tree_metrics(opts) local max_depth = opts.max_depth_reached if not max_depth or max_depth <= 0 then return end local lang_code = opts.lang:getCode() local total_nodes = opts.total_nodes local language_count = opts.language_count track_ranges("depth", max_depth, DEPTH_RANGES, lang_code) track_ranges("nodes", total_nodes, NODE_RANGES, lang_code) local unique_languages = 0 for _ in pairs(language_count) do unique_languages = unique_languages + 1 end track_ranges("unique-languages", unique_languages, LANGUAGE_RANGES, lang_code) if total_nodes == max_depth + 1 then track_ranges("linear-depth", max_depth, DEPTH_RANGES, lang_code) end end function export.track_keywords(keyword_stats, target_lang) local target_lang_code = target_lang:getCode() for keyword, keyword_data in pairs(keyword_stats) do M.track("etymon/keyword/" .. keyword) M.track("etymon/keyword/" .. keyword .. "/target/" .. target_lang_code) for source_code in pairs(keyword_data.source_langs) do M.track("etymon/keyword/" .. keyword .. "/source/" .. source_code) M.track("etymon/keyword/" .. keyword .. "/target/" .. target_lang_code .. "/source/" .. source_code) end end end function export.record_term_id_usage(id_stats, etymon_data, term_page) local term_lang_code = etymon_data.lang:getCode() if etymon_data.id and etymon_data.id ~= "" then record_term_id(id_stats, term_lang_code, term_page, etymon_data.id, etymon_data.override) else record_idless_term(id_stats, term_lang_code, term_page) end end function export.record_mismatched_id_usage(id_stats, term_lang, term_page, id_value) if not term_page or term_page == "" or not id_value or id_value == "" then return end local term_lang_code = term_lang:getCode() id_stats.mismatched_ids[term_lang_code] = id_stats.mismatched_ids[term_lang_code] or {} id_stats.mismatched_ids[term_lang_code][term_page] = id_stats.mismatched_ids[term_lang_code][term_page] or {} id_stats.mismatched_ids[term_lang_code][term_page][id_value] = (id_stats.mismatched_ids[term_lang_code][term_page][id_value] or 0) + 1 end function export.record_idless_resolution(id_stats, term_lang, term_page, outcome) if not term_page or term_page == "" then return end local term_lang_code = term_lang:getCode() id_stats.idless_terms[term_lang_code] = id_stats.idless_terms[term_lang_code] or {} local entry = id_stats.idless_terms[term_lang_code][term_page] if not entry then entry = { count = 0, outcomes = {} } id_stats.idless_terms[term_lang_code][term_page] = entry end entry.outcomes[outcome] = (entry.outcomes[outcome] or 0) + 1 end function export.track_text_stop_lang_missing(page_lang, stop_code) if not stop_code or stop_code == "" then return end local page_lang_code = page_lang:getCode() M.track("etymon/text/stop-lang/missing/" .. stop_code) M.track("etymon/lang/" .. page_lang_code .. "/text/stop-lang/missing/" .. stop_code) end function export.track_page_id(page_lang, id) local lang_code = page_lang:getCode() if id and id ~= "" then M.track("etymon/page-id/set") M.track("etymon/lang/" .. lang_code .. "/page-id/set") else M.track("etymon/page-id/unset") M.track("etymon/lang/" .. lang_code .. "/page-id/unset") end end function export.track_ids(id_stats, page_lang) local page_lang_code = page_lang:getCode() for term_lang_code, terms in pairs(id_stats.term_ids or {}) do for term_page, ids in pairs(terms) do for id_value, entry in pairs(ids) do if entry.count > 0 then track_path(page_lang_code, term_id_path(term_lang_code, term_page, id_value)) if entry.override then track_path(page_lang_code, term_id_path(term_lang_code, term_page, id_value, "override")) end end end end end for term_lang_code, terms in pairs(id_stats.idless_terms or {}) do for term_page, entry in pairs(terms) do if entry.count > 0 then track_path(page_lang_code, idless_term_path(term_lang_code, term_page)) end for outcome, count in pairs(entry.outcomes or {}) do if count > 0 then track_path(page_lang_code, idless_term_path(term_lang_code, term_page, outcome)) end end end end for term_lang_code, terms in pairs(id_stats.mismatched_ids or {}) do for term_page, ids in pairs(terms) do for id_value, count in pairs(ids) do if count > 0 then track_path(page_lang_code, mismatched_term_path(term_lang_code, term_page, id_value)) end end end end end function export.new_id_stats() return { term_ids = {}, idless_terms = {}, mismatched_ids = {}, } end return export 1a6uqo8jj8m8p5gt11ki7rx17qdrf11 มอดูล:etymon/descendants 828 2356365 5754443 2026-08-06T04:37:07Z Octahedron80 267 สร้างหน้าด้วย "local export = {} local M = require("Module:module loader").init({ require = { template_parser = "Module:template parser", links = "Module:links", languages = "Module:languages", }, }) local TRACKABLE_KEYWORDS = { inherited = true, bor = true, lbor = true, slbor = true, derived = true, uder = true, } local DESCENDANT_TEMPLATES = { ["desc"] = true, ["descendant"] = true, ["desctree"] = true, ["descendants tree"] = true, } local..." 5754443 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { template_parser = "Module:template parser", links = "Module:links", languages = "Module:languages", }, }) local TRACKABLE_KEYWORDS = { inherited = true, bor = true, lbor = true, slbor = true, derived = true, uder = true, } local DESCENDANT_TEMPLATES = { ["desc"] = true, ["descendant"] = true, ["desctree"] = true, ["descendants tree"] = true, } local SKIPPED_TERMS = { [""] = true, ["-"] = true, } local CHECK_MISSING_HEADER = { missing_header = true, missing_entry = false } local STRIPPED_REF_TEMPLATES = { ref = true, refn = true, } local ENABLE_DESCENDANTS_TRACKING = false local function _resolve_explicit_cache_id(explicit_id, parent_etymon) if parent_etymon then return parent_etymon.id or "*" end return explicit_id end local function _resolve_single_cache_id(id_data) return (type(id_data) == "table" and id_data.id) or id_data or "*" end local function _resolve_cache_id(lookup) if not lookup then return nil end if lookup.id then return lookup.id end if lookup.explicit_id then return _resolve_explicit_cache_id(lookup.explicit_id, lookup.parent_etymon) end if lookup.id_data ~= nil then return _resolve_single_cache_id(lookup.id_data) end return nil end local function _get_cached_check(cache_table, is_toplevel, base_key, cache_id) if not is_toplevel or not cache_table or not base_key or not cache_id then return nil end return cache_table[base_key .. ":" .. cache_id] end local function _store_checks(cache_table, lang_page_key, checks_by_id, redirected_from) if not cache_table or not lang_page_key or not checks_by_id then return end for id, check in pairs(checks_by_id) do cache_table[lang_page_key .. ":" .. id] = check end if redirected_from then for id, check in pairs(checks_by_id) do cache_table[redirected_from .. ":" .. id] = check end end end local function _strip_refs(value) if type(value) ~= "string" or value == "" then return value end local get_node_class = M.template_parser.class_else_type local function trim_local(text) return (type(text) == "string" and text:match("^%s*(.-)%s*$")) or "" end local function lower_local(text) return text and mw.ustring.lower(text) or text end local function template_name_unexpanded(template_node) return lower_local(trim_local(tostring(template_node[1]) or "")) end local function stringify_without_ref_templates(node) if type(node) ~= "table" then return node == nil and "" or tostring(node) end local node_class = get_node_class(node) if node_class == "template" and STRIPPED_REF_TEMPLATES[template_name_unexpanded(node)] then return "" end if node_class == "template" then return tostring(node) end if node_class == "heading" then return tostring(node) end if node_class and node_class ~= "wikitext" then return tostring(node) end local pieces = {} for i = 1, #node do pieces[i] = stringify_without_ref_templates(node[i]) end return table.concat(pieces) end local parsed = M.template_parser.parse(value) local cleaned = stringify_without_ref_templates(parsed) local changed = true while changed do local next_cleaned = mw.ustring.gsub(cleaned, "<%s*[Rr][Ee][Ff][^>]-/>", "") next_cleaned = mw.ustring.gsub(next_cleaned, "<%s*[Rr][Ee][Ff][^>]*>.-<%s*/%s*[Rr][Ee][Ff]%s*>", "") next_cleaned = mw.ustring.gsub(next_cleaned, "{{%s*[Rr][Ee][Ff]%s*}}", "") next_cleaned = mw.ustring.gsub(next_cleaned, "{{%s*[Rr][Ee][Ff]%s*|[^{}]-}}", "") changed = next_cleaned ~= cleaned cleaned = next_cleaned end return cleaned end local function _trim(value) if type(value) ~= "string" then return nil end return value:match("^%s*(.-)%s*$") end local function _lower(value) return value and mw.ustring.lower(value) or value end local function _is_index_in_range(index, start_index, end_index) return index and index >= start_index and index <= end_index end local function _build_parse_index(lang_section) local parsed = M.template_parser.parse(lang_section) local headings = {} local templates = {} for heading in parsed:iterate_nodes("heading") do local heading_name = heading:get_name() table.insert(headings, { index = heading.index or 1, level = heading.level or 0, name = heading_name and _lower(_trim(heading_name) or "") or nil, length = #tostring(heading), }) end for template in parsed:iterate_nodes("template") do local template_name = template:get_name() local template_args = template:get_arguments() table.insert(templates, { index = template.index or 1, name = template_name and _lower(_trim(template_name) or "") or "", args = template_args or {}, }) end return { headings = headings, templates = templates, } end local function _build_regions(lang_section, headings) local content_length = #lang_section local etymology_headings = {} for _, heading in ipairs(headings) do if heading.level == 3 and heading.name and mw.ustring.match(heading.name, "^etymology") then table.insert(etymology_headings, heading) end end if #etymology_headings == 0 then return { { start_index = 1, end_index = content_length } } end local regions = {} for i = 1, #etymology_headings do local heading = etymology_headings[i] local next_heading = etymology_headings[i + 1] local start_index = heading.index local end_index = next_heading and (next_heading.index - 1) or content_length if i == 1 and heading.index > 1 then local preamble = lang_section:sub(1, heading.index - 1) if preamble:match("%S") then start_index = 1 end end table.insert(regions, { start_index = start_index, end_index = end_index, }) end return regions end local function _count_region_etymons(region, templates, etymon_lang_code) local count = 0 for _, template in ipairs(templates) do if _is_index_in_range(template.index, region.start_index, region.end_index) and template.name == "etymon" and template.args[1] == etymon_lang_code then count = count + 1 end end return count end local function _get_descendants_sections(region, headings) local sections = {} for i = 1, #headings do local heading = headings[i] if _is_index_in_range(heading.index, region.start_index, region.end_index) and heading.name == "descendants" then local body_start = heading.index + heading.length local body_end = region.end_index for j = i + 1, #headings do local next_heading = headings[j] if next_heading.index > region.end_index then break end if next_heading.level <= heading.level then body_end = next_heading.index - 1 break end end table.insert(sections, { start_index = body_start, end_index = body_end, }) end end return sections end local function _template_lang_matches_entry(template_lang_code, entry_full_code, cache) local normalized_code = _trim(template_lang_code) if not normalized_code or normalized_code == "" then return false end local cached = cache[normalized_code] if cached ~= nil then return cached end local template_lang = M.languages.getByCode(normalized_code, nil, true) local is_match = template_lang and template_lang:getFullCode() == entry_full_code or false cache[normalized_code] = is_match return is_match end local function _template_lists_target(template_args, first_term_index, target_page_lower, entry_lang) for arg_index = first_term_index, #template_args do local template_term = _trim(template_args[arg_index]) if template_term and not SKIPPED_TERMS[template_term] then if _lower(template_term) == target_page_lower then return true end local template_page = M.links.get_link_page(template_term, entry_lang) if _lower(template_page) == target_page_lower then return true end end end return false end local function _is_target_listed_in_descendants(descendants_sections, templates, entry_title, entry_lang) if #descendants_sections == 0 then return false end local target_page = M.links.get_link_page(entry_title, entry_lang) local target_page_lower = _lower(target_page) local entry_full_code = entry_lang:getFullCode() local lang_match_cache = {} for _, section in ipairs(descendants_sections) do for _, template in ipairs(templates) do if _is_index_in_range(template.index, section.start_index, section.end_index) and DESCENDANT_TEMPLATES[template.name] then local lang_arg_index = nil for arg_index = 1, #template.args do if _template_lang_matches_entry(template.args[arg_index], entry_full_code, lang_match_cache) then lang_arg_index = arg_index break end end if lang_arg_index and _template_lists_target(template.args, lang_arg_index + 1, target_page_lower, entry_lang) then return true end end end end return false end local function _region_has_descendant_template(region, templates) for _, template in ipairs(templates) do if _is_index_in_range(template.index, region.start_index, region.end_index) and DESCENDANT_TEMPLATES[template.name] then return true end end return false end local function _get_region_check(region, parsed_index, entry_title, entry_lang) local descendants_sections = _get_descendants_sections(region, parsed_index.headings) if #descendants_sections == 0 then if _region_has_descendant_template(region, parsed_index.templates) then local fallback_sections = { { start_index = region.start_index, end_index = region.end_index, } } return { missing_header = false, missing_entry = not _is_target_listed_in_descendants(fallback_sections, parsed_index.templates, entry_title, entry_lang), } end return CHECK_MISSING_HEADER end return { missing_header = false, missing_entry = not _is_target_listed_in_descendants(descendants_sections, parsed_index.templates, entry_title, entry_lang), } end local function _build_checks_by_id(lang_section, etymon_lang_code, found_templates_for_lang, entry_title, entry_lang) local checks_by_id = {} local parsed_index = _build_parse_index(lang_section) local regions = _build_regions(lang_section, parsed_index.headings) local template_list_index = 1 local mapping_failed = false for _, region in ipairs(regions) do local region_etymon_count = _count_region_etymons(region, parsed_index.templates, etymon_lang_code) local region_check = nil if region_etymon_count > 0 then region_check = _get_region_check(region, parsed_index, entry_title, entry_lang) end for _ = 1, region_etymon_count do local found_template_args = found_templates_for_lang[template_list_index] if not found_template_args then mapping_failed = true break end checks_by_id[found_template_args.id or "*"] = region_check template_list_index = template_list_index + 1 end if mapping_failed then break end end if mapping_failed or template_list_index ~= (#found_templates_for_lang + 1) then local global_region = { start_index = 1, end_index = #lang_section } local fallback_check = _get_region_check(global_region, parsed_index, entry_title, entry_lang) checks_by_id = {} for _, template_args in ipairs(found_templates_for_lang) do checks_by_id[template_args.id or "*"] = fallback_check end end return checks_by_id end local function _compute_checks_for_page(opts) opts = opts or {} local found_templates_for_lang = opts.found_templates_for_lang or {} if #found_templates_for_lang == 0 then return {} end local entry_title = opts.entry_title local entry_lang = opts.entry_lang local etymon_lang_code = opts.etymon_lang_code if not entry_title or not entry_lang or not etymon_lang_code then return {} end local sanitized_lang_section = _strip_refs(opts.lang_section or "") return _build_checks_by_id( sanitized_lang_section, etymon_lang_code, found_templates_for_lang, entry_title, entry_lang ) end function export.cache_page_checks(opts) if not ENABLE_DESCENDANTS_TRACKING then return {} end opts = opts or {} local cache_table = opts.cached_descendants_checks local lang_page_key = opts.lang_page_key if not cache_table or not lang_page_key then return {} end local checks_by_id = _compute_checks_for_page(opts) _store_checks(cache_table, lang_page_key, checks_by_id, opts.redirected_from) return checks_by_id end function export.get_lookup_check(opts) if not ENABLE_DESCENDANTS_TRACKING then return nil end opts = opts or {} return _get_cached_check( opts.cached_descendants_checks, opts.is_toplevel, opts.base_key, _resolve_cache_id(opts.lookup) ) end function export.get_term_sync_flags(keyword, term_status, descendants_check) if not ENABLE_DESCENDANTS_TRACKING then return false, false end local should_track = term_status == "ok" and TRACKABLE_KEYWORDS[keyword] == true and descendants_check ~= nil if not should_track then return false, false end return descendants_check.missing_header or false, descendants_check.missing_entry or false end return export njoa75ldlbxvifpj024ykipfx44kfcd 5754447 5754443 2026-08-06T04:47:08Z Octahedron80 267 5754447 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { template_parser = "Module:template parser", links = "Module:links", languages = "Module:languages", }, }) local TRACKABLE_KEYWORDS = { inherited = true, bor = true, lbor = true, slbor = true, derived = true, uder = true, } local DESCENDANT_TEMPLATES = { ["desc"] = true, ["descendant"] = true, ["desctree"] = true, ["descendants tree"] = true, } local SKIPPED_TERMS = { [""] = true, ["-"] = true, } local CHECK_MISSING_HEADER = { missing_header = true, missing_entry = false } local STRIPPED_REF_TEMPLATES = { ref = true, refn = true, } local ENABLE_DESCENDANTS_TRACKING = false local function _resolve_explicit_cache_id(explicit_id, parent_etymon) if parent_etymon then return parent_etymon.id or "*" end return explicit_id end local function _resolve_single_cache_id(id_data) return (type(id_data) == "table" and id_data.id) or id_data or "*" end local function _resolve_cache_id(lookup) if not lookup then return nil end if lookup.id then return lookup.id end if lookup.explicit_id then return _resolve_explicit_cache_id(lookup.explicit_id, lookup.parent_etymon) end if lookup.id_data ~= nil then return _resolve_single_cache_id(lookup.id_data) end return nil end local function _get_cached_check(cache_table, is_toplevel, base_key, cache_id) if not is_toplevel or not cache_table or not base_key or not cache_id then return nil end return cache_table[base_key .. ":" .. cache_id] end local function _store_checks(cache_table, lang_page_key, checks_by_id, redirected_from) if not cache_table or not lang_page_key or not checks_by_id then return end for id, check in pairs(checks_by_id) do cache_table[lang_page_key .. ":" .. id] = check end if redirected_from then for id, check in pairs(checks_by_id) do cache_table[redirected_from .. ":" .. id] = check end end end local function _strip_refs(value) if type(value) ~= "string" or value == "" then return value end local get_node_class = M.template_parser.class_else_type local function trim_local(text) return (type(text) == "string" and text:match("^%s*(.-)%s*$")) or "" end local function lower_local(text) return text and mw.ustring.lower(text) or text end local function template_name_unexpanded(template_node) return lower_local(trim_local(tostring(template_node[1]) or "")) end local function stringify_without_ref_templates(node) if type(node) ~= "table" then return node == nil and "" or tostring(node) end local node_class = get_node_class(node) if node_class == "template" and STRIPPED_REF_TEMPLATES[template_name_unexpanded(node)] then return "" end if node_class == "template" then return tostring(node) end if node_class == "heading" then return tostring(node) end if node_class and node_class ~= "wikitext" then return tostring(node) end local pieces = {} for i = 1, #node do pieces[i] = stringify_without_ref_templates(node[i]) end return table.concat(pieces) end local parsed = M.template_parser.parse(value) local cleaned = stringify_without_ref_templates(parsed) local changed = true while changed do local next_cleaned = mw.ustring.gsub(cleaned, "<%s*[Rr][Ee][Ff][^>]-/>", "") next_cleaned = mw.ustring.gsub(next_cleaned, "<%s*[Rr][Ee][Ff][^>]*>.-<%s*/%s*[Rr][Ee][Ff]%s*>", "") next_cleaned = mw.ustring.gsub(next_cleaned, "{{%s*[Rr][Ee][Ff]%s*}}", "") next_cleaned = mw.ustring.gsub(next_cleaned, "{{%s*[Rr][Ee][Ff]%s*|[^{}]-}}", "") changed = next_cleaned ~= cleaned cleaned = next_cleaned end return cleaned end local function _trim(value) if type(value) ~= "string" then return nil end return value:match("^%s*(.-)%s*$") end local function _lower(value) return value and mw.ustring.lower(value) or value end local function _is_index_in_range(index, start_index, end_index) return index and index >= start_index and index <= end_index end local function _build_parse_index(lang_section) local parsed = M.template_parser.parse(lang_section) local headings = {} local templates = {} for heading in parsed:iterate_nodes("heading") do local heading_name = heading:get_name() table.insert(headings, { index = heading.index or 1, level = heading.level or 0, name = heading_name and _lower(_trim(heading_name) or "") or nil, length = #tostring(heading), }) end for template in parsed:iterate_nodes("template") do local template_name = template:get_name() local template_args = template:get_arguments() table.insert(templates, { index = template.index or 1, name = template_name and _lower(_trim(template_name) or "") or "", args = template_args or {}, }) end return { headings = headings, templates = templates, } end local function _build_regions(lang_section, headings) local content_length = #lang_section local etymology_headings = {} for _, heading in ipairs(headings) do if heading.level == 3 and heading.name and mw.ustring.match(heading.name, "^รากศัพท์") then table.insert(etymology_headings, heading) end end if #etymology_headings == 0 then return { { start_index = 1, end_index = content_length } } end local regions = {} for i = 1, #etymology_headings do local heading = etymology_headings[i] local next_heading = etymology_headings[i + 1] local start_index = heading.index local end_index = next_heading and (next_heading.index - 1) or content_length if i == 1 and heading.index > 1 then local preamble = lang_section:sub(1, heading.index - 1) if preamble:match("%S") then start_index = 1 end end table.insert(regions, { start_index = start_index, end_index = end_index, }) end return regions end local function _count_region_etymons(region, templates, etymon_lang_code) local count = 0 for _, template in ipairs(templates) do if _is_index_in_range(template.index, region.start_index, region.end_index) and template.name == "etymon" and template.args[1] == etymon_lang_code then count = count + 1 end end return count end local function _get_descendants_sections(region, headings) local sections = {} for i = 1, #headings do local heading = headings[i] if _is_index_in_range(heading.index, region.start_index, region.end_index) and heading.name == "คำสืบทอด" then local body_start = heading.index + heading.length local body_end = region.end_index for j = i + 1, #headings do local next_heading = headings[j] if next_heading.index > region.end_index then break end if next_heading.level <= heading.level then body_end = next_heading.index - 1 break end end table.insert(sections, { start_index = body_start, end_index = body_end, }) end end return sections end local function _template_lang_matches_entry(template_lang_code, entry_full_code, cache) local normalized_code = _trim(template_lang_code) if not normalized_code or normalized_code == "" then return false end local cached = cache[normalized_code] if cached ~= nil then return cached end local template_lang = M.languages.getByCode(normalized_code, nil, true) local is_match = template_lang and template_lang:getFullCode() == entry_full_code or false cache[normalized_code] = is_match return is_match end local function _template_lists_target(template_args, first_term_index, target_page_lower, entry_lang) for arg_index = first_term_index, #template_args do local template_term = _trim(template_args[arg_index]) if template_term and not SKIPPED_TERMS[template_term] then if _lower(template_term) == target_page_lower then return true end local template_page = M.links.get_link_page(template_term, entry_lang) if _lower(template_page) == target_page_lower then return true end end end return false end local function _is_target_listed_in_descendants(descendants_sections, templates, entry_title, entry_lang) if #descendants_sections == 0 then return false end local target_page = M.links.get_link_page(entry_title, entry_lang) local target_page_lower = _lower(target_page) local entry_full_code = entry_lang:getFullCode() local lang_match_cache = {} for _, section in ipairs(descendants_sections) do for _, template in ipairs(templates) do if _is_index_in_range(template.index, section.start_index, section.end_index) and DESCENDANT_TEMPLATES[template.name] then local lang_arg_index = nil for arg_index = 1, #template.args do if _template_lang_matches_entry(template.args[arg_index], entry_full_code, lang_match_cache) then lang_arg_index = arg_index break end end if lang_arg_index and _template_lists_target(template.args, lang_arg_index + 1, target_page_lower, entry_lang) then return true end end end end return false end local function _region_has_descendant_template(region, templates) for _, template in ipairs(templates) do if _is_index_in_range(template.index, region.start_index, region.end_index) and DESCENDANT_TEMPLATES[template.name] then return true end end return false end local function _get_region_check(region, parsed_index, entry_title, entry_lang) local descendants_sections = _get_descendants_sections(region, parsed_index.headings) if #descendants_sections == 0 then if _region_has_descendant_template(region, parsed_index.templates) then local fallback_sections = { { start_index = region.start_index, end_index = region.end_index, } } return { missing_header = false, missing_entry = not _is_target_listed_in_descendants(fallback_sections, parsed_index.templates, entry_title, entry_lang), } end return CHECK_MISSING_HEADER end return { missing_header = false, missing_entry = not _is_target_listed_in_descendants(descendants_sections, parsed_index.templates, entry_title, entry_lang), } end local function _build_checks_by_id(lang_section, etymon_lang_code, found_templates_for_lang, entry_title, entry_lang) local checks_by_id = {} local parsed_index = _build_parse_index(lang_section) local regions = _build_regions(lang_section, parsed_index.headings) local template_list_index = 1 local mapping_failed = false for _, region in ipairs(regions) do local region_etymon_count = _count_region_etymons(region, parsed_index.templates, etymon_lang_code) local region_check = nil if region_etymon_count > 0 then region_check = _get_region_check(region, parsed_index, entry_title, entry_lang) end for _ = 1, region_etymon_count do local found_template_args = found_templates_for_lang[template_list_index] if not found_template_args then mapping_failed = true break end checks_by_id[found_template_args.id or "*"] = region_check template_list_index = template_list_index + 1 end if mapping_failed then break end end if mapping_failed or template_list_index ~= (#found_templates_for_lang + 1) then local global_region = { start_index = 1, end_index = #lang_section } local fallback_check = _get_region_check(global_region, parsed_index, entry_title, entry_lang) checks_by_id = {} for _, template_args in ipairs(found_templates_for_lang) do checks_by_id[template_args.id or "*"] = fallback_check end end return checks_by_id end local function _compute_checks_for_page(opts) opts = opts or {} local found_templates_for_lang = opts.found_templates_for_lang or {} if #found_templates_for_lang == 0 then return {} end local entry_title = opts.entry_title local entry_lang = opts.entry_lang local etymon_lang_code = opts.etymon_lang_code if not entry_title or not entry_lang or not etymon_lang_code then return {} end local sanitized_lang_section = _strip_refs(opts.lang_section or "") return _build_checks_by_id( sanitized_lang_section, etymon_lang_code, found_templates_for_lang, entry_title, entry_lang ) end function export.cache_page_checks(opts) if not ENABLE_DESCENDANTS_TRACKING then return {} end opts = opts or {} local cache_table = opts.cached_descendants_checks local lang_page_key = opts.lang_page_key if not cache_table or not lang_page_key then return {} end local checks_by_id = _compute_checks_for_page(opts) _store_checks(cache_table, lang_page_key, checks_by_id, opts.redirected_from) return checks_by_id end function export.get_lookup_check(opts) if not ENABLE_DESCENDANTS_TRACKING then return nil end opts = opts or {} return _get_cached_check( opts.cached_descendants_checks, opts.is_toplevel, opts.base_key, _resolve_cache_id(opts.lookup) ) end function export.get_term_sync_flags(keyword, term_status, descendants_check) if not ENABLE_DESCENDANTS_TRACKING then return false, false end local should_track = term_status == "ok" and TRACKABLE_KEYWORDS[keyword] == true and descendants_check ~= nil if not should_track then return false, false end return descendants_check.missing_header or false, descendants_check.missing_entry or false end return export njkt84sxzs7ezbb24rflqm0wvm11e85 มอดูล:etymon/data/text allowed 828 2356366 5754444 2026-08-06T04:37:33Z Octahedron80 267 สร้างหน้าด้วย "--[=[ Languages and families that may use the {{etymon}} `text=` parameter (language-community consensus). ]=] return { -- Mode: "off" = disabled, "warn" = warn only, "error" = enforce. default_mode = "warn", langs = { ["ak"] = true, ["amf"] = true, ["bg"] = true, ["bnt-sab-pro"] = true, ["cs"] = true, ["en"] = true, ["eo"] = true, ["es"] = true, ["ext"] = true, ["fa"] = true, ["hsb"] = true, ["iir-pro"] = true, ["jbo"]..." 5754444 Scribunto text/plain --[=[ Languages and families that may use the {{etymon}} `text=` parameter (language-community consensus). ]=] return { -- Mode: "off" = disabled, "warn" = warn only, "error" = enforce. default_mode = "warn", langs = { ["ak"] = true, ["amf"] = true, ["bg"] = true, ["bnt-sab-pro"] = true, ["cs"] = true, ["en"] = true, ["eo"] = true, ["es"] = true, ["ext"] = true, ["fa"] = true, ["hsb"] = true, ["iir-pro"] = true, ["jbo"] = true, ["jdt"] = true, ["la"] = true, ["mul"] = true, ["ota"] = true, ["pap"] = true, ["ps"] = true, ["ro"] = true, ["sk"] = true, ["sw"] = true, ["tg"] = true, ["tl"] = true, ["tr"] = true, ["uk"] = true, ["uz"] = true, ["rsk"] = true, ["zlw-ocs"] = true, ["zlw-osk"] = true, ["zle-ono"] = true, ["sla-pro"] = true, -- Austronesian ["map-pro"] = true, ["map-ata-pro"] = true, ["poz-pro"] = true, ["poz-btk-pro"] = true, ["poz-cet-pro"] = true, ["pqe-pro"] = true, ["poz-hce-pro"] = true, ["poz-oce-pro"] = true, ["poz-pol-pro"] = true, ["poz-pnp-pro"] = true, ["poz-pep-pro"] = true, ["poz-mic-pro"] = true, ["poz-lgx-pro"] = true, ["poz-msa-pro"] = true, ["poz-mcm-pro"] = true, ["cmc-pro"] = true, ["poz-mly-pro"] = true, ["poz-swa-pro"] = true, ["btk-pro"] = true, ["phi-pro"] = true, ["phi-kal-pro"] = true, ["poz-ssw-pro"] = true, ["dru-pro"] = true, }, families = { ["ber"] = true, -- Berber ["dra"] = true, -- Dravidian ["inc"] = true, -- Indo-Aryan ["iir-nur"] = true, -- Nuristani ["mun"] = true, -- Munda ["roa-gap"] = true, -- Galician-Portuguese ["sem-ara"] = true, -- Aramaic ["sem-arb"] = true, -- Arabic ["tup"] = true, -- Tupian ["zlw-lch"] = true, -- Lechitic }, } ldni2a8freb3ayizw39d5qjebwlza0p มอดูล:etymon/doc 828 2356367 5754450 2026-08-06T04:54:10Z Octahedron80 267 สร้างหน้าด้วย "local export = {} local M = require("Module:module loader").init({ require = { families = "Module:families", languages = "Module:languages", inflection_table = "Module:inflection-table", }, loadData = { text_allowed = "Module:etymon/data/text_allowed", }, }) function export.text_allowed_list(frame) local data = M.text_allowed or {} local langs = data.langs or {} local families = data.families or {} local lang_cod..." 5754450 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { families = "Module:families", languages = "Module:languages", inflection_table = "Module:inflection-table", }, loadData = { text_allowed = "Module:etymon/data/text_allowed", }, }) function export.text_allowed_list(frame) local data = M.text_allowed or {} local langs = data.langs or {} local families = data.families or {} local lang_codes = {} for code in pairs(langs) do table.insert(lang_codes, code) end table.sort(lang_codes) local family_codes = {} for code in pairs(families) do table.insert(family_codes, code) end table.sort(family_codes) local function wrap_lang_code(lang_code) local lang_obj = M.languages.getByCode(lang_code, nil, true) local lang_name = lang_obj and lang_obj.getCanonicalName and lang_obj:getCanonicalName() if lang_name and lang_name ~= "" then return "<code>" .. lang_code .. "</code> <small>(" .. lang_name .. ")</small>" end return "<code>" .. lang_code .. "</code>" end local function wrap_family_code(family_code) local family_obj = M.families.getByCode(family_code) if not family_obj then return "<code>" .. family_code .. "</code>" end local family_name = family_obj.getCanonicalName and family_obj:getCanonicalName() if family_name and family_name ~= "" then return "<code>" .. family_code .. "</code> <small>(" .. family_name .. ")</small>" end return "<code>" .. family_code .. "</code>" end local function is_etymology_only_lang(lang_code) local lang_obj = M.languages.getByCode(lang_code, nil, true) return lang_obj and lang_obj.hasType and lang_obj:hasType("language", "etymology-only") end local function get_family_lang_codes(family_code) local family_obj = M.families.getByCode(family_code) if not family_obj or not family_obj.getDescendantCodes then return nil end local codes = family_obj:getDescendantCodes() if not codes or #codes == 0 then return nil end table.sort(codes) local out = {} for _, lang_code in ipairs(codes) do if not is_etymology_only_lang(lang_code) then out[#out + 1] = lang_code end end if #out == 0 then return nil end return out end local wikicode = M.inflection_table.make_top{ title = "Text allowlist", tall = "yes", } wikicode = wikicode .. "|-\n" wikicode = wikicode .. '! Code / family !! Languages' if #lang_codes > 0 then local lang_parts = {} for _, lang_code in ipairs(lang_codes) do if not is_etymology_only_lang(lang_code) then lang_parts[#lang_parts + 1] = wrap_lang_code(lang_code) end end if #lang_parts > 0 then wikicode = wikicode .. "\n|-\n" wikicode = wikicode .. "| '''Language codes''' || " .. table.concat(lang_parts, ", ") end end for _, family_code in ipairs(family_codes) do local codes = get_family_lang_codes(family_code) local lang_list if codes and #codes > 0 then local lang_parts = {} for _, code in ipairs(codes) do lang_parts[#lang_parts + 1] = wrap_lang_code(code) end lang_list = table.concat(lang_parts, ", ") else lang_list = "" end wikicode = wikicode .. "\n|-\n" wikicode = wikicode .. "| " .. wrap_family_code(family_code) .. " || " .. lang_list end wikicode = wikicode .. "\n" .. M.inflection_table.make_bottom{} wikicode = wikicode .. "\n\nThe list is maintained in [[Module:etymon/data/text_allowed]]. Mode is <code>" .. (data.default_mode or "off") .. "</code> (<code>off</code> = disabled, <code>warn</code> = warning only, <code>error</code> = enforce)." return wikicode end return export lbpjeun1f643cd4lm8957y719kfvmo0 มอดูล:etymon/documentation 828 2356368 5754451 2026-08-06T04:54:44Z Octahedron80 267 สร้างหน้าด้วย "This module implements the template {{tl|etymon}}. {{module cat|-|Etymology}}" 5754451 wikitext text/x-wiki This module implements the template {{tl|etymon}}. {{module cat|-|Etymology}} tler1s7m55nf6sqc8fir6d2oofs3lar แม่แบบ:etymon/documentation 10 2356369 5754453 2026-08-06T05:01:19Z Octahedron80 267 สร้างหน้าด้วย "{{documentation subpage}} {{uses lua|etymon|etymon/tree|etymon/text|etymon/categories|etymon/data|etymon/tracking|etymon/doc}} {{uses templatestyles|Module:etymon/styles.css}} {{shortcut|ety}} This template is used to indicate the entry term's immediate ancestor ({{m|en|etymon}}). Note that generally, an "etymon" can refer to any kind of etymological ancestor, but on this page, "etymon" will be used specifically for an immediate ancestor. For exam..." 5754453 wikitext text/x-wiki {{documentation subpage}} {{uses lua|etymon|etymon/tree|etymon/text|etymon/categories|etymon/data|etymon/tracking|etymon/doc}} {{uses templatestyles|Module:etymon/styles.css}} {{shortcut|ety}} This template is used to indicate the entry term's immediate ancestor ({{m|en|etymon}}). Note that generally, an "etymon" can refer to any kind of etymological ancestor, but on this page, "etymon" will be used specifically for an immediate ancestor. For example, the etymon of {{m+|en|nexus}} is {{m+|la|nexus}}, and the etymon of {{m+|la|nexus}} is {{m+|la|nectō}}. Terms can have multiple etymons, so the etymons of {{m+|en|toothbrush}} are both {{m|en|tooth}} and {{m|en|brush}}. '''Current features:''' automatic categorization, tree generation, text generation, reference support. ==Usage== Suppose that the etymon of {{m+|en|sow|t=female pig}} is set to {{m+|enm|sowe}}, and the etymon of {{m|enm||sowe}} is set to {{m+|ang|sugu}}. The template is then able to intelligently connect {{m|en||sow}} and {{m|ang||sugu}}, even though they are two steps apart. The template thus reduces duplication across entries by making it unnecessary to manually specify that {{m|en||sow}} and {{m|ang||sugu}} are connected. ===Etymon IDs=== Etymon IDs are used to distinguish between multiple etymologies for the same term (''{{lg|homograph|homographs}}''), in order to ensure that the template is able to traverse these etymological chains without getting confused. This mirrors the practice of the ''{{w|Oxford English Dictionary}}''. For example, the two main senses of {{m|en||sow}} are identified as [https://doi.org/10.1093/OED/9086735656 9086735656] ({{m-g|to plant seeds}}) and [https://doi.org/10.1093/OED/9710708293 9710708293] ({{m-g|female pig}}). On Wiktionary, the identifier should be a word or short phrase which summarizes the definition of the term rather than a meaningless string of numbers. In the case of {{m|en||sow}}, the two IDs might be <code>plant seeds</code> and <code>female pig</code>. For terms with only one etymology, no ID is required either in the template's {{para|id}} parameter or in the etymon parameters. If a page has multiple etymon templates for the same language, {{em|all}} of them must have unique IDs—the template will throw an error if it finds multiple etymon templates where at least one is missing an ID. ==Parameters== The template takes the following parameters: ; {{para|1|req=1}} : The language code of the current entry. ; {{para|id}} : The etymology ID. This parameter creates an anchor to the current section. For example, if the template at {{m+|en|father|id=male parent}} is {{tl|1=etymon|2=en|3=id=male parent}}, this etymology section is directly linked to by [[father#English: male parent]]. The ID must have at least two characters and must not be the same as the page title. This parameter is optional when there is only one etymology for the term, but required when there are multiple etymologies. ; {{para|title}} : This parameter manually overrides the current page title. For example, if an etymology tree is created at {{m+|la|pōnō}} (located at [[pono]]) it is necessary to specify {{para|title|pōnō}} to ensure that the macrons are displayed. ; {{para|pos}} : Indicates the part of speech of the current entry, which allows descendants to intelligently categorize themselves. Usually only necessary for Proto-Indo-European. Current allowed values are: <code>prefix</code>, <code>suffix</code>, <code>interfix</code>, <code>infix</code>, <code>root</code>, <code>word</code>. ; {{para|exnihilo}} : If set to anything, adds the entry to the category <code>[[:Category:Terms coined ex nihilo by language|<language> terms coined ex nihilo]]</code>. ; {{para|etydate}} : Specifies the date or time period when the term was first attested. Supports inline modifiers for references and formatting. For example: <code>etydate=1500s<ref:{{temp|R:OED}}></code> or <code>etydate=late 14c<nocap></code>. Ranges can also be given, e.g. <code>etydate=r,1501,1558<ref:{{temp|R:pl:SXVI|artykuł|5767}}></code> ; {{para|rfe}} : Adds a request for etymology notice. Can be set to <code>1</code> for a standard notice, or to custom text for a specific request. Supports inline modifiers: <code><nocat></code>, <code><noes></code>, <code><box></code>, <code><sort:key></code>, <code><y:year></code>, <code><m:month></code>, <code><fragment:section></code>, <code><section:name></code>. For example: {{para|rfe|1}}, <code>rfe=Need more details<nocat></code>, or <code>rfe=1<box><sort:custom></code>. ; {{para|nl}} : If set to anything, consider the entry a [[WT:Lemmas|non-lemma]]. ; {{para|nodot}} : If set to anything, removes the final period from the generated etymology text. Useful when combining with other text or templates. ; {{para|nocat}} : If set to anything, suppresses automatic categorization. ; {{para|tree}} : If set to anything, displays an etymology tree. ; {{para|text}} : If set to anything, displays some text describing the etymology. The text modes are: :* <code>+</code> — single step (immediate parent only) :* <code>++</code> — all steps (full etymology chain) :* <code>*</code> — to the nearest blue link (stops when it reaches an existing entry) :* A number (e.g., <code>3</code>) — show up to that many steps :* <code>:langcode</code> (e.g., <code>:ar</code>) — show steps until reaching a term in the specified language :* <code>:langcode*</code> (e.g., <code>:ota*</code>) — stop at the specified language if it's a blue link, otherwise continue to the first blue link : For more information, see {{slink|#Text}}. ; {{para|2}}, {{para|3}}, ... : These are the etymon parameters. Each etymon parameter can be either an ''etymon'' or a ''derivation keyword''. There can be any number of etymon parameters. ===Etymons=== Etymons must be written using the following format: <code>languagecode:term<id:identifier><ref:reference></code>. For example: <code>en:pay<id:give money></code> represents {{m+|en|pay}} (etymology 1). As a shortcut, it is possible to omit the language code (i.e., just writing <code>pay<id:give money></code>). In this case, the template will assume that the language is the same as the one set in {{para|1}}. The ID is not mandatory - simple etymons can be written as just <code>languagecode:term</code> (e.g., <code>en:father</code>) or <code>term</code> (e.g., <code>father</code> when the language matches parameter 1). However, if there are multiple etymologies for the same term on the target page, an ID must be specified to distinguish between them. To suppress the term display (show only the language), use <code>-</code> as the term, e.g., <code>la:-</code>. Additional inline modifiers can be used: * <code><id:identifier></code> - specifies the etymology ID. Prefix with <code>!</code> (e.g., <code><id:!forced></code>) to force the ID even when disambiguation would normally not require it. * <code><t:gloss></code> - provides gloss/translation * <code><tr:transliteration></code> - provides transliteration * <code><ts:transcription></code> - provides transcription * <code><alt:alternative display></code> - alternative display text. Use this to suppress linking when referring to proto-language entries with a single descendant, which, according to policy, should not be created. * <code><pos:part of speech></code> - part of speech annotation * <code><ety:inline etymology></code> - inline etymology for redlinks (see section below) * <code><unc></code> - when set, marks the corresponding step or element as uncertain. Note that discredited, dubious, or speculative etymologies should not be added to the template at all. * <code><ref:reference text></code> - adds references (see References section) * <code><aftype:type></code> - specifies the affix type when used with <code>:af</code>. Valid values: <code>prefix</code>/<code>pre</code>, <code>suffix</code>/<code>suf</code>, <code>infix</code>/<code>in</code>, <code>interfix</code>/<code>inter</code>, <code>circumfix</code>/<code>circum</code>, <code>non-affix</code>/<code>naf</code>, <code>root</code>. * <code><postype:type></code> - specifies whether a term should be treated as a <code>root</code> or <code>word</code> for categorization purposes. Overrides the default detected from the linked page's {{para|pos}}. * <code><bor></code> - when used on a term under <code>:af</code>, adds borrowing categories for that specific component (for affixed terms where one component is borrowed). <code><lbor></code> and <code><slbor></code> are also valid term modifiers. * <code><senseid></code> - used for senseid's, see below on semantic loans. Multiple can be given by separating the id's with !!, e.g. <nowiki><senseid:sense1!!sense2></nowiki>. ===Inline etymology=== For terms that don't have their own entry (redlinks) or are missing an etymon template, you can specify the etymology inline using the <code><ety:...></code> modifier. This allows the tree to continue beyond redlinks. The syntax is: <code><ety:keyword<etymon1><etymon2>...></code> For example: * <code>enm:example<ety:inh<ang:example>></code> - specifies that the Middle English term is inherited from Old English * <code>la:verbum<ety:der<grc:ῥῆμα>></code> - specifies that the Latin term is derived from Greek The inline etymology is only used when the target page is a redlink or is missing an etymon template. If the target page has a valid etymon template, the inline etymology is ignored (and a tracking category is added). ===Derivation keywords=== Each derivation keyword applies to all the etymons that follow it. Derivation keywords must be prefixed with a colon (<code>:</code>). A derivation keyword is reset by another derivation keyword. For example, <code>|:inh|etymon1|etymon2|:bor|etymon3|etymon4</code> means that a term is inherited from both etymon1 and etymon2 and also borrowed from both etymon3 and etymon4. Using an unknown keyword (i.e. one not listed below) produces an error message. ====Keyword modifiers==== Keywords can have inline modifiers attached using angle brackets: * <code><unc></code>: marks the derivation as uncertain; for example, <code>:bor<unc></code> means "possibly borrowed from". * <code><ref:reference text></code>: adds a reference to the keyword (same syntax as etymon references). * <code><conj:conjunction></code>: specifies a custom conjunction when there are multiple etymons under the same keyword (default is "or"); Examples: ** <code>:bor<conj:and/or>|es:cruzado|pt:cruzado</code> produces "Borrowed from Spanish ''cruzado'' and/or Portuguese ''cruzado''." ** <code>:bor<conj:and>|etymon1|etymon2</code> produces "...''etymon1'' and ''etymon2''." * <code><surf></code> - used for surface analysis. ====Basic derivation==== * '''<code>:from</code>''': (default) unspecified derivation type within a language; corresponds to {{tl|from}}; only valid for same-language derivations. * '''<code>:derived</code>''' (or '''<code>:der</code>''' in short): used when a term is derived from another language; corresponds to {{tl|derived}}. * '''<code>:inherited</code>''' (or '''<code>:inh</code>'''): used when a term comes directly from the parent language unchanged; corresponds to {{tl|inherited}}. The template validates that the source language is a valid ancestor. * '''<code>:uder</code>''' (short for ''undefined derivation''; no long form yet): used when the exact relationship is unclear; adds to "undefined derivations" category. ====Borrowings==== * '''<code>:bor</code>''' (alias '''<code>:borrowed</code>'''): used when a term is borrowed from another language directly; corresponds to {{tl|borrowed}}. * '''<code>:lbor</code>''' (short for ''learned borrowing''): used for a {{lg|learned borrowing}}, that is a term is borrowed intentionally rather than through normal language contact; corresponds to {{tl|learned borrowing}}. * '''<code>:slbor</code>''' (short for ''semi-learned borrowing''): used for a learned borrowing which is reshaped somewhat; corresponds to {{tl|semi-learned borrowing}}. * '''<code>:obor</code>''' (short for ''orthographic borrowing''): used for {{lg|orthographic borrowing}}s; corresponds to {{tl|orthographic borrowing}}. * '''<code>:ubor</code>''' (short for ''unadapted borrowing''): used for direct borrowings that retain original orthography; corresponds to {{tl|unadapted borrowing}}. ====Semantic relationships==== * '''<code>:calque</code>''' (aliases '''<code>:cal</code>''' or '''<code>:clq</code>'''): used for {{lg|calque}}s; corresponds to {{tl|calque}}; non-transitive (does not follow the chain further). * '''<code>:partial calque</code>''' (or '''<code>:pcal</code>'''): used for {{lg|partial calque}}s; corresponds to {{tl|partial calque}}; non-transitive. * '''<code>:semantic loan</code>''' (or '''<code>:sl</code>'''): used for {{lg|semantic loan}}s; corresponds to {{tl|semantic loan}}; non-transitive; the loaned sense may be linked using <nowiki><senseid></nowiki>, so long as {{temp|senseid}} is present near the appropriate definition. * '''<code>:influence</code>''' (no short form yet): used when a term is influenced in some way by another (e.g. the modern meaning of {{m+|en|discomfit}} is influenced by the unrelated word {{m|en|discomfort}}); non-transitive. ====Word formation==== * '''<code>:affix</code>''' (or '''<code>:af</code>'''): used for compounds, affixation, and any other template whose output contains a <code>+</code> between two terms; parameter order matters: <code>|:af|etymon1|etymon2</code> means etymon1 + etymon2; corresponds to {{tl|affix}}, {{tl|compound}}, and others; generates affix categories automatically. Keywords like ``:af`` or ``:deverbal`` can be marked with <nowiki><surf></nowiki> for surface analysis. * '''<code>:afeq</code>''' (short for "equivalent affix"): used as a "hidden {{tl|af}}", meaning that etymons with this keyword shall be invisible in tree and text output, but their respective categories shall still be generated; as an example, {{m|en|childhood}}, from {{m+|enm|childhode}} (pronounced ''cheeld-hohd''), is {{em|equivalent}} to {{af|en|child|-hood}}. * '''<code>:blend</code>''': used for {{lg|blend}}s; corresponds to {{tl|blend}}. * '''<code>:reduplication</code>''' (or '''<code>:redup</code>'''): used for {{lg|reduplication|reduplications}}; corresponds to {{tl|reduplication}}. * '''<code>:abbreviation</code>''' (or '''<code>:abbr</code>'''): used for {{lg|abbreviation|abbreviations}}; corresponds to {{tl|abbreviation}}. * '''<code>:syllabic abbreviation</code>''' (or '''<code>:sylabbr</code>'''): used for {{lg|syllabic abbreviation|syllabic abbreviations}}; corresponds to {{tl|syllabic abbreviation}}. * '''<code>:acronym</code>''' (alias '''<code>:acro</code>'''): used for {{lg|acronym}}s; corresponds to {{tl|acronym}}. * '''<code>:initialism</code>''' (alias '''<code>:init</code>'''): used for {{lg|initialism}}s; corresponds to {{tl|initialism}}. * '''<code>:clipping</code>''' (or '''<code>:clip</code>'''): used for {{lg|clipping}}s; corresponds to {{tl|clipping}}. * '''<code>:ellipsis</code>''' (alias '''<code>:ellip</code>'''): used for {{lg|ellipsis|elliptical forms}}; corresponds to {{tl|ellipsis}}. * '''<code>:univerbation</code>''' (or '''<code>:univ</code>'''): used for {{lg|univerbation}}; corresponds to {{tl|univerbation}}. * '''<code>:back-formation</code>''' (alias '''<code>:bf</code>'''): used for {{lg|back-formation|back-formations}}; corresponds to {{tl|back-formation}}. * '''<code>:apheretic</code>''' (alias '''<code>:apheresis</code>''' or '''<code>:aphetic</code>'''): used for {{lg|apheresis|apheretic forms}}. * '''<code>:denominal</code>''' (alias '''<code>:denom</code>'''): used for {{lg|denominal}}s; corresponds to {{tl|denominal verb}}. * '''<code>:deverbal</code>''': used for {{lg|deverbal}}s; corresponds to {{tl|deverbal}}. * '''<code>:sa-af</code>''': used for Sanskritic formations. * '''<code>:vrd-af</code>''': used for Sanskrit vṛddhi derivatives with an affix. See '''<code>:vrd</code>''' below. ====Other==== * '''<code>:transliteration</code>''' (or '''<code>:translit</code>'''): used when a term is transliterated from another script; corresponds to {{tl|transliteration}}. * '''<code>:vrd</code>''' (short for "vṛddhi derivative"): used for Sanskrit vṛddhi derivatives. * '''<code>:root</code>''': marks the following etymons as roots for categorization purposes. The etymons will be categorized under "terms belonging to the root X" or "terms derived from the root X". This keyword is invisible in tree and text output. ===References=== References can be added to etymons using inline modifiers with the syntax <code><ref:reference text></code>. Multiple references can be separated by <code> !!! </code> (with spaces around the exclamation marks). References support the same syntax as other Wiktionary reference templates, including named references and groups (see [[Module:references]]). References are only displayed when {{para|text}} is set and only on the same entry they are defined, not on any descendants. Examples: * <code>la:verbum<ref:{{temp|R:L&S}}></code> - single reference ** Equivalent to <code><nowiki><ref>{{R:L&S}}</ref></nowiki></code> * <code>la:verbum<ref:{{temp|R:L&S}}<<name:LS>> !!! {{temp|R:Gaffiot}}></code> - multiple references with naming ** Equivalent to <code><nowiki><ref name="LS">{{R:L&S}}</ref><ref>{{R:Gaffiot}}</ref></nowiki></code> * <code>la:verbum<ref:<<name:LS>>></code> - reference to previously named reference ** Equivalent to <code><nowiki><ref name="LS"/></nowiki></code> * <code>la:verbum<ref:{{temp|R:L&S}}<<name:LS>><<group:etymology>>></code> - named reference with group ** Equivalent to <code><nowiki><ref name="LS" group="etymology">{{R:L&S}}</ref></nowiki></code> ===Trees=== {{shortcut|WT:ETYTREE}}<!-- Creating shortcuts from project namespace as this normally would be in a policy page. --> If the parameter {{para|tree|1}} is set, an etymology tree is inserted. Per an April 2024 vote, each language community decides when it is appropriate to show a tree on a particular entry.<ref>[[Wiktionary:Votes/2024-04/Allowing etymology trees on entries]]</ref> Additionally, trees should not be displayed for clear open compounds like {{m|en|United States of America}}.<ref>{{section link|Wiktionary:Beer parlour/2024/June#Use of etymology trees made with Template:etymon in the entries for multi-word terms}}</ref> Keywords with <code>no_child_categories</code> (such as <code>:calque</code>, <code>:sl</code>, <code>:pcal</code>, <code>:influence</code>) will have their subtrees hidden in the tree display, as these represent non-transitive relationships where the further etymology is not directly relevant. Similarly, duplicate nodes (when the same term appears multiple times in a tree) do not re-display their ancestry. In both cases, an L-shaped dotted connector indicates hidden ancestry, and duplicate nodes are additionally styled with dashed borders. ===Text=== {{anchor|Text allowlist}} {{shortcut|WT:ETYTEXT}}<!-- See ETYTREE above. --> The {{para|text}} parameter may be set to automatically generate a text description from the given data. The parameter should only be used in entries under the languages whose editing communities have explicitly approved it and as long as this does not imply the removal of valuable information which cannot be produced by the module.<ref>[[Wiktionary:Votes/2026-01/Reconsidering the parameters text and tree of etymon]]</ref> The following languages and families have allowed its usage. Any language in an allowed family (e.g. Indo-Aryan for family code <code>inc</code>) is also allowed. {{#invoke:etymon/doc|text_allowed_list}} ==Language-specific behavior== Some languages have special handling configured in the module: ===Chinese=== Etymology trees and text are disabled for Chinese languages (those in the <code>zhx</code> family, excluding contact languages (e.g. creoles, pidgins, mixed languages)). See [[Wiktionary:Beer parlour/2025/May#Template:etymon for Chinese]] for discussion. Categories are also suppressed, and transliterations are not displayed. ===Finnish=== The <code>:af</code> keyword is non-transitive for Finnish, meaning the etymology chain stops at affixed terms. ==Examples== <code>{{tlf|etymon|en|id=male parent|:inh|enm:fader<id:father>}}</code> (on {{m+|en|father|id=male parent}}) This means: ''father'' is inherited from Middle English ''fader''. <code>{{tlf|etymon|en|:inh|enm:fader}}</code> (on a page with only one etymology) This also works when there is only one etymology—no ID required on either side. <code>{{tlf|etymon|ine-pro|id=father|:af|*peh₂-<id:protect><unc>|*-tḗr<id:agent noun><unc>}}</code> (on {{m+|ine-pro|*ph₂tḗr|id=father}}) This means: ''*ph₂tḗr'' might come from ''*peh₂'' + ''*-tḗr''. In this case, the etymons are associated with the derivation keyword ":af". Note that since the language is not specified for either etymon, the template assumes that the two etymons are <code>ine-pro</code> (Proto-Indo-European). <code>{{tlf|etymon|pl|:deverbal|podłożyć<id:put>}}</code> (on {{m+|pl|podłoga}}) This means: ''podłoga'' comes from Polish ''podłożyć''. <code>{{tlf|etymon|en|id=bundle of flowers|:bor|fr:bouquet<id:bundle><ref:{{temp|R:TLFi}}>|text=+}}</code> This means: ''bouquet'' is borrowed from French ''bouquet'', with a reference to the TLFi dictionary. The reference will appear after the period in the generated text: "Borrowed from French ''bouquet''.<sup>[1]</sup>" <code>{{tlf|etymon|en|id=example|:af|un-|happy<aftype:naf>}}</code> Using <code><aftype:naf></code> to mark "happy" as a non-affix (the base word) rather than letting auto-detection determine the affix type. <code>{{tlf|etymon|en|id=example|:root|ine-pro:*bʰer-<id:carry>}}</code> Using <code>:root</code> to categorize the term under "English terms derived from the Proto-Indo-European root *bʰer-" without showing this in the tree or text. <code>{{tlf|etymon|en|id=example|:der|la:exemplum<ety:inh<la:eximō>>}}</code> Using inline etymology to specify that Latin ''exemplum'' is inherited from ''eximō'', useful when the Latin page doesn't have an etymon template. <code>{{tlf|etymon|en|:bor<conj:and/or>|es:cruzado|pt:cruzado|text=+}}</code> Using the <code><conj:and/or></code> modifier to specify a custom conjunction. This produces: "Borrowed from Spanish ''cruzado'' and/or Portuguese ''cruzado''." ===Suppressed terms=== <code>{{tlf|etymon|en|id=example|:inh|enm:-<t:some term>}}</code> Using <code>-</code> as the term to suppress the term display and show only the language. The gloss and other modifiers are still displayed. ===Text output modes=== <code>{{tlf|etymon|en|id=example|:inh|enm:word|text=+}}</code> Using {{para|text|+}} to show only the immediate etymon (one step). <code>{{tlf|etymon|en|id=example|:inh|enm:word|text=++}}</code> Using {{para|text|++}} to show the full etymology chain (all steps, following through to the ultimate origin). <code>{{tlf|etymon|en|id=example|:inh|enm:word|text=*}}</code> Using {{para|text|*}} to show the etymology chain until reaching the first existing entry (blue link). <code>{{tlf|etymon|en|id=example|:inh|enm:word|text=3}}</code> Using {{para|text|3}} to show up to 3 steps in the etymology chain. <code>{{tlf|etymon|en|id=example|:der|ar:كلمة|text=:ar}}</code> Using {{para|text|:ar}} to show the etymology chain until reaching an Arabic term. Invalid language codes will trigger a warning and default to showing the full chain. <code>{{tlf|etymon|en|id=title|:bor|ota:پاشا<tr:paşa><ety:bor<fa-cls:پَادْشَاه>>|text=:ota*}}</code> Using {{para|text|:ota*}} on {{m+|en|pasha}} to stop at Ottoman Turkish if it exists, otherwise continue to Persian. ===Multiple etymon sources=== <code>{{tlf|etymon|en|id=example|:bor<unc>|es:palabra|pt:palavra}}</code> Multiple etymons under the same keyword with uncertainty. The <code><unc></code> modifier on the keyword marks the entire derivation as uncertain ("Possibly borrowed from..."). <code>{{tlf|etymon|en|id=example|:inh|enm:word|:bor|fr:mot}}</code> Multiple keywords in sequence. This indicates the term is both inherited from Middle English ''word'' and also borrowed from French ''mot'' (e.g., for different senses or competing etymologies). <code>{{tlf|etymon|en|id=example|:af|un-<aftype:pre>|happy<aftype:naf>|-ness<aftype:suf>}}</code> Complex affixation with explicit affix types. The <code><aftype:...></code> modifier specifies whether each component is a prefix (<code>pre</code>), suffix (<code>suf</code>), infix (<code>in</code>), interfix (<code>inter</code>), circumfix (<code>circum</code>), non-affix base word (<code>naf</code>), or root (<code>root</code>). ===Semantic relationships=== <code>{{tlf|etymon|en|id=modern sense|:influence|en:comfort<id:ease>}}</code> Using <code>:influence</code> to indicate semantic influence. This is non-transitive (does not continue the etymology chain). Useful for cases like ''discomfit'' being influenced by ''discomfort''. <code>{{tlf|etymon|en|id=example|:calque|de:Weltanschauung}}</code> Using <code>:calque</code> for calques. Non-transitive; the etymology of the source term is not followed. <code>{{tlf|etymon|en|id=example|:pcal|fr:gratte-ciel}}</code> Using <code>:pcal</code> (partial calque). Also non-transitive. <code>{{tlf|etymon|en|id=example|:sl|la:musculus<id:muscle>}}</code> Using <code>:sl</code> (semantic loan). Also non-transitive. ===Specialized borrowings=== <code>{{tlf|etymon|en|id=example|:lbor|la:exemplum}}</code> Using <code>:lbor</code> for learned borrowings (terms borrowed through literary or scholarly transmission rather than natural language contact). <code>{{tlf|etymon|es|id=example|:slbor|la:capitulum}}</code> Using <code>:slbor</code> for semi-learned borrowings (learned borrowings that have been partially adapted to native phonology). <code>{{tlf|etymon|en|id=example|:ubor|fr:déjà vu}}</code> Using <code>:ubor</code> for unadapted borrowings (terms borrowed with original orthography intact). <code>{{tlf|etymon|ja|id=example|:obor|zh:電話}}</code> Using <code>:obor</code> for orthographic borrowings (borrowing of written characters/script). ===Word formation=== <code>{{tlf|etymon|en|id=example|:blend|motor|hotel}}</code> Using <code>:blend</code> for blends (portmanteau words). <code>{{tlf|etymon|en|id=example|:univ|good|bye}}</code> Using <code>:univerbation</code> (or <code>:univ</code>) for univerbation (multiple words becoming one). <code>{{tlf|etymon|en|id=example|:clip|advertisement}}</code> Using <code>:clipping</code> (or <code>:clip</code>) for clippings. <code>{{tlf|etymon|en|id=example|:bf|editor}}</code> Using <code>:back-formation</code> (or <code>:bf</code>) for back-formations. <code>{{tlf|etymon|en|id=example|:apheretic|esquire}}</code> Using <code>:apheretic</code> (or <code>:apheresis</code>) for apheretic forms (loss of initial unstressed vowel). <code>{{tlf|etymon|en|id=example|:denominal|hammer}}</code> Using <code>:denominal</code> (or <code>:denom</code>) for denominal verbs (verbs derived from nouns). <code>{{tlf|etymon|en|id=example|:deverbal|speak}}</code> Using <code>:deverbal</code> for deverbals (nouns/adjectives derived from verbs). ===Inline etymology for redlinks=== <code>{{tlf|etymon|en|id=example|:der|xno:mot<ety:inh<fro:mot<ety:inh<la:muttum>>>>}}</code> Using nested inline etymologies to specify a full chain for terms without entries. This specifies that Anglo-Norman ''mot'' is inherited from Old French ''mot'', which is inherited from Latin ''muttum''. <code>{{tlf|etymon|en|id=example|:der|enm:word<ety:af<ang:word><-s>>}}</code> Inline etymology with affixation—specifies the Middle English term is formed from Old English ''word'' + ''-s''. ===References=== <code>{{tlf|etymon|en|id=example|:bor|fr:mot<ref:{{temp|R:TLFi}} !!! {{temp|R:Larousse}}>}}</code> Multiple references on a single etymon, separated by <code> !!! </code> (with spaces). <code>{{tlf|etymon|en|id=example|:bor<ref:{{temp|R:OED}}>|fr:mot}}</code> Reference on the keyword itself (applies to the derivation relationship, not just the term). <code>{{tlf|etymon|en|id=example|:der|la:verbum<ref:<<name:LS>>{{temp|R:L&S}}>}}</code> Named reference using <code><<name:LS>></code> syntax, which allows re-use elsewhere with <code><ref:<<name:LS>>></code>. <code>{{tlf|etymon|en|id=example|:der|la:verbum<ref:<<group:etymology>>{{temp|R:L&S}}>}}</code> Reference with a group, for use with grouped reference lists. ===Tree display=== <code>{{tlf|etymon|en|id=example|:inh|enm:word|tree=1}}</code> Using {{para|tree|1}} to display an etymology tree. ===Combined features=== <code>{{tlf|etymon|en|id=give money|:inh|enm:payen<id:pay><ref:{{temp|R:MED}}>|text=++|tree=1}}</code> Comprehensive example combining: etymology ID, inheritance keyword, etymon with ID and reference, full text output, and tree display. <code>{{tlf|etymon|en|id=example|etydate=1500s<ref:{{temp|R:OED}}>|:bor<unc>|fr:exemple<t:example><tr:ɛɡzɑ̃pl>|text=+|nodot=1}}</code> Example with attestation date, uncertain borrowing, gloss and transliteration, single-step text output, and no final period (for combining with additional text). See [[Template:etymon/testcases]] for test cases and more examples of use. ==Categorization== The template generates various categories depending on how it is used, including the ones within: * [[:Category:Entries referencing ambiguous etymons by language]] * [[:Category:Entries referencing etymons with mismatched IDs by language]] * [[:Category:Entries with etymology trees by language]] * [[:Category:Entries with etymology texts by language]] * [[:Category:Pages with etymology trees]] * [[:Category:Pages with inline etymon for redlinks]] * [[:Category:Pages with redundant inline etymon]] * [[:Category:Pages using etymon with no ID]] * [[:Category:Terms coined ex nihilo by language]] as well as various standard etymology categories depending on what entries exist in the tree: * Borrowing categories (e.g., [[:Category:English terms borrowed from French]]) * Inheritance categories (e.g., [[:Category:English terms inherited from Middle English]]) * Affix categories (e.g., [[:Category:English terms prefixed with un-]]) * Root categories (e.g., [[:Category:English terms derived from the Proto-Indo-European root *bʰer-]]) * Specialized borrowing categories (learned, semi-learned, orthographic, unadapted) * Calque, partial calque, and semantic loan categories ==Tracking== {{hatnote|See also: [[Wiktionary:Tracking#Etymon]].}} The module tracks various statistics for debugging and analysis: * Tree depth (how many generations deep the etymology goes) * Number of nodes (total terms in the tree) * Number of unique languages * Linear vs. branching trees These can be found in the tracking categories under <code>Template:tracking/etymon/</code>. ==References== {{reflist}} ==TemplateData== {{TemplateData header}} <templatedata> { "description": "This template may be used indicate a term's immediate ancestor(s).", "params": { "1": { "label": "Language", "description": "The language of the current entry.", "type": "string", "required": true, "suggested": true, "example": "en" }, "2": { "label": "Etymon parameter #1", "description": "The first etymon parameter. Typically for derivation keyword.", "type": "string", "example": ":der, alternatively - enm:fader<id:father>" }, "3": { "label": "Etymon parameter #2", "description": "The second etymon parameter.", "type": "string" }, "4": { "label": "Etymon parameter #3", "description": "The third etymon parameter.", "type": "string" }, "5": { "label": "Etymon parameter #4", "description": "The fourth etymon parameter.", "type": "string" }, "6": { "label": "Etymon parameter #5", "description": "The fifth etymon parameter.", "type": "string" }, "7": { "label": "Etymon parameter #6", "description": "The sixth etymon parameter.", "type": "string" }, "8": { "label": "Etymon parameter #7", "description": "The seventh etymon parameter.", "type": "string" }, "9": { "label": "Etymon parameter #8", "description": "The eighth etymon parameter.", "type": "string" }, "id": { "label": "Etymology ID", "description": "The ID of the current etymology section. Required when there are multiple etymologies for the same term.", "type": "string", "suggested": true, "example": "male parent" }, "title": { "label": "Title", "description": "The title of the current entry (if different from the page title)", "type": "string", "example": "father" }, "pos": { "label": "Part of speech", "description": "The part of speech (prefix, suffix, interfix, infix, root, word)", "type": "string", "example": "root" }, "etydate": { "label": "Etymology date", "description": "The date or time period when the term was first attested", "type": "string", "example": "1500s<ref:{{R:OED}}>" }, "rfe": { "label": "Request for etymology", "description": "Adds a request for etymology notice. Set to 1 for standard notice, or provide custom text. Supports inline modifiers.", "type": "string", "example": "1, or Need more details<nocat>" }, "exnihilo": { "label": "Ex nihilo", "description": "Set to categorize as a term coined ex nihilo", "type": "boolean" }, "nl": { "label": "Non-lemma", "description": "Set to consider the entry a non-lemma", "type": "boolean" }, "nocat": { "label": "No categories", "description": "Set to suppress automatic categorization", "type": "boolean" }, "nodot": { "label": "No dot", "description": "Set to remove the final period from generated text", "type": "boolean" }, "tree": { "label": "Tree", "description": "Set this to \"1\" to display a tree.", "type": "string", "example": "1" }, "text": { "label": "Text", "description": "Automatically generates some text. Values: + (single step), ++ (all steps), * (to nearest blue link), a number (max steps), :langcode (stop at language), :langcode* (stop at language or first blue link if redlink)", "type": "string", "example": "++" } }, "paramOrder": [ "1", "id", "title", "pos", "rfe", "2", "3", "4", "5", "6", "7", "8", "9", "etydate", "exnihilo", "text", "tree", "nl", "nocat", "nodot" ], "format": "inline" } </templatedata> <includeonly> [[Category:Etymology templates]] </includeonly> gg3jxcylqanm8wqksoanoyo2nmrn9nj แม่แบบ:em 10 2356370 5754454 2026-08-06T05:01:35Z Octahedron80 267 นำเข้าจาก enwikt 5754454 wikitext text/x-wiki <includeonly><em {{#if:{{{role|}}}|role="{{{role}}}"}} {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|}}}</em></includeonly><!-- --><noinclude>{{documentation}}</noinclude> ip3xyuvn2mypgby6n7nuivbndw1rt05 แม่แบบ:slink 10 2356371 5754455 2026-08-06T05:02:01Z Octahedron80 267 นำเข้าจาก enwikt 5754455 wikitext text/x-wiki #REDIRECT [[Template:section link]] 25rnn1o0nixw6g8mzkdpljt6yyj1fa4 nemmen 0 2356372 5754466 2026-08-06T06:03:42Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754466 wikitext text/x-wiki == ภาษาคิมบรี == === รากศัพท์ === จาก{{inh|cim|gmh|nëmen}}, จาก{{inh|cim|goh|neman}}, จาก{{inh|cim|gmw-pro|*neman}}, จาก{{inh|cim|gem-pro|*nemaną||เอา}}; ร่วมเชื้อสายกับ{{cog|de|nehmen}}, {{cog|en|nim}} === คำกริยา === {{cim-verb-strong|class=4|||håm}} # {{lb|cim|Luserna}} [[เอา]] === อ้างอิง === * {{R:Patuzzi}} * {{R:CLM}} ioiwl4j5c8nyzme62xk5ysjd5t2vffn nemnen 0 2356373 5754467 2026-08-06T06:04:09Z Octahedron80 267 นำเข้าจาก enwikt เก็บกวาด 5754467 wikitext text/x-wiki == ภาษาเยอรมันสูงเก่า == === รากศัพท์ === {{etymon|goh|id=to name|:inh|gmw-pro:*namnijan<id:to name>}} จาก{{inh|goh|gmw-pro|*namnijan}}, จาก{{inh|goh|gem-pro|*namnijaną}} === คำกริยา === {{goh-verb}} # {{lb|goh|transitive}} [[ตั้ง]][[ชื่อ]] ==== การผันรูป ==== {{goh-conj-wk1|nemn|nan}} ==== คำสืบทอด ==== * {{desc|gmh|nemnen|nennen}} ** {{desc|de|nennen}} tffque0ihisq33m5uxvfhwfhidr2tep แม่แบบ:RQ:Heyking Orgelpfeifen 10 2356374 5754470 2026-08-06T06:15:41Z Octahedron80 267 นำเข้าจาก enwikt 5754470 wikitext text/x-wiki {{#invoke:quote|call_quote_template |de |chapter=s:de:Die Orgelpfeifen |title=Zwei Erzählungen |author=w:Elisabeth von Heyking |year=1918 |publisher=Phillipp Reclam jun. Verlag |location=Leipzig |pageurl=https://www.deutschestextarchiv.de/book/view/heyking_erzaehlungen_1918?p={{#expr: {{{page|0}}} + 2}} |propagateparams=page,t,translation }}<noinclude>{{documentation}}</noinclude> b6m6z8ts8blbqm9d7mcjhn9fzd6k222 ᨩ᩠ᨿᨦᨡᩕᩬᨦ 0 2356375 5754474 2026-08-06T07:11:44Z Ai Ku Karng 17824 สร้างหน้าด้วย "== ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=เชียงขรอง|s=เจียงฃอง}} === รากศัพท์ === {{com|nod|ᨩ᩠ᨿᨦ|ᨡᩕᩬᨦ|t1=เชียง, เมือง|t2=โขง, แม่น้ำโขง}} === การออกเสียง === * {{IPA|nod|/t͡ɕiaŋ˧˧.xɔːŋ˨˦/|a=เชียงใหม่}} === คำวิสามานยน..." 5754474 wikitext text/x-wiki == ภาษาคำเมือง == === รูปแบบอื่น === {{nod-alt|l=เชียงขรอง|s=เจียงฃอง}} === รากศัพท์ === {{com|nod|ᨩ᩠ᨿᨦ|ᨡᩕᩬᨦ|t1=เชียง, เมือง|t2=โขง, แม่น้ำโขง}} === การออกเสียง === * {{IPA|nod|/t͡ɕiaŋ˧˧.xɔːŋ˨˦/|a=เชียงใหม่}} === คำวิสามานยนาม === {{nod-proper noun}} # (อำเภอ) [[เชียงของ]] {{topics|nod|เชียงราย}} 2w59m8frtdu71xbklefkswf8vtkblgw แม่แบบ:PIE word 10 2356376 5754505 2026-08-06T07:57:22Z OctraBot 3198 นำเข้าจาก enwikt 5754505 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{#if:{{{nobox|}}}||<table class="wikitable floatright PIE-word" style="text-align: center;"><!-- --><tr><th>PIE word</th></tr><!-- --><tr><td>{{l|ine-pro|*{{{2|<noinclude>deywós</noinclude>}}}|id={{{id|}}}}}</td></tr><!-- --></table><!-- -->}}{{word|{{{1|<noinclude>und</noinclude>}}}|ine|{{{2|<noinclude>deywós</noinclude>}}}|id={{{id|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> 6yesa77e8h00ekdsroy4xn84xiag8vm 5754506 5754505 2026-08-06T07:59:56Z OctraBot 3198 5754506 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{#if:{{{nobox|}}}||<table class="wikitable floatright PIE-word" style="text-align: center;"><!-- --><tr><th>ศัพท์ PIE</th></tr><!-- --><tr><td>{{l|ine-pro|*{{{2|<noinclude>deywós</noinclude>}}}|id={{{id|}}}}}</td></tr><!-- --></table><!-- -->}}{{word|{{{1|<noinclude>und</noinclude>}}}|ine|{{{2|<noinclude>deywós</noinclude>}}}|id={{{id|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> fqpxp8ebabmje2pcg2qr4hyp0as9phm แม่แบบ:word 10 2356377 5754507 2026-08-06T08:20:43Z OctraBot 3198 นำเข้าจาก enwikt 5754507 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters --><includeonly><!-- -->{{dercat|{{{1}}}|{{{2}}}-pro}}<!-- -->{{catlangname|{{{1}}}|ศัพท์ที่รับมาจากภาษา{{langname|{{{2}}}-pro}} *{{{3}}} {{#if:{{{id|}}}|({{{id|}}})}}}}<!-- --></includeonly><noinclude>{{documentation}}</noinclude> csnyv41phdbg7hedt713tjy94va4pvb qus 0 2356378 5754534 2026-08-06T09:12:19Z OctraBot 3198 นำเข้าจาก enwikt เก็บกวาด เรียงลำดับหัวเรื่องภาษา 5754534 wikitext text/x-wiki == ภาษาร่วม == === รากศัพท์ === {{abbrev|mul|en:[['''Qu'''echua]], [['''S'''antiagueño]]}}. === สัญลักษณ์ === {{mul-symbol}} # {{ISO 639|3|Santiagueño Quechua}} == ภาษาการากัลปัก == === รากศัพท์ === จาก{{inh|kaa|trk-pro|*kuĺ}} === คำนาม === {{kaa-noun}} # [[นก]] === อ้างอิง === * {{R:kaa:Baskakov|қус}} == ภาษาฝรั่งเศส == === การออกเสียง === * {{fr-IPA}} * {{audio|fr|LL-Q150 (fra)-Lyokoï-qus.wav|a=<<France>> (<<Lyon>>)}} === คำนาม === {{head|fr|รูปนาม|g=m}} # {{plural of|fr|qu}} s06ubmdp2ozogn8byym3p7p0foc1pen ihm 0 2356379 5754557 2026-08-06T10:34:11Z Ponpan 693 เก็บกวาด 5754557 wikitext text/x-wiki == ภาษาเยอรมัน == === รูปแบบอื่น === * {{l|de|jm}}, {{l|de|jhm}}, {{l|de|ym}}, {{l|de|yhm}} {{qual|เยอรมันสูงใหม่ตอนต้น}} * {{l|de|ihme}} {{qual|ล้าสมัย}} === การออกเสียง === * {{qualifier|มาตรฐาน}} {{IPA|de|/iːm/}} :* {{audio|de|De-ihm.ogg}} :* {{audio|de|De-ihm2.ogg|a=<<Germany>> (<<Berlin>>)}} :* {{rhymes|de|iːm}} * {{qualifier|ภาษาพูดในตำแหน่งที่ไม่เน้นเสียง}} {{IPA|de|/əm/}} === คำสรรพนาม === {{head|de|รูปสรรพนาม}} # {{lb|de|สรรพนามบุคคล}} {{inflection of|de|er||dat|t=เขา (ผู้ชาย)}}; [[แก่]]เขา, [[ให้]]เขา, [[เพื่อ]]เขา เป็นต้น #: {{ux|de|Könntest du '''ihm''' deinen Stift geben? ({{audio|de|De-Könntest du ihm deinen Stift geben..ogg}})|เธอช่วยเอาปากกาของเธอให้เขาได้ไหม?}} #: {{ux|de|Schnell! Gib '''ihm''' das! ({{audio|de|De-Schnell! Gib ihm das!.ogg}})|เร็วเข้า! ส่งสิ่งนั้นให้เขา!}} # {{lb|de|สรรพนามบุคคล}} {{inflection of|de|es||dat|t=มัน}}; [[แก่]]มัน, [[ให้]]มัน, [[เพื่อ]]มัน เป็นต้น ==== ดูเพิ่ม ==== {{german personal pronouns}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} 2jy8cwif1ax26auut8dz9hcwct0k7dt 5754558 5754557 2026-08-06T10:35:40Z Ponpan 693 /* คำสรรพนาม */ 5754558 wikitext text/x-wiki == ภาษาเยอรมัน == === รูปแบบอื่น === * {{l|de|jm}}, {{l|de|jhm}}, {{l|de|ym}}, {{l|de|yhm}} {{qual|เยอรมันสูงใหม่ตอนต้น}} * {{l|de|ihme}} {{qual|ล้าสมัย}} === การออกเสียง === * {{qualifier|มาตรฐาน}} {{IPA|de|/iːm/}} :* {{audio|de|De-ihm.ogg}} :* {{audio|de|De-ihm2.ogg|a=<<Germany>> (<<Berlin>>)}} :* {{rhymes|de|iːm}} * {{qualifier|ภาษาพูดในตำแหน่งที่ไม่เน้นเสียง}} {{IPA|de|/əm/}} === คำสรรพนาม === {{head|de|รูปสรรพนาม}} # {{lb|de|บุรุษสรรพนาม}} {{inflection of|de|er||dat|t=เขา (ผู้ชาย)}}; [[แก่]]เขา, [[ให้]]เขา, [[เพื่อ]]เขา เป็นต้น #: {{ux|de|Könntest du '''ihm''' deinen Stift geben? ({{audio|de|De-Könntest du ihm deinen Stift geben..ogg}})|เธอช่วยเอาปากกาของเธอให้เขาได้ไหม?}} #: {{ux|de|Schnell! Gib '''ihm''' das! ({{audio|de|De-Schnell! Gib ihm das!.ogg}})|เร็วเข้า! ส่งสิ่งนั้นให้เขา!}} # {{lb|de|บุรุษสรรพนาม}} {{inflection of|de|es||dat|t=มัน}}; [[แก่]]มัน, [[ให้]]มัน, [[เพื่อ]]มัน เป็นต้น ==== ดูเพิ่ม ==== {{german personal pronouns}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} iwgbstpccd5tp4iktxuyval2l3xj6cq 5754559 5754558 2026-08-06T10:37:50Z Ponpan 693 /* รูปแบบอื่น */ 5754559 wikitext text/x-wiki == ภาษาเยอรมัน == === รูปแบบอื่น === * {{l|de|jm}}, {{l|de|jhm}}, {{l|de|ym}}, {{l|de|yhm}} {{qual|เยอรมันสูงใหม่ตอนต้น}} * {{l|de|ihme}} {{qual|เลิกใช้}} === การออกเสียง === * {{qualifier|มาตรฐาน}} {{IPA|de|/iːm/}} :* {{audio|de|De-ihm.ogg}} :* {{audio|de|De-ihm2.ogg|a=<<Germany>> (<<Berlin>>)}} :* {{rhymes|de|iːm}} * {{qualifier|ภาษาพูดในตำแหน่งที่ไม่เน้นเสียง}} {{IPA|de|/əm/}} === คำสรรพนาม === {{head|de|รูปสรรพนาม}} # {{lb|de|บุรุษสรรพนาม}} {{inflection of|de|er||dat|t=เขา (ผู้ชาย)}}; [[แก่]]เขา, [[ให้]]เขา, [[เพื่อ]]เขา เป็นต้น #: {{ux|de|Könntest du '''ihm''' deinen Stift geben? ({{audio|de|De-Könntest du ihm deinen Stift geben..ogg}})|เธอช่วยเอาปากกาของเธอให้เขาได้ไหม?}} #: {{ux|de|Schnell! Gib '''ihm''' das! ({{audio|de|De-Schnell! Gib ihm das!.ogg}})|เร็วเข้า! ส่งสิ่งนั้นให้เขา!}} # {{lb|de|บุรุษสรรพนาม}} {{inflection of|de|es||dat|t=มัน}}; [[แก่]]มัน, [[ให้]]มัน, [[เพื่อ]]มัน เป็นต้น ==== ดูเพิ่ม ==== {{german personal pronouns}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} 9xleffsy32mom6r9focgljnsq3lh68a ihn 0 2356380 5754560 2026-08-06T10:46:16Z Ponpan 693 เก็บกวาด 5754560 wikitext text/x-wiki == ภาษาเยอรมัน == === การออกเสียง === * {{qualifier|มาตรฐาน}} {{IPA|de|/iːn/}} :* {{audio|de|De-ihn.ogg}} :* {{audio|de|De-ihn2.ogg|a=<<Germany>> (<<Berlin>>)}} :* {{rhymes|de|iːn}} * {{qualifier|ภาษาพูดในตำแหน่งที่ไม่เน้นเสียง}} {{IPA|de|/ən/}} === คำสรรพนาม === {{head|de|รูปสรรพนาม}} # {{lb|de|บุรุษสรรพนาม}} {{inflection of|de|er||acc|t=[[เขา]] (ผู้ชาย), [[มัน]] (คำนามเพศชาย)}} #: {{ux|de|Ich suche Matthias. Hast du '''ihn''' gesehen? ({{audio|de|De-Ich suche Matthias. Hast du ihn gesehen..ogg}})|ฉันกำลังตามหามัททีอัส เธอเห็น'''เขา'''ไหม}} #: {{ux|de|Ich suche den Dosenöffner. Hast du '''ihn''' gesehen? ({{audio|de|De-Ich suche den Dosenöffner. Hast du ihn gesehen..ogg}})|ฉันกำลังหาที่เปิดกระป๋อง เธอเห็น'''มัน'''ไหม}} # {{lb|de|บุรุษสรรพนาม}} {{label|de|obsolete}} {{inflection of|de|sie||dat|t=พวกเขา}} #: {{ux|de|Den will sie doch und soll '''ihn''' haben.|This is what they want and what '''they''' should have.}} ==== ดูเพิ่ม ==== {{german personal pronouns}} === อ่านเพิ่ม === * {{R:de:Duden}} * {{R:de:DWDS}} 4zb594p76jhr18bvjt4wvyxpojh9shj