Wiktionary
zhwiktionary
https://zh.wiktionary.org/wiki/Wiktionary:%E9%A6%96%E9%A1%B5
MediaWiki 1.47.0-wmf.6
case-sensitive
Media
Special
Talk
User
User talk
Wiktionary
Wiktionary talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Appendix
Appendix talk
Transwiki
Transwiki talk
Rhymes
Rhymes talk
Thesaurus
Thesaurus talk
Citations
Citations talk
Reconstruction
Reconstruction talk
TimedText
TimedText talk
Module
Module talk
Event
Event talk
Wiktionary:统计
4
1718
9814450
9813496
2026-06-16T06:42:11Z
TongcyBot
83009
機器人:更新每日統計數據 (2026-06-16)
9814450
wikitext
text/x-wiki
{{Interwiki}}
{{shortcut|WT:STAT}}
==基本資料==
{| class="wikitable"
! 項目 !! 資料
|-
! MediaWiki版本
| {{CURRENTVERSION}}
|-
! 詞條數量
| [[Special:Statistics|'''{{NUMBEROFARTICLES}}''']]
|-
! 總頁面數
| {{NUMBEROFPAGES}}
|-
! 已編碼的語言數量
| {{#invoke:list of languages|count}}
|-
! 檔案數量
| {{NUMBEROFFILES}}
|-
! 註冊用戶數
| {{NUMBEROFUSERS}}
|-
! 活躍用戶數
| {{NUMBEROFACTIVEUSERS}}
|-
! 管理員數量
| {{NUMBEROFADMINS}}
|-
! 全站頁面編輯次數
| {{NUMBEROFEDITS}}
|}
其他資料請參考[[Special:Statistics]]。
==頁面==
本表是中文维基詞典詞條数依日期到達的里程碑,以每一万个词条为单位计数。<!-- 以下內容已不再更新
* 近期統計圖表(區分機器人與一般用戶,選擇zhwiktionary_p,每日自動更新):[https://tools.wmflabs.org/wmcharts/wmchart0001.php 編輯次數]{{·}}[https://tools.wmflabs.org/wmcharts/wmchart0002.php 新增詞條數量]-->
* 目前的詞條數:'''{{NUMBEROFARTICLES}}'''({{重新整理|更新}})。
{{Milestone}}
==与相邻语言版本的比较==
中文维基词典词条收录量为'''{{NUMBEROFARTICLES}}''',在所有语言版本的詞典中[[meta:Wiktionary#List of Wiktionaries|'''位列第4''']]。
{{autoStat
| 2026-06-01
| fr | mg | zh | th | el
| 6930186 | 5930482 | 2332751 | 2181052 | 1580933
| 6930999 | 5930654 | 2333141 | 2181055 | 1580995
| 6931707 | 5932408 | 2333723 | 2181063 | 1581020
| 6932238 | 5934254 | 2334559 | 2181065 | 1581065
| 6932658 | 5936145 | 2334936 | 2181066 | 1581120
| 6933092 | 5937909 | 2335426 | 2181077 | 1581138
| 6933473 | 5938467 | 2335909 | 2181079 | 1581329
| 6933839 | 5939207 | 2336375 | 2181083 | 1581404
| 6935335 | 5940420 | 2336781 | 2181086 | 1581446
| 6935765 | 5941832 | 2337380 | 2181167 | 1581457
| 6936419 | 5943302 | 2338182 | 2181169 | 1581673
| 6936755 | 5943784 | 2338721 | 2181192 | 1581719
| 6937173 | 5944611 | 2339311 | 2181195 | 1581741
| 6937636 | 5945740 | 2339831 | 2181209 | 1581760
| 6938604 | 5946309 | 2340307 | 2181240 | 1581817
| 6939977 | 5946912 | 2340844 | 2181259 | 1581872
| 6940524 | 5947238 | 2341358 | 2181267 | 1581909
}}
* 来源:[https://wikistats.wmcloud.org/display.php?t=wt Wikistats] 统计的具体时间为当日1时(UTC)左右,近似表示前一天的数据
* 关于里程碑,参见[[Wiktionary:宣告]]
==页面访问统计==
历史数据参见:[[Wiktionary:统计/存档]]
===总页面浏览量===
{{Collapse2|header=最近一年中文維基詞典的存取量|float=right
|{{Graph:PageViews| 365 | _ |scale=sqrt}}
}}
{{Collapse2|header=自2016年起中文維基詞典總頁面瀏覽量(時間單位:月)|float=right
|{{Graph:Chart
| width = 800
| height = 300
| xAxisTitle = 時間
| yAxisTitle = 瀏覽量(次)
| x = 2016/01/01,2016/02/01,2016/03/01,2016/04/01,2016/05/01,2016/06/01,2016/07/01,2016/08/01,2016/09/01,2016/10/01,2016/11/01,2016/12/01,2017/01/01,2017/02/01,2017/03/01,2017/04/01,2017/05/01,2017/06/01,2017/07/01,2017/08/01,2017/09/01,2017/10/01,2017/11/01,2017/12/01,2018/01/01,2018/02/01,2018/03/01,2018/04/01,2018/05/01,2018/06/01,2018/07/01,2018/08/01,2018/09/01,2018/10/01,2018/11/01,2018/12/01,2019/01/01,2019/02/01,2019/03/01,2019/04/01,2019/05/01,2019/06/01,2019/07/01,2019/08/01,2019/09/01,2019/10/01,2019/11/01,2019/12/01,2020/01/01,2020/02/01,2020/03/01,2020/04/01,2020/05/01,2020/06/01,2020/07/01,2020/08/01,2020/09/01,2020/10/01,2020/11/01,2020/12/01,2021/01/01,2021/02/01,2021/03/01,2021/04/01,2021/05/01,2021/06/01,2021/07/01,2021/08/01,2021/09/01,2021/10/01,2021/11/01,2021/12/01,2022/01/01,2022/02/01,2022/03/01,2022/04/01,2022/05/01,2022/06/01,2022/07/01,2022/08/01,2022/09/01,2022/10/01,2022/11/01,2022/12/01,2023/01/01,2023/02/01,2023/03/01,2023/04/01,2023/05/01,2023/06/01,2023/07/01,2023/08/01,2023/09/01,2023/10/01,2023/11/01,2023/12/01,2024/01/01,2024/02/01,2024/03/01,2024/04/01,2024/05/01,2024/06/01,2024/07/01,2024/08/01,2024/09/01,2024/10/01,2024/11/01,2024/12/01,2025/01/01,2025/02/01,2025/03/01,2025/04/01,2025/05/01,2025/06/01,2025/07/01,2025/08/01,2025/09/01,2025/10/01,2025/11/01,2025/12/01,2026/01/01,2026/02/01,2026/03/01,2026/04/01
| xType = date
| yAxisFormat =
| showSymbols =
| y1 = 10097003,10370374,8792159,8941196,7730585,8096248,6653053,7707543,10114598,7503416,6761878,8479478,6306309,7029498,7793566,8952099,7201718,7403015,9094546,8753927,8887701,8836025,7012428,8297104,9776325,7383846,6846537,6478883,7844796,6800241,7032236,8907342,8070578,8878639,7374038,10399016,8843049,11735279,15986235,6536323,7794540,6340229,6963086,7077486,7262235,8135613,7350657,5924829,5389757,6706817,5468323,6028296,7420864,8089314,9463391,8952807,8032717,7976343,8839864,8511738,9062568,9099531,9196338,11036657,13507384,12075399,13497219,15603301,16689908,15728651,14140022,16914100,13589392,14818070,19016624,15144543,14891967,17026541,17298554,14032388,14847453,17608848,19967345,16730368,14386645,12098112,13610799,13122059,13901295,13433194,15511876,15674859,17748912,26144678,22153348,21554742,23027727,29476088,31116352,31891299,31844500,26251290,24446253,43524978,42154325,30934003,60141744,38114834,35256147,36402985,32703811,27105782,45361042,55198883,39017796,28042128,37231311,52390983,65887852,43219295,50138160,26315414,38336237,63309024
}}
}}
{| class="wikitable mw-collapsible mw-collapsed"
! 日期 !! 浏览量
|-
| 2026-04-01 || 63,309,024
|-
| 2026-03-01 || 38,336,237
|-
| 2026-02-01 || 26,315,414
|-
| 2026-01-01 || 50,138,160
|-
| 2025-12-01 || 43,219,295
|-
| 2025-11-01 || 65,887,852
|-
| 2025-10-01 || 52,390,983
|-
| 2025-09-01 || 37,231,311
|-
| 2025-08-01 || 28,042,128
|-
| 2025-07-01 || 39,017,796
|-
| 2025-06-01 || 55,198,883
|-
| 2025-05-01 || 45,361,042
|-
| 2025-04-01 || 27,105,782
|-
| 2025-03-01 || 32,703,811
|-
| 2025-02-01 || 36,402,985
|-
| 2025-01-01 || 35,256,147
|-
| 2024-12-01 || 38,114,834
|-
| 2024-11-01 || 60,141,744
|-
| 2024-10-01 || 30,934,003
|-
| 2024-09-01 || 42,154,325
|-
| 2024-08-01 || 43,524,978
|-
| 2024-07-01 || 24,446,253
|-
| 2024-06-01 || 26,251,290
|-
| 2024-05-01 || 31,844,500
|-
| 2024-04-01 || 31,891,299
|-
| 2024-03-01 || 31,116,352
|-
| 2024-02-01 || 29,476,088
|-
| 2024-01-01 || 23,027,727
|-
| 2023-12-01 || 21,554,742
|-
| 2023-11-01 || 22,153,348
|-
| 2023-10-01 || 26,144,678
|-
| 2023-09-01 || 17,748,912
|-
| 2023-08-01 || 15,674,859
|-
| 2023-07-01 || 15,511,876
|-
| 2023-06-01 || 13,433,194
|-
| 2023-05-01 || 13,901,295
|-
| 2023-04-01 || 13,122,059
|-
| 2023-03-01 || 13,610,799
|-
| 2023-02-01 || 12,098,112
|-
| 2023-01-01 || 14,386,645
|-
| 2022-12-01 || 16,730,368
|-
| 2022-11-01 || 19,967,345
|-
| 2022-10-01 || 17,608,848
|-
| 2022-09-01 || 14,847,453
|-
| 2022-08-01 || 14,032,388
|-
| 2022-07-01 || 17,298,554
|-
| 2022-06-01 || 17,026,541
|-
| 2022-05-01 || 14,891,967
|-
| 2022-04-01 || 15,144,543
|-
| 2022-03-01 || 19,016,624
|-
| 2022-02-01 || 14,818,070
|-
| 2022-01-01 || 13,589,392
|-
| 2021-12-01 || 16,914,100
|-
| 2021-11-01 || 14,140,022
|-
| 2021-10-01 || 15,728,651
|-
| 2021-09-01 || 16,689,908
|-
| 2021-08-01 || 15,603,301
|-
| 2021-07-01 || 13,497,219
|-
| 2021-06-01 || 12,075399
|-
| 2021-05-01 || 13,507,384
|-
| 2021-04-01 || 11,036,657
|-
| 2021-03-01 || 9,196,338
|-
| 2021-02-01 || 9,099,531
|-
| 2021-01-01 || 9,062,568
|-
| 2020-12-01 || 8,511,738
|-
| 2020-11-01 || 8,839,864
|-
| 2020-10-01 || 7,976,343
|-
| 2020-09-01 || 8,032,717
|-
| 2020-08-01 || 8,952,807
|-
| 2020-07-01 || 9,463,391
|-
| 2020-06-01 || 8,089,314
|-
| 2020-05-01 || 7,420,864
|-
| 2020-04-01 || 6,028,296
|-
| 2020-03-01 || 5,468,323
|-
| 2020-02-01 || 6,706,817
|-
| 2020-01-01 || 5,389,757
|-
| 2019-12-01 || 5,924,829
|-
| 2019-11-01 || 7,350,657
|-
| 2019-10-01 || 8,135,613
|-
| 2019-09-01 || 7,262,235
|-
| 2019-08-01 || 7,077,486
|-
| 2019-07-01 || 6,963,086
|-
| 2019-06-01 || 6,340,229
|-
| 2019-05-01 || 7,794,540
|-
| 2019-04-01 || 6,536,323
|-
| 2019-03-01 || 15,986,235
|-
| 2019-02-01 || 11,735,279
|-
| 2019-01-01 || 8,843,049
|-
| 2018-12-01 || 10,399,016
|-
| 2018-11-01 || 7,374,038
|-
| 2018-10-01 || 8,878,639
|-
| 2018-09-01 || 8,070,578
|-
| 2018-08-01 || 8,907,342
|-
| 2018-07-01 || 7,032,236
|-
| 2018-06-01 || 6,800,241
|-
| 2018-05-01 || 7,844,796
|-
| 2018-04-01 || 6,478,883
|-
| 2018-03-01 || 6,846,537
|-
| 2018-02-01 || 7,383,846
|-
| 2018-01-01 || 9,776,325
|-
| 2017-12-01 || 8,297,104
|-
| 2017-11-01 || 7,012,428
|-
| 2017-10-01 || 8,836,025
|-
| 2017-09-01 || 8,887,701
|-
| 2017-08-01 || 8,753,927
|-
| 2017-07-01 || 9,094,546
|-
| 2017-06-01 || 7,403,015
|-
| 2017-05-01 || 7,201,718
|-
| 2017-04-01 || 8,952,099
|-
| 2017-03-01 || 7,793,566
|-
| 2017-02-01 || 7,029,498
|-
| 2017-01-01 || 6,306,309
|-
| 2016-12-01 || 8,479,478
|-
| 2016-11-01 || 6,761,878
|-
| 2016-10-01 || 7,503,416
|-
| 2016-09-01 || 10,114,598
|-
| 2016-08-01 || 7,707,543
|-
| 2016-07-01 || 6,653,053
|-
| 2016-06-01 || 8,096,248
|-
| 2016-05-01 || 7,730,585
|-
| 2016-04-01 || 8,941,196
|-
| 2016-03-01 || 8,792,159
|-
| 2016-02-01 || 10,370,374
|-
| 2016-01-01 || 10,097,003
|}
数据来源:[https://stats.wikimedia.org/#/zh.wiktionary.org/reading/total-page-views/normal|table|1-year|~total|monthly Total page views]
===热词===
页面浏览量最高的词条:
{{Wiktionary:統計/熱詞
|year=2024 |month=6
|t1=尛 |cat1=[[:Category:漢字|漢字]] |v1=5,385 |m1=82.8
|t2=。 |cat2=[[:Category:標點符號|標點符號]] |v2=5,355 |m2=94.4
|t3=! |cat3=[[:Category:標點符號|標點符號]] |v3=3,407 |m3=74.2
|t4=凪 |cat4=[[:Category:和製漢字|和製漢字]]|v4=3,120 |m4=62.0
|t5=雫 |cat5=[[:Category:和製漢字|和製漢字]] |v5= 3,114 |m5=64.6
|t6=又双叒叕 |cat6=[[:Category:漢語副詞|漢語副詞]] |v6=2,528 |m6=73.4
|t7=你好 |cat7=[[:Category:漢語感嘆詞|漢語感嘆詞]] |v7=2,513 |m7=41.1
|t8=昶 |cat8=[[:Category:漢字|漢字]] |v8=2,412 |m8=56.7
|t9=肉便器 |cat9=[[:Category:漢語名詞|漢語名詞]] |v9=2,345 |m9=78.4
|t10=辻 |cat10=[[:Category:和製漢字|和製漢字]] |v10=2,150 |m10=71.8
}}
数据来源:[https://pageviews.toolforge.org/topviews/?project=zh.wiktionary.org&platform=all-access&date={{CURRENTYEAR}}-{{CURRENTMONTH}}&excludes= Topviews Analysis - Most viewed pages of a project]
==收录词条==
{{See|Wiktionary:统计/各语言词条}}
==参看==
*[[Special:Statistics|基本统计]]
[[Category:維基詞典統計]]
gfogkiopq63nfupq8vnm98nxwlf1eik
Nebel
0
11222
9814465
9547862
2026-06-16T06:44:04Z
Sayonzei
40728
/* Idioms */
9814465
wikitext
text/x-wiki
{{also|nebel}}
==德语==
===发音===
* {{IPA|de|/ˈneːbəl/|[ˈneːbl̩]}}
* {{audio|de|De-at-Nebel.ogg|(奥地利)音频}}
* {{audio|de|De-Nebel.ogg}}
===词源 1===
源自{{inh|de|gmh|nebel}},源自{{inh|de|goh|nebul}},源自{{inh|de|gem-pro|*nebulaz}},源自{{der|de|ine-pro|*nébʰos}}(衍生出{{cog|grc|νεφέλη||云,雾}}、{{cog|la|nebula||雾}})。
====名词====
{{de-noun|m}}
# [[雾]]
# {{lb|de|天文学}} [[星云]]
=====变格=====
{{de-ndecl|m}}
=====近义词=====
* {{l|de|Wolke}}
=====衍生词汇=====
* {{l|de|nebeln||起雾}}
* {{l|de|Nebelung||11月}} {{qualifier|弃用}}
* {{l|de|vernebeln}}
* {{l|de|nebelhaft}}, {{l|de|nebelartig}}, {{l|de|nebelig}}
=====相关词汇=====
{{der4|de
|Abkühlungsnebel
|Bergnebel
|Berührungsnebel
|Bodennebel
|Dampfnebel
|Eisnebel
|Flussnebel
|Frühnebel
|Hochnebel
|Kaltwassernebel
|Küstennebel
|Kunstnebel
|Mischungsnebel
|Moornebel
|Morgennebel
|Seenebel
|Spiralnebel
|Sprühnebel
|Sternennebel
|Strahlungsnebel
|Talnebel
|Verdunstungsnebel
|Wiesennebel
|Nebelart
|Nebelbank
|Nebelbildung
|Nebelbogen
|Nebeldichte
|Nebeldunst
|Nebelentstehung
|Nebelfleck
|Nebelgrenze
|Nebelhorn
|Nebelkammer
|Nebelkerze
|Nebelmaschine
|Nebelregen
|nebelreich
|Nebelschicht
|Nebelstreif
|Nebelschlussleuchte
|Nebeltag
|Nebeltau
|Nebelteppich
|Nebeltraufe
|Nebeltropfen
|Nebelwald
|Nebelwand
}}
=====俗語=====
* {{l|de|bei Nacht und Nebel|t=秘密地,悄悄地|lit=在晚上和雾中}}
===词源 2===
====专有名词====
{{de-proper noun|n}}
# 德国石勒苏益格-荷尔斯泰因州的一个镇:{{w|内伯尔}}
===词源 3===
====专有名词====
{{de-proper noun|m|g2=f}}
# {{surname|de}}
===延伸阅读===
* {{R:de:Duden}}
jmd5ytg5hw8yxn33s66uq16eajbf0bp
post
0
15416
9814647
6222597
2026-06-16T10:13:58Z
TongcyDai
53191
9814647
wikitext
text/x-wiki
{{also|Appendix:"post"的變體}}
{{minitoc}}
==英語==
[[File:Posts on the saltmarsh, Warton Sands - geograph.org.uk - 1658558.jpg|thumb|right|Wooden posts.]]
{{swp|en:}}
===其他形式===
* {{alt|en|poast||棄用}}
===發音===
* {{IPA|en|/pəʊst/|a=RP}}
* {{enPR|pōst|a=GA}}、{{IPA|en|/poʊst/}}
* {{IPA|en|[poːst]|a=CA}}
* {{audio|en|en-us-post.ogg|a=US}}
* {{rhymes|en|əʊst|s=1}}
===詞源1===
{{etymon|en|id=柱子|:inh|enm:post<ety:inh<ang:post>:bor<fro:post<ety:der<la:postis>>>>|tree=1}}
{{inh+|en|enm|post}},源自{{der|en|ang|post||柱子,門柱}}和{{der|en|fro|post||柱子,直樑}},兩者均源自{{der|en|la|postis||門,柱子,門柱}}。
====名詞====
{{en-noun}}
# 從地面伸出的長[[暗榫]]或[[木板]];[[柵欄]][[柱子]];[[燈柱]]
#: {{ux|en|ram a '''post''' into the ground|把'''柱子'''打入地下}}
# {{lb|en|建設}} [[壁骨]];[[二乘四木材]]
# [[電池]]的[[極]]
# {{lb|en|牙科學}} [[樁]](插入[[根管]]中為牙冠提供固位的細長物)
# {{lb|en|聲樂|主要|無伴奏合唱}} 在移動的[[和聲]]中延長的最終[[旋律]]音符
# {{lb|en|紙張|印刷}} 一種尺寸為 19.25 英寸 × 15.5 英寸的[[印刷]][[紙]]
# {{lb|en|運動}} [[門柱]]
#* {{quote-web|en|date=December 29, 2010|author=Chris Whyatt|title=Chelsea 1 - 0 Bolton|work=BBC|url=http://news.bbc.co.uk/sport1/hi/football/eng_prem/9309542.stm|passage=But they marginally improved after the break as {{w|lang=en|Didier Drogba}} hit the '''post'''.|t=但他們在休息後略有改善,{{w|lang=en|迪迪埃·德羅巴}}擊中了'''門柱'''。}}
# [[籃球]]場上靠近籃筐的[[位置]]
# {{lb|en|棄用}} 旅館或[[客棧]]的[[門柱]],上面用粉筆寫著[[顧客]]的[[賒帳]];因此指欠款,[[債務]]
#* {{quote-text|en|year=1600|author=w:en:Samuel Rowlands|title=The knauve of clubs
|passage=when God ſends coyne, <br>I will diſcharge your '''poaſt'''|t=當上帝賜予錢幣時,<br>我將清償你的'''賒帳'''}}
# [[鉤針]]編織的垂直部分
=====派生詞彙=====
{{col6|en|ale post
|antepost
|A-post
|back post
|backpost
|barpost
|bedpost
|behind post
|be left at the post
|B-post
|cattlepost
|checkpost
|C-post
|crownpost
|deaf as a post
|doorpost
|D-post
|dumb as a post
|far post
|fencepost
|fingerpost
|first past the post
|flagpost
|footpost
|from pillar to post
|from post to pillar
|gatepost
|goalpost
|gradient post
|guarding post
|guardpost|Bell Post Hill
|guidepost
|handpost
|headpost
|heelpost
|high-post
|hitching post
|housepost
|jack post
|king post
|knight of the post
|lamp post
|lamppost
|listening post
|low post
|low post area
|milepost
|millpost
|mispost
|mooring post
|near post
|netpost
|newel post
|observation post
|pencil-post bed
|pip at the post
|pip to the post
|pissing post
|plucking post
|poster
|post hanger
|posthole
|postless
|postlike
|post mill
|post mold
|post oak
|post parade
|postpipe
|post position
|post prison
|post time
|postward
|postwise
|powder-post
|powder-post beetle
|prick post
|queen post
|quoin post
|reaching-post
|ringpost
|rubbing post
|rudderpost
|Samson post
|scratching post
|seat post
|sidepost
|signalpost,signal post
|signpost
|snubbing post
|snub post
|聲音 post
|starting post
|stempost
|sternpost
|strainer post
|swinging post
|telegraph post
|tool post,toolpost
|travelling post office
|turning post
|warping post
|watchpost
|whipping post
|whistle post
|winning post
}}
====動詞====
{{en-verb}}
# {{lb|en|及物}} 在顯眼處懸掛([[告示]])供人閱覽
#: {{ux|en|'''Post''' no bills.|嚴禁'''張貼'''海報}}
#: {{ux|en|[[w:en:Martin Luther|Martin Luther]] '''posted''' his ninety five theses on the door of the Castle Church in [[Wittenburg]].|[[w:en:馬丁·路德|馬丁·路德]]在維滕貝格諸聖堂的門上'''張貼'''了《九十五條論綱》。}}
# {{lb|en|及物|引申}} [[公開]][[宣布]];[[發布]]
#: {{ux|en|The company '''posted''' record profits this quarter.|公司本季度'''公布'''了創紀錄的利潤}}
#* {{quote-book|en|year=2001|author=Bernard E. Harcourt|title=Illusion of Order|chapter=4|text=Although New York City preceded many large cities in '''posting''' a drop in homicides and other violent offenses in the early 1990s, by the end of the decade it also seemed to be at the forefront of a possible cyclical rebound.|t=儘管紐約市在 1990 年代初期先於許多大城市'''公布'''了兇殺及其他暴力犯罪的下降,但到了十年末期,它似乎也處於可能出現的週期性反彈的最前沿。}}
#* {{quote-web|en|date=23 Aug 24|author=@jbodineh|work=Twitter|url=https://x.com/jbodineh/status/1819905988008272143|text=He’s saying if you can’t win, quitting is okay? What would the PGA say if golfers quit the tournament after '''posting''' a high score?|t=他的意思是如果你贏不了,放棄也沒關係?如果高爾夫球手在'''打出'''高分後退出比賽,PGA 會怎麼說?}}
# 將……公之於眾以示[[譴責]]或[[責備]];[[可恥]]地宣揚;發布公告譴責
#: {{ux|en|to '''post''' someone for cowardice|公告某人的懦弱以示'''譴責'''}}
#* {{quote-text|en|year=1732|author=w:en:George Granville|title=Epilogue to the She-Gallants|line=13|passage=On Pain of being '''posted''' to your Sorrow<br>Fail not, at Four, to meet me here To-morrow.|t=否則將被'''張貼'''公告令你蒙羞<br>切記,明天四點在此與我相見。}}
# {{lb|en|會計}} 將(帳目)從[[日記帳]][[結轉]]到[[分類帳]]
#* {{RQ:Arbuthnot Law|chapter=Of John Bull's Second Wife, and the Good Advice that She Gave Him|page=18|passage=You have not '''poſted''' your Books theſe Ten years; hovv is it poſſible for a Man of Buſineſs to keep his Affairs even in the VVorld at this rate?|t=你這十年來都沒有'''結轉'''過帳目;一個生意人怎麼可能在這種情況下維持他在世上的事務?}}
# [[通知]];[[提供]][[消息]]給;使熟悉某事的[[細節]](常與 {{m|en||up}} 連用)
#* {{quote-journal|en|date=March 2 1872|title=Interviewing a Prince|journal={{w|lang=en|Saturday Review (London newspaper)|Saturday Review}}|volume=33|issue=853|page=273|location=London|passage=thoroughly '''posted''' up in the politics and literature of the day|t=對當今的政治和文學有透徹的'''了解'''}}
# {{lb|en|及物}} 存入一筆可能退還也可能不退還的款項
## {{lb|en|賭博}} 支付([[賭注]]或[[盲注]])
##: {{ux|en|Since Jim was new to the game, he had to '''post''' $4 in order to receive a hand.|因為吉姆是遊戲新手,他必須'''下注''' 4 美元才能拿到一手牌}}
## {{lb|en|法律}} 支付[[保釋金]]
##: {{co|en|to '''post''' bail|'''交納'''保釋金}}
##* {{quote-book|en|date=2022-01-01|author=Paul Bergman; Sara J. Berman|title=The Criminal Law Handbook: Know Your Rights, Survive the System|publisher=Nolo|isbn=9781413329407|passage=For example, if the police or court sets bail at $1,000, and a suspect owns a fancy watch worth at least that amount, the defendant may be able to use the watch to '''post''' bail.|t=例如,如果警察或法院將保釋金定為 1,000 美元,而嫌疑人擁有一塊價值至少為該數額的精美手錶,被告或許可以使用該手錶來'''交納'''保釋金。}}
##* {{quote-book|en|date=2010-05-18|author=David Andrew Schultz|title=Encyclopedia of the United States Constitution|publisher=Infobase Publishing|isbn=9781438126777|page=45|passage=Because wealthy defendants are better positioned to '''post''' bail or provide collateral, the American bail system has been criticized as being biased against the poor.|t=因為富有的被告更有能力'''交納'''保釋金或提供抵押品,美國的保釋制度一直被批評為對窮人有偏見。}}
##* {{quote-book|en|year=2006|month=05|author=Robert Perry|title=Dirty Money|publisher=iUniverse|isbn=9780595387625|page=34|passage=Carmen '''posted''' a $15,000 bond, and like the other Valenzuelas before her, failed to appear for trial. Morgan's scorecard for case 4: 4.4 pounds seized, 2 Valenzuelas arrested, 1 Valenzuela dismissed, 1 bail jump.|t=卡門'''交納'''了 15,000 美元的保釋金,並且像她之前的其他巴倫蘇埃拉家族成員一樣,未出庭受審。摩根對第四個案件的記分卡:繳獲 4.4 磅,逮捕 2 名巴倫蘇埃拉成員,駁回 1 名巴倫蘇埃拉成員,1 人棄保潛逃。}}
##* {{quote-book|en|year=1996|author=Lee N. June; Matthew Parker|title=Men to Men: Perspectives of Sixteen African-American Christian Men|publisher=Harper Collins|isbn=9780310201571|page=201|passage=When you '''post''' bail, and the case is over, the court system will take 30 percent of that bail which, in this example, will be $3,000 of the original 10 percent that you posted. Hence, you will get $7,000 back.|t=當你'''交納'''保釋金,並且案件結束後,法院系統將抽取該保釋金的 30%,在這個例子中,這將是你最初交納的 10% 中的 3,000 美元。因此,你會拿回 7,000 美元。}}
=====派生詞彙=====
{{col|en|nonposted|preposted|unposted
|post the coal
|post up|blogpost
|poster
}}
=====派生語彙=====
* {{desc|zh|po|bor=1}}
=====參考資料=====
* {{R:Online Etymology Dictionary}}
===詞源2===
{{etymon|en|id=郵件|:bor|frm:poste<ety:der<it:posta<id:posita>>>|tree=1}}
{{bor+|en|frm|poste}},源自{{der|en|it|posta||停放馬車的地方}},{{m|it|posto||放置的,位於的}}的陰性形式。
====名詞====
{{en-noun}}
# {{lb|en|棄用}} [[驛站]]系統中沿[[驛道]]特定地點駐守的負責人員,負責沿途[[傳遞]][[君主]](及後來其他人)的[[信件]]和[[公文]] {{defdate|16世紀至17世紀}}
# {{lb|en|過時}} 驛站,[[中繼站]],或建立在某些公認路線上為旅客提供[[茶點]]和[[住宿]]的一系列[[站點]]之一
#: {{ux|en|a stage or railway '''post'''|公共馬車或鐵路的'''中繼站'''}}
# [[軍事]][[基地]];士兵或部隊[[駐紮]]的地點;亦指駐紮在該地點的部隊
#* {{quote-book
|en
|url=https://archive.org/details/china0000tuan/
|year=1865
|title=Peking and the Pekingese
|volume=II
|author=David Field Rennie, M.D.
|publisher={{w|lang=en|John Murray (publishing house)|John Murray}}
|location=London
|page=42
|pageurl=https://archive.org/details/pekingandpeking01renngoog/page/n60/
|passage=''September'' 6''th.''—The English mail of the 10th of July arrived to-day, and while Mr. Hart was at the Foreign Office engaged on business with Wan-se-ang and Hang-Ki, he received his Shang-hai letters, one of which contained the news of the recapture by the Imperial forces of the cities of Woo-tu and Nan-ching, two important rebel '''posts'''.|t=9 月 6 日。——7 月 10 日的英國郵件今天到達,當赫德先生在總理衙門與文祥和恆祺洽談業務時,他收到了上海的信件,其中一封包含了帝國軍隊收復武都和南京這兩個重要叛軍'''據點'''的消息。}}
# {{lb|en|現|_|歷史}} 沿設定路線[[快遞]]信件和公文的人;[[信使]] {{defdate|自16世紀}}
#* {{RQ:Shakespeare Two Gentlemen of Verona|I|iii|line=152|text=I fear my Julia would not deign my lines,<br>Receiving them from such a worthless '''post'''.|t=我怕我的茱莉亞會不屑看我的信,<br>因為是從這樣一個毫無價值的'''信使'''手中收到的。}}
#* {{quote-text|en|year=1599|author={{w|lang=en|George Abbot }}|title=Geography, or a Brief Description of the Whole World
|passage=in certain {{long s}}et places there be alwaies fresh '''Po{{long s}}ts''', to carry that further which is brought unto them by the others|t=在某些特定的地方總是有新的'''驛使''',以便將其他人送來的東西進一步傳遞下去}}
#* {{quote-text|en|year=2011|author=[[w:en:Thomas Penn (historian)|Thomas Penn]]|title=Winter King: Henry VII and the Dawn of Tudor England|page=199|publisher=Penguin|year_published=2012
|passage=information was filtered through the counting-houses and warehouses of Antwerp; '''posts''' galloped along the roads of the Low Countries, while dispatches streamed through Calais, and were passed off the merchant galleys arriving in London from the Flanders ports.|t=信息通過安特衛普的帳房和倉庫過濾;'''信使'''在低地國家的道路上飛馳,而公文則湧過加萊,並從抵達倫敦的法蘭德斯港口的商用槳帆船上傳遞下來。}}
# {{lb|en|英國|愛爾蘭|印度|澳大利亞|紐西蘭}} [[郵政]]:
## 遞送[[信件]]、[[包裹]]等的組織或該組織提供的服務 {{defdate|自17世紀}}
##: {{syn|en|mail}}
##: {{ux|en|I sent a parcel via/by '''post'''.|我透過'''郵政'''寄了一個包裹}}
##* '''1707''', {{w|lang=en|Alexander Pope}}, Letter VII (to Mr. Wycherly), November 11
##*: I take it too as an opportunity of sending you the fair copy of the poem on Dullness, which was not then finished, and which I should not care to hazard by the common '''post'''.
## 單次遞送的信件;遞送給某人或某個地址的單批信件或郵件 {{defdate|自17世紀}}
##: {{syn|en|mail}}
##* {{quote-journal|en|date=2020 November 18|title=Stop & Examine|journal=Rail|page=71|text=Royal Mail worker Evette Chapman gathered a team of 12 colleagues to deliver '''post''' in fancy dress and raise money for a nurses' charity and patients in Musgrove Park Hospital, Taunton.|t=皇家郵政員工埃薇特·查普曼召集了一個由 12 名同事組成的團隊,穿著化裝服遞送'''郵件''',為護士慈善機構和湯頓馬斯格羅夫公園醫院的患者籌集資金。}}
# {{senseid|en|電子訊息}} [[貼文]],[[帖子]]{{gl|在電子或網際網路[[論壇]]、[[部落格]]等處發布的訊息}} {{defdate|自20世紀}}
#* {{quote-journal|en|journal=w:en:TIME|title=Who Is Balendra Shah, the Rapper On Track to Become Nepal’s Next Prime Minister|date=March 11 2026|author=Chad de Guzman
|text=Oli conceded defeat and, in a '''post''' on X Saturday, congratulated Shah. “Balen Babu, Congratulations to you for the victory! May your five-year tenure be smooth and successful—heartfelt best wishes!”
|url=https://time.com/article/2026/03/11/balendra-shah-elections-nepal-prime-minister-rsp-gen-z-protests/
|archiveurl=https://web.archive.org/web/20260311233009/https://time.com/article/2026/03/11/balendra-shah-elections-nepal-prime-minister-rsp-gen-z-protests/|t=奧利承認失敗,並在週六 X 上的一篇'''貼文'''中祝賀沙阿。「巴倫·巴布,祝賀你取得勝利!願你五年的任期順利成功——衷心祝願!」}}
# {{lb|en|美式足球}} 一種中深遠距離的[[傳球]][[路線]],[[接球員]]從[[爭球線]]直奔球場 10-20 碼,然後以 45 度角切向球場中央(朝向對面的門柱)
#: {{ux|en|Two of the receivers ran '''post''' patterns.|兩名接球員跑了'''朝向門柱'''的路線}}
# {{lb|en|棄用}} [[匆忙]]或[[迅速]]{{gl|如信使或郵遞員般}}
#* {{RQ:Shakespeare Romeo and Juliet|V|iii|line=273|text=And then in '''post''' he came from Mantua.|t=然後他'''星夜兼程'''從曼圖亞趕來。}}
# {{lb|en|棄用}} [[主管]]驛站(尤指郵政驛站)的人
#* {{quote-text|en|year=1858|author=w:en:John Gorham Palfrey|title=History of New England|volume=1|chapter=IV|page=136
|passage=there he held the office of postmaster, or, as it was then called, '''''post''''', for several years.|t=在那裡他擔任了幾年的郵政局長,或者當時被稱為'''驛站主管'''。}}
=====派生詞彙=====
{{col6|en|airpost
|block post
|blog post,blogpost
|book post
|border post
|borderpost
|bottom-post
|by return of post
|command post
|Cossack post
|crosspost
|customs post
|dark post
|Dease Lake Post
|dispost
|drunkpost
|flounce post
|folio post
|freepost
|ghost post
|gunpost
|hardship post
|in the post
|Job's-post
|last post
|linkpost
|make post
|masterpost
|megapost
|metapost
|micropost
|mispost
|necropost
|newspost
|outpost
|parcel post
|penny post
|pigeon post
|pinned post
|pneumatic post
|postal
|post and pair
|postathon
|postback
|post bag,postbag
|post box,postbox
|postboy
|post-captain
|postcard
|postcart|post service
|post chaise
|postcode,post code
|postcount,post count
|post day
|postee
|postform
|post-free
|postgasm
|postgirl
|postgiro
|posthaste,post-haste
|posthorn,post horn
|posthorse,post-horse
|post-house
|posthouse
|postlady
|post lady
|postman
|postmark
|postmaster
|postmile
|postmistress
|post note
|postoffice,post office
|postperson
|postrider,post-rider
|postroom
|post town
|Postville
|postwhore
|postwoman
|postworthy
|pre-to-post
|registered post
|repost
|schizopost
|sentry post
|side-post
|spaghetti post
|staging post
|stick to one's post
|sticky post
|subpost
|take post
|telepost
|textpost
|top-post
|tradepost
|trade post
|waypost
|xpost
}}
=====派生語彙=====
{{top4}}
* {{desc|bor=1|bg|пост}}
* {{desc|bor=1|ca|post}}
* {{desc|bor=1|zh|po|PO}}
*: {{desc|yue|-}} pou<sup>1</sup>
*: {{desc|cmn|-}} pōu
*: {{desc|nan|-}} pho͘
* {{desc|bor=1|fr|post}}
* {{desc|bor=1|ga|post}}
* {{desc|bor=1|de|Post}}
*: {{desc|bor=1|gsw|Post}}
*: {{desc|bor=1|bar|Post}}
* {{desc|bor=1|el|ποστ}}
* {{desc|bor=1|hu|poszt}}
* {{desc|bor=1|it|post}}
* {{desc|bor=1|ja|ポスト}}
* {{desc|bor=1|kk|пост}}
* {{desc|bor=1|ms|pos}}
* {{desc|bor=1|mi|pōhi}}
* {{desc|bor=1|pl|post}}
* {{desc|bor=1|pt|post}}
* {{desc|bor=1|ro|post}}
* {{desc|bor=1|ru|пост}}
* {{desc|bor=1|gd|post}}
* {{desc|bor=1|es|post}}
* {{desc|bor=1|sw|posta}}
* {{desc|bor=1|uk|пост}}
* {{desc|bor=1|cy|post}}
{{bottom}}
====動詞====
{{en-verb}}
# 乘[[驛馬]]旅行;最初指作為[[信使]]騎驛馬旅行 {{defdate|自16世紀}}
#* {{RQ:Mary Shelley Frankenstein|text=Beyond Cologne we descended to the plain of Holland; and we resolved to '''post''' the remainder of our way […].|t=過了科隆,我們下到了荷蘭平原;我們決定剩下的路程乘'''驛馬'''前行 [...]。}}
# 快速[[旅行]];[[匆忙]] {{defdate|自16世紀}}
#* {{RQ:Shakespeare King Lear|III|vi|line=1|text='''Post''' speedily to my lord your husband.|t=快馬加鞭'''趕到'''我主你丈夫那裡去。}}
#* ''c.'' '''1652''', {{w|lang=en|John Milton}}, "On His Blindness", line 13
#*: thousand at his bidding speed,<br>And '''post''' o'er land and ocean without rest;<br>They also serve who only stand and wait.
# {{lb|en|英國|愛爾蘭|印度|澳大利亞|紐西蘭}} 透過郵政服務寄送(郵件等) {{defdate|自19世紀}}
#: {{ux|en|Mail items '''posted''' before 7.00pm within the Central Business District and before 5.00pm outside the Central Business District will be delivered the next working day.|在中央商業區下午 7:00 前及中央商業區外下午 5:00 前'''寄出'''的郵件將在下一個工作日送達}}
# {{lb|en|騎馬}} 在馬鞍上隨著馬的動作起伏,尤指在[[快步]]時 {{defdate|自19世紀}}
# {{lb|en|網際網路}} [[po文]],[[發帖]]{{gl|在[[新聞組]]、[[論壇]]、[[部落格]]等處[[發布]](訊息)}} {{defdate|自20世紀}}
#: {{ux|en|I couldn't figure it out, so I '''posted''' a question on the mailing list.|我弄不明白,所以我發郵件列表上'''發了'''個問題}}
=====派生詞彙=====
{{col|en|poster|autopost|repost|郵政 off|unposted|blogpost|drunkpost|flypost|memepost|mispost|multipost|necropost|overpost|postable|postage|unpost}}
=====派生語彙=====
{{top4}}
* {{desc|ca|postejar|bor=1}}
* {{desc|nl|posten|bor=1}}
* {{desc|fi|postata|bor=1}}
* {{desc|fr|poster|bor=1}}
* {{desc|ka|პოსტავს|დაპოსტავს|bor=1}}
* {{desc|de|posten|bor=1}}
*: {{desc|gsw|poste|bor=1}}
*: {{desc|bar|postn|bor=1}}
* {{desc|it|postare|bor=1}}
* {{desc|pl|postować|bor=1}}
* {{desc|pt|postar|bor=1}}
* {{desc|ro|posta|bor=1}}
* {{desc|ru|постить|bor=1}}
* {{desc|es|postear|bor=1}}
* {{desc|sv|posta|bor=1}}
* {{desc|uk|постити|bor=1}}
* {{desc|cy|postio|bor=1}}
{{bottom}}
====副詞====
{{en-adv|-}}
# 使用驛政系統,騎驛馬;透過接力換馬(在每個驛站換馬);因此指[[快速]]地,[[迅速]]地
#* {{RQ:Shakespeare All's Well|IV|5|text=His highness comes '''post''' from Marseilles,|t=殿下從馬賽'''快馬加鞭'''趕來,}}
#* {{RQ:Fielding Tom Jones|text=In this posture were affairs at the inn when a gentleman arrived there '''post'''.|t=客棧裡的情形正是如此,這時一位紳士'''乘驛馬'''抵達了。}}
#* {{quote-book|en|year=1790|author=w:en:Jane Austen|chapter=Love and Freindship|title=Juvenilia
|passage=We therefore determined to change Horses at the next Town and to travel '''Post''' the remainder of the Journey.|t=因此我們決定在下個城鎮換馬,並'''乘驛馬'''走完剩餘的旅程。}}
#* {{RQ:Kipling Plain Tales|edition=2nd|story=The Arrest of Lieutenant Golightly|pages=134–135|pageref=135|passage=He prided himself on looking neat even when he was riding '''post'''.|t=他為自己即使在'''騎驛馬飛馳'''時也能看起來衣著整潔而自豪。}}
# 透過郵政服務寄送地
=====派生語彙=====
* {{desc|de|bor=1|posten}}
===詞源3===
可能借自{{bor+|en|fr|poste}}。
====名詞====
{{en-noun}}
# 指定的[[崗位]];[[哨所]]
#* {{quote-journal|en|date=2013-06-08|volume=407|issue=8839|page=52|magazine=w:en:The Economist
|title=[http://www.economist.com/news/international/21579039-chinas-growing-empire-ports-abroad-mainly-about-trade-not-aggression-new-masters The new masters and commanders]
|passage=源自the ground, Colombo’s port does not look like much. Those entering it are greeted by wire fences, walls dating back to colonial times and security '''posts'''. For mariners leaving the port after lonely nights on the high seas, the delights of the B52 Night Club and Stallion Pub lie a stumble away.|t=從地面上看,可倫坡港看起來沒什麼特別。進入港口的人會迎面看到鐵絲網、可追溯至殖民時代的牆壁和保安'''哨所'''。對於在公海上度過漫長孤寂之夜後離開港口的海員來說,B52 夜總會和種馬酒吧的樂趣就在幾步之遙。}}
# 組織中指定的[[職位]],工作崗位
#* {{quote-book
|en
|year=2005
|author=w:en:Jesse Helms
|chapter=Bill Clinton
|title=Here's Where I Stand: A Memoir
|url=https://archive.org/details/hereswhereistand0000helm/
|location=[[New York]]
|publisher=w:en:Random House
|ISBN=0-375-50884-8
|LCCN=2005042795
|OCLC=835465798
|page=198
|pageurl=https://archive.org/details/hereswhereistand0000helm/page/198/
|text=As hard as this may seem for some people to understand, my adamant stand in favor of President Clinton leaving his '''post''' was not personal.|t=儘管這對某些人來說可能很難理解,但我堅決支持克林頓總統離職(離開他的'''崗位''')並非出於個人恩怨。}}
#* {{quote-journal|en|date=December 14, 2011|author=Angelique Chrisafis|work=Guardian
|title=[http://www.guardian.co.uk/world/2011/dec/14/rachida-dati-french-sexism-elitism Rachida Dati accuses French PM of sexism and elitism]
|passage=She was Nicolas Sarkozy's pin-up for diversity, the first Muslim woman with north African parents to hold a major French government '''post'''. But Rachida Dati has now turned on her own party elite with such ferocity that some have suggested she should be expelled from the president's ruling party.|t=她是尼古拉·薩科齊多元化的代表人物,是第一位父母為北非裔、擔任法國政府重要'''職位'''的穆斯林女性。但拉奇達·達蒂現在卻以如此猛烈的攻勢轉向了她自己的黨內精英,以至於有人建議她應該被開除出總統的執政黨。}}
=====派生詞彙=====
{{col|en|postholder}}
====動詞====
{{en-verb}}
# 將(名字)列入[[名單]]{{gl|如為了服役、晉升等}}
# [[派任]],[[分派]]到某個[[崗位]]
#: {{ux|en|'''Post''' a sentinel in front of the door.|在門前'''設立'''哨兵}}
#* {{RQ:De Quincey Works|volume=II|page=116|passage=[I]t might be to obtain a ship for a lieutenant that had passed as master and commander, or to get him "'''posted'''"— {{...}}|t=[它]可能是為了給一名已經晉升為大副和指揮官的中尉弄一艘船,或者讓他被“'''派任'''”——}}
===詞源4===
{{ety|en|id=之後|:bor|la:post|text=+|tree=1}}
====介詞====
{{en-head|prep}}
# 在……[[之後]];尤指在具有長期[[影響]]的重大事件之後
#* {{quote-text|en|year=2008|author=Michael Tomasky|chapter=Obama cannot let the right cast him in that 60s show|title=The Guardian|url=http://www.guardian.co.uk/commentisfree/2008/apr/21/barackobama.race
|passage=One of the most appealing things for me about Barack Obama has always been that he comes '''post''' the post-60s generation.|t=對我來說,巴拉克·奧巴馬最吸引人的地方之一一直是他來自 60 年代'''之後'''的那一代人。}}
#* {{quote-text|en|year=2008|author=Matthew Stevens|chapter=Lew pressured to reveal what he knows|title=The Australian|url=https://web.archive.org/web/20080505115149/http://www.theaustralian.news.com.au/story/0,25197,23599518-5001641,00.html
|passage=Lew reckons he had three options for the cash-cow which was Premier '''post''' the Coles sale.|t=Lew 認為在科爾斯出售案'''之後''',對於總理這個搖錢樹,他有三個選擇。}}
=====派生詞彙=====
{{col6|en
|ex post
|post factum
|post festum
|post hoc
|post meridiem
|post obitum
}}
===詞源5===
{{clipping|en|post-production}}。
====名詞====
{{en-noun|-}}
# {{lb|en|電影|非正式}} [[後製]],[[後期]][[製作]]
#: {{co|en|We'll fix it in '''post'''.|我們會在'''後期'''處理它}}
#* {{quote-book|en|year=2013|author=Bruce Mamer|title=Film Production Technique: Creating the Accomplished Image|passage=Admittedly many of these can be fixed in '''post''', but this may limit your flexibility in other areas.|t=誠然,其中許多問題可以在'''後期'''修復,但這可能會限制你在其他方面的靈活性。}}
====參見====
* {{l|en|post-}}
===詞源6===
{{clipping|en|post mortem}}。
====名詞====
{{en-noun}}
# {{lb|en|醫學|非正式}} [[屍檢]]{{gl|調查屍體的死因}}
#* {{quote-text|en|year=2010|author=Sandra Glahn|title=Informed Consent|page=306
|passage=I gotta run. Yes, send the kid to the morgue. We'll do a '''post''' on Monday.|t=我得走了。是的,把孩子送到太平間。我們星期一會做'''屍檢'''。}}
===異序詞===
* {{anagrams|en|a=opst|OTPs|SPTO|spot|TSOP|OSTP|Tops|pots|TPOs|TOPS|stop|tops|Spot|POTS|opts|PTOs}}
{{C|en|紙張尺寸}}
{{cln|en|作格動詞}}
==布列塔尼語==
===詞源===
{{der+|br|la|postis}}。
===發音===
* {{IPA|br|/ˈpost/}}
===名詞===
{{br-noun|m|p=postoù|p2=pester}}
# [[柱子]];[[桿]]
====近義詞====
* {{l|br|peul}}
==加泰羅尼亞語==
===發音===
* {{ca-IPA|ò}}
===詞源1===
{{inh+|ca|la|postis}}。
====名詞====
{{ca-noun|f}}
# [[木板]]
# [[架子]]
#: {{syn|ca|lleixa|prestatge}}
=====下位詞=====
* {{l|ca|tauló}}
=====派生詞彙=====
* {{l|ca|post de pit}}
* {{l|ca|post de planxar}}
===詞源2===
{{inh+|ca|la-vul|postus}},源自 {{m|la|positus}}。
====名詞====
{{ca-noun|m}}
# {{lb|ca|軍事}} [[崗位]]
====分詞====
{{ca-pp}}
# {{past participle of|ca|pondre}}
===延伸閱讀===
* {{R:ca:IEC2}}
==辛布里語==
===詞源===
{{bor+|cim|it|posta}}。
===名詞===
{{cim-noun|f}} {{tlb|cim|Luserna}}
# [[郵政]]{{gl|遞送郵件的方法}}
# [[郵局]]
====派生詞彙====
* {{l|cim|postkart}}
===參考資料===
* {{R:Patuzzi}}
{{c|cim|郵政|建築}}
==康沃爾語==
===發音===
* {{IPA|kw|[pɔːst]}}
===詞源1===
{{bor+|kw|en|post#詞源2}}。
====名詞====
{{kw-noun|m|r}}
# {{lb|kw|郵政服務}} [[郵政]]
# {{l|en|mail}}
=====相關詞彙=====
{{col|kw
|lyther<t:信件>
|lytherva<t:郵局>
|sodhva an post,sodhva bost<t:郵局>
|postya<t:郵件、郵政><pos:v>
|kod post<t:郵遞區號>
}}
===詞源2===
{{bor+|kw|en|post#詞源1}}
====名詞====
{{kw-noun|m|r}}
# [[柱子]]
# {{l|en|stake}}
=====派生詞彙=====
{{col|kw
|post arwodh<t:signpost>
}}
===詞首音變===
{{kw-mut}}
==丹麥語==
===發音===
* {{IPA|da|/ˈpɔst/|[ˈpʰʌsd̥]}}
===詞源1===
透過{{bor|da|fr|poste|g=m}}借自{{der|da|it|posto||地方,位置}},源自{{der|da|la|positus||位置}},源自動詞{{m|la|pono|pōnō|放置}}。
====名詞====
{{da-noun|en|er}}
# [[職位]],[[崗位]]
=====變格=====
{{da-decl|en|er}}
=====派生詞彙=====
* {{l|da|postere}}
* {{l|da|vagtpost}}
===詞源2===
透過{{bor|da|fr|poste|g=f}}借自{{der|da|it|posta||中途停留點,郵局}},源自{{der|da|la|posita}},{{m|la|pono|pōnō|放置}} 的過去分詞。
====名詞====
{{da-noun|en|-}}
# [[郵件]]{{gl|信件或包裹}}
# [[郵政]]{{gl|分發信件或包裹的公共機構}}
# [[郵差]]{{gl|攜帶信件或包裹的人}}
=====變格=====
{{da-decl|en|n=sg}}
=====派生詞彙=====
* {{l|da|postbud}}
* {{l|da|postkontor}}
===詞源3===
透過{{bor|da|fr|poste|g=f}} 借自{{der|da|it|posta||中途停留點,郵局}},源自{{der|da|la|posita}},{{m|la|pono|pōnō|放置}} 的過去分詞。
====名詞====
{{da-noun|en|er}}
# [[項目]]{{gl|預算中的}}
=====變格=====
{{da-decl|en|er}}
=====派生詞彙=====
* {{l|da|postere}}
===詞源4===
透過{{bor|da|gml|post}}借自{{der|da|la|postis||柱子,門柱}}。
====名詞====
{{da-noun|en|er}}
# [[泵]],[[水龍頭]]{{gl|戶外水泵}}
# {{lb|da|罕用|用於複合詞}} [[柱子]]{{gl|支撐門或窗戶的}}
=====變格=====
{{da-decl|en|er}}
=====派生詞彙=====
* {{l|da|dørpost}}
* {{l|da|vandpost}}
* {{l|da|vinduespost}}
==荷蘭語==
===詞源1===
{{bor+|nl|frm|poste}},源自{{der|nl|it|posta}}。
====發音====
* {{IPA|nl|/pɔst/}}
* {{audio|nl|Nl-post.ogg}}
* {{hyphenation|nl|post}}
* {{rhymes|nl|ɔst|s=1}}
====名詞====
{{nl-noun|f,m|-en|+}}
# [[郵件]]
# [[郵局]]
=====派生詞彙=====
{{col6|nl
|exprespost
|kabouterpost
|luchtpost
|pakketpost
|postaal
|postadres
|postauto
|postbeambte
|postbedrijf
|postblad
|postbode
|postboot
|postbrief
|postbus
|postcode
|postdienst
|postduif
|posterij
|posthoorn
|postkantoor
|postkoets
|postorder
|postpakket
|postpapier
|poststuk
|posttarief
|posttrein
|postverkeer
|postvlucht
|postwaardestuk
|postweg
|postwezen
|postwissel
|postzak
|postzegel
|streekpost
|veldpost
|zeepost
}}
=====派生語彙=====
* {{desc|af|pos}}
* {{desc|jvn|pos|bor=1}}
* {{desc|id|pos|bor=1}}
** {{desc|pey|pos|bor=1}}
* {{desc|pap|pòst|bor=1}}
===詞源2===
{{bor+|nl|fr|poste}},源自{{der|nl|it|posto}}。
====發音====
* {{IPA|nl|/pɔst/}}
* {{audio|nl|Nl-post.ogg}}
* {{hyphenation|nl|post}}
* {{rhymes|nl|ɔst|s=1}}
====名詞====
{{nl-noun|f,m|-en|+}}
# [[崗位]],[[駐地]],[[位置]]
# [[職位]],崗位,辦公室
#: ''Toekomstig Amerikaans president Barack Obama maakt zijn keuzes bekend voor de '''posten''' binnen zijn kabinet op het gebied van veiligheid en buitenlands beleid.'' — 當選總統巴拉克·奧巴馬公布了他在內閣中安全和外交政策領域的'''職位'''人選。 <small> (nl.wikipedia, 12/3/2008) </small>
=====派生詞彙=====
{{col|nl
|grenspost
|handelspost
|legerpost
}}
=====派生語彙=====
* {{desc|af|pos}}
* {{desc|id|pos|bor=1}}
* {{desc|srm|pósu|bor=1}}
* {{desc|srn|postu|bor=1}}
** {{desc|jvn|postu|bor=1}}
===詞源3===
{{bor+|nl|en|post}}。
====發音====
* {{IPA|nl|/poːst/}}
* {{hyphenation|nl|post}}
* {{rhymes|nl|oːst|s=1}}
====名詞====
{{nl-noun|m|-s|+}}
# [[貼文]],[[帖子]]{{gl|在電子或網際網路論壇、部落格等處發布的訊息}}
=====派生詞彙=====
{{col|nl
|blogpost
}}
=====相關詞彙=====
{{col|nl
|posten
|poster
}}
===詞源4===
====發音====
* {{IPA|nl|/pɔst/}}
* {{audio|nl|Nl-post.ogg}}
* {{hyphenation|nl|post}}
* {{rhymes|nl|ɔst|s=1}}
====名詞====
{{nl-noun|f|-en|+}}
# {{alt form of|nl|pos}}
===詞源5===
{{nonlemma}}
====發音====
* {{IPA|nl|/pɔst/}}
* {{audio|nl|Nl-post.ogg}}
* {{hyphenation|nl|post}}
* {{rhymes|nl|ɔst|s=1}}
====動詞====
{{head|nl|動詞變位形式}}
# {{infl of|nl|posten||bare-ten-verb}}
===異序詞===
* {{anagrams|nl|spot|stop}}
==愛沙尼亞語==
===發音===
* {{et-IPA|pos't}}
* {{rhymes|et|osʲt|s=1}}
* {{hyph|et|post}}
===詞源1===
借自{{bor|et|nds|post}}或{{bor|et|de|post}}。
====名詞====
{{et-noun|posti|posti}}
# [[郵件]]{{gl|包裹和信件}}
#: {{ux|et|Tänast '''posti''' pole ma veel näinud.|我還沒看見今天的'''郵件'''。}}
# [[郵政]]{{gl|郵政遞送系統}}
#: {{ux|et|Seda ajakirja ei saa '''posti''' kaudu tellida.|這本雜誌無法透過'''郵政'''訂閱。}}
=====變格=====
{{et-decl-riik|post|||i}}
=====派生詞彙=====
{{col|et|title=名詞|postitama}}
{{col|et|title=副詞|postitsi}}
=====複合詞=====
{{col|et
|aamoripost
|aamorpost
|ametipost
|aviopost
|e-post
|elektronpost
|hommikupost
|kiirpost
|kulleripost
|kullerpost
|käsipost
|kõnepost
|lennupost
|pudelipost
|pudelpost
|rämpspost
|tavapost
|tigupost
|torupost
|tuvipost
|tähtpost
|välipost
|välispost
|välkpost
|õhupost}}
{{col|et
|posthobune
|postiaadress
|postiagentuur
|postiamet
|postiametnik
|postiasutus
|postiauto
|postihobune
|postiindeks
|postijaam
|postikandja
|postikapp
|postikontroll
|postikorraldus
|postikott
|postikulu
|postikviitung
|postilaev
|postilennuk
|postiloend
|postimaantee
|postimaja
|postimaks
|postimees
|postimüük
|postioperatsioon
|postipaat
|postipakk
|postipapa
|postipaun
|postipoiss
|postipunkt
|postipäev
|postirahakaart
|postirobot
|postirong
|postisaadetis
|postisaladus
|postisarv
|postiside
|postitalu
|postitariif
|postitasku
|postitee
|postiteenistus
|postiteenus
|postitempel
|postituvi
|postitõld
|postitöötaja
|postivagun
|postivedaja
|postivedu
|postiväärtus
|postiühendus
|postiülekanne
|postiülem
|postkaart
|postkast
|postkontor
|postmaantee
|postmark
|postmeister
|postpaber
|postside
|postvanker}}
=====參見=====
{{col|et|postiljon}}
===詞源2===
借自{{bor|et|nds|post}} 或{{bor|et|de|Pfosten}}。
====名詞====
{{et-noun|posti|posti}}
# [[柱子]],[[桿]]
#: {{ux|et|Auto sõitis vastu '''posti'''.|一輛汽車撞上了'''柱子'''。}}
# [[門柱]]
#: {{syn|et|väravapost}}
=====變格=====
{{et-decl-riik|post|||i}}
=====複合詞=====
{{col|et
|aiapost
|ametipost
|betoonpost
|elektripost
|häbipost
|implantaadipost
|kandepost
|kannapost
|kiigepost
|kilomeetripost
|kinnituspost
|kirikupost
|kivipost
|laternapost
|malmpost
|metallpost
|nurgapost
|paalpost
|paarispost
|piiripost
|puitpost
|raudpost
|sillapost
|tarapost
|telefonipost
|telegraafipost
|tellingupost
|tenderpost
|torupost
|tugipost
|täispost
|tööpost
|uksepost
|vaatluspost
|vabepost
|vahepost
|vahipost
|valvepost
|verstapost
|väravapost}}
{{col|et
|postiakrobaatika
|postiauk
|postipolitseinik
|postipõrge
|postitants
|postivahe
|postjalg
|postvalgusti
|postvundament}}
===詞源3===
{{bor+|et|de|Posten}}。
====名詞====
{{et-noun|posti|posti}}
# [[崗位]],[[哨所]]
#: {{syn|et|valvepost|vahipost}}
## 在崗位上的[[守衛]];[[哨兵]]
# [[職位]],[[工作]]{{gl|組織中的指定職位}}
#: {{syn|et|koht|ametikoht|ametipost}}
=====變格=====
{{et-decl-riik|post|||i}}
=====複合詞=====
{{col|et
|ametipost
|eelpost
|kontrollpost
|piirivalvepost
|politseipost
|rahvakontrollipost
|salapost
|sanitaarpost
|sõjaväepost
|tööpost
|vaatluspost
|vahipost
|valvepost
|vetelpäästepost}}
{{col|et
|postimiilits}}
===參考資料===
* {{R:Sõnaveeb}}
* {{R:et:EKSS}}
* {{R:et:SP}}
{{C|et|郵政|建設|軍事}}
==世界語==
===詞源===
{{ety|eo|:bor|la:post|text=+|tree=1}}
===發音===
{{eo-pr|a=Eo-post.ogg;LL-Q143 (epo)-Lepticed7-post.wav;LL-Q143 (epo)-Robin van der Vliet-post.wav}}
===介詞===
{{head|eo|介詞}}
# 在……[[之後]]
# 在……[[後面]]
===延伸閱讀===
* {{R:eo:PIV 2020}}
* {{R:eo:ReVo}}
{{eo BRO|1}}
==法語==
===詞源===
{{ety|fr|:bor|en:post<id:郵件>}}
{{bor+|fr|en|post}}。
===發音===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-WikiLucas00-post.wav|a=里昂}}
===名詞===
{{fr-noun|m}}
# {{lb|fr|網際網路}} [[貼文]],[[帖子]]{{gl|部落格等處的訊息}}
===異序詞===
* {{anagrams|fr|a=opst|pots|spot|stop|tops}}
==德語==
===發音===
* {{IPA|de|/pɔʊ̯st/|/poːst/|/pɔst/}}
* {{audio|de|De-post.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|posen||2//3|s|pres|;|2|p|pres|;|p|imp}}
# {{verb form of|de|posten||s|imp}}
==因特語==
===詞源===
{{der+|ia|en|post}},也源自{{der|ia|it|post}}和{{der|ia|es|post}}。
===發音===
* {{IPA|ia|/post/}}
===名詞===
{{ia-noun}}
# {{lb|ia|網際網路}} [[貼文]],[[帖子]]
====相關詞彙====
* {{l|ia|postar}}
==愛爾蘭語==
===其他形式===
* {{alt|ga|posta||Cois Fharraige}}
===詞源===
{{bor+|ga|en|post}}。
===發音===
* {{IPA|ga|[pˠɔsˠt̪ˠ]}}
===名詞===
{{ga-noun|m|poist|poist}}
# 木[[柱]],[[樁]]
# {{lb|ga|歷史}} [[信使]];[[郵件]];[[郵差]]
# {{lb|ga|軍事}} [[崗位]],[[哨所]]
# [[職位]],[[工作]]
====變格====
{{ga-decl-m1|p|ost|oist}}
====派生詞彙====
{{col5|ga|title=木柱
|post deiridh<!--stern-post-->
|post leapa<!--bedpost-->
}}
{{col5|ga|title=郵件
|aerphost
|bád poist<!--mail-boat-->
|cárta poist
|cúrsa poist<!--correspondence course-->
|fear poist<!--mail carrier, postman-->
|máistir poist<!--postmaster-->
|máistreás phoist<!--postmistress-->
|oifig an phoist<!--post office-->
|ordú poist<!--postal order-->
|seirbhís phoist<!--postal service-->
|stampa poist<!--postage stamp-->
|teach poist<!--post-house-->
|ríomhphost
}}
{{col5|ga|title=哨所
|post ceannais<!--command post-->
|post comhraic<!--combat post-->
|post éisteachta<!--listening post-->
|post faire<!--lookout post-->
|post rialaithe<!--control post-->
}}
{{col5|ga|title=職位
|i bpost<!--in the office-->
|post muiníne<!--position of trust-->
|post mór<!--big job-->
}}
===詞首音變===
{{ga-mut}}
===延伸閱讀===
* {{R:ga:Ó Dónaill}}
* {{R:ga:EID}}
* {{R:ga:NEID}}
==意大利語==
===詞源===
{{ubor|it|en|post}}。
===發音===
{{it-pr|pòst,póst,!póust<r:DiPI>}}
===名詞===
{{it-noun|m|#}}
# {{lb|it|網際網路}} [[貼文]],[[帖子]]{{gl|論壇上的訊息}}
===參考資料===
<references/>
===異序詞===
* {{anagrams|it|a=opst|spot|stop}}
==拉丁語==
===其他形式===
* {{alt|la|poste||Old Latin}}
===詞源===
{{etymon|la|id=之後|:inh|itc-ola:poste<id:之後>|tree=1}}
{{inh+|la|itc-ola|poste}},{{inh+|la|itc-pro|*posti}},源自{{der|la|ine-pro|*pósti}},源自 {{m|ine-pro|*pós}}。與 {{m|la|pone|pōne}} 有關。
===發音===
* {{la-IPA}}
===介詞===
{{la-prep|post|accusative}}
# 在……[[後面]]{{gl|指空間}}
#: {{ant|la|ante|prae}}
# 在……[[之後]],[[自從]];(引申) [[除……之外]]{{gl|指時間}}
===副詞===
{{la-adv|post|-}}
# {{qualifier|指[[空間]]}}
## 在後面
## [[向後]]
# {{qualifier|指[[時間]]}} [[後來]];[[之後]]
====派生詞彙====
{{col|la
|post-
|poster
|posterus
|postīcus
}}
====派生語彙====
{{topN}}
* {{desc|sq|poshtë|bor=1|unc=1}}
* {{desc|rup|apoi}}
* {{desc|roa-ole|pos|pus|post|pues}}
** {{desc|ast|pos|pes}}
** {{desc|mwl|pus|puis}}
** {{desc|roa-leo|pos|pois|pus}}
* {{desc|ca|puix}}
* {{desc|en|post-|bor=1}}
* {{desc|frp|pués|pi|pu|pè}}
* {{desc|fr|puis|post-}}
* {{desc|gl|pois|despois|pus}}
* {{desc|ist|puoi}}
* {{desc|it|poi|dopo|pos-|post-}}
* {{desc|pt|pois|depois|após|pos-|pós-}}
* {{desc|ro|păi|apoi}}
* {{desc|es|pues|después|pos-|post-}}
* {{desc|vec|po|può}}
{{bottomN}}
===參考資料===
* {{R:la:L&S}}
* {{R:la:Elementary Lewis}}
* {{R:la:du Cange}}
* {{R:la:Gaffiot}}<!--
* {{R:M&A}}_-->
* {{R:ine:IEW|page=841}}
==拉脫維亞語==
===詞源===
{{rfe|lv}}
===發音===
* {{lv-IPA|puôst|broken}}
===動詞===
{{lv-verb|tr|1st|poš|pos||pos}}
# [[整理]],[[打掃]],[[裝飾]]
# [[打扮]]
====變位====
{{lv-conj|po|poš|1st|pos||pos|ī|spal-s}}
==默切諾語==
===詞源===
{{root|mhn|ine-pro|*tḱey-}}
{{bor+|mhn|it|posta}}。
===名詞===
{{mhn-noun|f}}
# [[郵政]]{{gl|遞送郵件的方法}}
# [[郵局]]
====派生詞彙====
* {{l|mhn|postkòrt}}
===參考資料===
* {{R:CLM}}
{{c|mhn|通信|建築}}
==北庫爾德語==
===發音===
* {{kmr-IPA}}
===名詞===
{{kmr-noun|m}}
# [[皮膚]]
==書面挪威語==
{{wp|nb:}}
===詞源===
{{der+|nb|it|posta}} {{qualifier|在給定語義中}}。
===名詞===
{{nb-noun-m1}}
# [[郵件]]{{gl|透過郵政服務寄送的信件等}}
====派生詞彙====
{{col5|nb
|e-post
|handelspost
|kontrollpost
|postboks
|postbud
|postkasse
|postkontor
|postkort
|utpost
}}
===參考資料===
* {{R:nb:OB}}
==新挪威語==
{{wp|nn:}}
===詞源===
{{der+|nn|it|posta}} {{qualifier|在給定語義中}}。
===名詞===
{{nn-noun-m1}}
# [[郵件]]{{gl|透過郵政服務寄送的信件等}}
====派生詞彙====
{{col4|nn
|e-post
|handelspost
|kontrollpost
|postboks
|postkontor
|postkort
|utpost
}}
===參考資料===
* {{R:nn:OB}}
==古英語==
===詞源===
{{etymon|ang|:bor|la:postis}}
{{bor+|ang|la|postis||柱子,基座}}。
===發音===
* {{ang-IPA|post}}
===名詞===
{{ang-noun|m}}
# [[柱子]]
# [[基座]]
====變格====
{{ang-decl-noun-a-m|post}}
====派生語彙====
* {{desc|enm|post|poste}}
** {{desc|en|post}}
*** {{desc|de|post|bor=1}}
** {{desc|sco|post|poist}}
==波蘭語==
{{wp|pl:}}
===發音===
{{pl-pr|a=Pl-post.ogg}}
===詞源1===
{{ety|pl|id=禁食|:inh|sla-pro:*postъ|text=+|tree=1}}
====名詞====
{{pl-noun|m-in}}
# [[禁食]]{{gl|禁絕食物的行為或習慣}}
# [[齋戒]]期{{gl|禁絕食物的時期}}
=====變格=====
{{pl-decl-noun-m-in}}
=====派生詞彙=====
{{col|pl|title=形容詞|postny}}
{{col|pl|title=名詞|Wielki Post}}
{{col|pl|title=動詞|pościć}}
===詞源2===
{{ety|pl|id=訊息|:bor|en:post<id:柱子>|text=+|tree=1}}
====名詞====
{{pl-noun|m-anml}}
# [[貼文]],[[帖子]]{{gl|訊息}}
=====變格=====
{{pl-decl-noun-m-anml}}
===延伸閱讀===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
{{C|pl|通信}}
==葡萄牙語==
===詞源===
{{ety|pt|:ubor|en:post<id:郵件>|text=+|tree=1}} {{doublet|pt|poste}}。
===發音===
{{pt-IPA|pôusti*}}
===名詞===
{{pt-noun|m|#s}}
# {{lb|pt|網際網路|俚語}} [[貼文]],[[帖子]]{{gl|線上討論中的單條訊息}}
#: {{syn|pt|publicação|postagem}}
====相關詞彙====
* {{l|pt|postar}}
===延伸閱讀===
* {{R:pt:Aulete}}
* {{R:pt:Priberam}}
==羅馬尼亞語==
===詞源1===
{{der+|ro|sla-pro|*postъ}}。
====名詞====
{{ro-noun|n|posturi}}
# [[齋戒]]{{gl|禁食或進食極少的時期}},[[禁食]]
=====變格=====
{{ro-noun-n-uri}}
=====相關詞彙=====
* {{l|ro|posti}}
====參見====
* {{l|ro|păresimi}}
* {{l|ro|Postul Mare}}
===詞源2===
{{bor+|ro|fr|poste}}。
====名詞====
{{ro-noun|n|posturi}}
# [[職位]],[[崗位]],[[工作]]
# {{lb|ro|網際網路}} [[貼文]],[[帖子]]
=====變格=====
{{ro-noun-n-uri}}
==蘇格蘭蓋爾語==
===詞源===
{{bor+|gd|en|post}}。
===發音===
* {{IPA|gd|/pʰɔs̪t̪/}}
===名詞===
{{gd-noun|g=m|gen=puist|pl=puist}}
# [[郵件]]
# [[柱子]],[[樁]]
# {{lb|gd|網際網路}} [[貼文]],[[帖子]] {{gloss|線上}}
# [[郵差]],[[信使]]
#: {{syn|gd|posta}}
====參見====
* {{l|gd|postaich}}
====派生詞彙====
* {{l|gd|cairt-phuist}}
* {{l|gd|post-bàire}}
* {{l|gd|post-dealain}}
===動詞===
{{gd-verb|past=phost|fut=postaidh|vn=postadh|pp=poste}}
# [[郵寄]]
====變位====
{{gd-conj|postadh}}
===詞首音變===
{{gd-mut-cons|p|ost}}
{{C|gd|郵政|職業}}
==塞爾維亞-克羅地亞語==
{{wp|sh:}}
===詞源1===
{{inh+|sh|sla-pro|*postъ}}。
====發音====
* {{sh-IPA|pȏst}}
====名詞====
{{sh-noun|pȏst|m-in}}
# [[禁食]],[[齋戒]]
=====變格=====
{{sh-decl-noun
|pȏst|pòstovi
|pȍsta|postóvā
|pȍstu|postòvima
|pȏst|pòstove
|pȍste|pȍstovi
|pòstu|postòvima
|pȍstom|postòvima
}}
=====派生詞彙=====
{{col|sh|title=名詞|pȍsnīk}}
====延伸閱讀====
* {{R:sh:HJP|eVpvWxk%3D}}
===詞源2===
====發音====
* {{sh-IPA|pȍst}}
====名詞====
{{sh-noun|pȍst|m-in,m-an}}
# {{lb|sh|無情|無生}} [[桿]],[[柱子]]
# {{lb|sh|籃球|有情|有生}} [[中鋒]]
# {{lb|sh|網際網路|無情|無生}} [[貼文]],[[帖子]] {{qualifier|論壇上的等}}
====延伸閱讀====
* {{R:sh:HJP|eVpvWhA%3D}}
{{C|sh|進食}}
==斯洛文尼亞語==
{{wp|sl:}}
===發音===
* {{sl-IPA|pȍst}}
===名詞===
{{sl-noun|pȍst|m-in}}
# [[禁食]],[[齋戒]]{{gl|禁食或進食極少的行為或習慣}}
====變格====
{{sl-decl-noun-m|pòst|pôst|n=sg}}
{{rfinfl|sl|名詞}}<!-- locative singular also póstu -->
===延伸閱讀===
{{R:sl:FR}}
{{C|sl|進食}}
==西班牙語==
===詞源===
{{ety|es|:bor|en:post<id:郵件>|text=+|tree=1}} {{doublet|es|puesto|poste}}。
===發音===
{{es-pr|+|poust<q:較不常見>}}
===名詞===
{{es-noun|m|+,posts}}
# {{lb|es|網際網路}} [[貼文]],[[帖子]]
#: {{syn|es|posteo|publicación}}
====派生詞彙====
{{col|es|postear}}
===延伸閱讀===
* {{R:es:DEA}}
==瑞典語==
===詞源===
{{bor+|sv|en|post}}。
===發音===
* {{IPA|sv|/pɔst/}}
* {{audio|sv|Sv-post.ogg}}
* {{rhyme|sv|ɔst|s=1}}
===名詞===
{{sv-noun|c}}
# [[郵局]];遞送郵件和包裹的組織
# {{lb|sv|不可數}} [[郵件]];透過郵局寄送的物品總稱
# 列表或議程上的[[項目]]
# [[崗位]];指定的駐地
# (被分配或選舉的)[[職位]]
#: {{ux|sv|'''Posten''' som ordförande i idrottsföreningen är vakant.|體育協會主席的'''職位'''出缺。}}
====變格====
{{sv-infl-noun-c-er}}
====相關詞彙====
{{col4|sv
|posta
|Posten
|postkontor
|postlåda
}}
===異序詞===
* {{anagrams|sv|a=opst|stop}}
{{C|sv|郵政}}
==土耳其語==
[[Image:Chekiang lamb fur skin.jpg|thumb|right|kuzu '''postu''']]
===詞源===
{{der+|tr|ota|پوست}},借自{{der|tr|fa-cls|پوسْت|t=皮膚,毛皮}}。<ref>{{R:tr:Nişanyan|post1}}</ref>
===發音===
* {{IPA|tr|[post]}}
===名詞===
{{tr-noun|u|lar}}
# [[毛皮]],[[獸皮]]
#: {{syn|tr|kürk|pösteki}}
# {{lb|tr|伊斯蘭教|蘇非主義|比喻|引申自用作坐墊的獸皮}} [[塔里卡]]中教長的職位
# {{lb|tr|比喻}} [[職位]],[[職務]],[[席位]]
# {{lb|tr|比喻}} [[生命]];[[性命]];[[屁股]]
====變格====
{{tr-infl-noun-c|u|poss=1}}
====派生詞彙====
{{col4|tr
|keçi postu
|post elden gitmek
|post kavgası
|postnişin
|postu deldirmek
|postu kurtarmak
|postuna oturmak
|postuna saman doldurmak
|postundan olmak
|postu sermek
|post vermek
}}
===參考資料===
<references/>
===延伸閱讀===
* {{R:tr:TDK}}
* {{R:tr:RTÜK:TS}}
==威爾士語==
===發音===
* {{IPA|cy|/poːsd/|[pʰoːst]|a=cy-N}}
* {{IPA|cy|/pɔsd/|[pʰɔst]|a=cy-S}}
===詞源1===
{{bor+|cy|en|post}}。
====名詞====
{{cy-noun|m|-}}
# {{lb|cy|常|帶定冠詞}} [[郵件]]
#: {{syn|cy|llythyrgludiad|cludiad}}
=====派生詞彙=====
{{col|cy
|e-bost<t:電子郵件>
|postfeistr<t:郵政局長>
|postio<t:郵寄>
|swyddfa bost<t:郵局>
}}
===詞源2===
{{der+|cy|la|postis}}。
====名詞====
{{cy-noun|m|pyst}}
# [[柱子]]
#: {{syn|cy|colofn}}
=====其他形式=====
* {{l|cy|postyn}}
=====派生詞彙=====
* {{l|cy|cynhalbost||支撐,支柱}}
* {{l|cy|mynegbost||路標}}
===詞首音變===
{{cy-mut}}
===延伸閱讀===
* {{R:cy:GyrA|2=post}}
* {{R:cy:Gweiadur}}
* {{R:cy:GPC}}
f9nzm1u45e9b7x2ew7jjjgrqjbstyur
postaĵo
0
16473
9814633
6013231
2026-06-16T07:45:58Z
TongcyDai
53191
9814633
wikitext
text/x-wiki
{{also|poŝtaĵo}}
==世界語==
===詞源===
{{ety|eo|:af|post<t:後面>|-aĵo<t:事物>|text=+|tree=1}}
===發音===
{{eo-pr|a=LL-Q143 (epo)-Lepticed7-postaĵo.wav}}
===名詞===
{{eo-head}}
# [[背部]],[[背側]]
# [[臀部]],[[屁股]]
====派生詞彙====
* {{l|eo|postaĵotruo|t=肛門}}
{{C|eo|臀部}}
prkcwccpti1bz1ltchaska121s1kojt
Europa
0
16902
9814222
9760594
2026-06-16T03:14:24Z
InternetArchiveBot
95668
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
9814222
wikitext
text/x-wiki
{{also|Europą|Európa|Euròpa|Eùropa|eŭropa|Eurōpa|Eŭropa}}
{{minitoc}}
==英語==
{{wp|en:}}
{{wp|en:52 +}}
===詞源===
源自{{der|en|grc|Εὐρώπη}},希臘神話中的角色名字。
{{doublet|en|Europe}}。
===發音===
* {{IPA|en|/jʊˈɹoʊpə/}}
* {{audio|en|En-Europa.ogg}}
===專有名詞===
[[File:Europa-moon.jpg|thumb|木星的衛星[[木衛二|歐羅巴]]]]
{{en-proper noun}}
# {{tcl|en|歐羅巴|id=Q165170}}
# {{tcl|en|歐羅巴|id=Q3143}}
# {{tcl|en|歐羅巴|id=Q155100}}
====派生詞彙====
{{col2|en|Europan|Europa Point}}
====相關詞彙====
{{col|en|Europa regina
|Europe
|European}}
===參見===
{{table:Solar System/en}}
==南非語==
===詞源===
{{inh+|af|nl|Europa}}。
===發音===
* {{audio|af|LL-Q14196 (afr)-Oesjaar-Europa.wav}}
===專有名詞===
源自 {{af-proper noun}}
# {{tcl|af|歐洲|id=Q46}}
===參見===
{{list:continents/af}}
==阿斯圖里亞斯語==
===其他形式===
* {{alt|ast|Uropa||棄用}}
===專有名詞===
{{ast-proper noun|f}}
# {{tcl|ast|歐洲|id=Q46}}
====相關詞彙====
* {{l|ast|européu}}
==加泰羅尼亞語==
===發音===
* {{ca-IPA|ó}}
* {{IPA|ca|[əwˈɾɔ.pə]|a=亦用於巴利阿里,可能亦用於中部但已過時或屬方言}}<!-- GDLC 標示為 /o/,DCVB 標示為 /ɔ/,但在中部可能已過時或屬方言 -->
* {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-Europa.wav|a=Catalonia}}
===專有名詞===
{{ca-prop|f}}
# {{tcl|ca|歐洲|id=Q46}}
====相關詞彙====
{{col|ca|euro
|euro-
|Europa Central
|europeu}}
====參見====
{{list:continents/ca}}
==康沃爾語==
===詞源===
源自{{der|kw|la|Eurōpa}},源自{{der|kw|grc|Εὐρώπη}}。
===專有名詞===
{{head|kw|專有名詞|g=m}}
# {{tcl|kw|歐洲|id=Q46}}
====同類詞彙====
{{list:continents/kw}}
====派生詞彙====
{{col|kw
|Euro<t:歐元>
|European,Europeanes<t:歐洲人><pos:n>
|europek<t:歐洲的><pos:a>
|Eurosenedh<t:歐洲議會>
}}
==捷克語==
{{wp|cs:+ (měsíc)}}
===發音===
* {{cs-IPA}}
* {{rhymes|cs|opa|s=3}}
===專有名詞===
{{cs-proper noun|f}}
# {{senseid|cs|Q3143}}{{C|cs|太陽系行星}}{{lb|cs|無情體}} 木星的衛星[[木衛二]]
====變格====
{{cs-ndecl|f.sg}}
===參見===
{{table:Solar System/cs}}
===延伸閱讀===
* {{R:cs:KNLA}}
* {{R:cs:IJP}}
==丹麥語==
{{wp|da:}}
===詞源===
經由{{bor|da|la|Eurōpa}},源自{{der|da|grc|Εὐρώπη}}。
===發音===
* {{IPA|da|[eˈʁoːpʰa]|/œu̯ˈʀoːpæ/}}
===專有名詞===
{{da-proper noun}}
# {{tcl|da|歐洲|id=Q46}}
==荷蘭語==
{{picdic
|image=Blank_map_Europe_with_borders.png
|width=470
|height=390
|labels=
{{picdiclabel|nl|color=dark blue|fontsize=20|posx=40|posy=10|link=Europa}}
{{picdiclabel|nl|color=black|fontsize=14|posx=85|posy=215|link=Duitsland}}
{{picdiclabel|nl|color=black|fontsize=14|posx=25|posy=250|link=Frankrijk}}
{{picdiclabel|nl|color=black|fontsize=14|posx=-20|posy=310|link=Spanje}}
{{picdiclabel|nl|color=black|fontsize=13|posx=30|posy=185|link=Verenigd Koninkrijk}}
{{picdiclabel|nl|color=black|fontsize=14|posx=100|posy=300|link=Italië}}
{{picdiclabel|nl|color=black|fontsize=14|posx=280|posy=140|link=Rusland}}
{{picdiclabel|nl|color=black|fontsize=12|posx=180|posy=330|link=Griekenland}}
{{picdiclabel|nl|color=black|fontsize=14|posx=260|posy=310|link=Turkije}}
{{picdiclabel|nl|color=black|fontsize=14|posx=140|posy=200|link=Polen}}
{{picdiclabel|nl|color=black|fontsize=14|posx=110|posy=130|link=Zweden}}
{{picdiclabel|nl|color=black|fontsize=14|posx=70|posy=110|link=Noorwegen}}
{{picdiclabel|nl|color=black|fontsize=14|posx=155|posy=100|link=Finland}}
{{picdiclabel|nl|color=black|fontsize=10|posx=80|posy=260|link=Zwitserland}}
{{picdiclabel|nl|color=black|fontsize=10|posx=110|posy=250|link=Oostenrijk}}
{{picdiclabel|nl|color=black|fontsize=10|posx=115|posy=230|link=Tsjechië}}
{{picdiclabel|nl|color=black|fontsize=8|posx=145|posy=240|link=Slowakije}}
{{picdiclabel|nl|color=black|fontsize=8|posx=145|posy=260|link=Hongarije}}
{{picdiclabel|nl|color=black|fontsize=8|posx=110|posy=270|link=Slovenië}}
{{picdiclabel|nl|color=black|fontsize=8|posx=115|posy=280|link=Kroatië}}
{{picdiclabel|nl|color=black|fontsize=10|posx=140|posy=285|link=Bosnië en Herzegovina|altlink=B.}}
{{picdiclabel|nl|color=black|fontsize=10|posx=165|posy=280|link=Servië}}
{{picdiclabel|nl|color=black|fontsize=10|posx=200|posy=290|link=Bulgarije}}
{{picdiclabel|nl|color=black|fontsize=10|posx=160|posy=320|link=Albanië}}
{{picdiclabel|nl|color=black|fontsize=10|posx=120|posy=370|link=Malta}}
{{picdiclabel|nl|color=black|fontsize=10|posx=270|posy=350|link=Cyprus}}
{{picdiclabel|nl|color=black|fontsize=10|posx=350|posy=270|link=Armenië}}
{{picdiclabel|nl|color=black|fontsize=10|posx=190|posy=260|link=Roemenië}}
{{picdiclabel|nl|color=black|fontsize=14|posx=210|posy=215|link=Oekraïne}}
{{picdiclabel|nl|color=black|fontsize=10|posx=190|posy=185|link=Wit-Rusland}}
{{picdiclabel|nl|color=black|fontsize=10|posx=160|posy=170|link=Litouwen}}
{{picdiclabel|nl|color=black|fontsize=10|posx=160|posy=155|link=Letland}}
{{picdiclabel|nl|color=black|fontsize=10|posx=160|posy=135|link=Estland}}
{{picdiclabel|nl|color=black|fontsize=10|posx=-55|posy=325|link=Portugal}}
{{picdiclabel|nl|color=black|fontsize=10|posx=60|posy=205|link=Nederland}}
{{picdiclabel|nl|color=black|fontsize=10|posx=100|posy=170|link=Denemarken}}
{{picdiclabel|nl|color=black|fontsize=10|posx=35|posy=220|link=België}}
{{picdiclabel|nl|color=black|fontsize=10|posx=58|posy=230|link=Luxemburg|altlink=L.}}
{{picdiclabel|nl|color=black|fontsize=10|posx=-45|posy=190|link=Ierland}}
{{picdiclabel|nl|color=grey|fontsize=10|posx=10|posy=205|link=Engeland}}
{{picdiclabel|nl|color=grey|fontsize=10|posx=10|posy=155|link=Schotland}}
{{picdiclabel|nl|color=black|fontsize=10|posx=-40|posy=55|link=IJsland}}
{{picdiclabel|nl|color=black|fontsize=14|posx=315|posy=330|link=Syrië}}
{{picdiclabel|nl|color=blue|fontsize=14|posx=200|posy=375|link=Middellandse Zee}}
{{picdiclabel|nl|color=blue|fontsize=14|posx=260|posy=270|link=Zwarte Zee}}
{{picdiclabel|nl|color=blue|fontsize=10|posx=40|posy=170|link=Noordzee}}
{{picdiclabel|nl|color=blue|fontsize=14|posx=-10|posy=90|link=Atlantische Oceaan}}
|detail1=
B. = [[Bosnië en Herzegovina#Dutch|Bosnië en Herzegovina]]
L. = [[Luxemburg#Dutch|Luxemburg]]
}}
===詞源===
{{inh+|nl|dum|europa}},源自{{der|nl|la|Eurōpa}},源自{{der|nl|grc|Εὐρώπᾱ}},{{m|grc|Εὐρώπη}}的多利亞方言形式。
===發音===
* {{IPA|nl|/øːˈroːpaː/|[øˑˈroːpaˑ]|[ʏˑˈroːpaˑ]}}
* {{audio|nl|Nl-Europa.ogg}}
* {{hyphenation|nl|Eu|ro|pa}}
* {{rhymes|nl|oːpaː}}
===專有名詞===
{{nl-proper noun|n|adj=Europees|mdem=Europeaan|fdem=Europese}}
# {{tcl|nl|歐洲|id=Q46}}
====派生詞彙====
{{col|nl
|Centraal-Europa
|euro
|euro-
|Europeaan
|Europeeër
|Europees
|Noord-Europa
|Noordwest-Europa
|Oost-Europa
|West-Europa
|Zuid-Europa
|Zuidoost-Europa
}}
====派生語彙====
* {{desc|af|Europa}}
* {{desc|dcr|Juropa}}
* {{desc|ms|bor=1|Eropah}}
** {{desc|id|Eropa}}
===專有名詞===
{{nl-proper noun|f}}
# {{tcl|nl|歐羅巴|id=Q3143,Q165170}}
==法拉法拉語==
===詞源===
{{bor+|gur|la|Eurōpa}},源自{{der|gur|grc|Εὐρώπᾱ}},{{m|grc|Εὐρώπη}}的多利亞方言形式。於2021年引入。
===發音===
* {{IPA|gur|/e.u.ɾo.pa/}}
* {{hyphenation|gur|E|u|ro|pa}}
* {{rhymes|gur|ɾo.pa}}
===專有名詞===
{{head|gur|專有名詞}}
# {{tcl|gur|歐洲|id=Q46}}
====下位詞====
* {{l|gur|Albagɔ}}
* {{l|gur|Daŋɔ}}
* {{l|gur|Diiki-dapoore-dutsi}}
* {{l|gur|Dusgo}}
* {{l|gur|Dusgo-peelga}}
* {{l|gur|Dutsgo}}
* {{l|gur|Fãreŋo}}
* {{l|gur|Ɩŋɔ}}
* {{l|gur|Malta}}
* {{l|gur|Polgo}}
* {{l|gur|Portugal}}
* {{l|gur|Sɛkɔ}}
* {{l|gur|Sɛpaŋɔ}}
* {{l|gur|Suis-tẽŋa}}
* {{l|gur|Tɩntɩnnɔ}}
* {{l|gur|Tʋrkɔ}}
* {{l|gur|Ukraigo}}
==法蘭克-普羅旺斯語==
{{wp|frp:}}
===詞源===
源自{{der|frp|la|Eurōpa}},源自{{der|frp|grc|Εὐρώπα}},希臘神話中的角色。
===專有名詞===
{{frp-proper noun|f}} {{tlb|frp|orbl}}
# {{tcl|frp|歐洲|id=Q46}}
===參考資料===
* {{R:frp:DFP|Europe}}
* {{R:frp:LTA|16571}}
==加利西亞語==
{{wp|gl:+ (homónimos)}}
===詞源===
{{etymon|gl|:inh|roa-opt:Europa<id:歐洲>|id=歐洲|text=++}}
===發音===
{{gl-pr|Ėuròpa<audio:Gl-Europa.ogg>}}
* {{hyph|gl|Eu|ro|pa}}
===專有名詞===
{{gl-proper noun}}
# {{tcl|gl|歐洲|id=Q46}}
# {{tcl|gl|歐羅巴|id=Q165170,Q3143,Q155100}}
====同類詞彙====
{{list:continents/es}}
* {{sense|木星的衛星}} {{l|gl|Calisto}}、{{l|gl|Ganímedes}}、{{l|gl|Ío}}
====相關詞彙====
{{col|gl|europeo
|Unión Europea
|euro}}
==德語==
{{wp|de:}}
===詞源===
{{etymon|de|:inh|gmh:Eurōpā<id:歐洲>|id=歐洲|text=+}}
===發音===
* {{IPA|de|/ɔʏ̯ˈʁoːpa/}}
* {{audio|de|De-at-Europa.ogg|a=Austria}}
* {{audio|de|De-Europa.ogg|a=柏林}}
===專有名詞===
{{de-proper noun|n,-:s:Europens}}
# {{tcl|de|歐洲|id=Q46}}
#: {{ux|de|'''Europa''' ist der zweitkleinste Kontinent der Erde.|'''歐洲'''是世界上第二小的大洲。}}
#: {{ux|de|Deutschland liegt im Herzen '''Europas'''.|德國位於'''歐洲'''的心臟。}}
# {{short for|de|Europäische Union|t=[[歐盟]]}}
====變格====
{{de-ndecl|n:f[罕用],-:s:Europens[現罕用].sg}}
====同類詞彙====
{{list:continents/de}}
====相關詞彙====
{{col|de|Europäer
|europäisch
|europäisieren
|Europapolitik}}
====派生語彙====
* {{desc|ta|ஐரோப்பா|unc=1}}
===專有名詞===
{{head|de|專有名詞|g=f|屬格|Europas|or|Europa}}
# {{tcl|de|歐羅巴|id=Q165170,Q3143,Q155100}}
===延伸閱讀===
* {{R:de:DWDS}}
==伊多語==
===詞源===
{{bor+|io|en|Europe}}、{{bor|io|fr|Europe}}、{{bor|io|de|Europa}}、{{bor|io|it|Europa}}、{{bor|io|ru|Евро́па}}、{{bor|io|es|Europa}},最終源自{{der|io|la|Eurōpa}},源自{{der|io|grc|Εὐρώπη}}。
===發音===
* {{IPA|io|/ew.ˈro.pa/|/ɛw.ˈɾɔ.pa/}}
===專有名詞===
{{head|io|專有名詞}}
# {{tcl|io|歐洲|id=Q46}}
====派生詞彙====
* {{l|io|Europana||歐洲的}}
* {{l|io|Europano||歐洲人}}
====參見====
{{list:continents/io}}
==因特語==
{{wp|ia:}}
===專有名詞===
{{head|ia|專有名詞}}
# {{tcl|ia|歐洲|id=Q46}}
# {{tcl|ia|歐羅巴|id=Q165170,Q3143,Q155100}}
==意大利語==
{{wp|it:}}{{wp|it:+ (astronomia)}}{{wp|it:52 +}}{{wp|it:+ (natante)}}{{wp|it:+ (figlia di Agenore)}}{{wp|it:+ (Oceanina)}}
===詞源===
{{ety|it|:bor|la:Eurōpa}}
{{bor+|it|la|Eurōpa}}。
===發音===
{{it-pr|Euròpa}}
* {{audio|it|LL-Q652 (ita)-LangPao-Europa.wav}}
===專有名詞===
{{it-proper noun|f}}
# {{tcl|it|歐洲|id=Q46}}
#: {{hyper|it|Eurasia}}
# {{lb|it|航海|帆船航行|運動}} [[歐洲型帆船]]{{gl|奧運帆船級別}}
# {{tcl|it|歐羅巴|id=Q165170,Q3143,Q155100}}
====相關詞彙====
{{col|it
|eurasiatico
|euro
|euro-
|eurocentristico
|eurocentrismo
|eurocity
|eurocomunismo
|eurocomunista
|eurocomunistico
|eurocrate
|eurodeputato
|eurodivisa
|eurodollaro
|euromercato
|euromoneta
|Europa centrale
|Europa meridionale
|Europa occidentale
|Europa orientale
|europarlamento
|Europa settentrionale
|europeismo
|europeista
|europeizzare
|europeo
|europio
|europoide
|euroscudo
|eurosocialismo
|eurosocialista
|eurovisione
}}
===參見===
{{list:continents/it}}
{{table:Solar System/it}}
==拉丁語==
{{wp|la:+ (mythologia)}}
{{wp|la:[[+|+ (continens)]]}}
{{wp|la:+ (satelles)}}
{{wp|la:52 +}}
[[File:Rape of Europa MAN Napoli Inv111475.jpg|thumb|龐貝古城壁畫中坐在公牛(化身為牛的朱庇特)背上的'''歐羅巴''',西元1世紀。]]
[[File:Herodotus World Map.jpg|thumb|希羅多德繪製的世界地圖,將'''歐羅巴'''標示在靠近地圖頂部的位置。]]
===其他形式===
* {{alter|la|Eurōpē}}
===詞源===
{{etymon|la|:bor|grc-dor:Εὐρώπα|id=歐洲}}
{{bor+|la|grc-dor|Εὐρώπα}};與 {{cog|grc-att|Εὐρώπη}} 同源。
===發音===
* {{la-IPA|Eurōpa}}
===專有名詞===
{{la-proper noun|Eurōpa<1.loc>}}
# {{tcl|la|歐羅巴|id=Q165170}}
# {{tcl|la|歐洲|id=Q46}}
#* '''43年''', {{w|lang=en|Pomponius Mela|龐波尼烏斯·梅拉}}, ''De situ orbis'', 第1卷第3章:
#*: {{quote|la|Brevis '''Europae''' descriptio.—'''Europa''' terminos habet, ab oriente Tanain et Maeotida et Pontum; a meridie reliqua nostri maris; ab occidente Atlanticum; a septentrione Britannicum oceanum.|q=屬格和主格|t='''歐洲'''的簡短描述。——'''歐洲'''的邊界,東邊是塔奈斯河、梅奧蒂達湖和本都;南邊是我們其餘的海洋;西邊是大西洋的邊緣;北邊是不列顛洋。}}
#* '''約415年''', {{w|lang=en|Martianus Capella|馬提亞努斯·卡佩拉}}, ''De nuptiis Philologiae et Mercurii'', 第6卷第661節:
#*: {{quote|la|Quartus vero et magnus '''Europae''' sinus ab Hellesponto incipiens Maeotis ostio terminatur. Nam arctum mare inter '''Europam''' et Asiam in angustias septem stadiorum interfluens coarctatur; quas angustias Hellespontum dicunt, ubi Xerxes Persidis rex aggregatis navibus ponteque constructo exercitum duxit.|q=屬格和賓格|t='''歐洲'''的第四大灣從赫勒斯滂開始,在梅奧提斯河口結束。因為流經'''歐洲'''和亞洲之間的狹窄海洋被限制在七斯塔迪亞寬的狹長地帶;他們稱之為赫勒斯滂海峽,波斯國王薛西斯曾在那裡集結船隊,並建造橋樑率領他的軍隊。}}
# {{tcl|la|歐羅巴|id=Q3143,Q155100|lb=新拉丁語}}
====變格====
{{la-ndecl|Eurōpa<1>}}
====派生詞彙====
{{col|la
|Eurōpaeus<t:歐羅巴的,歐洲的><pos:a>
|Eurōpēnsis<t:歐洲的><pos:a>
}}
====派生語彙====
{{top2}}
* {{desc|ca|Europa}}
* {{desc|it|Europa}}
** {{desc|scn|Europa|bor=1}}
** {{desc|tr|Avrupa|bor=1}}
* {{desc|fro}}
** {{desc|frm}}
*** {{desc|fr|Europe}}
* {{desc|osp}}
** {{desc|es|Europa}}
* {{desc|scn|Aurupa}}
{{bottom}}
借詞:
{{top2}}
* {{desc|bg|Европа}}
* {{desc|cmn|歐羅巴}}
* {{desc|dum|europa}}
** {{desc|nl|Europa}} {{see desc}}
* {{desctree|enm|Europe}}
* {{desctree|gmh|Eurōpā}}
* {{desctree|roa-opt|Europa}}
* {{desc|ro|Europa}}
* {{desc|ru|Европа}}
{{bottom}}
===參考資料===
* {{R:la:L&S}}
* {{R:la:PersEnc}}
* {{R:la:Peck}}
* {{R:Smith's Persons}}
* {{R:Smith's Geography}}
==立陶宛語==
{{wp|lt:}}
[[Image:LocationEurope.png|thumb|Europa]]
===發音1===
{{lt-pr|Euro^pà}}
====專有名詞====
{{lt-proper noun|f|2|head=Europà}}
# {{tcl|lt|歐洲|id=Q46}}
=====變格=====
{{lt-noun-f-a-2|n=s|Europ|Euròp}}
=====相關詞彙=====
{{col|lt|europiẽtis<g:m>|europiẽtė<g:f>}}
===發音2===
{{lt-pr|Euròpa}}
====專有名詞====
{{head|lt|專有名詞變格形|head=Euròpa}}
# {{infl of|lt|Europà||voc}}
==中古高地德語==
===詞源===
{{etymon|gmh|:lbor|la:Eurōpa<id:歐洲>|id=歐洲|text=++}}
===發音===
{{gmh-IPA|Eurôpâ}}
===專有名詞===
{{head|gmh|專有名詞|g=f|head=Eurōpā}}
# {{tcl|gmh|歐洲|id=Q46}}
====派生語彙====
* {{desctree|de|Europa}}
===參考資料===
* {{R:gmh:BMZ|id=E00431}}
* {{R:gmh:Kobler|eurōpā}}
==書面挪威語==
{{wp|no:}}
===詞源===
{{bor+|nb|la|Europa}},源自{{der|nb|grc|Εὐρώπη}}。
===發音===
* {{IPA|nb|/æuˈruːpa/|[æʉˈɾuːpa]}}
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|歐洲|id=Q46}}
#: {{ux|nb|Hun kan alle hovedstedene i '''Europa'''.|她能說出'''歐洲'''所有的首都。}}
====派生詞彙====
{{col|nb
|europakart
|europamester
|Europakommisjonen
|Europaparlamentet
|Europarådet
|europavei
|Nord-Europa
|Sentral-Europa
|Sør-Europa
|Vest-Europa
|Øst-Europa
}}
====相關詞彙====
{{col|nb|europeisk|europeer}}
===參見===
{{list:continents/nb}}
===參考資料===
* {{R:Ordnett}}
* {{R:Etymonline|entry=Europe}}
==新挪威語==
{{wp|nn:}}
===詞源===
{{bor+|nn|la|Europa}},源自{{der|nn|grc|Εὐρώπη}}。
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|歐洲|id=Q46}}
#: {{ux|nn|Ho kan alle hovudstadene i '''Europa'''.|她能說出'''歐洲'''所有的首都。}}
====派生詞彙====
{{col|nn
|Aust-Europa
|europakart
|europameister
|Europakommisjonen
|Europaparlamentet
|Europarådet
|Nord-Europa
|Sentral-Europa
|Sør-Europa
|Vest-Europa
}}
====相關詞彙====
{{col|nn|europeisk|europear}}
==古葡萄牙語==
===其他形式===
* {{alt|roa-opt|Eyropa}}
===詞源===
{{etymon|roa-opt|:lbor|la:Eurōpa<id:歐洲>|id=歐洲|text=++}}
===專有名詞===
{{head|roa-opt|專有名詞|g=f}}
# {{tcl|roa-opt|歐洲|id=Q46}}
#* {{RQ:roa-opt:Cronica Troiana|page=19|chapter=A Reſpoſta q̃ Eỹtor dou a Reỹ Priamos ſſeu padre|text=Et ſen falla os de '''europa''' ſon amelloꝛ cauallaría do mũdo nẽ q̃ maỹs ſaben de gerra.}}
====派生語彙====
* {{desc|fax|Europa}}
* {{desc|gl|Europa}}
* {{desctree|pt|Europa}}
===參考資料===
* {{R:roa-opt:DDGM}}
* {{R:roa-opt:CX}}
==波蘭語==
{{Wiktionary:圖片詞典/pl:map/Europe}}
{{wp|pl:}}
===詞源===
{{etymon|pl|id=歐洲|:lbor|la:Eurōpa<id:歐洲>|tree=1}}
{{lbor|pl|la|Eurōpa}},源自{{der|pl|grc|Εὐρώπη}}。
===發音===
{{pl-pr|a=Pl-Europa.ogg}}
===專有名詞===
{{pl-prop|f|adj=europejski}}
# {{tcl|pl|歐洲|id=Q46}}
#: {{coi|pl|'''Europa''' Północna|北'''歐'''}}
# {{tcl|pl|歐羅巴|id=Q165170,Q3143,Q155100}}
====變格====
{{pl-decl-noun-f|tantum=s}}
====派生詞彙====
{{col|pl|euro|Europejczyk|Europejka}}
===參見===
{{list:continents/pl}}
{{table:Solar System/pl}}
===延伸閱讀===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
==葡萄牙語==
===詞源===
{{etymon|pt|:inh|roa-opt:Europa<id:歐洲>|id=歐洲|text=++}}
===發音===
{{pt-IPA|[o:ó]}}
* {{hyph|pt|Eu|ro|pa}}
===專有名詞===
{{pt-proper noun|f|+}}
# {{senseid|pt|continent}} {{tcl|pt|歐洲|id=Q46}}
#* {{quote-book|pt|year=2005|author=Wagner Blini, vários autores|title=Salvando Vida - Com Medicina Natural|pageurl=http://books.google.com.br/books?id=IRTbfcR6BEIC&pg=PA215#v=onepage&q&f=false|isbn=9788599513019|page=215|publisher=Editora DCL|passage=O abacate é uma fruta de sabor suave e gosto agradável, nem doce e nem amargo. O sabor neutro, aliado à polpa carnuda e macia, faz dele um dos ingredientes mais versáteis da culinária popular. Na '''Europa''' e na América Central, o abacate é um importante ingrediente para saladas.|t=酪梨是一種味道溫和、口感宜人的水果,既不甜也不苦。其中性的味道,加上多肉柔軟的果肉,使其成為大眾烹飪中最通用的材料之一。在'''歐洲'''和中美洲,酪梨是沙拉的重要材料。}}
#* {{quote-book|pt|year=2005|author=Fausto Arnaud Sampaio|title=Matemágica: História, Aplicações e Jogos Matemáticos|pageurl=http://books.google.com.br/books?id=D5Z401WTHW0C&pg=PA31#v=onepage&q&f=false|isbn=9788530807641|page=31|publisher=Papirus Editora|passage=O ábaco foi usado por diversos povos e, até por volta de 1700, foram muito comuns na '''Europa''', quando o cálculo escrito em papel passou a prevalecer.|t=許多民族都使用過算盤;直到1700年左右,當紙上計算開始盛行時,算盤在'''歐洲'''仍然非常普遍。}}
#* {{quote-book|pt|year=2014|author=Venceslau de Morais|title=Paisagens da China e do Japão|pageurl=http://books.google.com.br/books?id=Kp4WBQAAQBAJ&pg=PT97#v=onepage&q&f=false|isbn=9789898698261|page=97|publisher=Projecto Adamastor|passage=O shogun, generalíssimo do imperador, com residência em Yedo, assinara por conta própria tratados de amizade e de comércio com a América e com a '''Europa''', e os estrangeiros, em Yokohama, pisavam já afoitamente o solo japonês.|t=居住在江戶的幕府將軍(天皇的大元帥),已自行與美國和'''歐洲'''簽訂了友好和貿易條約,而在橫濱的外國人已經大膽地踏上了日本的土地。}}
# {{lb|pt|非正式}} {{syn of|pt|União Europeia|t=歐盟}}
# {{senseid|pt|公主}} {{tcl|pt|歐羅巴|id=Q165170}}
# {{senseid|pt|衛星}} {{tcl|pt|歐羅巴|id=Q3143}}
# {{tcl|pt|歐羅巴|id=Q155100}}
====相關詞彙====
{{col|pt|Eurafrásia|Eurásia|euro|euro-|europeísmo|europeizar|europeu|európio}}
====派生語彙====
{{top2}}
* {{desc|bor=1|my|ဥရောပ}}
* {{desc|bor=1|hrx|Ëuropa}}
* {{desc|bor=1|ja|ヨーロッパ|tr=Yōroppa}}
{{bottom}}
==羅馬尼亞語==
===其他形式===
* {{alt|ro|Еуропа||Moldovan Cyrillic spelling}}
===發音===
* {{IPA|ro|/e.uˈro.pa/}}
===專有名詞===
{{ro-proper noun|f}}
# {{tcl|ro|歐洲|id=Q46}}
# {{tcl|ro|歐羅巴|id=Q165170,Q3143,Q155100}}
====變格====
{{ro-noun-f-ă|Europ|n=sg}}
====相關詞彙====
{{col|ro
|Europa Centrală
|Europa de Est
|Europa de Nord
|Europa de Sud
|Europa de Vest
|european}}
===延伸閱讀===
* {{R:DEX}}
==羅曼什語==
===詞源===
{{bor+|rm|la|Eurōpa}},源自{{der|rm|grc|Εὐρώπη}}。
===專有名詞===
{{rm-proper noun|head=L'Europa|f}}
# {{tcl|rm|歐洲|id=Q46}}
# {{tcl|rm|歐羅巴|id=Q165170,Q3143,Q155100}}
==塞爾維亞-克羅地亞語==
===其他形式===
* {{alt|sh|Evrópa||Bosnian|Montenegrin|Serbian}}
===發音===
* {{sh-IPA|Európa}}
* {{hyphenation|sh|E|u|ro|pa}}
===專有名詞===
{{sh-propn|Európa|f}} {{tlb|sh|克羅地亞}}
# {{tcl|sh|歐洲|id=Q46}}
#: {{uxi|sh|'''Europa''' je mozaik naroda, jezika i kultura.|t='''歐洲'''是各民族、語言和文化的馬賽克。}}
# {{tcl|sh|歐羅巴|id=Q165170,Q3143,Q155100}}
====變格====
{{sh-decl-noun-unc
|Europa
|Europe
|Europi
|Europu
|Europo
|Europi
|Europom
}}
==西西里語==
===其他形式===
* {{alter|scn|Aurupa|Arupa||古舊}}
* {{alter|scn|Eurupa|Iurupa||現代西西里化}}
===詞源===
借自{{der|scn|la|Eurōpa}}。Doublet of {{cog|scn|Aurupa}}。
===發音===
* {{IPA|scn|/ɛwˈɾɔ.pa/}} {{q|標準}}
* {{IPA|scn|/iwˈɾu.pa/}} {{q|西西里化}}
* {{hyphenation|scn|Eu|rò|pa}}
===專有名詞===
{{scn-noun|Europa|f|}}
# {{tcl|scn|歐洲|id=Q46}}
# {{tcl|scn|歐羅巴|id=Q165170,Q3143,Q155100}}
====派生詞彙====
{{col|scn
|Europa cintrali
|Europa dû Norti
|Europa miridiunali
|Europa sittintriunali
|Europa punintina
|Europa livantina
|Europa dû Sud
|eurupeu
|eurupea
}}
====相關詞彙====
{{col|scn
|Uniuni Eurupea
|euru
|euro}}
==西班牙語==
{{wp|es:+ (desambiguación)}}
===詞源===
{{bor+|es|la|Eurōpa}},源自{{der|es|grc-dor|Εὐρώπα}}。
===發音===
{{es-pr}}
===專有名詞===
{{es-proper noun|f}}
# {{tcl|es|歐洲|id=Q46}}
#* {{quote-journal|es|author=Lauren Kent|title=Soldados daneses que lucharon junto a EE.UU. se sienten traicionados mientras Trump amenaza a Groenlandia y denigra a la OTAN|magazine=w:es:CNN en Español|url=https://cnnespanol.cnn.com/2026/01/24/mundo/soldados-daneses-lucharon-junto-ee-uu-sienten-traicionados-trax|date=2026-01-24|passage=“Estuve codo con codo con mis compañeros de armas de Estados Unidos, de '''Europa''' y de la OTAN en Afganistán para luchar con ustedes tras lo ocurrido en Estados Unidos el 11-S”, escribió Augustinussen en una publicación en redes sociales.|archiveurl=https://web.archive.org/web/20260126183550/https://cnnespanol.cnn.com/2026/01/24/mundo/soldados-daneses-lucharon-junto-ee-uu-sienten-traicionados-trax|t=奧古斯丁努森在一篇社群媒體貼文中寫道:「911事件發生後,我在阿富汗與來自美國、'''歐洲'''和北約的戰友們並肩作戰,與你們一起戰鬥。」}}
# {{tcl|es|歐羅巴|id=Q165170,Q3143,Q155100}}
====派生詞彙====
{{col|es
|Europe Central
|Europa del Norte
|Picos de Europa}}
====相關詞彙====
{{col|es|europeo|Unión Europea|euro}}
====派生語彙====
* {{desc|tl|Europa|Yuropa|bor=1}}
* {{desc|mch|Eudojanña|der=1}}
===參見===
{{list:continents/es}}
===延伸閱讀===
* {{R:es:DRAE}}
==瑞典語==
{{wp|sv:}}
===詞源===
最終源自{{der|sv|grc|Εὐρώπα}}。
===發音===
* {{IPA|sv|/ɛˈruːpa/}}
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|歐洲|id=Q46}}
====派生詞彙====
{{col|sv
|Centraleuropa
|Mellaneuropa
|Nordeuropa
|Sydeuropa
|Västeuropa
|Östeuropa
}}
====相關詞彙====
{{col|sv
|europeisk
|europeiska
|euro
|europé}}
====參見====
{{list:continents/sv}}
{{list:countries in Europe/sv}}
===專有名詞===
{{sv-proper noun|c}}
# {{tcl|sv|歐羅巴|id=Q165170,Q3143,Q155100}}
===延伸閱讀===
* {{R:svenska.se}}
* [https://web.archive.org/web/20250418102125/https://mesh.kib.ki.se/term/D005060/europe Svensk MeSH]
==他加祿語==
{{wp|tl:}}
===其他形式===
* {{alt|tl|Yuropa}}
===詞源===
{{bor+|tl|es|Europa}}。
===發音===
{{tl-pr|+|Ewropa<qq:棄用>|syll=+}}
===專有名詞===
{{tl-proper noun|b=Yuropa}}
# {{tcl|tl|歐洲|id=Q46}}
# [[歐盟]]
#: {{syn|tl|Unyong Europeo}}
====同類詞彙====
{{list:continents/tl/Latn}}
====相關詞彙====
{{col|tl|Europeo|Europea}}
===參考資料===
* {{R:Pambansang Diksiyonaryo}}
==土耳其語==
{{wp|tr:+ (mitoloji)}}
{{wp|tr:+ (uydu)}}
===專有名詞===
{{tr-proper noun}}
# {{tcl|tr|歐羅巴|id=Q165170,Q3143,Q155100}}
mhpjehyc9ntcp2a1f1bunviqo9h0o81
Costa Rica
0
42306
9814219
9799561
2026-06-16T03:00:47Z
InternetArchiveBot
95668
Rescuing 0 sources and tagging 1 as dead.) #IABot (v2.0.9.5
9814219
wikitext
text/x-wiki
{{minitoc}}
==英語==
{{wp|en:}}
===詞源===
{{bor+|en|es|Costa Rica|t=富裕海岸}}。
===發音===
* {{IPA|en|/ˌkɒs.tə ˈɹiːkə/|a=RP}}
* {{IPA|en|/ˌkɔs.tə ˈɹɪjkə/|a=SSB}}
** {{audio|en|LL-Q1860 (eng)-Soundguys-Costa Rica.wav|a=SSB}}
* {{enPR|kōstə rēkə|a=US}}; {{IPA|en|/ˌkoʊ.stə ˈɹi.kə/|/ˌkɑ.stə ˈɹi.kə/}}
** {{audio|en|en-us-Costa Rica.ogg|a=US}}
* {{IPA|en|/ˌkɔs.tə ˈɹiːkə/|a=AU}}
* {{IPA|en|/ˌkɔs.tə ˈɾi.kə/|a=Scotland}}
* {{IPA|en|/ˌkɒs.tə ˈɾiːkə/|a=Wales}}
* {{rhymes|en|iːkə|s=2}}
===專有名詞===
{{en-proper noun|nolink=1}}
# {{tcl|en|哥斯達黎加|id=Q800}}
#* {{quote-journal|en|author=Erin Griffith|title=The Digital Nomads Did Not Prepare for This|work=w:The New York Times|date=2020-11-08|url=https://www.nytimes.com/2020/11/08/business/digital-nomads-regret.html|issn=0362-4331|passage=He got to '''Costa Rica''' in early November. It has poured rain every day. “Spirits,” he said, “are still high.”|t=他11月初抵达'''哥斯达黎加'''。那里每天都下着倾盆大雨。“但人们的情绪依然高昂,”他说。|archiveurl=https://web.archive.org/web/20201111005912/https://www.nytimes.com/2020/11/08/business/digital-nomads-regret.html}}
# [[菲律賓]]的多個地點:
## {{place|en|barangay|mun/Batuan|p/馬士弼|c/菲律賓}}。
## {{place|en|barangay|mun/Almagro|p/薩馬|c/菲律賓}}。
====派生詞彙====
{{col|en|Costa Rican|CRI|qq1=形容詞|qq2=國家代碼}}
===參見===
{{list:countries in Central America/en}}
===異序詞===
* {{anagrams|en|a=aacciorst|acroatics}}
==阿斯圖里亞斯語==
{{wp|ast:}}
===發音===
{{ast-pr}}
===專有名詞===
{{ast-proper noun|f|head=[[costa|Costa]] [[rica|Rica]]}}
# {{tcl|ast|哥斯達黎加|id=Q800}}
==布列塔尼語==
===詞源===
{{bor+|br|es|Costa Rica}}。
===專有名詞===
{{br-proper noun|head=Costa Rica|f}}
# {{tcl|br|哥斯達黎加|id=Q800}}
====其他形式====
* {{alt|br|Kosta Rika}}
==加泰羅尼亞語==
{{wp|ca:}}
===發音===
* {{ca-IPA|[òs]}}
* {{audio|ca|LL-Q7026 (cat)-Millars-Costa Rica.wav|a=Valencia}}
===專有名詞===
{{ca-proper noun|f|head=[[costa|Costa]] [[rica|Rica]]}}
# {{tcl|ca|哥斯達黎加|id=Q800}}
====派生詞彙====
* {{l|ca|costa-riqueny}}
==中瓦斯特卡納瓦特爾語==
===專有名詞===
{{head|nch|專有名詞}}
# {{tcl|nch|哥斯達黎加|id=Q800}}
==中納瓦特爾語==
===專有名詞===
{{head|nhn|專有名詞}}
# {{tcl|nhn|哥斯達黎加|id=Q800}}
==丹麥語==
===專有名詞===
{{da-proper noun|head=Costa Rica}}
# {{tcl|da|哥斯達黎加|id=Q800}}
====相關詞彙====
* {{l|da|costaricaner}}
* {{l|da|costaricansk}}
==荷蘭語==
===詞源===
{{bor+|nl|es|Costa Rica}}。
===發音===
* {{IPA|nl|/ˌkɔs.taː ˈri.kaː/}}
* {{audio|nl|Nl-Costa Rica.ogg}}
===專有名詞===
{{nl-proper noun|n|nolinkhead=1}}
# {{tcl|nl|哥斯達黎加|id=Q800}}
====派生詞彙====
* {{l|nl|Costa Ricaan}}
==芬蘭語==
{{wp|fi:}}
===詞源===
{{bor+|fi|es|Costa Rica}}。
===發音===
{{fi-p|kosta rika|kosta-rika}}
===專有名詞===
{{fi-proper noun|head=Costa Rica}}
# {{tcl|fi|哥斯達黎加|id=Q800}}
====變格====
{{fi-decl-kala|n=sg|Costa Ric|||a}}
====派生詞彙====
{{col|fi|title=複合詞
|costaricanhyppyhiiri
}}
==法語==
{{wp|fr:}}
===發音===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-GrandCelinien-Costa Rica.wav|a=巴黎}}
===專有名詞===
{{fr-proper noun|m|nolinkhead=1}}
# {{tcl|fr|哥斯達黎加|id=Q800}}
==加利西亞語==
{{wp|gl:}}
===專有名詞===
{{gl-proper noun|f|head=[[costa|Costa]] [[rica|Rica]]}}
# {{tcl|gl|哥斯達黎加|id=Q800}}
====派生詞彙====
* {{l|gl|costarriqueño}}
==德語==
===發音===
* {{audio|de|De-Costa Rica.ogg|a=柏林}}
===專有名詞===
{{de-proper noun|toponym|nolinkhead=1}}
# {{tcl|de|哥斯達黎加|id=Q800}}
====變格====
{{de-ndecl|toponym}}
==匈牙利語==
{{swp|hu:}}
===發音===
* {{hu-IPA|kosztarika}}
* {{hyphenation|hu|Cos|ta Ri|ca}}
* {{rhymes|hu|kɒ|s=4}}
===專有名詞===
{{head|hu|專有名詞|head=Costa Rica}}
# {{tcl|hu|哥斯達黎加|id=Q800|place_official=hu:Costa Rica-i Köztársaság}}
====變格====
{{hu-infl-nom|Costa Ricá|o|n=sg}}{{hu-pos-tok|Costa Ricá|n=sg}}
====派生詞彙====
* {{l|hu|Costa Rica-i}}
===參見===
{{list:countries in Central America/hu}}
==因特語==
===專有名詞===
{{head|ia|專有名詞|head=Costa Rica}}
# {{tcl|ia|哥斯達黎加|id=Q800}}
==意大利語==
{{wp|it:}}
===詞源===
{{ubor|it|es|Costa Rica}}。
===專有名詞===
{{it-proper noun|f|nolinkhead=1}}
# {{tcl|it|哥斯達黎加|id=Q800}}
====派生詞彙====
* {{l|it|costaricano}}
===異序詞===
* {{anagrams|it|a=aacciorst|accorasti|cascatori|raccostai|riaccosta|ricascato|scaricato|scorciata|socratica|stracocia}}
==立窩尼亞語==
===詞源===
{{ubor|liv|es|Costa Rica}}。
===發音===
{{rfp|liv}} <!-- {{liv-p|...}} -->
===專有名詞===
{{head|liv|專有名詞|head=Costa Rica}}
# {{tcl|liv|哥斯達黎加|id=Q800}}
#: {{ux|liv|San José um '''Costa Rica''' pǟjālgab|聖荷西是'''哥斯達黎加'''的首都}}
====變格====
{{liv-decl|56|n=sg}}
==書面挪威語==
{{wp|no:}}
===專有名詞===
{{head|nb|專有名詞|head=Costa Rica}}
# {{tcl|nb|哥斯達黎加|id=Q800}}
====相關詞彙====
* {{l|nb|costaricaner}}
* {{l|nb|costaricansk}}
* {{l|nb|kostarikaner}}
* {{l|nb|kostarikansk}}
==新挪威語==
{{wp|nn:}}
===專有名詞===
{{head|nn|專有名詞|head=Costa Rica}}
# {{tcl|nn|哥斯達黎加|id=Q800}}
====相關詞彙====
* {{l|nn|costarican}}、{{l|nn|costaricanar}}
* {{l|nn|costaricansk}}
* {{l|nn|kostarikan}}、{{l|nn|kostarikanar}}
* {{l|nn|kostarikansk}}
==葡萄牙語==
===發音===
{{pt-IPA|Cósta Rica}}
===專有名詞===
{{pt-proper noun|f|head=[[costa|Costa]] [[rico|Rica]]}}
# {{tcl|pt|哥斯達黎加|id=Q800}}
====派生詞彙====
* {{l|pt|costa-ricense}}
* {{l|pt|costa-riquenho}}
* {{l|pt|costa-riquense}}
==羅馬尼亞語==
===發音===
* {{audio|ro|LL-Q7913 (ron)-KlaudiuMihaila-Costa Rica.wav}}
===專有名詞===
{{head|ro|專有名詞|head=Costa Rica}}
# {{tcl|ro|哥斯達黎加|id=Q800}}
==西班牙語==
{{wp|es:}}
===發音===
{{es-pr|+<audio:LL-Q1321 (spa)-Rubýñ-Costa Rica.wav<a:Costa Rica>><audio:LL-Q1321 (spa)-Rodelar-Costa Rica.wav<a:Spain>>}}
===專有名詞===
{{es-proper noun|f|head=[[costa|Costa]] [[rica|Rica]]}}
# {{tcl|es|哥斯達黎加|id=Q800}}
#: {{syn|es|Ticolandia<q:哥斯達黎加、口語>}}
====派生詞彙====
{{col|es|costarricense|costarriqueño}}
===參見===
* {{l|es|tico}}
==瑞典語==
{{wp|sv:}}
===發音===
* {{audio|sv|LL-Q9027 (swe)-Moonhouse-Costa Rica.wav}}
===專有名詞===
{{sv-proper noun|n|head=Costa Rica}}
# {{tcl|sv|哥斯達黎加|id=Q800}}
====相關詞彙====
* {{l|sv|costarican}}
* {{l|sv|costaricansk}}
* {{l|sv|costaricanska}}
====參見====
{{list:countries in Central America/sv}}
===參考資料===
* {{R:svenska.se|saol}}
* [https://mesh.kib.ki.se/term/D003364/costa-rica Svensk MeSH]{{Dead link|date=June 2026 |bot=InternetArchiveBot |fix-attempted=yes }}
==威爾士語==
{{wp|cy:}}
===專有名詞===
{{cy-proper noun|head=Costa Rica|f}}
# {{tcl|cy|哥斯達黎加|id=Q800}}
====同類詞彙====
{{list:countries in Central America/cy}}
3clpdku67j5wp1mw81m5rkw43co5kg8
beleuchten
0
300758
9814274
9554841
2026-06-16T04:48:10Z
Sayonzei
40728
9814274
wikitext
text/x-wiki
{{also|Beleuchten}}
==德語==
===詞源===
{{inh+|de|gmh|beliuhten}},{{inh+|de|goh|biliuhten}}。等價於 {{af|de|be-|leuchten}}。
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtn̩/}}
* {{audio|de|De-beleuchten.ogg|a=柏林}}
===動詞===
{{de-verb}}
# {{lb|de|及物}} [[照亮]],[[照明]]
# {{lb|de|及物|比喻}} [[闡明]],[[說明]]
====變位====
{{de-conj}}
====派生詞彙====
* {{l|de|Beleuchter}}、{{l|de|Beleuchtung}}、{{l|de|Beleuchten}}
* {{l|de|beleuchtend}}、{{l|de|beleuchtet}}
====相關詞彙====
* {{l|de|anleuchten}}、{{l|de|aufleuchten}}、{{l|de|erleuchten}}、{{l|de|durchleuchten}}
===延伸閱讀===
* {{R:de:DWDS}}
* {{R:de:UniLeipzig}}
* {{R:de:Duden}}
* {{R:de:Grimm}}
qk9s27bgwzm0yitxlyjbvpes24ahvao
entgegengesetzt
0
301240
9814611
9557898
2026-06-16T07:09:03Z
Sayonzei
40728
9814611
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɛntˈɡeːɡn̩ɡəˌzɛt͡st/}}
* {{audio|de|De-entgegengesetzt.ogg|a=柏林}}
* {{audio|de|De-entgegengesetzt2.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|entgegensetzen}}
===形容詞===
{{de-adj|comp}}
# [[對立]]的,[[相反]]的
====變格====
{{de-adecl|comp}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
fckyl9iiq6ml7fr6mf6yc4izc315jsp
einleuchten
0
336071
9814228
6136296
2026-06-16T04:30:10Z
Hzy980512
19278
9814228
wikitext
text/x-wiki
==德语==
===词源===
{{inh+|de|gmh|īnliuhten}}、{{inh|de|goh|inliuhtan}}; {{surf|de|ein|leuchten|nocap=1}}。
===发音===
* {{IPA|de|[ˈaɪ̯nˌlɔɪ̯çtn̩]}}
* {{audio|de|De-einleuchten.ogg}}
* {{audio|de|De-einleuchten2.ogg|a=<<Germany>> (<<Berlin>>)}}
* {{hyphenation|de|ein|leuch|ten}}
===动词===
{{de-verb|ein.leuchten<only3s>}}
# {{lb|de|不及物}} 被...[[明白]],让...[[懂得]],被...[[理解]] {{+obj|de|dat<某人>}}
#: {{coi|de|Das '''leuchtet''' mir '''ein'''.|我懂了。}}
#: {{coi|de|Es will mir nicht recht '''einleuchten,''' dass […]|我没办法理解为什么[…]}}
#: {{coi|de|Es will mir durchaus nicht '''einleuchten.'''|我真的没法理解。}}
# {{lb|de|及物|now|rare|and|mostly|古旧}} 用...[[感染]],把...植入 {{+obj|de|acc<某事物> + dat<某人里>}}
#: {{syn|de|einstrahlen|[[zuteil]] [[machen]]}}
====变位====
{{de-conj|ein.leuchten<only3s>}}
====相关词汇====
* {{l|de|Einleuchten}}
* {{l|de|einleuchtend}}
* {{l|de|beleuchten}}、{{l|de|erleuchten}}
===延伸阅读===
* {{R:de:DWDS}}
* {{R:de:Duden}}
fx4uc6oxnzo4vdpb95zu2o7geue9yq9
апоплексический
0
341783
9813790
5064185
2026-06-15T16:56:02Z
~2026-35076-53
133928
9813790
wikitext
text/x-wiki
==俄語==
===詞源===
{{af|ru|апоплексия<t:中風>|-ический}}。
===發音===
* {{ru-IPA|апоплекси́ческий}}
===形容詞===
{{ru-adj|апоплекси́ческий}}
# {{lb|ru|medicine|relational}} [[中風]]的
# {{lb|ru|colloquial}} 讓人[[發怒]]的
====變格====
{{ru-decl-adj|апоплекси́ческий}}
1hno7223kgfu1j1zx2b3axq84b9ej60
gyventi
0
435667
9813764
4945352
2026-06-15T13:33:23Z
TongcyDai
53191
9813764
wikitext
text/x-wiki
==立陶宛語==
===詞源===
源自{{der|lt|ine-bsl-pro|*gīw-}},最终源自{{der|lt|ine-pro|*gʷeyh₃-}}。和{{cog|lv|dzīvot}}、{{cog|sla-pro|*živěti}}、{{m|sla-pro|*žiti}}、{{cog|sa|जीवति|tr=jī́vati}}、{{cog|la|vīvō|t=活}}(不定式 {{m|la|vīvere}})同源。
===發音===
{{lt-pr|gyvénti}}
===動詞===
{{lt-verb|head=gyvénti|gyvẽna|gyvẽno}}
# [[活]]
# [[住]],[[居住]]
#: {{uxi|lt|'''gyventi''' Vilniuje|'''住'''在維爾紐斯}}
====變位====
{{lt-conj-1-circum|gyven|gyven|gyvén|gyvẽn|gyvẽn|3fut=gyveñ}}
====派生詞彙====
{{col|lt|title=帶前綴動詞
|pergyventi
}}
{{col|lt|title=名詞
|gyvenimas<g:m>
|gyventoja<g:f>
|gyventojas<g:m>
|gyvenvietė<g:f>
}}
====相關詞彙====
{{col|lt|title=形容詞
|gyvas
}}
{{col|lt|title=名詞
|gyvybė<g:f>
|gyvulys<g:m>
}}
{{col|lt|title=動詞
|gyvuoti
}}
===延伸閱讀===
* {{R:LKZ}}
* {{R:lt:LKEŽDUB}}
tali9gt1x75r5uhgq13f86e7rlav6vy
暴徒
0
578564
9814449
6683137
2026-06-16T06:35:49Z
Apisite
85347
/* 漢語 */ + zh-forms
9814449
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=bàotú
|c=bou6 tou4
|h=pfs=phau-thù;hrs=h:pauˇ tu
|mn=ml:po̍k-tô͘/xm,zz:pō-tô͘
|mn-t=bao6 tu5
|mc=1
|oc=1
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{rfdef|zh}}
===翻譯===
{{翻译-顶}}
* 俄語:[[изверг]], [[головорез]], [[злодей]]
{{翻译-底}}
==日語==
〈{{Lang|ja|[[暴]][[徒]]}}〉【ぼうと】
#暴徒。
[[Category:待分類的漢語詞]]
[[Category:漢語|日11彳07]]
[[Category:待分類的日語詞]]
[[Category:日語]]
jex5ob5zjxd14m32y1hx8zb7nu4x07c
不動產
0
586912
9813888
8777831
2026-06-15T18:15:00Z
Jiba1219
110530
/* 日語 */
9813888
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=不动产|type=21}}
{{zh-wp}}
===發音===
{{zh-pron
|m=不dòngchǎn
|c=bat1 dung6 caan2
|h=gd=bud5 tung4 san3
|mn=qz:put-tǒng-sán/tw,xm,zz:put-tōng-sán
|mn-t=bug4 dong6 suan2
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# 不能[[移動]]的[[財產]],指[[土地]]、[[房屋]]及[[附着]]於其上不可[[分離]]的部分
#* {{zh-x|他 的 不動產 雖 不多,銀行{háng} 的 存款 也 並 沒有 超過 一萬 去,可是 他 總 以為{wéi} 自己 是 個 紳士。|ref={{w|老舍}}《{{w|四世同堂}}》[[s:四世同堂/23|二三]]}}
#* {{zh-x|@朱 ^@延年 才 露 了 面,所有 動產 與 不動產 都 交給 債權-團 分配。|ref='''1958'''年,{{w|周而復}}《上海的早晨》第一部十二}}
====近義詞====
{{syn-saurus|zh|不動產}}
====反義詞====
* {{zh-l|動產}}
====翻譯====
{{trans-top|財產}}
* 阿爾巴尼亞語:{{t|sq|pasuri të paluajtshme|m}}
* 阿拉伯語:{{t+|ar|عَقَار|m}}
* 亞美尼亞語:{{t+|hy|անշարժ գույք}}
* 阿塞拜疆語:{{t|az|daşınmaz əmlak}}、{{t+|az|əmlak}}
* 巴什基爾語:{{t|ba|күсемһеҙ мөлкәт}}
* 白俄羅斯語:{{t|be|нерухо́масць|f}}
* 保加利亞語:{{t|bg|недви́жима со́бственост|f}}
* 緬甸語:{{t+|my|ထာဝရဥစ္စာ}}
* 切羅基語:{{t|chr|ᎦᏙ ᎣᏤᎵᎪ}}
* 捷克語:{{t+|cs|nemovitost|f}}
* 丹麥語:{{t|da|fast ejendom|c}}
* 荷蘭語:{{t+|nl|onroerend goed|n}}、{{t+|nl|immobiliën|m-p}}、{{t+|nl|vastgoed|n}}
* 英語:{{t+|en|real estate}}、{{t+|en|immovable}}、{{t+|en|immovable property}}、{{t+|en|property}} {{qualifier|英國}}、{{t+|en|realty}}、{{t+|en|real property}}
* 世界語:{{t|eo|nemoveblaĵoj|p}}
* 愛沙尼亞語:{{t|et|kinnisvara}}
* 芬蘭語:{{t+|fi|kiinteistö}}、{{t+|fi|maaomaisuus}}
* 法語:{{t+|fr|immobilier|m}}、{{t|fr|bien immobilier|m}}
* 加利西亞語:{{t|gl|ben inmóbel|m}}、{{t|gl|ben raíz|m}}
* 格魯吉亞語:{{t|ka|უძრავი ქონება}}
* 德語:{{t|de|unbewegliche Sache|f}}、{{t+|de|Immobilie|f}}
* 希臘語:{{t+|el|ακίνητο|n}}、{{t+|el|ακίνητη περιουσία|f}}
*: 古希臘語:{{t|grc|ἔγγειος|alt=ἔγγειον|n}}
* 希伯來語:{{t|he|נכסי דלא ניידי|m-p|tr=nikhséi deló naydéy}}、{{qualifier|縮略}} {{t+|he|נדל״ן|m-p|tr=nadlán}}
* 印地語:{{t|hi|भू-संपदा|f}}、{{t|hi|अचल संपत्ति|f}}、{{t|hi|स्थावर संपत्ति|f}}
* 匈牙利語:{{t+|hu|ingatlan}}
* 冰島語:{{t+|is|fasteign|f}}
* 伊多語:{{t|io|terhavajo}}、{{t+|io|imoblo}}
* 印尼語:{{t|id|lahan yasan}}、{{t|id|real estat}}
* 意大利語:{{t|it|bene immobile|m}}
* 日語:{{t+|ja|不動産|tr=ふどうさん, fudōsan}}
* 哈薩克語:{{t|kk|жылжымайтын мүлік}}
* 高棉語:{{t+|km|អចលនវត្ថុ}}、{{t+|km|អសង្ហារិមៈ}}、{{t|km|អសង្ហារិមទ្រព្យ}}
* 朝鮮語:{{t+|ko|부동산(不動產)}}
* 吉爾吉斯語:{{t|ky|кыймылсыз мүлк}}、{{t|ky|кыймылсыз буюмдар}}
* 老撾語:{{t|lo|ອະສັງຫາລິມະຊັບ}}
* 拉丁語:{{t|la|[[rēs]] [[solī]]|f}}
* 拉脫維亞語:{{t|lv|nekustamais īpašums|m}}
* 立陶宛語:{{t+|lt|nekilnojamasis turtas|m}}
* 馬其頓語:{{qualifier|單指其中一個}} {{t|mk|недвижнина|f}}、{{t|mk|недвижност|f}}、{{qualifier|總稱}} {{t|mk|недвижнини|p}}、{{t|mk|недвижности|p}}
* 馬來語:{{t+|ms|hartanah}}、{{t+|ms|harta tanah}}
* 蒙古語:
*: 西里爾字母:{{t|mn|үл хөдлөх хөрөнгө}}、{{t|mn|гэр байшин газар хөрөнгө}} {{qual|中國}}
*: 蒙古字母:{{t|mn|ᠦᠯᠦ ᠬᠥᠳᠡᠯᠬᠦ ᠬᠥᠷᠦᠩᠭᠡ}}、{{t|mn|ᠭᠡᠷ ᠪᠠᠶᠢᠰᠢᠨᠩ ᠭᠠᠵᠠᠷ ᠬᠥᠷᠦᠩᠭᠡ}}
* 挪威語:
*: 書面挪威語:{{t|nb|fast eiendom|m}}
*: 新挪威語:{{t|nn|fast eigedom|m}}
* 波斯語:
*: 伊朗波斯語:{{t+|fa-ira|اَمْلاک}}、{{t+|fa-ira|مُسْتَغِلَّات}}、{{t|fa-ira|اَمْوالِ غِیْرِ مَنْقول}}
* 波蘭語:{{t+|pl|nieruchomość|f}}
* 葡萄牙語:{{t|pt|bem imóvel|m}}、{{t+|pt|imóvel|m}}
* 羅馬尼亞語:{{t+|ro|imobil|n}}
* 俄語:{{t+|ru|недви́жимость|f}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|некретнѝна|f}}
*: 拉丁字母:{{t+|sh|nekretnìna|f}}
* 斯洛伐克語:{{t|sk|nehnuteľnosť|f}}
* 斯洛文尼亞語:{{t+|sl|nepremičnina|f}}
* 西班牙語:{{t|es|bien inmueble|m}}、{{t+|es|bien raíz|m}}
* 瑞典語:{{t+|sv|fast egendom|c}}、{{t+|sv|fastighet|c}}
* 他加祿語:{{t|tl|pingkas}}
* 塔吉克語:{{t|tg|мулки ғайриманқул}}、{{t|tg|амволи ғайриманқул}}
* 韃靼語:{{t|tt|күчемсез мөлкәт}}
* 泰語:{{t+|th|อสังหาริมทรัพย์}}
* 土耳其語:{{t+|tr|emlak}}、{{t+|tr|gayrimenkul}}
* 烏克蘭語:{{t|uk|нерухо́мість|f}}
* 烏茲別克語:{{t+|uz|amlok}}、{{t|uz|koʻchmas mulk}}
* 越南語:{{t+|vi|bất động sản}}、{{t+|vi|địa ốc}} {{qualifier|過時}}
{{trans-bottom}}
==日語==
{{ja-kanjitab|ふ|どう|さん|yomi=kan,goon,kanon}}
===名詞===
{{ja-noun|ふどうさん}}
# {{ja-kyu sp|不動産}}
==越南語==
{{vi-hantutab|不|動|產}}
===名詞===
{{vi-noun|sc=Hani}}
# {{vi-Han form of|bất động sản}}
2y4w3mcachkb7rbwf77bfiplxft1jzh
產業
0
594953
9814681
9087753
2026-06-16T11:01:26Z
Jiba1219
110530
/* 日語 */
9814681
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=产业|alt=産業}}
{{zh-wp}}
===發音===
{{zh-pron
|m=chǎnyè
|ma=Zh-chanyè.ogg
|c=caan2 jip6
|h=pfs=sán-ngia̍p;gd=san3 ngiab6
|mn=sán-gia̍p
|mn-t=suan2 ngiab8
|cat=n
|ca=LL-Q9186 (yue)-Luilui6666-产业.wav
}}
===名詞===
{{head|zh|名詞}}
# [[錢財]]
#: {{zh-x|變賣 產業}}
#: {{zh-x|繼承 產業}}
# [[家產]]
# 一個[[經濟體]]中,有效運用[[資金]]與[[勞力]]從事[[生產]][[經濟]][[物品]]的各種[[行業]]
#: {{zh-x|產業 佈局}}
#: {{zh-x|新興{xīng} 產業}}
#: {{zh-x|食品 產業}}
#: {{zh-x|產業 創新}}
#: {{zh-x|高科技 產業}}
#: {{zh-x|產業 部門}}
#: {{zh-x|煉鋼 產業}}
====同義詞====
* {{s|錢財}}
{{syn-saurus|zh|錢財}}
* {{s|家產}}
{{syn-saurus|zh|家產}}
* {{s|行業}} {{zh-l|工業}}
====衍生詞====
{{col3|zh|產業化|產業工人|產業界|產業結構|產業鏈|產業集群|知識產業|產業革命|支柱產業|智力產業}}
====翻譯====
{{trans-top|有效運用資金與勞力從事生產經濟物品的各種行業}}
* 阿拉伯語:{{t|ar|صِنَاعَة|f}}
* 阿薩姆語:{{t|as|উদ্যোগ}}
* 巴什基爾語:{{t|ba|тармаҡ}}
* 白俄羅斯語:{{t|be|прамысло́васць|f}}、{{t|be|інду́стрыя|f}}、{{t+|be|галіна́|f}}
* 保加利亞語:{{t+|bg|отра́съл|m}}
* 康沃爾語:{{t|kw|diwysyans|m}}、{{t|kw|hwel ober|m}}
* 捷克語:{{t|cs|branže|f}}
* 丹麥語:{{t+|da|industri|c}}
* 荷蘭語:{{t+|nl|sector|f}}
* 英語:{{t+|en|industry}}
* 愛沙尼亞語:{{t|et|valdkond}}、{{t|et|majandusharu}}
* 芬蘭語:{{t+|fi|toimiala}}、{{t+|fi|ala}}
* 加利西亞語:{{t+|gl|industria|f}}
* 德語:{{t+|de|Branche|f}}、{{t+|de|Wirtschaftszweig|m}}
* 希臘語:{{t+|el|βιομηχανία|f}}
* 希伯來語:{{t+|he|תעשייה|f|tr=ta'asiá|alt=תַּעֲשִׂיָּה / תעשייה}}
* 印地語:{{t+|hi|उद्योग|f}}
* 匈牙利語:{{t+|hu|iparág}}
* 伊多語:{{t+|io|industrio}}
* 英格里亞語:{{t|izh|industria}}
* 日語:{{t+|ja|産業|tr=さんぎょう, sangyō}}、{{t+|ja|業界|tr=ぎょうかい, gyōkai}}、{{t+|ja|工業|tr=こうぎょう, kōgyō}}
* 高棉語:{{t|km|ឧស្សាហកម្ម}}
* 朝鮮語:{{t+|ko|산업(産業)}}
* 老撾語:{{t|lo|ອຸດສາຫະກຳ}}
* 拉脫維亞語:{{t|lv|rūpniecība|f}}、{{t|lv|industrija|f}}
* 立陶宛語:{{t+|lt|pramonė|f}}、{{t|lt|industrija|f}}
* 盧森堡語:{{t|lb|Industrie|f}}
* 馬其頓語:{{t|mk|дејност|f}}
* 馬來語:{{t|ms|industri}}
* 挪威語:
*: 書面挪威語:{{t|nb|forretningsområde|n}}
* 波蘭語:{{t+|pl|branża|f}}
* 葡萄牙語:{{t+|pt|indústria|f}}
* 羅馬尼亞語:{{t+|ro|industrie|f}}、{{t|ro|branșă industrială|f}}
* 俄語:{{t+|ru|промы́шленность|f}}、{{t+|ru|индустри́я|f}}、{{t+|ru|о́трасль|f}}
* 西班牙語:{{t+|es|industria|f}}
* 斯瓦希里語:{{t|sw|tasnia}}
* 瑞典語:{{t+|sv|bransch|c}}、{{t+|sv|industri|c}}、{{t+|sv|gren|f}}
* 他加祿語:{{t|tl|kalalang}}
* 泰盧固語:{{t+|te|పరిశ్రమ}}
* 泰語:{{t+|th|อุตสาหกรรม}}
* 托克皮辛語:{{t|tpi|indastri}}
* 土耳其語:{{t+|tr|endüstri}}
* 烏克蘭語:{{t|uk|промисло́вість|f}}、{{t|uk|інду́стрія|f}}、{{t+|uk|га́лузь|f}}
* 越南語:{{t+|vi|công nghiệp}} ({{t|vi|工業}})
{{trans-bottom}}
{{zh-cat|Advanced}}
==日語==
{{ja-kanjitab|さん|ぎょう|yomi=kanon}}
===名詞===
{{ja-noun|さんぎょう}}
# {{ja-kyu sp|産業}}
==越南語==
{{vi-hantutab}}
===名詞===
{{vi-noun|sc=Hani}}
# {{vi-Han form of|sản nghiệp}}
73atoyc2x0hjp4o8bdq9wbx7xtmrc3n
巨蛇座
0
639856
9814448
6832717
2026-06-16T06:32:29Z
Apisite
85347
/* 漢語 */ + zh-forms
9814448
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{wp|zh:}}
===發音===
{{zh-pron
|m=Jùshézuò
|c=geoi6 se4 zo6
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{lb|zh|constellation}} {{rfdef|zh}}
===翻譯===
{{翻译-顶}}
* 俄語:''[[астр.]]'' <nowiki>[</nowiki>[[созвездие]]<nowiki>]</nowiki> [[Змея]]
{{翻译-底}}
[[Category:漢語|工02虫05广07]]
7upruhlhjf503g8m2bxvy06338zm9z7
инсульт
0
703003
9813791
5081913
2026-06-15T16:58:27Z
~2026-35076-53
133928
9813791
wikitext
text/x-wiki
==哈薩克語==
{{kk-regional|инсульт|ينسۋلت|insult}}
===詞源===
{{bor+|kk|ru|инсу́льт}},來自{{der|kk|la|īnsultus}}。
===名詞===
{{kk-noun}}
# {{lb|kk|pathology}} [[中風]]
==俄語==
===發音===
* {{ru-IPA|инсу́льт}}
===名詞===
{{ru-noun+|инсу́льт}}
# {{lb|ru|pathology}} [[中風]]
====變格====
{{ru-noun-table|инсу́льт}}
iwjn351jdw03m39x5jn7jwf6pbq1g8u
aufleuchten
0
762720
9814292
4874158
2026-06-16T04:52:03Z
Sayonzei
40728
9814292
wikitext
text/x-wiki
==德語==
===詞源===
{{inh+|de|gmh|ūfliuhten}},等價於 {{pre|de|auf|leuchten}}。和{{cog|nds-de|upluchten}}、{{m|nds-de|uplüchten}}、{{cog|nl|oplichten}}、{{cog|fy|opljochtsje}}、{{cog|stq|apljuchte}}、{{cog|en|uplight}} 同源。
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩/}}
* {{audio|de|De-aufleuchten.ogg|a=柏林}}
===動詞===
{{de-verb|auf.leuchten}}
# {{lb|de|semelfactive|不及物}} [[閃亮]],[[閃爍]]
#: {{ux|de|Ich liebe es, wenn deine Augen vor Freude '''aufleuchten'''.|我喜欢看到你眼中'''闪烁着'''喜悦的光芒。}}
====變位====
{{de-conj|auf.leuchten}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
d44494r2s3jszivkfowjalvoj6zjgr3
aufleuchtend
0
762722
9814294
1781734
2026-06-16T04:52:23Z
Sayonzei
40728
9814294
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩t/}}
* {{audio|de|De-aufleuchtend.ogg|a=柏林}}
===分詞===
{{head|de|現在分詞}}
# {{present participle of|de|aufleuchten}}
====變格====
{{de-adecl}}
qddln048jj2kkcqx7yzpoyehk908jxu
ausleuchten
0
763589
9814381
4874615
2026-06-16T06:15:50Z
Sayonzei
40728
9814381
wikitext
text/x-wiki
==德語==
===詞源===
{{af|de|aus-|leuchten}}
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩/}}
* {{audio|de|De-ausleuchten.ogg|a=柏林}}
===動詞===
{{de-verb|aus.leuchten}}
# [[照亮]],[[照明]]
====變位====
{{de-conj|aus.leuchten}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
o7humdg2ov3c6uzzy5h25nyneflsso2
befrist
0
765726
9814616
4879241
2026-06-16T07:20:19Z
Sayonzei
40728
9814616
wikitext
text/x-wiki
==德语==
===發音===
* {{IPA|de|/bəˈfʁɪst/}}
* {{audio|de|De-befrist.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|befristen||s|imp}}
0m5hr118l47ensqlg9wlsqttl6q639p
befristen
0
765727
9814615
4879242
2026-06-16T07:19:32Z
Sayonzei
40728
9814615
wikitext
text/x-wiki
==德語==
===詞源===
{{ety|de|:af|be-|Frist|-en}}
{{affix|de|be-|Frist|-en}}
===發音===
* {{IPA|de|/bəˈfʁɪstn̩/}}
* {{hyph|de|be|fris|ten}}
* {{audio|de|De-befristen.ogg|a=柏林}}
===動詞===
{{de-verb}}
# [[限定]][[時間]] {{+obj|de|:auf<……的>}}
====變位====
{{de-conj}}
====派生詞彙====
* {{l|de|Befristung}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
ajxnyog2q9s2ggp2kf90h6w77cz1cez
befristet
0
765728
9814614
4879243
2026-06-16T07:18:57Z
Sayonzei
40728
9814614
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstət/}}
* {{audio|de|De-befristeter Arbeitsvertrag.ogg|a=柏林}}
* {{audio|de|De-befristet.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|befristen}}
===形容詞===
{{de-adj}}
# 有[[限期]]的,有[[時間]][[限制]]的
====變格====
{{de-adecl}}
====派生詞彙====
* {{l|de|unbefristet}}
ey5s1g38rsj9f1dnraycwunh5gkjzue
9814619
9814614
2026-06-16T07:21:36Z
Sayonzei
40728
/* 分詞 */
9814619
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstət/}}
* {{audio|de|De-befristeter Arbeitsvertrag.ogg|a=柏林}}
* {{audio|de|De-befristet.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|befristen}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|befristen||3s//2p|pres|;|2p|sub|I|;|p|imp}}
===形容詞===
{{de-adj}}
# 有[[限期]]的,有[[時間]][[限制]]的
====變格====
{{de-adecl}}
====派生詞彙====
* {{l|de|unbefristet}}
b45d1osgustv0nej7duvzau6h1fy3pg
beleuchtet
0
766090
9814276
4879622
2026-06-16T04:48:25Z
Sayonzei
40728
9814276
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtət/}}
* {{audio|de|De-beleuchtet.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|beleuchten}}
====變格====
{{de-adecl}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|beleuchten||3|s|pres|;|2|p|pres|;|p|imp|;|2|p|sub|I}}
a82yw1861jb13hjueyfz6lckuvqjaad
bestrahlen
0
766773
9814360
4881177
2026-06-16T06:11:12Z
Sayonzei
40728
9814360
wikitext
text/x-wiki
==德語==
===詞源===
{{ety|de|:af|be-|strahlen}}
{{prefix|de|be|strahlen}}
===發音===
* {{IPA|de|/bəˈʃtʁaːlən/}}
* {{audio|de|De-bestrahlen.ogg|a=柏林}}
===動詞===
{{de-verb}}
# [[照耀]],[[照射]]
# {{lb|de|醫學}} [[放射]][[治療]]
====變位====
{{de-conj}}
====相關詞彙====
* {{l|de|Bestrahlung}}
===延伸閱讀===
* {{R:de:DWDS}}
* {{R:de:UniLeipzig}}
* {{R:de:Duden}}
astqrasf63e8n1rge2iv4lxzng78pcb
doppeldeutig
0
772364
9814563
4918910
2026-06-16T07:01:29Z
Sayonzei
40728
9814563
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪç/}} {{qualifier|標準}}
* {{audio|de|De-doppeldeutig.ogg|a=柏林}}
* {{IPA|de|/-ˌdɔɪ̯tɪk/}} {{qualifier|德國南部、奧地利和瑞士的常見形式}}
* {{audio|de|De-doppeldeutig2.ogg|a=柏林}}
* {{hyphenation|de|dop|pel|deu|tig}}
===形容詞===
{{de-adj|comp}}
# [[模棱兩可]]的,[[意義]][[含糊]]的,可以有[[兩]]種[[解釋]]方式的
====變格====
{{de-adecl|comp}}
===延伸閱讀===
* {{R:de:Duden}}
b6ittd3fi3thkn73sqjh832ltjcx6hb
schemenhaft
0
780106
9814515
5024427
2026-06-16T06:52:44Z
Sayonzei
40728
9814515
wikitext
text/x-wiki
==德語==
===詞源===
{{ety|de|:af|Schemen<t:shadow>|-haft}}
{{suffix|de|Schemen|haft|gloss1=模糊的輪廓;幻影}}
===發音===
* {{IPA|de|/ˈʃeːmən/}}
* {{audio|de|De-schemenhaft.ogg|a=柏林}}
===形容詞===
{{de-adj|comp}}
# [[模糊]]的,[[隱約]]的;[[幻影]]般的
====變格====
{{de-adecl|comp}}
===延伸閱讀===
* {{R:de:DWDS}}
* {{R:de:UniLeipzig}}
242kkoski2djes731dyht4ua70gzv3t
leuchtend
0
796169
9814332
4969848
2026-06-16T06:01:42Z
Sayonzei
40728
9814332
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈlɔɪ̯çtn̩t/}}
* {{audio|de|De-leuchtend.ogg|a=柏林}}
===分詞===
{{head|de|現在分詞}}
# {{present participle of|de|leuchten}}
===形容詞===
{{de-adj|comp}}
# [[閃亮]]的,[[明亮]]的
# [[鮮艷]]的,[[明艷]]的
====變格====
{{de-adecl|comp}}
====近義詞====
* {{l|de|strahlend}}
====反義詞====
* {{l|de|nichtleuchtend}}
===副詞===
{{de-adv}}
# [[明亮]]地
#: {{syn|de|blendend|strahlend}}
===延伸閱讀===
* {{R:de:Duden}}
bem8x60dxipo4ov8wxobi2lapqr0an5
strahlen
0
798363
9814359
9567782
2026-06-16T06:08:38Z
Sayonzei
40728
9814359
wikitext
text/x-wiki
{{also|Strahlen}}
==德語==
===詞源===
起於16世紀,源自 {{affix|de|Strahl|-en}}。
===發音===
* {{IPA|de|/ˈʃtraːlən/|[ˈʃtʁaː.lən]|[ˈʃtʁaː.l̩n]}}
* {{audio|de|De-strahlen.ogg|a=柏林}}
* {{hyphenation|de|strah|len}}
* {{homophones|de|Strahlen|Straelen}}
===動詞===
{{de-verb}}
# [[閃爍]],[[閃光]]
# [[輻射]],[[放射]]
# [[洋溢]],[[煥發]]
#: {{uxi|de|Du '''strahlst''' vor Freude.|你的脸上'''洋溢着'''幸福的光芒。}}
====變位====
{{de-conj}}
====派生詞彙====
{{col|de|Strahlen|Strahler|Strahlung|Strahlerei|strahlend|bestrahlen|verstrahlen|abstrahlen|anstrahlen|ausstrahlen|einstrahlen|glasstrahlen|sandstrahlen
|erstrahlen
}}
===延伸閱讀===
* {{R:de:DWDS}}
* {{R:de:UniLeipzig}}
* {{R:de:Duden}}
* {{R:de:OpenThesaurus}}
34pbntv1lat5yndz8f1rjizwrxchljy
losgelassen
0
798435
9814230
4972443
2026-06-16T04:34:44Z
Sayonzei
40728
9814230
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsɡəˌlasn̩/}}
* {{audio|de|De-losgelassen.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|loslassen}}
====變格====
{{de-adecl}}
5pf0h7m2p03sjql2kooocoq7d0ja2oj
mehrdeutig
0
804258
9814579
4977732
2026-06-16T07:04:17Z
Sayonzei
40728
9814579
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪç/}} {{qualifier|標準}}
* {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪk/}} {{qualifier|德國南部、奧地利和瑞士的常見形式}}
* {{audio|de|De-mehrdeutig.ogg|a=柏林}}
* {{audio|de|De-mehrdeutig2.ogg|a=柏林}}
* {{hyphenation|de|mehr|deu|tig}}
===形容詞===
{{de-adj|comp}}
# [[多義]]的
# [[模棱兩可]]的,[[意義]][[含糊]]的
#: {{ant|de|eindeutig}}
====變格====
{{de-adecl|comp}}
====下位詞====
* {{l|de|zweideutig}}、{{l|de|doppeldeutig}}
====派生詞彙====
* {{l|de|Mehrdeutigkeit}}
===延伸閱讀===
* {{R:de:Duden}}
1dd9axpxxpngm4fs9wpzt3ckb1cr4wz
nebelig
0
812552
9814466
6040821
2026-06-16T06:45:03Z
Sayonzei
40728
9814466
wikitext
text/x-wiki
==德語==
===其他形式===
* {{alter|de|neblig}}
===詞源===
{{inh+|de|gmh|nebelic}},{{inh+|de|goh|nebulīg}}。等價於 {{af|de|Nebel|-ig}}。
===發音===
* {{IPA|de|/ˈneːbəlɪç/}} {{qualifier|標準}}
* {{IPA|de|/ˈneːbəlɪk/}} {{qualifier|德國南部、奧地利和瑞士的常見形式}}
* {{audio|de|De-nebelig.ogg|a=柏林}}
* {{audio|de|De-nebelig2.ogg|a=柏林}}
* {{hyphenation|de|ne|be|lig}}
===形容詞===
{{de-adj|comp}}
# [[起霧]]的,[[霧蒙蒙]]的
# {{lb|de|比喻}} [[模糊]]的
====變格====
{{de-adecl|comp}}
====相關詞彙====
* {{l|de|Nebel}}
* {{l|de|nebelhaft}}
====參見====
* {{l|de|nebulös}}
===延伸閱讀===
* {{R:de:DWDS}}
* {{R:de:Duden}}
===異序詞===
* {{anagrams|de|a=beegiln|Belgien|Giebeln|neblige}}
bodsqvm78o4nnb88bb939gyv5wg125u
9814467
9814466
2026-06-16T06:45:17Z
Sayonzei
40728
/* 形容詞 */
9814467
wikitext
text/x-wiki
==德語==
===其他形式===
* {{alter|de|neblig}}
===詞源===
{{inh+|de|gmh|nebelic}},{{inh+|de|goh|nebulīg}}。等價於 {{af|de|Nebel|-ig}}。
===發音===
* {{IPA|de|/ˈneːbəlɪç/}} {{qualifier|標準}}
* {{IPA|de|/ˈneːbəlɪk/}} {{qualifier|德國南部、奧地利和瑞士的常見形式}}
* {{audio|de|De-nebelig.ogg|a=柏林}}
* {{audio|de|De-nebelig2.ogg|a=柏林}}
* {{hyphenation|de|ne|be|lig}}
===形容詞===
{{de-adj|comp}}
# [[起霧]]的,[[霧濛濛]]的
# {{lb|de|比喻}} [[模糊]]的
====變格====
{{de-adecl|comp}}
====相關詞彙====
* {{l|de|Nebel}}
* {{l|de|nebelhaft}}
====參見====
* {{l|de|nebulös}}
===延伸閱讀===
* {{R:de:DWDS}}
* {{R:de:Duden}}
===異序詞===
* {{anagrams|de|a=beegiln|Belgien|Giebeln|neblige}}
n5hsniw1qq5qjynpfoz1mkwdj97bt7p
neblig
0
812818
9814483
6040824
2026-06-16T06:47:18Z
Sayonzei
40728
9814483
wikitext
text/x-wiki
==德語==
===其他形式===
* {{alter|de|nebelig}}
===詞源===
{{inh+|de|gmh|nebelic}},{{inh+|de|goh|nebulīg}}。等價於 {{af|de|Nebel|-ig}}。
===發音===
* {{IPA|de|/ˈneːblɪç/}} {{qualifier|標準}}
* {{IPA|de|/ˈneːblɪk/}} {{qualifier|德國南部、奧地利和瑞士的常見形式}}
* {{audio|de|De-neblig.ogg|a=柏林}}
* {{audio|de|De-neblig2.ogg|a=柏林}}
* {{hyphenation|de|neb|lig}}
===形容詞===
{{de-adj|comp}}
# [[起霧]]的,[[霧濛濛]]的
# {{lb|de|比喻}} [[模糊]]的
====變格====
{{de-adecl|comp}}
====派生詞彙====
* {{l|de|Nebligkeit}}
===延伸閱讀===
* {{R:de:DWDS}}
* {{R:de:Duden}}
oa30tses7hnatwyil7on5r2bfd33dzp
unmissverständlich
0
813982
9814531
5048029
2026-06-16T06:56:02Z
Sayonzei
40728
9814531
wikitext
text/x-wiki
==德語==
===其他形式===
* {{alter|de|unmißverständlich||pre-1996}}
===詞源===
{{ety|de|:af|un-|missverständlich}}
源自 {{prefix|de|un|missverständlich}}。
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪç/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪç/}}
* {{audio|de|De-unmissverständlich.ogg|a=柏林}}
* {{audio|de|De-unmissverständlich2.ogg|a=柏林}}
===形容詞===
{{de-adj|comp}}
# [[明確]]的,不[[含糊]]的
# 不會產生[[誤解]]的
# [[毋庸置疑]]的
====變格====
{{de-adecl|comp}}
====派生詞彙====
* {{l|de|Unmissverständlichkeit}}
===延伸閱讀===
* {{R:de:DWDS}}
* {{R:de:UniLeipzig}}
* {{R:de:Duden}}
9imkmb73wu8yl9cbze6841pjk3yczbh
unmißverständlich
0
813985
9814547
5048037
2026-06-16T06:57:57Z
Sayonzei
40728
9814547
wikitext
text/x-wiki
==德語==
===形容詞===
{{de-adj|comp}}
# {{alternative spelling of|de|unmissverständlich}}
====用法說明====
* {{U:de:deprecated spelling|1996}}
====變格====
{{de-adecl|comp}}
5v74m0fte5sb9qthhw0904k6gd21325
vernebeln
0
818488
9814411
5051681
2026-06-16T06:22:30Z
Sayonzei
40728
9814411
wikitext
text/x-wiki
==德語==
===詞源===
{{inh+|de|gmh|nebelen}}、{{m|gmh|nibelen}},{{inh+|de|goh|nibulen}}。等價於 {{confix|de|ver|Nebel|n}}。
===發音===
* {{IPA|de|[fɛɐ̯ˈneːbl̩n]|[fɛɐ̯ˈneːbəln]}}
* {{audio|de|De-vernebeln.ogg|a=柏林}}
* {{hyphenation|de|ver|ne|beln}}
===動詞===
{{de-verb}}
# 使[[籠罩]]在[[霧]]中,使蒙上[[煙霧]]
# {{lb|de|比喻}} [[掩蓋]]
# [[霧化]]
====變位====
{{de-conj}}
====派生詞彙====
* {{l|de|Vernebeln}}
* {{l|de|Vernebelung}}
====相關詞彙====
* {{l|de|verdunkeln||使變暗;遮蔽,掩蓋}}、{{l|de|verfinstern||變昏暗,變陰沉}}、{{l|de|vermehren||增加,滋生}}
* {{l|de|Nebel||霧}}、{{l|de|nebeln||}}
* {{l|de|Nebelung||十一月}} {{qualifier|棄用}}
===延伸閱讀===
* {{R:de:UniLeipzig}}
* {{R:de:Grimm}}
* {{R:de:DWDS}}
* {{R:de:Duden}}
2g218kcj4li8p0u1rqvo2iieu1pl8j8
vernebelt
0
818491
9814412
1896171
2026-06-16T06:22:43Z
Sayonzei
40728
9814412
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩t/}}
* {{audio|de|De-vernebelt.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|vernebeln}}
====變格====
{{de-adecl}}
imk0g8uecl1pzz32cr886uz8mobt3zw
widersprüchlich
0
826259
9814595
5056380
2026-06-16T07:05:44Z
Sayonzei
40728
9814595
wikitext
text/x-wiki
==德語==
===詞源===
{{ety|de|:af|Widerspruch|-lich}}
{{suffix|de|Widerspruch|lich}}
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪç/}}
* {{audio|de|De-am widersprüchlichsten.ogg|a=柏林}}
* {{audio|de|De-widersprüchlich.ogg|a=柏林}}
===形容詞===
{{de-adj|comp}}
# [[矛盾]]的,不[[一致]]的
====變格====
{{de-adecl|comp}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
7296bsll7ujmlun59grd8yhzbapgrb0
пророк
0
852158
9814371
9540309
2026-06-16T06:12:46Z
Apisite
85347
+ 保加利亞語
9814371
wikitext
text/x-wiki
==保加利亞語==
===詞源===
{{inh+|bg|sla-pro|*prorokъ}}。
===發音===
* {{bg-pr|проро́к}}
===名詞===
{{bg-noun|проро́к|m}}
# [[先知]],[[預言家]]
====變格====
{{bg-ndecl|проро́к<>}}
==馬其頓語==
===詞源===
{{inh+|mk|sla-pro|*prorokъ}}。
===發音===
* {{mk-IPA}}
* {{audio|mk|LL-Q9296 (mkd)-Bjankuloski06-пророк.wav}}
===名詞===
{{mk-noun|m|adj=пророчки|f=пророчица}}
# [[先知]],[[預言家]]
====變格====
{{mk-decl-noun-m||пророц|p=1}}
{{C|mk|人}}
==俄語==
{{swp|lang=ru}}
===替代寫法===
* {{alt|ru|проро́къ||ru-PRO}}
===詞源===
{{inh+|ru|sla-pro|*prorokъ}}.
===發音===
* {{ru-IPA|проро́к}}
* {{audio|ru|Ru-пророк.ogg}}
===名詞===
{{ru-noun+|проро́к|a=an|f=проро́чица}}
# [[先知]],[[預言家]]
#: {{syn|ru|ора́кул|прови́дец|прорица́тель}}
#: {{uxi|ru|[[нет|Нет]] '''проро́ка''' [[в]] [[свой|своём]] [[отечество|оте́честве]]|在自己的國家,沒有人是先知。}}
====變格====
{{ru-noun-table|проро́к|a=an}}
====相關詞====
{{rel3|ru
|проро́ческий
|проро́чество
|пророчить
}}
===延伸閱讀===
* {{R:ru:BTS}}
{{C|ru|宗教|男性}}
==塞爾維亞-克羅地亞語==
===詞源===
{{inh+|sh|sla-pro|*prorokъ}}。
===名詞===
{{sh-noun|про̀рок|m-in}}
# [[先知]],[[預言家]]
====變格====
{{sh-decl-noun|sc=Cyrl
|пророк|пророци
|пророка|пророка
|пророку|пророцима
|пророк|пророке
|пророче|пророци
|пророку|пророцима
|пророком|пророцима
}}
====相關詞====
* {{l|sh|sc=Cyrl|про̀рећи}}
{{C|sh|宗教|人}}
==烏克蘭語==
{{swp|lang=uk}}
===詞源===
{{bor+|uk|cu|пророкъ}}<ref>{{R:uk:ESUM|volume=4|page=600}}</ref>,來自{{der|uk|sla-pro|*prorokъ}}。
===發音===
* {{uk-IPA|проро́к}}
* {{audio|uk|Uk-пророк.ogg}}
===名詞===
{{uk-noun|проро́к<pr>|f=проро́чиця}}
# [[先知]],[[預言家]]
#: {{syn|uk|профе́т}}
====變格====
{{uk-ndecl|проро́к<pr>}}
====相關詞====
{{rel3|uk
|проро́чий
|{{l|uk|пророкува́ти|g=impf}}
|{{l|uk|проро́цтво|g=n}}
}}
===來源===
<references/>
===延伸閱讀===
* {{R:uk:SUM-11}}
* {{R:uk:Horokh}}
* {{R:uk:Kyiv}}
* {{R:uk:Slovnyk}}
{{C|uk|宗教|男性}}
460q7jvmeodgahrptvpmjq1qhe328ip
産業
0
956680
9814682
9087750
2026-06-16T11:01:40Z
Jiba1219
110530
/* 日語 */
9814682
wikitext
text/x-wiki
==漢語==
{{zh-see|產業|v}}
==日語==
{{ja-kanjitab|さん|ぎょう|yomi=kanon}
===發音===
{{ja-pron|さんぎょう|acc=0|acc_ref=DJR,NHK}}
===名詞===
{{ja-noun|さんぎょう|hhira=さんげふ}}
# [[產業]]
====派生詞====
* {{ja-r|産%業%医|さん%ぎょう%い}}
* {{ja-r|産%業スパイ|さん%ぎょう スパイ}}
* {{ja-r|産業 革命|さんぎょう かくめい}}
* {{ja-r|産%業 廃%棄%物|さん%ぎょう はい%き%ぶつ}}
===參考資料===
<references/>
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=산업}}
# {{hanja form of|산업}}
bk2ws9gnxg7yh8qyj0pf4hl039gf2xm
9814683
9814682
2026-06-16T11:01:59Z
Jiba1219
110530
/* 日語 */
9814683
wikitext
text/x-wiki
==漢語==
{{zh-see|產業|v}}
==日語==
{{ja-kanjitab|さん|ぎょう|yomi=kanon}}
===發音===
{{ja-pron|さんぎょう|acc=0|acc_ref=DJR,NHK}}
===名詞===
{{ja-noun|さんぎょう|hhira=さんげふ}}
# [[產業]]
====派生詞====
* {{ja-r|産%業%医|さん%ぎょう%い}}
* {{ja-r|産%業スパイ|さん%ぎょう スパイ}}
* {{ja-r|産業 革命|さんぎょう かくめい}}
* {{ja-r|産%業 廃%棄%物|さん%ぎょう はい%き%ぶつ}}
===參考資料===
<references/>
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=산업}}
# {{hanja form of|산업}}
c8idbzm886c2s83fmhh13499rwxvpm3
産地
0
956739
9814661
9019791
2026-06-16T10:18:03Z
Jiba1219
110530
/* 日语 */
9814661
wikitext
text/x-wiki
==漢語==
{{zh-see|產地|v}}
==日语==
{{ja-kanjitab|さん|ち|yomi=kanon}}
===發音===
{{ja-pron|さんち|acc=1|acc_ref=DJR,NHK}}
===名词===
{{ja-noun|さんち}}
# [[產地]]
# [[出生地]]
====衍生詞====
* {{ja-r|産%地 直%売|さん%ち ちょく%ばい}}
===參考資料===
<references/>
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=산지}}
# {{hanja form of|산지}}
8ux4c6gijfqalgvrvtwdinxxl96a0zn
内親王
0
959859
9814643
7740213
2026-06-16T09:54:45Z
Sayonzei
40728
9814643
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|yomi=goon|ない|しん|おう|k3=のう}}
{{swp|ja:}}
===詞源===
{{pre|ja|内|親王|tr1=nai-|tr2=shinnō|t1=(宮殿)內|pos2=皇帝之兄弟或兒子}}。{{ja-renjō|ō|nō|王|sort=ないしんのう}}
===發音===
{{ja-pron|ないしんのう|acc=5}}
===名詞===
{{ja-noun|ないしんのう|hhira=ないしんわう}}
# {{lb|ja|historical}} [[律令制]]下稱[[天皇]]的[[姊妹]]或[[皇女]]
# {{w|明治時代}}以後稱[[天皇]]的[[嫡出]][[皇女]]及男系嫡出[[皇孫女]]
#: {{syn|ja|内の御子|内の姫御子|姫御子|姫宮|tr=uchi no miko|tr2=uchi no himemiko|tr3=himemiko|tr4=himemiya}}
#: {{ja-x|愛%子 内%親%王|^あい%こ ^ない%しん%のう|{{w|愛子內親王}}}}
====參見====
* {{ja-r|親%王|しん%のう|pos=男性}}
* {{ja-r|女%王|じょ%.おう|pos=没有内亲王封号的皇族女子}}
* {{ja-r|内%親|ない%しん}}
* {{ja-r|姫|ひめ}}
* {{ja-r|皇%女|こう%じょ}}
===參考資料===
* {{R:Kanjipedia Kotoba|0005379700}}
{{C|ja|職業|君主制|日本|女人|sort=ないしんのう}}
5m48i6jbuyke3ryptpdvt509q5y9sl8
背水一戰
0
1311404
9814640
8431095
2026-06-16T09:17:40Z
Tony85poon
62011
/* 漢語 */ wp
9814640
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=背水一战|type=211}}
{{wp|背水一战 (消歧义)}}
===發音===
{{zh-pron
|m=bèishuǐ-一zhàn
|c=bui3 seoi2 jat1 zin3
|cat=cy
}}
===成語===
{{head|zh|成語}}
# {{lb|zh|比喻義}} 抱著[[必死]]的[[決心]],[[奮戰]][[取勝]]
#: {{zh-x|今天 這 場 比賽 一定 要 贏,大家 要 背水一戰 了!}}
===參見===
* {{zh-l|背水陣}}
===參考資料===
* {{R:zh:cbgycdxdb|15192}}
7m9eou5h1w27i6m0dcyce20hojrd8av
9814642
9814640
2026-06-16T09:48:20Z
Sayonzei
40728
/* 漢語 */
9814642
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=背水一战|type=211}}
===詞源===
出自漢初名將{{w|韓信}}在{{w|井陘之戰}}的戰術。
===發音===
{{zh-pron
|m=bèishuǐ-一zhàn
|c=bui3 seoi2 jat1 zin3
|cat=cy
}}
===成語===
{{head|zh|成語}}
# {{lb|zh|比喻義}} 抱著[[必死]]的[[決心]],[[奮戰]][[取勝]]
#: {{zh-x|今天 這 場 比賽 一定 要 贏,大家 要 背水一戰 了!}}
===參見===
* {{zh-l|背水陣}}
===參考資料===
* {{R:zh:cbgycdxdb|15192}}
knckxs5n3tb6503yx55z3tx6x8dpdq8
ass
0
1337971
9813785
9712959
2026-06-15T14:01:17Z
TongcyDai
53191
9813785
wikitext
text/x-wiki
{{also|Appendix:"ass"的變體}}
==跨語言==
===符號===
{{mul-symbol}}
# {{ISO 639|3}}
===參見===
* {{langcat}}
==英语==
{{wikipedia|lang=en}}
===发音===
* {{enPR|ăs}}, {{IPA|en|/æs/}}
* {{audio|en|LL-Q1860 (eng)-Back ache-ass.wav|a=UK}}
* {{audio|en|en-us-ass.ogg|a=US}}
* {{rhymes|en|æs|s=1}}
===词源 1===
源自{{inh|en|enm|asse}},源自{{inh|en|ang|assa}},逆构自{{m|ang|assen|t=母驴}},源自{{der|en|cel}}(对比{{cog|sga|asan}}、{{cog|oco|asen}}),源自{{der|en|la|asinus}}。取代了{{cog|ang|esol}},其源自{{cog|gmw-pro|*asil}},亦借自同一个拉丁语词。
====名词====
{{en-noun}}
[[File:Somali Wild Ass.JPG|thumb|Somali wild '''ass''']]
# [[驴]]
#: {{syn|en|donkey}}
#* {{RQ:Browne Pseudodoxia Epidemica|edition=2nd|book=6|chapter=Of the Same [''i.e.'', the Blacknesse of Negroes]|page=282|passage=Thus the '''Aſſe''' having a peculiar mark of a croſſe made by a black liſt down his back, and another athwart, or at right angles down his ſhoulders; common opinion aſcribes this figure unto a peculiar ſignation; ſince that beaſt had the honour to bear our Saviour on his back.}}
#* {{quote-book|1=en|year=1972|author=Parliament of the United Kingdom|title=Road Traffic Act 1972|chapter=Part I, section 20(3)|url=https://www.legislation.gov.uk/ukpga/1972/20/pdfs/ukpga_19720020_en.pdf|page=14|text=In this section "animal" means any horse, cattle, '''ass''', mule, sheep, pig, goat or dog.}}
# {{lb|en|俚语|较为|_|粗俗}} [[蠢货]]
#: {{syn|en|fool|idiot}}
#: {{ux|en|That new kid left the cap off the syrup bottle again! What an '''ass'''.|那个新来的小孩又没盖糖浆瓶的盖子,真是'''脑袋有点问题'''。}}
#* {{RQ:Doyle Lost World|passage=I had sprung to my feet. I was speaking, and yet I had prepared no words. Tarp Henry, my companion, was plucking at my skirts and I heard him whispering, "Sit down, Malone! Don't make a public '''ass''' of yourself."}}
# {{lb|en|printing|俚语|弃用}} [[排版]][[工人]]
#: {{syn|en|compositor}}
#* {{quote-book|en|year=1841|author=[[w:en:William Savage (printer)|William Savage]]|title=Dictionary of the Art of Printing|page=24|url=https://archive.org/details/bub_gb_S_s1AQAAMAAJ/page/24/mode/2up|text=Sometimes by way of joke, and sometimes by way of irritation, compositors are called '''Asses''' by the pressmen.}}
=====下义词=====
* {{sense|驴}} {{l|en|donkey}}、{{l|en|onager}}、{{l|en|wild ass}}
=====衍生词汇=====
{{der3|en|Buridan's ass|the law is an ass|wild ass|zebrass}}
=====相关词汇=====
* {{l|en|asinine}}
===词源 2===
{{m|en|arse}}的北美变体。最终源自{{inh|en|enm|ars}}、{{m|enm|ers}},源自{{inh|en|ang|ærs}}、{{m|ang|ears}},源自{{inh|en|gmw-pro|*ars}},源自{{inh|en|gem-pro|*arsaz}}(对比{{cog|goh|ars}}({{cog|de|Arsch}})、{{cog|non|ars}}、{{cog|ofs|ers}}),源自{{inh|en|ine-pro|*h₃érsos}}(对比{{cog|grc|ὄρρος}})。
有不少人认为该词曾为委婉词,但它其实原是为了反映舌尖音(尤其是{{IPAchar|/s/}})前{{IPAchar|/ɹ/}}被合并的[[发音拼写]](更早期的形式{{m|en|arse}}仍通用于英国、澳大利亚、新西兰等地),该现象在{{w|中古英语}}起的非标准口语中就有出现。该现象与之后出现R音脱落不同,因为{{IPAchar|/ɹ/}}在能影响其前驱音之前就已经脱落。该现象影响到的其他词(部分词保留了两种形式且词义有所不同)有{{m|en|cuss}}←{{m|en|curse}}、{{m|en|gash}}←{{m|en|garsh}}、{{m|en|bass||鲈鱼}}←{{m|en|barse}}、{{m|en|bust}}←{{m|en|burst}}、{{m|en|passel}}←{{m|en|parcel}},参见[[:en:Category:English terms with assimilation of historic /ɹ/]]。
====形容词====
{{en-adj|-}}
# {{lb|en|粗俗|俚语}} [[差劲]]的,[[不行]]的,[[垃圾]]的
#* {{quote-web|en|url=https://www.dallasnews.com/sports/2019/02/06/former-texas-am-qb-nick-starkel-breaks-down-old-twitter-beef-with-tate-martell/|work=Dallas Morning News|passage=On a recent episode of "The Justin Dunning Podcast," Starkel shared his thoughts on Martell, a former Ohio State quarterback, saying "he's '''ass''' my dude" in reference to Starkel.|title=Former Texas A&M QB Nick Starkel breaks down old Twitter beef with Tate Martell|date=2019-02-05|author=Alex Miller}}
#* {{quote-web|en|url=https://musketfire.com/2021/02/21/patriots-cam-newton-exchange-teenager-video/|work=Fansided|passage=For some reason, the teenager thought it’d be a good idea to criticize Newton and say he's "'''ass'''" and that he’s "about to be poor" because he's a free agent.|title=Patriots: Cam Newton getting disrespected by a teenager is everything that’s wrong with society|date=2021-02-21|author=Thomas Carannante}}
#* {{quote-web|en|url=https://www.espn.com/nfl/story/_/id/32473036/what-learned-arizona-cardinals-quarterback-kyler-murray-watching-twitch|work=ESPN|passage="You're so '''ass'''," Murray says to another player.|title=What we learned about Arizona Cardinals quarterback Kyler Murray by watching him on Twitch|date=2021-10-28|author=Josh Weinfuss}}
====名词====
{{en-noun|~}}
# {{senseid|en|屁股}} {{lb|en|粗俗|俚语|可数|and|不可数}} [[屁股]]
#: {{syn|en|Thesaurus:buttocks}}
# {{lb|en|粗俗|俚语|可数|and|不可数}} [[屁眼]]
#* {{RQ:William Burroughs Naked Lunch|page=81|passage=Train compartment: two sick young junkies on their way to Lexington tear their pants down in convulsions of lust. One of them soaps his cock and works it up the other's '''ass''' with a corkscrew motion.}}
# {{lb|en|粗俗|俚语|人的[[物化]]|不可数}} [[性交]][[对象]] {{gl|粗俗地强调了其身体而非其人格}}
#: {{syn|en|poontang|poon|punani|pussy|tail|tang|Thesaurus:copulation}}
#: {{ux|en|I'm going to go down to the bar and try to get me some '''ass'''.|我准备去酒吧找个'''屄'''来肏。}}
#* {{quote-song|en|author=w:Joni Mitchell|year=1971|album=Blue|title=Blue|passage=Acid, booze, and '''ass''' / Needles, guns, and grass}}
# {{lb|en|粗俗|俚语|不可数}} [[讨厌]]的东西,[[差劲]]的东西,[[垃圾]]
#: {{uxi|en|I feel like '''ass''' today.|今天真他妈'''不爽'''。}}
#: {{uxi|en|This room smells like '''ass'''.|这房间'''臭死了'''。}}
#: {{uxi|en|What a bunch of '''ass'''.|这都什么'''乱七八糟'''的。}}
# {{senseid|en|自己}} {{lb|en|粗俗|俚语|转喻意|人的[[物化]]|可数}} [[家伙]],[[人]] {{gl|能指代自己。可指代身体,安全,或者比喻性地指代工作,将来等}}
#: {{cot|en|{{l|en|face}}|{{l|en|hide}}}}
#: {{ux|en|Get your lazy '''ass''' out of bed!|赶紧起床你这个懒狗!}}
#: {{ux|en|We risk our '''asses''' out there every day.|我们每天都冒生命危险。}}
#: {{ux|en|I'ma get medieval on your '''ass'''!|看我不好好修理'''你'''一顿!}}
=====用法说明=====
* 当使用转喻意,其给整个句子带来负面色彩,带有恼怒的语气:
** “{{lang|en|he has trouble getting his ass up in the morning}}”比“{{lang|en|he has trouble getting up in the morning}}”语气更重,更带负面色彩。
* 不一定表示对被指代人的不赞成:
** “{{lang|en|And who do you think has to clean this mess up? My ass does!}}”(“你觉得是谁要来擦屁股?是他妈的老子!”这句话没有体现对自己的不赞同,而表示对搞砸的人的不赞同)
*** (可能会体现一定的厌烦)
* 这一用法粗俗,因此仅限于非正式语域,其用于正式上下文中有一定的冒犯意。
* 其词义的内涵在于通过使用身体的一部分转喻整个人,来物化一个人(甚至包括指自己的时候),暗中强调了其身体而非其人格(亦从该观点对比{{m|en|hide|id=self, metonymically|watch his hide|看好他,保护好他}}、{{m|en|face|id=self, metonymically|show his face|露面}}、{{m|en|whatshisface#Etymology|what's-his-face|无名氏}}、{{m|en|meatbag}}或{{m|en|crackhead}})。
* 其变格形式在语法上有代词功能:
** {{m|en|my ass}} = {{m|en|I}}、{{m|en|me}}、{{m|en|myself}}
** {{m|en|your ass}} = {{m|en|you}}、{{m|en|yourself}}
** his ass = {{m|en|he}}、{{m|en|him}}、{{m|en|himself}}
** her ass = {{m|en|she}}、{{m|en|her}}、{{m|en|herself}}
** your asses = {{m|en|y'all}}、{{m|en|y'all}}、{{m|en|yourselves}}
** their asses = {{m|en|they}}、{{m|en|them}}、{{m|en|themselves}}
=====衍生词汇=====
{{der3|en
|assage
|[[ass-backwards]], [[ass backward]], [[ass-backward]]
|ass bandit
|[[ass clown]], [[assclown]]
|ass crack
|assfuck
|assgasm
|assgrab
|asshat
|[[asshole]], [[ass hole]]
|asshood
|ass in a sling
|ass kicking
|ass kissing
|assle
|ass-licker
|assmonkey
|ass over teakettle
|assrun
|bare-assed
|big-ass
|blow it out one's ass
|bust ass
|bust ass cold
|bust one's ass
|[[dumbass]], [[dumb ass]], [[dumb-ass]]
|[[fatass]], [[fat-ass]]
|get one's ass in gear
|give a rat's ass
|[[half-assed]], [[half-ass]], [[half ass]]
|[[hardass]], [[hard-ass]], [[hard-assed]]
|haul ass
|her ass
|his ass
|horse's ass
|horseshoe up one's ass
|[[kick ass]], [[kick-ass]], [[kickass]]
|[[kiss ass]], [[kiss-ass]]|kiss my ass
|kiss one's ass goodbye|know one's ass from a hole in the ground
|laugh one's ass off
|my ass
|pain in the ass
|piece of ass
|pop a cap in someone's ass
|put one's ass on the line
|quarter-assed
|shake one's ass
|[[smart ass]], [[smart-ass]]
|[[someone's ass off]], [[one's ass off]]
|stick up one's ass
|take it up the ass
|their ass
|their asses
|whoop ass
|[[wiseass]], [[wise-ass]]
|[[work someone's ass off]], [[work one's ass off]]
|your ass
|your asses
|piss out one's ass|Teck's ass|Tex-ass|ass backwards|ass beating|ass breath|ass call|ass catch|ass cheeks|ass crack of dawn|ass eating|ass floss|ass guard|ass juice|ass kisser|ass licker|ass pounding|ass pull|ass sucker|ass to mouth|ass-breath|ass-kicking|ass-kisser|ass-kissing|ass-licking|ass-pull|ass-rape|bad ass|bad-ass|bee up one's ass|bet one's ass|big ass|bitch-ass|bite my ass|bite my shiny metal ass|blow smoke up someone's ass|bomb-ass|break ass|bubble ass|bug up one's ass|bust a cap in someone's ass|bust someone's ass|candy-ass|cat's ass|cottage cheese ass|cover someone's ass|cracker-ass|crazy-ass|die in the ass|drag ass|duck's ass|eat ass|eating ass|fake-ass|fly-ass|gay-ass|get off one's ass|get one's ass handed to one|get one's ass into gear|get up someone's ass|gnat's ass|grab ass|grab-ass|grassy ass|grown-ass|have one's ass handed to one|have one's head up one's ass|he-ass|jack-ass|jenny-ass|jerk ass|jerk-ass|jive-ass|kick ass and take names|kick someone's ass|kick up the ass|kiss someone's ass|know one's ass from one's elbow|know the difference between one's ass and a hole in the ground|know the difference between one's ass and one's elbow|lard-ass|lazy ass|lazy-ass|lick someone's ass|light someone's ass up|like ass|make an ass of|no-good ass|one's ass is grass|open a can of whoop ass|open up a can of whoop ass|out the ass|pain in one's ass|pickle up one's ass|piss out of one's ass|pole up one's ass|pull out of one's ass|punk-ass|put foot to ass|put one's foot in someone's ass|put one's foot up someone's ass|raggedy-ass|ride someone's ass|rip ass|sad ass|sell one's ass|she-ass|shit ass|shitty-ass|short-ass|shove it up your ass|show one's ass|sick ass|sick-ass|sit on one's ass|sit one's ass down|sketch-ass|slap my ass and call me Judy|slap my ass and call me Sally|stank-ass|strange-ass|suck ass|suck-ass|swamp ass|take one's tongue out of someone's ass|talk out of one's ass|talk out one's ass|talk through one's ass|think the sun shines out of someone's ass|tight as a duck's ass|tits and ass|up one's own ass|up the ass|up to one's ass in alligators|watch one's ass|weird-ass|whoop-ass|with one's thumbs up one's ass|assface|assbutt|buttass|assfucker|asswipe|assholery|asshattery|assclownery|assholic|assholism|assholedom |assholey|asshatty|assholehood|assbag|assholio |assbucket |lameass|assholeness|assfuck |assfucker|sorry ass|stick in one’s ass|asshead|assnose|half-ass|half-arsed|assbrain}}
====助词====
{{head|en|助詞}}
# {{synonym of|en|-ass|pos=形容词强调助词}}
#: {{ux|en|That was one big '''ass''' fish!|那鱼好'''他妈'''大!}}
#: {{ux|en|That's an expensive '''ass''' car!|那辆车真'''他妈'''贵!}}
===延伸阅读===
* {{cite-journal|author=Archibald A. Hill|year=1940|title=Early Loss of [r] before Dentals|journal=PMLA|volume=55|issue=2|pages=308-359|doi=10.2307/458450}}
* {{cite-journal|author=L. Sprague de Camp|authorlink=L. Sprague de Camp|year=1971|title=Arse and ass|journal=Journal of the International Phonetic Association|volume=1|issue=2|pages=79–80|doi=10.1017/S0025100300000281}}
===异序词===
* {{anagrams|en|a=ass|SAS|SSA|Sas}}
{{catlangname|en|詈語|3字母詞}}
{{topics|en|臀部|馬科動物|人}}
==德语==
===动词===
{{head|de|動詞變位形式}}
# {{standard spelling of|de|from=SLDE|aß}}
==拉特加莱语==
===词源 1===
源自{{inh|ltg|ine-bsl-pro|*aśís}}。同源词有{{cog|lv|ass}}和{{cog|lt|ašis}}。
====发音====
* {{ltg-IPA|ass'}}
* {{hyph|ltg|ass}}
====名词====
{{ltg-noun|f|aseite}}
# [[轴]]
=====变格=====
{{ltg-decl-noun/6|ass|oss}}
===词源 2===
{{nonlemma}}
====发音====
* {{ltg-IPA}}
* {{hyph|ltg|ass}}
====分词====
{{ltg-part|PrOP}}
# {{inflection of|ltg|byut||present|oblique|participle}}
===参考资料===
* {{R:ltg:Bukss:1973|page=131}}
==拉脱维亚语==
[[File:Train axle.jpg|200px|thumb|Vagona ass]]
[[File:Orienteta taisne.JPG|200px|thumb|Ass]]
===词源 1===
源自{{inh|lv|ine-bsl-pro|*aśís}},源自{{der|lv|ine-pro|*h₂eḱs-}}。原为i/n-词根,其在波罗的海地区变为了i-词根。<ref name="LEV">{{R:lv:LEV}}。</ref>
====发音====
* {{lv-IPA|as}}
{{audio|lv|lv-riga-ass.ogg}}
====名词====
{{lv-noun|f|6th}}
# [[轴]]
#: {{ux|lv|ratu '''ass'''|'''轴'''承|inline=1}}
#: {{ux|lv|vagona '''ass'''|车'''轴'''|inline=1}}
#: {{ux|lv|motocikla pakaļējā riteņa '''ass'''|摩托车的后车'''轴'''|inline=1}}
# {{lb|lv|mathematics}} [[轴]]
#: {{ux|lv|simetrijas, rotācijas '''ass'''|对称'''轴''',旋转'''轴'''|inline=1}}
#: {{ux|lv|zemes griešanās '''ass'''|地球的旋转'''轴'''|inline=1}}
#: {{ux|lv|koordinātu '''asis'''|坐标'''轴'''|inline=1}}
#: {{ux|lv|abscisu, ordinātu '''ass'''|x-、y-'''轴'''|inline=1}}
=====变格=====
{{lv-decl-noun|a|s|6th||s|s|extrawidth=-60}}
===词源 2===
与{{m|lv|ass||轴}}同源,原为对应一个人伸展手臂时的长度的度量单位(对比{{cog|ru|са́жень}})。<ref name="LEV"/>
====发音====
* {{lv-IPA|as}}
{{audio|lv|lv-riga-ass.ogg}}
====名词====
{{lv-noun|f|6th}}
# [[俄丈]] {{gl|俄罗斯旧制长度计量单位,约等于2.13[[米]]}}
#: {{ux|lv|jūras '''ass'''|'''英寻'''(约1.83米)|inline=1}}
# [[俄丈]] {{gl|俄罗斯测量木材的旧体积计量单位,约2-4[[立方米]]}}
#: {{ux|lv|divas '''asis''' malkas|2'''俄丈'''木材|inline=1}}
=====变格=====
{{lv-decl-noun|a|s|6th||s|s|extrawidth=-60}}
===词源 3===
源自早期形式{{m|lv|*asus}},源自{{inh|lv|bat-pro|*ašus}},源自{{der|lv|ine-pro|*h₂eḱ-||尖}}。带了附加后缀''*-ro'',同一词根亦产生了{{cog|ine-bsl-pro|*aśras||尖}},派生出拉脱维亚语方言词{{m|lv|asrs}}以及{{cog|lt|-}}同源词{{m|lt|aštrùs}},方言词{{m|lt|ašrùs}}。该词根还派生出带''ak''而非''as''的词(比如{{m|lv|akmens||石头}}、{{m|lv|akots||芒刺}}),可能是原始印欧语的方言变体产生的。拉脱维亚语中,先前的''u''-词根形容词(如{{m|lv|*asus}})被合并到了其他类别下,{{m|lv|*asus}}产生出了''o''-词根和''yo-''词根变体,它们后面成为了独立单词,{{m|lv|ass}}和{{m|lv|ašs}},且语义上有差异(比如亦对比{{m|lv|plats}}和{{m|lv|plašs}}或{{m|lv|dobs}}和{{m|lv|dobjš}})。其他同源词包括{{cog|cu|остръ|sc=Cyrs}}、{{cog|ru|о́стрый}}、{{cog|be|во́стры|sc=Cyrl}}、{{cog|uk|о́стрий|sc=Cyrl}}、{{m|uk|го́стрий|sc=Cyrl}}、{{cog|bg|о́стър|sc=Cyrl}}、{{cog|cs|ostrý}}、{{cog|pl|ostry}}、{{cog|gem-pro|*agjō}}({{cog|goh|ecka}}、{{m|goh|egga||边缘,尖角,尖端,刀刃}}、{{cog|de|Ecke}}、{{cog|sa|अश्रि|अश्रिः|角落,尖角,刃|tr=áśriḥ|sc=Deva}}、{{cog|grc|ἀκή||尖端}}、{{m|grc|ἄκρος||尖的}}、{{cog|la|ācer||尖的}}、{{m|la|aciēs||锋利;刀刃}}。<ref name="LEV"/>
====发音====
* {{lv-IPA|as}}
{{audio|lv|lv-riga-ass.ogg}}
====形容词====
{{lv-adj|as}}
# [[尖锐]]的,[[锋利]]的
#: {{ux|lv|'''ass''' nazis, zāģis, cirvis|'''锐利'''的刀,锯,斧|inline=1}}
#: {{ux|lv|'''ass''' īlens, ilknis|'''锐利'''的锥子,獠牙|inline=1}}
#: {{ux|lv|'''asa''' adata|'''尖'''针|inline=1}}
#: {{ux|lv|'''asi''' ragi, ilkņi|'''尖'''角,'''尖'''牙|inline=1}}
#: {{ux|lv|'''asas''' kalnu galotnes|'''陡峭'''的山顶|inline=1}}
#: {{ux|lv|'''ass''' zīmulis|'''尖锐'''的铅笔|inline=1}}
# (指身体部位或字体)尖的
#: {{ux|lv|'''asi''' elkoņi|'''弯'''的手肘|inline=1}}
#: {{ux|lv|'''asi''' vaigu kauli|'''尖锐'''的颧骨|inline=1}}
#: {{ux|lv|'''asas''' burtu formas rokrakstā||inline=1}}
# {{lb|lv|指植物}} [[尖]]的,有尖刺的
#: {{ux|lv|'''ass''' dadzis, paeglis, grīslis|'''尖'''蓟,'''尖锐'''的刺柏,'''尖锐'''的莎草|inline=1}}
#: {{ux|lv|'''asa''' zāle, nātre|'''尖'''树叶,'''尖锐'''的荨麻|inline=1}}
# {{lb|lv|指布料,皮肤等}} [[粗糙]]的
#: {{ux|lv|'''asa''' sejas āda|'''粗糙'''的面部肌肤|inline=1}}
#: {{ux|lv|'''ass''' linu dvielis|'''粗'''亚麻制的毛巾|inline=1}}
# [[刺激]][[感官]]的 {{gl|如辛辣等}}
#: {{ux|lv|'''asa''' mērce|'''辣'''酱|inline=1}}
#: {{ux|lv|'''asa''' dūmu smaka|'''刺鼻'''的烟雾气味|inline=1}}
#: {{ux|lv|'''ass''' ož pēc hlora|氯的'''刺鼻'''气味|inline=1}}
#: {{ux|lv|'''ass''' vējš|'''刺鼻'''的风|inline=1}}
#: {{ux|lv|'''asas''' sāpes|'''尖锐'''的疼痛|inline=1}}
#: {{ux|lv|'''ass''' klepus|'''重重'''的咳嗽|inline=1}}
# [[严厉]]的,[[不留情面]]的
#: {{ux|lv|'''asā''' balss|'''严厉'''的语气|inline=1}}
#: {{ux|lv|runāt '''asā''' tonī|用'''严厉'''的语气说话|inline=1}}
#: {{ux|lv|'''ass''' sarkasms|'''尖酸'''的讽刺|inline=1}}
#: {{ux|lv|'''ass''' pārmetumi|'''严厉'''的批评|inline=1}}
#: {{ux|lv|'''asa''' ķilda|'''凶猛'''的争吵|inline=1}}
#: {{ux|lv|'''asa''' mēle|'''尖酸刻薄'''的话语|inline=1}}
# [[清晰]]的,[[鲜明]]的
#: {{ux|lv|'''asas''' kontūras|'''鲜活'''的形象|inline=1}}
#: {{ux|lv|'''asi''' sejas vaibsti|'''鲜明'''的面部特征|inline=1}}
#: {{ux|lv|zīmēt '''asām''' līnijām|用'''清晰'''的线条作画|inline=1}}
# {{lb|lv|指问题}} [[尖锐]]的,[[重要]]的,[[严重]]的
#: {{ux|lv|'''asa''' problēma|'''严重'''的问题|inline=1}}
# [[锐利]]的,[[敏锐]]的
#: {{ux|lv|'''asa''' redze|'''敏锐'''的视觉|inline=1}}
#: {{ux|lv|'''ass''' prāts|'''清晰'''的头脑|inline=1}}
#: {{ux|lv|'''asa''' uztvere|'''敏锐'''的觉察力|inline=1}}
=====变格=====
{{lv-decl-adj|as|extrawidth=-100}}
=====近义词=====
* {{sense|尖锐}} {{l|lv|skaudrs}}
* {{sense|严厉,刻薄}} {{l|lv|raupjš}}、{{l|lv|rupjš}}、{{l|lv|negluds}}、{{l|lv|skarbs}}
=====反义词=====
* {{sense|尖锐}} {{l|lv|truls}}、{{l|lv|neass}}
* {{sense|严厉刻薄}} {{l|lv|gluds}}、{{l|lv|maigs}}、{{l|lv|mīksts}}
=====衍生词汇=====
* {{l|lv|asums}}
===参考资料===
<references />
{{topics|lv|簡單機械|觸覺|計量單位}}
==卢森堡语==
===动词===
{{head|lb|動詞變位形式}}
# {{infl of|lb|sinn||3|s|pres}}
==曼岛语==
===词源===
源自{{inh|gv|sga|ass}},{{m|sga|a|a|id=out of|t=自,离}}的阳性和中性单数形式,源自{{inh|gv|cel-pro|*exs}},源自{{inh|gv|ine-pro|*h₁eǵʰs||来自}}。对比{{cog|ga|as}}。
===副词===
{{head|gv|副詞}}
# [[出]]
===介词===
{{head|gv|介詞}}
# 从...中
====屈折====
{{gv-prep-infl
|1sg=assym
|2sg=assyd
|3sgm=ass
|3sgmem=assyn
|3sgf=assjee
|1pl=assdooin
|2pl=assdiu
|3pl=assdaue
}}
====衍生词汇====
* {{l|gv|ass y cheer}}
* {{l|gv|ass y hene}}
===代词===
{{head|gv|前置格代詞}}
# {{inflection of|gv|ec||1|p}}
====衍生词汇====
* {{l|gv|assyn}} {{qualifier|强调}}
==中古英语==
===名词===
{{head|enm|名詞}}
# {{alternative form of|enm|asshe|t=烧掉的东西}}
==书面挪威语==
===其他形式===
* {{alter|nb|Ass}} {{qual|也可首字母大写}}
===名词===
{{nb-noun-m1}}
# {{lb|nb|music}} [[A♭]]
==新挪威语==
===其他形式===
* {{alter|nn|Ass}} {{qual|也可首字母大写}}
===名词===
{{nn-noun-m1}}
# {{lb|nn|music}} [[A♭]]
==古爱尔兰语==
===其他形式===
* {{l|sga|as}}
* {{l|sga|es}}
===发音===
* {{IPA|sga|/as/}}
===代词===
{{head|sga|前置格代詞}}
# {{inflection of|sga|a||3|s|m}}
==瑞典语==
===名词===
{{sv-noun|n}}
# {{lb|sv|music}} [[A♭]]
# [[挂号信]];{{abbreviation of|sv|[[assurerad]] ([[försändelse]])}}
#:{{coord|sv|rek}}
====变格====
{{sv-infl-noun-n-zero|genitive=}}
===异序词===
* {{anagrams|sv|a=ass|s.a.s.|sas}}
{{topics|sv|郵政}}
==里菲安语==
===其他形式===
* {{alter|rif|as}}
===词源===
{{rfe|rif}}
===名词===
{{rif-noun|m|pl=ussan}}
# [[天]],一天
#: {{syn|rif|nnhar}}
# [[白天]]
#: {{syn|rif|azir}}
====变格====
{{rif-decl-noun|wass|ussan|wussan}}
====衍生词汇====
* {{l|rif|assa|t=今天}}
{{c|rif|一天裡的時刻}}
02wzwe05504cldst2tf8s8evjk9es85
9813788
9813785
2026-06-15T14:04:25Z
TongcyDai
53191
9813788
wikitext
text/x-wiki
{{also|Appendix:"ass"的變體}}
==跨語言==
===符號===
{{mul-symbol}}
# {{ISO 639|3}}
===參見===
* {{langcat}}
==英语==
{{wikipedia|lang=en}}
===发音===
* {{enPR|ăs}}, {{IPA|en|/æs/}}
* {{audio|en|LL-Q1860 (eng)-Back ache-ass.wav|a=UK}}
* {{audio|en|en-us-ass.ogg|a=US}}
* {{rhymes|en|æs|s=1}}
===词源 1===
源自{{inh|en|enm|asse}},源自{{inh|en|ang|assa}},逆构自{{m|ang|assen|t=母驴}},源自{{der|en|cel}}(对比{{cog|sga|asan}}、{{cog|oco|asen}}),源自{{der|en|la|asinus}}。取代了{{cog|ang|esol}},其源自{{cog|gmw-pro|*asil}},亦借自同一个拉丁语词。
====名词====
{{en-noun}}
[[File:Somali Wild Ass.JPG|thumb|Somali wild '''ass''']]
# [[驴]]
#: {{hyper|en|equine#名詞|<|equid#名詞|<|mammal#名詞|<|animal#名詞|<|creature#名詞|critter#Noun}}
#: {{hypo|en|donkey#名詞<qq:也視作近義詞>|onager#名詞|wild ass#名詞}}
#* {{RQ:KJV|1 Samuel|16|20|passage=And Iesse tooke an '''asse''' laden with bread, and a bottle of wine, and a kid, and sent them by Dauid his sonne vnto Saul.}}
#* {{RQ:Browne Pseudodoxia Epidemica|edition=2nd|chapter=Of the Same [''i.e.'', the Blacknesse of Negroes]|page=282|passage=Thus the '''Aſſe''' having a peculiar mark of a croſſe made by a black liſt down his back, and another athwart, or at right angles down his ſhoulders; common opinion aſcribes this figure unto a peculiar ſignation; ſince that beaſt had the honour to bear our Saviour on his back.}}
#* {{quote-book|1=en|year=1972|author=Parliament of the United Kingdom|title=Road Traffic Act 1972|chapter=Part I, section 20(3)|url=https://www.legislation.gov.uk/ukpga/1972/20/pdfs/ukpga_19720020_en.pdf|page=14|text=In this section "animal" means any horse, cattle, '''ass''', mule, sheep, pig, goat or dog.}}
# {{lb|en|俚语|较为|_|粗俗}} [[蠢货]]
#: {{syn|en|fool|idiot}}
#: {{ux|en|That new kid left the cap off the syrup bottle again! What an '''ass'''.|那个新来的小孩又没盖糖浆瓶的盖子,真是'''脑袋有点问题'''。}}
#* {{RQ:Doyle Lost World|passage=I had sprung to my feet. I was speaking, and yet I had prepared no words. Tarp Henry, my companion, was plucking at my skirts and I heard him whispering, "Sit down, Malone! Don't make a public '''ass''' of yourself."}}
# {{lb|en|printing|俚语|弃用}} [[排版]][[工人]]
#: {{syn|en|compositor}}
#* {{quote-book|en|year=1841|author=[[w:en:William Savage (printer)|William Savage]]|title=Dictionary of the Art of Printing|page=24|url=https://archive.org/details/bub_gb_S_s1AQAAMAAJ/page/24/mode/2up|text=Sometimes by way of joke, and sometimes by way of irritation, compositors are called '''Asses''' by the pressmen.}}
=====下义词=====
* {{sense|驴}} {{l|en|donkey}}、{{l|en|onager}}、{{l|en|wild ass}}
=====衍生词汇=====
{{der3|en|Buridan's ass|the law is an ass|wild ass|zebrass}}
=====相关词汇=====
* {{l|en|asinine}}
===词源 2===
{{m|en|arse}}的北美变体。最终源自{{inh|en|enm|ars}}、{{m|enm|ers}},源自{{inh|en|ang|ærs}}、{{m|ang|ears}},源自{{inh|en|gmw-pro|*ars}},源自{{inh|en|gem-pro|*arsaz}}(对比{{cog|goh|ars}}({{cog|de|Arsch}})、{{cog|non|ars}}、{{cog|ofs|ers}}),源自{{inh|en|ine-pro|*h₃érsos}}(对比{{cog|grc|ὄρρος}})。
有不少人认为该词曾为委婉词,但它其实原是为了反映舌尖音(尤其是{{IPAchar|/s/}})前{{IPAchar|/ɹ/}}被合并的[[发音拼写]](更早期的形式{{m|en|arse}}仍通用于英国、澳大利亚、新西兰等地),该现象在{{w|中古英语}}起的非标准口语中就有出现。该现象与之后出现R音脱落不同,因为{{IPAchar|/ɹ/}}在能影响其前驱音之前就已经脱落。该现象影响到的其他词(部分词保留了两种形式且词义有所不同)有{{m|en|cuss}}←{{m|en|curse}}、{{m|en|gash}}←{{m|en|garsh}}、{{m|en|bass||鲈鱼}}←{{m|en|barse}}、{{m|en|bust}}←{{m|en|burst}}、{{m|en|passel}}←{{m|en|parcel}},参见[[:en:Category:English terms with assimilation of historic /ɹ/]]。
====形容词====
{{en-adj|-}}
# {{lb|en|粗俗|俚语}} [[差劲]]的,[[不行]]的,[[垃圾]]的
#* {{quote-web|en|url=https://www.dallasnews.com/sports/2019/02/06/former-texas-am-qb-nick-starkel-breaks-down-old-twitter-beef-with-tate-martell/|work=Dallas Morning News|passage=On a recent episode of "The Justin Dunning Podcast," Starkel shared his thoughts on Martell, a former Ohio State quarterback, saying "he's '''ass''' my dude" in reference to Starkel.|title=Former Texas A&M QB Nick Starkel breaks down old Twitter beef with Tate Martell|date=2019-02-05|author=Alex Miller}}
#* {{quote-web|en|url=https://musketfire.com/2021/02/21/patriots-cam-newton-exchange-teenager-video/|work=Fansided|passage=For some reason, the teenager thought it’d be a good idea to criticize Newton and say he's "'''ass'''" and that he’s "about to be poor" because he's a free agent.|title=Patriots: Cam Newton getting disrespected by a teenager is everything that’s wrong with society|date=2021-02-21|author=Thomas Carannante}}
#* {{quote-web|en|url=https://www.espn.com/nfl/story/_/id/32473036/what-learned-arizona-cardinals-quarterback-kyler-murray-watching-twitch|work=ESPN|passage="You're so '''ass'''," Murray says to another player.|title=What we learned about Arizona Cardinals quarterback Kyler Murray by watching him on Twitch|date=2021-10-28|author=Josh Weinfuss}}
====名词====
{{en-noun|~}}
# {{senseid|en|屁股}} {{lb|en|粗俗|俚语|可数|and|不可数}} [[屁股]]
#: {{syn|en|Thesaurus:buttocks}}
# {{lb|en|粗俗|俚语|可数|and|不可数}} [[屁眼]]
#* {{RQ:William Burroughs Naked Lunch|page=81|passage=Train compartment: two sick young junkies on their way to Lexington tear their pants down in convulsions of lust. One of them soaps his cock and works it up the other's '''ass''' with a corkscrew motion.}}
# {{lb|en|粗俗|俚语|人的[[物化]]|不可数}} [[性交]][[对象]] {{gl|粗俗地强调了其身体而非其人格}}
#: {{syn|en|poontang|poon|punani|pussy|tail|tang|Thesaurus:copulation}}
#: {{ux|en|I'm going to go down to the bar and try to get me some '''ass'''.|我准备去酒吧找个'''屄'''来肏。}}
#* {{quote-song|en|author=w:Joni Mitchell|year=1971|album=Blue|title=Blue|passage=Acid, booze, and '''ass''' / Needles, guns, and grass}}
# {{lb|en|粗俗|俚语|不可数}} [[讨厌]]的东西,[[差劲]]的东西,[[垃圾]]
#: {{uxi|en|I feel like '''ass''' today.|今天真他妈'''不爽'''。}}
#: {{uxi|en|This room smells like '''ass'''.|这房间'''臭死了'''。}}
#: {{uxi|en|What a bunch of '''ass'''.|这都什么'''乱七八糟'''的。}}
# {{senseid|en|自己}} {{lb|en|粗俗|俚语|转喻意|人的[[物化]]|可数}} [[家伙]],[[人]] {{gl|能指代自己。可指代身体,安全,或者比喻性地指代工作,将来等}}
#: {{cot|en|{{l|en|face}}|{{l|en|hide}}}}
#: {{ux|en|Get your lazy '''ass''' out of bed!|赶紧起床你这个懒狗!}}
#: {{ux|en|We risk our '''asses''' out there every day.|我们每天都冒生命危险。}}
#: {{ux|en|I'ma get medieval on your '''ass'''!|看我不好好修理'''你'''一顿!}}
=====用法说明=====
* 当使用转喻意,其给整个句子带来负面色彩,带有恼怒的语气:
** “{{lang|en|he has trouble getting his ass up in the morning}}”比“{{lang|en|he has trouble getting up in the morning}}”语气更重,更带负面色彩。
* 不一定表示对被指代人的不赞成:
** “{{lang|en|And who do you think has to clean this mess up? My ass does!}}”(“你觉得是谁要来擦屁股?是他妈的老子!”这句话没有体现对自己的不赞同,而表示对搞砸的人的不赞同)
*** (可能会体现一定的厌烦)
* 这一用法粗俗,因此仅限于非正式语域,其用于正式上下文中有一定的冒犯意。
* 其词义的内涵在于通过使用身体的一部分转喻整个人,来物化一个人(甚至包括指自己的时候),暗中强调了其身体而非其人格(亦从该观点对比{{m|en|hide|id=self, metonymically|watch his hide|看好他,保护好他}}、{{m|en|face|id=self, metonymically|show his face|露面}}、{{m|en|whatshisface#Etymology|what's-his-face|无名氏}}、{{m|en|meatbag}}或{{m|en|crackhead}})。
* 其变格形式在语法上有代词功能:
** {{m|en|my ass}} = {{m|en|I}}、{{m|en|me}}、{{m|en|myself}}
** {{m|en|your ass}} = {{m|en|you}}、{{m|en|yourself}}
** his ass = {{m|en|he}}、{{m|en|him}}、{{m|en|himself}}
** her ass = {{m|en|she}}、{{m|en|her}}、{{m|en|herself}}
** your asses = {{m|en|y'all}}、{{m|en|y'all}}、{{m|en|yourselves}}
** their asses = {{m|en|they}}、{{m|en|them}}、{{m|en|themselves}}
=====衍生词汇=====
{{der3|en
|assage
|[[ass-backwards]], [[ass backward]], [[ass-backward]]
|ass bandit
|[[ass clown]], [[assclown]]
|ass crack
|assfuck
|assgasm
|assgrab
|asshat
|[[asshole]], [[ass hole]]
|asshood
|ass in a sling
|ass kicking
|ass kissing
|assle
|ass-licker
|assmonkey
|ass over teakettle
|assrun
|bare-assed
|big-ass
|blow it out one's ass
|bust ass
|bust ass cold
|bust one's ass
|[[dumbass]], [[dumb ass]], [[dumb-ass]]
|[[fatass]], [[fat-ass]]
|get one's ass in gear
|give a rat's ass
|[[half-assed]], [[half-ass]], [[half ass]]
|[[hardass]], [[hard-ass]], [[hard-assed]]
|haul ass
|her ass
|his ass
|horse's ass
|horseshoe up one's ass
|[[kick ass]], [[kick-ass]], [[kickass]]
|[[kiss ass]], [[kiss-ass]]|kiss my ass
|kiss one's ass goodbye|know one's ass from a hole in the ground
|laugh one's ass off
|my ass
|pain in the ass
|piece of ass
|pop a cap in someone's ass
|put one's ass on the line
|quarter-assed
|shake one's ass
|[[smart ass]], [[smart-ass]]
|[[someone's ass off]], [[one's ass off]]
|stick up one's ass
|take it up the ass
|their ass
|their asses
|whoop ass
|[[wiseass]], [[wise-ass]]
|[[work someone's ass off]], [[work one's ass off]]
|your ass
|your asses
|piss out one's ass|Teck's ass|Tex-ass|ass backwards|ass beating|ass breath|ass call|ass catch|ass cheeks|ass crack of dawn|ass eating|ass floss|ass guard|ass juice|ass kisser|ass licker|ass pounding|ass pull|ass sucker|ass to mouth|ass-breath|ass-kicking|ass-kisser|ass-kissing|ass-licking|ass-pull|ass-rape|bad ass|bad-ass|bee up one's ass|bet one's ass|big ass|bitch-ass|bite my ass|bite my shiny metal ass|blow smoke up someone's ass|bomb-ass|break ass|bubble ass|bug up one's ass|bust a cap in someone's ass|bust someone's ass|candy-ass|cat's ass|cottage cheese ass|cover someone's ass|cracker-ass|crazy-ass|die in the ass|drag ass|duck's ass|eat ass|eating ass|fake-ass|fly-ass|gay-ass|get off one's ass|get one's ass handed to one|get one's ass into gear|get up someone's ass|gnat's ass|grab ass|grab-ass|grassy ass|grown-ass|have one's ass handed to one|have one's head up one's ass|he-ass|jack-ass|jenny-ass|jerk ass|jerk-ass|jive-ass|kick ass and take names|kick someone's ass|kick up the ass|kiss someone's ass|know one's ass from one's elbow|know the difference between one's ass and a hole in the ground|know the difference between one's ass and one's elbow|lard-ass|lazy ass|lazy-ass|lick someone's ass|light someone's ass up|like ass|make an ass of|no-good ass|one's ass is grass|open a can of whoop ass|open up a can of whoop ass|out the ass|pain in one's ass|pickle up one's ass|piss out of one's ass|pole up one's ass|pull out of one's ass|punk-ass|put foot to ass|put one's foot in someone's ass|put one's foot up someone's ass|raggedy-ass|ride someone's ass|rip ass|sad ass|sell one's ass|she-ass|shit ass|shitty-ass|short-ass|shove it up your ass|show one's ass|sick ass|sick-ass|sit on one's ass|sit one's ass down|sketch-ass|slap my ass and call me Judy|slap my ass and call me Sally|stank-ass|strange-ass|suck ass|suck-ass|swamp ass|take one's tongue out of someone's ass|talk out of one's ass|talk out one's ass|talk through one's ass|think the sun shines out of someone's ass|tight as a duck's ass|tits and ass|up one's own ass|up the ass|up to one's ass in alligators|watch one's ass|weird-ass|whoop-ass|with one's thumbs up one's ass|assface|assbutt|buttass|assfucker|asswipe|assholery|asshattery|assclownery|assholic|assholism|assholedom |assholey|asshatty|assholehood|assbag|assholio |assbucket |lameass|assholeness|assfuck |assfucker|sorry ass|stick in one’s ass|asshead|assnose|half-ass|half-arsed|assbrain}}
====助词====
{{head|en|助詞}}
# {{synonym of|en|-ass|pos=形容词强调助词}}
#: {{ux|en|That was one big '''ass''' fish!|那鱼好'''他妈'''大!}}
#: {{ux|en|That's an expensive '''ass''' car!|那辆车真'''他妈'''贵!}}
===延伸阅读===
* {{cite-journal|author=Archibald A. Hill|year=1940|title=Early Loss of [r] before Dentals|journal=PMLA|volume=55|issue=2|pages=308-359|doi=10.2307/458450}}
* {{cite-journal|author=L. Sprague de Camp|authorlink=L. Sprague de Camp|year=1971|title=Arse and ass|journal=Journal of the International Phonetic Association|volume=1|issue=2|pages=79–80|doi=10.1017/S0025100300000281}}
===异序词===
* {{anagrams|en|a=ass|SAS|SSA|Sas}}
{{catlangname|en|詈語|3字母詞}}
{{topics|en|臀部|馬科動物|人}}
==德语==
===动词===
{{head|de|動詞變位形式}}
# {{standard spelling of|de|from=SLDE|aß}}
==拉特加莱语==
===词源 1===
源自{{inh|ltg|ine-bsl-pro|*aśís}}。同源词有{{cog|lv|ass}}和{{cog|lt|ašis}}。
====发音====
* {{ltg-IPA|ass'}}
* {{hyph|ltg|ass}}
====名词====
{{ltg-noun|f|aseite}}
# [[轴]]
=====变格=====
{{ltg-decl-noun/6|ass|oss}}
===词源 2===
{{nonlemma}}
====发音====
* {{ltg-IPA}}
* {{hyph|ltg|ass}}
====分词====
{{ltg-part|PrOP}}
# {{inflection of|ltg|byut||present|oblique|participle}}
===参考资料===
* {{R:ltg:Bukss:1973|page=131}}
==拉脱维亚语==
[[File:Train axle.jpg|200px|thumb|Vagona ass]]
[[File:Orienteta taisne.JPG|200px|thumb|Ass]]
===词源 1===
源自{{inh|lv|ine-bsl-pro|*aśís}},源自{{der|lv|ine-pro|*h₂eḱs-}}。原为i/n-词根,其在波罗的海地区变为了i-词根。<ref name="LEV">{{R:lv:LEV}}。</ref>
====发音====
* {{lv-IPA|as}}
{{audio|lv|lv-riga-ass.ogg}}
====名词====
{{lv-noun|f|6th}}
# [[轴]]
#: {{ux|lv|ratu '''ass'''|'''轴'''承|inline=1}}
#: {{ux|lv|vagona '''ass'''|车'''轴'''|inline=1}}
#: {{ux|lv|motocikla pakaļējā riteņa '''ass'''|摩托车的后车'''轴'''|inline=1}}
# {{lb|lv|mathematics}} [[轴]]
#: {{ux|lv|simetrijas, rotācijas '''ass'''|对称'''轴''',旋转'''轴'''|inline=1}}
#: {{ux|lv|zemes griešanās '''ass'''|地球的旋转'''轴'''|inline=1}}
#: {{ux|lv|koordinātu '''asis'''|坐标'''轴'''|inline=1}}
#: {{ux|lv|abscisu, ordinātu '''ass'''|x-、y-'''轴'''|inline=1}}
=====变格=====
{{lv-decl-noun|a|s|6th||s|s|extrawidth=-60}}
===词源 2===
与{{m|lv|ass||轴}}同源,原为对应一个人伸展手臂时的长度的度量单位(对比{{cog|ru|са́жень}})。<ref name="LEV"/>
====发音====
* {{lv-IPA|as}}
{{audio|lv|lv-riga-ass.ogg}}
====名词====
{{lv-noun|f|6th}}
# [[俄丈]] {{gl|俄罗斯旧制长度计量单位,约等于2.13[[米]]}}
#: {{ux|lv|jūras '''ass'''|'''英寻'''(约1.83米)|inline=1}}
# [[俄丈]] {{gl|俄罗斯测量木材的旧体积计量单位,约2-4[[立方米]]}}
#: {{ux|lv|divas '''asis''' malkas|2'''俄丈'''木材|inline=1}}
=====变格=====
{{lv-decl-noun|a|s|6th||s|s|extrawidth=-60}}
===词源 3===
源自早期形式{{m|lv|*asus}},源自{{inh|lv|bat-pro|*ašus}},源自{{der|lv|ine-pro|*h₂eḱ-||尖}}。带了附加后缀''*-ro'',同一词根亦产生了{{cog|ine-bsl-pro|*aśras||尖}},派生出拉脱维亚语方言词{{m|lv|asrs}}以及{{cog|lt|-}}同源词{{m|lt|aštrùs}},方言词{{m|lt|ašrùs}}。该词根还派生出带''ak''而非''as''的词(比如{{m|lv|akmens||石头}}、{{m|lv|akots||芒刺}}),可能是原始印欧语的方言变体产生的。拉脱维亚语中,先前的''u''-词根形容词(如{{m|lv|*asus}})被合并到了其他类别下,{{m|lv|*asus}}产生出了''o''-词根和''yo-''词根变体,它们后面成为了独立单词,{{m|lv|ass}}和{{m|lv|ašs}},且语义上有差异(比如亦对比{{m|lv|plats}}和{{m|lv|plašs}}或{{m|lv|dobs}}和{{m|lv|dobjš}})。其他同源词包括{{cog|cu|остръ|sc=Cyrs}}、{{cog|ru|о́стрый}}、{{cog|be|во́стры|sc=Cyrl}}、{{cog|uk|о́стрий|sc=Cyrl}}、{{m|uk|го́стрий|sc=Cyrl}}、{{cog|bg|о́стър|sc=Cyrl}}、{{cog|cs|ostrý}}、{{cog|pl|ostry}}、{{cog|gem-pro|*agjō}}({{cog|goh|ecka}}、{{m|goh|egga||边缘,尖角,尖端,刀刃}}、{{cog|de|Ecke}}、{{cog|sa|अश्रि|अश्रिः|角落,尖角,刃|tr=áśriḥ|sc=Deva}}、{{cog|grc|ἀκή||尖端}}、{{m|grc|ἄκρος||尖的}}、{{cog|la|ācer||尖的}}、{{m|la|aciēs||锋利;刀刃}}。<ref name="LEV"/>
====发音====
* {{lv-IPA|as}}
{{audio|lv|lv-riga-ass.ogg}}
====形容词====
{{lv-adj|as}}
# [[尖锐]]的,[[锋利]]的
#: {{ux|lv|'''ass''' nazis, zāģis, cirvis|'''锐利'''的刀,锯,斧|inline=1}}
#: {{ux|lv|'''ass''' īlens, ilknis|'''锐利'''的锥子,獠牙|inline=1}}
#: {{ux|lv|'''asa''' adata|'''尖'''针|inline=1}}
#: {{ux|lv|'''asi''' ragi, ilkņi|'''尖'''角,'''尖'''牙|inline=1}}
#: {{ux|lv|'''asas''' kalnu galotnes|'''陡峭'''的山顶|inline=1}}
#: {{ux|lv|'''ass''' zīmulis|'''尖锐'''的铅笔|inline=1}}
# (指身体部位或字体)尖的
#: {{ux|lv|'''asi''' elkoņi|'''弯'''的手肘|inline=1}}
#: {{ux|lv|'''asi''' vaigu kauli|'''尖锐'''的颧骨|inline=1}}
#: {{ux|lv|'''asas''' burtu formas rokrakstā||inline=1}}
# {{lb|lv|指植物}} [[尖]]的,有尖刺的
#: {{ux|lv|'''ass''' dadzis, paeglis, grīslis|'''尖'''蓟,'''尖锐'''的刺柏,'''尖锐'''的莎草|inline=1}}
#: {{ux|lv|'''asa''' zāle, nātre|'''尖'''树叶,'''尖锐'''的荨麻|inline=1}}
# {{lb|lv|指布料,皮肤等}} [[粗糙]]的
#: {{ux|lv|'''asa''' sejas āda|'''粗糙'''的面部肌肤|inline=1}}
#: {{ux|lv|'''ass''' linu dvielis|'''粗'''亚麻制的毛巾|inline=1}}
# [[刺激]][[感官]]的 {{gl|如辛辣等}}
#: {{ux|lv|'''asa''' mērce|'''辣'''酱|inline=1}}
#: {{ux|lv|'''asa''' dūmu smaka|'''刺鼻'''的烟雾气味|inline=1}}
#: {{ux|lv|'''ass''' ož pēc hlora|氯的'''刺鼻'''气味|inline=1}}
#: {{ux|lv|'''ass''' vējš|'''刺鼻'''的风|inline=1}}
#: {{ux|lv|'''asas''' sāpes|'''尖锐'''的疼痛|inline=1}}
#: {{ux|lv|'''ass''' klepus|'''重重'''的咳嗽|inline=1}}
# [[严厉]]的,[[不留情面]]的
#: {{ux|lv|'''asā''' balss|'''严厉'''的语气|inline=1}}
#: {{ux|lv|runāt '''asā''' tonī|用'''严厉'''的语气说话|inline=1}}
#: {{ux|lv|'''ass''' sarkasms|'''尖酸'''的讽刺|inline=1}}
#: {{ux|lv|'''ass''' pārmetumi|'''严厉'''的批评|inline=1}}
#: {{ux|lv|'''asa''' ķilda|'''凶猛'''的争吵|inline=1}}
#: {{ux|lv|'''asa''' mēle|'''尖酸刻薄'''的话语|inline=1}}
# [[清晰]]的,[[鲜明]]的
#: {{ux|lv|'''asas''' kontūras|'''鲜活'''的形象|inline=1}}
#: {{ux|lv|'''asi''' sejas vaibsti|'''鲜明'''的面部特征|inline=1}}
#: {{ux|lv|zīmēt '''asām''' līnijām|用'''清晰'''的线条作画|inline=1}}
# {{lb|lv|指问题}} [[尖锐]]的,[[重要]]的,[[严重]]的
#: {{ux|lv|'''asa''' problēma|'''严重'''的问题|inline=1}}
# [[锐利]]的,[[敏锐]]的
#: {{ux|lv|'''asa''' redze|'''敏锐'''的视觉|inline=1}}
#: {{ux|lv|'''ass''' prāts|'''清晰'''的头脑|inline=1}}
#: {{ux|lv|'''asa''' uztvere|'''敏锐'''的觉察力|inline=1}}
=====变格=====
{{lv-decl-adj|as|extrawidth=-100}}
=====近义词=====
* {{sense|尖锐}} {{l|lv|skaudrs}}
* {{sense|严厉,刻薄}} {{l|lv|raupjš}}、{{l|lv|rupjš}}、{{l|lv|negluds}}、{{l|lv|skarbs}}
=====反义词=====
* {{sense|尖锐}} {{l|lv|truls}}、{{l|lv|neass}}
* {{sense|严厉刻薄}} {{l|lv|gluds}}、{{l|lv|maigs}}、{{l|lv|mīksts}}
=====衍生词汇=====
* {{l|lv|asums}}
===参考资料===
<references />
{{topics|lv|簡單機械|觸覺|計量單位}}
==卢森堡语==
===动词===
{{head|lb|動詞變位形式}}
# {{infl of|lb|sinn||3|s|pres}}
==曼岛语==
===词源===
源自{{inh|gv|sga|ass}},{{m|sga|a|a|id=out of|t=自,离}}的阳性和中性单数形式,源自{{inh|gv|cel-pro|*exs}},源自{{inh|gv|ine-pro|*h₁eǵʰs||来自}}。对比{{cog|ga|as}}。
===副词===
{{head|gv|副詞}}
# [[出]]
===介词===
{{head|gv|介詞}}
# 从...中
====屈折====
{{gv-prep-infl
|1sg=assym
|2sg=assyd
|3sgm=ass
|3sgmem=assyn
|3sgf=assjee
|1pl=assdooin
|2pl=assdiu
|3pl=assdaue
}}
====衍生词汇====
* {{l|gv|ass y cheer}}
* {{l|gv|ass y hene}}
===代词===
{{head|gv|前置格代詞}}
# {{inflection of|gv|ec||1|p}}
====衍生词汇====
* {{l|gv|assyn}} {{qualifier|强调}}
==中古英语==
===名词===
{{head|enm|名詞}}
# {{alternative form of|enm|asshe|t=烧掉的东西}}
==书面挪威语==
===其他形式===
* {{alter|nb|Ass}} {{qual|也可首字母大写}}
===名词===
{{nb-noun-m1}}
# {{lb|nb|music}} [[A♭]]
==新挪威语==
===其他形式===
* {{alter|nn|Ass}} {{qual|也可首字母大写}}
===名词===
{{nn-noun-m1}}
# {{lb|nn|music}} [[A♭]]
==古爱尔兰语==
===其他形式===
* {{l|sga|as}}
* {{l|sga|es}}
===发音===
* {{IPA|sga|/as/}}
===代词===
{{head|sga|前置格代詞}}
# {{inflection of|sga|a||3|s|m}}
==瑞典语==
===名词===
{{sv-noun|n}}
# {{lb|sv|music}} [[A♭]]
# [[挂号信]];{{abbreviation of|sv|[[assurerad]] ([[försändelse]])}}
#:{{coord|sv|rek}}
====变格====
{{sv-infl-noun-n-zero|genitive=}}
===异序词===
* {{anagrams|sv|a=ass|s.a.s.|sas}}
{{topics|sv|郵政}}
==里菲安语==
===其他形式===
* {{alter|rif|as}}
===词源===
{{rfe|rif}}
===名词===
{{rif-noun|m|pl=ussan}}
# [[天]],一天
#: {{syn|rif|nnhar}}
# [[白天]]
#: {{syn|rif|azir}}
====变格====
{{rif-decl-noun|wass|ussan|wussan}}
====衍生词汇====
* {{l|rif|assa|t=今天}}
{{c|rif|一天裡的時刻}}
47ud7yibdao8e686sfobq38owlmov5s
9813789
9813788
2026-06-15T14:04:47Z
TongcyDai
53191
9813789
wikitext
text/x-wiki
{{also|Appendix:"ass"的變體}}
==跨語言==
===符號===
{{mul-symbol}}
# {{ISO 639|3}}
===參見===
* {{langcat}}
==英语==
{{wikipedia|lang=en}}
===发音===
* {{enPR|ăs}}, {{IPA|en|/æs/}}
* {{audio|en|LL-Q1860 (eng)-Back ache-ass.wav|a=UK}}
* {{audio|en|en-us-ass.ogg|a=US}}
* {{rhymes|en|æs|s=1}}
===词源 1===
源自{{inh|en|enm|asse}},源自{{inh|en|ang|assa}},逆构自{{m|ang|assen|t=母驴}},源自{{der|en|cel}}(对比{{cog|sga|asan}}、{{cog|oco|asen}}),源自{{der|en|la|asinus}}。取代了{{cog|ang|esol}},其源自{{cog|gmw-pro|*asil}},亦借自同一个拉丁语词。
====名词====
{{en-noun}}
[[File:Somali Wild Ass.JPG|thumb|Somali wild '''ass''']]
# [[驴]]
#: {{hyper|en|equine#名詞|<|equid#名詞|<|mammal#名詞|<|animal#名詞|<|creature#名詞|critter#Noun}}
#: {{hypo|en|donkey#名詞<qq:也視作近義詞>|onager#名詞|wild ass#名詞}}
#* {{RQ:KJV|1 Samuel|16|20|passage=And Iesse tooke an '''asse''' laden with bread, and a bottle of wine, and a kid, and sent them by Dauid his sonne vnto Saul.}}
#* {{RQ:Browne Pseudodoxia Epidemica|edition=2nd|chapter=Of the Same [''i.e.'', the Blacknesse of Negroes]|page=282|passage=Thus the '''Aſſe''' having a peculiar mark of a croſſe made by a black liſt down his back, and another athwart, or at right angles down his ſhoulders; common opinion aſcribes this figure unto a peculiar ſignation; ſince that beaſt had the honour to bear our Saviour on his back.}}
#* {{quote-book|1=en|year=1972|author=Parliament of the United Kingdom|title=Road Traffic Act 1972|chapter=Part I, section 20(3)|url=https://www.legislation.gov.uk/ukpga/1972/20/pdfs/ukpga_19720020_en.pdf|page=14|text=In this section "animal" means any horse, cattle, '''ass''', mule, sheep, pig, goat or dog.}}
# {{lb|en|俚语|较为|_|粗俗}} [[蠢货]]
#: {{syn|en|fool|idiot}}
#: {{ux|en|That new kid left the cap off the syrup bottle again! What an '''ass'''.|那个新来的小孩又没盖糖浆瓶的盖子,真是'''脑袋有点问题'''。}}
#* {{RQ:Doyle Lost World|passage=I had sprung to my feet. I was speaking, and yet I had prepared no words. Tarp Henry, my companion, was plucking at my skirts and I heard him whispering, "Sit down, Malone! Don't make a public '''ass''' of yourself."}}
# {{lb|en|printing|俚语|弃用}} [[排版]][[工人]]
#: {{syn|en|compositor}}
#* {{quote-book|en|year=1841|author=[[w:en:William Savage (printer)|William Savage]]|title=Dictionary of the Art of Printing|page=24|url=https://archive.org/details/bub_gb_S_s1AQAAMAAJ/page/24/mode/2up|text=Sometimes by way of joke, and sometimes by way of irritation, compositors are called '''Asses''' by the pressmen.}}
=====衍生词汇=====
{{der3|en|Buridan's ass|the law is an ass|wild ass|zebrass}}
=====相关词汇=====
* {{l|en|asinine}}
===词源 2===
{{m|en|arse}}的北美变体。最终源自{{inh|en|enm|ars}}、{{m|enm|ers}},源自{{inh|en|ang|ærs}}、{{m|ang|ears}},源自{{inh|en|gmw-pro|*ars}},源自{{inh|en|gem-pro|*arsaz}}(对比{{cog|goh|ars}}({{cog|de|Arsch}})、{{cog|non|ars}}、{{cog|ofs|ers}}),源自{{inh|en|ine-pro|*h₃érsos}}(对比{{cog|grc|ὄρρος}})。
有不少人认为该词曾为委婉词,但它其实原是为了反映舌尖音(尤其是{{IPAchar|/s/}})前{{IPAchar|/ɹ/}}被合并的[[发音拼写]](更早期的形式{{m|en|arse}}仍通用于英国、澳大利亚、新西兰等地),该现象在{{w|中古英语}}起的非标准口语中就有出现。该现象与之后出现R音脱落不同,因为{{IPAchar|/ɹ/}}在能影响其前驱音之前就已经脱落。该现象影响到的其他词(部分词保留了两种形式且词义有所不同)有{{m|en|cuss}}←{{m|en|curse}}、{{m|en|gash}}←{{m|en|garsh}}、{{m|en|bass||鲈鱼}}←{{m|en|barse}}、{{m|en|bust}}←{{m|en|burst}}、{{m|en|passel}}←{{m|en|parcel}},参见[[:en:Category:English terms with assimilation of historic /ɹ/]]。
====形容词====
{{en-adj|-}}
# {{lb|en|粗俗|俚语}} [[差劲]]的,[[不行]]的,[[垃圾]]的
#* {{quote-web|en|url=https://www.dallasnews.com/sports/2019/02/06/former-texas-am-qb-nick-starkel-breaks-down-old-twitter-beef-with-tate-martell/|work=Dallas Morning News|passage=On a recent episode of "The Justin Dunning Podcast," Starkel shared his thoughts on Martell, a former Ohio State quarterback, saying "he's '''ass''' my dude" in reference to Starkel.|title=Former Texas A&M QB Nick Starkel breaks down old Twitter beef with Tate Martell|date=2019-02-05|author=Alex Miller}}
#* {{quote-web|en|url=https://musketfire.com/2021/02/21/patriots-cam-newton-exchange-teenager-video/|work=Fansided|passage=For some reason, the teenager thought it’d be a good idea to criticize Newton and say he's "'''ass'''" and that he’s "about to be poor" because he's a free agent.|title=Patriots: Cam Newton getting disrespected by a teenager is everything that’s wrong with society|date=2021-02-21|author=Thomas Carannante}}
#* {{quote-web|en|url=https://www.espn.com/nfl/story/_/id/32473036/what-learned-arizona-cardinals-quarterback-kyler-murray-watching-twitch|work=ESPN|passage="You're so '''ass'''," Murray says to another player.|title=What we learned about Arizona Cardinals quarterback Kyler Murray by watching him on Twitch|date=2021-10-28|author=Josh Weinfuss}}
====名词====
{{en-noun|~}}
# {{senseid|en|屁股}} {{lb|en|粗俗|俚语|可数|and|不可数}} [[屁股]]
#: {{syn|en|Thesaurus:buttocks}}
# {{lb|en|粗俗|俚语|可数|and|不可数}} [[屁眼]]
#* {{RQ:William Burroughs Naked Lunch|page=81|passage=Train compartment: two sick young junkies on their way to Lexington tear their pants down in convulsions of lust. One of them soaps his cock and works it up the other's '''ass''' with a corkscrew motion.}}
# {{lb|en|粗俗|俚语|人的[[物化]]|不可数}} [[性交]][[对象]] {{gl|粗俗地强调了其身体而非其人格}}
#: {{syn|en|poontang|poon|punani|pussy|tail|tang|Thesaurus:copulation}}
#: {{ux|en|I'm going to go down to the bar and try to get me some '''ass'''.|我准备去酒吧找个'''屄'''来肏。}}
#* {{quote-song|en|author=w:Joni Mitchell|year=1971|album=Blue|title=Blue|passage=Acid, booze, and '''ass''' / Needles, guns, and grass}}
# {{lb|en|粗俗|俚语|不可数}} [[讨厌]]的东西,[[差劲]]的东西,[[垃圾]]
#: {{uxi|en|I feel like '''ass''' today.|今天真他妈'''不爽'''。}}
#: {{uxi|en|This room smells like '''ass'''.|这房间'''臭死了'''。}}
#: {{uxi|en|What a bunch of '''ass'''.|这都什么'''乱七八糟'''的。}}
# {{senseid|en|自己}} {{lb|en|粗俗|俚语|转喻意|人的[[物化]]|可数}} [[家伙]],[[人]] {{gl|能指代自己。可指代身体,安全,或者比喻性地指代工作,将来等}}
#: {{cot|en|{{l|en|face}}|{{l|en|hide}}}}
#: {{ux|en|Get your lazy '''ass''' out of bed!|赶紧起床你这个懒狗!}}
#: {{ux|en|We risk our '''asses''' out there every day.|我们每天都冒生命危险。}}
#: {{ux|en|I'ma get medieval on your '''ass'''!|看我不好好修理'''你'''一顿!}}
=====用法说明=====
* 当使用转喻意,其给整个句子带来负面色彩,带有恼怒的语气:
** “{{lang|en|he has trouble getting his ass up in the morning}}”比“{{lang|en|he has trouble getting up in the morning}}”语气更重,更带负面色彩。
* 不一定表示对被指代人的不赞成:
** “{{lang|en|And who do you think has to clean this mess up? My ass does!}}”(“你觉得是谁要来擦屁股?是他妈的老子!”这句话没有体现对自己的不赞同,而表示对搞砸的人的不赞同)
*** (可能会体现一定的厌烦)
* 这一用法粗俗,因此仅限于非正式语域,其用于正式上下文中有一定的冒犯意。
* 其词义的内涵在于通过使用身体的一部分转喻整个人,来物化一个人(甚至包括指自己的时候),暗中强调了其身体而非其人格(亦从该观点对比{{m|en|hide|id=self, metonymically|watch his hide|看好他,保护好他}}、{{m|en|face|id=self, metonymically|show his face|露面}}、{{m|en|whatshisface#Etymology|what's-his-face|无名氏}}、{{m|en|meatbag}}或{{m|en|crackhead}})。
* 其变格形式在语法上有代词功能:
** {{m|en|my ass}} = {{m|en|I}}、{{m|en|me}}、{{m|en|myself}}
** {{m|en|your ass}} = {{m|en|you}}、{{m|en|yourself}}
** his ass = {{m|en|he}}、{{m|en|him}}、{{m|en|himself}}
** her ass = {{m|en|she}}、{{m|en|her}}、{{m|en|herself}}
** your asses = {{m|en|y'all}}、{{m|en|y'all}}、{{m|en|yourselves}}
** their asses = {{m|en|they}}、{{m|en|them}}、{{m|en|themselves}}
=====衍生词汇=====
{{der3|en
|assage
|[[ass-backwards]], [[ass backward]], [[ass-backward]]
|ass bandit
|[[ass clown]], [[assclown]]
|ass crack
|assfuck
|assgasm
|assgrab
|asshat
|[[asshole]], [[ass hole]]
|asshood
|ass in a sling
|ass kicking
|ass kissing
|assle
|ass-licker
|assmonkey
|ass over teakettle
|assrun
|bare-assed
|big-ass
|blow it out one's ass
|bust ass
|bust ass cold
|bust one's ass
|[[dumbass]], [[dumb ass]], [[dumb-ass]]
|[[fatass]], [[fat-ass]]
|get one's ass in gear
|give a rat's ass
|[[half-assed]], [[half-ass]], [[half ass]]
|[[hardass]], [[hard-ass]], [[hard-assed]]
|haul ass
|her ass
|his ass
|horse's ass
|horseshoe up one's ass
|[[kick ass]], [[kick-ass]], [[kickass]]
|[[kiss ass]], [[kiss-ass]]|kiss my ass
|kiss one's ass goodbye|know one's ass from a hole in the ground
|laugh one's ass off
|my ass
|pain in the ass
|piece of ass
|pop a cap in someone's ass
|put one's ass on the line
|quarter-assed
|shake one's ass
|[[smart ass]], [[smart-ass]]
|[[someone's ass off]], [[one's ass off]]
|stick up one's ass
|take it up the ass
|their ass
|their asses
|whoop ass
|[[wiseass]], [[wise-ass]]
|[[work someone's ass off]], [[work one's ass off]]
|your ass
|your asses
|piss out one's ass|Teck's ass|Tex-ass|ass backwards|ass beating|ass breath|ass call|ass catch|ass cheeks|ass crack of dawn|ass eating|ass floss|ass guard|ass juice|ass kisser|ass licker|ass pounding|ass pull|ass sucker|ass to mouth|ass-breath|ass-kicking|ass-kisser|ass-kissing|ass-licking|ass-pull|ass-rape|bad ass|bad-ass|bee up one's ass|bet one's ass|big ass|bitch-ass|bite my ass|bite my shiny metal ass|blow smoke up someone's ass|bomb-ass|break ass|bubble ass|bug up one's ass|bust a cap in someone's ass|bust someone's ass|candy-ass|cat's ass|cottage cheese ass|cover someone's ass|cracker-ass|crazy-ass|die in the ass|drag ass|duck's ass|eat ass|eating ass|fake-ass|fly-ass|gay-ass|get off one's ass|get one's ass handed to one|get one's ass into gear|get up someone's ass|gnat's ass|grab ass|grab-ass|grassy ass|grown-ass|have one's ass handed to one|have one's head up one's ass|he-ass|jack-ass|jenny-ass|jerk ass|jerk-ass|jive-ass|kick ass and take names|kick someone's ass|kick up the ass|kiss someone's ass|know one's ass from one's elbow|know the difference between one's ass and a hole in the ground|know the difference between one's ass and one's elbow|lard-ass|lazy ass|lazy-ass|lick someone's ass|light someone's ass up|like ass|make an ass of|no-good ass|one's ass is grass|open a can of whoop ass|open up a can of whoop ass|out the ass|pain in one's ass|pickle up one's ass|piss out of one's ass|pole up one's ass|pull out of one's ass|punk-ass|put foot to ass|put one's foot in someone's ass|put one's foot up someone's ass|raggedy-ass|ride someone's ass|rip ass|sad ass|sell one's ass|she-ass|shit ass|shitty-ass|short-ass|shove it up your ass|show one's ass|sick ass|sick-ass|sit on one's ass|sit one's ass down|sketch-ass|slap my ass and call me Judy|slap my ass and call me Sally|stank-ass|strange-ass|suck ass|suck-ass|swamp ass|take one's tongue out of someone's ass|talk out of one's ass|talk out one's ass|talk through one's ass|think the sun shines out of someone's ass|tight as a duck's ass|tits and ass|up one's own ass|up the ass|up to one's ass in alligators|watch one's ass|weird-ass|whoop-ass|with one's thumbs up one's ass|assface|assbutt|buttass|assfucker|asswipe|assholery|asshattery|assclownery|assholic|assholism|assholedom |assholey|asshatty|assholehood|assbag|assholio |assbucket |lameass|assholeness|assfuck |assfucker|sorry ass|stick in one’s ass|asshead|assnose|half-ass|half-arsed|assbrain}}
====助词====
{{head|en|助詞}}
# {{synonym of|en|-ass|pos=形容词强调助词}}
#: {{ux|en|That was one big '''ass''' fish!|那鱼好'''他妈'''大!}}
#: {{ux|en|That's an expensive '''ass''' car!|那辆车真'''他妈'''贵!}}
===延伸阅读===
* {{cite-journal|author=Archibald A. Hill|year=1940|title=Early Loss of [r] before Dentals|journal=PMLA|volume=55|issue=2|pages=308-359|doi=10.2307/458450}}
* {{cite-journal|author=L. Sprague de Camp|authorlink=L. Sprague de Camp|year=1971|title=Arse and ass|journal=Journal of the International Phonetic Association|volume=1|issue=2|pages=79–80|doi=10.1017/S0025100300000281}}
===异序词===
* {{anagrams|en|a=ass|SAS|SSA|Sas}}
{{catlangname|en|詈語|3字母詞}}
{{topics|en|臀部|馬科動物|人}}
==德语==
===动词===
{{head|de|動詞變位形式}}
# {{standard spelling of|de|from=SLDE|aß}}
==拉特加莱语==
===词源 1===
源自{{inh|ltg|ine-bsl-pro|*aśís}}。同源词有{{cog|lv|ass}}和{{cog|lt|ašis}}。
====发音====
* {{ltg-IPA|ass'}}
* {{hyph|ltg|ass}}
====名词====
{{ltg-noun|f|aseite}}
# [[轴]]
=====变格=====
{{ltg-decl-noun/6|ass|oss}}
===词源 2===
{{nonlemma}}
====发音====
* {{ltg-IPA}}
* {{hyph|ltg|ass}}
====分词====
{{ltg-part|PrOP}}
# {{inflection of|ltg|byut||present|oblique|participle}}
===参考资料===
* {{R:ltg:Bukss:1973|page=131}}
==拉脱维亚语==
[[File:Train axle.jpg|200px|thumb|Vagona ass]]
[[File:Orienteta taisne.JPG|200px|thumb|Ass]]
===词源 1===
源自{{inh|lv|ine-bsl-pro|*aśís}},源自{{der|lv|ine-pro|*h₂eḱs-}}。原为i/n-词根,其在波罗的海地区变为了i-词根。<ref name="LEV">{{R:lv:LEV}}。</ref>
====发音====
* {{lv-IPA|as}}
{{audio|lv|lv-riga-ass.ogg}}
====名词====
{{lv-noun|f|6th}}
# [[轴]]
#: {{ux|lv|ratu '''ass'''|'''轴'''承|inline=1}}
#: {{ux|lv|vagona '''ass'''|车'''轴'''|inline=1}}
#: {{ux|lv|motocikla pakaļējā riteņa '''ass'''|摩托车的后车'''轴'''|inline=1}}
# {{lb|lv|mathematics}} [[轴]]
#: {{ux|lv|simetrijas, rotācijas '''ass'''|对称'''轴''',旋转'''轴'''|inline=1}}
#: {{ux|lv|zemes griešanās '''ass'''|地球的旋转'''轴'''|inline=1}}
#: {{ux|lv|koordinātu '''asis'''|坐标'''轴'''|inline=1}}
#: {{ux|lv|abscisu, ordinātu '''ass'''|x-、y-'''轴'''|inline=1}}
=====变格=====
{{lv-decl-noun|a|s|6th||s|s|extrawidth=-60}}
===词源 2===
与{{m|lv|ass||轴}}同源,原为对应一个人伸展手臂时的长度的度量单位(对比{{cog|ru|са́жень}})。<ref name="LEV"/>
====发音====
* {{lv-IPA|as}}
{{audio|lv|lv-riga-ass.ogg}}
====名词====
{{lv-noun|f|6th}}
# [[俄丈]] {{gl|俄罗斯旧制长度计量单位,约等于2.13[[米]]}}
#: {{ux|lv|jūras '''ass'''|'''英寻'''(约1.83米)|inline=1}}
# [[俄丈]] {{gl|俄罗斯测量木材的旧体积计量单位,约2-4[[立方米]]}}
#: {{ux|lv|divas '''asis''' malkas|2'''俄丈'''木材|inline=1}}
=====变格=====
{{lv-decl-noun|a|s|6th||s|s|extrawidth=-60}}
===词源 3===
源自早期形式{{m|lv|*asus}},源自{{inh|lv|bat-pro|*ašus}},源自{{der|lv|ine-pro|*h₂eḱ-||尖}}。带了附加后缀''*-ro'',同一词根亦产生了{{cog|ine-bsl-pro|*aśras||尖}},派生出拉脱维亚语方言词{{m|lv|asrs}}以及{{cog|lt|-}}同源词{{m|lt|aštrùs}},方言词{{m|lt|ašrùs}}。该词根还派生出带''ak''而非''as''的词(比如{{m|lv|akmens||石头}}、{{m|lv|akots||芒刺}}),可能是原始印欧语的方言变体产生的。拉脱维亚语中,先前的''u''-词根形容词(如{{m|lv|*asus}})被合并到了其他类别下,{{m|lv|*asus}}产生出了''o''-词根和''yo-''词根变体,它们后面成为了独立单词,{{m|lv|ass}}和{{m|lv|ašs}},且语义上有差异(比如亦对比{{m|lv|plats}}和{{m|lv|plašs}}或{{m|lv|dobs}}和{{m|lv|dobjš}})。其他同源词包括{{cog|cu|остръ|sc=Cyrs}}、{{cog|ru|о́стрый}}、{{cog|be|во́стры|sc=Cyrl}}、{{cog|uk|о́стрий|sc=Cyrl}}、{{m|uk|го́стрий|sc=Cyrl}}、{{cog|bg|о́стър|sc=Cyrl}}、{{cog|cs|ostrý}}、{{cog|pl|ostry}}、{{cog|gem-pro|*agjō}}({{cog|goh|ecka}}、{{m|goh|egga||边缘,尖角,尖端,刀刃}}、{{cog|de|Ecke}}、{{cog|sa|अश्रि|अश्रिः|角落,尖角,刃|tr=áśriḥ|sc=Deva}}、{{cog|grc|ἀκή||尖端}}、{{m|grc|ἄκρος||尖的}}、{{cog|la|ācer||尖的}}、{{m|la|aciēs||锋利;刀刃}}。<ref name="LEV"/>
====发音====
* {{lv-IPA|as}}
{{audio|lv|lv-riga-ass.ogg}}
====形容词====
{{lv-adj|as}}
# [[尖锐]]的,[[锋利]]的
#: {{ux|lv|'''ass''' nazis, zāģis, cirvis|'''锐利'''的刀,锯,斧|inline=1}}
#: {{ux|lv|'''ass''' īlens, ilknis|'''锐利'''的锥子,獠牙|inline=1}}
#: {{ux|lv|'''asa''' adata|'''尖'''针|inline=1}}
#: {{ux|lv|'''asi''' ragi, ilkņi|'''尖'''角,'''尖'''牙|inline=1}}
#: {{ux|lv|'''asas''' kalnu galotnes|'''陡峭'''的山顶|inline=1}}
#: {{ux|lv|'''ass''' zīmulis|'''尖锐'''的铅笔|inline=1}}
# (指身体部位或字体)尖的
#: {{ux|lv|'''asi''' elkoņi|'''弯'''的手肘|inline=1}}
#: {{ux|lv|'''asi''' vaigu kauli|'''尖锐'''的颧骨|inline=1}}
#: {{ux|lv|'''asas''' burtu formas rokrakstā||inline=1}}
# {{lb|lv|指植物}} [[尖]]的,有尖刺的
#: {{ux|lv|'''ass''' dadzis, paeglis, grīslis|'''尖'''蓟,'''尖锐'''的刺柏,'''尖锐'''的莎草|inline=1}}
#: {{ux|lv|'''asa''' zāle, nātre|'''尖'''树叶,'''尖锐'''的荨麻|inline=1}}
# {{lb|lv|指布料,皮肤等}} [[粗糙]]的
#: {{ux|lv|'''asa''' sejas āda|'''粗糙'''的面部肌肤|inline=1}}
#: {{ux|lv|'''ass''' linu dvielis|'''粗'''亚麻制的毛巾|inline=1}}
# [[刺激]][[感官]]的 {{gl|如辛辣等}}
#: {{ux|lv|'''asa''' mērce|'''辣'''酱|inline=1}}
#: {{ux|lv|'''asa''' dūmu smaka|'''刺鼻'''的烟雾气味|inline=1}}
#: {{ux|lv|'''ass''' ož pēc hlora|氯的'''刺鼻'''气味|inline=1}}
#: {{ux|lv|'''ass''' vējš|'''刺鼻'''的风|inline=1}}
#: {{ux|lv|'''asas''' sāpes|'''尖锐'''的疼痛|inline=1}}
#: {{ux|lv|'''ass''' klepus|'''重重'''的咳嗽|inline=1}}
# [[严厉]]的,[[不留情面]]的
#: {{ux|lv|'''asā''' balss|'''严厉'''的语气|inline=1}}
#: {{ux|lv|runāt '''asā''' tonī|用'''严厉'''的语气说话|inline=1}}
#: {{ux|lv|'''ass''' sarkasms|'''尖酸'''的讽刺|inline=1}}
#: {{ux|lv|'''ass''' pārmetumi|'''严厉'''的批评|inline=1}}
#: {{ux|lv|'''asa''' ķilda|'''凶猛'''的争吵|inline=1}}
#: {{ux|lv|'''asa''' mēle|'''尖酸刻薄'''的话语|inline=1}}
# [[清晰]]的,[[鲜明]]的
#: {{ux|lv|'''asas''' kontūras|'''鲜活'''的形象|inline=1}}
#: {{ux|lv|'''asi''' sejas vaibsti|'''鲜明'''的面部特征|inline=1}}
#: {{ux|lv|zīmēt '''asām''' līnijām|用'''清晰'''的线条作画|inline=1}}
# {{lb|lv|指问题}} [[尖锐]]的,[[重要]]的,[[严重]]的
#: {{ux|lv|'''asa''' problēma|'''严重'''的问题|inline=1}}
# [[锐利]]的,[[敏锐]]的
#: {{ux|lv|'''asa''' redze|'''敏锐'''的视觉|inline=1}}
#: {{ux|lv|'''ass''' prāts|'''清晰'''的头脑|inline=1}}
#: {{ux|lv|'''asa''' uztvere|'''敏锐'''的觉察力|inline=1}}
=====变格=====
{{lv-decl-adj|as|extrawidth=-100}}
=====近义词=====
* {{sense|尖锐}} {{l|lv|skaudrs}}
* {{sense|严厉,刻薄}} {{l|lv|raupjš}}、{{l|lv|rupjš}}、{{l|lv|negluds}}、{{l|lv|skarbs}}
=====反义词=====
* {{sense|尖锐}} {{l|lv|truls}}、{{l|lv|neass}}
* {{sense|严厉刻薄}} {{l|lv|gluds}}、{{l|lv|maigs}}、{{l|lv|mīksts}}
=====衍生词汇=====
* {{l|lv|asums}}
===参考资料===
<references />
{{topics|lv|簡單機械|觸覺|計量單位}}
==卢森堡语==
===动词===
{{head|lb|動詞變位形式}}
# {{infl of|lb|sinn||3|s|pres}}
==曼岛语==
===词源===
源自{{inh|gv|sga|ass}},{{m|sga|a|a|id=out of|t=自,离}}的阳性和中性单数形式,源自{{inh|gv|cel-pro|*exs}},源自{{inh|gv|ine-pro|*h₁eǵʰs||来自}}。对比{{cog|ga|as}}。
===副词===
{{head|gv|副詞}}
# [[出]]
===介词===
{{head|gv|介詞}}
# 从...中
====屈折====
{{gv-prep-infl
|1sg=assym
|2sg=assyd
|3sgm=ass
|3sgmem=assyn
|3sgf=assjee
|1pl=assdooin
|2pl=assdiu
|3pl=assdaue
}}
====衍生词汇====
* {{l|gv|ass y cheer}}
* {{l|gv|ass y hene}}
===代词===
{{head|gv|前置格代詞}}
# {{inflection of|gv|ec||1|p}}
====衍生词汇====
* {{l|gv|assyn}} {{qualifier|强调}}
==中古英语==
===名词===
{{head|enm|名詞}}
# {{alternative form of|enm|asshe|t=烧掉的东西}}
==书面挪威语==
===其他形式===
* {{alter|nb|Ass}} {{qual|也可首字母大写}}
===名词===
{{nb-noun-m1}}
# {{lb|nb|music}} [[A♭]]
==新挪威语==
===其他形式===
* {{alter|nn|Ass}} {{qual|也可首字母大写}}
===名词===
{{nn-noun-m1}}
# {{lb|nn|music}} [[A♭]]
==古爱尔兰语==
===其他形式===
* {{l|sga|as}}
* {{l|sga|es}}
===发音===
* {{IPA|sga|/as/}}
===代词===
{{head|sga|前置格代詞}}
# {{inflection of|sga|a||3|s|m}}
==瑞典语==
===名词===
{{sv-noun|n}}
# {{lb|sv|music}} [[A♭]]
# [[挂号信]];{{abbreviation of|sv|[[assurerad]] ([[försändelse]])}}
#:{{coord|sv|rek}}
====变格====
{{sv-infl-noun-n-zero|genitive=}}
===异序词===
* {{anagrams|sv|a=ass|s.a.s.|sas}}
{{topics|sv|郵政}}
==里菲安语==
===其他形式===
* {{alter|rif|as}}
===词源===
{{rfe|rif}}
===名词===
{{rif-noun|m|pl=ussan}}
# [[天]],一天
#: {{syn|rif|nnhar}}
# [[白天]]
#: {{syn|rif|azir}}
====变格====
{{rif-decl-noun|wass|ussan|wussan}}
====衍生词汇====
* {{l|rif|assa|t=今天}}
{{c|rif|一天裡的時刻}}
2hok1h86u1h3ov4mp2oj40v2fno86mp
Module:Category tree/entry maintenance
828
1365068
9813910
9655157
2026-06-15T20:03:00Z
TongcyDai
53191
9813910
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local raw_handlers = {}
local functions_module = "Module:fun"
local languages_module = "Module:languages"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local table_module = "Module:table"
local extend = require(table_module).extend
local is_callable = require(functions_module).is_callable
local pattern_escape = require(string_pattern_escape_module)
local replacement_escape = require(string_replacement_escape_module)
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["詞條維護"] = {
description = "正在被編輯者關注與改進的{{{langname}}}詞條,或含有{{{langname}}}術語的其他語言詞條。",
parents = {{name = "{{{langcat}}}", raw = true}},
umbrella_parents = "分類",
}
labels["entries without References header"] = {
description = "{{{langname}}} entries without a References header.",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["entries without References or Further reading header"] = {
description = "{{{langname}}} entries without a References or Further reading header.",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["不存在的詞條"] = {
description = "不符合[[Wiktionary:收錄標準|收錄標準]](CFI)的{{{langname}}}詞條。其使用{{tl|no entry|{{{langcode}}}}}模板加入本分類。",
parents = {"詞條維護"},
umbrella_parents = "分類",
}
labels["有詞源樹的詞條"] = {
description = "顯示由{{tl|etymon}}模板生成之詞源樹的{{{langname}}}詞條。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["有詞源文字的詞條"] = {
description = "顯示由{{tl|etymon}}模板生成之詞源文字的{{{langname}}}詞條。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["有etymon的詞條"] = {
description = "使用{{tl|etymon}}模板的{{{langname}}}詞條。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["詞源文字停止語言不在鏈上的詞條"] = {
description = "使用帶有{{para|text}}參數的{{tl|etymon}}模板設定為在某個語言停止,但該語言並未出現在生成的詞源鏈上的{{{langname}}}詞條。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["引用缺失etymon的詞條"] = {
description = "使用{{tl|etymon}}模板引用無法找到之etymon的{{{langname}}}詞條,原因可能是目標頁面不存在(紅鏈),或是該頁面沒有{{tl|etymon}}模板。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["引用歧義etymon的詞條"] = {
description = "使用{{tl|etymon}}模板引用etymon時未提供ID的{{{langname}}}詞條;當目標頁面包含多個{{tl|etymon}}模板時,需要提供ID來選擇正確的{{tl|etymon}}模板。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["引用ID不符之etymon的詞條"] = {
description = "使用{{tl|etymon}}模板且ID不符的{{{langname}}}詞條。例如:{{code|lang:entry<id:mismatched ID>}}。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["引用缺失ID之多個etymon的詞條"] = {
description = "使用{{tl|etymon}}模板連結至目標頁面的{{{langname}}}詞條,該頁面在同一語言下有多個{{tl|etymon}}模板,且其中至少一個模板沒有{{para|id}}。當多個{{tl|etymon}}模板共用一個語言章節時,每個模板都必須有不同的{{para|id}},以便連結與後代詞邏輯能夠區分它們。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["引用缺失etymon之詞源章節的詞條"] = {
description = "使用{{tl|etymon}}模板連結至目標頁面的{{{langname}}}詞條,該頁面在同一語言下有多個詞源章節,其中至少一個章節包含該語言的{{tl|etymon}}模板,而至少另一個詞源章節沒有。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["引用缺少後代詞章節之etymon的詞條"] = {
description = "使用{{tl|etymon}}模板引用etymon,但該etymon的來源詞條沒有「後代詞」章節的{{{langname}}}詞條。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["引用未在後代詞章節列出本詞之etymon的詞條"] = {
description = "使用{{tl|etymon}}模板引用etymon,且該etymon的來源詞條有「後代詞」章節,但未在其中列出本詞的{{{langname}}}詞條。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["需修正desctree的派生語彙"] = {
description = "{{{langname}}} descendants to be fixed in desctree.",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["詞請求"] = {
description = "Entries with [[Template:der]], [[Template:inh]], [[Template:m]] and similar templates lacking the parameter for linking to {{{langname}}} terms.",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["紅鏈"] = {
description = "指向尚未建立的{{{langname}}}詞條的連結。",
parents = {"詞條維護"},
catfix = false,
can_be_empty = true,
hidden = true,
}
labels["紅鏈/l"] = {
description = "使用模板<code>{{[[Template:l|l]]}}</code>產生的{{{langname}}}紅鏈。",
parents = {"紅鏈"},
catfix = false,
can_be_empty = true,
hidden = true,
}
labels["紅鏈/m"] = {
description = "使用模板<code>{{[[Template:m|m]]}}</code>產生的{{{langname}}}紅鏈。",
parents = {"紅鏈"},
catfix = false,
can_be_empty = true,
hidden = true,
}
labels["紅鏈/t"] = {
description = "使用模板<code>{{[[Template:t|t]]}}</code>產生的{{{langname}}}紅鏈。",
parents = {"紅鏈"},
catfix = false,
can_be_empty = true,
hidden = true,
}
labels["紅鏈/t+"] = {
description = "使用模板<code>{{[[Template:t+|t+]]}}</code>產生的{{{langname}}}紅鏈。",
parents = {"紅鏈"},
catfix = false,
can_be_empty = true,
hidden = true,
}
labels["有國際音標的詞"] = {
description = "以國際音標形式給出發音的{{{langname}}}詞彙。關於與本分類相關的請求,請見[[:Category:{{{langname}}}詞條發音請求]]。",
parents = {"詞條維護"},
}
labels["有音頻鏈接的詞"] = {
description = "以音頻鏈接形式給出發音的{{{langname}}}詞彙。",
parents = {"詞條維護"},
}
labels["terms needing to be assigned to a sense"] = {
description = "{{{langname}}} entries that have terms under headers such as \"Synonyms\" or \"Antonyms\" not assigned to a specific sense of the entry in which they appear. Use [[Template:syn]] or [[Template:ant]] to fix these.",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
--[=[
labels["有變格表的"] = {
description = "{{{langname}}} entries that contain inflection tables. For requests related to this category, see [[:Category:Requests for inflections in {{{langname}}} entries]].",
parents = {"詞條維護"},
}
]=]
labels["有詞語搭配的詞"] = {
description = "含有用{{tl|co}}等模板添加詞語搭配的{{{langname}}}詞彙。",
-- additional = "For requests related to this category, see [[:Category:Requests for collocations in {{{langname}}}]]. See also [[:Category:Requests for quotations in {{{langname}}}]] and [[:Category:Requests for example sentences in {{{langname}}}]].",
parents = {"詞條維護"},
}
labels["有使用例的詞"] = {
description = "含有用{{tl|ux}}等模板添加詞語搭配的{{{langname}}}詞彙。關於與本分類相關的請求,請見[[:Category:{{{langname}}}例句請求]]。另見[[:Category:{{{langname}}}引文請求]]。",
parents = {"詞條維護"},
}
labels["有引文的詞"] = {
description = "含有用[[Template:quote]]、[[Template:quote-book]]和[[Template:quote-journal]]等模板添加的引文的{{{langname}}}詞彙。關於與本分類相關的請求,請見[[:Category:{{{langname}}}引文請求]]。另見[[:Category:{{{langname}}}例句請求]]。",
parents = {"詞條維護"},
}
labels["標題行有紅鏈的詞"] = {
description = "在其標題行中包含紅色鏈接(即未創建的形式)的{{{langname}}}詞。",
parents = {"紅鏈"},
can_be_empty = true,
hidden = true,
}
for _, quot_type in ipairs { "引文", "使用例" } do
labels["省略翻譯的" .. quot_type] = {
description = "{{{langname}}} " .. quot_type .. " where a translation would normally be required but the translation has explicitly been omitted by specifying {{code|-}}. The translation should be supplied instead.",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
end
labels["派生形式不詳的詞"] = {
description = "使用{{tl|undefined derivation}}的法語條目。這些條目應該使用更具體的詞源模板,例如{{tl|borrowed}}或{{tl|inherited}}。",
parents = {"詞條維護"},
can_be_empty = true,
hidden = true,
}
labels["terms with red links in their inflection tables"] = {
description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their inflection tables.",
parents = {"redlinks"},
can_be_empty = true,
hidden = true,
}
for _, pos in ipairs({"名詞", "專有名詞", "動詞", "形容詞", "副詞", "分詞", "限定詞", "代詞", "數詞", "後綴"}) do
labels["標題行有紅鏈的" .. pos] = {
description = "在其標題行中包含紅色鏈接(即未創建的形式)的{{{langname}}}" .. pos .. "。",
parents = {"標題行有紅鏈的詞"},
breadcrumb = pos,
can_be_empty = true,
hidden = true,
}
labels[(pos == "動詞" and "變位表" or "變格表") .. "中含有紅鏈的" .. pos] = {
description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their inflection tables.",
parents = {"變格表中含有紅鏈的詞"},
breadcrumb = pos,
can_be_empty = true,
hidden = true,
}
end
for _, pos in ipairs { "名詞", "專有名詞", "代詞" } do
local label = "有未知或不確定複數的" .. pos
labels[label] = {
description = "{{{langname}}}中" .. label .. "。",
additional = "Terms are usually added to this category by specifying {{code|?}} as the plural. As much " ..
"is possible, a plural should be added or, if the noun is uncountable, indicated appropriately (usually " ..
"using {{code|-}} in place of the plural). Some languages support the value {{code|!}} to indicate " ..
"that a plural cannot be attested but the noun is theoretically countable.",
breadcrumb = "複數未知或不確定",
parents = {
{name = pos, sort = "unknown or uncertain plurals"},
"詞條維護",
},
}
end
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
if not data.umbrella_parents then
data.umbrella_parents = "詞條維護子分類"
end
end
local function add_manual_param_category(label, desc, addl_intro, include_addl_continuation)
labels[label] = {
description = desc or "Pages containing {{{langname}}} " .. label .. ".",
additional = addl_intro .. (not include_addl_continuation and "" or "\n\n" ..
"Note that the pages in this category are not necessarily the same as the actual term in question. This " ..
"frequently happens, for example, with English pages with translation sections, where the term that " ..
"triggers the addition of the category is one of the translations."),
parents = {"詞條維護"},
-- Set catfix = false because the page will have a mixture of native-language and
-- non-native-language pages, but include the normal native-language table of contents headers
-- because most pages are in the native language.
catfix = false,
toc_template = "{{{langcode}}}-categoryTOC",
toc_template_full = "{{{langcode}}}-categoryTOC/full",
can_be_empty = true,
hidden = true,
}
end
add_manual_param_category("以非標準文字書寫的詞", nil,
"Pages are placed here if they contain terms written in a script that isn't in the language's " ..
"list of scripts in the language data. This may mean the script should be added to the list, or that the wrong language code has been used.",
true)
add_manual_param_category("手動轉寫與自動轉寫不同的詞", nil,
"Pages are placed here if they contain terms whose transliteration has been specified manually using " ..
"{{para|tr}} or a similar parameter and is different from the transliteration which is automatically generated.",
true)
add_manual_param_category("有多餘轉寫的詞", nil,
"Pages are placed here if they contain terms whose transliteration has been specified manually using " ..
"{{para|tr}} or a similar parameter and is the same as the transliteration which is automatically generated.",
true)
add_manual_param_category("terms with non-redundant manual script codes", nil,
"Pages are placed here if they contain terms whose script code has been specified manually using " ..
"{{para|sc}} or a similar parameter and is different from the script code which is automatically generated.",
true)
add_manual_param_category("有多餘文字代碼的詞", nil,
"Pages are placed here if they contain terms whose script code has been specified manually using " ..
"{{para|sc}} or a similar parameter and is the same as the script code which is automatically generated.",
true)
add_manual_param_category("terms with non-redundant non-automated sortkeys",
"{{{langname}}} terms with non-redundant non-automated sortkeys.",
"Terms are placed here if they have been sorted using a sortkey other than the one which is automatically " ..
"generated. This can happen for two reasons:\n# A different sortkey has been specified using the {{para|sort}} " ..
"parameter.\n# One or more categories have been added using raw wikitext, which means the page's default " ..
"sortkey is used for that category. If that default sortkey is different from the automatic sortkey, then the " ..
"page will also be added here.")
add_manual_param_category("有多餘排序鍵的詞",
"{{{langname}}} terms with redundant sortkeys.",
"Terms are placed here if their sortkey has been specified using the {{para|sort}} parameter, and it the same " ..
"as the one which is automatically generated.")
add_manual_param_category("有多餘目標參數的連結",
"Pages containing {{{langname}}} links where the alt text could replace the link target, instead of being given " ..
"separately.",
"This occurs when the only difference between the link target and the alt text is that the alt text contains " ..
"diacritics (or other characters) which would have been ignored anyway had they been included in the link " ..
"target. For example, {{tl|l|la|amo|amō}} ({{l|la|amo|amō}}) is exactly the same as {{tl|l|la|amō}} " ..
"({{l|la|amō}}), because macrons are automatically stripped from Latin link targets, even though they're still " ..
"displayed.")
add_manual_param_category("忽略alt參數的連結",
"Pages containing {{{langname}}} links where the {{para|alt}} parameter has been ignored.",
"This occurs when the main linked text includes a wikilink.")
add_manual_param_category("有多餘alt參數的連結",
"Pages containing {{{langname}}} links where the {{para|alt}} parameter is redundant.",
"This occurs when the alt text makes no difference to the output. For example, {{tl|l|en|foo|foo}} " ..
"({{l|en|foo|foo}}) is exactly the same as {{tl|l|en|foo}} ({{l|en|foo}}).")
add_manual_param_category("忽略id參數的連結",
"Pages containing {{{langname}}} links where the {{para|id}} parameter has been ignored.",
"This occurs when the main linked text includes a wikilink.")
add_manual_param_category("links with redundant wikilinks",
"Pages containing {{{langname}}} links which contain a redundant wikilink.",
"This occurs if link target consists of a single wikilink, which should instead be entered in the " ..
"conventional manner without link brackets. For example, {{tl|l|en|<nowiki>[[foo]]</nowiki>}} " ..
"is the same as {{tl|l|en|foo}}, and {{tl|l|en|<nowiki>[[foo|bar]]</nowiki>}} is the same as " ..
"{{tl|l|en|foo|bar}}.\n\nThis also occurs when link templates are nested inside each other " ..
"unnecessarily: e.g. {{tl|l|en|{{tl|l|en|foo}}}}")
add_manual_param_category("links with manual fragments",
"Pages containing {{{langname}}} links where a manual link fragment has been given.",
"This occurs when the link fragment has been specified using {{code|#}} after the term, " ..
"which overrides the normal fragment generated by link templates that points to the relevant " ..
"language section.\n\nLink fragments are used to point to a specific section on a target page, and " ..
"it is preferable to use the {{para|id}} parameter to do this, since it is less likely to break if " ..
"additional content is added to the target page: for example, the fragment {{code|#Adjective}} " ..
"will start pointing to the wrong section if another language with an adjective section is added above " ..
"the intended language.")
-- Add 'umbrella_parents' key if not already present.
for _, data in pairs(labels) do
if not data.umbrella_parents then
data.umbrella_parents = "詞條維護子分類"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["詞條維護子分類"] = {
description = "Umbrella categories covering topics related to 詞條維護.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"綜合元分類",
{name = "詞條維護", is_label = true, sort = " "},
},
}
raw_categories["請求"] = {
intro = "{{shortcut|WT:CR|WT:RQ}}",
description = "各種請求分類的父分類。",
parents = {"Category:维基词典"},
}
raw_categories["各語言請求"] = {
description = "Categories with requests in various specific languages.",
additional = "{{{umbrella_msg}}}",
parents = {
{name = "請求子分類", sort = " "},
{name = "請求", sort = " "},
},
breadcrumb = "各語言",
}
raw_categories["請求子分類"] = {
description = "Umbrella categories covering topics related to requests.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"綜合元分類",
{name = "請求", sort = " "},
},
}
raw_categories["Requests for quotation by source"] = {
description = "Categories with requests for quotation, broken out by the source of the quotation.",
additional = "Some abbreviated names of sources are explained at [[Wiktionary:Abbreviated Authorities in Webster]].",
parents = {{name = "Requests for quotation", sort = "source"}},
breadcrumb = "By source",
}
raw_categories["Requests for quotation"] = {
-- FIXME
description = "Words are added to this category by the inclusion in their entries of {{temp|rfv-quote}}.",
parents = {{name = "Requests", sort = "quotation"}},
breadcrumb = "Quotation",
}
raw_categories["Requests for date by source"] = {
description = "Categories with requests for date, broken out by the source of the quotation whose date is sought.",
parents = {{name = "Requests for date", sort = "source"}},
breadcrumb = "By source",
}
raw_categories["Requests for date"] = {
-- FIXME, break date requests by language and make not-hidden
description = "Requests for a date to be added to a quotation.",
additional = "To add an article to this category, use {{temp|rfdate}} or {{temp|rfdatek}} to include the author. " ..
"Please remove the template from the article once the date has been provided. Articles are also added automatically by " ..
"templates such as {{temp|quote-book}} if the year= parameter is not provided. Providing the parameter in each case on " ..
"the page automatically removes the article from this category. See [[Wiktionary:Quotations]] for information about " ..
"formatting dates and quotations.",
parents = {{name = "Requests", sort = "date"}},
breadcrumb = "Date",
hidden = true,
}
raw_categories["各語言翻譯詞"] = {
description = "Terms with translations, sorted by language.",
parents = {{name = "詞條維護子分類", sort = "translations by language"}},
breadcrumb = "翻譯",
}
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
-- This array consists of category match specs. Each spec contains one or more properties, whose values are strings
-- that may contain references to other properties using the {{{PROPERTY}}} syntax. Each such spec should have at least
-- a `regex` property that matches the name of the category. Capturing groups in this regex can be referenced in other
-- properties using {{{1}}} for the first group, {{{2}}} for the second group, etc. Property expansion happens
-- recursively if needed (i.e. a property can reference another property, which in turn references a third property).
--
-- If there is a `language_name` propery, it specifies the language name (and will typically be a reference to a
-- capturing group from the `regex` property); if not specified, it defaults to "{{{1}}}" unless the `nolang` property
-- is set, in which case there is no language name derivable from the category name. The language name must be the
-- canonical name of a recognized language, or an error is thrown. Based on the language name, the `language_code` and
-- `language_object` properties are automatically filled in.
--
-- If the `regex` values of multiple category specs match, the first one takes precedence.
--
-- Recognized or predefined properties:
--
-- `pagename`: Current pagename.
-- `regex`: See above.
-- `1`, `2`, `3`, ...: See above.
-- `language_name`, `language_code`, `language_object`: See above.
-- `nolang`: See above.
-- `description`: Override the description (normally taken directly from the pagename).
-- `template_name`: Name of template which generates this category.
-- `template_sample_call`: Syntax for calling the template. Defaults to "{{{template_name}}}|{{{language_code}}}".
-- Used to display an example template call and the output of this call.
-- `template_actual_sample_call`: Syntax for calling the template. Takes precedence over `template_sample_call` when
-- generating example template output (but not when displaying an example template call) and is intended for a
-- template call that uses the |nocat=1 parameter.
-- `template_example_output`: Override the text that displays example template output (see `template_sample_call`).
-- `additional_template_description`: Extra text to be displayed after the example template output.
-- `parents`: Parent categories. Should be a list of elements, each of which is an object containing at least a name=
-- and sort= field (same format as parents= for regular raw categories, except that the name= and sort= field will
-- have {{{PROPERTY}}} references expanded). If no parents are specified, and the pagename is of the form
-- "Requests for FOO by language", the parent will be "Request subcategories by language" with FOO as the sort key.
-- Otherwise, the `language_name` property must exist, and the parent will be "Requests concerning LANGNAME" with
-- the pagename minus any initial "Requests for " as the sort key.
-- `umbrella`: Parent all-language category. Sort key is based on the language name.
-- `breadcrumb`: Specify the breadcrumb. If `parents` is given, there is no default (i.e. it will end up being the
-- pagename). Otherwise, if the pagename is of the form "Requests for FOO by language", "Requests for FOO in BAR",
-- or "Requests for FOO", it will be FOO.
-- `not_hidden_category`: Don't hide the category.
-- `catfix`: Same as `catfix` in regular labels and raw categories, except that request-specific {{{PROPERTY}}} syntax
-- is expanded.
-- `toc_template`, `toc_template_full`: Same as the corresponding fields in regular labels and raw categories, except
-- that request-specific {{{PROPERTY}}} syntax is expanded.
--
-- An actual template call can be inserted into a string using the syntax <<{{TEMPLATE|ARG1|ARG2|...}}>>.
local function script_name_to_code(name)
local sc = require(scripts_module).getByCanonicalName(name)
if not sc then
error("Unrecognized script name '" .. name .. "'")
end
return sc:getCode()
end
local requests_categories = {
{
regex = "^(.+)相關請求$",
allow_etym_lang = true,
description = "需要有相關經驗的編者參與的{{{1}}}詞條。",
parents = {{name = "詞條維護", is_label = true, sort = "請求"}},
umbrella = "各語言請求",
breadcrumb = "請求",
not_hidden_category = true
},
{
regex = "^(.+)詞條詞源請求$",
allow_etym_lang = true,
umbrella = "各語言詞源請求",
template_name = "rfe",
},
{
regex = "^Requests for expansion of etymologies in (.+) entries$",
umbrella = "Requests for expansion of etymologies by language",
template_name = "etystub",
},
{
regex = "^(.+)詞條發音請求",
umbrella = "各語言發音請求",
template_name = "rfp",
},
{
regex = "^(.+)詞條發音音訊檔案請求$",
umbrella = "各語言發音音訊檔案請求",
template_name = "rfap",
},
{
regex = "^(.+)詞條定義請求",
umbrella = "各語言定義請求",
template_name = "rfdef",
},
{
regex = "^Requests for clarification of definitions in (.+) entries$",
umbrella = "Requests for clarification of definitions by language",
template_name = "rfclarify",
},
{
-- This is for part-of-speech-specific categories such as
-- "Requests for inflections in Northern Ndebele noun entries" or
-- "Requests for accents in Ukrainian proper noun entries".
-- Here and below, we assume that the part of speech is begins with
-- a lowercase letter, while the preceding language name ends in a
-- capitalized word. Note that this entry comes before the
-- following one and takes precedence over it.
regex = "^(.-)([名動形副專][容有]?[名]?詞)詞條屈折請求$",
parents = {{name = "{{{language_name}}}詞條屈折請求", sort = "{{{2}}}"}},
umbrella = "各語言{{{2}}}屈折請求",
breadcrumb = "{{{2}}}",
template_name = "rfinfl",
template_sample_call = "{{rfinfl|{{{language_code}}}|{{{2}}}}}",
},
{
regex = "^(.+)詞條屈折請求$",
umbrella = "各語言屈折請求",
template_name = "rfinfl",
},
{
regex = "^各語言(.+)屈折請求$",
nolang = true,
},
{
regex = "^Requests for tone in (.-) ([a-z]+[a-z ]*) entries$",
parents = {{name = "Requests for tone in {{{language_name}}} entries", sort = "{{{2}}}"}},
umbrella = "Requests for tone of {{{2}}}s by language",
breadcrumb = "{{{2}}}",
template_name = "rftone",
template_sample_call = "{{rftone|{{{language_code}}}|{{{2}}}}}",
},
{
regex = "^Requests for tone in (.+) entries$",
umbrella = "Requests for tone by language",
template_name = "rftone",
},
{
regex = "^Requests for tone of (.+) by language$",
nolang = true,
},
{
regex = "^Requests for accents in (.-) ([a-z]+[a-z ]*) entries$",
parents = {{name = "Requests for accents in {{{language_name}}} entries", sort = "{{{2}}}"}},
umbrella = "Requests for accents of {{{2}}}s by language",
breadcrumb = "{{{2}}}",
template_name = "rfaccents",
template_sample_call = "{{rfaccents|{{{language_code}}}|{{{2}}}}}",
},
{
regex = "^Requests for accents in (.+) entries$",
umbrella = "Requests for accents by language",
template_name = "rfaccents",
},
{
regex = "^Requests for accents of (.+) by language$",
nolang = true,
},
{
regex = "^Requests for aspect in (.-) ([a-z]+[a-z ]*) entries$",
parents = {{name = "Requests for aspect in {{{language_name}}} entries", sort = "{{{2}}}"}},
umbrella = "Requests for aspect of {{{2}}}s by language",
breadcrumb = "{{{2}}}",
template_name = "rfaspect",
template_sample_call = "{{rfaspect|{{{language_code}}}|{{{2}}}}}",
},
{
regex = "^Requests for aspect in (.+) entries$",
umbrella = "Requests for aspect by language",
template_name = "rfaspect",
},
{
regex = "^Requests for aspect of (.+) by language$",
nolang = true,
},
{
regex = "^Requests for gender in (.-) ([a-z]+[a-z ]*) entries$",
parents = {{name = "Requests for gender in {{{language_name}}} entries", sort = "{{{2}}}"}},
umbrella = "Requests for gender of {{{2}}}s by language",
breadcrumb = "{{{2}}}",
template_name = "rfgender",
template_sample_call = "{{rfgender|{{{language_code}}}|{{{2}}}}}",
},
{
regex = "^(.+)詞條性別請求",
umbrella = "各語言性別請求",
template_name = "rfgender",
},
{
regex = "^Requests for gender of (.+) by language$",
nolang = true,
},
{
regex = "^Requests for example sentences in (.+)$",
umbrella = "Requests for example sentences by language",
template_name = "rfex",
},
{
regex = "^([^各].+)引文請求$",
umbrella = "各語言引文請求",
template_name = "rfquote",
},
{
regex = "^([^各].+)使用例翻譯請求$",
umbrella = "各語言使用例翻譯請求",
breadcrumb = "使用例翻譯",
template_name = "t-needed",
template_sample_call = "{{t-needed|{{{language_code}}}|usex=1}}",
template_actual_sample_call = "{{t-needed|{{{language_code}}}|usex=1|nocat=1}}",
additional_template_description = "如果使用例是外語並且缺少翻譯,{{temp|ux}}、{{temp|uxi}}、{{temp|quote}}、{{temp|Q}}和{{temp|ja-usex}}模板會自動將頁面添加到此分類中。"
},
{
regex = "^([^各].+)引文翻譯請求$",
umbrella = "各語言引文翻譯請求",
breadcrumb = "引文翻譯",
template_name = "t-needed",
template_sample_call = "{{t-needed|{{{language_code}}}|quote=1}}",
template_actual_sample_call = "{{t-needed|{{{language_code}}}|quote=1|nocat=1}}",
additional_template_description = "如果使用例是外語並且缺少翻譯,{{temp|quote}}和{{temp|Q}}模板會自動將頁面添加到此分類中。"
},
{
regex = "^([^各].+)翻譯請求$",
umbrella = "各語言翻譯請求",
template_name = "t-needed",
catfix = "en",
},
{
regex = "^([^各].+)翻譯檢查請求$",
umbrella = "各語言翻譯檢查請求",
breadcrumb = "翻譯檢查",
template_name = "t-check",
template_sample_call = "{{t-check|{{{language_code}}}|example}}",
template_example_output = "",
catfix = "en",
},
{
regex = "^(.+)詞轉寫請求",
umbrella = "各語言轉寫請求",
breadcrumb = "轉寫請求",
template_name = "rftranslit",
additional_template_description = "如果範例是沒有自動轉寫的語言(例如希伯來語和波斯語)," ..
"則 {{tl|head}} 模板及大量特定於該語言的標題行模板變體會自動將頁面加入至此分類。",
},
{
regex = "^(.+)詞原生文字請求$",
allow_etym_lang = true,
etym_parents = {
{name = "{{{parent_language_name}}}詞原生文字請求", sort = "{{{1}}}"},
{name = "{{{language_name}}}相關請求", sort = "native script"},
},
umbrella = "各語言原生文字請求",
template_name = "rfscript",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "使用 {{tl|l}}、{{tl|m}} 和 {{tl|t}} 等模板時,若缺少條目本體但提供了轉寫,會自動將頁面放入此分類。"
},
{
regex = "^(.+)使用例原生文字請求$",
umbrella = "各語言使用例原生文字請求",
template_name = "rfscript",
template_sample_call = "{{rfscript|{{{language_code}}}|usex=1}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|usex=1|nocat=1}}",
catfix = false,
additional_template_description = "使用 {{tl|ux}} 和 {{tl|uxi}} 模板時,如果例子本身缺失但提供了翻譯,會自動將頁面添加到此分類。"
},
{
regex = "^(.+)引文原生文字請求$",
umbrella = "各語言引文原生文字請求",
template_name = "rfscript",
template_sample_call = "{{rfscript|{{{language_code}}}|quote=1}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|quote=1|nocat=1}}",
catfix = false,
additional_template_description = "使用{{tl|quote}} 和 {{code|<nowiki>{{quote-*}}</nowiki>}} 等模板時,如果引文本身缺失但提供了翻譯,會自動將頁面添加到此分類。"
},
{
regex = "^(.+)詞(.+[文名母])請求$", -- 片假名?
language_name = "{{{1}}}",
allow_etym_lang = true,
parents = {{name = "{{{language_name}}}詞原生文字請求", sort = "{{{2}}}"}},
etym_parents = {
{name = "{{{language_name}}}詞原生文字請求", sort = "{{{2}}}"},
{name = "{{{parent_language_name}}}詞{{{2}}}請求", sort = "{{{language_name}}}"},
{name = "{{{language_name}}}相關請求", sort = "{{{2}}} script"},
},
umbrella = "各語言{{{2}}}請求",
breadcrumb = "{{{2}}}",
etym_breadcrumb = "{{{2}}}",
template_name = "rfscript",
-- NOTE: The following is used in `template_sample_call` and `template_actual_sample_call`, meaning the
-- conversion of script name to script code needs to be done using an inline function like this, instead of
-- a {{#invoke:...}} template call.
script_code = function(items)
return script_name_to_code(items["2"])
end,
template_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}}}",
template_actual_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}|nocat=1}}",
catfix = false,
additional_template_description = "使用 {{tl|l}}、{{tl|m}} 和 {{tl|t}} 等模板時,若缺少條目本體但提供了轉寫,會自動將頁面放入此分類。"
},
{
regex = "^各語言(.+[文名母])請求$",
parents = {{name = "各語言文字請求", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
},
{
regex = "^各語言文字請求$",
nolang = true,
},
{
regex = "^Requests for images in (.+) entries$",
umbrella = "Requests for images by language",
template_name = "rfi",
},
{
regex = "^Requests for references for (.+) terms$",
umbrella = "Requests for references by language",
template_name = "rfref",
},
{
regex = "^Requests for references for etymologies in (.+) entries$",
parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "etymologies"}},
umbrella = "Requests for references for etymologies by language",
breadcrumb = "Etymologies",
template_name = "rfv-etym",
},
{
regex = "^Requests for references for pronunciations in (.+) entries$",
parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "pronunciations"}},
umbrella = "Requests for references for pronunciations by language",
breadcrumb = "Pronunciations",
template_name = "rfv-pron",
},
{
regex = "^需要注意的(.+)詞$",
umbrella = "需要注意的詞",
template_name = "attention",
template_example_output = "This template does not generate any text in entries.",
-- These pages typically contain a mixture of English and native-language entries, so disable catfix.
catfix = false,
-- Setting catfix = false will normally trigger the English table of contents template.
-- We still want the native-language table of contents template, though.
toc_template = "{{{language_code}}}-categoryTOC",
toc_template_full = "{{{language_code}}}-categoryTOC/full",
},
{
regex = "^Requests for cleanup in (.+) entries$",
umbrella = "Requests for cleanup by language",
template_name = "rfc",
template_actual_sample_call = "{{rfc|{{{language_code}}}|nocat=1}}",
},
{
regex = "^Requests for cleanup of Pronunciation N headers in (.+) entries$",
umbrella = "Requests for cleanup of Pronunciation N headers by language",
template_name = "rfc-pron-n",
template_actual_sample_call = "{{rfc-pron-n|{{{language_code}}}|nocat=1}}",
template_example_output = "This template does not generate any text in entries.",
additional_template_description = [=[
The purpose of this category is to tag entries that use headers with "Pronunciation" and a number.
While these headers and structure are sometimes used, they are not specifically prescribed by [[WT:ELE]]. No complete proposal has yet been made on how they should work, what the semantics are, or how they interact with multiple etymologies. As a result they should generally be avoided. Instead, merge the entries (possibly under multiple Etymology sections, if appropriate), and list all pronunciations, appropriately tagged, under a Pronunciation header.
[[User:KassadBot|KassadBot]] tags these entries (or used to tag these entries, when the bot was operational). At some point if a proposal is made and adopted as policy, these entries should be reviewed.
This category is hidden.]=],
},
{
regex = "^Requests for deletion in (.+) entries$",
umbrella = "Requests for deletion by language",
template_name = "rfd",
template_actual_sample_call = "{{rfd|{{{language_code}}}|nocat=1}}",
},
{
regex = "^Requests for verification in (.+) entries$",
umbrella = "Requests for verification by language",
template_name = "rfv",
},
{
regex = "^Requests for attention in etymologies in (.+) entries$",
umbrella = "Requests for attention in etymologies by language",
},
{
regex = "^Requests for quotation/(.+)$",
description = "Requests for a quotation or for quotations from {{{1}}}.",
parents = {{name = "Requests for quotation by source", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
template_name = "rfquotek",
template_sample_call = "{{rfquotek|LANGCODE|{{{1}}}}}",
template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nIt results in the message below:\n\n{{rfquotek|und|{{{1}}}}}",
},
{
regex = "^Requests for date/(.+)$",
description = "Requests for a date for a quotation or quotations from {{{1}}}.",
parents = {{name = "Requests for date by source", sort = "{{{1}}}"}},
breadcrumb = "{{{1}}}",
nolang = true,
template_name = "rfdatek",
template_sample_call = "{{rfdatek|LANGCODE|{{{1}}}}}",
template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nIt results in the message below:\n\n{{rfdatek|und|{{{1}}}}}",
},
}
table.insert(raw_handlers, function(data)
local langname = data.category:match("^有(.+)翻譯的詞$")
local lang = langname and require(languages_module).getByCanonicalName(langname, true, true)
if lang then
lang = lang:getCode()
return {
description = "Entries that contain translations into " .. langname .. " which were added using one of the translation templates, such as {{tl|t|" .. lang .. "|...}}, {{tl|t+|" .. lang .. "|...}}, etc.",
parents = {
{name = "詞條維護", is_label = true, lang = lang, sort = "translations"},
{
name = "各語言翻譯詞",
sort = langname
},
},
breadcrumb = "翻譯",
catfix = false,
can_be_empty = true,
hidden = true,
}
end
end)
table.insert(raw_handlers, function(data)
local items = {pagename = data.category}
local function replace_template_refs(result)
if not result then
return result
end
--[[ Replaces pseudo-template code {{{ }}} with the corresponding member
of the "items" table. Has to be done at least twice,
since some of the items are nested:
{{{template_sample_call_with_temp}}}
⇓
{{{{{template_name}}}|{{{language_code}}}}}
⇓
{{attention|en}} ]]
while result:find("{{{") do
result = mw.ustring.gsub(
result,
"{{{([^%}%{]+)}}}",
function(item)
if items[item] then
if type(items[item]) == "string" or type(items[item]) == "number" then
return items[item]
elseif is_callable(items[item]) then
return items[item](items)
else
error('The item "{{{' .. item .. '}}}" is a ' .. type(items[item]) .. ' and can\'t be concatenated. (Pagename: ' .. items.pagename .. '.)')
end
else
error('The item "' .. item .. '" was not found in the "items" table. (Pagename: ' .. items.pagename .. '.)')
end
end
)
end
-- Preprocess template code surrounded by << >>, repeatedly from inside out
-- in case we have a << >> template call nested inside of another one
-- (this doesn't currently happen). We need this mechanism at all because
-- in "Requests for SCRIPT script for LANGUAGE terms", we need to convert the
-- script to a script code before insertion into the template example code,
-- which is inside of <pre> so it won't get expanded by the normal poscatboiler
-- mechanism.
while result:find("<<") do
result = mw.ustring.gsub(
result,
"<<([^><]+)>>",
function (template_code)
return mw.getCurrentFrame():preprocess(template_code)
end
)
end
return result
end
local valid_category = false
for i, category in ipairs(requests_categories) do
local matchvals = {mw.ustring.match(items.pagename, category.regex)}
if #matchvals > 0 then
valid_category = true
for key, value in pairs(category) do
items[key] = value
end
for key, value in ipairs(matchvals) do
items["" .. key] = value
end
break
end
end
if not valid_category then
for i, category in ipairs(requests_categories) do
if items.pagename == category.umbrella then
valid_category = true
items.nolang = true
end
end
end
if not valid_category then
return nil
end
if not items.nolang then
items.language_name = items.language_name or "{{{1}}}"
items.language_name = replace_template_refs(items.language_name)
if items.etym_lang_only then
items.language_object = require("Module:etymology languages").getByCanonicalName(items.language_name)
if not items.language_object then
return nil
end
items.language_code = items.language_object:getCode()
items.parent_language_object = items.language_object:getFull()
-- Reject weird cases where etymology language has no parent.
if not items.parent_language_object then
return nil
end
items.parent_language_code = items.parent_language_object:getCode()
items.parent_language_name = items.parent_language_object:getCanonicalName()
-- Reject weird cases where the parent language has the same name as the child etymology language. In that case,
-- we'll get an infinite parent-category loop. This actually happens, e.g. with Rudbari and Bashkardi.
if items.parent_language_name == items.language_name then
return nil
end
else
mw.logObject(items)
items.language_object = require("Module:languages").getByCanonicalName(items.language_name, true,
items.allow_etym_lang)
items.language_code = items.language_object:getCode()
items.is_etym_lang = items.language_object:hasType("etymology-only")
if items.is_etym_lang then
items.parent_language_object = items.language_object:getFull()
-- Reject weird cases where etymology language has no parent.
if not items.parent_language_object then
return nil
end
items.parent_language_code = items.parent_language_object:getCode()
items.parent_language_name = items.parent_language_object:getCanonicalName()
-- Reject weird cases where the parent language has the same name as the child etymology language. In
-- that case, we'll get an infinite parent-category loop. This actually happens, e.g. with Rudbari and
-- Bashkardi.
if items.parent_language_name == items.language_name then
return nil
end
end
end
end
if items.template_name then
items.template_sample_call = items.template_sample_call or "{{{{{template_name}}}|{{{language_code}}}}}"
items.full_text_about_the_template = "要提出這個語言的這項請求,請在條目中使用這段代碼(另見[[Template:{{{template_name}}}]]的文檔):\n\n<pre>{{{template_sample_call}}}</pre>"
if items.template_example_output then
items.full_text_about_the_template = items.full_text_about_the_template .. " " .. items.template_example_output
else
items.template_actual_sample_call = items.template_actual_sample_call or items.template_sample_call
items.full_text_about_the_template = items.full_text_about_the_template .. "\n會產生下面這條消息:\n\n{{{template_actual_sample_call}}}"
end
if items.additional_template_description then
items.full_text_about_the_template = items.full_text_about_the_template .. "\n\n" .. items.additional_template_description
end
end
local parents = items.parents
local breadcrumb = items.breadcrumb and replace_template_refs(items.breadcrumb)
if parents then
for _, parent in ipairs(parents) do
parent.name = replace_template_refs(parent.name)
parent.sort = replace_template_refs(parent.sort)
end
else
local umbrella_type = items.pagename:match("^各語言(.+)請求$") or items.pagename:match("^需要(.+)的詞$")
if umbrella_type then
breadcrumb = breadcrumb or umbrella_type
parents = {{name = "請求子分類", sort = umbrella_type}}
elseif not items.language_name then
error("Internal error: Don't know how to compute parents for non-language-specific category '" .. items.pagename .. "'")
else
local default_breadcrumb = items.pagename:match("^Requests for (.+) in .*$") or items.pagename:match("^Requests for (.+)$")
breadcrumb = breadcrumb or default_breadcrumb
parents = {{name = items.language_name .. "相關請求", sort = default_breadcrumb}}
end
end
if not items.nolang then
table.insert(parents, {name = replace_template_refs(items.umbrella), sort = items.language_name})
end
local additional = replace_template_refs(items.full_text_about_the_template)
if items.pagename:find("^各語言") then
additional = "{{{umbrella_msg}}}" .. (additional and "\n\n" .. additional or "")
end
return {
description = replace_template_refs(items.description) or items.pagename .. "。",
lang = items.parent_language_code or items.language_code,
additional = additional,
parents = parents,
-- If no breadcrumb=, it will default to the category name
breadcrumb = breadcrumb,
catfix = replace_template_refs(items.catfix),
toc_template = replace_template_refs(items.toc_template),
toc_template_full = replace_template_refs(items.toc_template_full),
hidden = not items.not_hidden_category,
can_be_empty = true,
}
end)
return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
5i7nsxeowjbyt70kvli9eivnqydhlv0
dinte
0
1395111
9813872
7782999
2026-06-15T17:21:39Z
TongcyDai
53191
9813872
wikitext
text/x-wiki
==阿爾巴尼亞語==
===動詞===
{{head|sq|動詞變位形式}}
# {{inflection of|sq|di||3|s|imperfect}}
==阿羅馬尼亞語==
===詞源===
{{inh+|rup|la|dens|dēns, dentem}}。對照{{cog|ro|dinte}}。
===名詞===
{{head|rup|名詞|g=f}}
# {{alternative form of|rup|dinti}}
==伊斯特羅-羅馬尼亞語==
===詞源===
{{inh+|ruo|la|dens|dentem}}。
===名詞===
{{head|ruo|名詞}}
# [[牙齒]]
{{C|ruo|牙齒}}
==羅馬尼亞語==
===詞源===
{{inh+|ro|la|dentem}},{{m|la|dēns}} 的賓格單數,最終{{inh+|ro|ine-pro|*h₃dénts}}、{{m|ine-pro|*h₃dónts}}。對照{{cog|es|diente}}、{{cog|ca|dent}}、{{cog|fr|dent}}、{{cog|it|dente}} 以及{{cog|rup|dinti}}。
===發音===
* {{IPA|ro|[ˈdinte]}}
* {{audio|ro|LL-Q7913 (ron)-Filosoful-dinte.wav}}
* {{audio|ro|LL-Q7913 (ron)-Andreea Teodoraa-dinte.wav}}
===名詞===
{{ro-noun|m|dinți}}
# [[牙齒]]
====變格====
{{ro-noun-m-e|pl=dinți}}
====派生詞彙====
* {{l|ro|dinte de lapte}}
* {{l|ro|dința}}
* {{l|ro|dințar}}
* {{l|ro|dințat}}
* {{l|ro|dințos}}
====相關詞彙====
* {{l|ro|dental}}
* {{l|ro|dentist}}
{{C|ro|牙齒}}
ev6bmp720o17dk4tbv5gjfijz8nxwz9
bãrbat
0
1395585
9813833
5701230
2026-06-15T17:15:54Z
TongcyDai
53191
9813833
wikitext
text/x-wiki
{{also|barbat|barbât|bărbat|bărbåt|bărbåț}}
==阿羅馬尼亞語==
===其他形式===
* {{alt|rup|bãrbatu}}
===詞源===
{{inh+|rup|la|barbātus}}。對照{{cog|ro|bărbat}}。
===名詞===
{{head|rup|名詞|g=m|複數|bãrbats|定指單數|bãrbatlu|定指複數|bãrbatslji}}
# [[男人]]
#: {{syn|rup|mascur}}
#: {{ant|rup|muljari}}
# [[丈夫]]
#: {{syn|rup|mãrit}}
#: {{ant|rup|muljari}}
====派生詞彙====
* {{l|rup|bãrbãtedz}}
* {{l|rup|bãrbãtescu}}
* {{l|rup|mbãrbãtedz}}
* {{l|rup|bãrbãtami}} / {{l|rup|bãrbãtame}}
====相關詞彙====
* {{l|rup|barbã}}
* {{l|rup|bãrbutã}}
====參見====
* {{l|rup|om}}
* {{l|rup|nveastã}}
{{C|rup|男性家庭成員|男人|婚姻}}
fppvw7sle0t2zdlxw1yrhphvr2aqt32
dormio
0
1409615
9813893
9628606
2026-06-15T18:26:25Z
TongcyDai
53191
9813893
wikitext
text/x-wiki
{{also|Dormio}}
==拉丁語==
===詞源===
{{etymon|la|id=睡眠|:inh|itc-pro:*dormiō<ref:{{R:Nocentini|hw=dormire}} !!! {{R:itc:EDL|pages=179-180|head=dormiō, -īre}}>|tree=1|text=++}} 音變規律 {{m|ine-pro||*-mj-}} > {{m+|itc-pro||*-nj}} 很可能由於原始印歐語的音節劃分(syllabification)規則而未作用於本詞。帶有成音節 {{m|ine-pro||*m̥}} 的序列 {{m|ine-pro|*gʷem-|*gʷm̥y-}} 演變為 {{m|la|venio|veni-}},而帶有成音節 {{m|ine-pro||*r̥}} 的 {{m|ine-pro||*dr̥my-}} 則演變為 {{m|la||dormi-}}。如果原始印歐語形式被劃分音節為 {{m|ine-pro||*drm̥y-}},預期的拉丁語演變結果將會是 {{m|la||**dreniō}}。<ref>{{R:ine:Byrd:2015|page=141}}</ref> 同源詞包括{{cog|cu|дрѣмати||打瞌睡,打盹}}、{{cog|ru|дрема́ть}}、{{cog|sa|द्राति||睡覺}}、{{cog|grc|δαρθάνω||睡覺}}。
===發音===
* {{la-IPA|dormiō}}
===動詞===
{{la-verb|4++.pass-impers|dormiō}}
# [[睡]],[[睡覺]]
#: {{syn|la|dormītō|cubō}}
#: {{ant|la|expergīscor|vigilō}}
#: {{ux|la|Eō '''dormītum'''.|我準備去'''睡覺'''。}}
#: {{ux|la|'''Dormītūrī''' tē salūtant.|'''將要入睡'''的人向您致敬。}}
#* {{Q|la|Catullus|Carmina|5|quote=Nōbīs cum semel occidit brevis lūx, nox est perpetua ūna '''dormienda'''.|t=當短暫的光芒在我們身上落下,我們必須'''長眠'''於無盡的黑夜中。}}
#* {{Q|la|Horace|Sermones|2|1|7|quote=vērum nequeō '''dormīre'''|t=說實話,我無法'''入睡'''。}}
#* '''公元4世紀''',斯特里東的耶柔米(聖耶柔米),《武加大譯本》,24:27:
#*: {{quote|la|parum inquam '''dormiēs''' modicum '''dormitābis''' pauxillum manūs cōnserēs ut quiēscās|再'''睡'''片時,'''打盹'''片時,抱著手躺臥片時。{{small|(和合本《箴言》24:33)}}}}
====變位====
{{la-conj|4++.pass-impers|dormiō}}
====派生詞彙====
{{col|la
|addormiō
|adormīscō
|condormiō
|condormīscō
|dormīscō
|dormītō
|ēdormiō
|ēdormīscō
|indormiō
|obdormīscō
|perdormīscō
|redormiō
}}
====派生語彙====
{{top4}}
* 巴爾幹羅曼語支:
** {{desc|rup|dormu}}
** {{desc|ruo|durmi}}
** {{desc|ruq|dorm}}
** {{desc|ro|dormi|alts=1}}
* 達爾馬提亞語:
** {{l|dlm|dormir}}
* 義大利-羅曼語支:
** {{desc|co|dorma|dorme}}
**: {{desc|sdn|drummí}}
** {{desc|it|dormire}}
** {{desc|nap|dormire}}
** {{desc|sdc|drummí}}
** {{desc|scn|dòrmiri|alts=1}}
* 帕達尼亞語支:
** {{desc|egl|durmîr}}
** {{desc|fur|durmî}}
** {{desc|lld|dormir|alts=1}}
** {{desc|lmo|dormì|durmì|dòrmer}}
** {{desc|pms|deurme|durmì|drumì}}
** {{desc|rgn|durmì}}
** {{desc|rm|durmir|alts=1}}
** {{desc|vec|dormir}}
* 高盧-羅曼語支:
** {{desc|ca|dormir}}
** {{desc|frp|dormir|alt=dormir, dromir}}
** {{desctree|fro|dormir}}
** {{desctree|pro|dormir}}
* 西伊比利亞語支:
** {{desc|an|dormir}}
** {{desc|roa-ole||-}}
*** {{desc|ast|dormir}}
*** {{desc|roa-leo|dormire}}
*** {{desc|mwl|drumir}}
** {{desc|roa-opt|dormir|durmir}}
*** {{desc|gl|durmir|dormir}}
*** {{desc|pt|dormir}} {{see desc}}
** {{desc|osp|dormir}}
*** {{desc|lad|durmir}}
*** {{desc|es|dormir}}
* 海島羅曼語支:
** {{desc|sc|dormire|dormiri|drommire|drumire}}
* 借詞:
** {{desc|bor=1|is|dorma}}
{{bottom}}
===參考資料===
{{reflist}}
* {{R:la:L&S}}
* {{R:la:Elementary Lewis}}
* {{R:la:Gaffiot}}
* {{R:la:M&A}}
{{cln|la|不及物動詞}}
{{C|la|睡眠}}
0eu6hgh2uiisrte7rrd5tr9qdriex7u
9813894
9813893
2026-06-15T18:26:42Z
TongcyDai
53191
9813894
wikitext
text/x-wiki
{{also|Dormio}}
==拉丁語==
===詞源===
{{etymon|la|id=睡眠|:inh|itc-pro:*dormiō<ref:{{R:Nocentini|hw=dormire}} !!! {{R:itc:EDL|pages=179-180|head=dormiō, -īre}}>|tree=1|text=++}} 音變規律 {{m|ine-pro||*-mj-}} > {{m+|itc-pro||*-nj}} 很可能由於原始印歐語的音節劃分規則而未作用於本詞。帶有成音節 {{m|ine-pro||*m̥}} 的序列 {{m|ine-pro|*gʷem-|*gʷm̥y-}} 演變為 {{m|la|venio|veni-}},而帶有成音節 {{m|ine-pro||*r̥}} 的 {{m|ine-pro||*dr̥my-}} 則演變為 {{m|la||dormi-}}。如果原始印歐語形式被劃分音節為 {{m|ine-pro||*drm̥y-}},預期的拉丁語演變結果將會是 {{m|la||**dreniō}}。<ref>{{R:ine:Byrd:2015|page=141}}</ref> 同源詞包括{{cog|cu|дрѣмати||打瞌睡,打盹}}、{{cog|ru|дрема́ть}}、{{cog|sa|द्राति||睡覺}}、{{cog|grc|δαρθάνω||睡覺}}。
===發音===
* {{la-IPA|dormiō}}
===動詞===
{{la-verb|4++.pass-impers|dormiō}}
# [[睡]],[[睡覺]]
#: {{syn|la|dormītō|cubō}}
#: {{ant|la|expergīscor|vigilō}}
#: {{ux|la|Eō '''dormītum'''.|我準備去'''睡覺'''。}}
#: {{ux|la|'''Dormītūrī''' tē salūtant.|'''將要入睡'''的人向您致敬。}}
#* {{Q|la|Catullus|Carmina|5|quote=Nōbīs cum semel occidit brevis lūx, nox est perpetua ūna '''dormienda'''.|t=當短暫的光芒在我們身上落下,我們必須'''長眠'''於無盡的黑夜中。}}
#* {{Q|la|Horace|Sermones|2|1|7|quote=vērum nequeō '''dormīre'''|t=說實話,我無法'''入睡'''。}}
#* '''公元4世紀''',斯特里東的耶柔米(聖耶柔米),《武加大譯本》,24:27:
#*: {{quote|la|parum inquam '''dormiēs''' modicum '''dormitābis''' pauxillum manūs cōnserēs ut quiēscās|再'''睡'''片時,'''打盹'''片時,抱著手躺臥片時。{{small|(和合本《箴言》24:33)}}}}
====變位====
{{la-conj|4++.pass-impers|dormiō}}
====派生詞彙====
{{col|la
|addormiō
|adormīscō
|condormiō
|condormīscō
|dormīscō
|dormītō
|ēdormiō
|ēdormīscō
|indormiō
|obdormīscō
|perdormīscō
|redormiō
}}
====派生語彙====
{{top4}}
* 巴爾幹羅曼語支:
** {{desc|rup|dormu}}
** {{desc|ruo|durmi}}
** {{desc|ruq|dorm}}
** {{desc|ro|dormi|alts=1}}
* 達爾馬提亞語:
** {{l|dlm|dormir}}
* 義大利-羅曼語支:
** {{desc|co|dorma|dorme}}
**: {{desc|sdn|drummí}}
** {{desc|it|dormire}}
** {{desc|nap|dormire}}
** {{desc|sdc|drummí}}
** {{desc|scn|dòrmiri|alts=1}}
* 帕達尼亞語支:
** {{desc|egl|durmîr}}
** {{desc|fur|durmî}}
** {{desc|lld|dormir|alts=1}}
** {{desc|lmo|dormì|durmì|dòrmer}}
** {{desc|pms|deurme|durmì|drumì}}
** {{desc|rgn|durmì}}
** {{desc|rm|durmir|alts=1}}
** {{desc|vec|dormir}}
* 高盧-羅曼語支:
** {{desc|ca|dormir}}
** {{desc|frp|dormir|alt=dormir, dromir}}
** {{desctree|fro|dormir}}
** {{desctree|pro|dormir}}
* 西伊比利亞語支:
** {{desc|an|dormir}}
** {{desc|roa-ole||-}}
*** {{desc|ast|dormir}}
*** {{desc|roa-leo|dormire}}
*** {{desc|mwl|drumir}}
** {{desc|roa-opt|dormir|durmir}}
*** {{desc|gl|durmir|dormir}}
*** {{desc|pt|dormir}} {{see desc}}
** {{desc|osp|dormir}}
*** {{desc|lad|durmir}}
*** {{desc|es|dormir}}
* 海島羅曼語支:
** {{desc|sc|dormire|dormiri|drommire|drumire}}
* 借詞:
** {{desc|bor=1|is|dorma}}
{{bottom}}
===參考資料===
{{reflist}}
* {{R:la:L&S}}
* {{R:la:Elementary Lewis}}
* {{R:la:Gaffiot}}
* {{R:la:M&A}}
{{cln|la|不及物動詞}}
{{C|la|睡眠}}
9rcchr6sqakqxyrf9dxx61k9mraconl
9813895
9813894
2026-06-15T18:27:40Z
TongcyDai
53191
9813895
wikitext
text/x-wiki
{{also|Dormio}}
==拉丁語==
===詞源===
{{etymon|la|id=睡|:inh|itc-pro:*dormiō<ref:{{R:Nocentini|hw=dormire}} !!! {{R:itc:EDL|pages=179-180|head=dormiō, -īre}}>|tree=1|text=++}} 音變規律 {{m|ine-pro||*-mj-}} > {{m+|itc-pro||*-nj}} 很可能由於原始印歐語的音節劃分規則而未作用於本詞。帶有成音節 {{m|ine-pro||*m̥}} 的序列 {{m|ine-pro|*gʷem-|*gʷm̥y-}} 演變為 {{m|la|venio|veni-}},而帶有成音節 {{m|ine-pro||*r̥}} 的 {{m|ine-pro||*dr̥my-}} 則演變為 {{m|la||dormi-}}。如果原始印歐語形式被劃分音節為 {{m|ine-pro||*drm̥y-}},預期的拉丁語演變結果將會是 {{m|la||**dreniō}}。<ref>{{R:ine:Byrd:2015|page=141}}</ref> 同源詞包括{{cog|cu|дрѣмати||打瞌睡,打盹}}、{{cog|ru|дрема́ть}}、{{cog|sa|द्राति||睡覺}}、{{cog|grc|δαρθάνω||睡覺}}。
===發音===
* {{la-IPA|dormiō}}
===動詞===
{{la-verb|4++.pass-impers|dormiō}}
# [[睡]],[[睡覺]]
#: {{syn|la|dormītō|cubō}}
#: {{ant|la|expergīscor|vigilō}}
#: {{ux|la|Eō '''dormītum'''.|我準備去'''睡覺'''。}}
#: {{ux|la|'''Dormītūrī''' tē salūtant.|'''將要入睡'''的人向您致敬。}}
#* {{Q|la|Catullus|Carmina|5|quote=Nōbīs cum semel occidit brevis lūx, nox est perpetua ūna '''dormienda'''.|t=當短暫的光芒在我們身上落下,我們必須'''長眠'''於無盡的黑夜中。}}
#* {{Q|la|Horace|Sermones|2|1|7|quote=vērum nequeō '''dormīre'''|t=說實話,我無法'''入睡'''。}}
#* '''公元4世紀''',斯特里東的耶柔米(聖耶柔米),《武加大譯本》,24:27:
#*: {{quote|la|parum inquam '''dormiēs''' modicum '''dormitābis''' pauxillum manūs cōnserēs ut quiēscās|再'''睡'''片時,'''打盹'''片時,抱著手躺臥片時。{{small|(和合本《箴言》24:33)}}}}
====變位====
{{la-conj|4++.pass-impers|dormiō}}
====派生詞彙====
{{col|la
|addormiō
|adormīscō
|condormiō
|condormīscō
|dormīscō
|dormītō
|ēdormiō
|ēdormīscō
|indormiō
|obdormīscō
|perdormīscō
|redormiō
}}
====派生語彙====
{{top4}}
* 巴爾幹羅曼語支:
** {{desc|rup|dormu}}
** {{desc|ruo|durmi}}
** {{desc|ruq|dorm}}
** {{desc|ro|dormi|alts=1}}
* 達爾馬提亞語:
** {{l|dlm|dormir}}
* 義大利-羅曼語支:
** {{desc|co|dorma|dorme}}
**: {{desc|sdn|drummí}}
** {{desc|it|dormire}}
** {{desc|nap|dormire}}
** {{desc|sdc|drummí}}
** {{desc|scn|dòrmiri|alts=1}}
* 帕達尼亞語支:
** {{desc|egl|durmîr}}
** {{desc|fur|durmî}}
** {{desc|lld|dormir|alts=1}}
** {{desc|lmo|dormì|durmì|dòrmer}}
** {{desc|pms|deurme|durmì|drumì}}
** {{desc|rgn|durmì}}
** {{desc|rm|durmir|alts=1}}
** {{desc|vec|dormir}}
* 高盧-羅曼語支:
** {{desc|ca|dormir}}
** {{desc|frp|dormir|alt=dormir, dromir}}
** {{desctree|fro|dormir}}
** {{desctree|pro|dormir}}
* 西伊比利亞語支:
** {{desc|an|dormir}}
** {{desc|roa-ole||-}}
*** {{desc|ast|dormir}}
*** {{desc|roa-leo|dormire}}
*** {{desc|mwl|drumir}}
** {{desc|roa-opt|dormir|durmir}}
*** {{desc|gl|durmir|dormir}}
*** {{desc|pt|dormir}} {{see desc}}
** {{desc|osp|dormir}}
*** {{desc|lad|durmir}}
*** {{desc|es|dormir}}
* 海島羅曼語支:
** {{desc|sc|dormire|dormiri|drommire|drumire}}
* 借詞:
** {{desc|bor=1|is|dorma}}
{{bottom}}
===參考資料===
{{reflist}}
* {{R:la:L&S}}
* {{R:la:Elementary Lewis}}
* {{R:la:Gaffiot}}
* {{R:la:M&A}}
{{cln|la|不及物動詞}}
{{C|la|睡眠}}
2w2iyqm2ly3dw1nxs5dmy0l1ceskpk6
gyvūnas
0
1412472
9813767
9777476
2026-06-15T13:33:33Z
TongcyDai
53191
9813767
wikitext
text/x-wiki
==立陶宛語==
{{wikipedia|Gyvūnai|lang=lt}}
===詞源===
與 {{m|lt|gyvénti}} 有關。
===發音===
{{lt-pr|gyvū̃nas}}
===名詞===
{{lt-noun|m|gyvūnai|2|sg=gyvū̃nas|pl=gyvū̃nai}}
# [[動物]]
====變格====
{{lt-noun-m-as-2|gyvūn|gyvū̃n}}
[[Category:立陶宛語 動物]]
ev7roywho7zsg0lzxsvdml9dlbprafb
nebeln
0
1428339
9814434
9564729
2026-06-16T06:25:15Z
Sayonzei
40728
/* 德語 */
9814434
wikitext
text/x-wiki
{{also|Nebeln}}
{{also|Nebeln}}
==德語==
===詞源===
{{inh+|de|gmh|nebelen}}、{{m|gmh|nibelen}},{{inh+|de|goh|nibulen}}。
===發音===
* {{IPA|de|[ˈneːbl̩n]|[ˈneːbəln]}}
* {{audio|de|De-nebeln.ogg}}
* {{audio|de|De-nebeln2.ogg|a=柏林}}
* {{hyphenation|de|ne|beln}}
===動詞===
{{de-verb}}
# [[起霧]]
# 放[[煙幕]]
# [[噴霧]]
====變位====
{{de-conj}}
====相關詞彙====
* {{l|de|Nebel||霧}}
* {{l|de|Nebelung||十一月}} {{qualifier|棄用}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
ecn684fo8pthh3f24x1eyezikbkzxn7
9814435
9814434
2026-06-16T06:25:25Z
Sayonzei
40728
9814435
wikitext
text/x-wiki
{{also|Nebeln}}
==德語==
===詞源===
{{inh+|de|gmh|nebelen}}、{{m|gmh|nibelen}},{{inh+|de|goh|nibulen}}。
===發音===
* {{IPA|de|[ˈneːbl̩n]|[ˈneːbəln]}}
* {{audio|de|De-nebeln.ogg}}
* {{audio|de|De-nebeln2.ogg|a=柏林}}
* {{hyphenation|de|ne|beln}}
===動詞===
{{de-verb}}
# [[起霧]]
# 放[[煙幕]]
# [[噴霧]]
====變位====
{{de-conj}}
====相關詞彙====
* {{l|de|Nebel||霧}}
* {{l|de|Nebelung||十一月}} {{qualifier|棄用}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
b0fksn81lp35730lwsdeb4v44efr2nr
⿱女子
0
1430145
9813908
7679343
2026-06-15T19:52:25Z
鬱鬱鬱ㄓㄥ
129813
9813908
wikitext
text/x-wiki
{{wrongtitle|title=[[File:⿱女子textclear.png|30px|class=skin-invert-image|⿱女子|link=]]}}
==漢字==
{{Han char|head=[[File:⿱女子textclear.png|22px|class=skin-invert-image|⿱女子|link=]]|rn=38|rad=女|as=3|sn=6|four=|canj=|ids=⿱女子}}
[[File:⿱女子centeredclear.png|thumb|125px|「[[好]]」的異體字。]]
==漢語==
{{zh-see|好}}
===參考資料===
* {{R:twedu|A00883-003}}
f6ldi8bmmzke2neqap5jaer21c42dkm
paukštis
0
1499615
9813727
9804750
2026-06-15T13:26:53Z
TongcyDai
53191
9813727
wikitext
text/x-wiki
==立陶宛語==
{{wp|lt:}}
===其他形式===
* {{alt|lt|paukštė||方言}}
===詞源===
{{root|lt|ine-pro|*pewt-}}
源自{{cog|ine-bsl-pro|*put-|*put-, *pout-}};對比{{cog|lv|putns}} < ''*put-inas''(對比{{cog|lt|-}}方言{{m|lt|pùtinas|t=公雞}});{{cog|sla-pro|*pъtakъ|*pъtákъ}}。立陶宛語形式可以解釋為[[o-級]] ''*pout-'' + {{m|lt|-tis}},以及前置音 ''-k-''。類似的例子可對比{{m|lt|šaukštas|t=湯匙}} < ''*šaud-tas'',{{m|lt|krikstas|t=洗禮}} < ''*krist-'',{{m|lt|pūkšlė|t=蕁麻疹}} < ''*pūt-slė''。
波羅的-斯拉夫語族詞根的起源尚不清楚。Smoczynski 最初提出與{{cog|ine-pro|*peh₂w-|*put-|兒童,幼崽}} 有關聯;對比{{cog|la|putus|t=男孩}}、{{cog|sa|पुत्र|tr=putrá-|t=兒子,動物幼崽}}、{{m|sa|पोत|tr=póta|t=動物幼崽}}、{{cog|ae|𐬞𐬎𐬚𐬭𐬀|𐬞𐬎𐬚𐬭𐬀-|兒子}}。此派生過程意味著波羅的-斯拉夫語族詞彙最初必定意為「雛鳥」;對比方言{{m|lt|paũtas|t=蛋}}、{{m|lt|putýtis|t=雛鳥}}。<ref>{{w|lang=en|Wojciech Smoczyński}} ('''1990''') [http://www.baltistica.lt/index.php/baltistica/article/view/2077/1985 'Etimologijos pastabos'] [詞源學筆記], ''Baltistica'', 卷26, 第2期, 第163-164頁.</ref> 然而,他似乎後來放棄了這個詞源假說,轉而將 {{m|lt||paũkštis}} 分析為源自早期的 {{m|lt||*paukstis}} < {{m|lt||*paustis}},這將是一個名詞派生詞,源自假設的 {{m|lt||*paustytis|t=從蛋中孵出}} < {{m|lt||*paus-styti}} < {{m|lt||*paut-styti}}(源自 {{m|lt|paũtas|t=蛋}} 的名詞派生動詞)。<ref>{{R:lt:SEJL|paũkštis|443}}</ref> 在該理論中,Smoczynski 認為{{m|lt||paũtas}} 來自派生出 {{m|lt|pū̃sti|t=吹}} 的同一個詞根的[[o-級]],其本義為「膨脹之物」。<ref>{{R:lt:SEJL|paũtas|443-4}}</ref>
===發音===
{{lt-pr|paũkštis}}
===名詞===
{{lt-noun|m|paũkščiai|2|head=paũkštis}}
# [[鳥]]{{gloss|{{w|鳥綱}}的任何動物}}
# {{lb|lt|口語}} [[狡猾]]、不值得[[信任]]的[[人]]
====變格====
{{lt-noun-m-tis-2|paukš|paũkš}}
====派生詞彙====
{{col|lt
|paukščiukas
|paukštinis
|paukštiškas
|paukštidė
|paukštiena
|paukštynas
|paukščiauti
|paukštinėti
|paukštgaudys<g:m>,paukštgaudė<g:f>
|paukštininkas<g:m>,paukštininkė<g:f>
|audrapaukštis
|paukštpienė
|paukštšunis
|paukštvanagis
}}
===參考資料===
<references />
{{C|lt|人|鳥}}
5jzpjzz8ddkkqlrchtaa8difnitv4fi
gyvatė
0
1535865
9813772
9777469
2026-06-15T13:52:40Z
TongcyDai
53191
9813772
wikitext
text/x-wiki
{{also|gyvate|gyvatę}}
==立陶宛語==
{{swp|lt:+s}}
===詞源===
與 {{m|lt|gyvatà|t=生命}} 相關,源自{{der|lt|ine-bsl-pro|*gīˀwatás}},對比{{cog|sla-pro|*živòtъ|t=生命}}。詞義由「活物」發展而來。<ref>{{R:bat:EDBIL|180|gyvata}}</ref><ref>{{R:lt:ALEW|head=gyvãtė|p1.1=388|id=784}}</ref><ref>{{R:lt:LKEŽDUB}}</ref>詞根參見 {{m|lt|gývas|t=活的}}。
[[File:AD2009Aug07 Natrix helvetica 01.jpg|thumb|Gyvatė]]
===發音===
{{lt-pr|gyvãtė}}
===名詞===
{{lt-noun|f|gyvãtės|2|head=gyvãtė}}
# [[蛇]],[[長蟲]]
====變格====
{{lt-noun-f-tė-2|gyva|gyvã}}
====派生詞彙====
{{col|lt
|gyvatadatė<t:{{taxlink|Nerophis ophidion|species}}><lit:蛇針>
|gyvatbarzdė<t:{{taxlink|Ophiopogon|genus}} spp.><lit:蛇鬚>
|gyvatėdis<t:{{taxlink|Circaetus gallicus|species}}><lit:食蛇者>
|gyvatgalvis<t:蛇頭;長著蛇頭的>
|gyvatynas<t:蛇窩;多蛇的地方>
|gyvatinis<t:與蛇有關的;蜿蜒的>
|gyvatiškas<t:似蛇的;蜿蜒的>
|gyvatukas<t:盤管;穀物清潔工具>
|gyvatuodegis<t:長著蛇尾的;{{taxlink|Ophiura|genus}} spp.>
|gyvatžolė<t:{{taxlink|Bistorta|genus}} spp.><lit:蛇草>
|Gyvatė<t:[[巨蛇座]]>
|gyvatnešis<t:{{taxlink|Ophiuchus|genus}}><lit:持蛇者>
|žaliagyvatė<t:{{taxlink|Opheodrys|genus}}><lit:綠蛇>
}}
===參考資料===
<references />
===延伸閱讀===
* {{R:LKZ}}
* {{R:lt:DŽ}}
{{C|lt|蛇}}
gbxa9ucwg9e0ycg6832660gtufys5g2
Wiktionary:啤酒馆/topic list
4
1705276
9814694
9812235
2026-06-16T11:53:40Z
Cewbot
61744
[[User:Cewbot/log/20170915/configuration|生成議題列表:8個議題]]
9814694
wikitext
text/x-wiki
<!-- 本頁面由機器人自動更新。若要改進,請聯繫機器人操作者。 -->
{| class="wikitable sortable mw-collapsible" style="float:left;"
|-
! data-sort-type="number" style="font-weight: normal;" | <small>#</small> !! 💭 話題 !! <span title="發言數/發言人次 (實際上為計算簽名數)">💬</span> !! <span title="參與討論人數/發言人數">👥</span> !! 🙋 最新發言 !! data-sort-type="isoDate" | <span title="最後更新">🕒 <small>(UTC+8)</small></span>
|-
| style="text-align: right;" | 1
| style="max-width: 24em" | <small>[[:Wiktionary:啤酒馆#Subscribe_to_the_This_Month_in_Education_newsletter_-_learn_from_others_and_share_your_stories|Subscribe to the This Month in Education newsletter - learn from others and share your stories]]</small>
| style="text-align: right;background-color: #fcc;" | 0
| style="text-align: right;background-color: #fcc;" | 0
| style="background-color: #ffd;" |
| style="background-color: #ffd;" |
|-
| style="text-align: right;" | 2
| style="max-width: 24em" | <small>[[:Wiktionary:啤酒馆#Do_you_use_Wikidata_in_Wikimedia_sibling_projects?_Tell_us_about_your_experiences|Do you use Wikidata in Wikimedia sibling projects? Tell us about your experiences]]</small>
| style="text-align: right;background-color: #fcc;" | 0
| style="text-align: right;background-color: #fcc;" | 0
| style="background-color: #ffd;" |
| style="background-color: #ffd;" |
|-
| style="text-align: right;" | 3
| [[:Wiktionary:啤酒馆#Request_for_comment_(global_AI_policy)|Request for comment (global AI policy)]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-04-26T00:58:00.000Z" | 2026-04-26 <span style="color: blue;">08:58</span>
|-
| style="text-align: right;" | 4
| [[:Wiktionary:啤酒馆#台灣分會2026年4月對話時間|台灣分會2026年4月對話時間]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-04-27T22:52:00.000Z" | 2026-04-28 <span style="color: blue;">06:52</span>
|-
| style="text-align: right;" | 5
| [[:Wiktionary:啤酒馆#Template:place|Template:place]]
| style="text-align: right;" | 3
| style="text-align: right;" | 2
| style="background-color: #bbb;" | [[User:TongcyDai|TongcyDai]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-05-14T06:20:00.000Z" | 2026-05-14 <span style="color: blue;">14:20</span>
|-
| style="text-align: right;" | 6
| style="max-width: 24em" | <small>[[:Wiktionary:啤酒馆#文≠語;詞典而言,可能用【×文】%3E【×語】統一比較好。|文≠語;詞典而言,可能用【×文】>【×語】統一比較好。]]</small>
| style="text-align: right;" | 3
| style="text-align: right;" | 3
| style="background-color: #bbb;" | [[Special:Contributions/~2026-29492-30|<span style="color: #c20;">~2026-29492-30</span>]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-05-17T07:28:00.000Z" | 2026-05-17 <span style="color: blue;">15:28</span>
|-
| style="text-align: right;" | 7
| [[:Wiktionary:啤酒馆#台灣分會2026年5對話時間|台灣分會2026年5對話時間]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #ddd;" | [[User:MediaWiki message delivery|<small style="word-wrap: break-word; word-break: break-all;">MediaWiki message delivery</small>]]
| style="background-color: #ddd;" data-sort-type="isoDate" data-sort-value="2026-05-26T14:09:00.000Z" | 2026-05-26 <span style="color: blue;">22:09</span>
|-
| style="text-align: right;" | 8
| [[:Wiktionary:啤酒馆#請立刻參與2026年U4C選舉投票|請立刻參與2026年U4C選舉投票]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #ddd;" | [[User:Keegan (WMF)|Keegan (WMF)]]
| style="background-color: #ddd;" data-sort-type="isoDate" data-sort-value="2026-05-27T17:15:00.000Z" | 2026-05-28 <span style="color: blue;">01:15</span>
|}
{| class="wikitable mw-collapsible mw-collapsed" style="float: left; margin-left: .5em;;{{#if:{{{no_time_legend|}}}|display:none;|}}"
! title="From the latest bot edit" | 發言更新圖例
|-
| style="background-color: #efe;" |
* 最近一小時內
|-
| style="background-color: #eef;" |
* 最近一日內
|-
| |
* 一週內
|-
| style="background-color: #ddd;" |
* 一個月內
|-
| style="background-color: #bbb;" |
* 逾一個月
|-
! 特殊狀態
|-
| style="text-decoration: line-through" | 已移動至其他頁面<br />或完成討論之議題
|-
! 手動設定
|-
| style="max-width: 12em;" | <small>當列表出現異常時,<br />請先檢查[[User:Cewbot/log/20170915/configuration|設定]]是否有誤</small>
|-
|}
{{Clear}}
qigf5zsaa63a89umc50iu7x77m9wvzn
Template:RQ:Fielding Tom Jones
10
1713473
9814634
9116722
2026-06-16T08:24:13Z
TongcyDai
53191
9814634
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = [[w:亨利·菲尔丁|Henry Fielding]]
|chapter = {{#invoke:string|replace|{{{chapter|{{{3|{{#invoke:string|replace|{{{chapter|{{{3|}}}}}}|'|’}}}}}}}}|’’|''}}
|title = [[w:en:The History of Tom Jones, a Foundling|The History of Tom Jones, a Foundling]]
|trans-title = {{w|湯姆·瓊斯 (小說)|棄兒湯姆·瓊斯的歷史}}
|location = London
|publisher = [[w:en:Andrew Millar|A[ndrew] Millar]],{{nb...|over-against Catharine-street in the Strand}}
|year = 1749
|volume = {{#switch:{{uc:{{{volume|}}}{{{1|}}}}}
| I|II|III|IV|V|VI = {{uc:{{{volume|{{{1|}}}}}}}}
| {{maintenance line|<nowiki>please specify |volume=I to VI</nowiki>}}
}}
|section = {{#if:{{{book|}}}{{{2|}}}
| book {{{book|{{{2|}}}}}}
}}
|pageparam = 4
|pageurl = https://books.google.com/books?id={{#switch:{{uc:{{{volume|}}}{{{1|}}}}}
| I = o51
| II = IZ9
| III = 4J9
| IV = U6B
| V = u6B
| VI = Q6F
}}aAAAAMAAJ&pg=PA{{{page|{{{pageref|{{{4|}}}}}}}}}
|oclc = 928184292
|textparam = 5
|allowparams = chapter,3,volume,1,book,2,pageref,translation,t,
}}<noinclude>{{documentation}}</noinclude>
2am7jl93n71yjladglvokd93zm25xkd
9814635
9814634
2026-06-16T08:25:01Z
TongcyDai
53191
9814635
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = [[w:亨利·菲尔丁|Henry Fielding]]
|chapter = {{#invoke:string|replace|{{{chapter|{{{3|{{#invoke:string|replace|{{{chapter|{{{3|}}}}}}|'|’}}}}}}}}|’’|''}}
|title = [[w:en:The History of Tom Jones, a Foundling|The History of Tom Jones, a Foundling]]
|trans-title = {{w|湯姆·瓊斯 (小說)|棄兒湯姆·瓊斯的歷史}}
|location = London
|publisher = [[w:en:Andrew Millar|A[ndrew] Millar]],{{nb...|over-against Catharine-street in the Strand}}
|year = 1749
|volume = {{#switch:{{uc:{{{volume|}}}{{{1|}}}}}
| I|II|III|IV|V|VI = {{uc:{{{volume|{{{1|}}}}}}}}
| {{maintenance line|<nowiki>please specify |volume=I to VI</nowiki>}}
}}
|section = {{#if:{{{book|}}}{{{2|}}}
| book {{{book|{{{2|}}}}}}
}}
|pageparam = 4
|pageurl = https://books.google.com/books?id={{#switch:{{uc:{{{volume|}}}{{{1|}}}}}
| I = o51
| II = IZ9
| III = 4J9
| IV = U6B
| V = u6B
| VI = Q6F
}}aAAAAMAAJ&pg=PA{{{page|{{{pageref|{{{4|}}}}}}}}}
|oclc = 928184292
|textparam = 5
|allowparams = chapter,3,volume,1,book,2,pageref
|propagateparams=translation,t
}}<noinclude>{{documentation}}</noinclude>
i5403iv9r886vauzttfyixj0utn5kd3
9814637
9814635
2026-06-16T08:25:31Z
TongcyDai
53191
9814637
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = [[w:亨利·菲尔丁|Henry Fielding]]
|chapter = {{#invoke:string|replace|{{{chapter|{{{3|{{#invoke:string|replace|{{{chapter|{{{3|}}}}}}|'|’}}}}}}}}|’’|''}}
|title = [[w:en:The History of Tom Jones, a Foundling|The History of Tom Jones, a Foundling]]
|trans-title = {{w|湯姆·瓊斯 (小說)|棄兒湯姆·瓊斯的歷史}}
|location = London
|publisher = [[w:en:Andrew Millar|A[ndrew] Millar]],{{nb...|over-against Catharine-street in the Strand}}
|year = 1749
|volume = {{#switch:{{uc:{{{volume|}}}{{{1|}}}}}
| I|II|III|IV|V|VI = {{uc:{{{volume|{{{1|}}}}}}}}
| {{maintenance line|<nowiki>please specify |volume=I to VI</nowiki>}}
}}
|section = {{#if:{{{book|}}}{{{2|}}}
| book {{{book|{{{2|}}}}}}
}}
|pageparam = 4
|pageurl = https://books.google.com/books?id={{#switch:{{uc:{{{volume|}}}{{{1|}}}}}
| I = o51
| II = IZ9
| III = 4J9
| IV = U6B
| V = u6B
| VI = Q6F
}}aAAAAMAAJ&pg=PA{{{page|{{{pageref|{{{4|}}}}}}}}}
|oclc = 928184292
|textparam = 5
|allowparams = chapter,3,volume,1,book,2,pageref
|propagateparams=translation,t
}}<noinclude>{{documentation}}{{quotecat|en}}</noinclude>
cshqz3wiklowurfoj5m6cfj6nvihhgq
-aĵo
0
1862767
9814658
7189398
2026-06-16T10:15:34Z
TongcyDai
53191
9814658
wikitext
text/x-wiki
{{also|ajo|ajó|aĵo|ajö|-ajo|-ajö|a'jö}}
==世界語==
===其他寫法===
* {{alter|eo|-ajho||H-系統拼寫}}
* {{alter|eo|-ajxo||X-系統拼寫}}
===詞源===
{{etymon|eo|:der|la-vul:-āticum|tree=1}}
源自{{der|eo|roa}},最終源自{{der|eo|VL.|-āticum}}。對照{{cog|fr|-age}}、{{cog|es|-aje}}、{{cog|it|-aggio}}。
===發音===
{{eo-IPA|aĵo}}
===後綴===
{{head|eo|後綴}}
# {{non-gloss definition|由其製成或具有其性質的東西。}}
#: {{suffixusex|eo|seka|t1=乾的|sekaĵo|t2=乾貨}}
#: {{suffixusex|eo|frukto|t1=水果|fruktaĵo|t2=水果做的東西}}
#: {{suffixusex|eo|nova|t1=新的|novaĵo|t2=新穎、新奇的事物}}、{{m|eo|novaĵoj|t=新聞}}
====派生詞彙====
{{suffixsee|eo}}
{{eo BRO|1}}
{{Universala Vortaro}}
====參見====
* {{l|eo|aĵo}}
hd4150hmfpipytrfvnr2z14orslsi19
兒童賣淫
0
1898843
9814323
7613998
2026-06-16T05:44:34Z
YeBoy371
43905
/* 動詞 */
9814323
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=儿童卖淫|type=22}}
{{zh-wp}}
===發音===
{{zh-pron
|m=értóng màiyín
|c=ji4 tung4 maai6 jam4
}}
===名詞===
{{zh-noun}}
# 以[[金錢]]或其他代價[[誘拐]]或提供[[兒童]]與其或其他人進行[[性行為]]的舉動
====翻譯====
{{trans-top|涉及兒童的賣淫行為}}
* 丹麥語英語:{{t|da|børneprostitution|c}}
* 英語:{{t+|en|child prostitution}}
* 日語:{{t|ja|児童売春|tr=じどう ばいしゅん, jidō baishun}}
* 挪威語:{{t|no|barneprostitusjon|m}}
* 波蘭語: {{t|pl|dziecięca prostytucja|f}}
* 泰語: {{t|th|โสเภณีเด็ก|m}}
{{trans-bottom}}
{{zh-cat|孩童|賣淫}}
6uqislf27c8ni94f0x0u763pgqueybh
9814324
9814323
2026-06-16T05:45:28Z
YeBoy371
43905
/* 名詞 */
9814324
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=儿童卖淫|type=22}}
{{zh-wp}}
===發音===
{{zh-pron
|m=értóng màiyín
|c=ji4 tung4 maai6 jam4
}}
===名詞===
{{head|zh|名詞}}
# 以[[金錢]]或其他代價[[誘拐]]或提供[[兒童]]與其或其他人進行[[性行為]]的舉動
====翻譯====
{{trans-top|涉及兒童的賣淫行為}}
* 丹麥語英語:{{t|da|børneprostitution|c}}
* 英語:{{t+|en|child prostitution}}
* 日語:{{t|ja|児童売春|tr=じどう ばいしゅん, jidō baishun}}
* 挪威語:{{t|no|barneprostitusjon|m}}
* 波蘭語: {{t|pl|dziecięca prostytucja|f}}
* 泰語: {{t|th|โสเภณีเด็ก|m}}
{{trans-bottom}}
{{zh-cat|孩童|賣淫}}
2jlf9n88kj81cc7h3vltt0n87cw96h2
9814325
9814324
2026-06-16T05:59:42Z
Sayonzei
40728
/* 漢語 */
9814325
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=儿童卖淫|type=22}}
{{zh-wp}}
===發音===
{{zh-pron
|m=értóng màiyín
|c=ji4 tung4 maai6 jam4
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# 以[[金錢]]或其他代價[[誘拐]]或提供[[兒童]]與其或其他人進行[[性行為]]的舉動
====翻譯====
{{trans-top|涉及兒童的賣淫行為}}
* 丹麥語英語:{{t|da|børneprostitution|c}}
* 英語:{{t+|en|child prostitution}}
* 日語:{{t|ja|児童売春|tr=じどう ばいしゅん, jidō baishun}}
* 挪威語:{{t|no|barneprostitusjon|m}}
* 波蘭語: {{t|pl|dziecięca prostytucja|f}}
* 泰語: {{t|th|โสเภณีเด็ก|m}}
{{trans-bottom}}
{{zh-cat|孩童|賣淫}}
6guqyu6ucqzeafq19qb9m2v4rb2uji2
Module:Affix/pseudo-loan
828
2054342
9814645
8529673
2026-06-16T10:06:45Z
TongcyDai
53191
9814645
Scribunto
text/plain
local export = {}
local debug_force_cat = false -- set to true for testing
local m_affix = require("Module:affix")
local pseudo_loan_by_source = {
["ar"] = "阿拉伯語",
["de"] = "德語",
["en"] = "英語",
["es"] = "西班牙語",
["fr"] = "法語",
["it"] = "意大利語",
["ja"] = "日語",
["la"] = "拉丁語",
}
local function get_pseudo_loan_text(lang, source, has_parts, nocap)
local langcode = lang:getCode()
local sourcecode = source:getCode()
local function glossary_pseudo_loan_link(display)
return "[[Appendix:Glossary#pseudo-loan|" .. display .. "]]"
end
local text
if langcode == "ja" and sourcecode == "en" then
text = "{{m|ja|和製英語}} (" ..
glossary_pseudo_loan_link("偽英語") .. ")"
text = mw.getCurrentFrame():preprocess(text)
elseif pseudo_loan_by_source[sourcecode] then
text = "偽" .. pseudo_loan_by_source[sourcecode]
else
text = "偽" .. source:getCanonicalName()
end
if has_parts then
text = text .. ",源自"
end
return text
end
function export.show_pseudo_loan(data)
local parts_formatted = {}
local categories = {}
if not nocat then
table.insert(categories, "源自" .. data.source:getCanonicalName() .. "的偽借詞")
table.insert(categories, "派生自" .. data.source:getCanonicalName() .. "的詞")
end
-- Make links out of all the parts
for i, part in ipairs(data.parts) do
part.part_lang = part.lang
-- When the part is in the source language, we need to use `source` so the part gets linked correctly. Otherwise,
-- `data.lang` will be used, which is correct, because the value is used as the destination language in
-- derived-from categories. An example is [[Ego-Shooter]], a German pseudo-loan from English but where the
-- first part is from Latin.
part.lang = part.lang or data.source
part.sc = part.sc or data.sc
table.insert(parts_formatted, m_affix.link_term(part, data))
end
local text_sections = {}
if not data.notext then
table.insert(text_sections, get_pseudo_loan_text(data.lang, data.source, #data.parts > 0, data.nocap))
end
table.insert(text_sections, m_affix.join_formatted_parts {
data = data, parts_formatted = parts_formatted, categories = categories}
)
return table.concat(text_sections)
end
return export
mqpzth2d39y4kpii7qst5znjzngfodv
camminus
0
2110843
9813904
9428820
2026-06-15T19:41:19Z
TongcyDai
53191
9813904
wikitext
text/x-wiki
==拉丁語==
===其他形式===
* {{alter|la|cāmīnus}}
===詞源===
{{etymon|la|title=cammīnus|:bor|cel-gau:*kamman<ety:inh<cel-pro:*kanxsman<id:步伐>>>|:af|-īnus|id=道路|tree=1}}
7世紀末首次見於西班牙文獻。{{bor+|la|cel-gau|*kamman}},派生自{{der|la|cel-pro|*kanxsman}};比較{{cog|xce|kamanom}} 和{{cog|ga|céim|t=步,程度}}。
===發音===
* {{IPA|la|/kamˈminos/|a=PIWR}}
===名詞===
{{la-noun|cammīnus<2>}} {{tlb|la|LL.|或|ML.}}
# [[道]],[[路]]
====變格====
{{la-ndecl|cammīnus<2>}}
====派生詞彙====
* {{l|VL.|*cammīnō}}
====派生語彙====
{{top2}}
* {{desc|an|camino|camín}}
* {{desc|ast|camín|caminu}}
* {{desc|ca|camí}}
* {{desc|ext|caminu}}
* {{desc|fr|chemin}}
* {{desc|it|cammino}}
* {{desc|roa-leo|camín}}
* {{desc|lij|camìn}}
* {{desc|mwl|cammino}}
* {{desc|nrf|c'mîn}}
* {{desc|oc|camin}}
* {{desctree|roa-opt|camỹo}}
* {{desc|scn|caminu}}
* {{desc|es|camino}}
* {{desc|vec|camìn|camin}}
{{bottom}}
====參見====
* {{l|la|camīnus}}
===參考資料===
* W. Meyer-Lübke: ''Romanisches etymologisches Wörterbuch''. Heidelberg: Carl Winter’s Universitätsbuchhandlung, 1911.
68r7hh33y7f9b2hijwhv7dsvf4rrah1
User:Sayonzei/Kotori
2
2129326
9814218
9813079
2026-06-16T01:34:08Z
Sayonzei
40728
9814218
wikitext
text/x-wiki
精製鳥飼料:[[User:KotoriBot]]
==列表==
===法語===
*一個-er結尾的第一類法語動詞(連同本體)理論上可產出'''40'''個新詞條。<br>
:{{col3|fr|}}<!--明日:
;需自行創建
:{{col3|fr|retransmigrer|redésentrelacer|retransfigurer|réobséder|désobséder|désamocher|réamocher|rebuissonner|débuissonner|recolmater|décolmater|désaffréter|redélester|réindividuer|recharrier|recémenter|décémenter|réabsolutiser|désabsolutiser|désacadémiser|désaccastiller|réaccompagner|désaccompagner|réagrémenter|désagrémenter|désalambiquer|désanalphabétiser|désanathématiser|réapostropher|réajourner|désajourner|redétremper|redogmatiser|dédogmatiser|réextirper|réintituler|resolutionner|resouscrire|resulfater|désulfater|réagenouiller|désagenouiller|débouillir|désaccomplir|réaccomplir|réaccoutrer}}-->
===加泰===
*一個-ar結尾的普通加泰羅尼亞語動詞(連同本體)理論上可產出'''44'''個新詞條。<br>
:{{col3|ca|}}
===葡加利===
*一個-ar結尾的普通葡萄牙語動詞(連同本體)理論上可產出'''53'''個新詞條;但需注意,過去分詞可能不在accel範圍內。<br>
:{{col3|pt|}}<!--明日:-->
===西===
*一個-ar結尾的普通西班牙語動詞(連同本體、不含合詞)理論上可產出'''58'''個新詞條。<br>
:{{col3|es|}}<!--明日:
;需自行創建
:{{col3|es|}}-->
===德語===
:{{col3|de|}}
===拉丁語===
:{{col3|la|}}<!--明日:-->
:{{col3|la|}}<!--明日:-->
===意大利語===
:{{col3|it|}}<!--明日:-->
===俄語===
:{{col3|ru|}}
:{{col3|ru|инсульт}}
3ko8aayv9hw7qgtjgk0lz0k2hhmijg4
bråț
0
2206786
9813859
7829613
2026-06-15T17:20:08Z
TongcyDai
53191
9813859
wikitext
text/x-wiki
{{also|Brat|BRAT|brat|brať|brát|braț|brät|Brät}}
==伊斯特羅-羅馬尼亞語==
===詞源===
{{inh+|ruo|la|brachium}}、{{m|la|bracchium}};源自{{der|ruo|grc|βραχίων}}。對照{{cog|ro|braț}}。
===發音===
* {{IPA|ruo|[ˈbrɔt͡s]}}
===名詞===
{{head|ruo|名詞|g=n|複數|bråțe|定指單數|bråțu|定指複數|bråțele}}
# {{lb|ruo|解剖學}} [[手臂]]
{{C|ruo|四肢}}
av6e5w5ikfm6e607d5swwfiwklhdyia
vouloir dire
0
2237310
9814220
7870179
2026-06-16T03:02:45Z
Hzy980512
19278
9814220
wikitext
text/x-wiki
==法语==
===词源===
{{lit|想说}}。对比其他{{w|罗曼语系}}语言中的大量类似构造:{{cog|it|volere dire}}、{{cog|ca|voler dir}}、{{cog|es|querer decir}}、{{cog|pt|querer dizer}}、{{cog|gl|querer dicir}}和{{cog|nl|willen zeggen}}。
===发音===
* {{fr-IPA}}
* {{audio|fr|Fr-vouloir dire.ogg|音频}}
===动词===
{{fr-verb}}
# [[意思]]是,[[意味]]着
#: {{syn|fr|signifier}}
#: {{uxi|fr|Que '''veut dire''' cette locution ?|这个词组'''是'''什么'''意思'''?}}
#: {{uxi|fr|Qu'est-ce que ça '''veut dire''' ?|那'''是'''什么'''意思'''?}}
#: {{uxi|fr|Ça ne '''veut''' rien '''dire'''.|那没什么意义。}}
====变位====
* 见{{m|fr|vouloir}},这个构式中,{{m|fr|dire}}不改变。
q3ch8jms3l065apvx3hkp60js60k8b4
-icus
0
2357688
9814668
8023944
2026-06-16T10:39:26Z
TongcyDai
53191
9814668
wikitext
text/x-wiki
{{also|Icus|ICUs}}
==荷蘭語==
===詞源===
源自 {{der|nl|la|-icus}}。
===發音===
* {{audio|nl|Nl--icus.ogg}}
===後綴===
{{head|nl|後綴}}
# 表示「……的」或「……學家/學者」
====派生詞彙====
{{suffixsee|nl}}
==拉丁語==
===詞源1===
{{etymon|la|id=形容詞後綴|:inh|itc-pro:*-ikos<id:形容詞後綴>|tree=1}}
源自 ''i''-詞幹 + {{m|la|-cus}},在某些原始情況下出現,後來被自由使用。與 {{cog|grc|-ικός}}、{{cog|gem-pro|*-gaz|*-igaz}}({{cog|goh|-}} 和 {{cog|ang|-ig}}、{{cog|got|-𐌴𐌹𐌲𐍃}})、{{cog|sa|-इक}}、{{cog|sla-pro|*-ьcь}}(最後一個已化為名詞性後綴,但最初可能也用於形容詞功能)同源。
====發音====
* {{la-IPA|-icus}} {{qualifier|倒數第三個音節重音}}
====後綴====
{{la-suffix-adj|-icus}}
# {{lb|la|構成[[形容詞]]}} ……的;關於……的;屬於……的;源自……的;與……相關的
#: {{sufex|la|cīvis|-icus|cīvicus|t1=公民|t3=公民的;與公民有關的}}
#: {{suffixusex|la|Gallus|gloss1=高盧人;高盧的|gallicus|gloss2=關於高盧或高盧人的;高盧的}}
#: {{sufex|la|bellum|-icus|bellicus|t1=戰爭|t3=戰爭的;軍事的;好戰的}}
#: {{sufex|la|taxus|-icus|taxicus|t1=紅豆杉|t3=紅豆杉的,源自紅豆杉的}}
#: {{sufex|la|imber|-icus|imbricus|t1=雨|t3=雨的;帶來雨水的}}
#: {{suffixusex|la|metallum|t1=金屬|metallicus|t2=金屬的}}
#: {{suffixusex|la|ūnus|gloss1=一|ūnicus|gloss2=單一的,獨特的}}
# {{non-gloss|用於從其他名詞構成一些[[名詞化]]的名詞}}
#: {{sufex|la|manus|-icus|manica|g1=f|t1=手|alt2=-ica|t3=袖子}}
=====用法說明=====
後綴 {{m|la|-icus}} 常加在[[名詞]]後,有時加在[[形容詞]]後,很少加在[[動詞]]後(如 {{m|la|medeor}} > {{m|la|medicus}})。它通常附加於[[族名]](國家、部落或民族的名稱),例如 {{m|la|italus|t=義大利的;義大利人}}。拉丁語中有許多以 {{m|la||-icus}} 結尾的單詞並非在拉丁語中構成,而是借自以 {{m|grc|-ικός}} 結尾的希臘語單詞:例如 {{m|la|tragicus}} 源自 {{m|grc|τραγικός}}。
=====變格=====
{{la-adecl|-icus}}
=====近義詞=====
* {{l|la|-ānus}}、{{l|la|-ēnsis}}
=====派生詞彙=====
* {{l|la|-ticus}}
** {{l|la|-āticus}}
{{suffixsee|la}}
=====派生語彙=====
{{top2}}
* {{desc|rup|-ic}}
* {{desc|af|-ies|bor=1}}
* {{desc|ast|-icu}}
* {{desc|ca|-ic}}
* {{desc|nl|-icus|bor=1}}
* {{desc|bor=1|en|-ic|-ick}} {{qualifier|棄用}}
* {{desc|fr|-ique|bor=1}}
* {{desc|gl|-ico}}
* {{desc|hu|-ikus|bor=1}}
* {{desc|it|-ico}}
* {{desc|bor=1|pt|-ico|-igo}}
* {{desc|pt|-ego}}
* {{desc|ro|-ec|-ic}}
* {{desc|scn|-icu}}
* {{desc|es|-ico|bor=1}}
* {{desc|vec|-ego}}
{{bottom}}
===詞源2===
{{etymon|la|title=-īcus|id=長|:der|ine-pro:*-kos|tree=1}}
可能最終擴展自 {{der|la|ine-pro|*-kos}}、{{m|ine-pro|*-ḱos}}([[#詞源1|詞源1]]),其中的 {{m|la||-ī-}} 可能來自工具格形式。<ref>{{R:itc:EDL|head=amō|page=39}}</ref> 對照 {{m|la|-ūcus}} 以及 {{m|la|-ītus}}。亦對照其他包含軟顎音後綴的單詞,如 {{m|la|fēlīx}}。
====發音====
* {{la-IPA|-īcus}}
====後綴====
{{qualifier|名詞}} {{la-suffix-noun|-īcus<2>|g=m|f=-īca}} {{-}} {{qualifier|形容詞}} {{la-suffix-adj|-īcus}}
# {{non-gloss|用於從動詞或名詞構成名詞}}
#: {{sufex|la|lectus|-īcus|lectīca|t1=床|alt2=-īca|t3=轎子}}
# {{non-gloss|用於從動詞或名詞構成形容詞}}
#: {{sufex|la|pudeō|-īcus|pudīcus|alt1=pudet|t1=使羞愧|t3=貞潔的,純潔的}}
=====變格=====
{{box|title=名詞|
{{la-ndecl|-īcus<2>}}
{{la-ndecl|-īca<1>}}}}
{{box|title=形容詞|
{{la-adecl|-īcus}}}}
=====派生詞彙=====
{{suffixsee|la|id=長}}
===參考資料===
<references/>
qwyzfr8paq1ag7dz8s6pelnpe199i3i
9814669
9814668
2026-06-16T10:39:37Z
TongcyDai
53191
9814669
wikitext
text/x-wiki
{{also|Icus|ICUs}}
==荷蘭語==
===詞源===
源自{{der|nl|la|-icus}}。
===發音===
* {{audio|nl|Nl--icus.ogg}}
===後綴===
{{head|nl|後綴}}
# 表示「……的」或「……學家/學者」
====派生詞彙====
{{suffixsee|nl}}
==拉丁語==
===詞源1===
{{etymon|la|id=形容詞後綴|:inh|itc-pro:*-ikos<id:形容詞後綴>|tree=1}}
源自 ''i''-詞幹 + {{m|la|-cus}},在某些原始情況下出現,後來被自由使用。與 {{cog|grc|-ικός}}、{{cog|gem-pro|*-gaz|*-igaz}}({{cog|goh|-}} 和 {{cog|ang|-ig}}、{{cog|got|-𐌴𐌹𐌲𐍃}})、{{cog|sa|-इक}}、{{cog|sla-pro|*-ьcь}}(最後一個已化為名詞性後綴,但最初可能也用於形容詞功能)同源。
====發音====
* {{la-IPA|-icus}} {{qualifier|倒數第三個音節重音}}
====後綴====
{{la-suffix-adj|-icus}}
# {{lb|la|構成[[形容詞]]}} ……的;關於……的;屬於……的;源自……的;與……相關的
#: {{sufex|la|cīvis|-icus|cīvicus|t1=公民|t3=公民的;與公民有關的}}
#: {{suffixusex|la|Gallus|gloss1=高盧人;高盧的|gallicus|gloss2=關於高盧或高盧人的;高盧的}}
#: {{sufex|la|bellum|-icus|bellicus|t1=戰爭|t3=戰爭的;軍事的;好戰的}}
#: {{sufex|la|taxus|-icus|taxicus|t1=紅豆杉|t3=紅豆杉的,源自紅豆杉的}}
#: {{sufex|la|imber|-icus|imbricus|t1=雨|t3=雨的;帶來雨水的}}
#: {{suffixusex|la|metallum|t1=金屬|metallicus|t2=金屬的}}
#: {{suffixusex|la|ūnus|gloss1=一|ūnicus|gloss2=單一的,獨特的}}
# {{non-gloss|用於從其他名詞構成一些[[名詞化]]的名詞}}
#: {{sufex|la|manus|-icus|manica|g1=f|t1=手|alt2=-ica|t3=袖子}}
=====用法說明=====
後綴 {{m|la|-icus}} 常加在[[名詞]]後,有時加在[[形容詞]]後,很少加在[[動詞]]後(如 {{m|la|medeor}} > {{m|la|medicus}})。它通常附加於[[族名]](國家、部落或民族的名稱),例如 {{m|la|italus|t=義大利的;義大利人}}。拉丁語中有許多以 {{m|la||-icus}} 結尾的單詞並非在拉丁語中構成,而是借自以 {{m|grc|-ικός}} 結尾的希臘語單詞:例如 {{m|la|tragicus}} 源自 {{m|grc|τραγικός}}。
=====變格=====
{{la-adecl|-icus}}
=====近義詞=====
* {{l|la|-ānus}}、{{l|la|-ēnsis}}
=====派生詞彙=====
* {{l|la|-ticus}}
** {{l|la|-āticus}}
{{suffixsee|la}}
=====派生語彙=====
{{top2}}
* {{desc|rup|-ic}}
* {{desc|af|-ies|bor=1}}
* {{desc|ast|-icu}}
* {{desc|ca|-ic}}
* {{desc|nl|-icus|bor=1}}
* {{desc|bor=1|en|-ic|-ick}} {{qualifier|棄用}}
* {{desc|fr|-ique|bor=1}}
* {{desc|gl|-ico}}
* {{desc|hu|-ikus|bor=1}}
* {{desc|it|-ico}}
* {{desc|bor=1|pt|-ico|-igo}}
* {{desc|pt|-ego}}
* {{desc|ro|-ec|-ic}}
* {{desc|scn|-icu}}
* {{desc|es|-ico|bor=1}}
* {{desc|vec|-ego}}
{{bottom}}
===詞源2===
{{etymon|la|title=-īcus|id=長|:der|ine-pro:*-kos|tree=1}}
可能最終擴展自 {{der|la|ine-pro|*-kos}}、{{m|ine-pro|*-ḱos}}([[#詞源1|詞源1]]),其中的 {{m|la||-ī-}} 可能來自工具格形式。<ref>{{R:itc:EDL|head=amō|page=39}}</ref> 對照 {{m|la|-ūcus}} 以及 {{m|la|-ītus}}。亦對照其他包含軟顎音後綴的單詞,如 {{m|la|fēlīx}}。
====發音====
* {{la-IPA|-īcus}}
====後綴====
{{qualifier|名詞}} {{la-suffix-noun|-īcus<2>|g=m|f=-īca}} {{-}} {{qualifier|形容詞}} {{la-suffix-adj|-īcus}}
# {{non-gloss|用於從動詞或名詞構成名詞}}
#: {{sufex|la|lectus|-īcus|lectīca|t1=床|alt2=-īca|t3=轎子}}
# {{non-gloss|用於從動詞或名詞構成形容詞}}
#: {{sufex|la|pudeō|-īcus|pudīcus|alt1=pudet|t1=使羞愧|t3=貞潔的,純潔的}}
=====變格=====
{{box|title=名詞|
{{la-ndecl|-īcus<2>}}
{{la-ndecl|-īca<1>}}}}
{{box|title=形容詞|
{{la-adecl|-īcus}}}}
=====派生詞彙=====
{{suffixsee|la|id=長}}
===參考資料===
<references/>
0xvwp1ketl2d9b3ipz1d85jq154cw04
-é
0
2495830
9814671
8335041
2026-06-16T10:45:06Z
TongcyDai
53191
9814671
wikitext
text/x-wiki
{{also|é|-e|-è|Appendix:"e"的變體}}
==加泰羅尼亞語==
===發音===
* {{ca-IPA|val=+}}
===後綴===
{{ca-adj}}
# {{lb|ca|瓦倫西亞}} {{alt sp|ca|-è}}
==法語==
===發音===
* {{fr-IPA}}
* {{homophones|fr|-ée|-ées|-és|-er|hey|et}}
===詞源1===
{{ety|fr|id=形容詞|:inh|frm:-é<id:形容詞>|tree=+}}
{{inh+|fr|frm|-é|id=形容詞}},{{inh+|fr|fro|-é|id=形容詞}}、{{m|fro|-et}}、{{m|fro|-at}},{{inh+|fr|la|-ātus|id=形容詞}},{{inh+|fr|itc-pro|*-ātos}}。
{{doublet|fr|-at<id:形容詞><pos:形容詞>|-ate<q:化學>}}。
====後綴====
{{fr-adj}}
# {{lb|fr|語法}} {{ng|規則 {{m|fr|-er}} 動詞的[[過去分詞]]詞根後綴,是動詞不定式的變位形式}};與英語 [[-ed]]、[[-en]]、[[-n]] 同等。
=====派生詞彙=====
{{suffixsee|fr}}
===詞源2===
{{ety|fr|id=抽象名詞|:inh|frm:-é<id:抽象名詞>|tree=+}}
{{inh+|fr|frm|-é|id=抽象名詞}},{{inh+|fr|fro|-é|id=抽象名詞}},{{inh+|fr|la|-ātus|id=抽象名詞|pos=構成抽象名詞的後綴}}(第四變格),{{inh+|fr|itc-pro|*-tus}},{{inh+|fr|ine-pro|*-tus|pos=由動詞詞根派生動作名詞的後綴}}。
{{doublet|fr|-at<id:抽象名詞><pos:抽象名詞>}}。
====後綴====
{{fr-noun|m}}
# 構成表示[[地位]]、[[職位]]、[[轄區]]或[[領地]]的[[抽象名詞]]
#: {{sufex|fr|évêque<t:主教>|évêché<t:主教轄區>}}
#: {{sufex|fr|prieur<t:修道院院長>|prieuré<t:修道院>}}
#: {{sufex|fr|dauphin<t:法國王太子>|dauphiné<t:王太子的領地>}}
====派生詞彙====
{{suffixsee|fr|id=抽象名詞}}
===詞源3===
{{ety|fr|id=-atum|:inh|la:-ātum<id:結果>}}
{{inh+|fr|la|-ātum}}(第二變格),源自以 {{m|la|-ātus}} 結尾的完成時被動分詞的中性單數名詞化形式。
{{doublet|fr|-at<id:-atum><t:表示結果的後綴>}}。
====後綴====
{{fr-noun|m}}
# {{ng|構成表示動詞所表達動作之結果、產物、對象或影響的名詞}}
#: {{sufex|fr|précipiter<t:沉澱>|précipité<t:沉澱物>}}
===詞源4===
主語前位置 {{m|fr|-e}} 的[[諧音]]變化。
====其他形式====
* {{alter|fr|-è||post-1990}}
====發音====
* {{fr-IPA|-è}}
====後綴====
{{fr-suffix form|動詞}}
# {{inflection of|fr|-er||主語前|1|s|pres|indicative|;|主語前|1|s|pres|subj}}
#: ''{{l|fr|pensé|pens'''é'''}}-je''
==匈牙利語==
===發音===
* {{hu-IPA}}
* {{rhymes|hu|eː|s=1}}
===詞源1===
源自廢棄向格後綴(見下文)的分化,其語義變化可能經歷了「朝著他/她」 > 「給他/她」 > 「他/她的」之過程。<ref>{{R:Zaicz 2006}}</ref>
====後綴====
{{head|hu|後綴}}
# {{senseid|hu|所有格}} {{lb|hu|非定語性所有格後綴}} ……[[的]]([[屬於]]……,……[[的]][[東西]])。{{ng|用於構成名詞的非定語性<!-- not necessarily predicative-->所有格<ref>{{R:Rounds 2001}} [https://books.google.hu/books?id=ItSTAgAAQBAJ&pg=PA143 第二版的相關頁面 (2009)] {{ISBN|9781135998929}}</ref>形式。對照英語代詞 ''{{m|en||mine, yours}}'' 等。其複數形式為 {{l|hu|-éi}}。}}
#: {{m|hu|iskola||學校}} ― {{m|hu|iskoláé|iskolá'''é'''|屬於學校的,學校的,學校的東西}}
#: {{uxi|hu|Ez a szék az iskolá'''é'''.|這把椅子'''屬於'''學校 / 是學校'''的'''。|q=作為表語}}
#: {{m|hu|ház||房子}} ― {{m|hu|házé|ház'''é'''|房子的東西}}
#: {{uxi|hu|A fa árnyéka nagy, a ház'''é''' még nagyobb.|樹的影子很大;房子'''的(影子)'''更大。|q=作為主語的一部分}}
# {{lb|hu|非定語性所有格後綴|稍|口語}} ……[[的]]([[屬於]]……,……[[的]][[東西]])。{{ng|它在非正式場合也用於非定語性所有格的複數({{m|hu|-éi}} 顯得有些學究氣)。}}
#: {{uxi|hu|Ezek a poharak a Pistá'''é'''.|這些杯子'''屬於'''史蒂夫 / 是史蒂夫'''的'''。}}
#* '''2021''', Zsuzsa Mátraházi, ''Nádasdy Ádám: Még Arany János is követett el hibát műfordításban''(採訪{{w|lang=en|Ádám Nádasdy}}), HVG weekly:<sup>[https://hvg.hu/360/202148__nadasdy_adam__arany_tevedeserol_csavarmenetrol__nyelvi_trukkozes]</sup>
#*: {{quote|hu|Azt vetették a szememre, hogy a fordításaim értelmesek, szépek és jól követhetők, de kevésbé költőiek, mint az elődeim'''é''', például Arany Jánosé, Babits Mihályé, Mészöly Dezsőé.
|translation=我被指責說我的翻譯清晰、優美且易於理解,但不像我的前輩,例如{{w|lang=en|János Arany}}、{{w|lang=en|Mihály Babits}}和{{Wikidata entity link|Q303494}}的'''作品'''那樣富有詩意。}}
====參見====
* [[:Category:匈牙利語名詞變格形]]
===詞源2===
{{inh+|hu|urj-pro|*-j}},它曾作為雙元音的一部分(與名詞詞幹末尾的元音一起),後來變成了 {{m|hu|-á}}/{{m|hu|-é}}。<ref>{{R:Zaicz 2006}}</ref>
====後綴====
{{head|hu|後綴}}
# {{lb|hu|棄用|格後綴|nocat=y}}{{cln|hu|帶有古舊詞義的後綴}} {{n-g|用於構成[[向格]],表示方向(「去哪裡」)或目的(「為了什麼」)。}}
#: {{syn|hu|-k|-ni|-nyi|q1=具有類似功能的其他廢棄後綴}}<!-- cf. Zaicz for "-nyi": "A nyelvjárásokból ismert -ni, -nyi latívuszi irányragból vált mértékképzővé"; for "-k", see the etymologies of "leg-" and "-nak/-nek" -->
#* '''1192–1195''', ''[[w:en:Funeral Sermon and Prayer|喪葬佈道與祈禱]]'', translated by Alan Jenkins (''In Quest of the Miracle Stag: The Poetry of Hungary,'' Vol. 1, {{ISBN|9638602422}}, p. 30)
#*: Menýi miloſtben terumteve eleve mív iſemucut adamut. eſ odutta vola neki paradiſumut haʒó'''á'''.
#*:: Mennyi malasztban (= kegyelemben) teremté (= teremtette) kezdetben [az Úr] [a] mi ősünket, Ádámot, és adta (vala) neki [a] paradicsomot ház'''zá'''. ''(現代匈牙利語)''
#*::: 上帝以其神聖的恩典創造了我們的祖先亞當,並賜予他伊甸園'''作為'''他的居所。
=====用法說明=====
* {{qualifier|格後綴}}變體:
*: '''{{l|hu|-á}}''' 加在後元音單詞上。
*: '''{{l|hu|-é}}''' 加在前元音單詞上。
=====派生詞彙=====
{{col4|hu|title=連同其前元音變體
|alá,fölé
|-ba//-be
|ha
|haza
|-hoz//-hez//-höz
|-i
|ide,oda
|-ig
|-ra//-re
|soká
|szerte
|tova
|többé
|-va//-ve
|-vá//-vé
|vissza
}}
===詞源3===
====助詞====
{{head|hu|助詞<!-- according to Nagyszótár -->|cat2=附著詞素}} {{tlb|hu|附著詞素}}
# {{lb|hu|方言|主要|特蘭西瓦尼亞}} {{alternative form of|hu|-e||[[是否]]}} {{ng|用於一般疑問句的標記,前面總是用連字號連接。}}
#: {{uxi|hu|Nem tudom, hogy sikerül'''-é'''.|我不知道它'''是否'''會成功。}}
===詞源4===
====後綴====
{{head|hu|後綴}}
# {{lb|hu|古舊|_|人稱後綴|nocat=y}}{{cln|hu|帶有古舊詞義的後綴}} {{ng|用於構成前元音動詞的第三人稱單數直陳式過去時限定形式。有關完整詞形變化,請參見[[Template:烏語:hu:conj-preterite|使用說明模板]]。}}
#: {{syn|hu|-te|q=現代形式}}
#: {{cot|hu|-á|q=用於後元音動詞}}
#: {{uxi|hu|A virágokat néz'''é'''.|'''他/她看著'''花。}} <!-- "nézi vala" would be "was looking at…" -->
====參見====
* [[Template:烏語:hu:conj-preterite|包含其完整詞形變化的使用說明模板]]
===詞源5===
參見 {{m|hu|-e}}。
====其他形式====
* {{alter|hu|-i|id=所有格單數||方言,除了一些固定形式}}
====後綴====
{{head|hu|後綴}}
# {{senseid|hu|結合}} {{combining form of|hu|-e|pos=所有格後綴}} {{n-g|在大多數[[Appendix:Hungarian suffixes#Case_endings|格後綴]]之前,除了[[正式狀態格]]的格後綴之外。}}
#: {{afex|hu|feje|alt1=fej'''e'''|t1=他/她/它的頭|-n|fején|alt3=fej'''é'''n|t3=在他/她/它的頭上|nointerp=y}}
=====用法說明=====
對於其在標準用法中出現的變體,參見 {{m|hu|-i|id=possessive singular|pos=作為第三人稱單數單一所有物所有格後綴的 ''-e'' 和 ''-é'' 的替代形式}}。
===參考資料===
<references/>
===延伸閱讀===
* {{sense|是否}} {{R:ErtSz|onlylink=y}},重定向至 {{R:ErtSz|-e}}
* {{sense|是否}} {{R:Nagyszotar|onlylink=y}},重定向至 {{R:Nagyszotar|-e}}
==意大利語==
===發音===
{{it-pr}}
===後綴===
{{it-suffix form|動詞}}
# {{n-g|與詞幹連用,構成規則 {{m|it|-ere}} 動詞的[[第三人稱]][[遠過去時]]}}
#: {{syn|it|-ette}}
==納瓦霍語==
===發音===
* {{IPA|nv|/-ɛ́/|[-é]}}
===後綴===
{{head|nv|後綴}}
# {{qualifier|名詞化詞}} {{n-g|做……的人}}
====用法說明====
類似於英語中的 ''[[-er#英語|-er]]'' 後綴,附在動詞上的 ''-é'' 後綴意思是「做[動詞]的人」。它是 {{l|nv|-í}} 的變體。
====近義詞====
* {{l|nv|-í}}
==中古法語==
===詞源1===
{{ety|frm|id=形容詞|:inh|fro:-é<id:形容詞>|tree=+}}
{{inh+|frm|fro|-é|id=形容詞}},{{inh+|frm|la|-ātus|id=形容詞}},{{inh+|frm|itc-pro|*-ātos}}。
====後綴====
{{frm-adj|-ee|és|-ees}}
# {{lb|frm|語法}} {{ng|規則 {{m|frm|-er}} 動詞的[[過去分詞]]詞根後綴,是動詞不定式的變位形式}};與英語 [[-ed]]、[[-en]]、[[-n]] 同等。
=====派生語彙=====
* {{desc|fr|-é<id:形容詞><pos:形容詞>}}
===詞源2===
{{ety|frm|id=抽象名詞|:inh|fro:-é<id:抽象名詞>|tree=+}}
{{inh+|frm|fro|-é|id=抽象名詞}},{{inh+|frm|la|-ātus|id=抽象名詞}},{{inh+|frm|itc-pro|*-tus}},{{inh+|frm|ine-pro|*-tus|pos=由動詞詞根派生動作名詞的後綴}}。
====後綴====
{{frm-noun|m}}
# 構成表示[[地位]]、[[職位]]、[[轄區]]或[[領地]]的[[抽象名詞]]
#: {{sufex|frm|comte<t:伯爵>|comté<t:伯爵領地>}}
#: {{sufex|frm|dauphin<t:法國王太子>|Dauphiné<t:王太子領地>}}
=====派生語彙=====
* {{desc|fr|-é<id:抽象名詞><pos:抽象名詞>}}
==古法語==
===其他形式===
* {{lang|fro|-e}} {{qualifier|手稿形式}}
* {{l|fro|-et}} {{qualifier|12世紀或更早}}
===發音===
* {{IPA|fro|/ˈɛ/}}
===詞源1===
{{ety|fro|id=形容詞|:inh|la:-ātus<id:形容詞>|tree=+}}
{{inh+|fro|la|-ātus}}(第一變格),{{inh+|fro|itc-pro|*-ātos}}。{{etydate|842}} 作 {{m|fro|-at}}(在《{{w|lang=en|Oaths of Strasbourg|斯特拉斯堡誓言}}》中的 {{m|fro|jurat}}) >({{etydate|c|1050|nocap=1}})《{{w|lang=en|Song of Roland|羅蘭之歌}}》中的 {{m|fro|-et}};形式 ''{{lang|fro|-é}}'' 首次出現在12世紀。
====後綴====
{{head|fro|後綴|sort=e}}
# {{non-gloss|用於構成規則 -er 動詞的過去分詞}}
====派生語彙====
* {{desctree|frm|-é<id:形容詞><pos:形容詞>}}
===詞源2===
{{ety|fro|id=抽象名詞|:inh|la:-ātus<id:抽象名詞>|tree=+}}
{{inh+|fro|la|-ātus|id=抽象名詞}}(第四變格),{{inh+|fro|itc-pro|*-tus}},{{inh+|fro|ine-pro|*-tus|pos=由動詞詞根派生動作名詞的後綴}}。
====後綴====
{{fro-noun|m}}
# 構成表示[[地位]]、[[職位]]、[[轄區]]或[[領地]]的[[抽象名詞]]
#: {{sufex|fro|conte<id:count><t:伯爵>|conté<t:伯爵領地>}}
=====派生語彙=====
* {{desctree|frm|-é<id:抽象名詞><pos:抽象名詞>}}
==斯洛溫語==
===詞源===
{{etymon|zlw-slv|id=名詞|:inh|sla-pro:*-ьje|tree=+|text=+}}
===發音===
{{zlw-slv-pr|h=-|r=-}}
===後綴===
{{head|zlw-slv|後綴|g=n}}
# {{ng|構成表示地點的中性名詞,通常源自介詞短語}}
# {{ng|由形容詞構成副詞,會引起軟化}}
====派生詞彙====
{{suffixsee|zlw-slv}}
====派生語彙====
* {{desc|zlw-slv|-ê}}
===參見===
* {{l|zlw-slv|-ô}}
==西班牙語==
===詞源===
{{inh+|es|la-vul|-āī}},{{inh+|es|la|-āvī}}。
===後綴===
{{head|es|後綴變格形}}
# {{es-verb form of|-ar}}
2o8hjvdbu2raw0zxj2xguek8gibdqum
Module:Etymon
828
2560114
9813885
9740941
2026-06-15T18:02:30Z
TongcyDai
53191
9813885
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
-- 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 = "[[Appendix:Glossary#字面分析|字面分析]]為"
local surf_phrase = "[[Appendix:Glossary#字面分析|字面分析]]為"
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 .. "[[Appendix:Glossary#名詞化|名詞化]],來自"
local phrase = adj .. "[[Appendix:Glossary#名詞化|名詞化]],來自"
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 pos_aliases = { ["前綴"] = "prefix", ["後綴"] = "suffix", ["間綴"] = "interfix", ["中綴"] = "infix", ["詞根"] = "root", ["詞"] = "word", }
if pos and pos_aliases[pos] then pos = pos_aliases[pos] end -- L10N
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
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, 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)
-- 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 == "Reconstruction" then title = "*" .. title end
end
local entry_pagename = page_data.pagename
if page_data.namespace == "Reconstruction" 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:getCanonicalName()
if current_L2 ~= norm_name and require("Module:zh").st(current_L2) ~= norm_name then -- L10N
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
9ibt8lmkdjbdks4bdift5n5kdj4dgrf
9813891
9813885
2026-06-15T18:18:11Z
TongcyDai
53191
9813891
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
-- 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 = "[[Appendix:Glossary#字面分析|字面分析]]為"
local surf_phrase = "[[Appendix:Glossary#字面分析|字面分析]]為"
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 .. "[[Appendix:Glossary#名詞化|名詞化]],來自"
local phrase = adj .. "[[Appendix:Glossary#名詞化|名詞化]],來自"
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) < 1 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 pos_aliases = { ["前綴"] = "prefix", ["後綴"] = "suffix", ["間綴"] = "interfix", ["中綴"] = "infix", ["詞根"] = "root", ["詞"] = "word", }
if pos and pos_aliases[pos] then pos = pos_aliases[pos] end -- L10N
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
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, 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)
-- 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 == "Reconstruction" then title = "*" .. title end
end
local entry_pagename = page_data.pagename
if page_data.namespace == "Reconstruction" 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:getCanonicalName()
if current_L2 ~= norm_name and require("Module:zh").st(current_L2) ~= norm_name then -- L10N
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
6zqngxhomq787c9v3pt75qfw9xwykwz
9813899
9813891
2026-06-15T19:02:30Z
TongcyDai
53191
9813899
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
-- 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 = "[[Appendix:Glossary#字面分析|字面分析]]為"
local surf_phrase = "[[Appendix:Glossary#字面分析|字面分析]]為"
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 .. "[[Appendix:Glossary#名詞化|名詞化]],來自"
local phrase = adj .. "[[Appendix:Glossary#名詞化|名詞化]],來自"
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) < 1 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 pos_aliases = { ["前綴"] = "prefix", ["後綴"] = "suffix", ["間綴"] = "interfix", ["中綴"] = "infix", ["詞根"] = "root", ["詞"] = "word", }
if pos and pos_aliases[pos] then pos = pos_aliases[pos] end -- L10N
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("^詞源") or node:get_name():find("^词源") 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
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, 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)
-- 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 == "Reconstruction" then title = "*" .. title end
end
local entry_pagename = page_data.pagename
if page_data.namespace == "Reconstruction" 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:getCanonicalName()
if current_L2 ~= norm_name and require("Module:zh").st(current_L2) ~= norm_name then -- L10N
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
nkf1x5mj4iqdolpmku5xhnz6mopvkje
9813900
9813899
2026-06-15T19:30:48Z
TongcyDai
53191
9813900
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
-- 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 = "[[Appendix:Glossary#字面分析|字面分析]]為"
local surf_phrase = "[[Appendix:Glossary#字面分析|字面分析]]為"
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 .. "[[Appendix:Glossary#名詞化|名詞化]],來自"
local phrase = adj .. "[[Appendix:Glossary#名詞化|名詞化]],來自"
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) < 1 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 pos_aliases = { ["前綴"] = "prefix", ["後綴"] = "suffix", ["間綴"] = "interfix", ["中綴"] = "infix", ["詞根"] = "root", ["詞"] = "word", }
if pos and pos_aliases[pos] then pos = pos_aliases[pos] end -- L10N
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("^詞源") or node:get_name():find("^词源") 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 = mw.ustring.lower(node:get_name()) -- L10N lower all template titles
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
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, 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)
-- 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 == "Reconstruction" then title = "*" .. title end
end
local entry_pagename = page_data.pagename
if page_data.namespace == "Reconstruction" 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:getCanonicalName()
if current_L2 ~= norm_name and require("Module:zh").st(current_L2) ~= norm_name then -- L10N
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
gb4td6ofa2o0se8372kcgx5nd3u3ddl
Module:Category tree/wiktionary maintenance
828
2725010
9813905
9696891
2026-06-15T19:43:12Z
TongcyDai
53191
9813905
Scribunto
text/plain
local raw_categories = {}
local raw_handlers = {}
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["維基詞典維護"] = {
description = "Categories containing pages that are being tracked for attention and improvement by editors.",
breadcrumb = "維護",
parents = "維基詞典",
}
raw_categories["空分類"] = {
topright = "{{shortcut|CAT:EC}}",
description = "沒有成員的分類。",
additional = [=[Categories are placed here by [[Module:category tree]] when they contain no pages or subcategories.
Empty categories are not necessarily a problem, but they can clutter up their parent categories, or become orphaned if the structure of the category tree changes. This category therefore helps track down such cases, and allows them to be cleaned up.
Because of the way the wiki software works, categories will appear here for a while afterwards if they were empty at first but had entries added to them later. This can be fixed by simply performing a "null edit" on the category page: edit the page, and save without making any changes. (Alternatively, use the "null edit" option provided by the "purge tab" [[Special:Preferences#mw-prefsection-gadgets|gadget]].) This can be avoided by adding entries to categories before creating them. It also helps to create categories from the "bottom up": start at the lowest level that has entries, then create its parent categories, then the parent categories of that, and so on.]=],
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["標題不正確的分類"] = {
description = "Categories with names that do not match the expected form within the category tree.",
additional =
[=[This usually happens when additional parameters have been given to {{tl|auto cat}} that don't match the name of the category, or when there is a problem with capitalization or spacing in the category name.
==參見==
* [[:Category:未在分類樹中定義的分類]]]=],
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["未在分類樹中定義的分類"] = {
description = "使用了 {{tl|auto cat}} 但未註冊於分類樹資料模組中的分類。",
additional = [=[請查看這些分類中顯示的錯誤框以取得更多資訊。
==參見==
* [[:Category:標題不正確的分類]]]=],
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["使用精簡模板的頁面"] = {
description = "至少使用一個精簡模板的頁面。",
additional = "參見[[:Category:無lua模板]].",
breadcrumb = "使用精簡模板",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有冗餘行內etymon的頁面"] = {
description = "頁面中的行內詞源詞條存在,且 ID 與該詞源詞條頁面上的 ID 相符。",
additional = "應檢查並簡化這些頁面,以避免重複指定。",
breadcrumb = "冗餘行內詞源",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["使用無ID etymon的頁面"] = {
description =
"頁面使用了 {{tl|etymon}} 但未指定 ID,且目標頁面中該語言只有一個 etymon 模板。",
additional = "應更新這些頁面以指定明確的 ID,以免日後新增更多詞源時產生歧義。",
breadcrumb = "無 ID 詞源",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有紅鏈行內詞源的頁面"] = {
description = "頁面在另一個 {{tl|etymon}} 內部使用了 {{tl|etymon}},且目標詞條為紅鏈。",
additional = "待目標詞條建立後,應檢查這些頁面。",
breadcrumb = "紅鏈行內詞源",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有etymon的頁面"] = {
description = "使用 {{tl|etymon}} 模板的頁面。",
breadcrumb = "Etymon",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有詞源樹的頁面"] = {
description = "顯示由 {{tl|etymon}} 模板產生的詞源樹的頁面。",
breadcrumb = "詞源樹",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["詞源文字停止語言不在鏈上的頁面"] = {
description = "Pages where {{tl|etymon}} is used with {{para|text}} set to stop at a language (e.g. {{code|text=:el}}) but that language never appears in the rendered etymology chain.",
additional = "These should be reviewed and the {{para|text}} parameter corrected.",
breadcrumb = "Etymology text stop language not in chain",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["帶有製表字元的頁面"] = {
description = "Wikitext 中包含製表字元的頁面。",
additional = "這些頁面中的製表字元應該被刪除或替換為空格,因為它們違反了[[WT:NORM]]。",
breadcrumb = "製表字元",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["語言標題順序錯誤的頁面"] = {
description = "語言詞條的標題順序錯誤的頁面。",
additional = "Level 2 language headings should be in alphabetical order, except for Translingual and English, which go at the top (in that order).",
breadcrumb = "語言標題順序錯誤",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["帶有非標準語言標題的頁面"] = {
description = "Pages which contain a level 2 heading which does not match any language's canonical name.",
additional = "The level 2 language heading for each language should always be that language's canonical name.",
breadcrumb = "非標準語言標題",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["包含不需要的L1標題的頁面"] = {
description = "包含不需要的L1標題的頁面",
additional = "L1標題維基詞典內容頁面,僅因使用者錯誤或故意破壞而出現。",
breadcrumb = "不需要的L1標題",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["帶有原始三重括號模板參數的頁面"] = {
description = "包含三重括號形式的原始模板參數的頁面。",
additional = "三重大括號模板參數(例如{{code|<nowiki>{{{arg}}}</nowiki>}})被用於模板中,因為當頁面被嵌入時,它們會被相關的模板參數取代。儘管理論上它們可以在任何頁面上使用,但目前它們在內容命名空間中沒有合法用途。\n\n此分類中的模板參數通常是由於拼寫錯誤或當 {{tl|subst:}} 與不應替換的模板一起使用時出現的。",
breadcrumb = "Raw template arguments",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["存在DEFAULTSORT衝突的頁面"] = {
topright = "{{shortcut|CAT:DEFAULTSORT}}",
description = "魔術字 {{tl|DEFAULTSORT:}} 被多次使用且有不同值的頁面。",
additional = "在某些(但不是全部)情況下,這會導致頁面上顯示警告。在絕大多數情況下,應該<u>刪除</u> wikitext 中明確使用的 {{tl|DEFAULTSORT:}}。這是因為 {{tl|head}} 模板會對其自動處理。在 wikitext 中應使用它的唯一情況是在條目(即主命名空間或重構命名空間)之外。" ..
"\n\n亦請參見[[:Category:存在DISPLAYTITLE衝突的頁面]]。",
breadcrumb = "DEFAULTSORT衝突",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["存在DISPLAYTITLE衝突的頁面"] = {
topright = "{{shortcut|CAT:DISPLAYTITLE}}",
description = "魔術字 {{tl|DISPLAYTITLE:}} 被多次使用且有不同值的頁面。",
additional = "在某些(但不是全部)情況下,這會導致頁面上顯示警告。在絕大多數情況下,應該<u>刪除</u> wikitext 中明確使用的 {{tl|DISPLAYTITLE:}}。這是因為 {{tl|head}} 模板會對其自動處理。在 wikitext 中應使用它的唯一情況是在條目(即主命名空間或重構命名空間)之外。" ..
"\n\n亦請參見[[:Category:存在DEFAULTSORT衝突的頁面]]。",
breadcrumb = "DISPLAYTITLE衝突",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["帶有原始排序鍵的頁面"] = {
description = "使用帶有原始類別的排序鍵的頁面。",
additional = "例如,{{code|<nowiki>[[Category:國際音標符號|B]]</nowiki>}}。" ..
"\n\n它們應優先用分類模板替換,因為它們是硬編碼的,而且會覆蓋頁面的 {{tl|DEFAULTSORT:}} 值。如果分類的排序方案有任何變化,這會導致頁面沒有辦法被集中更改。\n\n" ..
"相較之下,沒有排序鍵的原始分類問題較小,因為它們會使用 {{tl|DEFAULTSORT:}} 值;這可以集中控制,而且設計上不偏向任何語言,因此避免了不同編者對同一分類使用多種不同排序方案的問題。不過,這些分類仍應以分類模板取代,因為可能還有其他特定語言的排序規則無法套用。",
breadcrumb = "原始排序鍵",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有脚本错误的页面"] = {
topright = "{{shortcut|CAT:E|CAT:ERR|CAT:ERROR}}",
description = "[[Wiktionary:Scribunto|Lua]]-{zh-hans:模块; zh-hant:模組}-中存在錯誤的頁面。",
additional = "如果頁面長期駐留於此,則可能應在<!--[[Wiktionary:GP|the Grease Pit]]-->[[Wiktionary:啤酒館|啤酒館]]報告錯誤。記憶體錯誤是這些錯誤的常見來源;請參閱[[:en:Wiktionary:Lua memory errors|Wiktionary:Lua記憶體錯誤]]中的討論。" ..
"\n\n由於-{zh-hans:软件; zh-hant:軟體}-在模板或-{zh-hans:模块; zh-hant:模組}-發生變更時不會立即更新頁面,因此此處列出的錯誤可能已修復。請確保錯誤仍然存在,然後再報告問題。您可以藉由執行[[meta:Help:Dummy_edit#Null_edit|空編輯]](編輯並儲存頁面而不進行實際變更)來執行此操作。如果錯誤消失,則表示已修復。" ..
"\n\n<u>您可以使用[https://zh.wiktionary.org/wiki/Special:ApiSandbox#action=purge&format=json&forcelinkupdate=1&generator=categorymembers&utf8=1&formatversion=2&gcmtitle=Category%3A有脚本错误的页面&gcmlimit=20 此-{zh-hans:链接; zh-hant:連結}-] 並按「送出請求」,一次點擊即可清除此分類中最多20個頁面的-{zh-hans:缓存; zh-hant:快取}-。</u>此數字最多可調整為 5,000,但超過 30-100 的任何數字都可能會導致逾時(取決於頁面大小)。" ..
"\n\n此類別的內容由[[Template:maintenance category]]控制。目前設定為將討論頁面、使用者頁面以及使用者沙盒模組和模板本放在單獨的分類中。" ..
"\n\n另請參閱[[:Category:有解析器函數錯誤的頁面]]。",
breadcrumb = "腳本錯誤",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有解析器函數錯誤的頁面"] = {
topright = "{{shortcut|CAT:PFE}}",
description = "[[mw:Help:Extension:ParserFunctions|解析器函數]]魔術字有錯誤的頁面。",
additional = "這類魔術字的例子包括 {{tl|#expr:}} 和 {{tl|#time:}} 等。如果頁面長期駐留於此,則可能應在<!--[[Wiktionary:GP|the Grease Pit]]-->[[Wiktionary:啤酒館|啤酒館]]報告錯誤。記憶體錯誤是這些錯誤的常見來源;請參閱[[:en:Wiktionary:Lua memory errors|Wiktionary:Lua記憶體錯誤]]中的討論。" ..
"\n\n由於-{zh-hans:软件; zh-hant:軟體}-在模板或-{zh-hans:模块; zh-hant:模組}-發生變更時不會立即更新頁面,因此此處列出的錯誤可能已修復。請確保錯誤仍然存在,然後再報告問題。您可以藉由執行[[meta:Help:Dummy_edit#Null_edit|空編輯]](編輯並儲存頁面而不進行實際變更)來執行此操作。如果錯誤消失,則表示已修復。" ..
"\n\n<u>您可以使用[https://zh.wiktionary.org/wiki/Special:ApiSandbox#action=purge&format=json&forcelinkupdate=1&generator=categorymembers&utf8=1&formatversion=2&gcmtitle=Category%3A有解析器函數錯誤的頁面&gcmlimit=20 此-{zh-hans:链接; zh-hant:連結}-] 並按「送出請求」,一次點擊即可清除此分類中最多20個頁面的-{zh-hans:缓存; zh-hant:快取}-。</u>此數字最多可調整為 5,000,但超過 30-100 的任何數字都可能會導致逾時(取決於頁面大小)。" ..
"\n\n此類別的內容由[[Template:maintenance category]]控制。目前設定為將討論頁面、使用者頁面以及使用者沙盒模組和模板本放在單獨的分類中。" ..
"\n\n另請參閱[[:Category:有脚本错误的页面]]。",
breadcrumb = "解析器函數錯誤",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["移動、合併和拆分請求"] = {
description = "已標記請求移動、合併或拆分的頁面和分類。",
breadcrumb = "移動、合併和拆分",
parents = {"維基詞典維護", "請求"},
can_be_empty = true,
hidden = true,
}
raw_categories["待合併的頁面"] = {
description = "被 {{tl|merge}} 模板標記為待合併的頁面。",
parents = {"移動、合併和拆分請求"},
can_be_empty = true,
}
raw_categories["待移動的頁面"] = {
description = "被 {{tl|move}} 模板標記為待移動的頁面。",
parents = {"移動、合併和拆分請求"},
can_be_empty = true,
}
raw_categories["待拆分的頁面"] = {
description = "被 {{tl|split}} 模板標記為待拆分的頁面。",
parents = {"移動、合併和拆分請求"},
can_be_empty = true,
}
raw_categories["呼叫模板時使用錯誤參數的頁面"] = {
description = "呼叫模板時使用無法辨識的參數的頁面。",
breadcrumb = "錯誤模板參數",
parents = "維基詞典維護",
can_be_empty = true,
}
raw_categories["使用catfix的頁面"] = {
description = "使用了<code>[[MediaWiki:Gadget-catfix.js|catfix]]</code>小工具的頁面。",
additional = "此過程透過添加特定語言的格式來處理指向語言特定分類條目的連結,並將這些連結指向條目中該語言的對應章節。",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["調用Template:minitoc的頁面"] = {
description = "透過調用 {{tl|minitoc}} 顯示迷你目錄的頁面}}.",
additional = "其用於包含許多條目的超大頁面,以協助導航。",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["調用Template:auto cat的分類"] = {
description = "已透過調用 {{tl|auto cat}} 放置在其他分類中的分類。",
additional = "這是對分類進行子分類的首選方式。設立此分類的主要原因是為了透過使用反向搜索(例如使用 {{code|-incategory:\"{{PAGENAME}}\"}} 限定搜索)來協助找出未使用 {{tl|auto cat}} 的分類。",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["Categories with categories using raw markup"] = {
description = "Categories that have been placed in another category using raw wiki markup (e.g. {{code|<nowiki>[[Category:Wiktionary]]</nowiki>}}). They should be added to the [[Module:category tree|category tree]] data instead.",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["使用棄用來源標籤的頁面"] = {
description = "使用 [[mw:Extension:SyntaxHighlight|SyntaxHighlight]] 擴充功能以及舊版 {{wt|source}} 標籤而不是 {{wt|syntaxhighlight}} 的頁面。",
breadcrumb = "棄用來源標籤",
parents = {"維基詞典維護"},
can_be_empty = true,
hidden = true,
}
table.insert(raw_handlers, function(data)
local template_type = data.category:match("^呼叫(.+)模板時使用錯誤參數的頁面$")
if template_type then
local parents = {{
name = "呼叫模板時使用錯誤參數的頁面",
sort = template_type == "general use" and "*" or template_type,
}}
local lang = require("Module:languages").getByCanonicalName(template_type, nil, true)
if lang then
table.insert(parents, {name = "詞條維護", is_label = true, lang = lang:getCode()})
end
return {
lang = lang and lang:getCode() or nil,
description = "呼叫" .. template_type .. "模板時使用錯誤參數的頁面。",
parents = parents,
breadcrumb = template_type,
}
end
end)
table.insert(raw_handlers, function(data)
local template = data.category:match("^呼叫(.+)時使用錯誤參數的頁面$")
function get_template_language(template_name)
-- convert "R:es:DRAE" and "RQ:es:DRAE" to "es-DRAE" for language matching
template_name = template_name:gsub("^RQ?:", "")
template_name = template_name:gsub(":", "-")
-- Check if the template name starts with a hyphenated language code
local lang
possible_language_code = template_name:match("^([a-z][a-z][a-z]?-[a-z][a-z][a-z])-")
if possible_language_code ~= nil then
lang = require("Module:languages").getByCode(possible_language_code)
end
-- Check if the template name starts with a two or three character language code
if lang == nil then
possible_language_code = template_name:match("^([a-z][a-z][a-z]?)-")
if possible_language_code ~= nil then
lang = require("Module:languages").getByCode(possible_language_code)
end
end
return lang
end
if template then
template_name_without_namespace = template:gsub("^Template:", "")
lang = get_template_language(template_name_without_namespace)
local template_type
if lang == nil then
template_type = "general use"
else
template_type = lang:getCanonicalName()
end
return {
lang = lang and lang:getCode() or nil,
description = "呼叫[[" .. template .. "]]時使用無法辨識的參數的頁面。",
additional = "請檢查這些模板調用並更正或刪除錯誤的參數。",
breadcrumb = template,
parents = {{
name = "呼叫" .. template_type .. "模板時使用錯誤參數的頁面",
sort = template_name_without_namespace,
}},
can_be_empty = true,
hidden = true,
}
end
end)
return {RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
gxqr6eliomljn47k1xm27apdn6q9nj9
9814076
9813905
2026-06-15T20:18:16Z
TongcyDai
53191
9814076
Scribunto
text/plain
local raw_categories = {}
local raw_handlers = {}
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["維基詞典維護"] = {
description = "Categories containing pages that are being tracked for attention and improvement by editors.",
breadcrumb = "維護",
parents = "維基詞典",
}
raw_categories["空分類"] = {
topright = "{{shortcut|CAT:EC}}",
description = "沒有成員的分類。",
additional = [=[Categories are placed here by [[Module:category tree]] when they contain no pages or subcategories.
Empty categories are not necessarily a problem, but they can clutter up their parent categories, or become orphaned if the structure of the category tree changes. This category therefore helps track down such cases, and allows them to be cleaned up.
Because of the way the wiki software works, categories will appear here for a while afterwards if they were empty at first but had entries added to them later. This can be fixed by simply performing a "null edit" on the category page: edit the page, and save without making any changes. (Alternatively, use the "null edit" option provided by the "purge tab" [[Special:Preferences#mw-prefsection-gadgets|gadget]].) This can be avoided by adding entries to categories before creating them. It also helps to create categories from the "bottom up": start at the lowest level that has entries, then create its parent categories, then the parent categories of that, and so on.]=],
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["標題不正確的分類"] = {
description = "Categories with names that do not match the expected form within the category tree.",
additional =
[=[This usually happens when additional parameters have been given to {{tl|auto cat}} that don't match the name of the category, or when there is a problem with capitalization or spacing in the category name.
==參見==
* [[:Category:未在分類樹中定義的分類]]]=],
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["未在分類樹中定義的分類"] = {
description = "使用了 {{tl|auto cat}} 但未註冊於分類樹資料模組中的分類。",
additional = [=[請查看這些分類中顯示的錯誤框以取得更多資訊。
==參見==
* [[:Category:標題不正確的分類]]]=],
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["使用精簡模板的頁面"] = {
description = "至少使用一個精簡模板的頁面。",
additional = "參見[[:Category:無lua模板]].",
breadcrumb = "使用精簡模板",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有冗餘行內etymon的頁面"] = {
description = "頁面中的行內詞源詞條存在,且 ID 與該詞源詞條頁面上的 ID 相符。",
additional = "應檢查並簡化這些頁面,以避免重複指定。",
breadcrumb = "冗餘行內詞源",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["使用無ID之etymon的頁面"] = {
description =
"頁面使用了 {{tl|etymon}} 但未指定 ID,且目標頁面中該語言只有一個 etymon 模板。",
additional = "應更新這些頁面以指定明確的 ID,以免日後新增更多詞源時產生歧義。",
breadcrumb = "無 ID 詞源",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有紅鏈行內詞源的頁面"] = {
description = "頁面在另一個 {{tl|etymon}} 內部使用了 {{tl|etymon}},且目標詞條為紅鏈。",
additional = "待目標詞條建立後,應檢查這些頁面。",
breadcrumb = "紅鏈行內詞源",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有etymon的頁面"] = {
description = "使用 {{tl|etymon}} 模板的頁面。",
breadcrumb = "Etymon",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有詞源樹的頁面"] = {
description = "顯示由 {{tl|etymon}} 模板產生的詞源樹的頁面。",
breadcrumb = "詞源樹",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["詞源文字停止語言不在鏈上的頁面"] = {
description = "Pages where {{tl|etymon}} is used with {{para|text}} set to stop at a language (e.g. {{code|text=:el}}) but that language never appears in the rendered etymology chain.",
additional = "These should be reviewed and the {{para|text}} parameter corrected.",
breadcrumb = "Etymology text stop language not in chain",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["帶有製表字元的頁面"] = {
description = "Wikitext 中包含製表字元的頁面。",
additional = "這些頁面中的製表字元應該被刪除或替換為空格,因為它們違反了[[WT:NORM]]。",
breadcrumb = "製表字元",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["語言標題順序錯誤的頁面"] = {
description = "語言詞條的標題順序錯誤的頁面。",
additional = "Level 2 language headings should be in alphabetical order, except for Translingual and English, which go at the top (in that order).",
breadcrumb = "語言標題順序錯誤",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["帶有非標準語言標題的頁面"] = {
description = "Pages which contain a level 2 heading which does not match any language's canonical name.",
additional = "The level 2 language heading for each language should always be that language's canonical name.",
breadcrumb = "非標準語言標題",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["包含不需要的L1標題的頁面"] = {
description = "包含不需要的L1標題的頁面",
additional = "L1標題維基詞典內容頁面,僅因使用者錯誤或故意破壞而出現。",
breadcrumb = "不需要的L1標題",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["帶有原始三重括號模板參數的頁面"] = {
description = "包含三重括號形式的原始模板參數的頁面。",
additional = "三重大括號模板參數(例如{{code|<nowiki>{{{arg}}}</nowiki>}})被用於模板中,因為當頁面被嵌入時,它們會被相關的模板參數取代。儘管理論上它們可以在任何頁面上使用,但目前它們在內容命名空間中沒有合法用途。\n\n此分類中的模板參數通常是由於拼寫錯誤或當 {{tl|subst:}} 與不應替換的模板一起使用時出現的。",
breadcrumb = "Raw template arguments",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["存在DEFAULTSORT衝突的頁面"] = {
topright = "{{shortcut|CAT:DEFAULTSORT}}",
description = "魔術字 {{tl|DEFAULTSORT:}} 被多次使用且有不同值的頁面。",
additional = "在某些(但不是全部)情況下,這會導致頁面上顯示警告。在絕大多數情況下,應該<u>刪除</u> wikitext 中明確使用的 {{tl|DEFAULTSORT:}}。這是因為 {{tl|head}} 模板會對其自動處理。在 wikitext 中應使用它的唯一情況是在條目(即主命名空間或重構命名空間)之外。" ..
"\n\n亦請參見[[:Category:存在DISPLAYTITLE衝突的頁面]]。",
breadcrumb = "DEFAULTSORT衝突",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["存在DISPLAYTITLE衝突的頁面"] = {
topright = "{{shortcut|CAT:DISPLAYTITLE}}",
description = "魔術字 {{tl|DISPLAYTITLE:}} 被多次使用且有不同值的頁面。",
additional = "在某些(但不是全部)情況下,這會導致頁面上顯示警告。在絕大多數情況下,應該<u>刪除</u> wikitext 中明確使用的 {{tl|DISPLAYTITLE:}}。這是因為 {{tl|head}} 模板會對其自動處理。在 wikitext 中應使用它的唯一情況是在條目(即主命名空間或重構命名空間)之外。" ..
"\n\n亦請參見[[:Category:存在DEFAULTSORT衝突的頁面]]。",
breadcrumb = "DISPLAYTITLE衝突",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["帶有原始排序鍵的頁面"] = {
description = "使用帶有原始類別的排序鍵的頁面。",
additional = "例如,{{code|<nowiki>[[Category:國際音標符號|B]]</nowiki>}}。" ..
"\n\n它們應優先用分類模板替換,因為它們是硬編碼的,而且會覆蓋頁面的 {{tl|DEFAULTSORT:}} 值。如果分類的排序方案有任何變化,這會導致頁面沒有辦法被集中更改。\n\n" ..
"相較之下,沒有排序鍵的原始分類問題較小,因為它們會使用 {{tl|DEFAULTSORT:}} 值;這可以集中控制,而且設計上不偏向任何語言,因此避免了不同編者對同一分類使用多種不同排序方案的問題。不過,這些分類仍應以分類模板取代,因為可能還有其他特定語言的排序規則無法套用。",
breadcrumb = "原始排序鍵",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有脚本错误的页面"] = {
topright = "{{shortcut|CAT:E|CAT:ERR|CAT:ERROR}}",
description = "[[Wiktionary:Scribunto|Lua]]-{zh-hans:模块; zh-hant:模組}-中存在錯誤的頁面。",
additional = "如果頁面長期駐留於此,則可能應在<!--[[Wiktionary:GP|the Grease Pit]]-->[[Wiktionary:啤酒館|啤酒館]]報告錯誤。記憶體錯誤是這些錯誤的常見來源;請參閱[[:en:Wiktionary:Lua memory errors|Wiktionary:Lua記憶體錯誤]]中的討論。" ..
"\n\n由於-{zh-hans:软件; zh-hant:軟體}-在模板或-{zh-hans:模块; zh-hant:模組}-發生變更時不會立即更新頁面,因此此處列出的錯誤可能已修復。請確保錯誤仍然存在,然後再報告問題。您可以藉由執行[[meta:Help:Dummy_edit#Null_edit|空編輯]](編輯並儲存頁面而不進行實際變更)來執行此操作。如果錯誤消失,則表示已修復。" ..
"\n\n<u>您可以使用[https://zh.wiktionary.org/wiki/Special:ApiSandbox#action=purge&format=json&forcelinkupdate=1&generator=categorymembers&utf8=1&formatversion=2&gcmtitle=Category%3A有脚本错误的页面&gcmlimit=20 此-{zh-hans:链接; zh-hant:連結}-] 並按「送出請求」,一次點擊即可清除此分類中最多20個頁面的-{zh-hans:缓存; zh-hant:快取}-。</u>此數字最多可調整為 5,000,但超過 30-100 的任何數字都可能會導致逾時(取決於頁面大小)。" ..
"\n\n此類別的內容由[[Template:maintenance category]]控制。目前設定為將討論頁面、使用者頁面以及使用者沙盒模組和模板本放在單獨的分類中。" ..
"\n\n另請參閱[[:Category:有解析器函數錯誤的頁面]]。",
breadcrumb = "腳本錯誤",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["有解析器函數錯誤的頁面"] = {
topright = "{{shortcut|CAT:PFE}}",
description = "[[mw:Help:Extension:ParserFunctions|解析器函數]]魔術字有錯誤的頁面。",
additional = "這類魔術字的例子包括 {{tl|#expr:}} 和 {{tl|#time:}} 等。如果頁面長期駐留於此,則可能應在<!--[[Wiktionary:GP|the Grease Pit]]-->[[Wiktionary:啤酒館|啤酒館]]報告錯誤。記憶體錯誤是這些錯誤的常見來源;請參閱[[:en:Wiktionary:Lua memory errors|Wiktionary:Lua記憶體錯誤]]中的討論。" ..
"\n\n由於-{zh-hans:软件; zh-hant:軟體}-在模板或-{zh-hans:模块; zh-hant:模組}-發生變更時不會立即更新頁面,因此此處列出的錯誤可能已修復。請確保錯誤仍然存在,然後再報告問題。您可以藉由執行[[meta:Help:Dummy_edit#Null_edit|空編輯]](編輯並儲存頁面而不進行實際變更)來執行此操作。如果錯誤消失,則表示已修復。" ..
"\n\n<u>您可以使用[https://zh.wiktionary.org/wiki/Special:ApiSandbox#action=purge&format=json&forcelinkupdate=1&generator=categorymembers&utf8=1&formatversion=2&gcmtitle=Category%3A有解析器函數錯誤的頁面&gcmlimit=20 此-{zh-hans:链接; zh-hant:連結}-] 並按「送出請求」,一次點擊即可清除此分類中最多20個頁面的-{zh-hans:缓存; zh-hant:快取}-。</u>此數字最多可調整為 5,000,但超過 30-100 的任何數字都可能會導致逾時(取決於頁面大小)。" ..
"\n\n此類別的內容由[[Template:maintenance category]]控制。目前設定為將討論頁面、使用者頁面以及使用者沙盒模組和模板本放在單獨的分類中。" ..
"\n\n另請參閱[[:Category:有脚本错误的页面]]。",
breadcrumb = "解析器函數錯誤",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["移動、合併和拆分請求"] = {
description = "已標記請求移動、合併或拆分的頁面和分類。",
breadcrumb = "移動、合併和拆分",
parents = {"維基詞典維護", "請求"},
can_be_empty = true,
hidden = true,
}
raw_categories["待合併的頁面"] = {
description = "被 {{tl|merge}} 模板標記為待合併的頁面。",
parents = {"移動、合併和拆分請求"},
can_be_empty = true,
}
raw_categories["待移動的頁面"] = {
description = "被 {{tl|move}} 模板標記為待移動的頁面。",
parents = {"移動、合併和拆分請求"},
can_be_empty = true,
}
raw_categories["待拆分的頁面"] = {
description = "被 {{tl|split}} 模板標記為待拆分的頁面。",
parents = {"移動、合併和拆分請求"},
can_be_empty = true,
}
raw_categories["呼叫模板時使用錯誤參數的頁面"] = {
description = "呼叫模板時使用無法辨識的參數的頁面。",
breadcrumb = "錯誤模板參數",
parents = "維基詞典維護",
can_be_empty = true,
}
raw_categories["使用catfix的頁面"] = {
description = "使用了<code>[[MediaWiki:Gadget-catfix.js|catfix]]</code>小工具的頁面。",
additional = "此過程透過添加特定語言的格式來處理指向語言特定分類條目的連結,並將這些連結指向條目中該語言的對應章節。",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["調用Template:minitoc的頁面"] = {
description = "透過調用 {{tl|minitoc}} 顯示迷你目錄的頁面}}.",
additional = "其用於包含許多條目的超大頁面,以協助導航。",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["調用Template:auto cat的分類"] = {
description = "已透過調用 {{tl|auto cat}} 放置在其他分類中的分類。",
additional = "這是對分類進行子分類的首選方式。設立此分類的主要原因是為了透過使用反向搜索(例如使用 {{code|-incategory:\"{{PAGENAME}}\"}} 限定搜索)來協助找出未使用 {{tl|auto cat}} 的分類。",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["Categories with categories using raw markup"] = {
description = "Categories that have been placed in another category using raw wiki markup (e.g. {{code|<nowiki>[[Category:Wiktionary]]</nowiki>}}). They should be added to the [[Module:category tree|category tree]] data instead.",
parents = "維基詞典維護",
can_be_empty = true,
hidden = true,
}
raw_categories["使用棄用來源標籤的頁面"] = {
description = "使用 [[mw:Extension:SyntaxHighlight|SyntaxHighlight]] 擴充功能以及舊版 {{wt|source}} 標籤而不是 {{wt|syntaxhighlight}} 的頁面。",
breadcrumb = "棄用來源標籤",
parents = {"維基詞典維護"},
can_be_empty = true,
hidden = true,
}
table.insert(raw_handlers, function(data)
local template_type = data.category:match("^呼叫(.+)模板時使用錯誤參數的頁面$")
if template_type then
local parents = {{
name = "呼叫模板時使用錯誤參數的頁面",
sort = template_type == "general use" and "*" or template_type,
}}
local lang = require("Module:languages").getByCanonicalName(template_type, nil, true)
if lang then
table.insert(parents, {name = "詞條維護", is_label = true, lang = lang:getCode()})
end
return {
lang = lang and lang:getCode() or nil,
description = "呼叫" .. template_type .. "模板時使用錯誤參數的頁面。",
parents = parents,
breadcrumb = template_type,
}
end
end)
table.insert(raw_handlers, function(data)
local template = data.category:match("^呼叫(.+)時使用錯誤參數的頁面$")
function get_template_language(template_name)
-- convert "R:es:DRAE" and "RQ:es:DRAE" to "es-DRAE" for language matching
template_name = template_name:gsub("^RQ?:", "")
template_name = template_name:gsub(":", "-")
-- Check if the template name starts with a hyphenated language code
local lang
possible_language_code = template_name:match("^([a-z][a-z][a-z]?-[a-z][a-z][a-z])-")
if possible_language_code ~= nil then
lang = require("Module:languages").getByCode(possible_language_code)
end
-- Check if the template name starts with a two or three character language code
if lang == nil then
possible_language_code = template_name:match("^([a-z][a-z][a-z]?)-")
if possible_language_code ~= nil then
lang = require("Module:languages").getByCode(possible_language_code)
end
end
return lang
end
if template then
template_name_without_namespace = template:gsub("^Template:", "")
lang = get_template_language(template_name_without_namespace)
local template_type
if lang == nil then
template_type = "general use"
else
template_type = lang:getCanonicalName()
end
return {
lang = lang and lang:getCode() or nil,
description = "呼叫[[" .. template .. "]]時使用無法辨識的參數的頁面。",
additional = "請檢查這些模板調用並更正或刪除錯誤的參數。",
breadcrumb = template,
parents = {{
name = "呼叫" .. template_type .. "模板時使用錯誤參數的頁面",
sort = template_name_without_namespace,
}},
can_be_empty = true,
hidden = true,
}
end
end)
return {RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
3junfphyy3xe9tla0heh4fds5s97tbn
borbĕ
0
2954739
9813844
9050896
2026-06-15T17:18:26Z
TongcyDai
53191
9813844
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===詞源===
{{inh+|ruo|la|barba}}。對比{{cog|ro|barbă}}。
===名詞===
{{head|ruo|名詞|g=f}}
# [[鬍子]]
====相關詞彙====
* {{l|ruo|bărbåt}}
{{C|ruo|鬍鬚}}
0eialf1m4l7wboxs9iwqkjjvrf3yh3i
Module:Etymon/tree
828
3236728
9813898
9625928
2026-06-15T18:33:39Z
TongcyDai
53191
9813898
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 = '[[Appendix:Glossary#' .. 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
e4e5civc7k5kk5ow66usgk7fke1ltpw
Module:Etymon/text
828
3236729
9813897
9625902
2026-06-15T18:33:03Z
TongcyDai
53191
9813897
Scribunto
text/plain
local export = {}
local loader = require("Module:module loader")
local M = loader.init({
require = {
en_utilities = "Module:en-utilities",
references = "Module:references",
senseno = "Module:senseno",
},
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 and opts.nodot ~= "" and opts.nodot ~= "0"
local function explicit_dot_override()
if opts.dot == nil or opts.dot == false then
return nil
end
local d = mw.text.trim(tostring(opts.dot))
if d == "" or d == "." then
return nil
end
return d
end
local dot_override = explicit_dot_override()
local function find_deepest_last_part(tree)
if not tree or not tree.container_parts or #tree.container_parts == 0 then
return nil
end
local last_part = tree.container_parts[#tree.container_parts]
if last_part.continuation then
return find_deepest_last_part(last_part.continuation)
end
return last_part
end
local function apply_final_punctuation_override(tree, punct)
if not tree or punct == nil then
return
end
local last_part = find_deepest_last_part(tree)
if last_part then
last_part.punctuation = punct
end
end
local function apply_closing_punctuation_override(tree, is_last_segment)
if not is_last_segment then
return
end
local punct
if nodot then
punct = ""
elseif dot_override ~= nil then
punct = dot_override
else
return
end
apply_final_punctuation_override(tree, punct)
end
local function has_supplements()
return data_tree.supplements and #data_tree.supplements > 0
end
local stop_at_lang = opts.stop_at_lang
local stop_at_lang_or_bluelink = opts.stop_at_lang_or_bluelink
local lang_matches_stop_code = opts.lang_matches_stop_code
local stop_lang_reached = false
local function term_matches_stop_code(term_lang, stop_code)
if lang_matches_stop_code then
return lang_matches_stop_code(term_lang, stop_code)
end
return term_lang and term_lang:getCode() == stop_code
end
local children = data_tree.children
local function has_text_supplements()
if not data_tree.supplements then
return false
end
for _, supplement in ipairs(data_tree.supplements) do
if supplement.type == "doublet" and supplement.terms and #supplement.terms > 0 then
return true
end
if supplement.type == "etydate" and supplement.etydate_text and supplement.etydate_text ~= "" then
return true
end
end
return false
end
if (not children or #children == 0) and not has_text_supplements() then
if stop_at_lang then
return "", { stop_lang_reached = false }
end
return ""
end
local top_l2 = data_tree.lang:getFullCode() .. ":" .. curr_page
local entry_lang = data_tree.lang
local function lowercase_glossary_link_display(wikitext)
return wikitext:gsub("(%[%[Appendix:Glossary#[^|]+|)([^%]])([^%]]*)%]%]", function(prefix, first, rest)
return prefix .. mw.ustring.lower(first) .. rest .. "]]"
end)
end
local function format_sl_senseid_intro(senseid, keyword_text, keyword_phrase, capitalize_senseno, is_uncertain)
local senseids = mw.text.split(senseid, "!!", true)
local senseno_parts = {}
for i, id in ipairs(senseids) do
id = mw.text.trim(id)
if id ~= "" then
table.insert(senseno_parts, M.senseno.link_text(entry_lang:getCode(), { id }, {
title = curr_page,
uc = (i == 1 and capitalize_senseno) or nil,
}))
end
end
if #senseno_parts == 0 then
return keyword_text, keyword_phrase
end
local senseno_text = mw.text.listToText(senseno_parts)
local glossary_link = (keyword_text or ""):gsub(" from$", "")
local glossary_lower = lowercase_glossary_link_display(glossary_link)
if #senseno_parts > 1 then
local plural_link = glossary_lower:gsub("|semantic loan%]%]", "|semantic loans]]")
if is_uncertain then
return senseno_text .. " are possibly " .. plural_link .. " from",
senseno_text .. " are possibly semantic loans from"
end
return senseno_text .. " are " .. plural_link .. " from",
senseno_text .. " are semantic loans from"
end
if is_uncertain then
return senseno_text .. " is possibly a " .. glossary_lower .. " from",
senseno_text .. " is possibly a semantic loan from"
end
return senseno_text .. " is a " .. glossary_lower .. " from",
senseno_text .. " is a semantic loan from"
end
-- 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
if term_text then
text = term.lang:makeWikipediaLink() .. " " .. term_text
elseif term.is_family then
text = M.en_utilities.add_indefinite_article(term.lang:makeWikipediaLink() .. " language", false)
else
-- suppress_term with language change: show only language
text = term.lang:makeWikipediaLink()
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 #terms == 0 then
return nil
end
-- Skip building text part when invisible in text ("all", "text", or true)
local inv = keyword_info.invisible
if inv == "all" or inv == true or inv == "text" 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
local new_sentence = keyword_info.new_sentence or false
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)
if is_group and uncertain_count > 0 then
all_uncertain = true
end
local has_mixed_uncertainty = not all_uncertain and uncertain_count > 0
-- 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_matches_stop_code(term.lang, stop_at_lang) then
reached_stop_lang = true
stop_lang_reached = 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_matches_stop_code(term.lang, 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,
senseid = keyword_modifiers.senseid,
sl_keyword_text = keyword_modifiers.senseid and keyword_info.text or nil,
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 = new_sentence,
separate_clause = keyword_info.separate_clause or false,
conj = keyword_modifiers.conj or keyword_info.default_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 containers that get a text part (invisible in text = "all", "text", or true)
local visible_container_count = 0
for _, container in ipairs(containers) do
local keyword_info = container.keyword_info
local inv = keyword_info and keyword_info.invisible
if not (inv == "all" or inv == true or inv == "text") 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 container_join_kind(part)
if part.type == "etydate" then
return nil
end
if part.new_sentence or part.separate_clause then
return "supplement"
end
return "or_join"
end
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
-- Or-join containers must precede any supplemental (calque-like / influence) containers.
local seen_supplement = false
for _, part in ipairs(parts) do
local kind = container_join_kind(part)
if kind == "supplement" then
seen_supplement = true
elseif kind == "or_join" and seen_supplement then
error(
"Cannot generate etymology text: a main derivation step cannot follow a calque, semantic loan, or influence clause in the same list.")
end
end
for _, part in ipairs(parts) do
if part.continuation then
check_complexity(part.continuation)
end
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
if part.term_parts then
-- 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
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 at this level (may still continue in part.continuation)
part.punctuation = "。"
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 next(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_text = part.intro_text
local phrase = part.phrase
if part.senseid then
intro_text, phrase = format_sl_senseid_intro(
part.senseid,
part.sl_keyword_text,
part.phrase,
part.intro_capitalized,
part.is_uncertain
)
end
local intro
if part.use_full_intro then
if part.is_uncertain and not part.senseid then
intro = "Possibly " .. phrase
else
intro = intro_text
end
else
if part.is_uncertain and not part.senseid then
intro = "possibly " .. phrase
else
intro = phrase
end
end
result = result .. intro
-- Build terms
if #part.term_parts > 0 then
result = result
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 .. ",字面意思“" .. 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 .. ",字面意思“" .. 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)
-- Supplements (doublets, etydate, …) are rendered outside the main derivation text tree.
local function assemble_supplements()
if not data_tree.supplements then
return ""
end
local chunks = {}
local pending_trees = {}
local function flush_pending_trees()
local num = #pending_trees
for i, supplement_tree in ipairs(pending_trees) do
analyze_punctuation(supplement_tree, true)
apply_closing_punctuation_override(supplement_tree, i == num)
local chunk = assemble_text(supplement_tree)
if chunk ~= "" then
table.insert(chunks, chunk)
end
end
pending_trees = {}
end
for _, supplement in ipairs(data_tree.supplements) do
local supplement_tree
if supplement.type == "doublet" and supplement.config
and supplement.terms and #supplement.terms > 0 then
local config = supplement.config
local term_parts = {}
for _, term in ipairs(supplement.terms) do
local term_part = build_term_part(term, entry_lang, 1)
if term_part.text ~= "" then
table.insert(term_parts, term_part)
end
end
if #term_parts == 0 then
supplement_tree = nil
else
supplement_tree = {
type = "tree",
container_parts = {
{
type = "doublet",
intro_text = config.text,
phrase = config.phrase,
term_parts = term_parts,
conj = config.default_conj or "and",
new_sentence = true,
},
},
depth = 1,
}
end
elseif supplement.type == "etydate" and supplement.etydate_text and supplement.etydate_text ~= "" then
supplement_tree = {
type = "tree",
container_parts = {
{
type = "etydate",
etydate_text = supplement.etydate_text,
etydate_refs = supplement.etydate_refs,
new_sentence = true,
},
},
depth = 1,
}
end
if supplement_tree then
table.insert(pending_trees, supplement_tree)
end
end
flush_pending_trees()
return table.concat(chunks, " ")
end
if not text_tree then
local supplement_text = assemble_supplements()
if supplement_text == "" then
if stop_at_lang then
return "", { stop_lang_reached = false }
end
return ""
end
if stop_at_lang then
return supplement_text, { stop_lang_reached = false }
end
return supplement_text
end
local rendered = ""
if text_tree then
check_complexity(text_tree)
analyze_punctuation(text_tree, true)
apply_closing_punctuation_override(text_tree, not has_supplements())
rendered = assemble_text(text_tree)
end
local supplement_text = assemble_supplements()
if supplement_text ~= "" then
if rendered ~= "" then
rendered = rendered .. " " .. supplement_text
else
rendered = supplement_text
end
end
if stop_at_lang then
return rendered, { stop_lang_reached = stop_lang_reached }
end
return rendered
end
return export
j2qwgmtpf1ajsn29643mx9odfcbjc2p
Module:Etymon/categories
828
3238897
9813887
9740942
2026-06-15T18:08:18Z
TongcyDai
53191
9813887
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",
},
loadData = {
data = "Module:etymon/data",
},
})
local borrowing_name_map = { -- L10N
["borrowed"] = "借詞",
["learned"] = "古典借詞",
["semi-learned"] = "半接觸借詞",
["orthographic"] = "形譯詞",
["unadapted"] = "非同化借詞",
["calque"] = "仿譯詞",
["partial-calque"] = "部分仿譯詞",
["semantic-loan"] = "意譯詞",
["terms inherited"] = "繼承詞",
}
-- 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"] = "prefix",
["suf"] = "suffix",
["in"] = "infix",
["inter"] = "interfix",
["circum"] = "circumfix",
["naf"] = "non-affix",
["root"] = "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" then
part_data.type = "non-affix"
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 = "詞", -- L10N
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 .. "詞") -- L10N
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 == "borrowed" 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 = borrowing_name_map[config.specialized_borrowing] or config.specialized_borrowing, -- L10N
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 = borrowing_name_map[config.source_category_type] or config.source_category_type, -- L10N
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 = "繼承", -- L10N
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 = "詞" } -- L10N
-- Determine pos: from term's postype, keyword's pos_override, or args.pos
local pos
local config = get_keyword_config(keyword, lang_exc)
if term.postype then
-- Term-level postype modifier takes highest priority
pos = term.postype
elseif config and config.pos_override then
pos = config.pos_override
elseif type(term.args) == "table" and term.args.pos then
pos = term.args.pos
end
local pos_type = pos_types[pos]
if not pos_type or term.unknown_term then
return
end
-- Skip root/word categories for descendants of affix groups
-- if pos_type then
-- return
-- end
local same_language = get_norm_lang_func(page_lang):getFullCode() == get_norm_lang_func(term.lang):getFullCode()
-- Skip self-references
if same_language and root_title == term.title then
return
end
-- Use makeEntryName to strip diacritics for category names
local entry_name = term.lang:makeEntryName(term.title)
local lang_name = page_lang:getCanonicalName()
local cat_name
if chain.passed_through then
local etymon_lang_name = export.get_cat_name(term.lang)
cat_name = "來自" .. etymon_lang_name .. pos_type .. entry_name .. "的" .. lang_name .. "詞" -- L10N
else
cat_name = pos_type .. "為" .. entry_name .. "的" .. lang_name .. "詞" -- L10N
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
-- L10N: ID位於詞綴後而非分類名末尾
local suffix = "的" .. lang_name .. "詞"
cat_name = cat_name:sub(1, -#suffix - 1) .. " (" .. effective_id .. ")" .. suffix
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 ~= "non-affix"
end
-- Check if pos=root (treated as non-affix)
if term.args and term.args.pos and term.args.pos == "root" 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
local cat_name = cat.cat:find("的") and cat.cat:gsub("的", "的" .. lang_name) or lang_name .. cat.cat -- L10N
add_category(categories, cat_name, 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
local cat_name = config.toplevel_category:find("的") and config.toplevel_category:gsub("的", "的" .. lang_name) or lang_name .. config.toplevel_category -- L10N
add_category(categories, cat_name)
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 .. "詞條") -- L10N
end
if not term.unknown_term and term.status == M.data.STATUS.AMBIGUOUS then
add_category(categories, "引用歧義詞源的" .. lang_name .. "詞條") -- L10N
end
if term.missing_descendants_header then
add_category(categories, "引用缺少後代詞章節之詞源的" .. lang_name .. "詞條") -- L10N
end
if term.missing_descendants_entry then
add_category(categories, "引用未在後代詞章節列出本詞之詞源的" .. lang_name .. "詞條") -- L10N
end
-- Top-level category (e.g., "undefined derivations")
if config.toplevel_category then
local cat_name = config.toplevel_category:find("的") and config.toplevel_category:gsub("的", "的" .. lang_name) or lang_name .. config.toplevel_category -- L10N
add_category(categories, cat_name)
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 = "borrowed" }
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, "有詞源的頁面") -- L10N
table.insert(categories, "有詞源的" .. lang_name .. "詞條") -- L10N
if opts.tree then
table.insert(categories, "有詞源樹的頁面") -- L10N
table.insert(categories, "有詞源樹的" .. lang_name .. "詞條") -- L10N
end
if opts.text then
table.insert(categories, "有詞源文字的" .. lang_name .. "詞條") -- L10N
end
if opts.exnihilo then
table.insert(categories, "無中生有式創造的" .. lang_name .. "詞") -- L10N
end
if opts.toplevel_has_inline_etymology then
table.insert(categories, "有紅鏈行內詞源的頁面") -- L10N
end
if opts.toplevel_redundant_etymology then
table.insert(categories, "有冗餘行內詞源的頁面") -- L10N
end
if opts.toplevel_idless_etymon then
table.insert(categories, "使用無ID詞源的頁面") -- L10N
end
if opts.has_mismatched_id then
table.insert(categories, "引用ID不符之詞源的" .. lang_name .. "詞條") -- L10N
end
if opts.linked_page_multiple_etymons_idless then
table.insert(categories, "引用缺失ID之多個詞源的" .. lang_name .. "詞條") -- L10N
end
if opts.linked_page_partial_etymology_sections then
table.insert(categories, "引用缺失詞源模板之詞源章節的" .. lang_name .. "詞條") -- L10N
end
if opts.text_stop_lang_missing then
table.insert(categories, "詞源文字停止語言不在鏈上的頁面") -- L10N
table.insert(categories, "詞源文字停止語言不在鏈上的" .. lang_name .. "詞條") -- L10N
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
kx21a9b6zkcgkhijpdunsk9d2452w2r
9813892
9813887
2026-06-15T18:22:44Z
TongcyDai
53191
9813892
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",
},
loadData = {
data = "Module:etymon/data",
},
})
local borrowing_name_map = { -- L10N
["borrowed"] = "借詞",
["learned"] = "古典借詞",
["semi-learned"] = "半接觸借詞",
["orthographic"] = "形譯詞",
["unadapted"] = "非同化借詞",
["calque"] = "仿譯詞",
["partial-calque"] = "部分仿譯詞",
["semantic-loan"] = "意譯詞",
["terms inherited"] = "繼承詞",
}
-- 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"] = "prefix",
["suf"] = "suffix",
["in"] = "infix",
["inter"] = "interfix",
["circum"] = "circumfix",
["naf"] = "non-affix",
["root"] = "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" then
part_data.type = "non-affix"
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 = "詞", -- L10N
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 .. "回借詞") -- L10N
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 == "borrowed" 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 = borrowing_name_map[config.specialized_borrowing] or config.specialized_borrowing, -- L10N
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 = borrowing_name_map[config.source_category_type] or config.source_category_type, -- L10N
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
-- Use makeEntryName to strip diacritics for category names
local entry_name = term.lang:makeEntryName(term.title)
local lang_name = page_lang:getCanonicalName()
local cat_name
if chain.passed_through then
local etymon_lang_name = export.get_cat_name(term.lang)
cat_name = "來自" .. etymon_lang_name .. pos_type .. entry_name .. "的" .. lang_name .. "詞"
else
cat_name = pos_type .. "為" .. entry_name .. "的" .. lang_name .. "詞" -- L10N
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
-- L10N: ID位於詞綴後而非分類名末尾
local suffix = "的" .. lang_name .. "詞"
cat_name = cat_name:sub(1, -#suffix - 1) .. " (" .. effective_id .. ")" .. suffix
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 ~= "non-affix"
end
-- Check if pos=root (treated as non-affix)
if term.args and term.args.pos and term.args.pos == "root" 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
local cat_name = cat.cat:find("的") and cat.cat:gsub("的", "的" .. lang_name) or lang_name .. cat.cat -- L10N
add_category(categories, cat_name, 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
local cat_name = config.toplevel_category:find("的") and config.toplevel_category:gsub("的", "的" .. lang_name) or lang_name .. config.toplevel_category -- L10N
add_category(categories, cat_name)
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 .. "詞條") -- L10N
end
if not term.unknown_term and term.status == M.data.STATUS.AMBIGUOUS then
add_category(categories, "引用歧義詞源的" .. lang_name .. "詞條") -- L10N
end
if term.missing_descendants_header then
add_category(categories, "引用缺少後代詞章節之詞源的" .. lang_name .. "詞條") -- L10N
end
if term.missing_descendants_entry then
add_category(categories, "引用未在後代詞章節列出本詞之詞源的" .. lang_name .. "詞條") -- L10N
end
-- Top-level category (e.g., "undefined derivations")
if config.toplevel_category then
local cat_name = config.toplevel_category:find("的") and config.toplevel_category:gsub("的", "的" .. lang_name) or lang_name .. config.toplevel_category -- L10N
add_category(categories, cat_name)
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 = "borrowed" }
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, "有etymon的頁面")
table.insert(categories, "有etymon的" .. lang_name .. "詞條")
if opts.tree then
table.insert(categories, "有詞源樹的頁面")
table.insert(categories, "有詞源樹的" .. lang_name .. "詞條")
end
if opts.text then
table.insert(categories, "有詞源文字的" .. lang_name .. "詞條")
end
if opts.exnihilo then
table.insert(categories, "無中生有式創造的" .. lang_name .. "詞")
end
if opts.toplevel_has_inline_etymology then
table.insert(categories, "有紅鏈行內詞源的頁面")
end
if opts.toplevel_redundant_etymology then
table.insert(categories, "有冗餘行內詞源的頁面")
end
if opts.toplevel_idless_etymon then
table.insert(categories, "使用無ID詞源的頁面")
end
if opts.has_mismatched_id then
table.insert(categories, "引用ID不符之詞源的" .. lang_name .. "詞條")
end
if opts.linked_page_multiple_etymons_idless then
table.insert(categories, "引用缺失ID之多個詞源的" .. lang_name .. "詞條")
end
if opts.linked_page_partial_etymology_sections then
table.insert(categories, "引用缺失詞源模板之詞源章節的" .. lang_name .. "詞條")
end
if opts.text_stop_lang_missing then
table.insert(categories, "詞源文字停止語言不在鏈上的頁面")
table.insert(categories, "詞源文字停止語言不在鏈上的" .. lang_name .. "詞條")
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
fb4jy73mfvb26tt9lv7lexkf8f2x697
9813909
9813892
2026-06-15T20:02:33Z
TongcyDai
53191
9813909
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",
},
loadData = {
data = "Module:etymon/data",
},
})
local borrowing_name_map = { -- L10N
["borrowed"] = "借詞",
["learned"] = "古典借詞",
["semi-learned"] = "半接觸借詞",
["orthographic"] = "形譯詞",
["unadapted"] = "非同化借詞",
["calque"] = "仿譯詞",
["partial-calque"] = "部分仿譯詞",
["semantic-loan"] = "意譯詞",
["terms inherited"] = "繼承詞",
}
-- 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"] = "prefix",
["suf"] = "suffix",
["in"] = "infix",
["inter"] = "interfix",
["circum"] = "circumfix",
["naf"] = "non-affix",
["root"] = "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" then
part_data.type = "non-affix"
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 = "詞", -- L10N
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 .. "回借詞") -- L10N
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 == "borrowed" 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 = borrowing_name_map[config.specialized_borrowing] or config.specialized_borrowing, -- L10N
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 = borrowing_name_map[config.source_category_type] or config.source_category_type, -- L10N
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
-- Use makeEntryName to strip diacritics for category names
local entry_name = term.lang:makeEntryName(term.title)
local lang_name = page_lang:getCanonicalName()
local cat_name
if chain.passed_through then
local etymon_lang_name = export.get_cat_name(term.lang)
cat_name = "來自" .. etymon_lang_name .. pos_type .. entry_name .. "的" .. lang_name .. "詞"
else
cat_name = pos_type .. "為" .. entry_name .. "的" .. lang_name .. "詞" -- L10N
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
-- L10N: ID位於詞綴後而非分類名末尾
local suffix = "的" .. lang_name .. "詞"
cat_name = cat_name:sub(1, -#suffix - 1) .. " (" .. effective_id .. ")" .. suffix
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 ~= "non-affix"
end
-- Check if pos=root (treated as non-affix)
if term.args and term.args.pos and term.args.pos == "root" 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
local cat_name = cat.cat:find("的") and cat.cat:gsub("的", "的" .. lang_name) or lang_name .. cat.cat -- L10N
add_category(categories, cat_name, 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
local cat_name = config.toplevel_category:find("的") and config.toplevel_category:gsub("的", "的" .. lang_name) or lang_name .. config.toplevel_category -- L10N
add_category(categories, cat_name)
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, "引用缺失etymon的" .. lang_name .. "詞條")
end
if not term.unknown_term and term.status == M.data.STATUS.AMBIGUOUS then
add_category(categories, "引用歧義etymon的" .. lang_name .. "詞條")
end
if term.missing_descendants_header then
add_category(categories, "引用缺少後代詞章節之etymon的" .. lang_name .. "詞條")
end
if term.missing_descendants_entry then
add_category(categories, "引用未在後代詞章節列出本詞之etymon的" .. lang_name .. "詞條")
end
-- Top-level category (e.g., "undefined derivations")
if config.toplevel_category then
local cat_name = config.toplevel_category:find("的") and config.toplevel_category:gsub("的", "的" .. lang_name) or lang_name .. config.toplevel_category -- L10N
add_category(categories, cat_name)
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 = "borrowed" }
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, "有etymon的頁面")
table.insert(categories, "有etymon的" .. lang_name .. "詞條")
if opts.tree then
table.insert(categories, "有詞源樹的頁面")
table.insert(categories, "有詞源樹的" .. lang_name .. "詞條")
end
if opts.text then
table.insert(categories, "有詞源文字的" .. lang_name .. "詞條")
end
if opts.exnihilo then
table.insert(categories, "無中生有式創造的" .. lang_name .. "詞")
end
if opts.toplevel_has_inline_etymology then
table.insert(categories, "有紅鏈行內etymon的頁面")
end
if opts.toplevel_redundant_etymology then
table.insert(categories, "有冗餘行內etymon的頁面")
end
if opts.toplevel_idless_etymon then
table.insert(categories, "使用無ID之etymon的頁面")
end
if opts.has_mismatched_id then
table.insert(categories, "引用ID不符之etymon的" .. lang_name .. "詞條")
end
if opts.linked_page_multiple_etymons_idless then
table.insert(categories, "引用缺失ID之多個etymon的" .. lang_name .. "詞條")
end
if opts.linked_page_partial_etymology_sections then
table.insert(categories, "引用缺失etymon之詞源章節的" .. lang_name .. "詞條")
end
if opts.text_stop_lang_missing then
table.insert(categories, "詞源文字停止語言不在鏈上的頁面")
table.insert(categories, "詞源文字停止語言不在鏈上的" .. lang_name .. "詞條")
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
77rs9b16ujqf6yh84pv869a1runnj0p
Category:有詞源樹的頁面
14
3248120
9813907
9427824
2026-06-15T19:46:35Z
TongcyDai
53191
9813907
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始圖皮-瓜拉尼語詞條
14
3248947
9813936
9633879
2026-06-15T20:12:06Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始圖皮-瓜拉尼語詞條]]至[[Category:引用缺失etymon的原始圖皮-瓜拉尼語詞條]],不留重定向
9428874
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的詞條
14
3248948
9813981
9633938
2026-06-15T20:14:16Z
TongcyDai
53191
TongcyDai移动页面[[Category:引用缺失詞源的詞條]]至[[Category:引用缺失etymon的詞條]],不留重定向
9428875
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的西里西亞語詞條
14
3248956
9814032
9633931
2026-06-15T20:16:34Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的西里西亞語詞條]]至[[Category:引用缺失etymon的西里西亞語詞條]],不留重定向
9428886
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的波蘭語詞條
14
3248961
9813999
9633924
2026-06-15T20:15:36Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的波蘭語詞條]]至[[Category:引用缺失etymon的波蘭語詞條]],不留重定向
9428891
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的葡萄牙語詞條
14
3248962
9814024
9633930
2026-06-15T20:16:21Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的葡萄牙語詞條]]至[[Category:引用缺失etymon的葡萄牙語詞條]],不留重定向
9428892
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的拉丁語詞條
14
3248963
9813984
9633915
2026-06-15T20:14:44Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的拉丁語詞條]]至[[Category:引用缺失etymon的拉丁語詞條]],不留重定向
9428894
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古奧克語詞條
14
3248969
9813948
9633899
2026-06-15T20:12:40Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古奧克語詞條]]至[[Category:引用缺失etymon的古奧克語詞條]],不留重定向
9428907
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古圖皮語詞條
14
3248978
9813947
9633898
2026-06-15T20:12:38Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古圖皮語詞條]]至[[Category:引用缺失etymon的古圖皮語詞條]],不留重定向
9428921
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古希臘語詞條
14
3249006
9813949
9633900
2026-06-15T20:12:43Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古希臘語詞條]]至[[Category:引用缺失etymon的古希臘語詞條]],不留重定向
9428959
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的俄語詞條
14
3249033
9813924
9633886
2026-06-15T20:11:35Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的俄語詞條]]至[[Category:引用缺失etymon的俄語詞條]],不留重定向
9428989
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的亞拉姆語詞條
14
3249049
9813922
9633885
2026-06-15T20:11:27Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的亞拉姆語詞條]]至[[Category:引用缺失etymon的亞拉姆語詞條]],不留重定向
9429012
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的波斯語詞條
14
3249054
9813998
9633923
2026-06-15T20:15:34Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的波斯語詞條]]至[[Category:引用缺失etymon的波斯語詞條]],不留重定向
9429020
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的普拉克里特語詞條
14
3249060
9813992
9633920
2026-06-15T20:15:12Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的普拉克里特語詞條]]至[[Category:引用缺失etymon的普拉克里特語詞條]],不留重定向
9429027
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的旁遮普語詞條
14
3249061
9813990
9633918
2026-06-15T20:15:07Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的旁遮普語詞條]]至[[Category:引用缺失etymon的旁遮普語詞條]],不留重定向
9429030
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的阿拉伯語詞條
14
3249064
9814037
9633933
2026-06-15T20:16:41Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的阿拉伯語詞條]]至[[Category:引用缺失etymon的阿拉伯語詞條]],不留重定向
9429035
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的印地語詞條
14
3249067
9813931
9633890
2026-06-15T20:11:54Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的印地語詞條]]至[[Category:引用缺失etymon的印地語詞條]],不留重定向
9429041
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的梵語詞條
14
3249071
9813994
9633921
2026-06-15T20:15:17Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的梵語詞條]]至[[Category:引用缺失etymon的梵語詞條]],不留重定向
9429049
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古英語詞條
14
3249139
9813958
9633905
2026-06-15T20:13:09Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古英語詞條]]至[[Category:引用缺失etymon的古英語詞條]],不留重定向
9429164
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始日耳曼語詞條
14
3259497
9813941
9633895
2026-06-15T20:12:20Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始日耳曼語詞條]]至[[Category:引用缺失etymon的原始日耳曼語詞條]],不留重定向
9441061
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古東斯拉夫語詞條
14
3274712
9813954
9633901
2026-06-15T20:12:55Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古東斯拉夫語詞條]]至[[Category:引用缺失etymon的古東斯拉夫語詞條]],不留重定向
9458493
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古盧森尼亞語詞條
14
3274713
9813957
9633904
2026-06-15T20:13:07Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古盧森尼亞語詞條]]至[[Category:引用缺失etymon的古盧森尼亞語詞條]],不留重定向
9458494
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始印歐語詞條
14
3282436
9813935
9633893
2026-06-15T20:12:03Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始印歐語詞條]]至[[Category:引用缺失etymon的原始印歐語詞條]],不留重定向
9470759
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的德語詞條
14
3284506
9813980
9633913
2026-06-15T20:14:02Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的德語詞條]]至[[Category:引用缺失etymon的德語詞條]],不留重定向
9474773
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始西日耳曼語詞條
14
3333507
9813943
9633896
2026-06-15T20:12:25Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始西日耳曼語詞條]]至[[Category:引用缺失etymon的原始西日耳曼語詞條]],不留重定向
9595483
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始斯拉夫語詞條
14
3336832
9813940
9633894
2026-06-15T20:12:13Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始斯拉夫語詞條]]至[[Category:引用缺失etymon的原始斯拉夫語詞條]],不留重定向
9600188
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始凱爾特語詞條
14
3338583
9813933
9633891
2026-06-15T20:11:58Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始凱爾特語詞條]]至[[Category:引用缺失etymon的原始凱爾特語詞條]],不留重定向
9608443
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的哈薩克語詞條
14
3340077
9813961
9633908
2026-06-15T20:13:21Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的哈薩克語詞條]]至[[Category:引用缺失etymon的哈薩克語詞條]],不留重定向
9610482
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的上古泰米爾語詞條
14
3340205
9813914
9633880
2026-06-15T20:10:58Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的上古泰米爾語詞條]]至[[Category:引用缺失etymon的上古泰米爾語詞條]],不留重定向
9610638
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的世界語詞條
14
3345276
9813915
9633881
2026-06-15T20:11:00Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的世界語詞條]]至[[Category:引用缺失etymon的世界語詞條]],不留重定向
9616935
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的中世紀西班牙語詞條
14
3345277
9813916
9633882
2026-06-15T20:11:03Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的中世紀西班牙語詞條]]至[[Category:引用缺失etymon的中世紀西班牙語詞條]],不留重定向
9616936
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的中古波斯語詞條
14
3345283
9813918
9633883
2026-06-15T20:11:08Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的中古波斯語詞條]]至[[Category:引用缺失etymon的中古波斯語詞條]],不留重定向
9616942
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的中古英語詞條
14
3345294
9813919
9633884
2026-06-15T20:11:11Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的中古英語詞條]]至[[Category:引用缺失etymon的中古英語詞條]],不留重定向
9616953
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的加利西亞語詞條
14
3345295
9813927
9633887
2026-06-15T20:11:43Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的加利西亞語詞條]]至[[Category:引用缺失etymon的加利西亞語詞條]],不留重定向
9616954
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的博杰普爾語詞條
14
3345296
9813929
9633888
2026-06-15T20:11:48Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的博杰普爾語詞條]]至[[Category:引用缺失etymon的博杰普爾語詞條]],不留重定向
9616955
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的卡舒比語詞條
14
3345297
9813930
9633889
2026-06-15T20:11:51Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的卡舒比語詞條]]至[[Category:引用缺失etymon的卡舒比語詞條]],不留重定向
9616956
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古吉拉特語詞條
14
3345298
9813946
9633897
2026-06-15T20:12:35Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古吉拉特語詞條]]至[[Category:引用缺失etymon的古吉拉特語詞條]],不留重定向
9616957
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古法語詞條
14
3345300
9813955
9633902
2026-06-15T20:12:57Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古法語詞條]]至[[Category:引用缺失etymon的古法語詞條]],不留重定向
9616959
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古波蘭語詞條
14
3345301
9813956
9633903
2026-06-15T20:12:59Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古波蘭語詞條]]至[[Category:引用缺失etymon的古波蘭語詞條]],不留重定向
9616960
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古葡萄牙語詞條
14
3345302
9813959
9633906
2026-06-15T20:13:16Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古葡萄牙語詞條]]至[[Category:引用缺失etymon的古葡萄牙語詞條]],不留重定向
9616961
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古高地德語詞條
14
3345303
9813960
9633907
2026-06-15T20:13:19Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古高地德語詞條]]至[[Category:引用缺失etymon的古高地德語詞條]],不留重定向
9616962
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的奈恩加圖語詞條
14
3345304
9813968
9633909
2026-06-15T20:13:38Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的奈恩加圖語詞條]]至[[Category:引用缺失etymon的奈恩加圖語詞條]],不留重定向
9616963
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的孔卡尼語詞條
14
3345305
9813971
9633910
2026-06-15T20:13:46Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的孔卡尼語詞條]]至[[Category:引用缺失etymon的孔卡尼語詞條]],不留重定向
9616964
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的孟加拉語詞條
14
3345306
9813974
9633911
2026-06-15T20:13:49Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的孟加拉語詞條]]至[[Category:引用缺失etymon的孟加拉語詞條]],不留重定向
9616965
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的巴利語詞條
14
3345307
9813975
9633912
2026-06-15T20:13:52Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的巴利語詞條]]至[[Category:引用缺失etymon的巴利語詞條]],不留重定向
9616966
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的意大利語詞條
14
3345308
9813982
9633914
2026-06-15T20:14:30Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的意大利語詞條]]至[[Category:引用缺失etymon的意大利語詞條]],不留重定向
9616967
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的捷克語詞條
14
3345309
9813985
9633916
2026-06-15T20:14:50Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的捷克語詞條]]至[[Category:引用缺失etymon的捷克語詞條]],不留重定向
9616968
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的斯瓦希里語詞條
14
3345310
9813989
9633917
2026-06-15T20:15:03Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的斯瓦希里語詞條]]至[[Category:引用缺失etymon的斯瓦希里語詞條]],不留重定向
9616969
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的日語詞條
14
3345311
9813991
9633919
2026-06-15T20:15:10Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的日語詞條]]至[[Category:引用缺失etymon的日語詞條]],不留重定向
9616970
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的法語詞條
14
3345312
9813996
9633922
2026-06-15T20:15:22Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的法語詞條]]至[[Category:引用缺失etymon的法語詞條]],不留重定向
9616971
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的漢斯立克語詞條
14
3345313
9814001
9633925
2026-06-15T20:15:46Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的漢斯立克語詞條]]至[[Category:引用缺失etymon的漢斯立克語詞條]],不留重定向
9616972
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的烏爾都語詞條
14
3345314
9814004
9633926
2026-06-15T20:15:50Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的烏爾都語詞條]]至[[Category:引用缺失etymon的烏爾都語詞條]],不留重定向
9616973
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的穆西語詞條
14
3345316
9814010
9633927
2026-06-15T20:16:00Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的穆西語詞條]]至[[Category:引用缺失etymon的穆西語詞條]],不留重定向
9616975
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的英語詞條
14
3345317
9814019
9633928
2026-06-15T20:16:11Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的英語詞條]]至[[Category:引用缺失etymon的英語詞條]],不留重定向
9616976
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的荷蘭語詞條
14
3345318
9814022
9633929
2026-06-15T20:16:18Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的荷蘭語詞條]]至[[Category:引用缺失etymon的荷蘭語詞條]],不留重定向
9616977
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的阿塞拜疆語詞條
14
3345325
9814036
9633932
2026-06-15T20:16:39Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的阿塞拜疆語詞條]]至[[Category:引用缺失etymon的阿塞拜疆語詞條]],不留重定向
9616984
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的阿薩姆語詞條
14
3345335
9814043
9633934
2026-06-15T20:16:51Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的阿薩姆語詞條]]至[[Category:引用缺失etymon的阿薩姆語詞條]],不留重定向
9616994
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的馬來語詞條
14
3345336
9814045
9633935
2026-06-15T20:16:56Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的馬來語詞條]]至[[Category:引用缺失etymon的馬來語詞條]],不留重定向
9616995
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的馬拉地語詞條
14
3345337
9814048
9633936
2026-06-15T20:16:58Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的馬拉地語詞條]]至[[Category:引用缺失etymon的馬拉地語詞條]],不留重定向
9616996
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始南達羅毗荼語詞條
14
3352707
9813934
9633892
2026-06-15T20:12:01Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始南達羅毗荼語詞條]]至[[Category:引用缺失etymon的原始南達羅毗荼語詞條]],不留重定向
9625870
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Module:Etymon/data
828
3352710
9813889
9746198
2026-06-15T18:15:59Z
TongcyDai
53191
9813889
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.inheritance, {
text = "源自", phrase = "源自",
term_rules = { entry_lang = true },
})),
["inherited"] = create_keyword(deep_merge(DEFAULTS.inheritance, {
text = "繼承自",
phrase = "源自",
glossary = "inherited",
aliases = { "inh" },
term_rules = {
family = "disallowed",
family_suffix = ";請使用具體語言。",
ancestor_check = true,
},
})),
--
-- Basic derivation keywords
--
["uder"] = create_keyword(deep_merge(DEFAULTS.transitive, {
text = "源自",
phrase = "源自",
toplevel_category = "派生形式不詳的詞",
})),
["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 = "混成詞",
})),
["univerbation"] = create_keyword(deep_merge(DEFAULTS.affix_group, {
text = "合寫詞,源自",
phrase = "合寫自",
abbrev = "合寫",
glossary = "univerbation",
toplevel_category = "合寫詞",
min_etymons = 1,
aliases = { "univ" },
})),
["vrd-af"] = create_keyword(deep_merge(DEFAULTS.affix_group, {
text = "Vṛddhi派生詞,源自",
phrase = "Vṛddhi派生自",
abbrev = "vṛd.",
glossary = "vṛddhi derivative",
toplevel_category = "Vṛddhi派生詞",
})),
["sa-af"] = create_keyword(deep_merge(DEFAULTS.affix_group, {
text = "[[梵語]][[Appendix:Glossary#構詞|構詞]],源自",
phrase = "梵語構詞自",
toplevel_category = "梵語構詞",
})),
--
-- 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 = "音義兼譯自",
phrase = "音義兼譯自",
abbrev = "音義兼譯",
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 = "截斷形式",
aliases = { "clip" },
})),
["ellipsis"] = create_keyword(deep_merge(DEFAULTS.transitive, {
text = "縮略形式,源自",
phrase = "縮略自",
abbrev = "縮略",
glossary = "ellipsis",
toplevel_category = "縮略形式",
aliases = { "ellip" },
})),
["back-formation"] = create_keyword(deep_merge(DEFAULTS.transitive, {
text = "逆構詞,源自",
phrase = "逆構自",
abbrev = "逆構",
glossary = "back-formation",
toplevel_category = "逆構詞",
aliases = { "bf" },
})),
["nominalization"] = create_keyword(deep_merge(DEFAULTS.transitive, {
text = "名詞化,源自",
phrase = "名詞化自",
abbrev = "名詞化",
glossary = "nominalization",
toplevel_category = "名詞化",
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派生詞,源自",
phrase = "派生自",
abbrev = "vṛd.",
glossary = "vṛddhi derivative",
toplevel_category = "Vṛddhi派生詞",
})),
["apheretic"] = create_keyword(deep_merge(DEFAULTS.transitive, {
text = "首音脫落詞,源自",
phrase = "源自",
abbrev = "首音脫落",
glossary = "apheresis",
aliases = { "apheresis", "aphetic" },
})),
["denominal"] = create_keyword(deep_merge(DEFAULTS.transitive, {
text = "名詞派生的動詞,源自",
phrase = "派生自名詞",
abbrev = "名詞派生",
glossary = "denominal",
toplevel_category = "名詞派生詞",
aliases = { "denom" },
})),
["deverbal"] = create_keyword(deep_merge(DEFAULTS.transitive, {
text = "動詞派生詞,源自",
phrase = "派生自動詞",
abbrev = "動詞派生",
glossary = "deverbal",
toplevel_category = "動詞派生詞",
})),
["reduplication"] = create_keyword(deep_merge(DEFAULTS.transitive, {
text = "疊詞,源自",
phrase = "疊詞,源自",
abbrev = "疊詞",
glossary = "reduplication",
toplevel_category = "疊詞",
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 = "音節縮寫,源自",
phrase = "音節縮寫自",
abbrev = "音節縮寫",
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 = "語音換位,源自",
phrase = "語音換位,源自",
abbrev = "語音換位",
glossary = "metathesis",
toplevel_category = "語音換位詞",
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 = "同源對似詞",
default_conj = "和",
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 = "[[en: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"] = "少數",
["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
hdyxgeo436bcxt4m993eox3o07vcl36
Category:使用無ID之etymon的頁面
14
3354143
9814088
9633858
2026-06-15T20:18:54Z
TongcyDai
53191
TongcyDai移动页面[[Category:使用無ID詞源的頁面]]至[[Category:使用無ID之etymon的頁面]],不留重定向
9633858
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的奧利亞語詞條
14
3354995
9813969
9634974
2026-06-15T20:13:41Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的奧利亞語詞條]]至[[Category:引用缺失etymon的奧利亞語詞條]],不留重定向
9634974
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的中阿特拉斯柏柏爾語詞條
14
3355002
9813921
9634981
2026-06-15T20:11:24Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的中阿特拉斯柏柏爾語詞條]]至[[Category:引用缺失etymon的中阿特拉斯柏柏爾語詞條]],不留重定向
9634981
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的科西嘉語詞條
14
3355005
9814009
9634985
2026-06-15T20:15:58Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的科西嘉語詞條]]至[[Category:引用缺失etymon的科西嘉語詞條]],不留重定向
9634985
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的西西里語詞條
14
3355010
9814031
9634990
2026-06-15T20:16:31Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的西西里語詞條]]至[[Category:引用缺失etymon的西西里語詞條]],不留重定向
9634990
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的科瓦語詞條
14
3355023
9814007
9635007
2026-06-15T20:15:55Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的科瓦語詞條]]至[[Category:引用缺失etymon的科瓦語詞條]],不留重定向
9635007
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的基爾丁薩米語詞條
14
3355038
9813965
9635023
2026-06-15T20:13:31Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的基爾丁薩米語詞條]]至[[Category:引用缺失etymon的基爾丁薩米語詞條]],不留重定向
9635023
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的塞浦路斯阿拉伯語詞條
14
3355054
9813966
9635039
2026-06-15T20:13:33Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的塞浦路斯阿拉伯語詞條]]至[[Category:引用缺失etymon的塞浦路斯阿拉伯語詞條]],不留重定向
9635039
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的他加祿語詞條
14
3383326
9813923
9683161
2026-06-15T20:11:29Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的他加祿語詞條]]至[[Category:引用缺失etymon的他加祿語詞條]],不留重定向
9683161
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Template:RQ:Browne Pseudodoxia Epidemica
10
3385704
9813786
9686540
2026-06-15T14:02:47Z
TongcyDai
53191
9813786
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = w:托馬斯·布朗
|chapter = {{{chapter|{{{1|}}}}}}
|title = [[w:Pseudodoxia Epidemica|Pseudodoxia Epidemica:{{nb...|Or, Enquiries into Very Many Received Tenents, and Commonly Presumed Truths.{{#ifeq:{{{edition|}}}|2nd| [...] Together with Some Marginall Observations, and a Table Alphabeticall at the End.}}}}]]
|edition = {{#ifeq:{{{edition|}}}|2nd|2nd}}
|location = 倫敦
|publisher = {{...|Printed by}} {{#ifeq:{{{edition|}}}|2nd
| A[braham] Miller, for Edw[ard] Dod and Nath[aniel] Ekins,{{nb...|at the Gunne in Ivie Lane.}}
| T[homas] H[arper] for Edward Dod,{{nb...|and are to be sold in Ivie Lane.}}
}}
|year = 16{{#ifeq:{{{edition|}}}|2nd|50|46}}
|section = {{#if:{{{page|}}}{{{pageref|}}}{{{2|}}}
| {{#ifeq:{{{edition|}}}|2nd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<37
| 1st
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<85
| 2nd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<153
| 3rd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<197
| 4th
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<234
| 5th
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<290
| 6th
| 7th
}}
}}
}}
}}
}}
}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<49
| 1st
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<104
| 2nd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<179
| 3rd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<233
| 4th
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<273
| 5th
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<339
| 6th
| 7th
}}
}}
}}
}}
}}
}}
}} book{{#if:{{{para|}}}{{{paragraph|}}}|, }}
}}{{#if:{{{para|}}}{{{paragraph|}}}
| paragraph {{{para|{{{paragraph|}}}}}}
}}
|pageparam = 2
|pageurl = https://{{#ifeq:{{{edition|}}}|2nd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}>68 and {{{page|}}}{{{pageref|}}}{{{2|}}}<71<!--For pages 69 and 70 missing from the Internet Archive version-->
| books.google.com/books?id=ym0lfhtc2-sC&pg=PA{{{page|{{{pageref|{{{2|}}}}}}}}}
| archive.org/details/BrownePseudodoxia1650Clark/page/n{{#expr:{{{page|{{{pageref|{{{2|}}}}}}}}}+{{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<69
| 19
| 15<!--pages 69 and 70 missing-->
}}}}/mode/1up
}}
| archive.org/details/thomas-browne-pseudodoxia-epidemica-or-enquiries-into-very-many-received-tenents/page/n{{#expr:{{{page|{{{pageref|{{{2|}}}}}}}}}/2+8.5{{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}>7|-1}}{{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}>335|-1}} round 0}}/mode/1up
}}
|oclc = {{#ifeq:{{{edition|}}}|2nd
| 152706203
| 1008551266
}}
|textparam = 3
|allowparams = chapter,1,edition,pageref,para,paragraph
}}<noinclude>{{documentation}}</noinclude>
552xe6yl3ngafo5aogywd2cufto784h
9813787
9813786
2026-06-15T14:03:07Z
TongcyDai
53191
9813787
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = w:托馬斯·布朗
|chapter = {{{chapter|{{{1|}}}}}}
|title = [[w:Pseudodoxia Epidemica|Pseudodoxia Epidemica:{{nb...|Or, Enquiries into Very Many Received Tenents, and Commonly Presumed Truths.{{#ifeq:{{{edition|}}}|2nd| [...] Together with Some Marginall Observations, and a Table Alphabeticall at the End.}}}}]]
|edition = {{#ifeq:{{{edition|}}}|2nd|2nd}}
|location = 倫敦
|publisher = {{...|Printed by}} {{#ifeq:{{{edition|}}}|2nd
| A[braham] Miller, for Edw[ard] Dod and Nath[aniel] Ekins,{{nb...|at the Gunne in Ivie Lane.}}
| T[homas] H[arper] for Edward Dod,{{nb...|and are to be sold in Ivie Lane.}}
}}
|year = 16{{#ifeq:{{{edition|}}}|2nd|50|46}}
|section = {{#if:{{{page|}}}{{{pageref|}}}{{{2|}}}
| {{#ifeq:{{{edition|}}}|2nd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<37
| 1st
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<85
| 2nd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<153
| 3rd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<197
| 4th
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<234
| 5th
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<290
| 6th
| 7th
}}
}}
}}
}}
}}
}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<49
| 1st
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<104
| 2nd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<179
| 3rd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<233
| 4th
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<273
| 5th
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<339
| 6th
| 7th
}}
}}
}}
}}
}}
}}
}} book{{#if:{{{para|}}}{{{paragraph|}}}|, }}
}}{{#if:{{{para|}}}{{{paragraph|}}}
| paragraph {{{para|{{{paragraph|}}}}}}
}}
|pageparam = 2
|pageurl = https://{{#ifeq:{{{edition|}}}|2nd
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}>68 and {{{page|}}}{{{pageref|}}}{{{2|}}}<71<!--For pages 69 and 70 missing from the Internet Archive version-->
| books.google.com/books?id=ym0lfhtc2-sC&pg=PA{{{page|{{{pageref|{{{2|}}}}}}}}}
| archive.org/details/BrownePseudodoxia1650Clark/page/n{{#expr:{{{page|{{{pageref|{{{2|}}}}}}}}}+{{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}<69
| 19
| 15<!--pages 69 and 70 missing-->
}}}}/mode/1up
}}
| archive.org/details/thomas-browne-pseudodoxia-epidemica-or-enquiries-into-very-many-received-tenents/page/n{{#expr:{{{page|{{{pageref|{{{2|}}}}}}}}}/2+8.5{{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}>7|-1}}{{#ifexpr:{{{page|}}}{{{pageref|}}}{{{2|}}}>335|-1}} round 0}}/mode/1up
}}
|oclc = {{#ifeq:{{{edition|}}}|2nd
| 152706203
| 1008551266
}}
|textparam = 3
|allowparams = chapter,1,edition,pageref,para,paragraph
}}<noinclude>{{documentation}}{{quotecat}}</noinclude>
sov2prlzo1d0r2a2g2i5wtt7chcsr6x
Category:引用缺失etymon的翁布里亞語詞條
14
3387099
9814017
9688333
2026-06-15T20:16:09Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的翁布里亞語詞條]]至[[Category:引用缺失etymon的翁布里亞語詞條]],不留重定向
9688333
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的帕哈里-波特瓦里語詞條
14
3390367
9813976
9692662
2026-06-15T20:13:55Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的帕哈里-波特瓦里語詞條]]至[[Category:引用缺失etymon的帕哈里-波特瓦里語詞條]],不留重定向
9692662
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Module:Etymon/data/text allowed
828
3390380
9813896
9747279
2026-06-15T18:29:48Z
TongcyDai
53191
9813896
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 = {
["bg"] = true,
["bnt-sab-pro"] = true,
["cs"] = true,
["en"] = true,
["eo"] = true,
["es"] = true,
["fa"] = true,
["hsb"] = true,
["iir-pro"] = true,
["jbo"] = true,
["jdt"] = true,
["la"] = true,
["mul"] = true,
["ota"] = true,
["ps"] = true,
["ro"] = true,
["sk"] = true,
["sw"] = true,
["tg"] = true,
["tl"] = true,
["tr"] = true,
["uk"] = true,
["uz"] = 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
["roa-gap"] = true, -- Galician-Portuguese
["sem-ara"] = true, -- Aramaic
["sem-arb"] = true, -- Arabic
["tup"] = true, -- Tupian
["zlw-lch"] = true, -- Lechitic
["mun"] = true, -- Munda
},
}
3og0u66dbd5gk146lmw7ubsa2iyx4mo
Category:引用缺失etymon的中古孟加拉語詞條
14
3397437
9813917
9701773
2026-06-15T20:11:05Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的中古孟加拉語詞條]]至[[Category:引用缺失etymon的中古孟加拉語詞條]],不留重定向
9701773
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始意大利語詞條
14
3397438
9813938
9701774
2026-06-15T20:12:11Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始意大利語詞條]]至[[Category:引用缺失etymon的原始意大利語詞條]],不留重定向
9701774
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始波羅的-斯拉夫語詞條
14
3397439
9813942
9701775
2026-06-15T20:12:22Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始波羅的-斯拉夫語詞條]]至[[Category:引用缺失etymon的原始波羅的-斯拉夫語詞條]],不留重定向
9701775
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始達羅毗荼語詞條
14
3397440
9813944
9701776
2026-06-15T20:12:31Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始達羅毗荼語詞條]]至[[Category:引用缺失etymon的原始達羅毗荼語詞條]],不留重定向
9701776
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古教會斯拉夫語詞條
14
3401100
9813952
9706110
2026-06-15T20:12:50Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古教會斯拉夫語詞條]]至[[Category:引用缺失etymon的古教會斯拉夫語詞條]],不留重定向
9706110
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的圖瓦語詞條
14
3401101
9813964
9706112
2026-06-15T20:13:28Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的圖瓦語詞條]]至[[Category:引用缺失etymon的圖瓦語詞條]],不留重定向
9706112
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的朝鮮語詞條
14
3401102
9813993
9706113
2026-06-15T20:15:15Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的朝鮮語詞條]]至[[Category:引用缺失etymon的朝鮮語詞條]],不留重定向
9706113
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的波拉布語詞條
14
3401103
9813997
9706114
2026-06-15T20:15:32Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的波拉布語詞條]]至[[Category:引用缺失etymon的波拉布語詞條]],不留重定向
9706114
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的保加利亞語詞條
14
3402209
9813925
9707603
2026-06-15T20:11:38Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的保加利亞語詞條]]至[[Category:引用缺失etymon的保加利亞語詞條]],不留重定向
9707603
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的安提瓜和巴布達克里奧爾英語詞條
14
3409825
9813913
9721268
2026-06-15T20:10:56Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的安提瓜和巴布達克里奧爾英語詞條]]至[[Category:引用缺失etymon的安提瓜和巴布達克里奧爾英語詞條]],不留重定向
9721268
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的康沃爾語詞條
14
3409953
9813979
9721402
2026-06-15T20:13:59Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的康沃爾語詞條]]至[[Category:引用缺失etymon的康沃爾語詞條]],不留重定向
9721402
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古愛爾蘭語詞條
14
3409992
9813950
9721447
2026-06-15T20:12:45Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古愛爾蘭語詞條]]至[[Category:引用缺失etymon的古愛爾蘭語詞條]],不留重定向
9721447
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的泰米爾語詞條
14
3410074
9814000
9721546
2026-06-15T20:15:44Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的泰米爾語詞條]]至[[Category:引用缺失etymon的泰米爾語詞條]],不留重定向
9721546
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的牙買加克里奧爾語詞條
14
3411466
9814005
9723505
2026-06-15T20:15:53Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的牙買加克里奧爾語詞條]]至[[Category:引用缺失etymon的牙買加克里奧爾語詞條]],不留重定向
9723505
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的沃拉普克語詞條
14
3412050
9813995
9724150
2026-06-15T20:15:19Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的沃拉普克語詞條]]至[[Category:引用缺失etymon的沃拉普克語詞條]],不留重定向
9724150
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的約拉語詞條
14
3412055
9814014
9724155
2026-06-15T20:16:04Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的約拉語詞條]]至[[Category:引用缺失etymon的約拉語詞條]],不留重定向
9724155
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的阿貝納基語詞條
14
3412056
9814044
9724156
2026-06-15T20:16:53Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的阿貝納基語詞條]]至[[Category:引用缺失etymon的阿貝納基語詞條]],不留重定向
9724156
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的阿爾巴尼亞語詞條
14
3412138
9814040
9724240
2026-06-15T20:16:48Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的阿爾巴尼亞語詞條]]至[[Category:引用缺失etymon的阿爾巴尼亞語詞條]],不留重定向
9724240
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的羅馬尼亞語詞條
14
3413094
9814015
9725231
2026-06-15T20:16:06Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的羅馬尼亞語詞條]]至[[Category:引用缺失etymon的羅馬尼亞語詞條]],不留重定向
9725231
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的印度河科希斯坦語詞條
14
3415796
9813932
9732191
2026-06-15T20:11:56Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的印度河科希斯坦語詞條]]至[[Category:引用缺失etymon的印度河科希斯坦語詞條]],不留重定向
9732191
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的西班牙語詞條
14
3419491
9814027
9736884
2026-06-15T20:16:25Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的西班牙語詞條]]至[[Category:引用缺失etymon的西班牙語詞條]],不留重定向
9736884
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的哥特語詞條
14
3419512
9813962
9736911
2026-06-15T20:13:24Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的哥特語詞條]]至[[Category:引用缺失etymon的哥特語詞條]],不留重定向
9736911
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始馬來-波利尼西亞語詞條
14
3419513
9813945
9736912
2026-06-15T20:12:33Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始馬來-波利尼西亞語詞條]]至[[Category:引用缺失etymon的原始馬來-波利尼西亞語詞條]],不留重定向
9736912
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的冰島語詞條
14
3421771
9813926
9739691
2026-06-15T20:11:41Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的冰島語詞條]]至[[Category:引用缺失etymon的冰島語詞條]],不留重定向
9739691
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的加泰羅尼亞語詞條
14
3421772
9813928
9739692
2026-06-15T20:11:45Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的加泰羅尼亞語詞條]]至[[Category:引用缺失etymon的加泰羅尼亞語詞條]],不留重定向
9739692
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的噶瑪蘭語詞條
14
3421773
9813963
9739693
2026-06-15T20:13:26Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的噶瑪蘭語詞條]]至[[Category:引用缺失etymon的噶瑪蘭語詞條]],不留重定向
9739693
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的威爾士語詞條
14
3421774
9813970
9739694
2026-06-15T20:13:43Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的威爾士語詞條]]至[[Category:引用缺失etymon的威爾士語詞條]],不留重定向
9739694
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的帕盧拉語詞條
14
3421775
9813977
9739695
2026-06-15T20:13:57Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的帕盧拉語詞條]]至[[Category:引用缺失etymon的帕盧拉語詞條]],不留重定向
9739695
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的蘇龍語詞條
14
3421776
9814026
9739696
2026-06-15T20:16:23Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的蘇龍語詞條]]至[[Category:引用缺失etymon的蘇龍語詞條]],不留重定向
9739696
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的原始希臘語詞條
14
3422293
9813937
9740280
2026-06-15T20:12:08Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的原始希臘語詞條]]至[[Category:引用缺失etymon的原始希臘語詞條]],不留重定向
9740280
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的中古高地德語詞條
14
3428118
9813920
9747282
2026-06-15T20:11:18Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的中古高地德語詞條]]至[[Category:引用缺失etymon的中古高地德語詞條]],不留重定向
9747282
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的托克皮辛語詞條
14
3439987
9813983
9761380
2026-06-15T20:14:41Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的托克皮辛語詞條]]至[[Category:引用缺失etymon的托克皮辛語詞條]],不留重定向
9761380
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的馬爾他語詞條
14
3439988
9814049
9761381
2026-06-15T20:17:01Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的馬爾他語詞條]]至[[Category:引用缺失etymon的馬爾他語詞條]],不留重定向
9761381
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的諾曼語詞條
14
3445353
9814034
9767825
2026-06-15T20:16:36Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的諾曼語詞條]]至[[Category:引用缺失etymon的諾曼語詞條]],不留重定向
9767825
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的烏克蘭語詞條
14
3458928
9814002
9787406
2026-06-15T20:15:48Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的烏克蘭語詞條]]至[[Category:引用缺失etymon的烏克蘭語詞條]],不留重定向
9787406
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古斯洛伐克語詞條
14
3474922
9813953
9807143
2026-06-15T20:12:52Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古斯洛伐克語詞條]]至[[Category:引用缺失etymon的古斯洛伐克語詞條]],不留重定向
9807143
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的斯洛溫語詞條
14
3474923
9813988
9807144
2026-06-15T20:15:01Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的斯洛溫語詞條]]至[[Category:引用缺失etymon的斯洛溫語詞條]],不留重定向
9807144
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的塞爾維亞-克羅地亞語詞條
14
3477220
9813967
9810083
2026-06-15T20:13:36Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的塞爾維亞-克羅地亞語詞條]]至[[Category:引用缺失etymon的塞爾維亞-克羅地亞語詞條]],不留重定向
9810083
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的斯洛文尼亞語詞條
14
3477223
9813987
9810086
2026-06-15T20:14:59Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的斯洛文尼亞語詞條]]至[[Category:引用缺失etymon的斯洛文尼亞語詞條]],不留重定向
9810086
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的立陶宛語詞條
14
3477224
9814012
9810087
2026-06-15T20:16:02Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的立陶宛語詞條]]至[[Category:引用缺失etymon的立陶宛語詞條]],不留重定向
9810087
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的古捷克語詞條
14
3479579
9813951
9813671
2026-06-15T20:12:47Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的古捷克語詞條]]至[[Category:引用缺失etymon的古捷克語詞條]],不留重定向
9813671
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:引用缺失etymon的斯洛伐克語詞條
14
3479580
9813986
9813672
2026-06-15T20:14:53Z
TongcyBot
83009
TongcyBot移动页面[[Category:引用缺失詞源的斯洛伐克語詞條]]至[[Category:引用缺失etymon的斯洛伐克語詞條]],不留重定向
9813672
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Reconstruction:原始意大利語/-āzios
118
3479605
9814680
9813713
2026-06-16T11:01:16Z
TongcyDai
53191
9814680
wikitext
text/x-wiki
{{reconstructed}}
==原始意大利語==
===詞源===
{{etymon|itc-pro|:der|ine-pro:*-yós<id:後綴>|id=形容詞}}
源自早期的 {{m|itc-pro||*-āzijos}},<ref>{{R:la:OHCGL|page=276|passage=*-āsii̯o-}}</ref><ref>{{R:ine:HCHIEL|843|''*-āsii̯o-''}}</ref>源自 {{m|itc-pro||*-āso-}}(源自{{der|itc-pro|ine-pro||*-eh₂so-}},亦參見赫梯語表示附屬關係的後綴 ''-ašša-''),並由表示關係的原始印歐語形容詞後綴 {{m|ine-pro|*-yós||屬於……的}} 擴展而來。<ref>{{R:la:Miller|pages=140–41|passage=*-ās-(i)yo-}}</ref>
===後綴===
{{head|itc-pro|後綴}}<ref>{{R:itc:Buck|1=186|passage=*-āsi̯o-}}</ref><ref>{{R:xum:Poultney:1959|1=87|text=*-āsyo-}}</ref><ref>{{R:itc-sbl:Wallace:2007|page=34|passage=*-(a)sio-}}</ref><ref>{{R:osc:Nishimura:2017|page=98|passage=''*-as-ii̯o-'' 變成了(可能經過 ''*-asio-'' >)''*-asi̯o-''}}</ref>
# {{n-g|用於從名詞(以及罕見的數詞)構成關係形容詞}}
====變格====
{{itc-decl-adj-o+a|-āzi}}
====派生詞彙====
{{suffixsee|itc-pro}}
====派生語彙====
* {{desc|la|-ārius}} {{see desc}}
* {{desc|osc|-𐌀𐌔𐌉𐌔|pos=nom. sg.|-𐌀𐌔𐌉𐌞𐌔|pos2=nom. pl. m.|-𐌀𐌔𐌉𐌞𐌝|pos3=dat. sg. m.|-𐌀𐌔𐌉𐌀𐌔|pos4=nom. pl. f.|-𐌀𐌔𐌉𐌀𐌝|pos5=loc. sg. f.}}
* {{desc|xum|-𐌀𐌓𐌉𐌖𐌓|pos1=nom. pl. m.|-𐌀𐌓𐌉𐌀𐌚|pos2=acc. pl. f.|q3=帶有明顯未發生 R 音化(rhotacism)的現象?|-𐌀𐌔𐌉𐌀𐌓𐌖|pos3=gen. pl. f.|-𐌀𐌔𐌉𐌄𐌓|pos4=abl. pl.}}
===參考資料===
<references/>
es070blug80jbq0t0lzfcayu5xrvik6
綠衛兵
0
3479610
9813719
2026-06-15T12:02:25Z
~2026-35085-62
133925
[[w:WP:AES|←]]建立內容為「 ==中文=== *[[:w:民主進步黨|民主進步黨]]或[[泛綠]]的激進支持者,部份行為如[[紅衛兵]]。」的新頁面
9813719
wikitext
text/x-wiki
==中文===
*[[:w:民主進步黨|民主進步黨]]或[[泛綠]]的激進支持者,部份行為如[[紅衛兵]]。
a7evpesdiip9n7wx5xkkezqg77sr8sj
9813720
9813719
2026-06-15T12:03:31Z
~2026-35085-62
133925
9813720
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=綠衛兵}}
*[[:w:民主進步黨|民主進步黨]]或[[泛綠]]的激進支持者,部份行為如[[紅衛兵]]。
2lrbzl5o19pkg2kwsth5mfdzdvqa1ch
9813721
9813720
2026-06-15T12:04:50Z
~2026-35085-62
133925
9813721
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=绿卫兵}}
*[[:w:民主進步黨|民主進步黨]]或[[泛綠]]的激進支持者,部份行為如[[紅衛兵]]。
sevpbrlnsf4d95z8hulgddfxh6uqvkq
9813722
9813721
2026-06-15T12:05:15Z
~2026-35085-62
133925
9813722
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=绿卫兵}}
{{zh-pron
|m=lǜwèibīng
|cat=n
}}
*[[:w:民主進步黨|民主進步黨]]或[[泛綠]]的激進支持者,部份行為如[[紅衛兵]]。
mdiqyrg6hn7agz8mz74hb45od4p8lpq
9813723
9813722
2026-06-15T13:01:43Z
Matt Zhuang
40037
9813723
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=绿卫兵}}
{{zh-pron
|m=lǜwèibīng
|cat=n
}}
*{{lb|zh|Taiwan|derogatory|offensive}}[[:w:民主進步黨|民主進步黨]]或[[泛綠]]的激進支持者,部份行為如[[紅衛兵]]。
81sqlscqzhripb04wp2za8wvyiyynio
9813728
9813723
2026-06-15T13:27:36Z
Sayonzei
40728
9813728
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=绿卫兵}}
===詞源===
[[綠色]]是{{w|民主進步黨}}的代表色;“[[衛兵]]”則喻指其行為有如[[紅衛兵]]。
===發音===
{{zh-pron
|m=lǜwèibīng
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|Taiwan|derogatory|offensive}} [[:w:民主進步黨|民主進步黨]]或[[泛綠]]的[[激進]][[支持者]]
4dyqej60zhkeqb7ardli8geccuy0kgs
pajeet
0
3479611
9813724
2026-06-15T13:23:45Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==英語== ===其他形式=== * {{alt|en|Pajeet}} ===詞源=== 生造出来的聽起來像印度人的名字,源自2015年7月 {{w|4chan}} {{w|/int/}} 版的一則嘲諷南亞人的帖子 ''Pajeet, my son'',而這又源自2014年末 /int/ 版上流行的迷因 ''Mehmet, my son''。雖然實際上並不存在這個名字,但也有發音類似的名字,尤其是在印度旁遮普邦。可能派生自{{bor|en|pa|[[ਭਾ]] [[ਜੀ]]}}…」的新頁面
9813724
wikitext
text/x-wiki
==英語==
===其他形式===
* {{alt|en|Pajeet}}
===詞源===
生造出来的聽起來像印度人的名字,源自2015年7月 {{w|4chan}} {{w|/int/}} 版的一則嘲諷南亞人的帖子 ''Pajeet, my son'',而這又源自2014年末 /int/ 版上流行的迷因 ''Mehmet, my son''。雖然實際上並不存在這個名字,但也有發音類似的名字,尤其是在印度旁遮普邦。可能派生自{{bor|en|pa|[[ਭਾ]] [[ਜੀ]]}} / {{m|pa|بھا جی|t=我的大哥|pos=對男子的尊稱}}、{{bor|en|hi|पाजी}},以及其他以{{der|en|hi|जीत|t=勝利}} 結尾的旁遮普男性名字,如 {{m|en|Baljeet}} 和 {{m|en|Sanjeet}}。<ref name="GPAHE2024">{{cite-web|en|title=Online Racism Targeting South Asians Skyrockets|site=Global Project Against Hate and Extremism|archiveurl=https://web.archive.org/web/20240522091028/https://globalextremism.org/post/online-racism-targeting-south-asians-skyrockets/|date=8 May 2024}}</ref><ref>{{cite-web|title=Baltimore bridge collapse: Racist online attacks on Indian crew of MV Dali|url=https://www.newindianexpress.com/nation/2024/Mar/27/baltimore-bridge-collapse-racist-online-attacks-on-indian-crew-of-mv-dali|site=The New Indian Express|date=27 March 2024}}</ref><ref>{{cite-web|en|title=Racial slurs against Hindus have genocidal impact, says report|site=Hindu Times Canada|url=https://hindutimescanada.ca/racial-slurs-against-hindus-have-genocidal-impact-says-report/|date=1 June 2023}}</ref>
===發音===
* {{IPA|en|/ˌpəˈd͡ʒiːt/}}
===名詞===
{{en-noun}}
# {{lb|en|Internet slang|originally|4chan|ethnic slur|貶義|offensive}} [[南亞]]裔人士<ref name="GPAHE2024"/>
#: {{syn|en|poojeet}}
#* {{quote-av|en|author=Luke Smith|title=Leave Amazon? You can't LEAVE Amazon!|url=https://www.youtube.com/watch?v=NK0NTmUR7pI&t=253|time=4:13|date=13 April 2019|passage=You used to be able to e-mail some Amazon representative and get your account deleted maybe; you can't do that anymore, what you have to do nowadays is you either have to live-chat with a '''pajeet''' or you have to manually call them.|t=以前你可以给亚马逊的客服人员发邮件,让他们删除你的账户;现在不行了,你现在要么得跟'''印度佬'''在线聊天,要么得手动打电话。}}
#* {{quote-book|en|author={{w|lang=en|John T. Earnest}}<!--passage quoted with this .edu link in:-->|section=margin number 27|date=2019-04-27|title=An open letter [so-called Earnest Manifesto]|doi=10.1007/978-3-658-34451-1_6|url=https://bcsh.bard.edu/files/2019/06/Earnest-Manifesto-042719.pdf|passage=Apparently, Pewdiepie hates Jews as much as '''Pajeets'''.|t=显然,Pewdiepie 憎恨犹太人,就像他憎恨'''印度佬'''一样。}}
#* {{quote-book|en|author=Patrik Hermansson|author2=David Lawrence|author3=Joe Mulhall|author4=Simon Murdoch|chapter=Myth, Mysticism, India, and the Alt-Right|title=The International Alt-Right: Fascism for the 21st Century?|location=New York, N.Y.|publisher=w:Routledge|date=31 January 2020|page=unnumbered|pageurl=https://books.google.com/books?id=43fNDwAAQBAJ&pg=RA2-PT39|isbn=978-0-429-62709-5|passage=A glance at the comments section of any alt-right website will confront the viewer with crude racism towards people of non-white ethnicities, not least people of Indian origin, who are variously degraded as "'''Pajeets'''," "street-shitters," or stereotyped as sexual harassers. Of course, this is unsurprising for a movement rooted in white supremacy.|t=随便浏览一下任何一个另类右翼网站的评论区,都会看到针对非白人族裔,尤其是印度裔的粗俗种族主义言论。他们被贬称为“'''印度佬'''”、“街头随地大便的人”,或者被刻板地描绘成性骚扰者。当然,对于一个根植于白人至上主义的运动来说,这并不令人意外。|brackets=on}}
#* {{quote-web|en|work={{w|亞洲時報在線|Asia Times}}|date=2024-11-09|title= Ethnic slurs, Bo Yang, The Ugly Chinaman and national character |author=Han Feizi|url=https://asiatimes.com/2024/11/ethnic-slurs-bo-yang-the-ugly-chinaman-and-national-character/|passage=A South Asian ‘'''Pajeet'''’ and a ‘Chinaman’ are pretty much the same creature – a quasi-human living in squalor {{...}} This piece will not focus on Indians and their '''Pajeet''' situation, about which Han Feizi has little expertise. It will be about the “Chinaman” situation, which has dogged the Chinese for 150 years. {{...}} Han Feizi and all Gen-X Chinamen have crowd-shoving, queue-jumping and public quarreling skills that, although they may have atrophied since we were in our prime, would have matched those of the most uncouth '''Pajeet'''.|t=南亚的“'''印度佬'''”和所谓“中国佬”几乎是同一种生物——生活在肮脏环境中的“类人”。{{...}}本文不会着重讨论印度人及其“'''印度佬'''”的处境,因为韩非子对此知之甚少。本文将探讨困扰中国人150年的“中国佬”的处境。{{...}}韩非子和所有X世代的中国人都有推搡、插队和公开争吵的本领,虽然这些本领可能在我们年轻时有所退化,但当年也足以与最粗鲁的“'''印度佬'''”相提并论。}}
# {{lb|en|巴基斯坦|Internet slang|ethnic slur|貶義|offensive}} [[印度人]],尤其是非[[穆斯林]]
====派生詞彙====
{{col|en|jeet|mujeet|pajeetware|poojeet}}
====參見====
{{col|en|curry-muncher|Paki|street shitter}}
===參考資料===
<references/>
{{c|en|人}}
jndhuyx35sdzw1z5tj4qiua6wwiuv2a
pajeets
0
3479612
9813725
2026-06-15T13:23:51Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==英語== ===名詞=== {{head|en|名詞變格形}} # {{plural of|en|pajeet}}」的新頁面
9813725
wikitext
text/x-wiki
==英語==
===名詞===
{{head|en|名詞變格形}}
# {{plural of|en|pajeet}}
ko2q3uqlc0jgek7bz6mn8fldwmbnhci
Pajeet
0
3479613
9813726
2026-06-15T13:24:01Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==英語== ===名詞=== {{en-noun}} # {{alternative case form of|en|pajeet}}。」的新頁面
9813726
wikitext
text/x-wiki
==英語==
===名詞===
{{en-noun}}
# {{alternative case form of|en|pajeet}}。
ohubmvwem16b8gv4p9h6f51cu336xbs
paukščiuose
0
3479614
9813729
2026-06-15T13:30:29Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paũkščiuose}} ===名詞=== {{head|lt|名詞變格形|head=paũkščiuose}} # {{infl of|lt|paũkštis||loc|p}}」的新頁面
9813729
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paũkščiuose}}
===名詞===
{{head|lt|名詞變格形|head=paũkščiuose}}
# {{infl of|lt|paũkštis||loc|p}}
t3en1adc5ny3dsjnfp6xl1t02ppbcdq
paukščio
0
3479615
9813730
2026-06-15T13:30:32Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paũkščio}} ===名詞=== {{head|lt|名詞變格形|head=paũkščio}} # {{infl of|lt|paũkštis||gen|s}}」的新頁面
9813730
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paũkščio}}
===名詞===
{{head|lt|名詞變格形|head=paũkščio}}
# {{infl of|lt|paũkštis||gen|s}}
b1wc7u84hta4ateuvvydsnx2qvn32ua
paukščiui
0
3479616
9813731
2026-06-15T13:30:32Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paũkščiui}} ===名詞=== {{head|lt|名詞變格形|head=paũkščiui}} # {{infl of|lt|paũkštis||dat|s}}」的新頁面
9813731
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paũkščiui}}
===名詞===
{{head|lt|名詞變格形|head=paũkščiui}}
# {{infl of|lt|paũkštis||dat|s}}
ivzyqipsye5c89yj8s3ozthgrln82q3
paukštį
0
3479617
9813732
2026-06-15T13:30:33Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paũkštį}} ===名詞=== {{head|lt|名詞變格形|head=paũkštį}} # {{infl of|lt|paũkštis||acc|s}}」的新頁面
9813732
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paũkštį}}
===名詞===
{{head|lt|名詞變格形|head=paũkštį}}
# {{infl of|lt|paũkštis||acc|s}}
hiruyb48cmduzvfflnim63l43n1nxo7
paukščiu
0
3479618
9813733
2026-06-15T13:30:33Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paukščiù}} ===名詞=== {{head|lt|名詞變格形|head=paukščiù}} # {{infl of|lt|paũkštis||ins|s}}」的新頁面
9813733
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paukščiù}}
===名詞===
{{head|lt|名詞變格形|head=paukščiù}}
# {{infl of|lt|paũkštis||ins|s}}
3zxe4wgxqj6i9qxkpeeg36sruerxuzm
paukštyje
0
3479619
9813734
2026-06-15T13:30:33Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paũkštyje}} ===名詞=== {{head|lt|名詞變格形|head=paũkštyje}} # {{infl of|lt|paũkštis||loc|s}}」的新頁面
9813734
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paũkštyje}}
===名詞===
{{head|lt|名詞變格形|head=paũkštyje}}
# {{infl of|lt|paũkštis||loc|s}}
7ifcwz4okpo6ad7h1vmqjs1axana9wu
paukščiai
0
3479620
9813735
2026-06-15T13:30:34Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paũkščiai}} ===名詞=== {{head|lt|名詞變格形|head=paũkščiai}} # {{infl of|lt|paũkštis||nom//voc|p}}」的新頁面
9813735
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paũkščiai}}
===名詞===
{{head|lt|名詞變格形|head=paũkščiai}}
# {{infl of|lt|paũkštis||nom//voc|p}}
finay4cx6eq18j5h2b7owr28in9ecvu
paukšti
0
3479621
9813736
2026-06-15T13:30:34Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paũkšti}} ===名詞=== {{head|lt|名詞變格形|head=paũkšti}} # {{infl of|lt|paũkštis||voc|s}}」的新頁面
9813736
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paũkšti}}
===名詞===
{{head|lt|名詞變格形|head=paũkšti}}
# {{infl of|lt|paũkštis||voc|s}}
fkjw8vc5ukmcrhyo1igsr3hmxs16wby
paukščių
0
3479622
9813737
2026-06-15T13:30:34Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paũkščių}} ===名詞=== {{head|lt|名詞變格形|head=paũkščių}} # {{infl of|lt|paũkštis||gen|p}}」的新頁面
9813737
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paũkščių}}
===名詞===
{{head|lt|名詞變格形|head=paũkščių}}
# {{infl of|lt|paũkštis||gen|p}}
sk4fhmsyo6kctuwt080gyafogjlgui8
paukščius
0
3479623
9813738
2026-06-15T13:30:36Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paukščiùs}} ===名詞=== {{head|lt|名詞變格形|head=paukščiùs}} # {{infl of|lt|paũkštis||acc|p}}」的新頁面
9813738
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paukščiùs}}
===名詞===
{{head|lt|名詞變格形|head=paukščiùs}}
# {{infl of|lt|paũkštis||acc|p}}
48igg954tena58nafqdwiogkr1wf0k4
paukščiams
0
3479624
9813739
2026-06-15T13:30:36Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paũkščiams}} ===名詞=== {{head|lt|名詞變格形|head=paũkščiams}} # {{infl of|lt|paũkštis||dat|p}}」的新頁面
9813739
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paũkščiams}}
===名詞===
{{head|lt|名詞變格形|head=paũkščiams}}
# {{infl of|lt|paũkštis||dat|p}}
iv7fohlauuzb5d4opseh4531yz2x81w
paukščiais
0
3479625
9813740
2026-06-15T13:30:36Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|paũkščiais}} ===名詞=== {{head|lt|名詞變格形|head=paũkščiais}} # {{infl of|lt|paũkštis||ins|p}}」的新頁面
9813740
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|paũkščiais}}
===名詞===
{{head|lt|名詞變格形|head=paũkščiais}}
# {{infl of|lt|paũkštis||ins|p}}
4zeact5dwz04yr2k46l6zmxwqq5lppo
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲo̟ː
14
3479626
9813741
2026-06-15T13:30:44Z
TongcyBot
83009
養貓
9813741
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
dumbass
0
3479627
9813742
2026-06-15T13:30:55Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|dumb-ass|dumb ass}} ==英語== ===其他形式=== * {{alt|en|dumb-ass|dumb ass}} * {{alt|en|dumbarse||UK|Irish|Commonwealth}} ===詞源=== 源自 {{compound|en|dumb|ass}}。“ass”最初可能來自“驢”的義項(而非“屁股”),不過两种含义都并非完全不可能。不過,如今许多人可能会直接按照后一种方式来理解这个词;與 {{m|en|hard-ass}}、{{m|en|big-ass}} 等詞的類比可能會…」的新頁面
9813742
wikitext
text/x-wiki
{{also|dumb-ass|dumb ass}}
==英語==
===其他形式===
* {{alt|en|dumb-ass|dumb ass}}
* {{alt|en|dumbarse||UK|Irish|Commonwealth}}
===詞源===
源自 {{compound|en|dumb|ass}}。“ass”最初可能來自“驢”的義項(而非“屁股”),不過两种含义都并非完全不可能。不過,如今许多人可能会直接按照后一种方式来理解这个词;與 {{m|en|hard-ass}}、{{m|en|big-ass}} 等詞的類比可能會讓人更支持第二種解釋。类似的情況也体现在 {{m|en|buttload}} 和 {{m|en|assload}} 这两个词的字面意思上,它们最初分别指一车货物和一头驴能拉动的货物,但如今大多数英语使用者可能会认为它们的词源和屁股有关。
===發音===
* {{IPA|en|/ˈdʌm.æs/}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-dumbass.wav|a=Southern England}}
* {{hyph|en|dumb|ass}}
===名詞===
{{en-noun}}
# {{lb|en|US|有時認為|_|粗俗|俚語|mildly|貶義}} [[蠢貨]] {{defdate|1959<ref name="Etymonline">{{R:Etymonline|dumb-ass}}</ref>}}
#: {{ux|en|The '''dumbass''' walked off with my car keys and left me hers.|那个'''蠢货'''拿走了我的车钥匙,却把她的车钥匙留给了我。}}
====近義詞====
* 參見 [[Thesaurus:fool]]
====派生詞彙====
{{col|en|dumbassdom|dumbasshood|dumbassness
|dumbassery|dumbassification|dumbassity}}
===形容詞===
{{en-adj|more,dumberass|sup=most,dumbestass}}
# {{lb|en|US|粗俗|俚語|mildly|貶義}} [[愚蠢]]的
#: {{ux|en|That '''dumbass''' driver ruined my car!|那个'''笨蛋'''司机毁了我的车!}}
#* {{quote-book|en|year=2015|author=Jason Reynolds; Brendan Kiely|title=All American Boys|publisher=Simon and Schuster|isbn=9781481463355
|passage=I zipped my coat up to the neck, worried now that going to the march was more '''dumbass''' than I'd thought. It got closer—the only frigging thing in the road!—and I realized I was shaking. I couldn't move.|t=我把外套拉链拉到领口,现在我担心去参加游行比我想象的还要'''愚蠢'''。游行队伍越来越近——那可是路上唯一的障碍物!——我意识到自己浑身发抖。我动弹不得。}}
====參見====
{{col|en|hard-ass}}
===參考資料===
<references/>
{{cln|en|詈語|形容詞-名詞複合詞}}
2egjsdgjg4jbbnm2qctca7lo9e9ph8f
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲo̟ː/2音節
14
3479628
9813743
2026-06-15T13:30:55Z
TongcyBot
83009
養貓
9813743
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
dumbasses
0
3479629
9813744
2026-06-15T13:31:00Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|dumb-asses|dumb asses}} ==英語== ===發音=== * {{audio|en|LL-Q1860 (eng)-Vealhurl-dumbasses.wav|a=Southern England}} ===名詞=== {{head|en|名詞變格形}} # {{plural of|en|dumbass}}」的新頁面
9813744
wikitext
text/x-wiki
{{also|dumb-asses|dumb asses}}
==英語==
===發音===
* {{audio|en|LL-Q1860 (eng)-Vealhurl-dumbasses.wav|a=Southern England}}
===名詞===
{{head|en|名詞變格形}}
# {{plural of|en|dumbass}}
2xns9ixtxbxogth86g608tad9mctsan
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲʊ̟ɪ
14
3479630
9813745
2026-06-15T13:31:06Z
TongcyBot
83009
養貓
9813745
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲʊ̟ɪ/3音節
14
3479631
9813746
2026-06-15T13:31:16Z
TongcyBot
83009
養貓
9813746
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲtʲiː
14
3479632
9813747
2026-06-15T13:31:26Z
TongcyBot
83009
養貓
9813747
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲtʲiː/2音節
14
3479633
9813748
2026-06-15T13:31:35Z
TongcyBot
83009
養貓
9813748
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲtʲiːjɛ
14
3479634
9813749
2026-06-15T13:31:45Z
TongcyBot
83009
養貓
9813749
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲtʲiːjɛ/3音節
14
3479635
9813750
2026-06-15T13:31:54Z
TongcyBot
83009
養貓
9813750
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲtʲɪ
14
3479636
9813751
2026-06-15T13:32:05Z
TongcyBot
83009
養貓
9813751
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲtʲɪ/2音節
14
3479637
9813752
2026-06-15T13:32:14Z
TongcyBot
83009
養貓
9813752
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
dumb-asses
0
3479638
9813753
2026-06-15T13:32:18Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|dumbasses|dumb asses}} ==英語== ===名詞=== {{head|en|名詞變格形|head=[[dumb]]-[[asses]]}} # {{plural of|en|dumb-ass}}」的新頁面
9813753
wikitext
text/x-wiki
{{also|dumbasses|dumb asses}}
==英語==
===名詞===
{{head|en|名詞變格形|head=[[dumb]]-[[asses]]}}
# {{plural of|en|dumb-ass}}
5fgcgl5ex4347b2utcn5z1yhdvdg1op
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲɛɪ
14
3479639
9813754
2026-06-15T13:32:24Z
TongcyBot
83009
養貓
9813754
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲɛɪ/2音節
14
3479640
9813755
2026-06-15T13:32:34Z
TongcyBot
83009
養貓
9813755
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
dumb ass
0
3479641
9813756
2026-06-15T13:32:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|dumbass|dumb-ass}} ==英語== ===名詞=== {{en-noun}} # {{alt sp|en|dumbass}}。 ===形容詞=== {{en-adj|more}} # {{alt sp|en|dumbass}}。」的新頁面
9813756
wikitext
text/x-wiki
{{also|dumbass|dumb-ass}}
==英語==
===名詞===
{{en-noun}}
# {{alt sp|en|dumbass}}。
===形容詞===
{{en-adj|more}}
# {{alt sp|en|dumbass}}。
njkna4oo4dge1e563b7j4qwtyov31av
dumbarse
0
3479642
9813757
2026-06-15T13:32:42Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==英語== ===詞源=== {{m|en|dumb}} + {{m|en|arse}} ===發音=== * {{audio|en|En-au-dumbarse.ogg|a=AU}} ===名詞=== {{en-noun}} # {{standard form of|en|dumbass|from=UK|from2=Ireland|from3=Commonwealth}} ===異序詞=== * {{anagrams|en|a=abdemrsu|Bermudas}}」的新頁面
9813757
wikitext
text/x-wiki
==英語==
===詞源===
{{m|en|dumb}} + {{m|en|arse}}
===發音===
* {{audio|en|En-au-dumbarse.ogg|a=AU}}
===名詞===
{{en-noun}}
# {{standard form of|en|dumbass|from=UK|from2=Ireland|from3=Commonwealth}}
===異序詞===
* {{anagrams|en|a=abdemrsu|Bermudas}}
j7evyxqhepx0k6g1vkt48nhbjvhlhvd
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲu̟ː
14
3479643
9813758
2026-06-15T13:32:43Z
TongcyBot
83009
養貓
9813758
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
dumb asses
0
3479644
9813759
2026-06-15T13:32:47Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|dumbasses|dumb-asses}} ==英語== ===名詞=== {{head|en|名詞變格形}} # {{plural of|en|dumb ass}}」的新頁面
9813759
wikitext
text/x-wiki
{{also|dumbasses|dumb-asses}}
==英語==
===名詞===
{{head|en|名詞變格形}}
# {{plural of|en|dumb ass}}
qmry7selxonk046k82fo1weyjt6cnpo
dumbarses
0
3479645
9813760
2026-06-15T13:32:52Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==英語== ===名詞=== {{head|en|名詞變格形}} # {{plural of|en|dumbarse}} ===異序詞=== * {{anagrams|en|a=abdemrssu|dumberass}}」的新頁面
9813760
wikitext
text/x-wiki
==英語==
===名詞===
{{head|en|名詞變格形}}
# {{plural of|en|dumbarse}}
===異序詞===
* {{anagrams|en|a=abdemrssu|dumberass}}
kp484kgilfvb73ybkyda3mk969u7saf
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲu̟ː/2音節
14
3479646
9813761
2026-06-15T13:32:53Z
TongcyBot
83009
養貓
9813761
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲɛms
14
3479647
9813762
2026-06-15T13:33:03Z
TongcyBot
83009
養貓
9813762
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲɛms/2音節
14
3479648
9813763
2026-06-15T13:33:12Z
TongcyBot
83009
養貓
9813763
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲɛɪs
14
3479649
9813765
2026-06-15T13:33:23Z
TongcyBot
83009
養貓
9813765
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲɛɪs/2音節
14
3479650
9813766
2026-06-15T13:33:33Z
TongcyBot
83009
養貓
9813766
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲu̟ɔsʲɛ
14
3479651
9813768
2026-06-15T13:33:43Z
TongcyBot
83009
養貓
9813768
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɒʊˑkʃʲt͡ʃʲu̟ɔsʲɛ/3音節
14
3479652
9813769
2026-06-15T13:33:53Z
TongcyBot
83009
養貓
9813769
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/æˑnʲtʲɪ
14
3479653
9813770
2026-06-15T13:34:04Z
TongcyBot
83009
養貓
9813770
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/æˑnʲtʲɪ/3音節
14
3479654
9813771
2026-06-15T13:34:14Z
TongcyBot
83009
養貓
9813771
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
gyvatės
0
3479655
9813773
2026-06-15T13:54:12Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|gyvates}} ==立陶宛語== ===發音=== {{lt-pr|gyvãtės}} ===名詞=== {{head|lt|名詞變格形|g=f}} # {{infl of|lt|gyvatė||gen|s|;|nom//voc|p}}」的新頁面
9813773
wikitext
text/x-wiki
{{also|gyvates}}
==立陶宛語==
===發音===
{{lt-pr|gyvãtės}}
===名詞===
{{head|lt|名詞變格形|g=f}}
# {{infl of|lt|gyvatė||gen|s|;|nom//voc|p}}
q7amcg58xz61rw05ka6viop9bki2674
gyvatei
0
3479656
9813774
2026-06-15T13:54:24Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|gyvãtei}} ===名詞=== {{head|lt|名詞變格形|g=f}} # {{noun form of|lt|gyvatė||dat|s}}」的新頁面
9813774
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|gyvãtei}}
===名詞===
{{head|lt|名詞變格形|g=f}}
# {{noun form of|lt|gyvatė||dat|s}}
o9yvlytux23owczv9uzl7d4289xtr8p
gyvatę
0
3479657
9813775
2026-06-15T13:54:24Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|gyvate|gyvatė}} ==立陶宛語== ===發音=== {{lt-pr|gyvãtę}} ===名詞=== {{head|lt|名詞變格形|g=f}} # {{noun form of|lt|gyvatė||acc|s}}」的新頁面
9813775
wikitext
text/x-wiki
{{also|gyvate|gyvatė}}
==立陶宛語==
===發音===
{{lt-pr|gyvãtę}}
===名詞===
{{head|lt|名詞變格形|g=f}}
# {{noun form of|lt|gyvatė||acc|s}}
4cayxmlyi1auh7hqjzs1i65y2xu071o
gyvate
0
3479658
9813776
2026-06-15T13:56:21Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|gyvatę|gyvatė}} ==立陶宛語== ===發音1=== {{lt-pr|gyvatè}} ====名詞==== {{head|lt|名詞變格形|g=f|head=gyvatè}} # {{noun form of|lt|gyvãtė||ins|s}} ===發音2=== {{lt-pr|gyvãte}} ====名詞==== {{head|lt|名詞變格形|g=f|head=gyvãte}} # {{noun form of|lt|gyvãtė||voc|s}}」的新頁面
9813776
wikitext
text/x-wiki
{{also|gyvatę|gyvatė}}
==立陶宛語==
===發音1===
{{lt-pr|gyvatè}}
====名詞====
{{head|lt|名詞變格形|g=f|head=gyvatè}}
# {{noun form of|lt|gyvãtė||ins|s}}
===發音2===
{{lt-pr|gyvãte}}
====名詞====
{{head|lt|名詞變格形|g=f|head=gyvãte}}
# {{noun form of|lt|gyvãtė||voc|s}}
o5dkuxgmplegymznft69pj7nq8te2wr
Category:Rhymes:立陶宛語/ɑːtʲɛ
14
3479659
9813777
2026-06-15T13:56:28Z
TongcyBot
83009
養貓
9813777
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
gyvatėje
0
3479660
9813778
2026-06-15T13:56:30Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|gyvãtėje}} ===名詞=== {{head|lt|名詞變格形|g=f}} # {{noun form of|lt|gyvatė||loc|s}}」的新頁面
9813778
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|gyvãtėje}}
===名詞===
{{head|lt|名詞變格形|g=f}}
# {{noun form of|lt|gyvatė||loc|s}}
95pu04n3b2i1wnubg54hc8kr6mg7kub
gyvatėse
0
3479661
9813779
2026-06-15T13:56:30Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|gyvãtėse}} ===名詞=== {{head|lt|名詞變格形|g=f-p}} # {{noun form of|lt|gyvatė||loc|p}}」的新頁面
9813779
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|gyvãtėse}}
===名詞===
{{head|lt|名詞變格形|g=f-p}}
# {{noun form of|lt|gyvatė||loc|p}}
4digybcok6o9qymqpa3riueu3uf9neh
gyvatėmis
0
3479662
9813780
2026-06-15T13:56:31Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|gyvãtėmis}} ===名詞=== {{head|lt|名詞變格形|g=f-p}} # {{noun form of|lt|gyvatė||ins|p}}」的新頁面
9813780
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|gyvãtėmis}}
===名詞===
{{head|lt|名詞變格形|g=f-p}}
# {{noun form of|lt|gyvatė||ins|p}}
dj0bf1js8dwxfy6qgd2zvlypsa5hok1
gyvates
0
3479663
9813781
2026-06-15T13:56:31Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|gyvatės}} ==立陶宛語== ===發音=== {{lt-pr|gyvatès}} ===名詞=== {{head|lt|名詞變格形|g=f-p}} # {{noun form of|lt|gyvatė||acc|p}}」的新頁面
9813781
wikitext
text/x-wiki
{{also|gyvatės}}
==立陶宛語==
===發音===
{{lt-pr|gyvatès}}
===名詞===
{{head|lt|名詞變格形|g=f-p}}
# {{noun form of|lt|gyvatė||acc|p}}
l5231tj8amiq2nlxw3zzrbb0b14w436
gyvatėms
0
3479664
9813782
2026-06-15T13:56:32Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|gyvãtėms}} ===名詞=== {{head|lt|名詞變格形|g=f-p}} # {{noun form of|lt|gyvatė||dat|p}}」的新頁面
9813782
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|gyvãtėms}}
===名詞===
{{head|lt|名詞變格形|g=f-p}}
# {{noun form of|lt|gyvatė||dat|p}}
gtx23hiy57ky25wi499b1razner8ona
gyvačių
0
3479665
9813783
2026-06-15T13:56:33Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===發音=== {{lt-pr|gyvãčių}} ===名詞=== {{head|lt|名詞變格形|g=f-p}} # {{noun form of|lt|gyvatė||gen|p}}」的新頁面
9813783
wikitext
text/x-wiki
==立陶宛語==
===發音===
{{lt-pr|gyvãčių}}
===名詞===
{{head|lt|名詞變格形|g=f-p}}
# {{noun form of|lt|gyvatė||gen|p}}
odv1b0pzbp391rknarlyjd3zzy5wuhi
Category:Rhymes:立陶宛語/ɑːtʲɛ/3音節
14
3479666
9813784
2026-06-15T13:56:38Z
TongcyBot
83009
養貓
9813784
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
cvårnaru
0
3479667
9813792
2026-06-15T17:07:11Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==伊斯特羅-羅馬尼亞語== ===詞源=== {{rfe|ruo}} ===數詞=== {{head|ruo|數詞}} # [[四十]]」的新頁面
9813792
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===詞源===
{{rfe|ruo}}
===數詞===
{{head|ruo|數詞}}
# [[四十]]
253pybp014ye8pog45aub9f8cla5oiq
câre
0
3479668
9813793
2026-06-15T17:07:39Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==伊斯特羅-羅馬尼亞語== ===詞源=== {{inh+|ruo|la|canis|canis, canem}}。對照{{cog|ro|câine}}、{{cog|rup|cãni}}。 ===發音=== * {{IPA|ruo|/kəre/}} ===名詞=== {{head|ruo|名詞|g=m|複數|câr}} # [[狗]] {{C|ruo|犬科動物}}」的新頁面
9813793
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===詞源===
{{inh+|ruo|la|canis|canis, canem}}。對照{{cog|ro|câine}}、{{cog|rup|cãni}}。
===發音===
* {{IPA|ruo|/kəre/}}
===名詞===
{{head|ruo|名詞|g=m|複數|câr}}
# [[狗]]
{{C|ruo|犬科動物}}
du51cojhtorkctwggeqp8y03fkdwjth
9813814
9813793
2026-06-15T17:10:28Z
TongcyDai
53191
9813814
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===詞源===
{{inh+|ruo|la|canis|canis, canem}}。對照{{cog|ro|câine}}、{{cog|rup|cãni}}。
===發音===
* {{IPA|ruo|/kəre/}}
===名詞===
{{head|ruo|名詞|g=m|複數|câr}}
# [[狗]]
{{C|ruo|狗}}
or1rxytuh9dam9up3hqbfcjauimj9xf
Category:伊斯特羅-羅馬尼亞語詞條詞源請求
14
3479669
9813794
2026-06-15T17:08:04Z
TongcyBot
83009
養貓
9813794
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語相關請求
14
3479670
9813795
2026-06-15T17:08:11Z
TongcyBot
83009
養貓
9813795
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 犬科動物
14
3479671
9813796
2026-06-15T17:08:19Z
TongcyBot
83009
養貓
9813796
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
cåibĕ
0
3479672
9813797
2026-06-15T17:08:24Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==伊斯特羅-羅馬尼亞語== ===詞源=== {{inh+|ruo|la|cavea}}。 ===名詞=== {{head|ruo|名詞|g=f}} # [[籠]]」的新頁面
9813797
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===詞源===
{{inh+|ruo|la|cavea}}。
===名詞===
{{head|ruo|名詞|g=f}}
# [[籠]]
p8xo2dei91y8k1axd3r1n3zyhej6iwg
Category:伊斯特羅-羅馬尼亞語 肉食性動物
14
3479673
9813798
2026-06-15T17:08:25Z
TongcyBot
83009
養貓
9813798
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 哺乳動物
14
3479674
9813799
2026-06-15T17:08:31Z
TongcyBot
83009
養貓
9813799
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 脊椎動物
14
3479675
9813800
2026-06-15T17:08:38Z
TongcyBot
83009
養貓
9813800
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 脊索動物
14
3479676
9813801
2026-06-15T17:08:44Z
TongcyBot
83009
養貓
9813801
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 動物
14
3479677
9813802
2026-06-15T17:08:51Z
TongcyBot
83009
養貓
9813802
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 生命形式
14
3479678
9813803
2026-06-15T17:08:57Z
TongcyBot
83009
養貓
9813803
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 生命
14
3479679
9813804
2026-06-15T17:09:03Z
TongcyBot
83009
養貓
9813804
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 自然
14
3479680
9813805
2026-06-15T17:09:10Z
TongcyBot
83009
養貓
9813805
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 集合分類列表
14
3479681
9813806
2026-06-15T17:09:17Z
TongcyBot
83009
養貓
9813806
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
cåsĕ
0
3479682
9813807
2026-06-15T17:09:32Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|Appendix:"case"的變體}} ==伊斯特羅-羅馬尼亞語== ===詞源=== {{inh+|ruo|la|casa}}。 ===發音=== * {{IPA|ruo|[ˈkɔ.sə]}} ===名詞=== {{head|ruo|名詞|g=f|複數|cåse|定指單數|cåsa|定指複數|cåsele}} # [[房子]] {{C|ruo|建築|住宅}}」的新頁面
9813807
wikitext
text/x-wiki
{{also|Appendix:"case"的變體}}
==伊斯特羅-羅馬尼亞語==
===詞源===
{{inh+|ruo|la|casa}}。
===發音===
* {{IPA|ruo|[ˈkɔ.sə]}}
===名詞===
{{head|ruo|名詞|g=f|複數|cåse|定指單數|cåsa|定指複數|cåsele}}
# [[房子]]
{{C|ruo|建築|住宅}}
s6v8h22kild4wd9a245z2zi8qckggoc
Category:伊斯特羅-羅馬尼亞語 住宅
14
3479683
9813808
2026-06-15T17:09:51Z
TongcyBot
83009
養貓
9813808
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 家
14
3479684
9813809
2026-06-15T17:09:57Z
TongcyBot
83009
養貓
9813809
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 社會
14
3479685
9813810
2026-06-15T17:10:03Z
TongcyBot
83009
養貓
9813810
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 建築
14
3479686
9813811
2026-06-15T17:10:11Z
TongcyBot
83009
養貓
9813811
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 建築物和構築物
14
3479687
9813812
2026-06-15T17:10:18Z
TongcyBot
83009
養貓
9813812
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 建築學
14
3479688
9813813
2026-06-15T17:10:25Z
TongcyBot
83009
養貓
9813813
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 應用科學
14
3479689
9813815
2026-06-15T17:10:32Z
TongcyBot
83009
養貓
9813815
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 藝術
14
3479690
9813816
2026-06-15T17:10:38Z
TongcyBot
83009
養貓
9813816
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
căre
0
3479691
9813817
2026-06-15T17:10:41Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|care|caré|çare|çarë|-care}} ==伊斯特羅-羅馬尼亞語== [[File:Hybrid vigour.jpg|thumb|Căre]] ===詞源=== {{inh+|ruo|la|canis}}、{{m|la|canem}},{{inh+|ruo|ine-pro|*ḱwṓ}}。對照{{cog|ro|câine}}、{{cog|rup|cãni}}。 ===名詞=== {{head|ruo|名詞|g=m}} # [[狗]] {{C|ruo|狗|哺乳動物}}」的新頁面
9813817
wikitext
text/x-wiki
{{also|care|caré|çare|çarë|-care}}
==伊斯特羅-羅馬尼亞語==
[[File:Hybrid vigour.jpg|thumb|Căre]]
===詞源===
{{inh+|ruo|la|canis}}、{{m|la|canem}},{{inh+|ruo|ine-pro|*ḱwṓ}}。對照{{cog|ro|câine}}、{{cog|rup|cãni}}。
===名詞===
{{head|ruo|名詞|g=m}}
# [[狗]]
{{C|ruo|狗|哺乳動物}}
qvkf8e3a24wki011bio6xxhsjqkx8nx
Category:伊斯特羅-羅馬尼亞語 文化
14
3479692
9813818
2026-06-15T17:10:46Z
TongcyBot
83009
養貓
9813818
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 類型分類列表
14
3479693
9813819
2026-06-15T17:10:55Z
TongcyBot
83009
養貓
9813819
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 狗
14
3479694
9813820
2026-06-15T17:11:05Z
TongcyBot
83009
養貓
9813820
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
cľår
0
3479695
9813821
2026-06-15T17:11:19Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==伊斯特羅-羅馬尼亞語== ===詞源=== {{inh+|ruo|la|clārus}}。對照{{cog|ro|chiar}}。 ===形容詞=== {{head|ruo|形容詞}} # [[清晰]]的,[[明確]]的」的新頁面
9813821
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===詞源===
{{inh+|ruo|la|clārus}}。對照{{cog|ro|chiar}}。
===形容詞===
{{head|ruo|形容詞}}
# [[清晰]]的,[[明確]]的
baxj0btxpm97zjhlplqmuj4b27ow8z1
deseta
0
3479696
9813822
2026-06-15T17:11:34Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==伊斯特羅-羅馬尼亞語== ===形容詞=== {{head|ruo|形容詞|g=f|陽性|desetile}} # {{cln|ruo|序數詞}} [[第十]]」的新頁面
9813822
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===形容詞===
{{head|ruo|形容詞|g=f|陽性|desetile}}
# {{cln|ruo|序數詞}} [[第十]]
9y5g2pw67bvcnkkhb6tbgset1w0l089
desetile
0
3479697
9813823
2026-06-15T17:11:43Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==伊斯特羅-羅馬尼亞語== ===形容詞=== {{head|ruo|形容詞|g=m|陰性|deseta}} # {{cln|ruo|序數詞}} [[第十]]」的新頁面
9813823
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===形容詞===
{{head|ruo|形容詞|g=m|陰性|deseta}}
# {{cln|ruo|序數詞}} [[第十]]
93mx8ccuampl8zpzs3xxunnlkgvp8c6
deveta
0
3479698
9813824
2026-06-15T17:11:58Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==伊斯特羅-羅馬尼亞語== ===形容詞=== {{head|ruo|形容詞|g=f|陽性|devetile}} # {{cln|ruo|序數詞}} [[第九]]」的新頁面
9813824
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===形容詞===
{{head|ruo|形容詞|g=f|陽性|devetile}}
# {{cln|ruo|序數詞}} [[第九]]
p32n3nyxe5ubbdk3boux9823kmelt48
devetile
0
3479699
9813825
2026-06-15T17:12:01Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==伊斯特羅-羅馬尼亞語== ===形容詞=== {{head|ruo|形容詞|g=m|陰性|deveta}} # {{cln|ruo|序數詞}} [[第九]]」的新頁面
9813825
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===形容詞===
{{head|ruo|形容詞|g=m|陰性|deveta}}
# {{cln|ruo|序數詞}} [[第九]]
n5gf0liegwbigf9rrju7rtob6m9fcy9
bărbåt
0
3479700
9813826
2026-06-15T17:15:11Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|barbat|barbât|bãrbat|bărbat|bărbåț}} ==伊斯特羅-羅馬尼亞語== ===詞源=== {{inh+|ruo|la|barbātus}}。對照[[達科-羅馬尼亞語]]、{{cog|ruq|bărbat}},以及{{cog|rup|bãrbat}}。 ===發音=== * {{IPA|ruo|[bərˈbwɔt]}} ===名詞=== {{head|ruo|名詞|g=m|複數|bărbåț|定指單數|bărbåtu}} # [[男人]] ====相關詞彙==== * {{l|ruo|borbĕ}} {{C|ruo|男性|人}}」的新頁面
9813826
wikitext
text/x-wiki
{{also|barbat|barbât|bãrbat|bărbat|bărbåț}}
==伊斯特羅-羅馬尼亞語==
===詞源===
{{inh+|ruo|la|barbātus}}。對照[[達科-羅馬尼亞語]]、{{cog|ruq|bărbat}},以及{{cog|rup|bãrbat}}。
===發音===
* {{IPA|ruo|[bərˈbwɔt]}}
===名詞===
{{head|ruo|名詞|g=m|複數|bărbåț|定指單數|bărbåtu}}
# [[男人]]
====相關詞彙====
* {{l|ruo|borbĕ}}
{{C|ruo|男性|人}}
b1lrfkgpx4bzynsq3hs4hwjbkbj2h8v
Category:伊斯特羅-羅馬尼亞語 人
14
3479701
9813827
2026-06-15T17:15:20Z
TongcyBot
83009
養貓
9813827
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 人類
14
3479702
9813828
2026-06-15T17:15:26Z
TongcyBot
83009
養貓
9813828
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 男性
14
3479703
9813829
2026-06-15T17:15:33Z
TongcyBot
83009
養貓
9813829
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 性別
14
3479704
9813830
2026-06-15T17:15:39Z
TongcyBot
83009
養貓
9813830
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 心理學
14
3479705
9813831
2026-06-15T17:15:45Z
TongcyBot
83009
養貓
9813831
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 社會科學
14
3479706
9813832
2026-06-15T17:15:51Z
TongcyBot
83009
養貓
9813832
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 社會學
14
3479707
9813834
2026-06-15T17:15:59Z
TongcyBot
83009
養貓
9813834
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
bire
0
3479708
9813835
2026-06-15T17:17:20Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|Appendix:"bire"的變體}} ==阿爾巴尼亞語== ===名詞=== {{head|sq|名詞變格形}} # {{infl of|sq|birë||indef|dat//abl|s}} ==伊斯特羅-羅馬尼亞語== ===詞源=== {{inh+|ruo|la|bene}}。對照{{cog|ro|bine}}。 ===發音=== * {{IPA|ruo|/bire/}} ===副詞=== {{head|ruo|副詞}} # [[好]]地 ==魯凱語== ===詞源=== {{bor+|dru|ja|ビール|tr=bīru}}。 ===名詞=== {{head|dru|名詞}} # [[啤酒]] {{C|dru|…」的新頁面
9813835
wikitext
text/x-wiki
{{also|Appendix:"bire"的變體}}
==阿爾巴尼亞語==
===名詞===
{{head|sq|名詞變格形}}
# {{infl of|sq|birë||indef|dat//abl|s}}
==伊斯特羅-羅馬尼亞語==
===詞源===
{{inh+|ruo|la|bene}}。對照{{cog|ro|bine}}。
===發音===
* {{IPA|ruo|/bire/}}
===副詞===
{{head|ruo|副詞}}
# [[好]]地
==魯凱語==
===詞源===
{{bor+|dru|ja|ビール|tr=bīru}}。
===名詞===
{{head|dru|名詞}}
# [[啤酒]]
{{C|dru|啤酒|釀造學}}
==土耳其語==
===名詞===
{{head|tr|名詞變格形}}
# {{inflection of|tr|bir||dat|s}}
==威尼斯語==
===名詞===
{{head|vec|名詞變格形}}
# {{plural of|vec|bira}}
==瓦隆語==
===詞源===
{{bor+|wa|nl|bier}}。
===發音===
* {{IPA|wa|/biːʀ/}}
* {{audio|wa|Wa bire.oga}}
===名詞===
{{wa-noun|f}}
# [[啤酒]]
{{C|wa|啤酒|釀造學}}
d9b8y7yssp52vdzblok8p1z1ypr55iv
Category:伊斯特羅-羅馬尼亞語副詞
14
3479709
9813836
2026-06-15T17:17:35Z
TongcyBot
83009
養貓
9813836
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自荷蘭語的瓦隆語詞
14
3479710
9813837
2026-06-15T17:17:43Z
TongcyBot
83009
養貓
9813837
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自低法蘭克尼亞語支的瓦隆語詞
14
3479711
9813838
2026-06-15T17:17:50Z
TongcyBot
83009
養貓
9813838
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:源自荷蘭語的瓦隆語借詞
14
3479712
9813839
2026-06-15T17:17:57Z
TongcyBot
83009
養貓
9813839
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 啤酒
14
3479713
9813840
2026-06-15T17:18:03Z
TongcyBot
83009
養貓
9813840
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 酒
14
3479714
9813841
2026-06-15T17:18:10Z
TongcyBot
83009
養貓
9813841
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 娛樂性藥物
14
3479715
9813842
2026-06-15T17:18:16Z
TongcyBot
83009
養貓
9813842
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 藥
14
3479716
9813843
2026-06-15T17:18:23Z
TongcyBot
83009
養貓
9813843
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 藥理學
14
3479717
9813845
2026-06-15T17:18:30Z
TongcyBot
83009
養貓
9813845
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 生物化學
14
3479718
9813846
2026-06-15T17:18:36Z
TongcyBot
83009
養貓
9813846
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 飲料
14
3479719
9813847
2026-06-15T17:18:45Z
TongcyBot
83009
養貓
9813847
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 飲酒
14
3479720
9813848
2026-06-15T17:18:51Z
TongcyBot
83009
養貓
9813848
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 釀造學
14
3479721
9813849
2026-06-15T17:19:02Z
TongcyBot
83009
養貓
9813849
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 釀造
14
3479722
9813850
2026-06-15T17:19:08Z
TongcyBot
83009
養貓
9813850
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瓦隆語 製酒
14
3479723
9813851
2026-06-15T17:19:15Z
TongcyBot
83009
養貓
9813851
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 啤酒
14
3479724
9813852
2026-06-15T17:19:23Z
TongcyBot
83009
養貓
9813852
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 酒
14
3479725
9813853
2026-06-15T17:19:30Z
TongcyBot
83009
養貓
9813853
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 娛樂性藥物
14
3479726
9813854
2026-06-15T17:19:36Z
TongcyBot
83009
養貓
9813854
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 藥
14
3479727
9813855
2026-06-15T17:19:42Z
TongcyBot
83009
養貓
9813855
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 物質
14
3479728
9813856
2026-06-15T17:19:48Z
TongcyBot
83009
養貓
9813856
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 化學
14
3479729
9813857
2026-06-15T17:19:56Z
TongcyBot
83009
養貓
9813857
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 藥理學
14
3479730
9813858
2026-06-15T17:20:04Z
TongcyBot
83009
養貓
9813858
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 生物化學
14
3479731
9813860
2026-06-15T17:20:10Z
TongcyBot
83009
養貓
9813860
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 生物學
14
3479732
9813861
2026-06-15T17:20:16Z
TongcyBot
83009
養貓
9813861
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 醫學
14
3479733
9813862
2026-06-15T17:20:24Z
TongcyBot
83009
養貓
9813862
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 健康照護
14
3479734
9813863
2026-06-15T17:20:31Z
TongcyBot
83009
養貓
9813863
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 飲料
14
3479735
9813864
2026-06-15T17:20:41Z
TongcyBot
83009
養貓
9813864
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 液體
14
3479736
9813865
2026-06-15T17:20:47Z
TongcyBot
83009
養貓
9813865
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 飲酒
14
3479737
9813866
2026-06-15T17:20:55Z
TongcyBot
83009
養貓
9813866
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 釀造學
14
3479738
9813867
2026-06-15T17:21:06Z
TongcyBot
83009
養貓
9813867
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 釀造
14
3479739
9813868
2026-06-15T17:21:13Z
TongcyBot
83009
養貓
9813868
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:魯凱語 製酒
14
3479740
9813869
2026-06-15T17:21:19Z
TongcyBot
83009
養貓
9813869
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 鬍鬚
14
3479741
9813870
2026-06-15T17:21:30Z
TongcyBot
83009
養貓
9813870
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 時尚
14
3479742
9813871
2026-06-15T17:21:36Z
TongcyBot
83009
養貓
9813871
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 服裝
14
3479743
9813873
2026-06-15T17:21:43Z
TongcyBot
83009
養貓
9813873
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 毛髮
14
3479744
9813874
2026-06-15T17:21:51Z
TongcyBot
83009
養貓
9813874
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 身體部位
14
3479745
9813875
2026-06-15T17:21:58Z
TongcyBot
83009
養貓
9813875
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
doile
0
3479746
9813876
2026-06-15T17:22:00Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==伊斯特羅-羅馬尼亞語== ===形容詞=== {{head|ruo|形容詞|g=m|陰性|dova}} # {{cln|ruo|序數詞}} [[第二]]」的新頁面
9813876
wikitext
text/x-wiki
==伊斯特羅-羅馬尼亞語==
===形容詞===
{{head|ruo|形容詞|g=m|陰性|dova}}
# {{cln|ruo|序數詞}} [[第二]]
goi6ydjbvcx2kkwdcsg3q8ybl0mlgj8
Category:伊斯特羅-羅馬尼亞語 混合分類列表
14
3479747
9813877
2026-06-15T17:22:06Z
TongcyBot
83009
養貓
9813877
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 臉
14
3479748
9813878
2026-06-15T17:22:13Z
TongcyBot
83009
養貓
9813878
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 頭頸部
14
3479749
9813879
2026-06-15T17:22:20Z
TongcyBot
83009
養貓
9813879
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:鬍鬚
14
3479750
9813880
2026-06-15T17:22:27Z
TongcyBot
83009
養貓
9813880
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 四肢
14
3479751
9813881
2026-06-15T17:22:36Z
TongcyBot
83009
養貓
9813881
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 牙齒
14
3479752
9813882
2026-06-15T17:22:44Z
TongcyBot
83009
養貓
9813882
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊斯特羅-羅馬尼亞語 嘴
14
3479753
9813883
2026-06-15T17:22:51Z
TongcyBot
83009
養貓
9813883
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Reconstruction:原始意大利語/dormiō
118
3479754
9813884
2026-06-15T17:24:14Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{reconstructed}} ==原始意大利語== ===詞源=== {{etymon|itc-pro|id=睡|:inh|ine-pro:+<alt:*dr̥m-yé-ti><id:yé-現在時><ety:af<ine-pro:*drem-<id:睡><t:睡>><*-yéti>>|tree=1}} {{inh+|itc-pro|ine-pro||*dr̥m-yé-ti}},源自 {{m|ine-pro|*drem-|t=睡|id=睡}}。 ===動詞=== {{itc-verb}}<ref>{{R:itc:EDL|pages=179-80}}</ref> # [[睡]] ====屈折==== {{itc-conj-4th|type=nopass|dorm}} ====派生語彙==== * {{desc|la|dormiō}} {{s…」的新頁面
9813884
wikitext
text/x-wiki
{{reconstructed}}
==原始意大利語==
===詞源===
{{etymon|itc-pro|id=睡|:inh|ine-pro:+<alt:*dr̥m-yé-ti><id:yé-現在時><ety:af<ine-pro:*drem-<id:睡><t:睡>><*-yéti>>|tree=1}}
{{inh+|itc-pro|ine-pro||*dr̥m-yé-ti}},源自 {{m|ine-pro|*drem-|t=睡|id=睡}}。
===動詞===
{{itc-verb}}<ref>{{R:itc:EDL|pages=179-80}}</ref>
# [[睡]]
====屈折====
{{itc-conj-4th|type=nopass|dorm}}
====派生語彙====
* {{desc|la|dormiō}} {{see desc}}
===參考資料===
<references/>
c1ed99vjy6kwgho9ji62qwfch7dx9uf
Module:Etymon/tracking
828
3479755
9813886
2026-06-15T18:05:42Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「--[=[ 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…」的新頁面
9813886
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
9813972
9813886
2026-06-15T20:13:50Z
Xiplus
25402
已保护“[[Module:Etymon/tracking]]”:高風險模板:1117引用([编辑权限=仅允许自动确认用户](无限期)[移动权限=仅允许自动确认用户](无限期))
9813886
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
Module:Etymon/descendants
828
3479756
9813890
2026-06-15T18:17:03Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「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, }…」的新頁面
9813890
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
9813978
9813890
2026-06-15T20:14:00Z
Xiplus
25402
已保护“[[Module:Etymon/descendants]]”:高風險模板:1040引用([编辑权限=仅允许自动确认用户](无限期)[移动权限=仅允许自动确认用户](无限期))
9813890
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
Template:R:ine:Byrd:2015
10
3479757
9813901
2026-06-15T19:31:04Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=cite-book |last=Byrd |first=Andrew Miles |title=The Indo-European Syllable |series=Brill's Studies in Indo-European Languages & Linguistics |seriesvolume=15 |location=Leiden |publisher=Brill |year=2015 |pageparam=1 |textparam=2 }}<noinclude>{{documentation}}{{refcat}}</noinclude>」的新頁面
9813901
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Byrd
|first=Andrew Miles
|title=The Indo-European Syllable
|series=Brill's Studies in Indo-European Languages & Linguistics
|seriesvolume=15
|location=Leiden
|publisher=Brill
|year=2015
|pageparam=1
|textparam=2
}}<noinclude>{{documentation}}{{refcat}}</noinclude>
avbwc3ib7ovgwxqw03sf02674qipuaw
Category:來自原始印歐語詞根*bʰerH- (刺)的捷克語詞
14
3479758
9813902
2026-06-15T19:32:20Z
TongcyBot
83009
養貓
9813902
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自原始印歐語詞根*bʰerH-的捷克語詞
14
3479759
9813903
2026-06-15T19:32:26Z
TongcyBot
83009
養貓
9813903
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的頁面
14
3479760
9813906
2026-06-15T19:43:21Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{auto cat}}」的新頁面
9813906
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Reconstruction:原始意大利語/fworā
118
3479761
9813911
2026-06-15T20:06:49Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{reconstructed}} ==原始意大利語== ===詞源=== {{etymon|itc-pro|<alt:*þworā><ety:inh<ine-pro:<alt:*dʰworéh₂><ety:af<*dʰwer-><*-éh₂<id:o-級>>>>>}} 可能源自較早的 {{m|itc-pro||*þworā}},{{inh+|itc-pro|ine-pro||*dʰwor-éh₂}},源自詞根 {{m|ine-pro|*dʰwer-||們}}。 ===名詞=== {{head|itc-pro|名詞|g=f}}<ref>{{R:itc:EDL|head=foris|page=233}}</ref> # [[們]] #: {{syn|itc-pro|*fworis}} ====變格==== {{itc-…」的新頁面
9813911
wikitext
text/x-wiki
{{reconstructed}}
==原始意大利語==
===詞源===
{{etymon|itc-pro|<alt:*þworā><ety:inh<ine-pro:<alt:*dʰworéh₂><ety:af<*dʰwer-><*-éh₂<id:o-級>>>>>}}
可能源自較早的 {{m|itc-pro||*þworā}},{{inh+|itc-pro|ine-pro||*dʰwor-éh₂}},源自詞根 {{m|ine-pro|*dʰwer-||們}}。
===名詞===
{{head|itc-pro|名詞|g=f}}<ref>{{R:itc:EDL|head=foris|page=233}}</ref>
# [[們]]
#: {{syn|itc-pro|*fworis}}
====變格====
{{itc-decl-noun-a|fwor}}
====派生語彙====
* {{desc|la|<alt:*fora>|forās<der>|forīs}}
===參考資料===
<references/>
al83flmrcgzl1gsxiwmnpcyee7cqfqa
Category:原始意大利語陰性名詞
14
3479762
9813912
2026-06-15T20:07:22Z
TongcyBot
83009
養貓
9813912
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的詞條
14
3479763
9813939
2026-06-15T20:12:11Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{auto cat}}」的新頁面
9813939
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的德語詞條
14
3479765
9814003
2026-06-15T20:15:49Z
TongcyBot
83009
養貓
9814003
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的伊多語詞條
14
3479766
9814006
2026-06-15T20:15:56Z
TongcyBot
83009
養貓
9814006
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的法語詞條
14
3479767
9814008
2026-06-15T20:15:56Z
TongcyBot
83009
養貓
9814008
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的信德語詞條
14
3479768
9814011
2026-06-15T20:16:01Z
TongcyBot
83009
養貓
9814011
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的意大利語詞條
14
3479769
9814013
2026-06-15T20:16:02Z
TongcyBot
83009
養貓
9814013
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的俾路支語詞條
14
3479770
9814016
2026-06-15T20:16:07Z
TongcyBot
83009
養貓
9814016
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的英語詞條
14
3479771
9814018
2026-06-15T20:16:09Z
TongcyBot
83009
養貓
9814018
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的加告茲語詞條
14
3479772
9814020
2026-06-15T20:16:14Z
TongcyBot
83009
養貓
9814020
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始印歐語詞條
14
3479773
9814021
2026-06-15T20:16:15Z
TongcyBot
83009
養貓
9814021
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的南非語詞條
14
3479774
9814023
2026-06-15T20:16:19Z
TongcyBot
83009
養貓
9814023
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的波蘭語詞條
14
3479775
9814025
2026-06-15T20:16:23Z
TongcyBot
83009
養貓
9814025
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的卡片片甘語詞條
14
3479776
9814028
2026-06-15T20:16:25Z
TongcyBot
83009
養貓
9814028
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的拉丁語詞條
14
3479777
9814029
2026-06-15T20:16:29Z
TongcyBot
83009
養貓
9814029
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的印度河科希斯坦語詞條
14
3479778
9814030
2026-06-15T20:16:32Z
TongcyBot
83009
養貓
9814030
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的葡萄牙語詞條
14
3479779
9814033
2026-06-15T20:16:35Z
TongcyBot
83009
養貓
9814033
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始伊朗語詞條
14
3479780
9814035
2026-06-15T20:16:38Z
TongcyBot
83009
養貓
9814035
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的波斯語詞條
14
3479781
9814038
2026-06-15T20:16:42Z
TongcyBot
83009
養貓
9814038
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始凱爾特語詞條
14
3479782
9814039
2026-06-15T20:16:44Z
TongcyBot
83009
養貓
9814039
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古英語詞條
14
3479783
9814041
2026-06-15T20:16:49Z
TongcyBot
83009
養貓
9814041
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始南達羅毗荼語詞條
14
3479784
9814042
2026-06-15T20:16:50Z
TongcyBot
83009
養貓
9814042
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始印度-伊朗語詞條
14
3479785
9814046
2026-06-15T20:16:56Z
TongcyBot
83009
養貓
9814046
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始斯拉夫語詞條
14
3479786
9814047
2026-06-15T20:16:56Z
TongcyBot
83009
養貓
9814047
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始圖皮語詞條
14
3479787
9814050
2026-06-15T20:17:02Z
TongcyBot
83009
養貓
9814050
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始日耳曼語詞條
14
3479788
9814051
2026-06-15T20:17:03Z
TongcyBot
83009
養貓
9814051
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:原始圖皮語詞條維護
14
3479789
9814052
2026-06-15T20:17:08Z
TongcyBot
83009
養貓
9814052
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的中古英語詞條
14
3479790
9814053
2026-06-15T20:17:10Z
TongcyBot
83009
養貓
9814053
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始希臘語詞條
14
3479791
9814054
2026-06-15T20:17:14Z
TongcyBot
83009
養貓
9814054
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的阿拉伯語詞條
14
3479792
9814055
2026-06-15T20:17:16Z
TongcyBot
83009
養貓
9814055
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始突厥語詞條
14
3479793
9814056
2026-06-15T20:17:20Z
TongcyBot
83009
養貓
9814056
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的梵語詞條
14
3479794
9814057
2026-06-15T20:17:23Z
TongcyBot
83009
養貓
9814057
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始菲律賓語詞條
14
3479795
9814058
2026-06-15T20:17:26Z
TongcyBot
83009
養貓
9814058
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的西班牙語詞條
14
3479796
9814059
2026-06-15T20:17:29Z
TongcyBot
83009
養貓
9814059
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始諾爾斯語詞條
14
3479798
9814061
2026-06-15T20:17:32Z
TongcyBot
83009
養貓
9814061
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古圖皮語詞條
14
3479799
9814062
2026-06-15T20:17:36Z
TongcyBot
83009
養貓
9814062
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始閃米特語詞條
14
3479800
9814063
2026-06-15T20:17:38Z
TongcyBot
83009
養貓
9814063
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古葡萄牙語詞條
14
3479801
9814064
2026-06-15T20:17:42Z
TongcyBot
83009
養貓
9814064
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始阿爾岡昆語詞條
14
3479802
9814065
2026-06-15T20:17:45Z
TongcyBot
83009
養貓
9814065
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始西日耳曼語詞條
14
3479803
9814066
2026-06-15T20:17:49Z
TongcyBot
83009
養貓
9814066
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古古吉拉特語詞條
14
3479804
9814067
2026-06-15T20:17:50Z
TongcyBot
83009
養貓
9814067
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的奈恩加圖語詞條
14
3479805
9814068
2026-06-15T20:17:56Z
TongcyBot
83009
養貓
9814068
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古奧克語詞條
14
3479806
9814069
2026-06-15T20:17:56Z
TongcyBot
83009
養貓
9814069
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古波斯語詞條
14
3479807
9814070
2026-06-15T20:18:02Z
TongcyBot
83009
養貓
9814070
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的漢斯立克語詞條
14
3479808
9814071
2026-06-15T20:18:03Z
TongcyBot
83009
養貓
9814071
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古盧森尼亞語詞條
14
3479809
9814072
2026-06-15T20:18:08Z
TongcyBot
83009
養貓
9814072
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的加利西亞語詞條
14
3479810
9814073
2026-06-15T20:18:09Z
TongcyBot
83009
養貓
9814073
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古荷蘭語詞條
14
3479811
9814074
2026-06-15T20:18:14Z
TongcyBot
83009
養貓
9814074
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的卡舒比語詞條
14
3479812
9814075
2026-06-15T20:18:15Z
TongcyBot
83009
養貓
9814075
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古諾爾斯語詞條
14
3479813
9814077
2026-06-15T20:18:20Z
TongcyBot
83009
養貓
9814077
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始意大利語詞條
14
3479814
9814078
2026-06-15T20:18:22Z
TongcyBot
83009
養貓
9814078
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古阿瓦德語詞條
14
3479815
9814079
2026-06-15T20:18:27Z
TongcyBot
83009
養貓
9814079
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古波蘭語詞條
14
3479816
9814080
2026-06-15T20:18:29Z
TongcyBot
83009
養貓
9814080
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的吐火羅語B詞條
14
3479817
9814081
2026-06-15T20:18:33Z
TongcyBot
83009
養貓
9814081
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的斯洛伐克語詞條
14
3479818
9814082
2026-06-15T20:18:37Z
TongcyBot
83009
養貓
9814082
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的哈瓊語詞條
14
3479819
9814083
2026-06-15T20:18:40Z
TongcyBot
83009
養貓
9814083
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的他加祿語詞條
14
3479820
9814084
2026-06-15T20:18:44Z
TongcyBot
83009
養貓
9814084
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的喀奇語詞條
14
3479821
9814085
2026-06-15T20:18:46Z
TongcyBot
83009
養貓
9814085
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古高地德語詞條
14
3479822
9814086
2026-06-15T20:18:51Z
TongcyBot
83009
養貓
9814086
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的噶瑪蘭語詞條
14
3479823
9814087
2026-06-15T20:18:53Z
TongcyBot
83009
養貓
9814087
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的因紐特語詞條
14
3479824
9814089
2026-06-15T20:18:59Z
TongcyBot
83009
養貓
9814089
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的捷克語詞條
14
3479825
9814090
2026-06-15T20:18:58Z
TongcyBot
83009
養貓
9814090
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的圖瓦語詞條
14
3479826
9814091
2026-06-15T20:19:06Z
TongcyBot
83009
養貓
9814091
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的烏爾都語詞條
14
3479827
9814092
2026-06-15T20:19:06Z
TongcyBot
83009
養貓
9814092
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的基爾丁薩米語詞條
14
3479828
9814093
2026-06-15T20:19:12Z
TongcyBot
83009
養貓
9814093
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的跨語言詞條
14
3479829
9814094
2026-06-15T20:19:13Z
TongcyBot
83009
養貓
9814094
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的塔吉克語詞條
14
3479830
9814095
2026-06-15T20:19:18Z
TongcyBot
83009
養貓
9814095
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的中古高地德語詞條
14
3479831
9814096
2026-06-15T20:19:20Z
TongcyBot
83009
養貓
9814096
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的塞浦路斯阿拉伯語詞條
14
3479832
9814097
2026-06-15T20:19:25Z
TongcyBot
83009
養貓
9814097
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的印地語詞條
14
3479833
9814098
2026-06-15T20:19:27Z
TongcyBot
83009
養貓
9814098
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的壯語詞條
14
3479834
9814099
2026-06-15T20:19:31Z
TongcyBot
83009
養貓
9814099
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古吉拉特語詞條
14
3479835
9814100
2026-06-15T20:19:33Z
TongcyBot
83009
養貓
9814100
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的奧克語詞條
14
3479836
9814101
2026-06-15T20:19:36Z
TongcyBot
83009
養貓
9814101
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古希臘語詞條
14
3479837
9814102
2026-06-15T20:19:40Z
TongcyBot
83009
養貓
9814102
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的姆比亞瓜拉尼語詞條
14
3479838
9814103
2026-06-15T20:19:43Z
TongcyBot
83009
養貓
9814103
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始波羅的-斯拉夫語詞條
14
3479839
9814104
2026-06-15T20:19:47Z
TongcyBot
83009
養貓
9814104
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的孟語詞條
14
3479840
9814105
2026-06-15T20:19:49Z
TongcyBot
83009
養貓
9814105
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的哈薩克語詞條
14
3479841
9814106
2026-06-15T20:19:53Z
TongcyBot
83009
養貓
9814106
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的巴伐利亞語詞條
14
3479842
9814107
2026-06-15T20:19:56Z
TongcyBot
83009
養貓
9814107
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的普拉克里特語詞條
14
3479843
9814108
2026-06-15T20:20:01Z
TongcyBot
83009
養貓
9814108
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的巴拉圭瓜拉尼語詞條
14
3479844
9814109
2026-06-15T20:20:03Z
TongcyBot
83009
養貓
9814109
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的荷蘭語詞條
14
3479845
9814110
2026-06-15T20:20:07Z
TongcyBot
83009
養貓
9814110
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的希伯來語詞條
14
3479846
9814111
2026-06-15T20:20:09Z
TongcyBot
83009
養貓
9814111
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的馬爾他語詞條
14
3479847
9814112
2026-06-15T20:20:14Z
TongcyBot
83009
養貓
9814112
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的希臘語詞條
14
3479848
9814113
2026-06-15T20:20:15Z
TongcyBot
83009
養貓
9814113
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古斯洛伐克語詞條
14
3479849
9814114
2026-06-15T20:20:21Z
TongcyBot
83009
養貓
9814114
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的愛沙尼亞語詞條
14
3479850
9814115
2026-06-15T20:20:22Z
TongcyBot
83009
養貓
9814115
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的愛爾蘭語詞條
14
3479851
9814116
2026-06-15T20:20:29Z
TongcyBot
83009
養貓
9814116
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古法語詞條
14
3479852
9814117
2026-06-15T20:20:28Z
TongcyBot
83009
養貓
9814117
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的孟加拉語詞條
14
3479853
9814118
2026-06-15T20:20:35Z
TongcyBot
83009
養貓
9814118
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的托克皮辛語詞條
14
3479854
9814119
2026-06-15T20:20:36Z
TongcyBot
83009
養貓
9814119
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的旁遮普語詞條
14
3479855
9814120
2026-06-15T20:20:42Z
TongcyBot
83009
養貓
9814120
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的拉傑班什語詞條
14
3479856
9814121
2026-06-15T20:20:42Z
TongcyBot
83009
養貓
9814121
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的新挪威語詞條
14
3479857
9814122
2026-06-15T20:20:48Z
TongcyBot
83009
養貓
9814122
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的泰米爾語詞條
14
3479858
9814123
2026-06-15T20:20:48Z
TongcyBot
83009
養貓
9814123
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的書面挪威語詞條
14
3479859
9814124
2026-06-15T20:20:54Z
TongcyBot
83009
養貓
9814124
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的西里西亞語詞條
14
3479860
9814125
2026-06-15T20:20:56Z
TongcyBot
83009
養貓
9814125
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的朝鮮語詞條
14
3479861
9814126
2026-06-15T20:21:01Z
TongcyBot
83009
養貓
9814126
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的俄語詞條
14
3479862
9814127
2026-06-15T20:21:03Z
TongcyBot
83009
養貓
9814127
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的比什奴普萊利亞-曼尼普爾語詞條
14
3479863
9814128
2026-06-15T20:21:07Z
TongcyBot
83009
養貓
9814128
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的保加利亞語詞條
14
3479864
9814129
2026-06-15T20:21:09Z
TongcyBot
83009
養貓
9814129
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的沃拉普克語詞條
14
3479865
9814130
2026-06-15T20:21:15Z
TongcyBot
83009
養貓
9814130
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始圖皮-瓜拉尼語詞條
14
3479866
9814131
2026-06-15T20:21:16Z
TongcyBot
83009
養貓
9814131
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的波拉布語詞條
14
3479867
9814132
2026-06-15T20:21:21Z
TongcyBot
83009
養貓
9814132
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古捷克語詞條
14
3479868
9814133
2026-06-15T20:21:23Z
TongcyBot
83009
養貓
9814133
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的泰盧固語詞條
14
3479869
9814134
2026-06-15T20:21:28Z
TongcyBot
83009
養貓
9814134
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的塞爾維亞-克羅地亞語詞條
14
3479870
9814135
2026-06-15T20:21:30Z
TongcyBot
83009
養貓
9814135
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的漢語詞條
14
3479871
9814136
2026-06-15T20:21:33Z
TongcyBot
83009
養貓
9814136
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的日語詞條
14
3479872
9814137
2026-06-15T20:21:38Z
TongcyBot
83009
養貓
9814137
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的潘諾尼亞盧森尼亞語詞條
14
3479873
9814138
2026-06-15T20:21:39Z
TongcyBot
83009
養貓
9814138
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的世界語詞條
14
3479874
9814139
2026-06-15T20:21:44Z
TongcyBot
83009
養貓
9814139
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的澤西荷蘭語詞條
14
3479875
9814140
2026-06-15T20:21:46Z
TongcyBot
83009
養貓
9814140
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始達羅毗荼語詞條
14
3479876
9814141
2026-06-15T20:21:51Z
TongcyBot
83009
養貓
9814141
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的烏茲別克語詞條
14
3479877
9814142
2026-06-15T20:21:52Z
TongcyBot
83009
養貓
9814142
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的康沃爾語詞條
14
3479878
9814143
2026-06-15T20:21:57Z
TongcyBot
83009
養貓
9814143
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的牙買加克里奧爾語詞條
14
3479879
9814144
2026-06-15T20:21:59Z
TongcyBot
83009
養貓
9814144
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的羅馬尼亞語詞條
14
3479880
9814145
2026-06-15T20:22:03Z
TongcyBot
83009
養貓
9814145
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的特蘭西瓦尼亞薩克森語詞條
14
3479881
9814146
2026-06-15T20:22:05Z
TongcyBot
83009
養貓
9814146
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的鄂圖曼土耳其語詞條
14
3479882
9814147
2026-06-15T20:22:09Z
TongcyBot
83009
養貓
9814147
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的白俄羅斯語詞條
14
3479883
9814148
2026-06-15T20:22:12Z
TongcyBot
83009
養貓
9814148
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的阿爾巴尼亞語詞條
14
3479884
9814149
2026-06-15T20:22:16Z
TongcyBot
83009
養貓
9814149
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的科瓦語詞條
14
3479885
9814150
2026-06-15T20:22:19Z
TongcyBot
83009
養貓
9814150
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的阿薩姆語詞條
14
3479886
9814151
2026-06-15T20:22:23Z
TongcyBot
83009
養貓
9814151
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的科西嘉語詞條
14
3479887
9814152
2026-06-15T20:22:26Z
TongcyBot
83009
養貓
9814152
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的馬拉雅拉姆語詞條
14
3479888
9814153
2026-06-15T20:22:29Z
TongcyBot
83009
養貓
9814153
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的約拉語詞條
14
3479889
9814154
2026-06-15T20:22:32Z
TongcyBot
83009
養貓
9814154
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的中古波斯語詞條
14
3479890
9814155
2026-06-15T20:22:36Z
TongcyBot
83009
養貓
9814155
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的緬甸語詞條
14
3479891
9814156
2026-06-15T20:22:39Z
TongcyBot
83009
養貓
9814156
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的丹麥語詞條
14
3479892
9814157
2026-06-15T20:22:43Z
TongcyBot
83009
養貓
9814157
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的芬蘭語詞條
14
3479893
9814158
2026-06-15T20:22:46Z
TongcyBot
83009
養貓
9814158
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的加泰羅尼亞語詞條
14
3479894
9814159
2026-06-15T20:22:49Z
TongcyBot
83009
養貓
9814159
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的蘇龍語詞條
14
3479895
9814160
2026-06-15T20:22:52Z
TongcyBot
83009
養貓
9814160
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古教會斯拉夫語詞條
14
3479896
9814161
2026-06-15T20:22:57Z
TongcyBot
83009
養貓
9814161
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的西庫爾語詞條
14
3479897
9814162
2026-06-15T20:22:58Z
TongcyBot
83009
養貓
9814162
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的威爾士語詞條
14
3479898
9814163
2026-06-15T20:23:03Z
TongcyBot
83009
養貓
9814163
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的西西里語詞條
14
3479899
9814164
2026-06-15T20:23:04Z
TongcyBot
83009
養貓
9814164
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的尼泊爾語詞條
14
3479900
9814165
2026-06-15T20:23:09Z
TongcyBot
83009
養貓
9814165
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的諾曼語詞條
14
3479901
9814166
2026-06-15T20:23:11Z
TongcyBot
83009
養貓
9814166
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的瑞典語詞條
14
3479902
9814167
2026-06-15T20:23:16Z
TongcyBot
83009
養貓
9814167
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的豪薩語詞條
14
3479903
9814168
2026-06-15T20:23:17Z
TongcyBot
83009
養貓
9814168
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的賓夕法尼亞德語詞條
14
3479904
9814169
2026-06-15T20:23:23Z
TongcyBot
83009
養貓
9814169
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的翁布里亞語詞條
14
3479905
9814170
2026-06-15T20:23:23Z
TongcyBot
83009
養貓
9814170
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的那不勒斯語詞條
14
3479906
9814171
2026-06-15T20:23:29Z
TongcyBot
83009
養貓
9814171
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的上古泰米爾語詞條
14
3479907
9814172
2026-06-15T20:23:31Z
TongcyBot
83009
養貓
9814172
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的門西語詞條
14
3479908
9814173
2026-06-15T20:23:36Z
TongcyBot
83009
養貓
9814173
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的中世紀西班牙語詞條
14
3479909
9814174
2026-06-15T20:23:37Z
TongcyBot
83009
養貓
9814174
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的阿伊努語詞條
14
3479910
9814175
2026-06-15T20:23:42Z
TongcyBot
83009
養貓
9814175
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的中古法語詞條
14
3479911
9814176
2026-06-15T20:23:43Z
TongcyBot
83009
養貓
9814176
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的阿勒曼尼語詞條
14
3479912
9814177
2026-06-15T20:23:49Z
TongcyBot
83009
養貓
9814177
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的亞拉姆語詞條
14
3479913
9814178
2026-06-15T20:23:50Z
TongcyBot
83009
養貓
9814178
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的阿貝納基語詞條
14
3479914
9814179
2026-06-15T20:23:55Z
TongcyBot
83009
養貓
9814179
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的冰島語詞條
14
3479915
9814180
2026-06-15T20:23:56Z
TongcyBot
83009
養貓
9814180
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的阿輸迦普拉克里特語詞條
14
3479916
9814181
2026-06-15T20:24:02Z
TongcyBot
83009
養貓
9814181
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的匈牙利語詞條
14
3479917
9814182
2026-06-15T20:24:02Z
TongcyBot
83009
養貓
9814182
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的默切諾語詞條
14
3479918
9814183
2026-06-15T20:24:08Z
TongcyBot
83009
養貓
9814183
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的博杰普爾語詞條
14
3479919
9814184
2026-06-15T20:24:08Z
TongcyBot
83009
養貓
9814184
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始南島語詞條
14
3479920
9814185
2026-06-15T20:24:15Z
TongcyBot
83009
養貓
9814185
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有詞源樹的原始意大利語詞條
14
3479921
9814186
2026-06-15T20:24:18Z
TongcyBot
83009
養貓
9814186
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的原始馬來-波利尼西亞語詞條
14
3479922
9814187
2026-06-15T20:24:21Z
TongcyBot
83009
養貓
9814187
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古愛爾蘭語詞條
14
3479923
9814188
2026-06-15T20:24:29Z
TongcyBot
83009
養貓
9814188
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的古東斯拉夫語詞條
14
3479924
9814189
2026-06-15T20:24:35Z
TongcyBot
83009
養貓
9814189
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的哥特語詞條
14
3479925
9814190
2026-06-15T20:24:41Z
TongcyBot
83009
養貓
9814190
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的奧利亞語詞條
14
3479926
9814191
2026-06-15T20:24:47Z
TongcyBot
83009
養貓
9814191
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的孔卡尼語詞條
14
3479927
9814192
2026-06-15T20:24:54Z
TongcyBot
83009
養貓
9814192
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的安提瓜和巴布達克里奧爾英語詞條
14
3479928
9814193
2026-06-15T20:25:02Z
TongcyBot
83009
養貓
9814193
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的察合臺語詞條
14
3479929
9814194
2026-06-15T20:25:08Z
TongcyBot
83009
養貓
9814194
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的巴利語詞條
14
3479930
9814195
2026-06-15T20:25:15Z
TongcyBot
83009
養貓
9814195
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的巴斯克語詞條
14
3479931
9814196
2026-06-15T20:25:21Z
TongcyBot
83009
養貓
9814196
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的帕哈里-波特瓦里語詞條
14
3479932
9814197
2026-06-15T20:25:28Z
TongcyBot
83009
養貓
9814197
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的帕盧拉語詞條
14
3479933
9814198
2026-06-15T20:25:35Z
TongcyBot
83009
養貓
9814198
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的斯洛文尼亞語詞條
14
3479934
9814199
2026-06-15T20:25:41Z
TongcyBot
83009
養貓
9814199
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的斯洛溫語詞條
14
3479935
9814200
2026-06-15T20:25:47Z
TongcyBot
83009
養貓
9814200
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的斯瓦希里語詞條
14
3479936
9814201
2026-06-15T20:25:54Z
TongcyBot
83009
養貓
9814201
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的普什圖語詞條
14
3479937
9814202
2026-06-15T20:26:00Z
TongcyBot
83009
養貓
9814202
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的烏克蘭語詞條
14
3479938
9814203
2026-06-15T20:26:07Z
TongcyBot
83009
養貓
9814203
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的立陶宛語詞條
14
3479939
9814204
2026-06-15T20:26:13Z
TongcyBot
83009
養貓
9814204
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的阿塞拜疆語詞條
14
3479940
9814205
2026-06-15T20:26:21Z
TongcyBot
83009
養貓
9814205
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的馬來語詞條
14
3479941
9814206
2026-06-15T20:26:28Z
TongcyBot
83009
養貓
9814206
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的馬其頓語詞條
14
3479942
9814207
2026-06-15T20:26:34Z
TongcyBot
83009
養貓
9814207
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的馬拉地語詞條
14
3479943
9814208
2026-06-15T20:26:41Z
TongcyBot
83009
養貓
9814208
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的下索布語詞條
14
3479944
9814209
2026-06-15T20:26:47Z
TongcyBot
83009
養貓
9814209
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的中古孟加拉語詞條
14
3479945
9814210
2026-06-15T20:26:54Z
TongcyBot
83009
養貓
9814210
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的中古荷蘭語詞條
14
3479946
9814211
2026-06-15T20:27:01Z
TongcyBot
83009
養貓
9814211
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的中東部德語詞條
14
3479947
9814212
2026-06-15T20:27:07Z
TongcyBot
83009
養貓
9814212
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的中納瓦特爾語詞條
14
3479948
9814213
2026-06-15T20:27:14Z
TongcyBot
83009
養貓
9814213
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的中阿特拉斯柏柏爾語詞條
14
3479949
9814214
2026-06-15T20:27:22Z
TongcyBot
83009
養貓
9814214
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有etymon的亞齊語詞條
14
3479950
9814215
2026-06-15T20:27:30Z
TongcyBot
83009
養貓
9814215
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
舔狗
0
3479951
9814216
2026-06-15T20:34:27Z
P1ayer
5118
新詞條
9814216
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{zh-wp}}
===發音===
{{zh-pron
|m=tiǎngǒu
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|figuratively}} 在感情或人際關係中,明知對方不喜歡自己,卻依然毫無原則與底線地去討好、付出,甚至為了迎合對方而放棄尊嚴
#: {{syn|zh|馱獸|工具人|觀音兵|火山孝子}}
r5mymi1imi9c0do8uffiw2lybv9ufip
9814217
9814216
2026-06-16T01:33:34Z
Sayonzei
40728
/* 漢語 */
9814217
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{zh-wp}}
===發音===
{{zh-pron
|m=tiǎngǒu
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|Internet slang|figuratively}} 在感情或人際關係中,明知對方不喜歡自己,卻依然毫無原則與底線地去[[討好]]、[[付出]],甚至為了[[迎合]]對方而放棄[[尊嚴]]
#: {{syn|zh|馱獸|工具人|觀音兵|火山孝子}}
#: {{zh-x|舔狗 舔 到 最後 一無所有}}
3ltfyw4l1s81ljomagz69869pkm38sf
être sur un petit nuage
0
3479952
9814221
2026-06-16T03:12:10Z
Hzy980512
19278
[[w:WP:AES|←]]建立內容為「==法语== ===发音=== * {{fr-IPA|être sur‿un petit nu-age|être sur‿un petit nuage}} * {{audio|fr|LL-Q150 (fra)-LoquaxFR-être sur un petit nuage.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-être sur un petit nuage.wav|a=<<France>> (<<Somain>>)}} ===动词=== {{fr-verb}} # [[非常]][[开心]],非常[[幸福]],非常[[快乐]] #: {{syn|fr|être au septième ciel|être aux anges}}…」的新頁面
9814221
wikitext
text/x-wiki
==法语==
===发音===
* {{fr-IPA|être sur‿un petit nu-age|être sur‿un petit nuage}}
* {{audio|fr|LL-Q150 (fra)-LoquaxFR-être sur un petit nuage.wav|a=<<France>> (<<Vosges>>)}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-être sur un petit nuage.wav|a=<<France>> (<<Somain>>)}}
===动词===
{{fr-verb}}
# [[非常]][[开心]],非常[[幸福]],非常[[快乐]]
#: {{syn|fr|être au septième ciel|être aux anges}}
====参见====
* {{l|fr|être dans les nuages}}
{{C|fr|快樂}}
585d7kbh8jphqtyc80boj0m6epfzqk9
vaguepost
0
3479953
9814223
2026-06-16T03:23:34Z
Hzy980512
19278
[[w:WP:AES|←]]建立內容為「==英语== ===词源=== {{etymon|en|id=social media}} 源自{{affix|en|vague|-post}}。 ===发音=== * {{audio|en|LL-Q1860 (eng)-Sapaa-vaguepost.wav|a=US}} ===名词=== {{en-noun}} # {{lb|en|Internet slang|social media}} (社交媒体上发的)没有任何解释的,[[含糊其辞]]的[[暗示]]性[[帖子]],[[谜语人]]帖子 #* {{quote-journal|en|author=Page|title=Vagueposting Has Really Become an Inescapable Cultural Expectatio…」的新頁面
9814223
wikitext
text/x-wiki
==英语==
===词源===
{{etymon|en|id=social media}}
源自{{affix|en|vague|-post}}。
===发音===
* {{audio|en|LL-Q1860 (eng)-Sapaa-vaguepost.wav|a=US}}
===名词===
{{en-noun}}
# {{lb|en|Internet slang|social media}} (社交媒体上发的)没有任何解释的,[[含糊其辞]]的[[暗示]]性[[帖子]],[[谜语人]]帖子
#* {{quote-journal|en|author=Page|title=Vagueposting Has Really Become an Inescapable Cultural Expectation|magazine=Poly.Land|url=https://poly.land/2020/02/27/vagueposting-has-really-become-an-inescapable-cultural-expectation/|date=2020-02-27|passage=I’ve had a draft sitting in my folder for about a year with the title and a few notes about the ex-girlfriend who saw '''vagueposts''' everywhere.|archiveurl=https://web.archive.org/web/20250401095200/https://poly.land/2020/02/27/vagueposting-has-really-become-an-inescapable-cultural-expectation/}}
===动词===
{{en-verb}}
# {{lb|en|Internet slang|social media|ambitransitive}} 发谜语人帖子
#* {{quote-journal|en|author=Page|title=Vagueposting Has Really Become an Inescapable Cultural Expectation|magazine=Poly.Land|url=https://poly.land/2020/02/27/vagueposting-has-really-become-an-inescapable-cultural-expectation/|date=2020-02-27|passage=And as I pore over all of the available reading material, it becomes clear that some folks in this new community '''vaguepost''' all the damn time. {{...}} Perhaps unsurprisingly, I’m noticing that the ones most prone to '''vagueposting''' also are the ones who assume that others are '''vagueposting'''.|archiveurl=https://web.archive.org/web/20250401095200/https://poly.land/2020/02/27/vagueposting-has-really-become-an-inescapable-cultural-expectation/}}
====相关词汇====
* {{l|en|vaguebook}}
* {{l|en|vagueblog}}
====参见====
* {{l|en|context collapse}}
* {{l|en|subtweet}}
===延伸阅读===
* {{R:MWO}}
53fycajn8k8eaogazdhi1xr84aiynke
9814224
9814223
2026-06-16T03:31:15Z
Hzy980512
19278
9814224
wikitext
text/x-wiki
==英语==
{{examples|examples=
: {{ux|en|Well, that was a fun way to ruin my day.|糟心的一天,但是也算是乐子。}}
: {{ux|en|I guess I know who my real friends are now.|我想我明白谁才是我真正的朋友了。}}
: {{ux|en|I know something only some people know but I can't tell you.|我知道只有一部分人会知道的东西但是我不能说。}}
}}
===词源===
{{etymon|en|id=social media}}
源自{{affix|en|vague|-post}}。
===发音===
* {{audio|en|LL-Q1860 (eng)-Sapaa-vaguepost.wav|a=US}}
===名词===
{{en-noun}}
# {{lb|en|Internet slang|social media}} (社交媒体上发的)没有任何解释的,[[含糊其辞]]的[[暗示]]性[[帖子]],[[谜语人]]帖子
#* {{quote-journal|en|author=Page|title=Vagueposting Has Really Become an Inescapable Cultural Expectation|magazine=Poly.Land|url=https://poly.land/2020/02/27/vagueposting-has-really-become-an-inescapable-cultural-expectation/|date=2020-02-27|passage=I’ve had a draft sitting in my folder for about a year with the title and a few notes about the ex-girlfriend who saw '''vagueposts''' everywhere.|archiveurl=https://web.archive.org/web/20250401095200/https://poly.land/2020/02/27/vagueposting-has-really-become-an-inescapable-cultural-expectation/}}
===动词===
{{en-verb}}
# {{lb|en|Internet slang|social media|ambitransitive}} 发谜语人帖子
#* {{quote-journal|en|author=Page|title=Vagueposting Has Really Become an Inescapable Cultural Expectation|magazine=Poly.Land|url=https://poly.land/2020/02/27/vagueposting-has-really-become-an-inescapable-cultural-expectation/|date=2020-02-27|passage=And as I pore over all of the available reading material, it becomes clear that some folks in this new community '''vaguepost''' all the damn time. {{...}} Perhaps unsurprisingly, I’m noticing that the ones most prone to '''vagueposting''' also are the ones who assume that others are '''vagueposting'''.|archiveurl=https://web.archive.org/web/20250401095200/https://poly.land/2020/02/27/vagueposting-has-really-become-an-inescapable-cultural-expectation/}}
====相关词汇====
* {{l|en|vaguebook}}
* {{l|en|vagueblog}}
====参见====
* {{l|en|context collapse}}
* {{l|en|subtweet}}
===延伸阅读===
* {{R:MWO}}
0cmkm9yn9ck09b78jw9kbp8dzfawk4l
loslassen
0
3479954
9814225
2026-06-16T04:19:50Z
Hzy980512
19278
[[w:WP:AES|←]]建立內容為「==德语== ===词源=== {{ety|de|:af|los-|lassen}} 源自{{prefix|de|los|lassen}}。 ===发音=== * {{IPA|de|/ˈloːsˌlasən/|[ˈloːsˌlasn̩]}} * {{audio|de|De-loslassen.ogg|a=<<Germany>> (<<Berlin>>)}} ===动词=== {{de-verb|los.lassen<lässt#ließ,gelassen>}} # [[放开]],[[放手]],让...[[离开]] #: {{ux|de|'''Lass''' mich '''los'''!|'''放开'''我!}} #: {{ux|de|Sie '''ließ''' seine Hand '''los'''.|她放开了他的手。…」的新頁面
9814225
wikitext
text/x-wiki
==德语==
===词源===
{{ety|de|:af|los-|lassen}}
源自{{prefix|de|los|lassen}}。
===发音===
* {{IPA|de|/ˈloːsˌlasən/|[ˈloːsˌlasn̩]}}
* {{audio|de|De-loslassen.ogg|a=<<Germany>> (<<Berlin>>)}}
===动词===
{{de-verb|los.lassen<lässt#ließ,gelassen>}}
# [[放开]],[[放手]],让...[[离开]]
#: {{ux|de|'''Lass''' mich '''los'''!|'''放开'''我!}}
#: {{ux|de|Sie '''ließ''' seine Hand '''los'''.|她放开了他的手。}}
#: {{ux|de|die Hunde '''loslassen'''|'''放走'''狗,'''放'''狗}}
#: {{ux|de|Du bist heute wie '''losgelassen'''.|你今天真是豪放啊。/你今天真是放得开啊。}}
# {{lb|de|俚语}}
#: {{ux|de|einen eingeschriebenen Brief '''loslassen'''|寄挂号信}}
#: {{ux|de|eine Beschwerde '''loslassen'''|举报,投诉}}
#: {{ux|de|Witze '''loslassen'''|开玩笑}}
#: {{ux|de|eine Rede '''loslassen'''|演讲;滔滔不绝,大谈特谈}}
====变位====
{{de-conj|los.lassen<lässt#ließ,gelassen>}}
===延伸阅读===
* {{R:de:DWDS}}
* {{R:de:UniLeipzig}}
* {{R:de:Duden}}
* {{R:de:OpenThesaurus}}
5o0tpu703pafejk8holo9vyujtzflvi
9814226
9814225
2026-06-16T04:20:28Z
Hzy980512
19278
9814226
wikitext
text/x-wiki
==德语==
===词源===
{{ety|de|:af|los-|lassen}}
源自{{prefix|de|los|lassen}}。
===发音===
* {{IPA|de|/ˈloːsˌlasən/|[ˈloːsˌlasn̩]}}
* {{audio|de|De-loslassen.ogg|a=<<Germany>> (<<Berlin>>)}}
===动词===
{{de-verb|los.lassen<lässt#ließ,gelassen>}}
# [[放开]],[[放手]],让...[[离开]]
#: {{ux|de|'''Lass''' mich '''los'''!|'''放开'''我!}}
#: {{ux|de|Sie '''ließ''' seine Hand '''los'''.|她放开了他的手。}}
#: {{uxi|de|die Hunde '''loslassen'''|'''放走'''狗,'''放'''狗}}
#: {{uxi|de|Du bist heute wie '''losgelassen'''.|你今天真是豪放啊。/你今天真是放得开啊。}}
# {{lb|de|俚语}}
#: {{uxi|de|einen eingeschriebenen Brief '''loslassen'''|寄挂号信}}
#: {{uxi|de|eine Beschwerde '''loslassen'''|举报,投诉}}
#: {{uxi|de|Witze '''loslassen'''|开玩笑}}
#: {{uxi|de|eine Rede '''loslassen'''|演讲;滔滔不绝,大谈特谈}}
====变位====
{{de-conj|los.lassen<lässt#ließ,gelassen>}}
===延伸阅读===
* {{R:de:DWDS}}
* {{R:de:UniLeipzig}}
* {{R:de:Duden}}
* {{R:de:OpenThesaurus}}
3z639ahy0q3ay91cet8j31dnxrkcmer
9814227
9814226
2026-06-16T04:21:12Z
Hzy980512
19278
9814227
wikitext
text/x-wiki
==德语==
===词源===
{{ety|de|:af|los-|lassen}}
源自{{prefix|de|los|lassen}}。
===发音===
* {{IPA|de|/ˈloːsˌlasən/|[ˈloːsˌlasn̩]}}
* {{audio|de|De-loslassen.ogg|a=<<Germany>> (<<Berlin>>)}}
===动词===
{{de-verb|los.lassen<lässt#ließ,gelassen>}}
# [[放开]],[[放手]],让...[[离开]]
#: {{ux|de|'''Lass''' mich '''los'''!|'''放开'''我!}}
#: {{ux|de|Sie '''ließ''' seine Hand '''los'''.|她放开了他的手。}}
#: {{uxi|de|die Hunde '''loslassen'''|'''放走'''狗,'''放'''狗}}
#: {{ux|de|Du bist heute wie '''losgelassen'''.|你今天真是豪放啊。/你今天真是放得开啊。}}
# {{lb|de|俚语}}
#: {{uxi|de|einen eingeschriebenen Brief '''loslassen'''|寄挂号信}}
#: {{uxi|de|eine Beschwerde '''loslassen'''|举报,投诉}}
#: {{uxi|de|Witze '''loslassen'''|开玩笑}}
#: {{uxi|de|eine Rede '''loslassen'''|演讲;滔滔不绝,大谈特谈}}
====变位====
{{de-conj|los.lassen<lässt#ließ,gelassen>}}
===延伸阅读===
* {{R:de:DWDS}}
* {{R:de:UniLeipzig}}
* {{R:de:Duden}}
* {{R:de:OpenThesaurus}}
hqovemv97i4ec0c7tk7lwi8fzrv9o7l
loslassend
0
3479955
9814229
2026-06-16T04:34:39Z
Sayonzei
40728
創建德語「[[loslassen]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814229
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlasn̩t/}}
* {{audio|de|De-loslassend.ogg|a=柏林}}
===分詞===
{{head|de|現在分詞}}
# {{present participle of|de|loslassen}}
====變格====
{{de-adecl}}
2gpjh59lhy6glcgkjqjdh1h366jx978
loslassenden
0
3479956
9814231
2026-06-16T04:34:59Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌlasn̩dən/}} * {{audio|de|De-loslassenden.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|loslassend}}」的新頁面
9814231
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlasn̩dən/}}
* {{audio|de|De-loslassenden.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|loslassend}}
e70kswbezj2adayzbbg4ctlinw94u5o
loslassendem
0
3479957
9814232
2026-06-16T04:35:02Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌlasn̩dəm/}} * {{audio|de|De-loslassendem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|loslassend}}」的新頁面
9814232
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlasn̩dəm/}}
* {{audio|de|De-loslassendem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|loslassend}}
iwjh9a94xxcmeqt97778sx0ermcskoi
loslassende
0
3479958
9814233
2026-06-16T04:35:09Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌlasn̩də/}} * {{audio|de|De-loslassende.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|loslassend}}」的新頁面
9814233
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlasn̩də/}}
* {{audio|de|De-loslassende.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|loslassend}}
j235dc7or1gox0fl5xhtv61l6igqs19
loslassendes
0
3479959
9814234
2026-06-16T04:35:14Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌlasn̩dəs/}} * {{audio|de|De-loslassendes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|loslassend}}」的新頁面
9814234
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlasn̩dəs/}}
* {{audio|de|De-loslassendes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|loslassend}}
eu19m4b3qtxkagehu8h54b41ciirxp0
loslassender
0
3479960
9814235
2026-06-16T04:35:30Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌlasn̩dɐ/}} * {{audio|de|De-loslassender.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|loslassend}}」的新頁面
9814235
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlasn̩dɐ/}}
* {{audio|de|De-loslassender.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|loslassend}}
dw7evxdnq770o7njqs3ohbg0wj1lvck
losgelassener
0
3479961
9814236
2026-06-16T04:36:20Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsɡəˌlasənɐ/}} * {{audio|de|De-losgelassener.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|losgelassen}}」的新頁面
9814236
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsɡəˌlasənɐ/}}
* {{audio|de|De-losgelassener.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|losgelassen}}
7l0dkluctlcoc0o20cv2yvlnz6crzpg
losgelassenen
0
3479962
9814237
2026-06-16T04:36:23Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsɡəˌlasənən/}} * {{audio|de|De-losgelassenen.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|losgelassen}}」的新頁面
9814237
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsɡəˌlasənən/}}
* {{audio|de|De-losgelassenen.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|losgelassen}}
3rxa9woxxrhtlym4xebby89nj4yevp8
losgelassenem
0
3479963
9814238
2026-06-16T04:36:29Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsɡəˌlasənəm/}} * {{audio|de|De-losgelassenem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|losgelassen}}」的新頁面
9814238
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsɡəˌlasənəm/}}
* {{audio|de|De-losgelassenem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|losgelassen}}
ptcqvkv83jszqs4nduj9thaxboll9n5
losgelassene
0
3479964
9814239
2026-06-16T04:36:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsɡəˌlasənə/}} * {{audio|de|De-losgelassene.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|losgelassen}}」的新頁面
9814239
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsɡəˌlasənə/}}
* {{audio|de|De-losgelassene.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|losgelassen}}
2nptf7ssdznst7dcc9me1ouj2ntjlwu
losgelassenes
0
3479965
9814240
2026-06-16T04:36:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsɡəˌlasənəs/}} * {{audio|de|De-losgelassenes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|losgelassen}}」的新頁面
9814240
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsɡəˌlasənəs/}}
* {{audio|de|De-losgelassenes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|losgelassen}}
11sjvnark20k5xgnx0lj1m1lw3y90oz
lasse los
0
3479966
9814241
2026-06-16T04:36:51Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlasə ˈloːs/}} * {{audio|de|De-lasse los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||1|s|pres|;|1//3|s|sub|I|;|s|imp}}」的新頁面
9814241
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlasə ˈloːs/}}
* {{audio|de|De-lasse los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||1|s|pres|;|1//3|s|sub|I|;|s|imp}}
eragrcpus8kmpq3w0ri531xgdpi7u62
loszulassen
0
3479967
9814242
2026-06-16T04:36:53Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːst͡suˌlasn̩/}} * {{audio|de|De-loszulassen.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{de-zu-infinitive of|loslassen}}」的新頁面
9814242
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːst͡suˌlasn̩/}}
* {{audio|de|De-loszulassen.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{de-zu-infinitive of|loslassen}}
e55dk8s4ytied1arevdz2xrc4svuh24
lässt los
0
3479968
9814243
2026-06-16T04:36:56Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|lasst los}} ==德語== ===發音=== * {{IPA|de|/ˌlɛst ˈloːs/}} * {{audio|de|De-lässt los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2//3|s|pres}}」的新頁面
9814243
wikitext
text/x-wiki
{{also|lasst los}}
==德語==
===發音===
* {{IPA|de|/ˌlɛst ˈloːs/}}
* {{audio|de|De-lässt los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2//3|s|pres}}
kt0sgfn5x64wgbe7znu3pi4p8hiovs2
ließ los
0
3479969
9814244
2026-06-16T04:36:57Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌliːs ˈloːs/}} * {{audio|de|De-ließ los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||1//3|s|pret}}」的新頁面
9814244
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌliːs ˈloːs/}}
* {{audio|de|De-ließ los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||1//3|s|pret}}
10ykeutbzeylqc5jbeluinkf7gqvtjk
ließest los
0
3479970
9814245
2026-06-16T04:37:06Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌliːsəst ˈloːs/}} * {{audio|de|De-ließest los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|s|sub|II}}」的新頁面
9814245
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌliːsəst ˈloːs/}}
* {{audio|de|De-ließest los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|s|sub|II}}
ffti2je4xc69hobc1ctcn3d16nmwne0
ließt los
0
3479971
9814246
2026-06-16T04:37:09Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌliːst ˈloːs/}} * {{audio|de|De-ließt los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|s//p|pret}}」的新頁面
9814246
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌliːst ˈloːs/}}
* {{audio|de|De-ließt los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|s//p|pret}}
f6sxuuk3mnvsr09wld9znhivmptf7ds
lass los
0
3479972
9814247
2026-06-16T04:37:14Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlas ˈloːs/}} * {{audio|de|De-lass los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|loslassen||s|imp}}」的新頁面
9814247
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlas ˈloːs/}}
* {{audio|de|De-lass los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|loslassen||s|imp}}
j8gagxnazsqqtshj1c092e6s0bv0hiz
lassen los
0
3479973
9814248
2026-06-16T04:37:45Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlasn̩ ˈloːs/}} * {{audio|de|De-lassen los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||1//3|p|pres|;|1//3|p|sub|I}}」的新頁面
9814248
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlasn̩ ˈloːs/}}
* {{audio|de|De-lassen los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||1//3|p|pres|;|1//3|p|sub|I}}
7n8r07uyzxb2xk5yldyuwek55xsluo8
ließen los
0
3479974
9814249
2026-06-16T04:37:47Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌliːsn̩ ˈloːs/}} * {{audio|de|De-ließen los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||1//3|p|pret|;|1//3|p|sub|II}}」的新頁面
9814249
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌliːsn̩ ˈloːs/}}
* {{audio|de|De-ließen los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||1//3|p|pret|;|1//3|p|sub|II}}
rh3iwcuiafhfjhkvqfebfca3prwf0ig
lasst los
0
3479975
9814250
2026-06-16T04:37:49Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|lässt los}} ==德語== ===發音=== * {{IPA|de|/ˌlast ˈloːs/}} * {{audio|de|De-lasst los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|p|pres|;|p|imp}}」的新頁面
9814250
wikitext
text/x-wiki
{{also|lässt los}}
==德語==
===發音===
* {{IPA|de|/ˌlast ˈloːs/}}
* {{audio|de|De-lasst los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|p|pres|;|p|imp}}
ih25lmj82hc7sv109jg2acc1uw7yvmy
lassest los
0
3479976
9814251
2026-06-16T04:37:50Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlasəst ˈloːs/}} * {{audio|de|De-lassest los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|s|sub|I}}」的新頁面
9814251
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlasəst ˈloːs/}}
* {{audio|de|De-lassest los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|s|sub|I}}
3wtajlakosj56k6fnayd446uns7tvj8
lasset los
0
3479977
9814252
2026-06-16T04:37:53Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlasət ˈloːs/}} * {{audio|de|De-lasset los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|p|sub|I}}」的新頁面
9814252
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlasət ˈloːs/}}
* {{audio|de|De-lasset los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|p|sub|I}}
k55mnkst3qihpcxceyvyf8iyab0bwa2
ließe los
0
3479978
9814253
2026-06-16T04:38:10Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌliːsə ˈloːs/}} * {{audio|de|De-ließe los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||1//3|s|sub|II}}」的新頁面
9814253
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌliːsə ˈloːs/}}
* {{audio|de|De-ließe los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||1//3|s|sub|II}}
nnpxg6sxo33wegi5q5rlnvnxopjq85h
ließet los
0
3479979
9814254
2026-06-16T04:38:12Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌliːsət ˈloːs/}} * {{audio|de|De-ließet los.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|p|sub|II}}」的新頁面
9814254
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌliːsət ˈloːs/}}
* {{audio|de|De-ließet los.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|p|sub|II}}
440b8vnrc53n2np19rbt8043ehiuzvs
loslässt
0
3479980
9814255
2026-06-16T04:38:14Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|loslasst}} ==德語== ===發音=== * {{IPA|de|/ˈloːsˌlɛst/}} * {{audio|de|De-loslässt.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2//3|s|dep|pres}}」的新頁面
9814255
wikitext
text/x-wiki
{{also|loslasst}}
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlɛst/}}
* {{audio|de|De-loslässt.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2//3|s|dep|pres}}
pki47zo2lpk7qo655t2gcj8hn22yl6q
loslasse
0
3479981
9814256
2026-06-16T04:38:15Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌlasə/}} * {{audio|de|De-loslasse.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||1|s|dep|pres|;|1//3|s|dep|sub|I}}」的新頁面
9814256
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlasə/}}
* {{audio|de|De-loslasse.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||1|s|dep|pres|;|1//3|s|dep|sub|I}}
2z1dlm5b8wzw08oi9lri7a7luwj73hk
loslasst
0
3479982
9814257
2026-06-16T04:38:18Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|loslässt}} ==德語== ===發音=== * {{IPA|de|/ˈloːsˌlast/}} * {{audio|de|De-loslasst.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|p|dep|pres}}」的新頁面
9814257
wikitext
text/x-wiki
{{also|loslässt}}
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlast/}}
* {{audio|de|De-loslasst.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|p|dep|pres}}
cn2lhl4yfyi0bkfqdnru54qfv03qnq9
losließ
0
3479983
9814258
2026-06-16T04:38:29Z
Sayonzei
40728
創建德語「[[loslassen]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814258
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌliːs/}}
* {{audio|de|De-losließ.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||1//3|s|dep|pret}}
q9wpwnabk2bc6aqq3g9y6p5wa9it5bv
losließt
0
3479984
9814259
2026-06-16T04:38:30Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌliːst/}} * {{audio|de|De-losließt.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|s//p|dep|pret}}」的新頁面
9814259
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌliːst/}}
* {{audio|de|De-losließt.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|s//p|dep|pret}}
664cim5m25goluvkn3qzab1v0p05fap
losließest
0
3479985
9814260
2026-06-16T04:38:32Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌliːsəst/}} * {{audio|de|De-losließest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|s|dep|sub|II}}」的新頁面
9814260
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌliːsəst/}}
* {{audio|de|De-losließest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|s|dep|sub|II}}
4e4sd37ob2yxpxxo1pucceqqdel63xa
losließen
0
3479986
9814261
2026-06-16T04:38:38Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌliːsn̩/}} * {{audio|de|De-losließen.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||1//3|p|dep|pret|;|1//3|p|dep|sub|II}}」的新頁面
9814261
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌliːsn̩/}}
* {{audio|de|De-losließen.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||1//3|p|dep|pret|;|1//3|p|dep|sub|II}}
d7yl63jv2mq8pp25l6fv7tad36bck09
loslassest
0
3479987
9814262
2026-06-16T04:38:40Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌlasəst/}} * {{audio|de|De-loslassest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|s|dep|sub|I}}」的新頁面
9814262
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlasəst/}}
* {{audio|de|De-loslassest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|s|dep|sub|I}}
6a0rvcmd89iupmz925firgwas4kr3xn
loslasset
0
3479988
9814263
2026-06-16T04:38:42Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌlasət/}} * {{audio|de|De-loslasset.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|p|dep|sub|I}}」的新頁面
9814263
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌlasət/}}
* {{audio|de|De-loslasset.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|p|dep|sub|I}}
4h0b68fxgtjur83l0xdt5lhf8extxpq
losließe
0
3479989
9814264
2026-06-16T04:38:53Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌliːsə/}} * {{audio|de|De-losließe.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||1//3|s|dep|sub|II}}」的新頁面
9814264
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌliːsə/}}
* {{audio|de|De-losließe.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||1//3|s|dep|sub|II}}
2k6yt3ylsj8m4y14jmpiraqsoyk4say
losließet
0
3479990
9814265
2026-06-16T04:38:54Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈloːsˌliːsət/}} * {{audio|de|De-losließet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|loslassen||2|p|dep|sub|II}}」的新頁面
9814265
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈloːsˌliːsət/}}
* {{audio|de|De-losließet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|loslassen||2|p|dep|sub|II}}
osayfnoast2pl333mr9mcj7t4ngx3tb
eingeleuchtet
0
3479991
9814266
2026-06-16T04:44:26Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaɪ̯nɡəˌlɔɪ̯çtət/}} * {{audio|de|De-eingeleuchtet.ogg|a=柏林}} ===分詞=== {{head|de|過去分詞}} # {{past participle of|de|einleuchten}} ====變格==== {{de-adecl}}」的新頁面
9814266
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaɪ̯nɡəˌlɔɪ̯çtət/}}
* {{audio|de|De-eingeleuchtet.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|einleuchten}}
====變格====
{{de-adecl}}
omead2dpp5n7335wwlheho1errso47o
einzuleuchten
0
3479992
9814267
2026-06-16T04:44:27Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaɪ̯nt͡suˌlɔɪ̯çtn̩/}} * {{audio|de|De-einzuleuchten.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{de-zu-infinitive of|einleuchten}}」的新頁面
9814267
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaɪ̯nt͡suˌlɔɪ̯çtn̩/}}
* {{audio|de|De-einzuleuchten.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{de-zu-infinitive of|einleuchten}}
9cvtaj6su5wtdypcmqbjyabyvsofaej
leuchtet ein
0
3479993
9814268
2026-06-16T04:46:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtət ˈaɪ̯n/}} * {{audio|de|De-leuchtet ein.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|einleuchten||3|s|pres}}」的新頁面
9814268
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtət ˈaɪ̯n/}}
* {{audio|de|De-leuchtet ein.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|einleuchten||3|s|pres}}
plfaxf0xg6aj7evhhgi4d44ntqpmzzh
leuchtete ein
0
3479994
9814269
2026-06-16T04:46:36Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtətə ˈaɪ̯n/}} * {{audio|de|De-leuchtete ein.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|einleuchten||3|s|pret|;|3|s|sub|II}}」的新頁面
9814269
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtətə ˈaɪ̯n/}}
* {{audio|de|De-leuchtete ein.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|einleuchten||3|s|pret|;|3|s|sub|II}}
10n5b5hdb44mh0y8aljn9zjaw0602t0
leuchte ein
0
3479995
9814270
2026-06-16T04:46:39Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtə ˈaɪ̯n/}} * {{audio|de|De-leuchte ein.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|einleuchten||3|s|sub|I}}」的新頁面
9814270
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtə ˈaɪ̯n/}}
* {{audio|de|De-leuchte ein.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|einleuchten||3|s|sub|I}}
9ffrlyi1n31p4hpw6garj4e4zgjp25s
einleuchtete
0
3479996
9814271
2026-06-16T04:46:43Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaɪ̯nˌlɔɪ̯çtətə/}} * {{audio|de|De-einleuchtete.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|einleuchten||3|s|dep|pret|;|3|s|dep|sub|II}}」的新頁面
9814271
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaɪ̯nˌlɔɪ̯çtətə/}}
* {{audio|de|De-einleuchtete.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|einleuchten||3|s|dep|pret|;|3|s|dep|sub|II}}
5j21kfv2dtn78jx1orrg94l3mxxowyc
einleuchtet
0
3479997
9814272
2026-06-16T04:46:45Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaɪ̯nˌlɔɪ̯çtət/}} * {{audio|de|De-einleuchtet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|einleuchten||3|s|dep|pres}}」的新頁面
9814272
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaɪ̯nˌlɔɪ̯çtət/}}
* {{audio|de|De-einleuchtet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|einleuchten||3|s|dep|pres}}
i219ifs7srvdjtz2a983ssseurcxqa5
einleuchte
0
3479998
9814273
2026-06-16T04:46:47Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaɪ̯nˌlɔɪ̯çtə/}} * {{audio|de|De-einleuchte.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|einleuchten||3|s|dep|sub|I}}」的新頁面
9814273
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaɪ̯nˌlɔɪ̯çtə/}}
* {{audio|de|De-einleuchte.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|einleuchten||3|s|dep|sub|I}}
la5xn4zuci0hatm3m8kxijs2cl69lzh
beleuchtend
0
3479999
9814275
2026-06-16T04:48:21Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtn̩t/}} * {{audio|de|De-beleuchtend.ogg|a=柏林}} ===分詞=== {{head|de|現在分詞}} # {{present participle of|de|beleuchten}} ====變格==== {{de-adecl}}」的新頁面
9814275
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtn̩t/}}
* {{audio|de|De-beleuchtend.ogg|a=柏林}}
===分詞===
{{head|de|現在分詞}}
# {{present participle of|de|beleuchten}}
====變格====
{{de-adecl}}
79k31etf5tw0k3dp0892n0ne03tkr5o
beleuchtender
0
3480000
9814277
2026-06-16T04:48:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtn̩dɐ/}} * {{audio|de|De-beleuchtender.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|beleuchtend}}」的新頁面
9814277
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtn̩dɐ/}}
* {{audio|de|De-beleuchtender.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|beleuchtend}}
4o9esg5403o52xmht79yelx8du8n6dw
beleuchtenden
0
3480001
9814278
2026-06-16T04:48:36Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtn̩dən/}} * {{audio|de|De-beleuchtenden.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|beleuchtend}}」的新頁面
9814278
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtn̩dən/}}
* {{audio|de|De-beleuchtenden.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|beleuchtend}}
mtf81un30ct7z5f087aq0aj3ks5xuge
beleuchtendem
0
3480002
9814279
2026-06-16T04:48:38Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtn̩dəm/}} * {{audio|de|De-beleuchtendem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|beleuchtend}}」的新頁面
9814279
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtn̩dəm/}}
* {{audio|de|De-beleuchtendem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|beleuchtend}}
idc1x5h4t8wl2vj3136e3pie9tycggi
beleuchtende
0
3480003
9814280
2026-06-16T04:48:42Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtn̩də/}} * {{audio|de|De-beleuchtende.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|beleuchtend}}」的新頁面
9814280
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtn̩də/}}
* {{audio|de|De-beleuchtende.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|beleuchtend}}
nppc7slajwmvqjtz1cva28txr9j41de
beleuchtendes
0
3480004
9814281
2026-06-16T04:48:44Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtn̩dəs/}} * {{audio|de|De-beleuchtendes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|beleuchtend}}」的新頁面
9814281
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtn̩dəs/}}
* {{audio|de|De-beleuchtendes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|beleuchtend}}
s607sun13jor14ceion01dpaokceh4r
beleuchtetem
0
3480005
9814282
2026-06-16T04:48:58Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtətəm/}} * {{audio|de|De-beleuchtetem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|beleuchtet}}」的新頁面
9814282
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtətəm/}}
* {{audio|de|De-beleuchtetem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|beleuchtet}}
33ougcgfgnibxwbiqc8cvz00wc3g5fb
beleuchteter
0
3480006
9814283
2026-06-16T04:49:00Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtətɐ/}} * {{audio|de|De-beleuchteter.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|beleuchtet}}」的新頁面
9814283
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtətɐ/}}
* {{audio|de|De-beleuchteter.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|beleuchtet}}
32zisive79szl6kxk568ffdodd4uei4
beleuchtetes
0
3480007
9814284
2026-06-16T04:49:03Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtətəs/}} * {{audio|de|De-beleuchtetes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|beleuchtet}}」的新頁面
9814284
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtətəs/}}
* {{audio|de|De-beleuchtetes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|beleuchtet}}
jdlg6o568hfiy46hg7yp7r4923y4imh
beleuchtete
0
3480008
9814285
2026-06-16T04:49:21Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtətə/}} * {{audio|de|De-beleuchtete.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|beleuchten||1//3|s|pret|;|1//3|s|sub|II}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|beleuchtet}}」的新頁面
9814285
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtətə/}}
* {{audio|de|De-beleuchtete.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|beleuchten||1//3|s|pret|;|1//3|s|sub|II}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|beleuchtet}}
ec39t0whsx3xr3n0j0o94juot3vxdvz
beleuchteten
0
3480009
9814286
2026-06-16T04:49:36Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtətn̩/}} * {{audio|de|De-beleuchteten.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|beleuchten||1//3|p|pret|;|1//3|p|sub|II}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|beleuchtet}}」的新頁面
9814286
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtətn̩/}}
* {{audio|de|De-beleuchteten.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|beleuchten||1//3|p|pret|;|1//3|p|sub|II}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|beleuchtet}}
7opq2m95e2sigwx4zwdiy9336396u4k
beleuchte
0
3480010
9814287
2026-06-16T04:49:49Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtə/}} * {{audio|de|De-beleuchte.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|beleuchten||1|s|pres|;|s|imp|;|1//3|s|sub|I}}」的新頁面
9814287
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtə/}}
* {{audio|de|De-beleuchte.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|beleuchten||1|s|pres|;|s|imp|;|1//3|s|sub|I}}
eq6hb2r0e7vbtbs2gntfdrv1a6dqfij
beleuchtetest
0
3480011
9814288
2026-06-16T04:49:50Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtətəst/}} * {{audio|de|De-beleuchtetest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|beleuchten||2|s|pret|;|2|s|sub|II}}」的新頁面
9814288
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtətəst/}}
* {{audio|de|De-beleuchtetest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|beleuchten||2|s|pret|;|2|s|sub|II}}
2gqphc6ukg1vk9fc9g7szqxi2k82lfz
beleuchtest
0
3480012
9814289
2026-06-16T04:49:52Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtəst/}} * {{audio|de|De-beleuchtest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|beleuchten||2|s|pres|;|2|s|sub|I}}」的新頁面
9814289
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtəst/}}
* {{audio|de|De-beleuchtest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|beleuchten||2|s|pres|;|2|s|sub|I}}
caddvvajrabw14a6fic8ho1pnwb2mun
beleucht
0
3480013
9814290
2026-06-16T04:49:54Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çt/}} * {{audio|de|De-beleucht.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|beleuchten||s|imp}}」的新頁面
9814290
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çt/}}
* {{audio|de|De-beleucht.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|beleuchten||s|imp}}
4ad0tnwdia45tybfz5mjg1b7urq9tkz
beleuchtetet
0
3480014
9814291
2026-06-16T04:49:56Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈlɔɪ̯çtətət/}} * {{audio|de|De-beleuchtetet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|beleuchten||2|p|pret|;|2|p|sub|II}}」的新頁面
9814291
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈlɔɪ̯çtətət/}}
* {{audio|de|De-beleuchtetet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|beleuchten||2|p|pret|;|2|p|sub|II}}
crkze3rqhip11xbsei36emgyvxgcjpz
aufgeleuchtet
0
3480015
9814293
2026-06-16T04:52:19Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtət/}} * {{audio|de|De-aufgeleuchtet.ogg|a=柏林}} ===分詞=== {{head|de|過去分詞}} # {{past participle of|de|aufleuchten}} ====變格==== {{de-adecl}}」的新頁面
9814293
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtət/}}
* {{audio|de|De-aufgeleuchtet.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|aufleuchten}}
====變格====
{{de-adecl}}
ategoap7pd8219xsyzt6bfsa42zc6uq
aufgeleuchteter
0
3480016
9814295
2026-06-16T04:52:33Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtətɐ/}} * {{audio|de|De-aufgeleuchteter.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|aufgeleuchtet}}」的新頁面
9814295
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtətɐ/}}
* {{audio|de|De-aufgeleuchteter.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|aufgeleuchtet}}
7l18qaoqc54utql1b2zohkfhc9197xv
aufgeleuchteten
0
3480017
9814296
2026-06-16T04:52:35Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtətn̩/}} * {{audio|de|De-aufgeleuchteten.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|aufgeleuchtet}}」的新頁面
9814296
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtətn̩/}}
* {{audio|de|De-aufgeleuchteten.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|aufgeleuchtet}}
h25ugxyuibn7pxbpwbdj47l5jfbf1tp
aufgeleuchtetem
0
3480018
9814297
2026-06-16T04:52:37Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtətəm/}} * {{audio|de|De-aufgeleuchtetem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|aufgeleuchtet}}」的新頁面
9814297
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtətəm/}}
* {{audio|de|De-aufgeleuchtetem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|aufgeleuchtet}}
79nj0ac2yjc6jn9o03n0gch503hi46p
aufgeleuchtete
0
3480019
9814298
2026-06-16T04:52:41Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtətə/}} * {{audio|de|De-aufgeleuchtete.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|aufgeleuchtet}}」的新頁面
9814298
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtətə/}}
* {{audio|de|De-aufgeleuchtete.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|aufgeleuchtet}}
ipaxn5iiptlo2nkcszivy2mzlgcary1
aufgeleuchtetes
0
3480020
9814299
2026-06-16T04:52:43Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtətəs/}} * {{audio|de|De-aufgeleuchtetes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|aufgeleuchtet}}」的新頁面
9814299
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fɡəˌlɔɪ̯çtətəs/}}
* {{audio|de|De-aufgeleuchtetes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|aufgeleuchtet}}
sg6z27swd1dxhn7j9dwej0ep3acao76
aufleuchtender
0
3480021
9814300
2026-06-16T04:52:57Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩dɐ/}} * {{audio|de|De-aufleuchtender.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|aufleuchtend}}」的新頁面
9814300
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩dɐ/}}
* {{audio|de|De-aufleuchtender.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|aufleuchtend}}
a1d68u0zt6vilop8ho3z1uac8pawd13
aufleuchtenden
0
3480022
9814301
2026-06-16T04:52:59Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩dən/}} * {{audio|de|De-aufleuchtenden.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|aufleuchtend}}」的新頁面
9814301
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩dən/}}
* {{audio|de|De-aufleuchtenden.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|aufleuchtend}}
oaztd0wlbve2xjagjbares8mbqanytj
aufleuchtendem
0
3480023
9814302
2026-06-16T04:53:01Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩dəm/}} * {{audio|de|De-aufleuchtendem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|aufleuchtend}}」的新頁面
9814302
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩dəm/}}
* {{audio|de|De-aufleuchtendem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|aufleuchtend}}
b2c0bokl16620t9iftd7o1hnqfbo6n7
aufleuchtende
0
3480024
9814303
2026-06-16T04:53:04Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩də/}} * {{audio|de|De-aufleuchtende.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|aufleuchtend}}」的新頁面
9814303
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩də/}}
* {{audio|de|De-aufleuchtende.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|aufleuchtend}}
nis4vsyeinkpfj98ludcchiw57ieoat
aufleuchtendes
0
3480025
9814304
2026-06-16T04:53:06Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩dəs/}} * {{audio|de|De-aufleuchtendes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|aufleuchtend}}」的新頁面
9814304
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtn̩dəs/}}
* {{audio|de|De-aufleuchtendes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|aufleuchtend}}
i2iqzij4azzb4nhddxvacshamgdftqh
aufzuleuchten
0
3480026
9814305
2026-06-16T04:53:18Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯ft͡suˌlɔɪ̯çtn̩/}} * {{audio|de|De-aufzuleuchten.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{de-zu-infinitive of|aufleuchten}}」的新頁面
9814305
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯ft͡suˌlɔɪ̯çtn̩/}}
* {{audio|de|De-aufzuleuchten.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{de-zu-infinitive of|aufleuchten}}
6haua5ojmccuif30h2975f0gvpwxf0q
leuchte auf
0
3480027
9814306
2026-06-16T04:53:20Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtə ˈaʊ̯f/}} * {{audio|de|De-leuchte auf.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|aufleuchten||1|s|pres|;|1//3|s|sub|I|;|s|imp}}」的新頁面
9814306
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtə ˈaʊ̯f/}}
* {{audio|de|De-leuchte auf.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|aufleuchten||1|s|pres|;|1//3|s|sub|I|;|s|imp}}
mik8gb7px25ccemh4s3s89hkh79acy4
leuchtest auf
0
3480028
9814307
2026-06-16T04:53:21Z
Sayonzei
40728
創建德語「[[aufleuchten]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814307
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtəst ˈaʊ̯f/}}
* {{audio|de|De-leuchtest auf.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|aufleuchten||2|s|pres|;|2|s|sub|I}}
oj75zpbar72u081n918kvhuokr9fp1l
leuchten auf
0
3480029
9814308
2026-06-16T04:53:23Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtn̩ ˈaʊ̯f/}} * {{audio|de|De-leuchten auf.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|aufleuchten||1//3|p|pres|;|1//3|p|sub|I}}」的新頁面
9814308
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtn̩ ˈaʊ̯f/}}
* {{audio|de|De-leuchten auf.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|aufleuchten||1//3|p|pres|;|1//3|p|sub|I}}
ee82o529d7847oh3hkt667zr8d1xs4f
leuchtet auf
0
3480030
9814309
2026-06-16T04:53:24Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtət ˈaʊ̯f/}} * {{audio|de|De-leuchtet auf.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|aufleuchten||2|p|pres|;|2|p|sub|I|;|3|s|pres|;|p|imp}}」的新頁面
9814309
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtət ˈaʊ̯f/}}
* {{audio|de|De-leuchtet auf.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|aufleuchten||2|p|pres|;|2|p|sub|I|;|3|s|pres|;|p|imp}}
3eos0e92rx1sirt6mrn1ll4f0x9sj35
leucht auf
0
3480031
9814310
2026-06-16T04:53:27Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çt ˈaʊ̯f/}} * {{audio|de|De-leucht auf.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|aufleuchten||s|imp}}」的新頁面
9814310
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çt ˈaʊ̯f/}}
* {{audio|de|De-leucht auf.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|aufleuchten||s|imp}}
r65nbhl3k3wonu4zw0eb3z1oezjhcx1
leuchtete auf
0
3480032
9814311
2026-06-16T04:53:41Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtətə ˈaʊ̯f/}} * {{audio|de|De-leuchtete auf.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|aufleuchten||1//3|s|pret|;|1//3|s|sub|II}}」的新頁面
9814311
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtətə ˈaʊ̯f/}}
* {{audio|de|De-leuchtete auf.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|aufleuchten||1//3|s|pret|;|1//3|s|sub|II}}
b9tvtyuyn78ewe4if6s4sudxjrg61eb
leuchtetest auf
0
3480033
9814312
2026-06-16T04:53:43Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtətəst ˈaʊ̯f/}} * {{audio|de|De-leuchtetest auf.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|aufleuchten||2|s|pret|;|2|s|sub|II}}」的新頁面
9814312
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtətəst ˈaʊ̯f/}}
* {{audio|de|De-leuchtetest auf.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|aufleuchten||2|s|pret|;|2|s|sub|II}}
7iyxd2by0cdcamgkfk3g3cuqlqktx01
leuchteten auf
0
3480034
9814313
2026-06-16T04:53:44Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtətn̩ ˈaʊ̯f/}} * {{audio|de|De-leuchteten auf.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|aufleuchten||1//3|p|pret|;|1//3|p|sub|II}}」的新頁面
9814313
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtətn̩ ˈaʊ̯f/}}
* {{audio|de|De-leuchteten auf.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|aufleuchten||1//3|p|pret|;|1//3|p|sub|II}}
94qccwvssiluqprk0w8ryweeq0sqb46
leuchtetet auf
0
3480035
9814314
2026-06-16T04:53:47Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtətət ˈaʊ̯f/}} * {{audio|de|De-leuchtetet auf.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|aufleuchten||2|p|pret|;|2|p|sub|II}}」的新頁面
9814314
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtətət ˈaʊ̯f/}}
* {{audio|de|De-leuchtetet auf.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|aufleuchten||2|p|pret|;|2|p|sub|II}}
0mafhqvifetfti22ofpajkj61bce9tk
aufleuchtet
0
3480036
9814315
2026-06-16T04:57:25Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtət/}} * {{audio|de|De-aufleuchtet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|aufleuchten||2|p|dep|pres|;|2|p|dep|sub|I|;|3|s|dep|pres}}」的新頁面
9814315
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtət/}}
* {{audio|de|De-aufleuchtet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|aufleuchten||2|p|dep|pres|;|2|p|dep|sub|I|;|3|s|dep|pres}}
d02sdil56tib1yiuhq5n1t0j6e468il
aufleuchtete
0
3480037
9814316
2026-06-16T04:57:27Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtətə/}} * {{audio|de|De-aufleuchtete.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|aufleuchten||1//3|s|dep|pret|;|1//3|s|dep|sub|II}}」的新頁面
9814316
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtətə/}}
* {{audio|de|De-aufleuchtete.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|aufleuchten||1//3|s|dep|pret|;|1//3|s|dep|sub|II}}
pwmfht2cgkpiq050d7wql7a6tge45ij
aufleuchtetest
0
3480038
9814317
2026-06-16T04:57:29Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtətəst/}} * {{audio|de|De-aufleuchtetest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|aufleuchten||2|s|dep|pret|;|2|s|dep|sub|II}}」的新頁面
9814317
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtətəst/}}
* {{audio|de|De-aufleuchtetest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|aufleuchten||2|s|dep|pret|;|2|s|dep|sub|II}}
jx9589mnvb3qcpvv792n3wwrvunwzof
aufleuchteten
0
3480039
9814318
2026-06-16T04:57:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtətn̩/}} * {{audio|de|De-aufleuchteten.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|aufleuchten||1//3|p|dep|pret|;|1//3|p|dep|sub|II}}」的新頁面
9814318
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtətn̩/}}
* {{audio|de|De-aufleuchteten.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|aufleuchten||1//3|p|dep|pret|;|1//3|p|dep|sub|II}}
74jchfduo7skdbm93sws3k6gm0648tg
aufleuchtetet
0
3480040
9814319
2026-06-16T04:57:33Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtətət/}} * {{audio|de|De-aufleuchtetet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|aufleuchten||2|p|dep|pret|;|2|p|dep|sub|II}}」的新頁面
9814319
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtətət/}}
* {{audio|de|De-aufleuchtetet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|aufleuchten||2|p|dep|pret|;|2|p|dep|sub|II}}
jw6kpxdydzea6z90pceegkuy4ovc477
aufleuchtest
0
3480041
9814320
2026-06-16T04:57:37Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtəst/}} * {{audio|de|De-aufleuchtest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|aufleuchten||2|s|dep|pres|;|2|s|dep|sub|I}}」的新頁面
9814320
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtəst/}}
* {{audio|de|De-aufleuchtest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|aufleuchten||2|s|dep|pres|;|2|s|dep|sub|I}}
slwreryga4tejkljnqetrjn02ez04s4
aufleuchte
0
3480042
9814321
2026-06-16T04:57:53Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtə/}} * {{audio|de|De-aufleuchte.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|aufleuchten||1|s|dep|pres|;|1//3|s|dep|sub|I}}」的新頁面
9814321
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯fˌlɔɪ̯çtə/}}
* {{audio|de|De-aufleuchte.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|aufleuchten||1|s|dep|pres|;|1//3|s|dep|sub|I}}
mhonoaiuybia5w6o3pr7f2r61pgelc7
moinsen
0
3480043
9814322
2026-06-16T05:09:08Z
Hzy980512
19278
[[w:WP:AES|←]]建立內容為「==德语== ===词源=== 可能是青年俚语中 {{univerbation|de|moin|zusammen}},因此一般用于多个人。 ===发音=== * {{IPA|de|/ˈmɔːɪ̯nzən/|/ˈmɔɪ̯nzən/}} * {{rfap|de|inline=1}} ===叹词=== {{head|de|interjection}} # {{alt form|from=俚语|de|moin|t=嗨,早}} ===延伸阅读=== * {{R:de:DWDS|moinsen}} * {{pedia|lang=de}}」的新頁面
9814322
wikitext
text/x-wiki
==德语==
===词源===
可能是青年俚语中 {{univerbation|de|moin|zusammen}},因此一般用于多个人。
===发音===
* {{IPA|de|/ˈmɔːɪ̯nzən/|/ˈmɔɪ̯nzən/}}
* {{rfap|de|inline=1}}
===叹词===
{{head|de|interjection}}
# {{alt form|from=俚语|de|moin|t=嗨,早}}
===延伸阅读===
* {{R:de:DWDS|moinsen}}
* {{pedia|lang=de}}
kaf3ryda84sjy33bpn0qfbdrtmltnxz
geleuchtet
0
3480044
9814326
2026-06-16T06:00:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈlɔɪ̯çtət/}} * {{audio|de|De-geleuchtet.ogg|a=柏林}} ===分詞=== {{head|de|過去分詞}} # {{past participle of|de|leuchten}} ====變格==== {{de-adecl}}」的新頁面
9814326
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈlɔɪ̯çtət/}}
* {{audio|de|De-geleuchtet.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|leuchten}}
====變格====
{{de-adecl}}
0pirjmiicx4bft53ud53vgvusa4iupm
geleuchteter
0
3480045
9814327
2026-06-16T06:00:52Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈlɔɪ̯çtətɐ/}} * {{audio|de|De-geleuchteter.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|geleuchtet}}」的新頁面
9814327
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈlɔɪ̯çtətɐ/}}
* {{audio|de|De-geleuchteter.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|geleuchtet}}
gg8457b3lk2jao0oadi7zyi7mi8cb34
geleuchteten
0
3480046
9814328
2026-06-16T06:00:55Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈlɔɪ̯çtətn̩/}} * {{audio|de|De-geleuchteten.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|geleuchtet}}」的新頁面
9814328
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈlɔɪ̯çtətn̩/}}
* {{audio|de|De-geleuchteten.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|geleuchtet}}
ph0aeomvaukv52wjaof85moioo9ihsx
geleuchtete
0
3480047
9814329
2026-06-16T06:00:57Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈlɔɪ̯çtətə/}} * {{audio|de|De-geleuchtete.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|geleuchtet}}」的新頁面
9814329
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈlɔɪ̯çtətə/}}
* {{audio|de|De-geleuchtete.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|geleuchtet}}
puf7a0o2lf9u3pd9kroehox95rh53rw
geleuchtetem
0
3480048
9814330
2026-06-16T06:01:01Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈlɔɪ̯çtətəm/}} * {{audio|de|De-geleuchtetem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|geleuchtet}}」的新頁面
9814330
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈlɔɪ̯çtətəm/}}
* {{audio|de|De-geleuchtetem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|geleuchtet}}
a6b4rui5dungry8nlkkaazj6c5l345t
geleuchtetes
0
3480049
9814331
2026-06-16T06:01:03Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈlɔɪ̯çtətəs/}} * {{audio|de|De-geleuchtetes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|geleuchtet}}」的新頁面
9814331
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈlɔɪ̯çtətəs/}}
* {{audio|de|De-geleuchtetes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|geleuchtet}}
3h0n8axg3ol1q7v4xs28tpv6foyfmk5
leuchtender
0
3480050
9814333
2026-06-16T06:01:58Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈlɔɪ̯çtn̩dɐ/}} * {{audio|de|De-leuchtender.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級}} # {{comparative of|de|leuchtend}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814333
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈlɔɪ̯çtn̩dɐ/}}
* {{audio|de|De-leuchtender.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級}}
# {{comparative of|de|leuchtend}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|leuchtend}}
kyzelngdvnzvve5wmr26nrt4kddlxbc
leuchtenden
0
3480051
9814334
2026-06-16T06:02:00Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈlɔɪ̯çtn̩dən/}} * {{audio|de|De-leuchtenden.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814334
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈlɔɪ̯çtn̩dən/}}
* {{audio|de|De-leuchtenden.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|leuchtend}}
hc0dbwab4ovss4pxq40p8nkpus5ygt6
leuchtende
0
3480052
9814335
2026-06-16T06:02:01Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈlɔɪ̯çtn̩də/}} * {{audio|de|De-leuchtende.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814335
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈlɔɪ̯çtn̩də/}}
* {{audio|de|De-leuchtende.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|leuchtend}}
9n36pih5ng28g4hwv2noukle8w8j7kw
leuchtendem
0
3480053
9814336
2026-06-16T06:02:04Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈlɔɪ̯çtn̩dəm/}} * {{audio|de|De-leuchtendem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814336
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈlɔɪ̯çtn̩dəm/}}
* {{audio|de|De-leuchtendem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|leuchtend}}
srmy39uesaa8t19vyw0x633erlyidm9
leuchtendes
0
3480054
9814337
2026-06-16T06:02:05Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈlɔɪ̯çtn̩dəs/}} * {{audio|de|De-leuchtendes.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814337
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈlɔɪ̯çtn̩dəs/}}
* {{audio|de|De-leuchtendes.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|leuchtend}}
11t341vv6yipss06b97olhj6h5mxocx
leuchtenderer
0
3480055
9814338
2026-06-16T06:02:20Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814338
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|leuchtend}}
rp5dubp41brrjpu93lc46ye5s2748kx
leuchtenderen
0
3480056
9814339
2026-06-16T06:02:21Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814339
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|leuchtend}}
rp5dubp41brrjpu93lc46ye5s2748kx
leuchtendere
0
3480057
9814340
2026-06-16T06:02:22Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814340
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|leuchtend}}
rp5dubp41brrjpu93lc46ye5s2748kx
leuchtenderem
0
3480058
9814341
2026-06-16T06:02:24Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814341
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|leuchtend}}
rp5dubp41brrjpu93lc46ye5s2748kx
leuchtenderes
0
3480059
9814342
2026-06-16T06:02:25Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814342
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|leuchtend}}
rp5dubp41brrjpu93lc46ye5s2748kx
leuchtendster
0
3480060
9814343
2026-06-16T06:02:48Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814343
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|leuchtend}}
4qt5i3ro7ke69z551sa59p0xotsa0im
leuchtendste
0
3480061
9814344
2026-06-16T06:02:50Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814344
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|leuchtend}}
4qt5i3ro7ke69z551sa59p0xotsa0im
leuchtendsten
0
3480062
9814345
2026-06-16T06:02:52Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞最高級}} # {{superlative of|de|leuchtend}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814345
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|leuchtend}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|leuchtend}}
498ig5fvd6uswk967js7ht3448upzx2
leuchtendstem
0
3480063
9814346
2026-06-16T06:02:53Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814346
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|leuchtend}}
4qt5i3ro7ke69z551sa59p0xotsa0im
leuchtendstes
0
3480064
9814347
2026-06-16T06:02:55Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|leuchtend}}」的新頁面
9814347
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|leuchtend}}
4qt5i3ro7ke69z551sa59p0xotsa0im
lumineszieren
0
3480065
9814348
2026-06-16T06:03:39Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===詞源=== {{ety|de|:af|Lumineszenz|-ieren}} 源自 {{af|de|Lumineszenz|-ieren}}。 ===發音=== * {{IPA|de|/luminɛsˈt͡siːʁən/}} * {{audio|de|De-lumineszieren.ogg|a=柏林}} ===動詞=== {{de-verb}} # [[發光]] ====變位==== {{de-conj}} ===延伸閱讀=== * {{R:de:DWDS}} * {{R:de:Duden}}」的新頁面
9814348
wikitext
text/x-wiki
==德語==
===詞源===
{{ety|de|:af|Lumineszenz|-ieren}}
源自 {{af|de|Lumineszenz|-ieren}}。
===發音===
* {{IPA|de|/luminɛsˈt͡siːʁən/}}
* {{audio|de|De-lumineszieren.ogg|a=柏林}}
===動詞===
{{de-verb}}
# [[發光]]
====變位====
{{de-conj}}
===延伸閱讀===
* {{R:de:DWDS}}
* {{R:de:Duden}}
rmqmn15yr3ep1knpxwpk99yzth3tzcj
lumineszierend
0
3480066
9814349
2026-06-16T06:04:13Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/luminɛsˈt͡siːʁənt/}} * {{audio|de|De-lumineszierend.ogg|a=柏林}} ===分詞=== {{head|de|現在分詞}} # {{infl of|de|lumineszieren||pres|part}} ====變格==== {{de-adecl}}」的新頁面
9814349
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/luminɛsˈt͡siːʁənt/}}
* {{audio|de|De-lumineszierend.ogg|a=柏林}}
===分詞===
{{head|de|現在分詞}}
# {{infl of|de|lumineszieren||pres|part}}
====變格====
{{de-adecl}}
5qozans0guzcf9c7jbk8lq6uxy9zsnl
luminesziert
0
3480067
9814350
2026-06-16T06:04:18Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/luminɛsˈt͡siːɐ̯t/}} * {{audio|de|De-luminesziert.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|lumineszieren||;|2|p|pres|;|3|s|pres|;|p|imp}} ===分詞=== {{head|de|過去分詞}} # {{infl of|de|lumineszieren||perf|part}} ====變格==== {{de-adecl}}」的新頁面
9814350
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/luminɛsˈt͡siːɐ̯t/}}
* {{audio|de|De-luminesziert.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|lumineszieren||;|2|p|pres|;|3|s|pres|;|p|imp}}
===分詞===
{{head|de|過去分詞}}
# {{infl of|de|lumineszieren||perf|part}}
====變格====
{{de-adecl}}
6khculs9fg9f3hp5k6o5q24m7mtqhi9
lumineszierender
0
3480068
9814351
2026-06-16T06:04:40Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/luminɛsˈt͡siːʁəndɐ/}} * {{audio|de|De-lumineszierender.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|lumineszierend}}」的新頁面
9814351
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/luminɛsˈt͡siːʁəndɐ/}}
* {{audio|de|De-lumineszierender.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|lumineszierend}}
nj383escudl85ycgqsf84qt52iacrw3
lumineszierenden
0
3480069
9814352
2026-06-16T06:04:42Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/luminɛsˈt͡siːʁəndn̩/}} * {{audio|de|De-lumineszierenden.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|lumineszierend}}」的新頁面
9814352
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/luminɛsˈt͡siːʁəndn̩/}}
* {{audio|de|De-lumineszierenden.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|lumineszierend}}
gyigiiz5i4fdoa4lylbsxxgdbmg8chy
lumineszierendem
0
3480070
9814353
2026-06-16T06:04:44Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/luminɛsˈt͡siːʁəndəm/}} * {{audio|de|De-lumineszierendem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|lumineszierend}}」的新頁面
9814353
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/luminɛsˈt͡siːʁəndəm/}}
* {{audio|de|De-lumineszierendem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|lumineszierend}}
60vgyz6wxy2nkfc2vbrmwlcddqsbzg9
lumineszierende
0
3480071
9814354
2026-06-16T06:04:46Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/luminɛsˈt͡siːʁəndə/}} * {{audio|de|De-lumineszierende.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|lumineszierend}}」的新頁面
9814354
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/luminɛsˈt͡siːʁəndə/}}
* {{audio|de|De-lumineszierende.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|lumineszierend}}
n9ajjzn3qcz1mzh0nn2l3nfgh692zjy
lumineszierendes
0
3480072
9814355
2026-06-16T06:04:49Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/luminɛsˈt͡siːʁəndəs/}} * {{audio|de|De-lumineszierendes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|lumineszierend}}」的新頁面
9814355
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/luminɛsˈt͡siːʁəndəs/}}
* {{audio|de|De-lumineszierendes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|lumineszierend}}
f0why2dn7go2uk1b65u74xx8elwrinl
luminesziere
0
3480073
9814356
2026-06-16T06:05:35Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/luminɛsˈt͡siːʁə/}} * {{audio|de|De-luminesziere.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|lumineszieren||1|s|pres|;|1//3|s|sub|I|;|s|imp}}」的新頁面
9814356
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/luminɛsˈt͡siːʁə/}}
* {{audio|de|De-luminesziere.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|lumineszieren||1|s|pres|;|1//3|s|sub|I|;|s|imp}}
19k8lzw5z9255b2l94kjzmw68y3gtq0
lumineszierte
0
3480074
9814357
2026-06-16T06:05:42Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/luminɛsˈt͡siːɐ̯tə/}} * {{audio|de|De-lumineszierte.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|lumineszieren||1//3|s|pret|;|1//3|s|sub|II}}」的新頁面
9814357
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/luminɛsˈt͡siːɐ̯tə/}}
* {{audio|de|De-lumineszierte.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|lumineszieren||1//3|s|pret|;|1//3|s|sub|II}}
foc2dqyvble4wbw58y67wu4ea4aj4yl
lumineszierten
0
3480075
9814358
2026-06-16T06:06:00Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/luminɛsˈt͡siːɐ̯tn̩/}} * {{audio|de|De-lumineszierten.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|lumineszieren||1//3|p|pret|;|1//3|p|sub|II}}」的新頁面
9814358
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/luminɛsˈt͡siːɐ̯tn̩/}}
* {{audio|de|De-lumineszierten.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|lumineszieren||1//3|p|pret|;|1//3|p|sub|II}}
a8mjzyh12s3z7ap62lh44icsm19eaxo
bestrahlend
0
3480076
9814361
2026-06-16T06:11:39Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːlənt/}} * {{audio|de|De-bestrahlend.ogg|a=柏林}} ===分詞=== {{head|de|現在分詞}} # {{present participle of|de|bestrahlen}} ====變格==== {{de-adecl}}」的新頁面
9814361
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːlənt/}}
* {{audio|de|De-bestrahlend.ogg|a=柏林}}
===分詞===
{{head|de|現在分詞}}
# {{present participle of|de|bestrahlen}}
====變格====
{{de-adecl}}
r9t4algauphtri3olh6l18ceza0x455
bestrahlt
0
3480077
9814362
2026-06-16T06:12:04Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːlt/}} * {{audio|de|De-bestrahlt.ogg|a=柏林}} ===分詞=== {{head|de|過去分詞}} # {{past participle of|de|bestrahlen}} ===形容詞=== {{de-adj}} # [[輻射]]過的 ====變格==== {{de-adecl}}」的新頁面
9814362
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːlt/}}
* {{audio|de|De-bestrahlt.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|bestrahlen}}
===形容詞===
{{de-adj}}
# [[輻射]]過的
====變格====
{{de-adecl}}
jvkb74mfl6uup3e637mbmb1x8lvfeqx
bestrahlender
0
3480078
9814363
2026-06-16T06:12:06Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːləndɐ/}} * {{audio|de|De-bestrahlender.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|bestrahlend}}」的新頁面
9814363
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːləndɐ/}}
* {{audio|de|De-bestrahlender.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|bestrahlend}}
ta4xylgijs3g91spvys8314sltea7di
bestrahlenden
0
3480079
9814364
2026-06-16T06:12:08Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːləndn̩/}} * {{audio|de|De-bestrahlenden.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|bestrahlend}}」的新頁面
9814364
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːləndn̩/}}
* {{audio|de|De-bestrahlenden.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|bestrahlend}}
nif2eizlh9bzdjindd02cq2xm2x9kaq
bestrahlendem
0
3480080
9814365
2026-06-16T06:12:10Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːləndəm/}} * {{audio|de|De-bestrahlendem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|bestrahlend}}」的新頁面
9814365
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːləndəm/}}
* {{audio|de|De-bestrahlendem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|bestrahlend}}
gq52buxp5v0arusdk5etn2ne11qci0v
bestrahlende
0
3480081
9814366
2026-06-16T06:12:13Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːləndə/}} * {{audio|de|De-bestrahlende.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|bestrahlend}}」的新頁面
9814366
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːləndə/}}
* {{audio|de|De-bestrahlende.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|bestrahlend}}
shp45v4agy9e7c9dmhpzqcc23123izb
bestrahlendes
0
3480082
9814367
2026-06-16T06:12:15Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːləndəs/}} * {{audio|de|De-bestrahlendes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|bestrahlend}}」的新頁面
9814367
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːləndəs/}}
* {{audio|de|De-bestrahlendes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|bestrahlend}}
cn46cbyaz49h6cskpaehjn64gtn8xyn
bestrahlter
0
3480083
9814368
2026-06-16T06:12:30Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːltɐ/}} * {{audio|de|De-bestrahlter.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|bestrahlt}}」的新頁面
9814368
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːltɐ/}}
* {{audio|de|De-bestrahlter.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|bestrahlt}}
f87qfcrly6xarwlym3vj1jecsi1y8d0
bestrahltem
0
3480084
9814369
2026-06-16T06:12:32Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːltəm/}} * {{audio|de|De-bestrahltem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|bestrahlt}}」的新頁面
9814369
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːltəm/}}
* {{audio|de|De-bestrahltem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|bestrahlt}}
trx26phg34oskgndezmzso60megi311
bestrahltes
0
3480085
9814370
2026-06-16T06:12:33Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːltəs/}} * {{audio|de|De-bestrahltes.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|bestrahlt}}」的新頁面
9814370
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːltəs/}}
* {{audio|de|De-bestrahltes.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|bestrahlt}}
1dc170o1i6d8sjv3dieo2q5qbg030iu
bestrahlte
0
3480086
9814372
2026-06-16T06:13:04Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːltə/}} * {{audio|de|De-bestrahlte.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|bestrahlt}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|bestrahlen||1//3|s|pret|;|1//3|s|sub|II}}」的新頁面
9814372
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːltə/}}
* {{audio|de|De-bestrahlte.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|bestrahlt}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|bestrahlen||1//3|s|pret|;|1//3|s|sub|II}}
3fd72nr2z0lq1poybn13t6cl21p83v3
bestrahltest
0
3480087
9814373
2026-06-16T06:13:05Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːltəst/}} * {{audio|de|De-bestrahltest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|bestrahlen||2|s|pret|;|2|s|sub|II}}」的新頁面
9814373
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːltəst/}}
* {{audio|de|De-bestrahltest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|bestrahlen||2|s|pret|;|2|s|sub|II}}
fw2r24qjw0ialpf57pvqod68h55syns
bestrahltet
0
3480088
9814374
2026-06-16T06:13:14Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːltət/}} * {{audio|de|De-bestrahltet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|bestrahlen||2|p|pret|;|2|p|sub|II}}」的新頁面
9814374
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːltət/}}
* {{audio|de|De-bestrahltet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|bestrahlen||2|p|pret|;|2|p|sub|II}}
6wrdvttvqrbmpsgwa48ryozgp6oikyd
bestrahlten
0
3480089
9814375
2026-06-16T06:13:21Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːltn̩/}} * {{audio|de|De-bestrahlten.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|bestrahlt}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|bestrahlen||1//3|p|pret|;|1//3|p|sub|II}}」的新頁面
9814375
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːltn̩/}}
* {{audio|de|De-bestrahlten.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|bestrahlt}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|bestrahlen||1//3|p|pret|;|1//3|p|sub|II}}
caywqbp7owt64n5h96dy8awhd2g0js9
bestrahle
0
3480090
9814376
2026-06-16T06:13:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːlə/}} * {{audio|de|De-bestrahle.ogg|a=柏林}} * {{rhymes|de|aːlə|s=3}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|bestrahlen||1|s|pres|;|1//3|s|sub|I|;|s|imp}}」的新頁面
9814376
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːlə/}}
* {{audio|de|De-bestrahle.ogg|a=柏林}}
* {{rhymes|de|aːlə|s=3}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|bestrahlen||1|s|pres|;|1//3|s|sub|I|;|s|imp}}
25zxoh4i3vg2c7iwd3r4c06cz1zfkei
bestrahlst
0
3480091
9814377
2026-06-16T06:13:35Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːlst/}} * {{audio|de|De-bestrahlst.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|bestrahlen||2|s|pres}}」的新頁面
9814377
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːlst/}}
* {{audio|de|De-bestrahlst.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|bestrahlen||2|s|pres}}
q8lvjxz8zlxvqd7bhwecs5zjph22l2i
bestrahlest
0
3480092
9814378
2026-06-16T06:13:36Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːləst/}} * {{audio|de|De-bestrahlest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|bestrahlen||2|s|sub|I}}」的新頁面
9814378
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːləst/}}
* {{audio|de|De-bestrahlest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|bestrahlen||2|s|sub|I}}
oj0x8ufaeg7ai0nl816riz2auxtrvh7
bestrahl
0
3480093
9814379
2026-06-16T06:13:39Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːl/}} * {{audio|de|De-bestrahl.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|bestrahlen||s|imp}} # {{lb|de|口語}} {{verb form of|de|bestrahlen||1|s|pres}}」的新頁面
9814379
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːl/}}
* {{audio|de|De-bestrahl.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|bestrahlen||s|imp}}
# {{lb|de|口語}} {{verb form of|de|bestrahlen||1|s|pres}}
e56brmkk0rba0pa7e3tfvieen6h7pzp
bestrahlet
0
3480094
9814380
2026-06-16T06:13:40Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈʃtʁaːlət/}} * {{audio|de|De-bestrahlet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|bestrahlen||2|p|sub|I}}」的新頁面
9814380
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈʃtʁaːlət/}}
* {{audio|de|De-bestrahlet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|bestrahlen||2|p|sub|I}}
qc85wltiniq6d5t1vwko2t8zcadob48
ausleuchtend
0
3480095
9814382
2026-06-16T06:16:09Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩t/}} * {{audio|de|De-ausleuchtend.ogg|a=柏林}} ===分詞=== {{head|de|現在分詞}} # {{present participle of|de|ausleuchten}} ====變格==== {{de-adecl}}」的新頁面
9814382
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩t/}}
* {{audio|de|De-ausleuchtend.ogg|a=柏林}}
===分詞===
{{head|de|現在分詞}}
# {{present participle of|de|ausleuchten}}
====變格====
{{de-adecl}}
pcku0sgc6214hwd03qwngomu5h45ql2
ausgeleuchtet
0
3480096
9814383
2026-06-16T06:16:16Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtət/}} * {{audio|de|De-ausgeleuchtet.ogg|a=柏林}} ===分詞=== {{head|de|過去分詞}} # {{infl of|de|ausleuchten||perf|part}} ====變格==== {{de-adecl}}」的新頁面
9814383
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtət/}}
* {{audio|de|De-ausgeleuchtet.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{infl of|de|ausleuchten||perf|part}}
====變格====
{{de-adecl}}
secsix69okauksdfn4zamo2llenv4y0
auszuleuchten
0
3480097
9814384
2026-06-16T06:16:18Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯st͡suˌlɔɪ̯çtn̩/}} * {{audio|de|De-auszuleuchten.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{de-zu-infinitive of|ausleuchten}}」的新頁面
9814384
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯st͡suˌlɔɪ̯çtn̩/}}
* {{audio|de|De-auszuleuchten.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{de-zu-infinitive of|ausleuchten}}
kmhz1h588cjd48gsuphgdlko5q0v6eq
ausgeleuchteter
0
3480098
9814385
2026-06-16T06:16:32Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtətɐ/}} * {{audio|de|De-ausgeleuchteter.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|ausgeleuchtet}}」的新頁面
9814385
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtətɐ/}}
* {{audio|de|De-ausgeleuchteter.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|ausgeleuchtet}}
fwl05w7cbgia7horeoe5vwkin66vz6c
ausgeleuchteten
0
3480099
9814386
2026-06-16T06:16:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtətn̩/}} * {{audio|de|De-ausgeleuchteten.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|ausgeleuchtet}}」的新頁面
9814386
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtətn̩/}}
* {{audio|de|De-ausgeleuchteten.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|ausgeleuchtet}}
4ejue65wbzpl94kfryb6bamk1vmaw3q
ausgeleuchtetem
0
3480100
9814387
2026-06-16T06:16:36Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtətəm/}} * {{audio|de|De-ausgeleuchtetem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|ausgeleuchtet}}」的新頁面
9814387
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtətəm/}}
* {{audio|de|De-ausgeleuchtetem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|ausgeleuchtet}}
khuk395bvm5xsj5gftk89rq64f7sg7b
ausgeleuchtetes
0
3480101
9814388
2026-06-16T06:16:38Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtətəs/}} * {{audio|de|De-ausgeleuchtetes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|ausgeleuchtet}}」的新頁面
9814388
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtətəs/}}
* {{audio|de|De-ausgeleuchtetes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|ausgeleuchtet}}
02ytrbrhkbfio12cixqob4dfmir5fib
ausgeleuchtete
0
3480102
9814389
2026-06-16T06:16:42Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtətə/}} * {{audio|de|De-ausgeleuchtete.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|ausgeleuchtet}}」的新頁面
9814389
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sɡəˌlɔɪ̯çtətə/}}
* {{audio|de|De-ausgeleuchtete.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|ausgeleuchtet}}
8htpd6bgnraoft1rk1syudee1gcoual
ausleuchtenden
0
3480103
9814390
2026-06-16T06:17:04Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩dən/}} * {{audio|de|De-ausleuchtenden.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|ausleuchtend}}」的新頁面
9814390
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩dən/}}
* {{audio|de|De-ausleuchtenden.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|ausleuchtend}}
qf6b9oowj0ow1n4bjedhk6ptxs72a8v
ausleuchtendem
0
3480104
9814391
2026-06-16T06:17:07Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩dəm/}} * {{audio|de|De-ausleuchtendem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|ausleuchtend}}」的新頁面
9814391
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩dəm/}}
* {{audio|de|De-ausleuchtendem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|ausleuchtend}}
764dmll4r4dy1xurxfgblcpif5jezjs
ausleuchtender
0
3480105
9814392
2026-06-16T06:17:09Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩dɐ/}} * {{audio|de|De-ausleuchtender.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|ausleuchtend}}」的新頁面
9814392
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩dɐ/}}
* {{audio|de|De-ausleuchtender.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|ausleuchtend}}
owf7s72ehsly8zy6b21uk3im44bte6b
ausleuchtende
0
3480106
9814393
2026-06-16T06:17:11Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩də/}} * {{audio|de|De-ausleuchtende.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|ausleuchtend}}」的新頁面
9814393
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩də/}}
* {{audio|de|De-ausleuchtende.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|ausleuchtend}}
dzgxss1umocyctqjmxs8onhem7glhbu
ausleuchtendes
0
3480107
9814394
2026-06-16T06:17:13Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩dəs/}} * {{audio|de|De-ausleuchtendes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|ausleuchtend}}」的新頁面
9814394
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtn̩dəs/}}
* {{audio|de|De-ausleuchtendes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|ausleuchtend}}
1cyw8x1l2srbaejlsb6x31e9f6h7wum
leuchte aus
0
3480108
9814395
2026-06-16T06:17:33Z
Sayonzei
40728
創建德語「[[ausleuchten]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814395
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtə ˈaʊ̯s/}}
* {{audio|de|De-leuchte aus.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|ausleuchten||1|s|pres|;|1//3|s|sub|I|;|s|imp}}
dbemzhjp04ifj6irqysad2fcrq3t2wo
leuchtest aus
0
3480109
9814396
2026-06-16T06:17:35Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtəst ˈaʊ̯s/}} * {{audio|de|De-leuchtest aus.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|ausleuchten||2|s|pres|;|2|s|sub|I}}」的新頁面
9814396
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtəst ˈaʊ̯s/}}
* {{audio|de|De-leuchtest aus.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|ausleuchten||2|s|pres|;|2|s|sub|I}}
7x1t5c5qpr9g0lhifg8h0kjjcb0fcb0
leuchtet aus
0
3480110
9814397
2026-06-16T06:17:38Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtət ˈaʊ̯s/}} * {{audio|de|De-leuchtet aus.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|ausleuchten||2|p|pres|;|2|p|sub|I|;|3|s|pres|;|p|imp}}」的新頁面
9814397
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtət ˈaʊ̯s/}}
* {{audio|de|De-leuchtet aus.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|ausleuchten||2|p|pres|;|2|p|sub|I|;|3|s|pres|;|p|imp}}
0kqby7kxjuxxqrwsybcrtuu9fia79fk
leuchten aus
0
3480111
9814398
2026-06-16T06:17:40Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtn̩ ˈaʊ̯s/}} * {{audio|de|De-leuchten aus.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|ausleuchten||1//3|p|pres|;|1//3|p|sub|I}}」的新頁面
9814398
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtn̩ ˈaʊ̯s/}}
* {{audio|de|De-leuchten aus.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|ausleuchten||1//3|p|pres|;|1//3|p|sub|I}}
2cfajwvvjcjwcfa8nz7lc5rob2k8t5m
leucht aus
0
3480112
9814399
2026-06-16T06:17:41Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çt ˈaʊ̯s/}} * {{audio|de|De-leucht aus.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|ausleuchten||s|imp}}」的新頁面
9814399
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çt ˈaʊ̯s/}}
* {{audio|de|De-leucht aus.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|ausleuchten||s|imp}}
7coms13pyid1f6rxyz6axxvolp07igz
leuchtete aus
0
3480113
9814400
2026-06-16T06:17:54Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtətə ˈaʊ̯s/}} * {{audio|de|De-leuchtete aus.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|ausleuchten||1//3|s|pret|;|1//3|s|sub|II}}」的新頁面
9814400
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtətə ˈaʊ̯s/}}
* {{audio|de|De-leuchtete aus.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|ausleuchten||1//3|s|pret|;|1//3|s|sub|II}}
si3avs0kwh5b4n1muzvxicrvlqwry7r
leuchteten aus
0
3480114
9814401
2026-06-16T06:17:55Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtətn̩ ˈaʊ̯s/}} * {{audio|de|De-leuchteten aus.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|ausleuchten||1//3|p|pret|;|1//3|p|sub|II}}」的新頁面
9814401
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtətn̩ ˈaʊ̯s/}}
* {{audio|de|De-leuchteten aus.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|ausleuchten||1//3|p|pret|;|1//3|p|sub|II}}
qfws3aztsjex16ck0a1qzfodkb0dmve
leuchtetest aus
0
3480115
9814402
2026-06-16T06:17:56Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtətəst ˈaʊ̯s/}} * {{audio|de|De-leuchtetest aus.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|ausleuchten||2|s|pret|;|2|s|sub|II}}」的新頁面
9814402
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtətəst ˈaʊ̯s/}}
* {{audio|de|De-leuchtetest aus.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|ausleuchten||2|s|pret|;|2|s|sub|II}}
0c0jd97ryrzsadpg7v417kd7xuqv88t
leuchtetet aus
0
3480116
9814403
2026-06-16T06:17:58Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˌlɔɪ̯çtətət ˈaʊ̯s/}} * {{audio|de|De-leuchtetet aus.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|ausleuchten||2|p|pret|;|2|p|sub|II}}」的新頁面
9814403
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˌlɔɪ̯çtətət ˈaʊ̯s/}}
* {{audio|de|De-leuchtetet aus.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|ausleuchten||2|p|pret|;|2|p|sub|II}}
e5uhulqhat1i5t58gs87ncfy0xjjazt
ausleuchtest
0
3480117
9814404
2026-06-16T06:18:15Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtəst/}} * {{audio|de|De-ausleuchtest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|ausleuchten||2|s|dep|pres|;|2|s|dep|sub|I}}」的新頁面
9814404
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtəst/}}
* {{audio|de|De-ausleuchtest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|ausleuchten||2|s|dep|pres|;|2|s|dep|sub|I}}
rpf9ne83xr37j7dxaq1l4t7ebilr58p
ausleuchtet
0
3480118
9814405
2026-06-16T06:18:17Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtət/}} * {{audio|de|De-ausleuchtet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|ausleuchten||dep|3|s|pres|;|dep|2|p|pres|;|dep|2|p|sub|I}}」的新頁面
9814405
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtət/}}
* {{audio|de|De-ausleuchtet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|ausleuchten||dep|3|s|pres|;|dep|2|p|pres|;|dep|2|p|sub|I}}
91v7l6u1miknpiqgda25jc28v7h6wng
ausleuchtete
0
3480119
9814406
2026-06-16T06:18:29Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtətə/}} * {{audio|de|De-ausleuchtete.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|ausleuchten||1//3|s|dep|pret|;|1//3|s|dep|sub|II}}」的新頁面
9814406
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtətə/}}
* {{audio|de|De-ausleuchtete.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|ausleuchten||1//3|s|dep|pret|;|1//3|s|dep|sub|II}}
1b2z6mtom5y3twbj0hclgo58jv9x7sz
ausleuchtetest
0
3480120
9814407
2026-06-16T06:18:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtətəst/}} * {{audio|de|De-ausleuchtetest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|ausleuchten||2|s|dep|pret|;|2|s|dep|sub|II}}」的新頁面
9814407
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtətəst/}}
* {{audio|de|De-ausleuchtetest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|ausleuchten||2|s|dep|pret|;|2|s|dep|sub|II}}
f9maeu8h9rearueiw35nky8bo9ai1kk
ausleuchteten
0
3480121
9814408
2026-06-16T06:18:33Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtətn̩/}} * {{audio|de|De-ausleuchteten.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|ausleuchten||1//3|p|dep|pret|;|1//3|p|dep|sub|II}}」的新頁面
9814408
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtətn̩/}}
* {{audio|de|De-ausleuchteten.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|ausleuchten||1//3|p|dep|pret|;|1//3|p|dep|sub|II}}
hjgl6d1qdomelh6g93ud66cesfe3o17
ausleuchtetet
0
3480122
9814409
2026-06-16T06:18:35Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtətət/}} * {{audio|de|De-ausleuchtetet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|ausleuchten||2|p|dep|pret|;|2|p|dep|sub|II}}」的新頁面
9814409
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtətət/}}
* {{audio|de|De-ausleuchtetet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|ausleuchten||2|p|dep|pret|;|2|p|dep|sub|II}}
4rq2nhu6a7039zpyimtdmfaoq0fbeni
ausleuchte
0
3480123
9814410
2026-06-16T06:18:40Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtə/}} * {{audio|de|De-ausleuchte.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|ausleuchten||1|s|dep|pres|;|1//3|s|dep|sub|I}}」的新頁面
9814410
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈaʊ̯sˌlɔɪ̯çtə/}}
* {{audio|de|De-ausleuchte.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|ausleuchten||1|s|dep|pres|;|1//3|s|dep|sub|I}}
est1smtf59pal6ixmb9m0xx5sok1xk9
vernebelnd
0
3480124
9814413
2026-06-16T06:22:44Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩nt/}} * {{audio|de|De-vernebelnd.ogg|a=柏林}} ===分詞=== {{head|de|現在分詞}} # {{present participle of|de|vernebeln}} ====變格==== {{de-adecl}}」的新頁面
9814413
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩nt/}}
* {{audio|de|De-vernebelnd.ogg|a=柏林}}
===分詞===
{{head|de|現在分詞}}
# {{present participle of|de|vernebeln}}
====變格====
{{de-adecl}}
075ba6k938iotfdz2uor1k8946py09m
vernebelnden
0
3480125
9814414
2026-06-16T06:23:01Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩ndn̩/}} * {{audio|de|De-vernebelnden.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|vernebelnd}}」的新頁面
9814414
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩ndn̩/}}
* {{audio|de|De-vernebelnden.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|vernebelnd}}
6bg91bjtdxgh51m8rtpfy92zhmpad9y
vernebelndem
0
3480126
9814415
2026-06-16T06:23:03Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩ndəm/}} * {{audio|de|De-vernebelndem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|vernebelnd}}」的新頁面
9814415
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩ndəm/}}
* {{audio|de|De-vernebelndem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|vernebelnd}}
q53ui6m9gbtpzpnrdprrqpu9a9trqgj
vernebelnde
0
3480127
9814416
2026-06-16T06:23:05Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩ndə/}} * {{audio|de|De-vernebelnde.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|vernebelnd}}」的新頁面
9814416
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩ndə/}}
* {{audio|de|De-vernebelnde.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|vernebelnd}}
ga883d0ddo5q5pmzlxww0povfswg1ld
vernebelndes
0
3480128
9814417
2026-06-16T06:23:07Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩ndəs/}} * {{audio|de|De-vernebelndes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|vernebelnd}}」的新頁面
9814417
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩ndəs/}}
* {{audio|de|De-vernebelndes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|vernebelnd}}
ci6f008rdwh1n3m2x4q3pu9u5asqvk7
vernebelnder
0
3480129
9814418
2026-06-16T06:23:14Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩ndɐ/}} * {{audio|de|De-vernebelnder.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|vernebelnd}}」的新頁面
9814418
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩ndɐ/}}
* {{audio|de|De-vernebelnder.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|vernebelnd}}
lu4ep0jkgql0eavn7339ttb5iwsunwh
vernebelter
0
3480130
9814419
2026-06-16T06:23:29Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩tɐ/}} * {{audio|de|De-vernebelter.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|vernebelt}}」的新頁面
9814419
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩tɐ/}}
* {{audio|de|De-vernebelter.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|vernebelt}}
qmgugzjrvz6kydhu9j3bu5xm4m4bh71
vernebeltem
0
3480131
9814420
2026-06-16T06:23:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩təm/}} * {{audio|de|De-vernebeltem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|vernebelt}}」的新頁面
9814420
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩təm/}}
* {{audio|de|De-vernebeltem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|vernebelt}}
l4g2zn1nhwdvzv5wjat126lhc4vxoks
vernebeltes
0
3480132
9814421
2026-06-16T06:23:33Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩təs/}} * {{audio|de|De-vernebeltes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|vernebelt}}」的新頁面
9814421
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩təs/}}
* {{audio|de|De-vernebeltes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|vernebelt}}
0bb2du3ulg8skv7bul0616qtx4pzetg
vernebelte
0
3480133
9814422
2026-06-16T06:23:45Z
Sayonzei
40728
創建德語「[[vernebeln]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814422
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩tə/}}
* {{audio|de|De-vernebelte.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||1//3|s|pret|;|1//3|s|sub|II}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|vernebelt}}
iwf5tddryo32w16btmh64tibd8x9eyv
vernebelten
0
3480134
9814423
2026-06-16T06:23:48Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩tn̩/}} * {{audio|de|De-vernebelten.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||1//3|p|pret|;|1//3|p|sub|II}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|vernebelt}}」的新頁面
9814423
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩tn̩/}}
* {{audio|de|De-vernebelten.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||1//3|p|pret|;|1//3|p|sub|II}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|vernebelt}}
sx1xfdyngbqs6qhcgeopkpaudvrgzy5
verneble
0
3480135
9814424
2026-06-16T06:23:58Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːblə/}} * {{audio|de|De-verneble.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||1|s|pres|;|1//3|s|sub|I|;|s|imp}}」的新頁面
9814424
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːblə/}}
* {{audio|de|De-verneble.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||1|s|pres|;|1//3|s|sub|I|;|s|imp}}
cndxso5y2l5ljgxzfooqlypa1odo5qh
vernebele
0
3480136
9814425
2026-06-16T06:23:59Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbələ/}} * {{audio|de|De-vernebele.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||1|s|pres|;|1|p|sub|I|;|3|s|sub|I|;|s|imp}}」的新頁面
9814425
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbələ/}}
* {{audio|de|De-vernebele.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||1|s|pres|;|1|p|sub|I|;|3|s|sub|I|;|s|imp}}
gjfu8hcub3s4jqotdmk5bia01jslto1
vernebel
0
3480137
9814426
2026-06-16T06:24:01Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩/}} * {{audio|de|De-vernebel.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||1|s|pres|;|s|imp}}」的新頁面
9814426
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩/}}
* {{audio|de|De-vernebel.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||1|s|pres|;|s|imp}}
05mw4uqync8ne22ckjno13k0fdcs0jp
vernebelst
0
3480138
9814427
2026-06-16T06:24:02Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩st/}} * {{audio|de|De-vernebelst.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||2|s|pres}}」的新頁面
9814427
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩st/}}
* {{audio|de|De-vernebelst.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||2|s|pres}}
coeye13q9402bos5rdwkcvdvelv9kpn
vernebeltest
0
3480139
9814428
2026-06-16T06:24:03Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩təst/}} * {{audio|de|De-vernebeltest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||2|s|pret|;|2|s|sub|II}}」的新頁面
9814428
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩təst/}}
* {{audio|de|De-vernebeltest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||2|s|pret|;|2|s|sub|II}}
b245dt7rx8m6zh2o4rdnhfknbfofsf1
vernebeltet
0
3480140
9814429
2026-06-16T06:24:05Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbl̩tət/}} * {{audio|de|De-vernebeltet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||2|p|pret|;|2|p|sub|II}}」的新頁面
9814429
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbl̩tət/}}
* {{audio|de|De-vernebeltet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||2|p|pret|;|2|p|sub|II}}
0igroemmcwwcqaldcfzna008soy8nua
vernebelest
0
3480141
9814430
2026-06-16T06:24:19Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||2|s|sub|I}}」的新頁面
9814430
wikitext
text/x-wiki
==德語==
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||2|s|sub|I}}
po8m1jtqyx5ee7yx5if2pazj7mv5qph
verneblest
0
3480142
9814431
2026-06-16T06:24:20Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːbləst/}} * {{audio|de|De-verneblest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||2|s|sub|I}}」的新頁面
9814431
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːbləst/}}
* {{audio|de|De-verneblest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||2|s|sub|I}}
9l0l3xidkwgelvo2wl2rpw2caphmp3s
vernebelet
0
3480143
9814432
2026-06-16T06:24:22Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||2|p|sub|I}}」的新頁面
9814432
wikitext
text/x-wiki
==德語==
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||2|p|sub|I}}
708nk9166ji954aoaunjdxh4tweav1j
verneblet
0
3480144
9814433
2026-06-16T06:24:24Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/fɛɐ̯ˈneːblət/}} * {{audio|de|De-verneblet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|vernebeln||2|p|sub|I}}」的新頁面
9814433
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/fɛɐ̯ˈneːblət/}}
* {{audio|de|De-verneblet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|vernebeln||2|p|sub|I}}
f023ko65lqicsvbwpjbn4ed1mwjwayu
nebelnd
0
3480145
9814436
2026-06-16T06:26:24Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩nt/}} * {{audio|de|De-nebelnd.ogg|a=柏林}} ===分詞=== {{head|de|現在分詞}} # {{present participle of|de|nebeln}} ====變格==== {{de-adecl}}」的新頁面
9814436
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩nt/}}
* {{audio|de|De-nebelnd.ogg|a=柏林}}
===分詞===
{{head|de|現在分詞}}
# {{present participle of|de|nebeln}}
====變格====
{{de-adecl}}
5wfewnyczzhz5fuo1iqjsdfot5x001b
genebelt
0
3480146
9814437
2026-06-16T06:26:26Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈneːbl̩t/}} * {{audio|de|De-genebelt.ogg|a=柏林}} ===分詞=== {{head|de|過去分詞}} # {{past participle of|de|nebeln}} ====變格==== {{de-adecl}}」的新頁面
9814437
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈneːbl̩t/}}
* {{audio|de|De-genebelt.ogg|a=柏林}}
===分詞===
{{head|de|過去分詞}}
# {{past participle of|de|nebeln}}
====變格====
{{de-adecl}}
twfjlco03zxqe6y4qln8lttd6e43zvs
nebelnden
0
3480147
9814438
2026-06-16T06:26:45Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩ndn̩/}} * {{audio|de|De-nebelnden.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|nebelnd}}」的新頁面
9814438
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩ndn̩/}}
* {{audio|de|De-nebelnden.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|nebelnd}}
9wz2lewaqazlqf8yjsxl6vf71ekl4y1
nebelnder
0
3480148
9814439
2026-06-16T06:26:47Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩ndɐ/}} * {{audio|de|De-nebelnder.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|nebelnd}}」的新頁面
9814439
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩ndɐ/}}
* {{audio|de|De-nebelnder.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|nebelnd}}
76n7nav3mtx5bq92blibv3r9izf68f9
nebelndem
0
3480149
9814440
2026-06-16T06:26:49Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩ndəm/}} * {{audio|de|De-nebelndem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|nebelnd}}」的新頁面
9814440
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩ndəm/}}
* {{audio|de|De-nebelndem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|nebelnd}}
sm184x45ca5orju7ee4cz3bgia93pm0
nebelnde
0
3480150
9814441
2026-06-16T06:26:51Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩ndə/}} * {{audio|de|De-nebelnde.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|nebelnd}}」的新頁面
9814441
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩ndə/}}
* {{audio|de|De-nebelnde.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|nebelnd}}
rid9vei7iaivmjdq8uz4ga5jkavqwxh
nebelndes
0
3480151
9814442
2026-06-16T06:26:53Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩ndəs/}} * {{audio|de|De-nebelndes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|nebelnd}}」的新頁面
9814442
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩ndəs/}}
* {{audio|de|De-nebelndes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|nebelnd}}
q5d1r0o9nczsmgxu0nn5f9n2xl1jlce
genebelter
0
3480152
9814443
2026-06-16T06:27:10Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈneːbl̩tɐ/}} * {{audio|de|De-genebelter.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|genebelt}}」的新頁面
9814443
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈneːbl̩tɐ/}}
* {{audio|de|De-genebelter.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|genebelt}}
n7yvtapfy0ju4grd80aaoy2vr1xk7g0
genebeltem
0
3480153
9814444
2026-06-16T06:27:11Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈneːbl̩təm/}} * {{audio|de|De-genebeltem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|genebelt}}」的新頁面
9814444
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈneːbl̩təm/}}
* {{audio|de|De-genebeltem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|genebelt}}
5nis2a81fcejk0dp6yz2gx8avyu1i4v
genebelten
0
3480154
9814445
2026-06-16T06:27:13Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈneːbl̩tn̩/}} * {{audio|de|De-genebelten.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|genebelt}}」的新頁面
9814445
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈneːbl̩tn̩/}}
* {{audio|de|De-genebelten.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|genebelt}}
cs2vnf9nd1tccnxtar7m80qa64b8gh5
genebelte
0
3480155
9814446
2026-06-16T06:27:16Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈneːbl̩tə/}} * {{audio|de|De-genebelte.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|genebelt}}」的新頁面
9814446
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈneːbl̩tə/}}
* {{audio|de|De-genebelte.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|genebelt}}
og9wckj4urbsrskhfsnxrdna25ez9de
genebeltes
0
3480156
9814447
2026-06-16T06:27:19Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ɡəˈneːbl̩təs/}} * {{audio|de|De-genebeltes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|genebelt}}」的新頁面
9814447
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ɡəˈneːbl̩təs/}}
* {{audio|de|De-genebeltes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|genebelt}}
69fx357lpjqynezugqq54yu8m3wlttf
neble
0
3480157
9814451
2026-06-16T06:42:53Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblə/}} * {{audio|de|De-neble.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||1|s|pres|;|s|imp|;|1//3|s|sub|I}}」的新頁面
9814451
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblə/}}
* {{audio|de|De-neble.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||1|s|pres|;|s|imp|;|1//3|s|sub|I}}
8kblj4qdct22gmh80zau9opnoiq1ie9
nebele
0
3480158
9814452
2026-06-16T06:42:54Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbələ/}} * {{audio|de|De-nebele.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||1|s|pres|;|s|imp|;|1//3|s|sub|I}}」的新頁面
9814452
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbələ/}}
* {{audio|de|De-nebele.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||1|s|pres|;|s|imp|;|1//3|s|sub|I}}
6hyi83k0p2m3a338zqr4gu1f16vcdc6
nebelt
0
3480159
9814453
2026-06-16T06:42:56Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩t/}} * {{audio|de|De-nebelt.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||3|s|pres|;|2|p|pres|;|p|imp}}」的新頁面
9814453
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩t/}}
* {{audio|de|De-nebelt.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||3|s|pres|;|2|p|pres|;|p|imp}}
6adjhe1wg9l7l5cg6mj61sbthhyspbw
nebelst
0
3480160
9814454
2026-06-16T06:42:59Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩st/}} * {{audio|de|De-nebelst.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||2|s|pres}}」的新頁面
9814454
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩st/}}
* {{audio|de|De-nebelst.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||2|s|pres}}
o0pq985x79gsygwev8jotjo5r73lu7n
nebelte
0
3480161
9814455
2026-06-16T06:43:03Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩tə/}} * {{audio|de|De-nebelte.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||1//3|s|pret|;|1//3|s|sub|II}}」的新頁面
9814455
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩tə/}}
* {{audio|de|De-nebelte.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||1//3|s|pret|;|1//3|s|sub|II}}
os153ydkdhi763n2qzh5anoh4zjixj2
nebeltest
0
3480162
9814456
2026-06-16T06:43:04Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩təst/}} * {{audio|de|De-nebeltest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||2|s|pret|;|2|s|sub|II}}」的新頁面
9814456
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩təst/}}
* {{audio|de|De-nebeltest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||2|s|pret|;|2|s|sub|II}}
mys57gx76b9jxx1bgli5h13j23g9fg1
nebelten
0
3480163
9814457
2026-06-16T06:43:24Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩tn̩/}} * {{audio|de|De-nebelten.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||1//3|p|pret|;|1//3|p|sub|II}}」的新頁面
9814457
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩tn̩/}}
* {{audio|de|De-nebelten.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||1//3|p|pret|;|1//3|p|sub|II}}
jdkrrghicax587opinc59qwshxwh35b
nebeltet
0
3480164
9814458
2026-06-16T06:43:25Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩tət/}} * {{audio|de|De-nebeltet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||2|p|pret|;|2|p|sub|II}}」的新頁面
9814458
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩tət/}}
* {{audio|de|De-nebeltet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||2|p|pret|;|2|p|sub|II}}
tjwv8wszje135oh8fgv9j7r2umotmod
nebelest
0
3480165
9814459
2026-06-16T06:43:29Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||2|s|sub|I}}」的新頁面
9814459
wikitext
text/x-wiki
==德語==
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||2|s|sub|I}}
dec2o08hbsyqksn2e9jixuql4y92yop
neblest
0
3480166
9814460
2026-06-16T06:43:32Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbləst/}} * {{audio|de|De-neblest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||2|s|sub|I}}」的新頁面
9814460
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbləst/}}
* {{audio|de|De-neblest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||2|s|sub|I}}
ojlft0csqxqihbp6vahmymrkujs6l9t
nebelet
0
3480167
9814461
2026-06-16T06:43:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===動詞=== {{head|de|動詞變位形式}} # {{verb form of|de|nebeln||2|p|sub|I}}」的新頁面
9814461
wikitext
text/x-wiki
==德語==
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||2|p|sub|I}}
7c2vaxeybpo3kz77toppy9c0o3rxdgg
neblet
0
3480168
9814462
2026-06-16T06:43:37Z
Sayonzei
40728
創建德語「[[nebeln]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814462
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblət/}}
* {{audio|de|De-neblet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{verb form of|de|nebeln||2|p|sub|I}}
f75e8ec1z2w8j2pjqd3l3fnpm35af1e
Nebels
0
3480169
9814463
2026-06-16T06:43:58Z
Sayonzei
40728
創建德語「[[Nebel]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814463
wikitext
text/x-wiki
{{also|nebels}}
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩s/}}
* {{audio|de|De-Nebels.ogg|a=柏林}}
===名詞===
{{head|de|名詞變格形}}
# {{inflection of|de|Nebel||gen|s}}
jm98wrlq87w7y6chsvliqwfm64ugucg
Nebeln
0
3480170
9814464
2026-06-16T06:44:00Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|nebeln}} ==德語== ===發音=== * {{IPA|de|/ˈneːbl̩n/}} * {{audio|de|De-Nebeln.ogg|a=柏林}} ===名詞=== {{head|de|名詞變格形|g=m}} # {{inflection of|de|Nebel||dat|p}}」的新頁面
9814464
wikitext
text/x-wiki
{{also|nebeln}}
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩n/}}
* {{audio|de|De-Nebeln.ogg|a=柏林}}
===名詞===
{{head|de|名詞變格形|g=m}}
# {{inflection of|de|Nebel||dat|p}}
9hv38st9m6m0ehyxlmb8h072glwuej6
nebeliger
0
3480171
9814468
2026-06-16T06:45:29Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪɡɐ/}} * {{audio|de|De-nebeliger.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814468
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪɡɐ/}}
* {{audio|de|De-nebeliger.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|nebelig}}
6lbt0y70uxt16qporyxap6vydbmjl1a
nebeligen
0
3480172
9814469
2026-06-16T06:45:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪɡn̩/}} * {{audio|de|De-nebeligen.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814469
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪɡn̩/}}
* {{audio|de|De-nebeligen.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|nebelig}}
6m73az65bgnzl5ug557btdd9hemicxn
nebeligem
0
3480173
9814470
2026-06-16T06:45:32Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪɡəm/}} * {{audio|de|De-nebeligem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814470
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪɡəm/}}
* {{audio|de|De-nebeligem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|nebelig}}
31t7k3t8gzvqc4nih97odve5o3uic2f
nebelige
0
3480174
9814471
2026-06-16T06:45:33Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪɡə/}} * {{audio|de|De-nebelige.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814471
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪɡə/}}
* {{audio|de|De-nebelige.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|nebelig}}
hkcc6frf3s7d0brgm2zepvdgo7q4tzh
nebeliges
0
3480175
9814472
2026-06-16T06:45:35Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪɡəs/}} * {{audio|de|De-nebeliges.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814472
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪɡəs/}}
* {{audio|de|De-nebeliges.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|nebelig}}
g3z8zptqnq1hg6ynr360lulk276x1yu
nebeligerer
0
3480176
9814473
2026-06-16T06:45:51Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪɡəʁɐ/}} * {{audio|de|De-nebeligerer.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814473
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪɡəʁɐ/}}
* {{audio|de|De-nebeligerer.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|nebelig}}
sriatd564bm0q7fi23qnbcw94r03s0x
nebeligeren
0
3480177
9814474
2026-06-16T06:45:52Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪɡəʁən/}} * {{audio|de|De-nebeligeren.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814474
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪɡəʁən/}}
* {{audio|de|De-nebeligeren.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|nebelig}}
s9js9bes7yvjvnj9hkmwfrc2c4eiq9q
nebeligere
0
3480178
9814475
2026-06-16T06:45:54Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪɡəʁə/}} * {{audio|de|De-nebeligere.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814475
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪɡəʁə/}}
* {{audio|de|De-nebeligere.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|nebelig}}
b0r9gjltb78p8s7zggl1uassmiidhq0
nebeligerem
0
3480179
9814476
2026-06-16T06:45:55Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪɡəʁəm/}} * {{audio|de|De-nebeligerem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814476
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪɡəʁəm/}}
* {{audio|de|De-nebeligerem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|nebelig}}
7rn7jle3t6wzx3v798wpici5sbwbzv8
nebeligeres
0
3480180
9814477
2026-06-16T06:45:57Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪɡəʁəs/}} * {{audio|de|De-nebeligeres.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814477
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪɡəʁəs/}}
* {{audio|de|De-nebeligeres.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|nebelig}}
n0w6wa636a00orncm8ou2r1bf1mc8i5
nebeligster
0
3480181
9814478
2026-06-16T06:46:07Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪçstɐ/|/ˈneːbəlɪkstɐ/}} * {{audio|de|De-nebeligster.ogg|a=柏林}} * {{audio|de|De-nebeligster2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814478
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪçstɐ/|/ˈneːbəlɪkstɐ/}}
* {{audio|de|De-nebeligster.ogg|a=柏林}}
* {{audio|de|De-nebeligster2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|nebelig}}
t0d9lj6u1be46y2s78ogehgzkidlqqq
nebeligsten
0
3480182
9814479
2026-06-16T06:46:10Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪçstn̩/|/ˈneːbəlɪkstn̩/}} * {{audio|de|De-nebeligsten.ogg|a=柏林}} * {{audio|de|De-nebeligsten2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級}} # {{superlative of|de|nebelig}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814479
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪçstn̩/|/ˈneːbəlɪkstn̩/}}
* {{audio|de|De-nebeligsten.ogg|a=柏林}}
* {{audio|de|De-nebeligsten2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|nebelig}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|nebelig}}
3cecmzmx7c87b86kz2qpjexycpo2tp0
nebeligstem
0
3480183
9814480
2026-06-16T06:46:11Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪçstəm/|/ˈneːbəlɪkstəm/}} * {{audio|de|De-nebeligstem.ogg|a=柏林}} * {{audio|de|De-nebeligstem2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814480
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪçstəm/|/ˈneːbəlɪkstəm/}}
* {{audio|de|De-nebeligstem.ogg|a=柏林}}
* {{audio|de|De-nebeligstem2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|nebelig}}
cldkfppm08dx2l6azsppwik8aga6m2t
nebeligste
0
3480184
9814481
2026-06-16T06:46:13Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪçstə/|/ˈneːbəlɪkstə/}} * {{audio|de|De-nebeligste.ogg|a=柏林}} * {{audio|de|De-nebeligste2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814481
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪçstə/|/ˈneːbəlɪkstə/}}
* {{audio|de|De-nebeligste.ogg|a=柏林}}
* {{audio|de|De-nebeligste2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|nebelig}}
mutxrmb2mavflly7qvziiy4z91f6qkd
nebeligstes
0
3480185
9814482
2026-06-16T06:46:14Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbəlɪçstəs/|/ˈneːbəlɪkstəs/}} * {{audio|de|De-nebeligstes.ogg|a=柏林}} * {{audio|de|De-nebeligstes2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|nebelig}}」的新頁面
9814482
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbəlɪçstəs/|/ˈneːbəlɪkstəs/}}
* {{audio|de|De-nebeligstes.ogg|a=柏林}}
* {{audio|de|De-nebeligstes2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|nebelig}}
fcd440jcsm0p3sxk4ij84637xhbi6ml
nebliger
0
3480186
9814484
2026-06-16T06:47:30Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪɡɐ/}} * {{audio|de|De-nebliger.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|neblig}}」的新頁面
9814484
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪɡɐ/}}
* {{audio|de|De-nebliger.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|neblig}}
6a6cblip7yqmty528sd1t8dosw9yh2g
nebligem
0
3480187
9814485
2026-06-16T06:47:32Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪɡəm/}} * {{audio|de|De-nebligem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|neblig}}」的新頁面
9814485
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪɡəm/}}
* {{audio|de|De-nebligem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|neblig}}
ixrtdv9wtqslpudykskam6d02q2qpxl
nebligen
0
3480188
9814486
2026-06-16T06:47:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪɡn̩/}} * {{audio|de|De-nebligen.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|neblig}}」的新頁面
9814486
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪɡn̩/}}
* {{audio|de|De-nebligen.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|neblig}}
r995gsrc4k494mrlwciob50vclesega
neblige
0
3480189
9814487
2026-06-16T06:47:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪɡə/}} * {{audio|de|De-neblige.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|neblig}} ===異序詞=== * {{anagrams|de|a=beegiln|Belgien|Giebeln|nebelig}}」的新頁面
9814487
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪɡə/}}
* {{audio|de|De-neblige.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|neblig}}
===異序詞===
* {{anagrams|de|a=beegiln|Belgien|Giebeln|nebelig}}
30297qrriarav0kpkcprxbkvv5zn1qf
nebliges
0
3480190
9814488
2026-06-16T06:47:36Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪɡəs/}} * {{audio|de|De-nebliges.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|neblig}}」的新頁面
9814488
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪɡəs/}}
* {{audio|de|De-nebliges.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|neblig}}
2dgtxjekrndgc1pcorfinwmb2etjv5c
nebligerer
0
3480191
9814489
2026-06-16T06:47:46Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪɡəʁɐ/}} * {{audio|de|De-nebligerer.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|neblig}}」的新頁面
9814489
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪɡəʁɐ/}}
* {{audio|de|De-nebligerer.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|neblig}}
hpb5q72ex62jyuaxn3p8i0k83873ict
nebligeren
0
3480192
9814490
2026-06-16T06:47:48Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪɡəʁən/}} * {{audio|de|De-nebligeren.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|neblig}}」的新頁面
9814490
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪɡəʁən/}}
* {{audio|de|De-nebligeren.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|neblig}}
5pfkaxo2i9c3ro63zuaplt0w24nvifq
nebligere
0
3480193
9814491
2026-06-16T06:47:49Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪɡəʁə/}} * {{audio|de|De-nebligere.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|neblig}}」的新頁面
9814491
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪɡəʁə/}}
* {{audio|de|De-nebligere.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|neblig}}
fxv1fy7pnw9jla0b1219iprgv2lff0n
nebligerem
0
3480194
9814492
2026-06-16T06:47:51Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪɡəʁəm/}} * {{audio|de|De-nebligerem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|neblig}}」的新頁面
9814492
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪɡəʁəm/}}
* {{audio|de|De-nebligerem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|neblig}}
bddeoyfw4x1w3wokfrkamtkisq7bg7d
nebligeres
0
3480195
9814493
2026-06-16T06:47:53Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪɡəʁəs/}} * {{audio|de|De-nebligeres.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|neblig}}」的新頁面
9814493
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪɡəʁəs/}}
* {{audio|de|De-nebligeres.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|neblig}}
ljtdq12sd59syszel4dzxs7u7ra01ti
nebligster
0
3480196
9814494
2026-06-16T06:48:49Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪçstɐ/|/ˈneːblɪkstɐ/}} * {{audio|de|De-nebligster.ogg|a=柏林}} * {{audio|de|De-nebligster2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|neblig}}」的新頁面
9814494
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪçstɐ/|/ˈneːblɪkstɐ/}}
* {{audio|de|De-nebligster.ogg|a=柏林}}
* {{audio|de|De-nebligster2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|neblig}}
crf69jk2dut8ba2a15ov6bg046sm7xy
nebligsten
0
3480197
9814495
2026-06-16T06:48:51Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪçstn̩/|/ˈneːblɪkstn̩/}} * {{audio|de|De-nebligsten.ogg|a=柏林}} * {{audio|de|De-nebligsten2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級}} # {{superlative of|de|neblig}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|neblig}}」的新頁面
9814495
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪçstn̩/|/ˈneːblɪkstn̩/}}
* {{audio|de|De-nebligsten.ogg|a=柏林}}
* {{audio|de|De-nebligsten2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|neblig}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|neblig}}
6au70lum8ts2ux2dhcor57yhheo8cpj
nebligstem
0
3480198
9814496
2026-06-16T06:48:52Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪçstəm/|/ˈneːblɪkstəm/}} * {{audio|de|De-nebligstem.ogg|a=柏林}} * {{audio|de|De-nebligstem2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|neblig}}」的新頁面
9814496
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪçstəm/|/ˈneːblɪkstəm/}}
* {{audio|de|De-nebligstem.ogg|a=柏林}}
* {{audio|de|De-nebligstem2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|neblig}}
aehnh9fh7p7xvd98vox1uor48hiegtf
nebligste
0
3480199
9814497
2026-06-16T06:48:54Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪçstə/|/ˈneːblɪkstə/}} * {{audio|de|De-nebligste.ogg|a=柏林}} * {{audio|de|De-nebligste2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|neblig}}」的新頁面
9814497
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪçstə/|/ˈneːblɪkstə/}}
* {{audio|de|De-nebligste.ogg|a=柏林}}
* {{audio|de|De-nebligste2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|neblig}}
dymz5gaj3p7huougob17dwl384wluf9
nebligstes
0
3480200
9814498
2026-06-16T06:48:55Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːblɪçstəs/|/ˈneːblɪkstəs/}} * {{audio|de|De-nebligstes.ogg|a=柏林}} * {{audio|de|De-nebligstes2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|neblig}}」的新頁面
9814498
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːblɪçstəs/|/ˈneːblɪkstəs/}}
* {{audio|de|De-nebligstes.ogg|a=柏林}}
* {{audio|de|De-nebligstes2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|neblig}}
8uukh9isri7brdtp9mkyep4wqqvv349
nebelhaft
0
3480201
9814499
2026-06-16T06:50:03Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===詞源=== {{ety|de|:af|Nebel|-haft}} {{suffix|de|Nebel|haft}} ===發音=== * {{IPA|de|/ˈneːbl̩haft/}} * {{audio|de|De-nebelhaft.ogg|a=柏林}} ===形容詞=== {{de-adj|comp}} # [[霧]]狀的 # [[模糊]]的,[[朦朧]]的 ====變格==== {{de-adecl|comp}} ====近義詞==== * {{l|de|schemenhaft}} ===延伸閱讀=== * {{R:de:DWDS}} * {{R:de:UniLeipzig}}」的新頁面
9814499
wikitext
text/x-wiki
==德語==
===詞源===
{{ety|de|:af|Nebel|-haft}}
{{suffix|de|Nebel|haft}}
===發音===
* {{IPA|de|/ˈneːbl̩haft/}}
* {{audio|de|De-nebelhaft.ogg|a=柏林}}
===形容詞===
{{de-adj|comp}}
# [[霧]]狀的
# [[模糊]]的,[[朦朧]]的
====變格====
{{de-adecl|comp}}
====近義詞====
* {{l|de|schemenhaft}}
===延伸閱讀===
* {{R:de:DWDS}}
* {{R:de:UniLeipzig}}
jexeg74xfe4qiy2nwsooyyyqebswyqm
nebelhafter
0
3480202
9814500
2026-06-16T06:50:26Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftɐ/}} * {{audio|de|De-nebelhafter.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級}} # {{comparative of|de|nebelhaft}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814500
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftɐ/}}
* {{audio|de|De-nebelhafter.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級}}
# {{comparative of|de|nebelhaft}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|nebelhaft}}
g2yu4mf7gt8lnnbvrbwtju9kd0qz27i
nebelhaften
0
3480203
9814501
2026-06-16T06:50:26Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftn̩/}} * {{audio|de|De-nebelhaften.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814501
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftn̩/}}
* {{audio|de|De-nebelhaften.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|nebelhaft}}
9f5gs03627ijdxcz91zpi8yupmw4ci9
nebelhaftem
0
3480204
9814502
2026-06-16T06:50:28Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəm/}} * {{audio|de|De-nebelhaftem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814502
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəm/}}
* {{audio|de|De-nebelhaftem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|nebelhaft}}
deovhiv0e5qmwghfgnva4ij51mlsiab
nebelhaftes
0
3480205
9814503
2026-06-16T06:50:29Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəs/}} * {{audio|de|De-nebelhaftes.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814503
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəs/}}
* {{audio|de|De-nebelhaftes.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|nebelhaft}}
3fev0krz4xag05lbddg4be5wfn2zb6q
nebelhafte
0
3480206
9814504
2026-06-16T06:50:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftə/}} * {{audio|de|De-nebelhafte.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814504
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftə/}}
* {{audio|de|De-nebelhafte.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|nebelhaft}}
tqieu6cqzhrbs4w6lewk0if31kgi1e8
nebelhafterer
0
3480207
9814505
2026-06-16T06:50:44Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəʁɐ/}} * {{audio|de|De-nebelhafterer.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814505
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəʁɐ/}}
* {{audio|de|De-nebelhafterer.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|nebelhaft}}
s3tt4r6juockq2lknkcnjd9sqtk4x7i
nebelhafteren
0
3480208
9814506
2026-06-16T06:50:46Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəʁən/}} * {{audio|de|De-nebelhafteren.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814506
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəʁən/}}
* {{audio|de|De-nebelhafteren.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|nebelhaft}}
4zaq9axibbl2udfltwhxm95x46fnsjx
nebelhaftere
0
3480209
9814507
2026-06-16T06:50:47Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəʁə/}} * {{audio|de|De-nebelhaftere.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814507
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəʁə/}}
* {{audio|de|De-nebelhaftere.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|nebelhaft}}
bm3i08pdaokzza0n9acptk55mx76cnv
nebelhafterem
0
3480210
9814508
2026-06-16T06:50:49Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəʁəm/}} * {{audio|de|De-nebelhafterem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814508
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəʁəm/}}
* {{audio|de|De-nebelhafterem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|nebelhaft}}
na12jumip5td2xw7jn9ldih7ia5orv4
nebelhafteres
0
3480211
9814509
2026-06-16T06:50:51Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəʁəs/}} * {{audio|de|De-nebelhafteres.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814509
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəʁəs/}}
* {{audio|de|De-nebelhafteres.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|nebelhaft}}
rr9snim8dwzxkwtntn79af28o4p32wf
nebelhaftester
0
3480212
9814510
2026-06-16T06:51:04Z
Sayonzei
40728
創建德語「[[nebelhaft]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814510
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəstɐ/}}
* {{audio|de|De-nebelhaftester.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|nebelhaft}}
jastcujm5wihwhwjg5xx27iww0jykjq
nebelhaftesten
0
3480213
9814511
2026-06-16T06:51:05Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəstn̩/}} * {{audio|de|De-nebelhaftesten.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級}} # {{superlative of|de|nebelhaft}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814511
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəstn̩/}}
* {{audio|de|De-nebelhaftesten.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|nebelhaft}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|nebelhaft}}
g3l1e7wc0i8r3g701ltznlzz4a1iit3
nebelhaftestem
0
3480214
9814512
2026-06-16T06:51:06Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəstəm/}} * {{audio|de|De-nebelhaftestem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814512
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəstəm/}}
* {{audio|de|De-nebelhaftestem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|nebelhaft}}
qvn5drb8l7aqz0d904n8qxb5s3l2zpy
nebelhafteste
0
3480215
9814513
2026-06-16T06:51:07Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəstə/}} * {{audio|de|De-nebelhafteste.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814513
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəstə/}}
* {{audio|de|De-nebelhafteste.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|nebelhaft}}
5to5dbh7qywlmw7rraeixvp1bvu0dg5
nebelhaftestes
0
3480216
9814514
2026-06-16T06:51:10Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈneːbl̩haftəstəs/}} * {{audio|de|De-nebelhaftestes.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|nebelhaft}}」的新頁面
9814514
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈneːbl̩haftəstəs/}}
* {{audio|de|De-nebelhaftestes.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|nebelhaft}}
97bzk3s1gshpov4ld7hqa78dbprha05
schemenhafter
0
3480217
9814516
2026-06-16T06:52:56Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftɐ/}} * {{audio|de|De-schemenhafter.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級}} # {{comparative of|de|schemenhaft}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814516
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftɐ/}}
* {{audio|de|De-schemenhafter.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級}}
# {{comparative of|de|schemenhaft}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|schemenhaft}}
jzfe1hkuivwf8w9114viz5613ot7w92
schemenhaften
0
3480218
9814517
2026-06-16T06:52:58Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftn̩/}} * {{audio|de|De-schemenhaften.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814517
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftn̩/}}
* {{audio|de|De-schemenhaften.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|schemenhaft}}
qhecn69l9rtm7joisj0xwc1bjwntj1q
schemenhaftem
0
3480219
9814518
2026-06-16T06:52:59Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəm/}} * {{audio|de|De-schemenhaftem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814518
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəm/}}
* {{audio|de|De-schemenhaftem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|schemenhaft}}
iknzznttnpwyyiqrjo744ecv6pf5xcu
schemenhafte
0
3480220
9814519
2026-06-16T06:53:00Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftə/}} * {{audio|de|De-schemenhafte.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814519
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftə/}}
* {{audio|de|De-schemenhafte.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|schemenhaft}}
dklhkrp81jc55wwd5ibd7dcbe2yzcun
schemenhaftes
0
3480221
9814520
2026-06-16T06:53:02Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəs/}} * {{audio|de|De-schemenhaftes.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814520
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəs/}}
* {{audio|de|De-schemenhaftes.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|schemenhaft}}
0lz0ey7vs2p6xene1pea8ujtoawuakn
schemenhafterer
0
3480222
9814521
2026-06-16T06:53:15Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəʁɐ/}} * {{audio|de|De-schemenhafterer.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814521
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəʁɐ/}}
* {{audio|de|De-schemenhafterer.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|schemenhaft}}
ehqc09uay6qhqojymr0xr9ood59kic8
schemenhafteren
0
3480223
9814522
2026-06-16T06:53:16Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəʁən/}} * {{audio|de|De-schemenhafteren.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814522
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəʁən/}}
* {{audio|de|De-schemenhafteren.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|schemenhaft}}
6j0sc0qvusvp9ki9md1rcjz3fojnlkx
schemenhafterem
0
3480224
9814523
2026-06-16T06:53:17Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəʁəm/}} * {{audio|de|De-schemenhafterem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814523
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəʁəm/}}
* {{audio|de|De-schemenhafterem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|schemenhaft}}
4nxnecsaja6c56yncjucd9e2r9k937m
schemenhaftere
0
3480225
9814524
2026-06-16T06:53:19Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəʁə/}} * {{audio|de|De-schemenhaftere.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814524
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəʁə/}}
* {{audio|de|De-schemenhaftere.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|schemenhaft}}
py3jut6aa5n8kjfq5tyw5iie7hyi33j
schemenhafteres
0
3480226
9814525
2026-06-16T06:53:20Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəʁəs/}} * {{audio|de|De-schemenhafteres.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814525
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəʁəs/}}
* {{audio|de|De-schemenhafteres.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|schemenhaft}}
1a3dgetq518zhkr49kjbkhynq1u2q5n
schemenhaftester
0
3480227
9814526
2026-06-16T06:53:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəstɐ/}} * {{audio|de|De-schemenhaftester.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814526
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəstɐ/}}
* {{audio|de|De-schemenhaftester.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|schemenhaft}}
0whkv5byxt7gwq1c5gbgl8k6epaj8w3
schemenhaftesten
0
3480228
9814527
2026-06-16T06:53:32Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəstn̩/}} * {{audio|de|De-schemenhaftesten.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級}} # {{superlative of|de|schemenhaft}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814527
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəstn̩/}}
* {{audio|de|De-schemenhaftesten.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|schemenhaft}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|schemenhaft}}
4k7vd8bha6wtfxk1vdrwfioe5emmofb
schemenhaftestem
0
3480229
9814528
2026-06-16T06:53:33Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəstəm/}} * {{audio|de|De-schemenhaftestem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814528
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəstəm/}}
* {{audio|de|De-schemenhaftestem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|schemenhaft}}
fa0tsucsn4cqo4b759lvscl4j32ohjs
schemenhafteste
0
3480230
9814529
2026-06-16T06:53:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəstə/}} * {{audio|de|De-schemenhafteste.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814529
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəstə/}}
* {{audio|de|De-schemenhafteste.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|schemenhaft}}
g5941fngdcu8z5h7ee0xqf48glsss1z
schemenhaftestes
0
3480231
9814530
2026-06-16T06:53:36Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʃeːmənhaftəstəs/}} * {{audio|de|De-schemenhaftestes.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|schemenhaft}}」的新頁面
9814530
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʃeːmənhaftəstəs/}}
* {{audio|de|De-schemenhaftestes.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|schemenhaft}}
g0r49y80227op5ya8yvwoeznpvbmvvz
unmissverständlicher
0
3480232
9814532
2026-06-16T06:56:07Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçɐ/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçɐ/}} * {{audio|de|De-unmissverständlicher.ogg|a=柏林}} * {{audio|de|De-unmissverständlicher2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級}} # {{comparative of|de|unmissverständlich}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814532
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçɐ/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçɐ/}}
* {{audio|de|De-unmissverständlicher.ogg|a=柏林}}
* {{audio|de|De-unmissverständlicher2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級}}
# {{comparative of|de|unmissverständlich}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|unmissverständlich}}
8qg0ncz6vtqcvgb3xckfayemijbyy3q
unmissverständlichen
0
3480233
9814533
2026-06-16T06:56:29Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçn̩/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçn̩/}} * {{audio|de|De-unmissverständlichen.ogg|a=柏林}} * {{audio|de|De-unmissverständlichen2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814533
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçn̩/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçn̩/}}
* {{audio|de|De-unmissverständlichen.ogg|a=柏林}}
* {{audio|de|De-unmissverständlichen2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|unmissverständlich}}
m2ydx98di2ehrwa8nmpc0u5y21779xm
unmissverständlichem
0
3480234
9814534
2026-06-16T06:56:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçm̩/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçm̩/}} * {{audio|de|De-unmissverständlichem.ogg|a=柏林}} * {{audio|de|De-unmissverständlichem2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814534
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçm̩/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçm̩/}}
* {{audio|de|De-unmissverständlichem.ogg|a=柏林}}
* {{audio|de|De-unmissverständlichem2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|unmissverständlich}}
j3dahcbiw99oiit1guke24dtjvtw40n
unmissverständliche
0
3480235
9814535
2026-06-16T06:56:32Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçə/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçə/}} * {{audio|de|De-unmissverständliche.ogg|a=柏林}} * {{audio|de|De-unmissverständliche2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814535
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçə/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçə/}}
* {{audio|de|De-unmissverständliche.ogg|a=柏林}}
* {{audio|de|De-unmissverständliche2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|unmissverständlich}}
a1h2gtczmblhnamj6j928yxbih7hl3e
unmissverständliches
0
3480236
9814536
2026-06-16T06:56:35Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəs/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəs/}} * {{audio|de|De-unmissverständliches.ogg|a=柏林}} * {{audio|de|De-unmissverständliches2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814536
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəs/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəs/}}
* {{audio|de|De-unmissverständliches.ogg|a=柏林}}
* {{audio|de|De-unmissverständliches2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|unmissverständlich}}
11qvte0tfn0zrxc7ovxqlws4rfkkm9p
unmissverständlicherer
0
3480237
9814537
2026-06-16T06:56:50Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəʁɐ/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəʁɐ/}} * {{audio|de|De-unmissverständlicherer.ogg|a=柏林}} * {{audio|de|De-unmissverständlicherer2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814537
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəʁɐ/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəʁɐ/}}
* {{audio|de|De-unmissverständlicherer.ogg|a=柏林}}
* {{audio|de|De-unmissverständlicherer2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|unmissverständlich}}
4854msybnu02drt8v63xuc0l1q29t0u
unmissverständlicherem
0
3480238
9814538
2026-06-16T06:56:53Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəʁəm/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəʁəm/}} * {{audio|de|De-unmissverständlicherem.ogg|a=柏林}} * {{audio|de|De-unmissverständlicherem2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814538
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəʁəm/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəʁəm/}}
* {{audio|de|De-unmissverständlicherem.ogg|a=柏林}}
* {{audio|de|De-unmissverständlicherem2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|unmissverständlich}}
nal2en7nd14eysi9lm5sv05o1htupu0
unmissverständlicheren
0
3480239
9814539
2026-06-16T06:56:56Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəʁən/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəʁən/}} * {{audio|de|De-unmissverständlicheren.ogg|a=柏林}} * {{audio|de|De-unmissverständlicheren2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814539
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəʁən/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəʁən/}}
* {{audio|de|De-unmissverständlicheren.ogg|a=柏林}}
* {{audio|de|De-unmissverständlicheren2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|unmissverständlich}}
h18haf85j04p3u9isq5z1x9kan8omti
unmissverständlichere
0
3480240
9814540
2026-06-16T06:56:59Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəʁə/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəʁə/}} * {{audio|de|De-unmissverständlichere.ogg|a=柏林}} * {{audio|de|De-unmissverständlichere2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814540
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəʁə/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəʁə/}}
* {{audio|de|De-unmissverständlichere.ogg|a=柏林}}
* {{audio|de|De-unmissverständlichere2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|unmissverständlich}}
k0eqvz9e8vwq37b9e0mr7j4dr4rlmbt
unmissverständlicheres
0
3480241
9814541
2026-06-16T06:57:02Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəʁəs/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəʁəs/}} * {{audio|de|De-unmissverständlicheres.ogg|a=柏林}} * {{audio|de|De-unmissverständlicheres2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814541
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçəʁəs/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçəʁəs/}}
* {{audio|de|De-unmissverständlicheres.ogg|a=柏林}}
* {{audio|de|De-unmissverständlicheres2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|unmissverständlich}}
nn3g1w5q4c929nra8gbet5u75dc1b4d
unmissverständlichster
0
3480242
9814542
2026-06-16T06:57:17Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçstɐ/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçstɐ/}} * {{audio|de|De-unmissverständlichster.ogg|a=柏林}} * {{audio|de|De-unmissverständlichster2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814542
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçstɐ/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçstɐ/}}
* {{audio|de|De-unmissverständlichster.ogg|a=柏林}}
* {{audio|de|De-unmissverständlichster2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|unmissverständlich}}
3m0bxq2uxl68esxrrgohl9ywuznn7zk
unmissverständlichsten
0
3480243
9814543
2026-06-16T06:57:23Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçstn̩/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçstn̩/}} * {{audio|de|De-unmissverständlichsten.ogg|a=柏林}} * {{audio|de|De-unmissverständlichsten2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級}} # {{superlative of|de|unmissverständlich}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814543
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçstn̩/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçstn̩/}}
* {{audio|de|De-unmissverständlichsten.ogg|a=柏林}}
* {{audio|de|De-unmissverständlichsten2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|unmissverständlich}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|unmissverständlich}}
97z4whgz4g5pzuoqvoubub2ktorm0u8
unmissverständlichstem
0
3480244
9814544
2026-06-16T06:57:27Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçstəm/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçstəm/}} * {{audio|de|De-unmissverständlichstem.ogg|a=柏林}} * {{audio|de|De-unmissverständlichstem2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814544
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçstəm/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçstəm/}}
* {{audio|de|De-unmissverständlichstem.ogg|a=柏林}}
* {{audio|de|De-unmissverständlichstem2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|unmissverständlich}}
i3lv4nahq2l8803in16jv1z1zp02qci
unmissverständlichste
0
3480245
9814545
2026-06-16T06:57:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçstə/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçstə/}} * {{audio|de|De-unmissverständlichste.ogg|a=柏林}} * {{audio|de|De-unmissverständlichste2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814545
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçstə/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçstə/}}
* {{audio|de|De-unmissverständlichste.ogg|a=柏林}}
* {{audio|de|De-unmissverständlichste2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|unmissverständlich}}
nv3ximtz7bhsdaz5ghhom2jf5umocro
unmissverständlichstes
0
3480246
9814546
2026-06-16T06:57:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçstəs/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçstəs/}} * {{audio|de|De-unmissverständlichstes.ogg|a=柏林}} * {{audio|de|De-unmissverständlichstes2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|unmissverständlich}}」的新頁面
9814546
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʊnmɪsfɛɐ̯ˌʃtɛntlɪçstəs/|/ʊnmɪsfɛɐ̯ˈʃtɛntlɪçstəs/}}
* {{audio|de|De-unmissverständlichstes.ogg|a=柏林}}
* {{audio|de|De-unmissverständlichstes2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|unmissverständlich}}
pdyoujqp5nvyn46w9gu4qce4bgv7w75
unmißverständlicher
0
3480247
9814548
2026-06-16T06:58:15Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814548
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級}}
# {{comparative of|de|unmißverständlich}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|unmißverständlich}}
5bn7kshecdgyuhga4pewdos691h647m
unmißverständlichen
0
3480248
9814549
2026-06-16T06:58:18Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814549
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|unmißverständlich}}
57avpro8l93z4g4ik8dmnhsx2l48gny
unmißverständliche
0
3480249
9814550
2026-06-16T06:58:22Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814550
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|unmißverständlich}}
57avpro8l93z4g4ik8dmnhsx2l48gny
unmißverständliches
0
3480250
9814551
2026-06-16T06:58:24Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814551
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|unmißverständlich}}
57avpro8l93z4g4ik8dmnhsx2l48gny
unmißverständlichem
0
3480251
9814552
2026-06-16T06:58:29Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814552
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|unmißverständlich}}
57avpro8l93z4g4ik8dmnhsx2l48gny
unmißverständlicherer
0
3480252
9814553
2026-06-16T06:58:45Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814553
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|unmißverständlich}}
bwx9lvrjlzbu3cpila0kg9b74tyv5w1
unmißverständlicheren
0
3480253
9814554
2026-06-16T06:58:49Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814554
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|unmißverständlich}}
bwx9lvrjlzbu3cpila0kg9b74tyv5w1
unmißverständlicherem
0
3480254
9814555
2026-06-16T06:58:53Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814555
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|unmißverständlich}}
bwx9lvrjlzbu3cpila0kg9b74tyv5w1
unmißverständlichere
0
3480255
9814556
2026-06-16T06:58:58Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814556
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|unmißverständlich}}
bwx9lvrjlzbu3cpila0kg9b74tyv5w1
unmißverständlicheres
0
3480256
9814557
2026-06-16T06:59:02Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814557
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|unmißverständlich}}
bwx9lvrjlzbu3cpila0kg9b74tyv5w1
unmißverständlichster
0
3480257
9814558
2026-06-16T06:59:47Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814558
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|unmißverständlich}}
a5q7j78xwdlcqgwy7liqsyivkdf17uo
unmißverständlichsten
0
3480258
9814559
2026-06-16T06:59:51Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814559
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|unmißverständlich}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|unmißverständlich}}
qjbrfpx11hx59af6srv99v0o6xh303n
unmißverständlichstem
0
3480259
9814560
2026-06-16T06:59:55Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814560
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|unmißverständlich}}
a5q7j78xwdlcqgwy7liqsyivkdf17uo
unmißverständlichste
0
3480260
9814561
2026-06-16T06:59:59Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814561
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|unmißverständlich}}
a5q7j78xwdlcqgwy7liqsyivkdf17uo
unmißverständlichstes
0
3480261
9814562
2026-06-16T07:00:02Z
Sayonzei
40728
增加德語「[[unmißverständlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814562
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|unmißverständlich}}
a5q7j78xwdlcqgwy7liqsyivkdf17uo
doppeldeutiger
0
3480262
9814564
2026-06-16T07:01:42Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡɐ/}} * {{audio|de|De-doppeldeutiger.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級}} # {{comparative of|de|doppeldeutig}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814564
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡɐ/}}
* {{audio|de|De-doppeldeutiger.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級}}
# {{comparative of|de|doppeldeutig}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|doppeldeutig}}
4dkwdh96i6m5xtevzwlv46hx1831q9b
doppeldeutigem
0
3480263
9814565
2026-06-16T07:01:42Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəm/}} * {{audio|de|De-doppeldeutigem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814565
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəm/}}
* {{audio|de|De-doppeldeutigem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|doppeldeutig}}
aqvsc6ovn52nhf7vtqbewxr21y5jgez
doppeldeutigen
0
3480264
9814566
2026-06-16T07:01:44Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡn̩/}} * {{audio|de|De-doppeldeutigen.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814566
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡn̩/}}
* {{audio|de|De-doppeldeutigen.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|doppeldeutig}}
dvcruqbyiy17g0n0ozvkrpnvdhg13le
doppeldeutiges
0
3480265
9814567
2026-06-16T07:01:46Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəs/}} * {{audio|de|De-doppeldeutiges.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814567
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəs/}}
* {{audio|de|De-doppeldeutiges.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|doppeldeutig}}
3fzc7j5qdchrk5r89owh9q6liuilehn
doppeldeutige
0
3480266
9814568
2026-06-16T07:01:46Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡə/}} * {{audio|de|De-doppeldeutige.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814568
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡə/}}
* {{audio|de|De-doppeldeutige.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|doppeldeutig}}
1h9lchgn97ot21rduyn1rgxiht4ot86
doppeldeutigerer
0
3480267
9814569
2026-06-16T07:02:00Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəʁɐ/}} * {{audio|de|De-doppeldeutigerer.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814569
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəʁɐ/}}
* {{audio|de|De-doppeldeutigerer.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|doppeldeutig}}
o87t6pqsxqru1oyjthtqhz1g9cx6qb7
doppeldeutigeren
0
3480268
9814570
2026-06-16T07:02:02Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəʁən/}} * {{audio|de|De-doppeldeutigeren.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814570
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəʁən/}}
* {{audio|de|De-doppeldeutigeren.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|doppeldeutig}}
23m8l3144545u13q6tfhi9odegs55hp
doppeldeutigerem
0
3480269
9814571
2026-06-16T07:02:03Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəʁəm/}} * {{audio|de|De-doppeldeutigerem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814571
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəʁəm/}}
* {{audio|de|De-doppeldeutigerem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|doppeldeutig}}
2c6f9wb3sc3fmlbs0w4mm29vp345f8t
doppeldeutigere
0
3480270
9814572
2026-06-16T07:02:05Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəʁə/}} * {{audio|de|De-doppeldeutigere.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814572
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəʁə/}}
* {{audio|de|De-doppeldeutigere.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|doppeldeutig}}
dhp5jwqdtsl8c7v07ioyza3evzeym4z
doppeldeutigeres
0
3480271
9814573
2026-06-16T07:02:07Z
Sayonzei
40728
創建德語「[[doppeldeutig]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814573
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪɡəʁəs/}}
* {{audio|de|De-doppeldeutigeres.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|doppeldeutig}}
hj2e3mnvxlkv90vdydsdq7j3rab2jqa
doppeldeutigster
0
3480272
9814574
2026-06-16T07:02:19Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪçstɐ/|/ˈdɔpl̩ˌdɔɪ̯tɪkstɐ/}} * {{audio|de|De-doppeldeutigster.ogg|a=柏林}} * {{audio|de|De-doppeldeutigster2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814574
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪçstɐ/|/ˈdɔpl̩ˌdɔɪ̯tɪkstɐ/}}
* {{audio|de|De-doppeldeutigster.ogg|a=柏林}}
* {{audio|de|De-doppeldeutigster2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|doppeldeutig}}
eur6ij6ykpeyvofe910n8irrysd37p1
doppeldeutigstem
0
3480273
9814575
2026-06-16T07:02:20Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪçstəm/|/ˈdɔpl̩ˌdɔɪ̯tɪkstəm/}} * {{audio|de|De-doppeldeutigstem.ogg|a=柏林}} * {{audio|de|De-doppeldeutigstem2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814575
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪçstəm/|/ˈdɔpl̩ˌdɔɪ̯tɪkstəm/}}
* {{audio|de|De-doppeldeutigstem.ogg|a=柏林}}
* {{audio|de|De-doppeldeutigstem2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|doppeldeutig}}
huu9vpbquarx3s2boog8txqjmk6o016
doppeldeutigsten
0
3480274
9814576
2026-06-16T07:02:22Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪçstn̩/|/ˈdɔpl̩ˌdɔɪ̯tɪkstn̩/}} * {{audio|de|De-doppeldeutigsten.ogg|a=柏林}} * {{audio|de|De-doppeldeutigsten2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級}} # {{superlative of|de|doppeldeutig}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814576
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪçstn̩/|/ˈdɔpl̩ˌdɔɪ̯tɪkstn̩/}}
* {{audio|de|De-doppeldeutigsten.ogg|a=柏林}}
* {{audio|de|De-doppeldeutigsten2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|doppeldeutig}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|doppeldeutig}}
awsd9lhigblz8l2ymrfdtg69sfrdz6l
doppeldeutigstes
0
3480275
9814577
2026-06-16T07:02:23Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪçstəs/|/ˈdɔpl̩ˌdɔɪ̯tɪkstəs/}} * {{audio|de|De-doppeldeutigstes.ogg|a=柏林}} * {{audio|de|De-doppeldeutigstes2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814577
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪçstəs/|/ˈdɔpl̩ˌdɔɪ̯tɪkstəs/}}
* {{audio|de|De-doppeldeutigstes.ogg|a=柏林}}
* {{audio|de|De-doppeldeutigstes2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|doppeldeutig}}
de9u61o1kn9isr3w9w4yoz0f1wz8q63
doppeldeutigste
0
3480276
9814578
2026-06-16T07:02:25Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪçstə/|/ˈdɔpl̩ˌdɔɪ̯tɪkstə/}} * {{audio|de|De-doppeldeutigste.ogg|a=柏林}} * {{audio|de|De-doppeldeutigste2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|doppeldeutig}}」的新頁面
9814578
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈdɔpl̩ˌdɔɪ̯tɪçstə/|/ˈdɔpl̩ˌdɔɪ̯tɪkstə/}}
* {{audio|de|De-doppeldeutigste.ogg|a=柏林}}
* {{audio|de|De-doppeldeutigste2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|doppeldeutig}}
4f38a2ueg9by1zavgwebfqoz0wjzbps
mehrdeutiger
0
3480277
9814580
2026-06-16T07:04:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪɡɐ/}} * {{audio|de|De-mehrdeutiger.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級}} # {{comparative of|de|mehrdeutig}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814580
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪɡɐ/}}
* {{audio|de|De-mehrdeutiger.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級}}
# {{comparative of|de|mehrdeutig}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|mehrdeutig}}
6owqu1m4ehuhyqqwnm3yj0t0fcr1ljt
mehrdeutigen
0
3480278
9814581
2026-06-16T07:04:35Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪɡn̩/}} * {{audio|de|De-mehrdeutigen.ogg|a=柏林}} * {{audio|de|De-mehrdeutigen2.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814581
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪɡn̩/}}
* {{audio|de|De-mehrdeutigen.ogg|a=柏林}}
* {{audio|de|De-mehrdeutigen2.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|mehrdeutig}}
a9jww53kfiv4w9ax2ixzgg3xal88mct
mehrdeutigem
0
3480279
9814582
2026-06-16T07:04:36Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪɡəm/}} * {{audio|de|De-mehrdeutigem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814582
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪɡəm/}}
* {{audio|de|De-mehrdeutigem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|mehrdeutig}}
q8w453n6ffd4ekquhftsmr1wvqq4dh8
mehrdeutiges
0
3480280
9814583
2026-06-16T07:04:38Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪɡəs/}} * {{audio|de|De-mehrdeutiges.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814583
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪɡəs/}}
* {{audio|de|De-mehrdeutiges.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|mehrdeutig}}
gr3dhipdfgmvuffev92d20d5zrlwapc
mehrdeutige
0
3480281
9814584
2026-06-16T07:04:39Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪɡə/}} * {{audio|de|De-mehrdeutige.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814584
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈmeːɐ̯ˌdɔɪ̯tɪɡə/}}
* {{audio|de|De-mehrdeutige.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|mehrdeutig}}
blxl7zlh2qgbd41cq4kippupwzsqxtl
mehrdeutigerer
0
3480282
9814585
2026-06-16T07:04:49Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814585
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|mehrdeutig}}
9c250jlgcsu71a85ym4yiy1p7mwqhbf
mehrdeutigerem
0
3480283
9814586
2026-06-16T07:04:51Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814586
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|mehrdeutig}}
9c250jlgcsu71a85ym4yiy1p7mwqhbf
mehrdeutigeren
0
3480284
9814587
2026-06-16T07:04:52Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814587
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|mehrdeutig}}
9c250jlgcsu71a85ym4yiy1p7mwqhbf
mehrdeutigeres
0
3480285
9814588
2026-06-16T07:04:54Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814588
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|mehrdeutig}}
9c250jlgcsu71a85ym4yiy1p7mwqhbf
mehrdeutigere
0
3480286
9814589
2026-06-16T07:04:55Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814589
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|mehrdeutig}}
9c250jlgcsu71a85ym4yiy1p7mwqhbf
mehrdeutigster
0
3480287
9814590
2026-06-16T07:05:05Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814590
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|mehrdeutig}}
a68qmp8kv6mv7nv4oemy25vctj4h3zb
mehrdeutigsten
0
3480288
9814591
2026-06-16T07:05:08Z
Sayonzei
40728
創建德語「[[mehrdeutig]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814591
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|mehrdeutig}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|mehrdeutig}}
sw0lwx6wfbyiati5b230magwzo3h8g6
mehrdeutigstem
0
3480289
9814592
2026-06-16T07:05:10Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814592
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|mehrdeutig}}
a68qmp8kv6mv7nv4oemy25vctj4h3zb
mehrdeutigste
0
3480290
9814593
2026-06-16T07:05:10Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814593
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|mehrdeutig}}
a68qmp8kv6mv7nv4oemy25vctj4h3zb
mehrdeutigstes
0
3480291
9814594
2026-06-16T07:05:12Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|mehrdeutig}}」的新頁面
9814594
wikitext
text/x-wiki
==德語==
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|mehrdeutig}}
a68qmp8kv6mv7nv4oemy25vctj4h3zb
widersprüchlicher
0
3480292
9814596
2026-06-16T07:06:07Z
Sayonzei
40728
創建德語「[[widersprüchlich]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9814596
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçɐ/}}
* {{audio|de|De-widersprüchlicher.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級}}
# {{comparative of|de|widersprüchlich}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|widersprüchlich}}
bomxzujutynbph0y1by9qgus0rtqugg
widersprüchlichen
0
3480293
9814597
2026-06-16T07:06:08Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçn̩/}} * {{audio|de|De-widersprüchlichen.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814597
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçn̩/}}
* {{audio|de|De-widersprüchlichen.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|widersprüchlich}}
5z7nnayg1nh6qpkfdx03k0r1vzgv7vu
widersprüchlichem
0
3480294
9814598
2026-06-16T07:06:10Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçm̩/}} * {{audio|de|De-widersprüchlichem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814598
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçm̩/}}
* {{audio|de|De-widersprüchlichem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|widersprüchlich}}
ndoi7gvmuh06wim1jt4t7gd11x17xdy
widersprüchliche
0
3480295
9814599
2026-06-16T07:06:12Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçə/}} * {{audio|de|De-widersprüchliche.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814599
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçə/}}
* {{audio|de|De-widersprüchliche.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|widersprüchlich}}
qwptqaj2h9wj013ieua42j9e4g3ep9y
widersprüchliches
0
3480296
9814600
2026-06-16T07:06:14Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəs/}} * {{audio|de|De-widersprüchliches.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814600
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəs/}}
* {{audio|de|De-widersprüchliches.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|widersprüchlich}}
nr3i9qu4a7fpwoik8iqu4604evyn50u
widersprüchlicherer
0
3480297
9814601
2026-06-16T07:06:28Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəʁɐ/}} * {{audio|de|De-widersprüchlicherer.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814601
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəʁɐ/}}
* {{audio|de|De-widersprüchlicherer.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|widersprüchlich}}
lc8votazsz40p3y0qhvh6z93cdj958f
widersprüchlicheren
0
3480298
9814602
2026-06-16T07:06:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəʁən/}} * {{audio|de|De-widersprüchlicheren.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814602
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəʁən/}}
* {{audio|de|De-widersprüchlicheren.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|widersprüchlich}}
0ol626y7h269yg1sguxc77l2s79yaog
widersprüchlicherem
0
3480299
9814603
2026-06-16T07:06:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəʁəm/}} * {{audio|de|De-widersprüchlicherem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814603
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəʁəm/}}
* {{audio|de|De-widersprüchlicherem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|widersprüchlich}}
g69xxz5vka00st4qbxw2at38pc4qmvk
widersprüchlichere
0
3480300
9814604
2026-06-16T07:06:36Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəʁə/}} * {{audio|de|De-widersprüchlichere.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814604
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəʁə/}}
* {{audio|de|De-widersprüchlichere.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|widersprüchlich}}
bm033d9fzrqhb893ae8ifavwhuvhe72
widersprüchlicheres
0
3480301
9814605
2026-06-16T07:06:39Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəʁəs/}} * {{audio|de|De-widersprüchlicheres.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞比較級變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814605
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçəʁəs/}}
* {{audio|de|De-widersprüchlicheres.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|widersprüchlich}}
4qfmxs9lp132ue55ul5fo2xenwnrwyl
widersprüchlichster
0
3480302
9814606
2026-06-16T07:06:51Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçstɐ/}} * {{audio|de|De-widersprüchlichster.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814606
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçstɐ/}}
* {{audio|de|De-widersprüchlichster.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|widersprüchlich}}
9z8ydd9uyev7t5meazylm42lp0587wz
widersprüchlichsten
0
3480303
9814607
2026-06-16T07:06:52Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçstn̩/}} * {{audio|de|De-widersprüchlichsten.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級}} # {{superlative of|de|widersprüchlich}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814607
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçstn̩/}}
* {{audio|de|De-widersprüchlichsten.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|widersprüchlich}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|widersprüchlich}}
2cqt2fuh6s6tygxnsjb0zwxd5uxf339
widersprüchlichstem
0
3480304
9814608
2026-06-16T07:06:54Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçstəm/}} * {{audio|de|De-widersprüchlichstem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814608
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçstəm/}}
* {{audio|de|De-widersprüchlichstem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|widersprüchlich}}
b5q4e502nj5ydue62r54y6qura4b9u3
widersprüchlichste
0
3480305
9814609
2026-06-16T07:06:55Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçstə/}} * {{audio|de|De-widersprüchlichste.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814609
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçstə/}}
* {{audio|de|De-widersprüchlichste.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|widersprüchlich}}
bn5lyc7av4qy3he43xbg19egctv6pwr
widersprüchlichstes
0
3480306
9814610
2026-06-16T07:06:56Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçstəs/}} * {{audio|de|De-widersprüchlichstes.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞最高級變格形}} # {{de-adj form of|widersprüchlich}}」的新頁面
9814610
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈviːdɐˌʃpʁʏçlɪçstəs/}}
* {{audio|de|De-widersprüchlichstes.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|widersprüchlich}}
6fxz6q8hvldzmh635v9toj7gg7mbzm4
montagneuse
0
3480307
9814612
2026-06-16T07:12:56Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===發音=== * {{audio|fr|LL-Q150 (fra)-Lyokoï-montagneuse.wav|a=里昂}} ===形容詞=== {{head|fr|形容詞變格形}} # {{feminine singular of|fr|montagneux}}」的新頁面
9814612
wikitext
text/x-wiki
==法語==
===發音===
* {{audio|fr|LL-Q150 (fra)-Lyokoï-montagneuse.wav|a=里昂}}
===形容詞===
{{head|fr|形容詞變格形}}
# {{feminine singular of|fr|montagneux}}
84ky1h3d8328f2x8snmm66q70itp46p
montagneuses
0
3480308
9814613
2026-06-16T07:12:57Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===發音=== * {{fr-IPA}} * {{homophones|fr|montagneuse}} ===形容詞=== {{head|fr|形容詞變格形}} # {{feminine plural of|fr|montagneux}}」的新頁面
9814613
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA}}
* {{homophones|fr|montagneuse}}
===形容詞===
{{head|fr|形容詞變格形}}
# {{feminine plural of|fr|montagneux}}
7jugylebcg9x5urz2j14msj6w2kotr2
befriste
0
3480309
9814617
2026-06-16T07:20:22Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstə/}} * {{audio|de|De-befriste.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|befristen||1|s|pres|;|1//3|s|sub|I|;|s|imp}}」的新頁面
9814617
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstə/}}
* {{audio|de|De-befriste.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|befristen||1|s|pres|;|1//3|s|sub|I|;|s|imp}}
315c9fqxabp8fd9qj42fkcu8jfo0lpf
befristest
0
3480310
9814618
2026-06-16T07:20:41Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstəst/}} * {{audio|de|De-befristest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|befristen||2|s|pres|;|2|s|sub|I}}」的新頁面
9814618
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstəst/}}
* {{audio|de|De-befristest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|befristen||2|s|pres|;|2|s|sub|I}}
i82aegp2se69gvccwvdpw9b986j442l
befristeter
0
3480311
9814620
2026-06-16T07:21:48Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstətɐ/}} * {{audio|de|De-befristeter.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|befristet}}」的新頁面
9814620
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstətɐ/}}
* {{audio|de|De-befristeter.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|befristet}}
afenmcbhg0wq5gyxxis0psuj039bokg
befristetem
0
3480312
9814621
2026-06-16T07:21:48Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstətəm/}} * {{audio|de|De-befristetem.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|befristet}}」的新頁面
9814621
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstətəm/}}
* {{audio|de|De-befristetem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|befristet}}
hit3ryh693648ke3729bfuxktrmnymj
befristetes
0
3480313
9814622
2026-06-16T07:21:50Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstətəs/}} * {{audio|de|De-befristetes.ogg|a=柏林}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|befristet}}」的新頁面
9814622
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstətəs/}}
* {{audio|de|De-befristetes.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|befristet}}
ci4p9q1m9c9vrluhch0o9g1r4o8bak9
befristete
0
3480314
9814623
2026-06-16T07:22:22Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstətə/}} * {{audio|de|De-befristete.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|befristen||1//3|s|pret|;|1//3|s|sub|II}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|befristet}}」的新頁面
9814623
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstətə/}}
* {{audio|de|De-befristete.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|befristen||1//3|s|pret|;|1//3|s|sub|II}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|befristet}}
km4a5mqbi81rzmkdjns5vxdx1hm7j9j
befristetest
0
3480315
9814624
2026-06-16T07:22:23Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstətəst/}} * {{audio|de|De-befristetest.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|befristen||2|s|pret|;|2|s|sub|II}}」的新頁面
9814624
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstətəst/}}
* {{audio|de|De-befristetest.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|befristen||2|s|pret|;|2|s|sub|II}}
mf02xt6iu6nxlp9ojlxubd1q0f5z44k
befristetet
0
3480316
9814625
2026-06-16T07:22:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstətət/}} * {{audio|de|De-befristetet.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|befristen||2|p|pret|;|2|p|sub|II}}」的新頁面
9814625
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstətət/}}
* {{audio|de|De-befristetet.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|befristen||2|p|pret|;|2|p|sub|II}}
e8rogdyw7k87lwf2o5t0dj4j4qtgu5p
befristeten
0
3480317
9814626
2026-06-16T07:22:43Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstətn̩/}} * {{audio|de|De-befristeten.ogg|a=柏林}} ===動詞=== {{head|de|動詞變位形式}} # {{infl of|de|befristen||1//3|p|pret|;|1//3|p|sub|II}} ===形容詞=== {{head|de|形容詞變格形}} # {{de-adj form of|befristet}}」的新頁面
9814626
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstətn̩/}}
* {{audio|de|De-befristeten.ogg|a=柏林}}
===動詞===
{{head|de|動詞變位形式}}
# {{infl of|de|befristen||1//3|p|pret|;|1//3|p|sub|II}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|befristet}}
jtf10j9bvxsdzkob6uvx64mv1ok3uh0
befristend
0
3480318
9814627
2026-06-16T07:23:00Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstn̩t/}} * {{audio|de|De-befristend.ogg|a=柏林}} ===分詞=== {{head|de|現在分詞}} # {{infl of|de|befristen||pres|part}} ====變格==== {{de-adecl}}」的新頁面
9814627
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstn̩t/}}
* {{audio|de|De-befristend.ogg|a=柏林}}
===分詞===
{{head|de|現在分詞}}
# {{infl of|de|befristen||pres|part}}
====變格====
{{de-adecl}}
qvnhi6fhi5soarhv47rt8f63okd7lwi
befristender
0
3480319
9814628
2026-06-16T07:23:13Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstn̩dɐ/}} * {{audio|de|De-befristender.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|befristend}}」的新頁面
9814628
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstn̩dɐ/}}
* {{audio|de|De-befristender.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|befristend}}
n7byzoxea1mwpkszffpa92t7mabjwzt
befristendem
0
3480320
9814629
2026-06-16T07:23:14Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstn̩dəm/}} * {{audio|de|De-befristendem.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|befristend}}」的新頁面
9814629
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstn̩dəm/}}
* {{audio|de|De-befristendem.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|befristend}}
ew1knm32p11opek9mdmf744vp78ocmw
befristenden
0
3480321
9814630
2026-06-16T07:23:16Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstn̩dən/}} * {{audio|de|De-befristenden.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|befristend}}」的新頁面
9814630
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstn̩dən/}}
* {{audio|de|De-befristenden.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|befristend}}
1zvuy75miteb0enl72jgdet67vg9job
befristende
0
3480322
9814631
2026-06-16T07:23:21Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstn̩də/}} * {{audio|de|De-befristende.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|befristend}}」的新頁面
9814631
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstn̩də/}}
* {{audio|de|De-befristende.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|befristend}}
5a8xied5onrip8zgvmptn227wkfov2z
befristendes
0
3480323
9814632
2026-06-16T07:23:23Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==德語== ===發音=== * {{IPA|de|/bəˈfʁɪstn̩dəs/}} * {{audio|de|De-befristendes.ogg|a=柏林}} ===分詞=== {{head|de|分詞變格形}} # {{de-adj form of|befristend}}」的新頁面
9814632
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/bəˈfʁɪstn̩dəs/}}
* {{audio|de|De-befristendes.ogg|a=柏林}}
===分詞===
{{head|de|分詞變格形}}
# {{de-adj form of|befristend}}
fyjpvr7ptm10f3biqu1p2nqzlo8wims
Template:RQ:Shakespeare All's Well
10
3480324
9814636
2026-06-16T08:25:27Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_quote_template |en |author = w:William Shakespeare |chapter = [[w:All's Well That Ends Well|All’s Well, that Ends Well]] |title = Mr. William Shakespeares Comedies, Histories, & Tragedies{{nb...|Published According to the True Originall Copies.}} |series = w:First Folio |location = London |publisher = {{...|Printed by}} [[w:William Jaggard|Isaac Iaggard]], and w:Edward…」的新頁面
9814636
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = w:William Shakespeare
|chapter = [[w:All's Well That Ends Well|All’s Well, that Ends Well]]
|title = Mr. William Shakespeares Comedies, Histories, & Tragedies{{nb...|Published According to the True Originall Copies.}}
|series = w:First Folio
|location = London
|publisher = {{...|Printed by}} [[w:William Jaggard|Isaac Iaggard]], and [[w:Edward Blount|Ed[ward] Blount]]
|year = c. '''1604–1605''' (date written)
|year_published = 1623
|section = {{#if:{{{act|}}}{{{1|}}}
| [Act {{uc:{{#if:{{num|{{{act|}}}{{{1|}}}}}|{{A2R|{{{act|{{{1|}}}}}}}}|{{{act|{{{1|}}}}}}}}}}、{{#if:{{{scene|}}}{{{2|}}}
| scene {{lc:{{#if:{{num|{{{scene|}}}{{{2|}}}}}|{{A2R|{{{scene|{{{2|}}}}}}}}|{{{scene|{{{2|}}}}}}}}}}]
| {{maintenance line|please specify the scene number in lowercase Roman numerals}}]
}}
| {{maintenance line|please specify the act number in uppercase Roman numerals{{#if:{{{scene|}}}{{{2|}}}||, and the scene number in lowercase Roman numerals}}}}
}}
|pageparam = 3
|pageurl = https://archive.org/details/mrvvilliamshakes00shak/page/{{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<235
| n{{#expr:{{{page|{{{pageref|{{{3|}}}}}}}}}+27}}
| {{{page|{{{pageref|{{{3|}}}}}}}}}
}}/mode/1up
|column = {{{column|{{{4|}}}}}}
|oclc = 606515358
|textparam = 5
|translation = {{{t|{{{translation|{{{6|}}}}}}}}}
|propagateparams = columns,line,lines
|allowparams = act,1,scene,2,pageref,column,4,t,translation,6
}}<noinclude>{{documentation}}{{quotecat|en}}</noinclude>
8m5qvdi8uu80ns83i1a03dna550fprh
打碟
0
3480325
9814638
2026-06-16T09:03:41Z
Tony85poon
62011
[[w:WP:AES|←]]建立內容為「==漢語== {{zh-forms}} {{wp|唱片騎師}} ===動詞=== [[播放]]音樂,而[[現場]]有[[聽眾]],及或可能有人[[跳舞]]。 ===相關詞語=== *[[音樂光碟]]」的新頁面
9814638
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{wp|唱片騎師}}
===動詞===
[[播放]]音樂,而[[現場]]有[[聽眾]],及或可能有人[[跳舞]]。
===相關詞語===
*[[音樂光碟]]
j97ug1v9cdgm20dcxgo6xm8mrp16nis
9814639
9814638
2026-06-16T09:06:29Z
Tony85poon
62011
/* 漢語 */ 發音
9814639
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{wp|唱片騎師}}
===發音===
{{zh-pron
|m=Dǎ dié
|cat=pron
}}
===動詞===
# [[播放]]音樂,而[[現場]]有[[聽眾]],及或可能有人[[跳舞]]。
===相關詞語===
*[[音樂光碟]]
39kejgtozoxx7e3kx6xddgsfvthrouq
9814641
9814639
2026-06-16T09:47:07Z
Sayonzei
40728
9814641
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=dǎdié
|cat=v
}}
===動詞===
{{zh-verb}}
# [[唱片騎師]]選擇並且播放事先錄好的[[音樂]],並在(多是舞廳、演唱會等場合的)現場[[混音]]
====相關詞====
* {{zh-l|音樂光碟}}
{{c|zh|音樂}}
fmsxxjj9kp8exihdfa4hahyxf4gzwhv
Shang
0
3480326
9814644
2026-06-16T10:05:53Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==英語== ===詞源=== {{bor+|en|cmn|商|tr=Shāng}}。 {{wp|en:+ dynasty}} ===發音=== * {{IPA|en|/ʃæŋ/}} ===專有名詞=== {{en-proper noun}} # {{lb|en|historical}} [[商朝]] #* {{quote-book |en |year=1969 |author=w:en:Rutherford John Gettens |title=The Freer Chinese Bronzes |url=https://archive.org/details/freerchinesebron00free/ |volume=II |location=[[Washington]], D.C. |publisher=w:en:Meriden Gravure Company |OCLC=311989762 |p…」的新頁面
9814644
wikitext
text/x-wiki
==英語==
===詞源===
{{bor+|en|cmn|商|tr=Shāng}}。
{{wp|en:+ dynasty}}
===發音===
* {{IPA|en|/ʃæŋ/}}
===專有名詞===
{{en-proper noun}}
# {{lb|en|historical}} [[商朝]]
#* {{quote-book
|en
|year=1969
|author=w:en:Rutherford John Gettens
|title=The Freer Chinese Bronzes
|url=https://archive.org/details/freerchinesebron00free/
|volume=II
|location=[[Washington]], D.C.
|publisher=w:en:Meriden Gravure Company
|OCLC=311989762
|page=28
|pageurl=https://archive.org/details/freerchinesebron00free/page/28/
|text=Wilma Fairbank strongly supports the piece mold theory but points out that the mastery of bronze technology by the '''Shang''' people was an outgrowth of their earlier mastery of ceramic technology.
|t=威尔玛·费尔班克强烈支持坯模理论,但她指出,'''商代'''人对青铜技术的掌握是他们早期对陶瓷技术的掌握的产物。}}
#* {{quote-book
|en
|url=https://archive.org/details/culturalfrontier0000wats/
|year=1971
|title=Cultural Frontiers in Ancient East Asia
|author={{w|lang=en|William Watson (sinologist)|William Watson}}
|publisher=w:Edinburgh University Press
|ISBN=0 85224 203 4
|page=[https://archive.org/details/culturalfrontier0000wats/page/81 81]
|passage=In the '''Shang''' and Chou periods our knowledge from archaeology of ordinary dwellings is thus far poor, but something can be said of the more pretentious edifices.
|t=我们对'''商'''周时期普通民居的考古发现了解甚少,但对于一些较为奢华的建筑,我们还是可以了解一些的。
}}
#* {{quote-book
|en
|year=2011
|author=Ralph D. Sawyer
|title=Ancient Chinese Warfare
|url=https://archive.org/details/isbn_9780465021451/
|publisher=w:en:Basic Books
|ISBN=978-0-465-02145-1
|LCCN=2010051391
|OCLC=657595552
|page=135
|pageurl=https://archive.org/details/isbn_9780465021451/page/135/
|text=Hsing-t'ai, Han-tan, and Shih-chia-chuang are thus among the numerous '''Shang''' sites marked by heavy upper Erh-li-kang cultural manifestations.
|t=因此,邢台、邯郸、石家庄等众多'''商代'''遗址都具有浓厚的二里岗文化特征。}}
===異序詞===
* {{anagrams|en|a=aghns|Ghans|gnash|hangs}}
{{C|en|中國|中國朝代|中國歷史}}
2w1ey6aqqe9mhxq1y2mwczjx0exl7ed
Template:RQ:De Quincey Works
10
3480327
9814646
2026-06-16T10:12:52Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_quote_template |en |author = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}} | {{#switch:{{{volume|}}}{{{1|}}} | XII = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}} | {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>38 and {{{page|}}}{{{pageref|}}}{{{3|}}}<71<!--King of Hayti: according to OED--> | F. Laun [pseudonym] | w:en:Thomas De Quincey }}…」的新頁面
9814646
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#switch:{{{volume|}}}{{{1|}}}
| XII = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>38 and {{{page|}}}{{{pageref|}}}{{{3|}}}<71<!--King of Hayti: according to OED-->
| F. Laun [pseudonym]
| w:en:Thomas De Quincey
}}
}}
| w:en:Thomas De Quincey
}}
| w:en:Thomas De Quincey
}}
|chapter = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#switch:{{{volume|}}}{{{1|}}}
| II = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<64
| Laxton{{#if:{{{chaptername|}}}{{{subchapter|}}}|. {{ucfirst:{{{chaptername|{{{subchapter|}}}}}}}}。}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<109
| The Priory
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<146
| Early Memorials of Grasmere
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<231
| w:en:Samuel Taylor Coleridge
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<319
| w:en:William Wordsworth
| [[w:en:William Wordsworth|William Wordsworth]] and [[w:en:Robert Southey|Robert Southey]]
}}
}}
}}
}}
}}
| III = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<99
| The Spanish Military Nun
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<167
| The Last Days of [[w:en:Immanuel Kant|Immanuel Kant]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<206
| System of the Heavens as Revealed by [[w:en:William Parsons, 3rd Earl of Rosse|Lord Rosse]]’s Telescopes
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<246
| [[w:en:Joan of Arc|Joan of Arc]]. In Reference to M. [[w:en:Jules Michelet|Michelet]]’s History of France.
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<287
| The Casuistry of Roman Meals
| Modern Superstition
}}
}}
}}
}}
}}
}}
| IV = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<111
| On Murder, Considered as One of the Fine Arts
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<176
| Revolt of the Tartars; or, Flight of the Kalmuck Khan and His People from the Russian Territories to the Frontiers of China
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<258
| Dialogues of Three Templars on Political Economy, Chiefly in Relation to the Principles of Mr [[w:en:David Ricardo|[David] Ricardo]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<287
| On War
| The English Mail-coach. Section the {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<320
| First.—The Glory of Motion
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<342
| Second.—The Vision of Sudden Death
| Third.—Dream-Fugue. Founded on the Preceding Theme of Sudden Death
}}
}}。
}}
}}
}}
}}{{#if:{{{subchapter|}}}|. {{ucfirst:{{{subchapter}}}}}。}}
| Explanatory Notices
}}
| V = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<193
| Confessions of an English Opium-Eater
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<276
| The Pleasures of Opium
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<283
| The Daughter of Lebanon
| Appendix
}}
}}
}}
| {{#ifexpr:{{R2A|{{{page|}}}{{{pageref|}}}{{{3|}}}}}<11
| Original Preface in the Year 1821
| Prefatory Notice
}}
}}
| VI = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<30
| [[w:en:Percy Bysshe Shelley|Percy Bysshe Shelley]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<194
| Whiggism in Its Relations to Literature
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<234
| [[w:en:Oliver Goldsmith|Oliver Goldsmith]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<269
| On [[w:en:William Wordsworth|Wordsworth]]’s Poetry
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<289
| [[w:en:John Keats|John Keats]]
| [[w:en:Homer|Homer]] and the Homeridæ
}}
}}
}}
}}
}}
| Preface
}}
| IX = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<54
| [[w:en:Alexander Pope|Alexander Pope]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<76
| Theory of Greek Tragedy
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<98
| Language
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<108
| French and English Manners
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<161
| [[w:en:Charles Lamb|Charles Lamb]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<212
| Philosophy of [[w:en:Herodotus|Herodotus]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<260
| [[w:en:Plato|Plato]]’s [[w:en:Republic (Plato)|Republic]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<284
| Sortilege and Astrology
| Notes on [[w:en:Walter Savage Landor|Walter Savage Landor]]
}}
}}
}}
}}
}}
}}
}}
}}
| Prefatory Notice
}}
| XI = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<21
| The Incognito; or, Count Fitz-Hum
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<79
| Rhetoric
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<99
| Life of [[w:en:John Milton|Milton]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<158
| The Revolution of Greece
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<293
| Style
| The Dice
}}
}}
}}
}}
}}
| Prefatory Memoranda
}}
| XII = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<39
| Ceylon
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<71
| The King of Hayti. 源自the German.
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<112
| [[w:en:Samuel Taylor Coleridge|Coleridge]] and Opium-eating
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<146
| Toilette of the Hebrew Lady. Exhibited in Six Scenes.
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<176
| National Temperance Movements
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<199
| [[w:en:John Milton|Milton]] ''versus'' [[w:en:Robert Southey|Southey]] and [[w:en:Walter Savage Landor|Landor]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<234
| The Fatal Marksman
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<280
| On Christianity as an Organ of Political Movement
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<313
| Notes on [[w:en:George Gilfillan|Gilfillan]]’s Literary Portraits. [[w:en:William Godwin|Godwin]]—[[w:en:John Foster (essayist)|Foster]]—[[w:en:William Hazlitt|Hazlitt]].
| Falsification of English History
}}
}}
}}
}}
}}
}}
}}
}}
}}{{#if:{{{chapter|}}}{{{2|}}}| Chapter {{uc:{{#if:{{num|{{{chapter|}}}{{{2|}}}}}|{{A2R|{{{chapter|{{{2|}}}}}}}}|{{{chapter|{{{2|}}}}}}}}}}。}}{{#if:{{{chaptername|}}}{{{subchapter|}}}| {{ucfirst:{{{chaptername|{{{subchapter|}}}}}}}}。}}
| Prefatory Note
}}
| XIV = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<8
| Note by the Publishers
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<95
| Letters to a Young Man whose Education has been Neglected{{#if:{{{letter|}}}|. Letter {{uc:{{#if:{{num|{{{letter}}}}}|{{A2R|{{{letter}}}}}|{{{letter}}}}}}}。}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<113
| Orthographic Mutineers. With a Special Reference to the Works of [[w:en:Walter Savage Landor|Walter Savage Landor]].
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<150
| [[w:en:Jean Paul|John Paul Frederick Richter]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<180
| Conversation
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<192
| Presence of Mind: A Fragment
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<199
| On the Knocking at the Gate in [[w:en:Macbeth|Macbeth]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<234
| The [[w:en:Antigone (Sophocles play)|Antigone]] of [[w:en:Sophocles|Sophocles]] as Represented on the Edinburgh Stage
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<288
| Traditions of the Rabbins
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<333
| Modern Greece
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
| {{{chapter|{{{2|}}}}}}
}}
}}
|translator = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#switch:{{{volume|}}}{{{1|}}}
| XII = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>38 and {{{page|}}}{{{pageref|}}}{{{3|}}}<71<!--King of Hayti-->
| w:en:Thomas De Quincey
}}
}}
}}
}}
|title = {{#if:{{{volume|}}}{{{1|}}}
| {{#switch:{{{volume|}}}{{{1|}}}
| I = Autobiographic Sketches
| II = Autobiographic Sketches: With Recollections of the Lakes
| III = Miscellanies: Chiefly Narrative
| IV = Miscellanies
| V = [[w:en:Confessions of an English Opium-Eater|Confessions of an English Opium-Eater.{{nb...|To which is Added The Daughter of Lebanon, Forming Part of “Suspiria de Profundis.” [...] Now First Carefully Revised by the Author, and Greatly Enlarged.}}]]
| VI = Sketches: Critical and Biographic
| VII = Studies on Secret Records, Personal and Historic; with Other Papers
| VIII = Essays Sceptical and Anti-sceptical on Problems Neglected or Mis-conceived
| IX = Leaders in Literature with a Notice of Traditional Errors Affecting Them
| X = Classic Records Reviewed or Deciphered
| XI = Critical Suggestions on Style and Rhetoric with German Tales and Other Narrative Papers
| XII|XIII = Speculations Literary and Philosophic: With German Tales and Other Narrative Papers
| XIV = Letters to a Young Man whose Education has been Neglected; and Other Papers
}}
| De Quincey’s Works
}}
|series = {{#if:{{{volume|}}}{{{1|}}}|De Quincey’s Works}}
|seriesvolume = {{#if:{{{volume|}}}{{{1|}}}
| {{#ifexpr:{{R2A|{{{volume|}}}{{{1|}}}}}<15
| {{{volume|{{{1|}}}}}}
| {{maintenance line|<nowiki>please specify |volume=I to XIV</nowiki>}}
}}
| {{maintenance line|<nowiki>please specify |volume=I to XIV</nowiki>}}
}}
|location = London
|publisher = [[w:en:James Hogg (publisher)|James Hogg & Sons]]
|year = {{#switch:{{{volume|}}}{{{1|}}}
| I = 1853
| II = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<64
| 1854<!--Laxton; Priory: needs review-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<146
| '''1839''' September<!--Grasmere-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<231
| '''1834''' September–November; '''1835''' January<!--Coleridge-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<319
| '''1839''' January, February, April<!--Wordsworth-->
| '''1839''' July<!--Wordsworth and Southey-->
}}
}}
}}
}}
| III = 1854
| IV = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>175 and {{{page|}}}{{{pageref|}}}{{{3|}}}<258<!--Three Templars-->
| '''1824''' April
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>286
| '''1849''' {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<320
| October<!--English Mail-coach, 1st sect-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<342
|December<!--English Mail-coach, 2nd and 3rd sects-->
}}
}}
| 1854
}}
}}
| V = 1856
| VI = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<30
| 1857<!--Shelley: needs review-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<194
| '''1831''' June<!--Whiggism-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<269
| 1857<!--Goldsmith; On Wordsworth's Poetry: needs review-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<289
| '''1846''' April<!--Keats-->
| '''1841''' October<!--Homer and the Homeridæ-->
}}
}}
}}
}}
| VII = 1857
| VIII = 1858
| IX = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<54
| 1858<!--Pope: needs review-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<76
| '''1840''' February<!--Theory of Greek Tragedy-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<284
| 1858<!--Language; French and English Manners; Lamb; Herodotus; Plato's Republic; Sortilege and Astrology: needs review-->
| '''1847''' February<!--Landor-->
}}
}}
}}
| 1858
}}
| X|XIII = 1859
| XI = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<21
| 1823<!--Incognito-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<79
| '''1828''' December<!--Rhetoric: originally from Blackwood's Edinburgh Magazine-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<99
| 1830–1831<!--Milton-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<158
| 1859<!--Revolution of Greece-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<293
| 1840<!--Style: originally from Blackwood's Magazine-->
| 1859<!--Dice-->
}}
}}
}}
}}
}}
| 59
}}
| XII = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<39
| '''1843''' November<!--Ceylon: 源自OED-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<71
| 1859<!--King of Hayti: needs review-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<112
| '''1845''' January<!--Coleridge and Opium-eating-->
| 1859
}}
}}
}}
| 1859
}}
| XIV = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>7 and {{{page|}}}{{{pageref|}}}{{{3|}}}<95
| 1823<!--Letters to a Young Man-->
| 1860
}}
| 1860
}}
| 1853–1860
}}
|year_published = {{#switch:{{{volume|}}}{{{1|}}}
| IV = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>175 and {{{page|}}}{{{pageref|}}}{{{3|}}}<258<!--Three Templars-->|1854}}
}}
| XI = 1859
| XIV = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>7 and {{{page|}}}{{{pageref|}}}{{{3|}}}<95
| 1860
}}
}}
}}
|section = {{#if:{{{section|}}}
| {{{section}}}
}}
|pageparam = 3
|pageurl = https://books.google.com/books?id={{#switch:{{{volume|}}}{{{1|}}}
| I = Z3oohx97zwQ
| II = McNeynQIl1Q
| III = uNtJiUIcN_s
| IV = K5zvbQmG5zc
| V = m3CZCr6WNpY
| VI = Ep66eMcoaM8
| VII = _UzyTIGNYMI
| VIII = RnanQlXDdAM
| IX = gZmwQCidJ7Q
| X = 51W1W04Rx8Y
| XI = OGYBtIEKo6E
| XII = bhgKpkv7XE0
| XIII = 8OLF-jwRSTY
| XIV = FDkStgupIJA
}}C&pg=P{{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| A{{{page|{{{pageref|{{{3|}}}}}}}}}
| R{{R2A|{{{page|{{{pageref|{{{3|}}}}}}}}}}}
}}
|oclc = 6497971
|textparam = 4
|allowparams = volume,1,chaptername,subchapter,chapter,2,letter,section,pageref
|propagateparams=t,translation
}}<noinclude>{{documentation}}</noinclude>
d00qow2e6djowft8476en8qpv1ejc9u
9814670
9814646
2026-06-16T10:42:54Z
TongcyDai
53191
9814670
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|en
|author = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#switch:{{{volume|}}}{{{1|}}}
| XII = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>38 and {{{page|}}}{{{pageref|}}}{{{3|}}}<71<!--King of Hayti: according to OED-->
| F. Laun [pseudonym]
| w:en:Thomas De Quincey
}}
}}
| w:en:Thomas De Quincey
}}
| w:en:Thomas De Quincey
}}
|chapter = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#switch:{{{volume|}}}{{{1|}}}
| II = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<64
| Laxton{{#if:{{{chaptername|}}}{{{subchapter|}}}|. {{ucfirst:{{{chaptername|{{{subchapter|}}}}}}}}。}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<109
| The Priory
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<146
| Early Memorials of Grasmere
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<231
| w:en:Samuel Taylor Coleridge
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<319
| w:en:William Wordsworth
| [[w:en:William Wordsworth|William Wordsworth]] and [[w:en:Robert Southey|Robert Southey]]
}}
}}
}}
}}
}}
| III = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<99
| The Spanish Military Nun
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<167
| The Last Days of [[w:en:Immanuel Kant|Immanuel Kant]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<206
| System of the Heavens as Revealed by [[w:en:William Parsons, 3rd Earl of Rosse|Lord Rosse]]’s Telescopes
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<246
| [[w:en:Joan of Arc|Joan of Arc]]. In Reference to M. [[w:en:Jules Michelet|Michelet]]’s History of France.
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<287
| The Casuistry of Roman Meals
| Modern Superstition
}}
}}
}}
}}
}}
}}
| IV = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<111
| On Murder, Considered as One of the Fine Arts
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<176
| Revolt of the Tartars; or, Flight of the Kalmuck Khan and His People from the Russian Territories to the Frontiers of China
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<258
| Dialogues of Three Templars on Political Economy, Chiefly in Relation to the Principles of Mr [[w:en:David Ricardo|[David] Ricardo]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<287
| On War
| The English Mail-coach. Section the {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<320
| First.—The Glory of Motion
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<342
| Second.—The Vision of Sudden Death
| Third.—Dream-Fugue. Founded on the Preceding Theme of Sudden Death
}}
}}。
}}
}}
}}
}}{{#if:{{{subchapter|}}}|. {{ucfirst:{{{subchapter}}}}}。}}
| Explanatory Notices
}}
| V = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<193
| Confessions of an English Opium-Eater
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<276
| The Pleasures of Opium
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<283
| The Daughter of Lebanon
| Appendix
}}
}}
}}
| {{#ifexpr:{{R2A|{{{page|}}}{{{pageref|}}}{{{3|}}}}}<11
| Original Preface in the Year 1821
| Prefatory Notice
}}
}}
| VI = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<30
| [[w:en:Percy Bysshe Shelley|Percy Bysshe Shelley]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<194
| Whiggism in Its Relations to Literature
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<234
| [[w:en:Oliver Goldsmith|Oliver Goldsmith]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<269
| On [[w:en:William Wordsworth|Wordsworth]]’s Poetry
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<289
| [[w:en:John Keats|John Keats]]
| [[w:en:Homer|Homer]] and the Homeridæ
}}
}}
}}
}}
}}
| Preface
}}
| IX = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<54
| [[w:en:Alexander Pope|Alexander Pope]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<76
| Theory of Greek Tragedy
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<98
| Language
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<108
| French and English Manners
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<161
| [[w:en:Charles Lamb|Charles Lamb]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<212
| Philosophy of [[w:en:Herodotus|Herodotus]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<260
| [[w:en:Plato|Plato]]’s [[w:en:Republic (Plato)|Republic]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<284
| Sortilege and Astrology
| Notes on [[w:en:Walter Savage Landor|Walter Savage Landor]]
}}
}}
}}
}}
}}
}}
}}
}}
| Prefatory Notice
}}
| XI = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<21
| The Incognito; or, Count Fitz-Hum
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<79
| Rhetoric
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<99
| Life of [[w:en:John Milton|Milton]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<158
| The Revolution of Greece
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<293
| Style
| The Dice
}}
}}
}}
}}
}}
| Prefatory Memoranda
}}
| XII = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<39
| Ceylon
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<71
| The King of Hayti. 源自the German.
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<112
| [[w:en:Samuel Taylor Coleridge|Coleridge]] and Opium-eating
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<146
| Toilette of the Hebrew Lady. Exhibited in Six Scenes.
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<176
| National Temperance Movements
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<199
| [[w:en:John Milton|Milton]] ''versus'' [[w:en:Robert Southey|Southey]] and [[w:en:Walter Savage Landor|Landor]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<234
| The Fatal Marksman
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<280
| On Christianity as an Organ of Political Movement
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<313
| Notes on [[w:en:George Gilfillan|Gilfillan]]’s Literary Portraits. [[w:en:William Godwin|Godwin]]—[[w:en:John Foster (essayist)|Foster]]—[[w:en:William Hazlitt|Hazlitt]].
| Falsification of English History
}}
}}
}}
}}
}}
}}
}}
}}
}}{{#if:{{{chapter|}}}{{{2|}}}| Chapter {{uc:{{#if:{{num|{{{chapter|}}}{{{2|}}}}}|{{A2R|{{{chapter|{{{2|}}}}}}}}|{{{chapter|{{{2|}}}}}}}}}}。}}{{#if:{{{chaptername|}}}{{{subchapter|}}}| {{ucfirst:{{{chaptername|{{{subchapter|}}}}}}}}。}}
| Prefatory Note
}}
| XIV = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<8
| Note by the Publishers
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<95
| Letters to a Young Man whose Education has been Neglected{{#if:{{{letter|}}}|. Letter {{uc:{{#if:{{num|{{{letter}}}}}|{{A2R|{{{letter}}}}}|{{{letter}}}}}}}。}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<113
| Orthographic Mutineers. With a Special Reference to the Works of [[w:en:Walter Savage Landor|Walter Savage Landor]].
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<150
| [[w:en:Jean Paul|John Paul Frederick Richter]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<180
| Conversation
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<192
| Presence of Mind: A Fragment
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<199
| On the Knocking at the Gate in [[w:en:Macbeth|Macbeth]]
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<234
| The [[w:en:Antigone (Sophocles play)|Antigone]] of [[w:en:Sophocles|Sophocles]] as Represented on the Edinburgh Stage
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<288
| Traditions of the Rabbins
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<333
| Modern Greece
}}
}}
}}
}}
}}
}}
}}
}}
}}
}}
| {{{chapter|{{{2|}}}}}}
}}
}}
|translator = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#switch:{{{volume|}}}{{{1|}}}
| XII = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>38 and {{{page|}}}{{{pageref|}}}{{{3|}}}<71<!--King of Hayti-->
| w:en:Thomas De Quincey
}}
}}
}}
}}
|title = {{#if:{{{volume|}}}{{{1|}}}
| {{#switch:{{{volume|}}}{{{1|}}}
| I = Autobiographic Sketches
| II = Autobiographic Sketches: With Recollections of the Lakes
| III = Miscellanies: Chiefly Narrative
| IV = Miscellanies
| V = [[w:en:Confessions of an English Opium-Eater|Confessions of an English Opium-Eater.{{nb...|To which is Added The Daughter of Lebanon, Forming Part of “Suspiria de Profundis.” [...] Now First Carefully Revised by the Author, and Greatly Enlarged.}}]]
| VI = Sketches: Critical and Biographic
| VII = Studies on Secret Records, Personal and Historic; with Other Papers
| VIII = Essays Sceptical and Anti-sceptical on Problems Neglected or Mis-conceived
| IX = Leaders in Literature with a Notice of Traditional Errors Affecting Them
| X = Classic Records Reviewed or Deciphered
| XI = Critical Suggestions on Style and Rhetoric with German Tales and Other Narrative Papers
| XII|XIII = Speculations Literary and Philosophic: With German Tales and Other Narrative Papers
| XIV = Letters to a Young Man whose Education has been Neglected; and Other Papers
}}
| De Quincey’s Works
}}
|series = {{#if:{{{volume|}}}{{{1|}}}|De Quincey’s Works}}
|seriesvolume = {{#if:{{{volume|}}}{{{1|}}}
| {{#ifexpr:{{R2A|{{{volume|}}}{{{1|}}}}}<15
| {{{volume|{{{1|}}}}}}
| {{maintenance line|<nowiki>please specify |volume=I to XIV</nowiki>}}
}}
| {{maintenance line|<nowiki>please specify |volume=I to XIV</nowiki>}}
}}
|location = London
|publisher = [[w:en:James Hogg (publisher)|James Hogg & Sons]]
|year = {{#switch:{{{volume|}}}{{{1|}}}
| I = 1853
| II = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<64
| 1854<!--Laxton; Priory: needs review-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<146
| '''1839''' September<!--Grasmere-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<231
| '''1834''' September–November; '''1835''' January<!--Coleridge-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<319
| '''1839''' January, February, April<!--Wordsworth-->
| '''1839''' July<!--Wordsworth and Southey-->
}}
}}
}}
}}
| III = 1854
| IV = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>175 and {{{page|}}}{{{pageref|}}}{{{3|}}}<258<!--Three Templars-->
| '''1824''' April
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>286
| '''1849''' {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<320
| October<!--English Mail-coach, 1st sect-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<342
|December<!--English Mail-coach, 2nd and 3rd sects-->
}}
}}
| 1854
}}
}}
| V = 1856
| VI = {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<30
| 1857<!--Shelley: needs review-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<194
| '''1831''' June<!--Whiggism-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<269
| 1857<!--Goldsmith; On Wordsworth's Poetry: needs review-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<289
| '''1846''' April<!--Keats-->
| '''1841''' October<!--Homer and the Homeridæ-->
}}
}}
}}
}}
| VII = 1857
| VIII = 1858
| IX = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<54
| 1858<!--Pope: needs review-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<76
| '''1840''' February<!--Theory of Greek Tragedy-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<284
| 1858<!--Language; French and English Manners; Lamb; Herodotus; Plato's Republic; Sortilege and Astrology: needs review-->
| '''1847''' February<!--Landor-->
}}
}}
}}
| 1858
}}
| X|XIII = 1859
| XI = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<21
| 1823<!--Incognito-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<79
| '''1828''' December<!--Rhetoric: originally from Blackwood's Edinburgh Magazine-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<99
| 1830–1831<!--Milton-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<158
| 1859<!--Revolution of Greece-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<293
| 1840<!--Style: originally from Blackwood's Magazine-->
| 1859<!--Dice-->
}}
}}
}}
}}
}}
| 59
}}
| XII = {{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<39
| '''1843''' November<!--Ceylon: 源自OED-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<71
| 1859<!--King of Hayti: needs review-->
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}<112
| '''1845''' January<!--Coleridge and Opium-eating-->
| 1859
}}
}}
}}
| 1859
}}
| XIV = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>7 and {{{page|}}}{{{pageref|}}}{{{3|}}}<95
| 1823<!--Letters to a Young Man-->
| 1860
}}
| 1860
}}
| 1853–1860
}}
|year_published = {{#switch:{{{volume|}}}{{{1|}}}
| IV = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>175 and {{{page|}}}{{{pageref|}}}{{{3|}}}<258<!--Three Templars-->|1854}}
}}
| XI = 1859
| XIV = {{#if:{{{page|}}}{{{pageref|}}}{{{3|}}}
| {{#ifexpr:{{{page|}}}{{{pageref|}}}{{{3|}}}>7 and {{{page|}}}{{{pageref|}}}{{{3|}}}<95
| 1860
}}
}}
}}
|section = {{#if:{{{section|}}}
| {{{section}}}
}}
|pageparam = 3
|pageurl = https://books.google.com/books?id={{#switch:{{{volume|}}}{{{1|}}}
| I = Z3oohx97zwQ
| II = McNeynQIl1Q
| III = uNtJiUIcN_s
| IV = K5zvbQmG5zc
| V = m3CZCr6WNpY
| VI = Ep66eMcoaM8
| VII = _UzyTIGNYMI
| VIII = RnanQlXDdAM
| IX = gZmwQCidJ7Q
| X = 51W1W04Rx8Y
| XI = OGYBtIEKo6E
| XII = bhgKpkv7XE0
| XIII = 8OLF-jwRSTY
| XIV = FDkStgupIJA
}}C&pg=P{{#if:{{num|{{{page|}}}{{{pageref|}}}{{{3|}}}}}
| A{{{page|{{{pageref|{{{3|}}}}}}}}}
| R{{R2A|{{{page|{{{pageref|{{{3|}}}}}}}}}}}
}}
|oclc = 6497971
|textparam = 4
|allowparams = volume,1,chaptername,subchapter,chapter,2,letter,section,pageref
|propagateparams=t,translation
}}<noinclude>{{documentation}}{{quotecat|en}}</noinclude>
tbq6xzcot92eo95ubgoln81kx3ahhh3
Category:Rhymes:愛沙尼亞語/osʲt
14
3480328
9814648
2026-06-16T10:14:00Z
TongcyBot
83009
養貓
9814648
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:愛沙尼亞語/osʲt/1音節
14
3480329
9814649
2026-06-16T10:14:09Z
TongcyBot
83009
養貓
9814649
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:荷蘭語/ɔst/1音節
14
3480330
9814650
2026-06-16T10:14:18Z
TongcyBot
83009
養貓
9814650
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:因特語 網際網路
14
3480331
9814651
2026-06-16T10:14:28Z
TongcyBot
83009
養貓
9814651
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:因特語 網路
14
3480332
9814652
2026-06-16T10:14:37Z
TongcyBot
83009
養貓
9814652
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:因特語 計算機
14
3480333
9814653
2026-06-16T10:14:45Z
TongcyBot
83009
養貓
9814653
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:愛沙尼亞語 建設
14
3480334
9814654
2026-06-16T10:14:57Z
TongcyBot
83009
養貓
9814654
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:愛沙尼亞語 郵政
14
3480335
9814655
2026-06-16T10:15:06Z
TongcyBot
83009
養貓
9814655
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有詞源文字的世界語詞條
14
3480336
9814656
2026-06-16T10:15:20Z
TongcyBot
83009
養貓
9814656
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:英語 紙張尺寸
14
3480337
9814657
2026-06-16T10:15:29Z
TongcyBot
83009
養貓
9814657
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:紙張尺寸
14
3480338
9814659
2026-06-16T10:15:38Z
TongcyBot
83009
養貓
9814659
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:辛布里語 郵政
14
3480339
9814660
2026-06-16T10:15:47Z
TongcyBot
83009
養貓
9814660
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
-aticum
0
3480340
9814662
2026-06-16T10:25:48Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==拉丁語== ===其他形式=== * {{alt|la|-āgium||中世紀法國與英格蘭;再次借自古法語 {{m|fro|-age}}}} ===詞源=== {{etymon|la|id=構成名詞|-āticus<id:構成形容詞>}} {{m|la|-āticus|pos=構成形容詞的後綴}} 中性形式的名詞化,其前身可能是古典拉丁語 {{m|la|viāticum}}。 ===後綴=== {{la-suffix-noun|-āticum<2>}} {{tlb|la|Late Latin|EML.}} # {{non-gloss|用於構成表示與詞根動詞…」的新頁面
9814662
wikitext
text/x-wiki
==拉丁語==
===其他形式===
* {{alt|la|-āgium||中世紀法國與英格蘭;再次借自古法語 {{m|fro|-age}}}}
===詞源===
{{etymon|la|id=構成名詞|-āticus<id:構成形容詞>}}
{{m|la|-āticus|pos=構成形容詞的後綴}} 中性形式的名詞化,其前身可能是古典拉丁語 {{m|la|viāticum}}。
===後綴===
{{la-suffix-noun|-āticum<2>}} {{tlb|la|Late Latin|EML.}}
# {{non-gloss|用於構成表示與詞根動詞或名詞相關的名詞}}
# {{non-gloss|用於構成表示由某動作導致之狀態的名詞}}
#: {{m|la|missus||被送出的}} → {{m|la|missāticum||訊息}}
====變格====
{{la-ndecl|-āticum<2>}}
====派生詞彙====
{{suffixsee|la}}
====派生語彙====
{{top4}}
* 巴爾幹羅曼語支:
** {{desc|rup|-atic}}
** {{desc|ro|-atic|-atec}}
* 意大利-羅曼語支:
** {{desc|co|-aticu}}
** {{desc|it|-atico}}
*** {{desc|lld|-atich|bor=1}}
*** {{desc|rgn|-àtic|bor=1}}
** {{desc|nap|-ateco}}
** {{desc|scn|-àticu}}
* 北意大利語支:
** 高盧-意大利語支:
*** {{desc|egl|-adeg|-adg|-âdg}}
*** {{desc|lij|-ægo|qq=早期的 {{m|lij|-aigo}}}}
*** {{desc|lmo|-àdeg|-àdig|-àdi}}
*** {{desc|pms|-aj}}
*** {{desc|rgn|-êdg|-êdgh}}
** {{desc|fur|-adi}}
** {{desc|rm|-adi}}
** {{desc|vec|-adego|-ego}}
* 高盧-羅曼語支:
** {{desc|frp|-âjo}}
**: Brionnais: {{desc|frp|-âdze|nolang=1}}
**: Fribourgeois: {{desc|frp|-âdzo|nolang=1}}
**: Jurassien: {{desc|frp|-aidge|nolang=1}}
** {{desctree|fro|-age}}
* 奧克-羅曼語支:
** {{desc|ca|-atge}}
** {{desc|oc-gas|-}} /-ˈadje/
** {{desctree|pro|-atge|qq=以下的借詞也可能來自古法語}}
*** {{desc|an|-ache|bor=1}}
*** {{desc|ast|-axe|bor=1}}
*** {{desc|it|-aggio|bor=1}}
*** {{desc|lld|-aje|bor=1}}
*** {{desc|lmo|-agg|-acc|bor=1}}
*** {{desc|nap|-aggio|bor=1}}
*** {{desc|pms|-age|-agi|bor=1}}
*** {{desc|roa-opt|-age|bor=1}}
**** {{desc|gl|-axe}}
**** {{desc|pt|-agem}}
*** {{desc|scn|-aggiu|-aju|bor=1}}
*** {{desc|osp|-age|-aje|-atge|bor=1}}
**** {{desc|es|-aje}}
*** {{desc|vec|-ajo|bor=1}}
* 西伊比利亞語支:
** {{desc|roa-oan|-azgo}}
** {{desc|roa-ole|-adgo|-algo}}
*** {{desc|ast|-algu}}
*** {{desc|roa-leo|-algu}}
** {{desc|roa-opt|-adego}}
*** {{desc|gl|-ádego|-ádigo}}
*** {{desc|pt|-ádego|-ádigo}}
** {{desc|osp|-adgo}}
*** {{desc|es|-azgo}}
* 島嶼羅曼語支:
** {{desc|sc|-adigu|-aticu}}
* 借詞:
** {{desc|fr|-atique|bor=1}}
** {{desc|pt|-ático|bor=1}}
** {{desc|es|-ático|bor=1}}
{{bottom}}
===參考資料===
* {{cite-book|year=1906|chapter=I nomi locali in ''-aticus'': nell' Emilia e nella Romagna|author=Tito Zanardelli|pages=1-48|title=Studi glottologici italiani|volume=3|editor=Giacomo de Gregorio|location=[[w:都靈|Torino]]|publisher=Ermanno Loescher|url=https://archive.org/details/studiglottologi00unkngoog}}。
* {{cite-journal|year=1973|title=The Latin suffix ''-aticu'' in early Old Spanish|author=David G. Patterson|pages=60-65|journal=Vox Romanica|volume=32|location=[[w:伯爾尼|Bern]]|publisher=A. Francke AG Verlag|doi=http://doi.org/10.5169/seals-25978}}。
egpv31izyz70fwv8n6l4uhkur55ugd4
Category:世界語 臀部
14
3480341
9814663
2026-06-16T10:26:09Z
TongcyBot
83009
養貓
9814663
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
-aticus
0
3480342
9814664
2026-06-16T10:34:15Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==拉丁語== ===詞源=== {{etymon|la|id=構成形容詞|:af|-ātus<id:形容詞>|-icus<id:形容詞後綴>}} 源自 {{suffix|la|-ātus|t1=……的,像……的|icus|pos2=派生後綴}},出現在一些原始情況中,後來被自由擴展。不要與在各種希臘語借詞中發現的後綴 {{m|la|-aticus}}(注意短音 /a/)混淆(參見 {{m|la|aenigmaticus}}、{{m|la|grammaticus}})。 ===發音=== * {{la-IPA|-āticus}} ==…」的新頁面
9814664
wikitext
text/x-wiki
==拉丁語==
===詞源===
{{etymon|la|id=構成形容詞|:af|-ātus<id:形容詞>|-icus<id:形容詞後綴>}}
源自 {{suffix|la|-ātus|t1=……的,像……的|icus|pos2=派生後綴}},出現在一些原始情況中,後來被自由擴展。不要與在各種希臘語借詞中發現的後綴 {{m|la|-aticus}}(注意短音 /a/)混淆(參見 {{m|la|aenigmaticus}}、{{m|la|grammaticus}})。
===發音===
* {{la-IPA|-āticus}}
===後綴===
{{la-suffix-adj|-āticus}}
# {{non-gloss|用於構成表示與詞根名詞或其相關動作有關係的形容詞}}
#: {{suffixusex|la|umbra|gloss1=影子,陰影|umbrāticus|gloss2=在陰影中發現的}}
#: {{suffixusex|la|via|gloss1=道路,小徑|viāticus|gloss2=與旅程或旅行相關的}}
====變格====
{{la-adecl|-āticus}}
====派生詞彙====
* {{l|la|-āticum}}
{{suffixsee|la}}
====派生語彙====
* {{desc|ast|-algu}}
* {{desc|rup|-atic}}
* {{desc|gl|-ádego}}
* {{desc|it|-atico}}
* {{desc|pt|-ático|bor=1}}
* {{desc|ro|-atec|-atic}}
* {{desc|scn|-aju|-aggiu|-àticu}}
* {{desc|es|-azgo}}
nxphez6ythimwpela64l0hea8wq27wm
Category:構成形容詞的拉丁語後綴
14
3480343
9814665
2026-06-16T10:34:24Z
TongcyBot
83009
養貓
9814665
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
-atus
0
3480344
9814666
2026-06-16T10:37:13Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|atus|-átus}} ==拉丁語== ===詞源1=== {{etymon|la|id=形容詞|:inh|itc-pro:*-ātos<id:構成形容詞><ety:inh<ine-pro:*-eh₂tos<id:形容詞>>>}} {{inh+|la|itc-pro|*-ātos}},{{inh+|la|ine-pro|*-eh₂tos}}。為「偽分詞」,可能與 {{m|la|-tus}} 相關,儘管其他印歐語系語言中的類似構詞表明它在印歐語時期就已經與其區分開來。對照 {{m|la|-ītus}}、{{m|la|-ūtus}}。 與{{cog|sla-pro|*…」的新頁面
9814666
wikitext
text/x-wiki
{{also|atus|-átus}}
==拉丁語==
===詞源1===
{{etymon|la|id=形容詞|:inh|itc-pro:*-ātos<id:構成形容詞><ety:inh<ine-pro:*-eh₂tos<id:形容詞>>>}}
{{inh+|la|itc-pro|*-ātos}},{{inh+|la|ine-pro|*-eh₂tos}}。為「偽分詞」,可能與 {{m|la|-tus}} 相關,儘管其他印歐語系語言中的類似構詞表明它在印歐語時期就已經與其區分開來。對照 {{m|la|-ītus}}、{{m|la|-ūtus}}。
與{{cog|sla-pro|*-atъ}}、{{cog|gem-pro|*-ōdaz}}(英語 {{m|en|-ed||有……的|id=having}})同源。
====後綴====
{{la-suffix-adj|-ātus}}
# {{senseid|la|形容詞}} 帶有……的。{{non-gloss|用於從[[名詞]]構成[[形容詞]],表示擁有某物或包含其特徵}}
#: {{suffixusex|la|barba|t1=鬍鬚|-ātus|barbātus|t3=長著鬍鬚的,有鬍鬚的}}
#: {{suffixusex|la|caetra|t1=一種西班牙短盾|-ātus|caetrātus|t3=配備西班牙短盾的}}
#: {{suffixusex|la|toga|t1=托加長袍|-ātus|togātus|t3=穿著托加長袍的}}
# {{non-gloss|用於從其他[[形容詞]](尤其是顏色名稱)構成[[形容詞]],帶有「穿著[形容詞](顏色)衣服」的含義}}
#: {{suffixusex|la|albus|t1=白色的|-ātus|albātus|t3=穿白衣的}}
#: {{suffixusex|la|āter|t1=黑色的|-ātus|atrātus|t3=穿黑衣的}}
#: {{suffixusex|la|sordidus|t1=不潔的,骯髒的|-ātus|sordidātus|t3=穿著髒衣服的,衣衫襤褸的}}
# 像……的。{{non-gloss|用於從[[名詞]]構成[[形容詞]],表示與該名詞相似或相像}}
#: {{suffixusex|la|rēticulum|t1=小網|-ātus|rēticulātus|t3=網狀的,像網的}}
#: {{suffixusex|la|vir|t1=男人|-ātus|virātus|t3=有男子氣概的,像男人的}}
=====變格=====
{{la-adecl|-ātus}}
=====派生詞彙=====
{{suffixsee|la|id=形容詞}}
{{col|la|-āticus,-āticum}}
=====相關詞彙=====
{{col|la|-ātim|-ātiō}}
=====派生語彙=====
{{top2}}
* {{desc|ast|-áu|-ada}}
* {{desc|ca|-at<id:形容詞><pos:形容詞>|-ada}}
* {{desc|bor=1|en|-ate<id:形容詞>|-ade}}
* {{desc|lbor=1|fr|-at<id:形容詞><pos:形容詞>|-ate<qq:化學>}}
* {{desc|fur|-ât|-ade}}
* {{desc|gl|-ado}}
* {{desc|de|-at<id:形容詞><pos:形容詞>|bor=1}}
* {{desc|it|-ato<id:形容詞><pos:形容詞>}}
** {{desc|fr|-ade|qq=源自義大利語或奧克語|bor=1}}
* {{desc|oc|-at}}
** {{desc|fr|-ade|qq=源自義大利語或奧克語|bor=1}}
* {{desctree|fro|-é<id:形容詞>|-et<id:分詞>}}
* {{desctree|roa-opt|-ado|id=形容詞}}
* {{desc|ro|-at|-ată}}
* {{desctree|osp|-ado|id=形容詞}}
* {{desc|scn|-atu|-ata}}
* {{desc|pt|-ato|bor=1}}
* {{desc|es|-ato|bor=1}}
{{bottom}}
===詞源2===
{{etymon|la|title=-ātus|id=抽象名詞|-tus<alt:-tus, -tūs><id:抽象名詞>}}
由第一變位動詞的 {{m|la|-tus|-tus, -tūs|id=動作名詞}} 結尾的動作名詞(如 {{m|la|mercātus}},由 {{m|la|mercor}} + {{m|la|-tus|id=動作名詞}} 構成)經過{{w|lang=en|重新括號化|rebracketing}}形成,其中 {{m|la||-ā-}} 實際上是詞幹的一部分;{{inh+|la|itc-pro|*-tus}},{{inh+|la|ine-pro|*-tus|pos=由動詞詞根派生動作名詞的後綴}}。
====後綴====
{{head|la|後綴|cat2=noun-forming suffixes|head=-ātus|g=m}}
# {{non-gloss|加在名詞或形容詞後構成名詞,表示軍銜、職位、與該軍銜或職位相關的官員群體或某種狀態}}
#: {{suffixusex|la|apostolus|apostolātus|altsuf=-ātus|t2=使徒職位}}
#: {{suffixusex|la|triumvir|triumvirātus|altsuf=-ātus|t2=三頭政治}}
#: {{suffixusex|la|reus|reātus|altsuf=-ātus|t1=有罪的|t2=有罪的狀態}}
=====變格=====
{{la-ndecl|-ātus<4>}}
=====派生詞彙=====
{{suffixsee|la|id=抽象名詞}}
=====派生語彙=====
{{top2}}
* {{desc|ca|-at<id:抽象名詞><pos:抽象名詞>}}
* {{desc|en|-ate<id:職級或職務>|bor=1}}
* {{desc|fr|-at<id:抽象名詞><pos:抽象名詞>|lbor=1}}
* {{desctree|de|-at<id:抽象名詞><pos:抽象名詞>|bor=1}}
* {{desc|it|-ato<id:抽象名詞><pos:抽象名詞>}}
* {{desc|nb|-at|bor=1}}
* {{desctree|fro|-é<id:抽象名詞><pos:抽象名詞>}}
* {{desc|pt|-ado<id:抽象名詞><pos:抽象名詞>}}
* {{desctree|osp|-ado<id:抽象名詞><pos:抽象名詞>}}
{{bottom}}
{{cln|la|異分析詞}}
s3wv3ri1sq2lgnewb1jmqtn3rxuni30
9814667
9814666
2026-06-16T10:37:37Z
TongcyDai
53191
9814667
wikitext
text/x-wiki
{{also|atus|-átus}}
==拉丁語==
===詞源1===
{{etymon|la|id=形容詞|:inh|itc-pro:*-ātos<id:構成形容詞><ety:inh<ine-pro:*-eh₂tos<id:形容詞>>>}}
{{inh+|la|itc-pro|*-ātos}},{{inh+|la|ine-pro|*-eh₂tos}}。為「偽分詞」,可能與 {{m|la|-tus}} 相關,儘管其他印歐語系語言中的類似構詞表明它在印歐語時期就已經與其區分開來。對照 {{m|la|-ītus}}、{{m|la|-ūtus}}。
與{{cog|sla-pro|*-atъ}}、{{cog|gem-pro|*-ōdaz}}(英語 {{m|en|-ed||有……的|id=having}})同源。
====後綴====
{{la-suffix-adj|-ātus}}
# {{senseid|la|形容詞}} 帶有……的。{{non-gloss|用於從[[名詞]]構成[[形容詞]],表示擁有某物或包含其特徵}}
#: {{suffixusex|la|barba|t1=鬍鬚|-ātus|barbātus|t3=長著鬍鬚的,有鬍鬚的}}
#: {{suffixusex|la|caetra|t1=一種西班牙短盾|-ātus|caetrātus|t3=配備西班牙短盾的}}
#: {{suffixusex|la|toga|t1=托加長袍|-ātus|togātus|t3=穿著托加長袍的}}
# {{non-gloss|用於從其他[[形容詞]](尤其是顏色名稱)構成[[形容詞]],帶有「穿著[形容詞](顏色)衣服」的含義}}
#: {{suffixusex|la|albus|t1=白色的|-ātus|albātus|t3=穿白衣的}}
#: {{suffixusex|la|āter|t1=黑色的|-ātus|atrātus|t3=穿黑衣的}}
#: {{suffixusex|la|sordidus|t1=不潔的,骯髒的|-ātus|sordidātus|t3=穿著髒衣服的,衣衫襤褸的}}
# 像……的。{{non-gloss|用於從[[名詞]]構成[[形容詞]],表示與該名詞相似或相像}}
#: {{suffixusex|la|rēticulum|t1=小網|-ātus|rēticulātus|t3=網狀的,像網的}}
#: {{suffixusex|la|vir|t1=男人|-ātus|virātus|t3=有男子氣概的,像男人的}}
=====變格=====
{{la-adecl|-ātus}}
=====派生詞彙=====
{{suffixsee|la|id=形容詞}}
{{col|la|-āticus,-āticum}}
=====相關詞彙=====
{{col|la|-ātim|-ātiō}}
=====派生語彙=====
{{top2}}
* {{desc|ast|-áu|-ada}}
* {{desc|ca|-at<id:形容詞><pos:形容詞>|-ada}}
* {{desc|bor=1|en|-ate<id:形容詞>|-ade}}
* {{desc|lbor=1|fr|-at<id:形容詞><pos:形容詞>|-ate<qq:化學>}}
* {{desc|fur|-ât|-ade}}
* {{desc|gl|-ado}}
* {{desc|de|-at<id:形容詞><pos:形容詞>|bor=1}}
* {{desc|it|-ato<id:形容詞><pos:形容詞>}}
** {{desc|fr|-ade|qq=源自義大利語或奧克語|bor=1}}
* {{desc|oc|-at}}
** {{desc|fr|-ade|qq=源自義大利語或奧克語|bor=1}}
* {{desctree|fro|-é<id:形容詞>|-et<id:分詞>}}
* {{desctree|roa-opt|-ado|id=形容詞}}
* {{desc|ro|-at|-ată}}
* {{desctree|osp|-ado|id=形容詞}}
* {{desc|scn|-atu|-ata}}
* {{desc|pt|-ato|bor=1}}
* {{desc|es|-ato|bor=1}}
{{bottom}}
===詞源2===
{{etymon|la|title=-ātus|id=抽象名詞|-tus<alt:-tus, -tūs><id:抽象名詞>}}
由第一變位動詞的 {{m|la|-tus|-tus, -tūs|id=動作名詞}} 結尾的動作名詞(如 {{m|la|mercātus}},由 {{m|la|mercor}} + {{m|la|-tus|id=動作名詞}} 構成)經過{{w|lang=en|重新括號化|rebracketing}}形成,其中 {{m|la||-ā-}} 實際上是詞幹的一部分;{{inh+|la|itc-pro|*-tus}},{{inh+|la|ine-pro|*-tus|pos=由動詞詞根派生動作名詞的後綴}}。
====後綴====
{{head|la|後綴|cat2=構成名詞的後綴|head=-ātus|g=m}}
# {{non-gloss|加在名詞或形容詞後構成名詞,表示軍銜、職位、與該軍銜或職位相關的官員群體或某種狀態}}
#: {{suffixusex|la|apostolus|apostolātus|altsuf=-ātus|t2=使徒職位}}
#: {{suffixusex|la|triumvir|triumvirātus|altsuf=-ātus|t2=三頭政治}}
#: {{suffixusex|la|reus|reātus|altsuf=-ātus|t1=有罪的|t2=有罪的狀態}}
=====變格=====
{{la-ndecl|-ātus<4>}}
=====派生詞彙=====
{{suffixsee|la|id=抽象名詞}}
=====派生語彙=====
{{top2}}
* {{desc|ca|-at<id:抽象名詞><pos:抽象名詞>}}
* {{desc|en|-ate<id:職級或職務>|bor=1}}
* {{desc|fr|-at<id:抽象名詞><pos:抽象名詞>|lbor=1}}
* {{desctree|de|-at<id:抽象名詞><pos:抽象名詞>|bor=1}}
* {{desc|it|-ato<id:抽象名詞><pos:抽象名詞>}}
* {{desc|nb|-at|bor=1}}
* {{desctree|fro|-é<id:抽象名詞><pos:抽象名詞>}}
* {{desc|pt|-ado<id:抽象名詞><pos:抽象名詞>}}
* {{desctree|osp|-ado<id:抽象名詞><pos:抽象名詞>}}
{{bottom}}
{{cln|la|異分析詞}}
f54tibojnn7ljy5un3ngst7h1ggxatp
Category:拉丁語陽性後綴
14
3480345
9814672
2026-06-16T10:45:30Z
TongcyBot
83009
養貓
9814672
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉丁語各性別後綴
14
3480346
9814673
2026-06-16T10:45:39Z
TongcyBot
83009
養貓
9814673
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Reconstruction:原始印歐語/-eh₂tos
118
3480347
9814674
2026-06-16T10:51:21Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{reconstructed}} ==原始印歐語== ===詞源=== {{etymon|ine-pro|id=形容詞|:af|ine-pro:*-éh₂<id:集合名詞>|ine-pro:*-tós<id:動詞性形容詞>}} 源自 {{m|ine-pro|*-éh₂|*-eh₂}} + {{m|ine-pro|*-tós}}。 ===後綴=== {{head|ine-pro|後綴|cat2=構成形容詞的後綴}} # {{n-g|由[[名詞]][[構成]][[形容詞]],表示具有某種[[事物]]或[[品質]]}} ====屈折==== {{ine-decl-adj|-eh₂to}} ====派生語彙===…」的新頁面
9814674
wikitext
text/x-wiki
{{reconstructed}}
==原始印歐語==
===詞源===
{{etymon|ine-pro|id=形容詞|:af|ine-pro:*-éh₂<id:集合名詞>|ine-pro:*-tós<id:動詞性形容詞>}}
源自 {{m|ine-pro|*-éh₂|*-eh₂}} + {{m|ine-pro|*-tós}}。
===後綴===
{{head|ine-pro|後綴|cat2=構成形容詞的後綴}}
# {{n-g|由[[名詞]][[構成]][[形容詞]],表示具有某種[[事物]]或[[品質]]}}
====屈折====
{{ine-decl-adj|-eh₂to}}
====派生語彙====
* {{desc|ine-bsl-pro|*-āˀtas}}
** {{desc|sla-pro|*-atъ}}
* {{desc|gem-pro|*-ōdaz}}
* {{desc|itc-pro|*-ātos}}
** {{desc|la|-ātus}}
22j3il5e0fxn106bkz3wfnr0d9v6w62
Category:含有後綴*-tós的原始印歐語詞
14
3480348
9814675
2026-06-16T10:51:30Z
TongcyBot
83009
養貓
9814675
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:含有後綴*-éh₂ (集合名詞)的原始印歐語詞
14
3480349
9814676
2026-06-16T10:51:39Z
TongcyBot
83009
養貓
9814676
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Reconstruction:原始印歐語/-tós
118
3480350
9814677
2026-06-16T10:52:00Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|Reconstruction:原始印歐語/-tos}} {{reconstructed}} ==原始印歐語== {{etymon|ine-pro|id=動詞性形容詞|pos=後綴}} ===後綴=== {{head|ine-pro|後綴|cat2=構成形容詞的後綴|head=*(Ø)-tós}}<ref name="Ringe 2006">{{R:gem:PIEPG}}</ref> # {{non-gloss|由[[動詞]][[詞根]][[構成]][[動詞性形容詞]]}} ====屈折==== {{ine-decl-adj|(Ø)-tó}} ====近義詞==== * {{l|ine-pro|*-nós}} * {{l|ine-pro|*-wós}} ==…」的新頁面
9814677
wikitext
text/x-wiki
{{also|Reconstruction:原始印歐語/-tos}}
{{reconstructed}}
==原始印歐語==
{{etymon|ine-pro|id=動詞性形容詞|pos=後綴}}
===後綴===
{{head|ine-pro|後綴|cat2=構成形容詞的後綴|head=*(Ø)-tós}}<ref name="Ringe 2006">{{R:gem:PIEPG}}</ref>
# {{non-gloss|由[[動詞]][[詞根]][[構成]][[動詞性形容詞]]}}
====屈折====
{{ine-decl-adj|(Ø)-tó}}
====近義詞====
* {{l|ine-pro|*-nós}}
* {{l|ine-pro|*-wós}}
====派生詞彙====
{{l|ine-pro|*-eh₂tos}}
{{suffixsee|ine-pro}}
====派生語彙====
* {{desc|sqj-pro|*-tāi}}
** {{desc|sq|-të}}
* {{desc|ine-bsl-pro|*-tas}}
** {{desc|sla-pro|*-tъ|pos=部分[[過去被動分詞]]}}
* {{desc|grk-pro|*-tós}}
** {{desc|grc|-τός}}
* {{desc|gem-pro|*-daz|pos=所有[[弱]][[過去分詞]],少數[[形容詞]]|*-taz|*-þaz|*-saz|pos4=[[輔音]]後的[[同位異形]]}}
* {{desc|iir-pro|*-tás}} {{see desc}}
* {{desc|itc-pro|*-tos}} {{see desc}}
===參考資料===
<references/>
g42ciyont1xlx3t92ozti6f2jwyqwac
Reconstruction:原始意大利語/-ikos
118
3480351
9814678
2026-06-16T10:53:55Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{reconstructed}} ==原始意大利語== ===詞源=== {{etymon|itc-pro|:inh|ine-pro:*-ikos<ety:from<ine-pro:*-kos<id:形容詞>>>|id=-ic}} 源自{{der|itc-pro|ine-pro|*-kos}}。 ===後綴=== {{head|itc-pro|後綴}}<ref>{{R:la:OHCGL|page=294|passage=*-iko-}}</ref><ref>{{R:itc:Buck|1=187|passage=-iko-}}</ref> # {{n-g|構成表示「屬於或與……有關的」的形容詞}} ====變格==== {{itc-decl-adj-o+a|-ik}} ====重構說明==== 該…」的新頁面
9814678
wikitext
text/x-wiki
{{reconstructed}}
==原始意大利語==
===詞源===
{{etymon|itc-pro|:inh|ine-pro:*-ikos<ety:from<ine-pro:*-kos<id:形容詞>>>|id=-ic}}
源自{{der|itc-pro|ine-pro|*-kos}}。
===後綴===
{{head|itc-pro|後綴}}<ref>{{R:la:OHCGL|page=294|passage=*-iko-}}</ref><ref>{{R:itc:Buck|1=187|passage=-iko-}}</ref>
# {{n-g|構成表示「屬於或與……有關的」的形容詞}}
====變格====
{{itc-decl-adj-o+a|-ik}}
====重構說明====
該後綴也出現在{{w|奧斯坎-溫布利亞語支}}形式中,例如{{cog|osc|toutico}} 或{{cog|xum|fratreks}}。
====派生詞彙====
{{suffixsee|itc-pro}}
====派生語彙====
* {{desc|la|-icus}}
===參考資料===
{{reflist}}
oezcurm6rylb33tdxqayyuukj38vpf9
9814679
9814678
2026-06-16T10:56:11Z
TongcyDai
53191
9814679
wikitext
text/x-wiki
{{reconstructed}}
==原始意大利語==
===詞源===
{{etymon|itc-pro|:inh|ine-pro:*-ikos<ety:from<ine-pro:*-kos<id:形容詞>>>|id=形容詞後綴}}
源自{{der|itc-pro|ine-pro|*-kos}}。
===後綴===
{{head|itc-pro|後綴}}<ref>{{R:la:OHCGL|page=294|passage=*-iko-}}</ref><ref>{{R:itc:Buck|1=187|passage=-iko-}}</ref>
# {{n-g|構成表示「屬於或與……有關的」的形容詞}}
====變格====
{{itc-decl-adj-o+a|-ik}}
====重構說明====
該後綴也出現在{{w|奧斯坎-溫布利亞語支}}形式中,例如{{cog|osc|toutico}} 或{{cog|xum|fratreks}}。
====派生詞彙====
{{suffixsee|itc-pro}}
====派生語彙====
* {{desc|la|-icus}}
===參考資料===
{{reflist}}
chrgic7e9v8ideqiobr1zw8o2jxq1bi
Category:斯洛溫語中性後綴
14
3480352
9814684
2026-06-16T11:02:20Z
TongcyBot
83009
養貓
9814684
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有詞源樹的中古法語詞條
14
3480353
9814685
2026-06-16T11:02:30Z
TongcyBot
83009
養貓
9814685
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有詞源樹的古法語詞條
14
3480354
9814686
2026-06-16T11:02:39Z
TongcyBot
83009
養貓
9814686
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:構成形容詞的加泰羅尼亞語後綴
14
3480355
9814687
2026-06-16T11:02:48Z
TongcyBot
83009
養貓
9814687
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加泰羅尼亞語派生後綴
14
3480356
9814688
2026-06-16T11:02:56Z
TongcyBot
83009
養貓
9814688
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Template:Fr-suffix form
10
3480357
9814689
2026-06-16T11:03:20Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「<includeonly>{{#invoke:fr-headword|show|後綴變格形}}</includeonly><!-- --><noinclude>{{documentation}}{{tcat|hw}}</noinclude>」的新頁面
9814689
wikitext
text/x-wiki
<includeonly>{{#invoke:fr-headword|show|後綴變格形}}</includeonly><!--
--><noinclude>{{documentation}}{{tcat|hw}}</noinclude>
3n3xsxinawfa2475jds5vy7shsqlrc0
Reconstruction:原始印歐語/-yéti
118
3480358
9814690
2026-06-16T11:05:30Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|Reconstruction:原始印歐語/-yeti}} {{reconstructed}} ==原始印歐語== {{etymon|ine-pro|id=不及物動詞|pos=後綴}} ===後綴=== {{head|ine-pro|後綴|cat2=構成動詞的後綴|head=*(Ø)-yéti}} # {{non-gloss|由[[詞根]][[構成]][[不及物]](且通常[[異態動詞|異態]])的[[非完成體]][[動詞]]}} ====屈折==== {{ine-conj-impf|(Ø)-yé}} ====派生詞彙==== {{suffixsee|ine-pro}} * {{l|ine-pro|*-eh₂y…」的新頁面
9814690
wikitext
text/x-wiki
{{also|Reconstruction:原始印歐語/-yeti}}
{{reconstructed}}
==原始印歐語==
{{etymon|ine-pro|id=不及物動詞|pos=後綴}}
===後綴===
{{head|ine-pro|後綴|cat2=構成動詞的後綴|head=*(Ø)-yéti}}
# {{non-gloss|由[[詞根]][[構成]][[不及物]](且通常[[異態動詞|異態]])的[[非完成體]][[動詞]]}}
====屈折====
{{ine-conj-impf|(Ø)-yé}}
====派生詞彙====
{{suffixsee|ine-pro}}
* {{l|ine-pro|*-eh₂yéti}}
* {{l|ine-pro|*-(i)dyéti}}
* {{l|ine-pro|*-oyéti}}
* {{l|ine-pro|*-syéti}}
====派生語彙====
* {{desc|ine-ana-pro|*-yéti}}
* {{desc|gem-pro|*-janą|alt=*-(i)janą}} (j-[[現在時]],部分1類弱變化動詞)
* {{desc|grk-pro|*-yō}}
** {{desc|grc|*-ϳω}} {{see desc}}
* {{desc|itc-pro|*-jō}}
** {{desc|la|-iō}} ([[Appendix:Latin third conjugation|第三變位動詞]] iō-變體)
** {{desc|la|-iō}} (部分[[Appendix:Latin fourth conjugation|第四變位動詞]])
* {{desc|iir-pro|*-yáti}}
** {{desc|inc-pro|*-yáti}}
*** {{desc|sa|-यति<qq:一些第4類動詞,重音移至詞根;如 {{m|sa|गृध्य॑ति}}>}}
*** {{desc|sa|-यते<qq:一些第4類異相動詞,重音移至詞根;如 {{m|sa|जाय॑ते|}}、{{m|sa|बुध्य॑ते}}>}}
*** {{desc|sa|-यते॑<qq:被動動詞:如 {{m|sa|क्रि॒यते॑|t=被做}}、{{m|sa|म्रि॒यते॑|t=死|ng=異相動詞}}>}}
** {{desc|ira-pro|*-yáti}}
*** {{desc|ae|-𐬌𐬌𐬈𐬌𐬙𐬌}} (例如:{{l|ae|𐬬𐬆𐬭𐬆𐬰𐬌𐬌𐬈𐬌𐬙𐬌}})
===參見===
* {{l|ine-pro|*-yeti}}
===參考資料===
* {{R:Sihler 1995}}
* {{R:gem:PIEPG}}
h5rudgqmnip2lhs0g6sy5hb5bubrmsy
Reconstruction:原始印歐語/weyd-
118
3480359
9814691
2026-06-16T11:05:46Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{reconstructed}} ==原始印歐語== {{etymon|ine-pro|id=看見|pos=詞根}} ===詞根=== {{ine-root|stat}}<ref name="LIV">{{R:ine:LIV|head=*u̯ei̯d-|pages=665-667}}</ref><ref>{{R:ine:Cheung2007|head=*u̯aid¹, *u̯aid²|pages=408-410}}</ref><ref name="NIL">{{R:ine:NIL|pages=717-722|head=*ṷei̯d-}}</ref><ref name=EIEC>{{R:ine:EIEC|page=337|head=*ṷei̯d-}}</ref><ref>{{R:cel:Matasovic 2009|head=*wi-n-d-o-|pages=422-423|passage=*weyd- 'se…」的新頁面
9814691
wikitext
text/x-wiki
{{reconstructed}}
==原始印歐語==
{{etymon|ine-pro|id=看見|pos=詞根}}
===詞根===
{{ine-root|stat}}<ref name="LIV">{{R:ine:LIV|head=*u̯ei̯d-|pages=665-667}}</ref><ref>{{R:ine:Cheung2007|head=*u̯aid¹, *u̯aid²|pages=408-410}}</ref><ref name="NIL">{{R:ine:NIL|pages=717-722|head=*ṷei̯d-}}</ref><ref name=EIEC>{{R:ine:EIEC|page=337|head=*ṷei̯d-}}</ref><ref>{{R:cel:Matasovic 2009|head=*wi-n-d-o-|pages=422-423|passage=*weyd- 'see, know'}}</ref><ref>{{R:xcl:Martirosyan|*git-|page=216|passage=PIE ''*u(e)id-''}}</ref>
# {{c|ine-pro|視覺}} [[看見]]
====派生詞彙====
{{rootsee}}
* {{l|ine-pro||*wéyd-e-ti|pos=[[主題元音]][[詞根]][[現在時]]}}<ref name="LIV" /><ref>{{R:cel:Matasovic 2009|head=*wēd-o-|page=407}}</ref>
** {{desc|cel-pro|*weideti|t=告訴,講述}} {{see desc}}
** {{desc|gem-pro|*wlītaną|t=看見,看|unc=1}} {{qualifier|可能是受到 {{l|ine-pro|*wel-}} ~ {{l|ine-pro||*wl-|t=看}} 的污染<ref>{{R:ine:LIV|head=u̯el-|pages=675}}</ref>}} {{see desc}}
*** {{desc|gem-pro|*wlaitōną|t=尋找|der=1}} {{see desc}}
*** {{desc|gem-pro|*wlitiz|t=視力;外貌;臉|der=1}} {{see desc}}
** {{desc|gem-pro|*wītaną|t=將注意力集中於;責罵}} {{see desc}}
** {{desc|grk-pro|*wéidō}}
*** {{desc|grc|εἴδομαι|t=被看見,出現}}
* {{l|ine-pro||*wéyd-t|pos=[[無主題元音]][[詞根]][[不定過去時]]}}
** {{desc|itc-pro}}
*** {{desc|la|vīdī|qq=或源自 {{m|ine-pro|*wóyde}}|unc=1}}
* {{l|ine-pro||*wid-éh₁-yeti|t=看見|pos=éh₁-[[狀態動詞]]}}<ref>{{R:itc:EDL|head=videō|page=676|passage=PIE *uid-eh₁- 'to see'}}</ref>
** {{desc|itc-pro|*widēō|t=看見}}
* {{l|ine-pro|*widét|*wid-é-t|pos=[[主題元音]][[詞根]][[不定過去時]]}}
* {{l|ine-pro|[[*winédti|*wi-né-d-ti]] ~ *wi-n-d-énti|pos=[[鼻音]][[中綴]][[現在時]]}}
* {{l|ine-pro|*wóyde|*wóyd-e}} ~ {{l|ine-pro||*wid-ḗr|t=已看見,知道|pos=[[狀態動詞]]}}<ref name="LIV" /><ref>{{R:gem:PIEPG}}</ref>
* {{l|ine-pro||*woyd-éye-ti|pos=eye-[[使役動詞]]}}<ref name="LIV" />
** {{desc|cel-pro|*woidīti}}
*** {{desc|sga|foídid}}
** {{desc|gem-pro|*waitijaną}} {{see desc}}
** {{desc|iir-pro|*waydáyati}}
*** {{desc|inc-pro|*waydáyati}}
**** {{desc|sa|वे॒दय॑ति}}
*** {{desc|ira-pro|*waydáyati}}
**** 古阿維斯陀語:{{l|ae|𐬁𐬎𐬎𐬀𐬉𐬜𐬀𐬌𐬌𐬀𐬨𐬀𐬵𐬍|pos=1pl.pres.caus.}}
**** Younger 阿維斯陀語:{{l|ae|𐬬𐬀𐬉𐬜𐬀𐬌𐬌𐬈𐬨𐬌|pos=1sg.pres.caus.}}
* {{l|ine-pro|*wéydseti|*wéyd-se-ti|pos=[[意願動詞]]|t=想看見}}<ref name="LIV" />
* {{l|ine-pro|*weydós|*weyd-ó-s}}
* {{l|ine-pro|*wéydos|*wéyd-os ~ *wéyd-es-os}}
* {{l|ine-pro||*wóyd-o-s}}
** {{desc|iir-pro|*wáydas}}
*** {{desc|inc-pro|*wáydas}}
**** {{desc|sa|वेद॑|t=知識}}
* {{l|ine-pro||*wéyd-ih₂ ~ *wid-yéh₂-s}}
** {{desc|iir-pro|*waydyáH}}
*** {{desc|inc-pro|*waydyáH}}
**** {{desc|sa|वे॒द्या|t=知識;藝術}}
* {{l|ine-pro||*weyd-oh₂-lo-m}}
** {{desc|grk-pro|*weidōlon}}
*** {{desc|grc|εἴδωλον}}
* {{l|ine-pro||*wéyd-ti-s ~ *wid-téy-s}}
** {{desc|ine-bsl-pro|*waiˀstis}}
*** {{desc|lv|vēsts}}
*** {{desc|sla-pro|*vě̏stь}} {{see desc}}
** {{desc|iir-pro}}
*** {{desc|inc-pro}}
**** {{desc|sa|वित्ति॑}}
* {{l|ine-pro|*wéydtōr|*wéyd-tōr}} ~ {{l|ine-pro||*wid-tr-és|t=觀看者,目擊者}}
* {{l|ine-pro||*wéyd-tu-s ~ *wid-téw-s|t=看見(的行為);知識}}
** {{desc|cel-pro|*wissus}} {{see desc}}
** 意大利語族:*** {{desc|la|vīsus}} {{see desc}}
* {{l|ine-pro||*n̥-wid-eh₂-}}
** {{desc|grk-pro|*əwidās}}
*** {{desc|grc|Ἀ̆ῐ̈́δης}}
* {{l|ine-pro||*n̥-wid-ḗs}} (<*n̥-wid-és-s)
** {{desc|grk-pro|*əwidḗs}}
*** {{desc|grc|ᾰ̓ῐ̈δής}}
* {{l|ine-pro||*né-wid-s}}
** {{desc|grk-pro|*néwits}}
*** {{desc|grc|νῆῐς}}
* {{l|ine-pro||*wid-[[Reconstruction:Proto-Indo-European/-mṓ|mṓ]]}}<ref name="NIL"/><ref>{{R:ine:Yates mon|page=249-250}}</ref>
** {{desc|grk-pro|*idmōn}}
*** {{desc|grc|ῐ̓́δμων|t=知道的}}
** {{desc|iir-pro|unc=1}}
*** {{desc|inc-pro}}
**** {{desc|sa|वि॒द्मन्|t=知識}}
* {{l|ine-pro||*wid-ri-s}}
** {{desc|grk-pro|*widris}}
*** {{desc|grc|ἴδρις}}
* {{l|ine-pro||*wid-ró-s}}
** {{desc|gem-pro|*witraz}} {{see desc}}
* {{l|ine-pro|*widtós|*wid-tó-s|t=被看見的}}
* {{l|ine-pro||*wid-yó-s}}
** {{desc|gem-pro|*witją|t=知識;理智,感覺,理解;智慧}}
** {{desc|iir-pro|*widyáH}} {{qualifier|源自 {{m|ine-pro||*wid-y-éh₂}}}}
*** {{desc|inc-pro|*widyáH}}
**** {{desc|sa|वि॒द्या|t=知識;科學;學問}}
; 未分類的構詞:
* 阿爾巴尼亞語:
** {{desc|sq|*vidsa}}
*** {{desc|sq|vizë}}
* 亞美尼亞語:
** {{desc|xcl|գիւտ}}
* 波羅的-斯拉夫語族:** {{desc|ine-bsl-pro|*weiˀdēˀtei}} {{qualifier|可能是二次構詞<ref name="LIV" />}}
*** {{desc|ltg|veidētʹ|t=可見的}}
*** {{desc|lv|viedêt}}
*** {{desc|lt|veizdė́ti}}
*** {{desc|sla-pro|*vìděti}} {{see desc}}
** {{desc|lt|vaizdas}}
** {{desc|prg|widdai}}
* {{desc|gem-pro|*wīsǭ|t=方式;方法}}
* 希臘語族:
** {{desc|grc|ᾰ̓ῐ̈́δηλος}}
** {{desc|grc|ᾰ̓είδελος|t=不可見的}} <!-- fwiw, Beekes gives -ελ-α/ο- as a Pre-Greek suffix -->
* {{desc|xpg|tr=wit-}}
* {{desc|ine-toc-pro|*wäwén-}}<ref>{{R:txb:Adams 2013|head=ūwe|page=75-76}}</ref> {{see desc}}
* {{desc|ine-toc-pro|*wiäime}} {{qualifier|可能}}<ref>{{R:txb:Adams 2013|head=īme|page=71}}</ref> {{see desc}}
====派生語彙====
* {{desc|iir-pro|*wayd-}}
** {{desc|inc-pro|*wayd-}}
*** {{desc|sa|विद्}}
** {{desc|ira-pro|*wayd-}} {{see desc}}
===參考資料===
{{reflist}}
===延伸閱讀===
* {{R:EWddS|ed=22|hw=wissen}}
* {{R:ine:IEW|page=1124|head=1. ṷeid-}}
7c9x1bc6xkjqtfgyzxcpjc4yvu3mvrc
Category:含有後綴-atus (形容詞)的拉丁語詞
14
3480360
9814692
2026-06-16T11:07:18Z
TongcyBot
83009
養貓
9814692
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:含有後綴-icus (形容詞後綴)的拉丁語詞
14
3480361
9814693
2026-06-16T11:08:15Z
TongcyBot
83009
養貓
9814693
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx